﻿(function(){
	y=window._={
		bind:function(o,f)
		{
			return function(){return f.apply(o,arguments)}
		},
		bindE:function(o,f) 
		{
			return function(e) {return f.call(o,(e||event))}
		},
		get:function(s,o)
		{
			o=o||document;
			if(typeof s==="string")
				s=o.getElementById(s);
			return s
		},
		getClass:function(className)
		{
			var arr=document.getElementsByTagName('*');
			var i=0;
			for(i;i<arr.length;i++)
			{
				var cn=arr[i].className;
				
				if(cn && (cn.search(new RegExp('(^|[\\s])'+className+'($|[\\s])','i'))>=0))
					break;
			}
			
			return arr[i];
		},
		getClassN:function(s)
		{
			var o=_.getTN("*");
			var l=o.length;
			var a=new Array();
			while(l)
				if(o[--l].className==s)
					a.push(o[l]);
			return a
		},
		getN:function(s,o)
		{
			o=o||document;
			return o.getElementsByName(s)
		},
		getTN:function(s,o)
		{
			o=o||document;
			return o.getElementsByTagName(s)
		},
		to:function(v)
		{
			if(typeof v==="string")
				v=_.get(v);
			return v
		},
		makeArray:function (a){  
			var r = [],i= a.length;
			while( i ) r[--i] = a[i];
			return r
		},
		//获取页面可见区域宽度、高度（不包含边框）
		client:function(o)
		{
			o=o||document.documentElement;
			return {w:o.clientWidth,h:o.clientHeight}
		},
		//获取页面正文区域宽度、高度
		scroll:function(o)
		{
			o=o||document.documentElement;
			return {w:o.scrollWidth,h:o.scrollHeight}
		},
		offset:function(o)
		{
			//o=o||document.documentElement;
			return {w:o.offsetWidth,h:o.offsetHeight}
		},
		//获取页面被卷去部分的宽度、高度
		//调用须知： 如果 参数 是 document对象 不能调用此方法 
		scrollTo:function(o)
		{
			//o=o||document.documentElement;
			//return {w:o.scrollLeft,h:o.scrollTop} 
			//新版 (修改) Chrome scrollLeft|scrollTop=0问题
			if(o)
				return {w:o.scrollLeft,h:o.scrollTop}
			else
			{
				var d=document.documentElement,b=document.body;
				return {w:d.scrollLeft||b.scrollLeft,h:d.scrollTop||b.scrollTop}
			}
		},
		doc:function(o)
		{
			o=o||document.documentElement;
			var a=_.client(o),b=_.scroll(o);
			return {w:Math.max(a.w,b.w),h:Math.max(a.h,b.h)}
		},
		copyP:function(d, s) {
			for (var p in s) {
				d[p] = s[p]
			}
		},
		stopPropagation:function(e,o)//取消冒泡
		{
			o=o||window;
			if(o.event)
				e.cancelBubble=true; //IE取消事件向上冒泡
			else
				e.stopPropagation();//标准DOM取消事件向上冒泡   
		},
		newEle:function(s,d)
		{
			var o=d||document;
			return o.createElement(s)
		},
		append:function(a,b)
		{
			a.appendChild(b)
		},
		attr:function(v,n,s)
		{
			v=_.to(v);
			if(s)
				v.setAttribute(n,s);
			else
				return v.getAttribute(n)
		},
		addClass:function(v,s)
		{
			v=_.to(v);
			var s=v.className;
			if(!s)
				v.className=s;
			else
				v.className+=" "+s
		},
		removeClass:function(v,s)
		{
			var a,l;
			v=_.to(v);
			a=v.className.split(/\s+/);
			l=a.length;
			while(l)
			{
				if(a[--l]==s)
				{
					a.splice(l,1);
					break;
				}
			}
			v.className=a.join(" ")
		},
		onload:function(f)
		{
			var f1 = window.onload;
			if (typeof window.onload != 'function') 
				window.onload = f;
			else 
			{window.onload = function() {f1();f();}}
		},
		//获取地址栏参数或锚点值 _.getParam("name")
		getUrlParam:function(n){
			var r = new RegExp("(\\?|#|&)"+n+"=([^&#]*)(&|#|$)","i"),
			a = location.href.match(r)||top.location.href.match(r);
			return (!a?null:a[2])
		},
		
		//get coordinate of elements
		elePos:function (o)
		{
			o=_.get(o);
			var l=t=0;
			while(o)
			{
				l+=o.offsetLeft;
				t+=o.offsetTop;
				o=o.offsetParent
			}
			return {x:l,y:t}
		},
		firstChild:function (o)
		{
			o=_.get(o);
			if(o.hasChildNodes())
			{
				var a=o.childNodes;
				for(var i=0;i<a.length;i++)
					if(a[i].nodeType==1)
						return a[i];
			}
			return null;
		},
		lastChild:function(o)
		{
			o=_.get(o);
			if(o.hasChildNodes())
			{   var a=o.childNodes;
				for(var i=a.length-1;i>=0;i--)
					if(a[i].nodeType==1)
						return a[i];
			}
			return null;
		},
		getChild:function(o,j)
		{
			o=_.get(o);
			var arr=new Array();
			if(o.hasChildNodes())
			{   
				var a=o.childNodes;
				for(var i=0;i<a.length;i++)
					if(a[i].nodeType==1)
						arr.push(a[i]);
			}
			
			if(arguments.length==2)
				return arr[j];
			return arr;
			
		},
		//get nothing control of value
		getValue:function(s)
		{
			var a=[];
			var arr=_.getN(s);
            var element;
            for (var i = 0; i <  arr.length; i++)
			{
                element = arr[i];
                var tagName = element.tagName.toLowerCase();
                if (tagName == "input") 
				{
                    var type = element.type;
                    if(type == "text" || type == "hidden" || type == "password"||((type == "checkbox" || type == "radio") && element.checked))
                        a.push(element.value);
                }
                else if (tagName == "select")
				{
                    var selectCount = element.options.length;
                    for (var j = 0; j < selectCount; j++) 
					{
                        var selectChild = element.options[j];
                        if (selectChild.selected == true)
							a.push(element.value);
                    }
                }
                else if (tagName == "textarea")
                    a.push(element.value);
            }
			if(a.length)
				return a.join(",");
			else
				return "";
		}
		
	};
})();

//ie6中无此方法   indexOf
if (!Array.prototype.indexOf)
{
	Array.prototype.indexOf = function(o)
	{
		var i=0,a=this,l=a.length;
		while(l)
			if(a[--l]==o)
				return l;
		return -1
	}
}
//去除前后空格
String.prototype.trim = function()
{
    return this.replace(/(^\s*)|(\s*$)/g,"")
}
//格式化字符串"http://{0}/{1}/{2}".fnFormat("www.meizz.com", "web", "abc.htm")
String.prototype.format=function()
{
	var l=arguments.length,s=this;
	while(l)
		s=s.replace(new RegExp("\\{"+--l+"\\}","g"),arguments[l]);
	return s
}
String.prototype.trimStart=function(string)
{
    if (!string)
    {
        string="\\s+";
    }
    var trimStartPattern=new RegExp("^("+string+")+","g");
    return this.replace(trimStartPattern,"");
}

String.prototype.trimEnd=function(string)
{
    if (!string)
    {
        string="\\s+";
    }
    var trimEndPattern=new RegExp("("+string+")+$","g");
    return this.replace(trimEndPattern,"");
}

String.prototype.startsWith=function(string)
{
    if (!string)
    {
        string="\\s";
    }
    var startsWithPattern=new RegExp("^("+string+")","g");
    return startsWithPattern.test(this);
}

String.prototype.endsWith=function(string)
{
    if (!string)
    {
        string="\\s";
    }
    var endsWithPattern=new RegExp("("+string+")$","g");
    return endsWithPattern.test(this);
}
