﻿_Event={srcElement:null,
	setEvent:function(e){
		_Event.srcElement=e.target;
		_Event.clientX=e.clientX;
		_Event.clientY=e.clientY;
	}
}

var $ = function()
{
	var elements = new Array();

	for (var i = 0; i < arguments.length; i++) 
	{
		var element = arguments[i];
		if (typeof element == 'string')
		  element = document.getElementById(element);
	
		if (arguments.length == 1)
		  return element;
	
		elements.push(element);
	  }
	
	  return elements;	
}

var ColorFulFw=
{
	name:'Javascript Framework', //名称
	Version:'1.1.0',///版本号
	Author:'Acheqi',///编写人
	Bin:'http://131js.131.com/js_Bin/',	///系统文件夹路经
	
	__LoadModel:function(namespace)
	{
		document.write('<script language="javascript" src="'+ColorFulFw.Bin+'/'+ ColorFulFw.__getNameSpace(namespace)+ '.js"><\/script>');	
	},

	__getNameSpace:function(namespace)
	{
		//alert(namespace)
		return namespace.replace('.','/');
	}
}

function using(namespace)
{
	ColorFulFw.__LoadModel(namespace);	
}


//System=====================================================================
var Response = 
{
	Write:function(Str)
	{
		document.write(Str);
	},
	Cookies:function(name, value, expires, path, domain)
	{
		var strCookie = name + "=" + value;
		if (expires)
		{
			var curTime = new Date();
			curTime.setTime(curTime.getTime() + expires*24*60*60*1000);
			strCookie += "; expires=" + curTime.toGMTString();
		 }
		 strCookie +=  (path) ? "; path=" + path : ""; 
		 strCookie +=  (domain) ? "; domain=" + domain : "";
		 document.cookie = strCookie;
	}
}
var Request = 
{
	QueryString:function(key)
	{
		var returnvalue = null;
		var tmp = document.location.href;
		
		if (tmp.indexOf('?') == -1 )
		{
			returnvalue = null;
		}
		else
		{
			var tmpar = tmp.split('?');
			tmp = tmpar[1];
			tmpar = tmp.split('&');
		
			for (var i = 0 ;i < tmpar.length;i++)
			{
				if (tmpar[i].indexOf(key+'=') == 0)
				{
					returnvalue = tmpar[i].replace(key+'=','');
					break;
				}
			}
		}
		return returnvalue;
	},
	Cookies:function(name)	
	{
		var strCookies = document.cookie;
		var cookieName = name + "="; 
		var valueBegin, valueEnd, value;
		strCookies = strCookies.toString()
		valueBegin = strCookies.indexOf(cookieName);
		if (valueBegin == -1) return null;
		valueEnd = strCookies.indexOf(";", valueBegin);
		if (valueEnd == -1)
		valueEnd = strCookies.length; 
	  	value = strCookies.substring(valueBegin+cookieName.length,valueEnd);
		return value;	
	},
	Browser:function()
	{
		var userAgent=navigator.userAgent;
		if (userAgent.indexOf('Firefox')>-1)
		{
			return "FF";	
		}
		else if (userAgent.indexOf('Opera') > -1)
		{
			return "Opera";	
		}
		else
		{
			return "IE";	
		}
		
	},
	getScrollTop:function()
	{
		var scrollPos; 
		///NS浏览器
		if (typeof window.pageYOffset != "undefined") 
		{ 
		   scrollPos = window.pageYOffset; 
		} 
		///XHTML1.0
		else if (typeof document.compatMode != "undefined" &&    document.compatMode != "BackCompat") 
		{ 
		   scrollPos = document.documentElement.scrollTop; 
		} 
		///其他doctype
		else if (typeof document.body != "undefined") { 
		   scrollPos = document.body.scrollTop; 
		} 
		return scrollPos;
	},
	/**
		获取当前屏幕的高度，相当于clientHeight;
	**/
	getclientHeight:function()
	{
		var _clientheight = 0;
		///XHTML1.0
		if (typeof document.compatMode != "undefined" &&    document.compatMode != "BackCompat") 
		{ 
		   _clientheight = document.documentElement.clientHeight; 
		} 
		///其他doctype
		else if (typeof document.body != "undefined") { 
		   _clientheight = document.body.clientHeight; 
		} 
		
		return _clientheight;	
	},
	/**
		获取页面的ｄｏｃｔｙｐｅ
	**/
	getDOCTYPE:function()
	{
		if (typeof document.compatMode != "undefined" &&    document.compatMode != "BackCompat") 
		{ 
		   return "XHTML"; 
		} 
		///其他doctype
		else if (typeof document.body != "undefined") { 
		   return "HTML";
		}
		else
		{
			return "undefined";
		}
	},
	
	/**
		  兼容各种浏览器的ScrollTop
	**/
	 getPageScroll:function(){
	
		var yScroll;
	
		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
		} else if (document.body) {// all other Explorers
			yScroll = document.body.scrollTop;
		}
	
		arrayPageScroll = new Array('',yScroll) 
		return arrayPageScroll;
	},
	/**
		兼容各种浏览器的ClientHeight
	**/
	getPageSize:function(){
		
		var xScroll, yScroll;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = document.body.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		if (self.innerHeight) {	// all except Explorer
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		
		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = windowWidth;
		} else {
			pageWidth = xScroll;
		}
	
	
		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
		return arrayPageSize;
	},	
	
	///事件兼容ie和ff
	
	$Event:function()
	{
		if(Request.Browser()=="IE")
		{
			return event;
		}
		else
		{
			return _Event;				
		}
	},
	///获取物件的绝对坐标
	getObjPosition:function(_object)
	{
		var _top = _object.offsetTop;
		var _left = _object.offsetLeft;
		while(_object = _object.offsetParent)
		{
			_top += _object.offsetTop;
			_left += _object.offsetLeft;
		}
		return{ top: _top, left: _left };
	}
}

var Cookies = 
{
	CheckExist:function(name)
	{
		if (Request.Cookies(name))
		{
			return true;
		}
		else
		{
			return false;	
		}
	},
	ReMove:function(name,path,domain)
	{
		var strCookie;
		if (Cookies.CheckExist(name))
		{
			strCookie = name + "="; 
			strCookie += (path) ? "; path=" + path : "";
			strCookie += (domain) ? "; domain=" + domain : "";
			strCookie += "; expires=Thu, 01-Jan-70 00:00:01 GMT";
			document.cookie = strCookie;	
		}
	}
}

//Visit==================================================================================================
function VisitArticle(aid){
  var _script = document.createElement("script");
  _script.src = "http://visit.131.com/article.aspx?aid="+aid;
  var _head = document.getElementsByTagName('head')[0];
  _head.appendChild(_script);
}

function VisitVideo(vid,gid,cid){
  var _script = document.createElement("script");
  _script.src = "http://vote.131.com/visit/video.aspx?vid="+vid+"&gid="+gid+"&cid="+cid;
  var _head = document.getElementsByTagName('head')[0];
  _head.appendChild(_script);
}

function VisitMusic(songid)
{
  var _script = document.createElement("script");
  _script.src = "http://visit.music.131.com/MusicVisit.aspx?songid="+songid;
  var _head = document.getElementsByTagName('head')[0];
  _head.appendChild(_script);
}
function VisitPic(lid,did)
{
  var _script = document.createElement("script");
  _script.src = "http://visit.pic.131.com/Visit.aspx?lid="+lid+"&did="+did;
  var _head = document.getElementsByTagName('head')[0];
  _head.appendChild(_script);
}


//String=============================================================================================
	String.Replace=function(parentStr,startstr,endstr,replacestr)
	{
		var tmpstr;
		tmpstr = String.FindStr(parentStr,startstr,endstr);
		return parentStr.replace(tmpstr,replacestr);
	}
	
	/**
		查找字符串，
	**/
	String.FindStr=function(parentStr,startstr,endstr)
	{
		var startindex,endindex,tmpstr;
		startindex = parentStr.indexOf(startstr);
		endindex = parentStr.indexOf(endstr,startindex);
		endindex = (endindex == -1) ? parentStr.length : endindex;
		tmpstr = parentStr.substring(startindex,endindex);
		return tmpstr;		
	}
	/*
		去除字符串开始和结束处的空白字符
	*/
	String.Trim=function(str)
	{
		 return str.replace(/^\s*/m,'').replace(/\s*$/m,'');
	}
	
	String.prototype.Trim=function()
	{
		return this.replace(/^\s*/m,'').replace(/\s*$/m,'');
	}
	
	/*
		字符串检验方法开始
		*/
	/*
		正则表达式规则检查
		fieldValue，要检查的字符
		reg,正则表达式规则
	*/
	String.CheckRegex=function (fieldValue, reg)
	{
		fieldValue = this.Trim(fieldValue);
		return (null != fieldValue.match(reg));
	}
	/*
		必须字段是否为空判断
	*/
	String.CheckRequiredstring=function(fieldValue)
	{
		fieldValue = this.Trim(fieldValue);
		return ( ('' != fieldValue) && (0 < fieldValue.length) );
	}


	String.CheckStringlength=function(fieldValue, min, max, onlyIfAvailable)
	{
		fieldValue = this.Trim(fieldValue);
		if (onlyIfAvailable && ('' == fieldValue))
		{
			return true;
		}
		return (this.CheckRequiredstring(fieldValue) && (fieldValue.length >= min && fieldValue.length <= max) );
	}

	String.CheckUserName=function(fieldValue, onlyIfAvailable)
	{
		fieldValue = this.Trim(fieldValue);
		if (onlyIfAvailable && ('' == fieldValue))
		{
			return true;
		}
		return ( this.CheckRegex(fieldValue, /^[a-z]{1}[a-z0-9_.]*[0-9a-z]{1}$/) && this.CheckStringlength(fieldValue, 5, 30) );
	}

	String.CheckPassword=function(fieldValue, onlyIfAvailable)
	{
		fieldValue = this.Trim(fieldValue);
		if (onlyIfAvailable && ('' == fieldValue))
		{
			return true;
		}
		return this.CheckStringlength(fieldValue, 6, 20);
	}

	String.PassWordStrength=function(inputobj,lowobj,medobj,hiobj)
	{
		var password = document.getElementById(inputobj);
		var low = document.getElementById(lowobj);
		var med = document.getElementById(medobj);
		var hi = document.getElementById(hiobj);
		if (password.value.length < 6)
		{
			low.style.background="#FE0000";
			med.style.background = "#F1F1F1";
     		hi.style.background = "#F1F1F1";
		}
		else
		{
			var p1 = (password.value.search(/[a-zA-Z]/)!=-1) ? 1 : 0;
			var p2 = (password.value.search(/[0-9]/)!=-1) ? 1 : 0;
			var p3 = (password.value.search(/[^A-Za-z0-9_]/)!=-1) ? 1 : 0;
			var pa = p1 + p2 + p3
			switch (pa)
			{
				case 1:
				{
					low.style.background="#FE0000";
					med.style.background = "#F1F1F1";
					hi.style.background = "#F1F1F1";
					break;
				}
				case 2:
				{
					low.style.background ="#FF9900";
					med.style.background = "#FF9900";
					hi.style.background = "#F1F1F1";
					break;
				}
				case 3:
				{
					low.style.background ="#339900";
					med.style.background = "#339900";
					hi.style.background = "#339900";
					break;
				}
			}
		}	
	}
	String.CheckEmail=function(fieldValue, onlyIfAvailable)
	{
		fieldValue = this.Trim(fieldValue);
		if (onlyIfAvailable && ('' == fieldValue))
		{
			return true;
		}
		return ( this.CheckRequiredstring(fieldValue) && (this.CheckRegex(fieldValue, /^\S+@\S+\.(com|net|org|info|edu|mil|gov|biz|ws|us|tv|cc|aero|arpa|coop|int|jobs|museum|name|pro|travel|nato|.{2,2})$/gi)) );
	}	

	String.FormatDate=function(fieldValue,format)
	{
		var tmpdate = new Date(fieldValue)
		var o = {
				"M+" : tmpdate.getMonth()+1, //month
				"d+" : tmpdate.getDate(),    //day
				"h+" : tmpdate.getHours(),   //hour
				"m+" : tmpdate.getMinutes(), //minute
				"s+" : tmpdate.getSeconds(), //second
				"q+" : Math.floor((tmpdate.getMonth()+3)/3),  //quarter
				"S" : tmpdate.getMilliseconds() //millisecond
				}
		if(/(y+)/.test(format))
		{
			format=format.replace(RegExp.$1,(tmpdate.getFullYear()+"").substr(4 - RegExp.$1.length));
		}
		for(var k in o)
		{
			if(new RegExp("("+ k +")").test(format))
			{
				format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] :("00"+ o[k]).substr((""+ o[k]).length));
			}
		}
		return format;		
	}
//Ajax===================================================================================================================
var Ajax = 
{
	PostUrl:null, ///AJAX提交的文件地址
	Treat:null,///参数返回后的处理过程
	Method:"GET",///参数提交方式
	Async:true,///是否启用异步处理
	UpdateObj:null,//载入外部页面显示外部页面字符的elementid
	Param:Array(),
	IsXML:false,
	//获取浏览器xmlhttprequest对象，兼容ff,ie
	GetXmlHttpRequest:function()
	{
		var req;
		if (window.XMLHttpRequest) 
		{ // Mozilla, Safari,...
            req = new XMLHttpRequest();
            if (req.overrideMimeType) {
                req.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) { // IE

			var msxmls = ["MSXML3", "MSXML2", "Microsoft"];
			var returnObj
	
			for (var i=0; i < msxmls.length; i++) 
			{
				try 
				{
					req = new ActiveXObject(msxmls[i] + ".XMLHTTP");
					break;
				}
				catch (ex)
				{
					if (i==2)
					{						
						//alert("JS_CLASS:ERROR:创建" + msxmls[i] + ".XMLHTTP" + "控件失败!");
					}
				}
			}
        }

		if (!req) 
		{
			//alert("JS_CLASS:ERROR:组件创建失败\r\n由于您的浏览器版本太低，网站的某些功能无法使用.\r\n您可以升级您的浏览器到IE6.0以上版本");
			return false;
		}
		return req;
	},
	
	///推送数据
	SendRequest:function(url, params, HttpMethod)
	{
		
		if (!HttpMethod)
		{
   			 HttpMethod = "POST";
  		 }
		 var Obj=this.GetXmlHttpRequest();
		 var s=this.processChech(Obj,this.Treat,this.UpdateObj,this.IsXML)
		 Obj.onreadystatechange = s

		 if (url.indexOf('?')>-1)
		 {
		 	url = url +"&" + Math.floor(Math.random()*1000+1)
		 }
		 else
		 {
			url = url +"?" + Math.floor(Math.random()*1000+1)	 
		 }

		 if(HttpMethod=="POST")
		 {
				Obj.open(HttpMethod,url,this.Async);
				Obj.setRequestHeader("Method", "POST " + url + " HTTP/1.1");
				Obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				Obj.send(params);
		}
		else
		{
				Obj.open(HttpMethod,url,this.Async);
				Obj.send(params);
		}
		delete Obj;
		delete s;
	},
	
	///  添加参数
	AddParam:function(fileds,value)
	{
		this.Param.push(new Array(fileds,value));
	},
	
	///AJax执行方法
	Creat:function()
	{
		this.SendRequest(this.PostUrl,null,this.Method);		
	},
	/// get方式提交
	getCreat:function(posturl,treat,isXml)
	{
		this.PostUrl = posturl;
		this.Treat = treat;
		this.Method = "GET"
		this.IsXML = (isXml) ? isXml : false;
		
		this.SendRequest(this.PostUrl,null,this.Method);	
	},
	/// post方式提交
	postCreat:function(posturl,params,treat)
	{
		this.PostUrl = posturl;
		this.Treat = treat;
		this.Method = "POST";
		this.SendRequest(this.PostUrl,params,this.Method);
	},
	/// 直接更新页面中的某个标记的innerHTML
	Updater:function(rediv,url,showLoading)
	{
		if (showLoading!=null)
		{
			rediv.innerHTML = 'LOADING......';
		}
		this.IsXML = false;
		this.PostUrl = url;
		this.UpdateObj = rediv;
		this.Creat();		
		this.UpdateObj = null;
	},
	Post:function(posturl,treat)
	{
		var _param = '';
		for (var i = 0 ;i < this.Param.length;i++)
		{
			_param += '&' + this.Param[i][0] + '=' + this.Param[i][1];	
		}
		this.postCreat(posturl,_param,treat)
		this.Param = new Array();
	},
	///回调方法
	processChech:function(mobject,f,updateobj,isXml)
	{
		return function()
		{	
		  if (mobject.readyState == 4) 
			{				
			
				var state=mobject.status;
				if (state==404)
				{
					//alert("JS_CLASS:ERROR:404");
					return false;					
				}
				else if(state<200)
				{
					//alert("JS_CLASS:ERROR:error:"+state.statusText);
					return false;
				}
				else if(state==200)
				{
				
					//var text = mobject.responseText;
				
					var text = (isXml &&  mobject.responseXML ) ? mobject.responseXML : mobject.responseText;
					if (updateobj!= null)
					{
						Ajax.setInnerHTML(updateobj,text);
					}
					else
					{
						if (f!=null) f(text);
					}

				}
			}
			
		}		
	},

	setInnerHTML:function (el, htmlCode) {
		var ua = navigator.userAgent.toLowerCase();
		if (ua.indexOf('msie') >= 0 && ua.indexOf('opera') < 0) {
			//htmlCode = '<div style="display:none">for IE</div>' + htmlCode;
			htmlCode = htmlCode.replace(/<script([^>]*)>/gi,
										'<script$1 defer>');
			el.innerHTML = htmlCode;
			//el.removeChild(el.firstChild);
		} else {
			var el_next = el.nextSibling;
			var el_parent = el.parentNode;
			el_parent.removeChild(el);
			el.innerHTML = htmlCode;
			if (el_next) {
				el_parent.insertBefore(el, el_next)
			} else {
				el_parent.appendChild(el);
			}
		}
	}

	
}
//using('Online');

