//功能：
//	广告系统5.0通用js函数
//历史：
//	created by Guodong.Zhang 2005-01-28 15:30 
/********************************************
定义string缓冲区结构            
********************************************/
function str_Buf(){
	this.strs = new Array;		
}

str_Buf.prototype.append = function (str) {
	this.strs.push(str);
};

str_Buf.prototype.toString = function (str) {
	var result = this.strs.join("");
	return result;
};

/********************************************************* 
### 函数名  : LTrim() 
### 功能    : 去除左边的空格
### 入参    : 字符串
### 出参    : 返回去除左边空格的字符串
### 作者    : guodong 
### 修改日期: 2005.01.27
*********************************************************/
function LTrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);
    if (whitespace.indexOf(s.charAt(0)) != -1)
    {
        var j=0, i = s.length;
        while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
        {
            j++;
        }
        s = s.substring(j, i);
    }

    return s;
}

/********************************************************* 
### 函数名  : RTrim() 
### 功能    : 去除右边的空格
### 入参    : 字符串
### 出参    : 返回去除右边空格的字符串
### 作者    : guodong 
### 修改日期: 2005.01.27
*********************************************************/
function RTrim(str)
{
    var whitespace = new String(" \t\n\r");
    var s = new String(str);
    if (whitespace.indexOf(s.charAt(s.length-1)) != -1)
    {
        var i = s.length - 1;
        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
        {
            i--;
        }
        s = s.substring(0, i+1);
    }
    return s;
}

/********************************************************* 
### 函数名  : LTrim() 
### 功能    : 去除前后空格
### 入参    : 字符串
### 出参    : 返回去除两边空格的字符串
### 作者    : guodong 
### 修改日期: 2005.01.27
*********************************************************/
function Trim(str)
{
    return RTrim(LTrim(str));
}

/********************************************************* 
### 函数名  : isNull() 
### 功能    : 判断一个字符串是否含有空格
### 入参    : 字符串
### 出参    : 
### 作者    : guodong 
### 修改日期: 2005.01.27
*********************************************************/
function isNull( str )
{
	if( str == "" )
	{
		return false;
	}
	
	var i;
	for( i=0; i<str.length; i++ )
	{
		if( str.charAt(i) == ' ' ) return false;
	}
	
	return true;
}


/********************************************************* 
### 函数名  : getlen() 
### 功能    : 取一个字符串长度
### 入参    : 无
### 出参    : 
### 作者    : micoz 
### 修改日期: 2005.01.31
*********************************************************/
function getlen(str)
{
	if (!str) return 0;
	var len = 0;
	for (var p = 0; p < str.length; p++)
	{
		len += str.charCodeAt(p) > 255 ? 2 : 1;
	}
	return len;
}


/********************************************************* 
### 函数名  : getCurrDateTime() 
### 功能    : 取当前日期
### 入参    : 无
### 出参    : 返回日期字符串 yyyy-mm-dd hh:mm:ss
### 作者    : micoz 
### 修改日期: 2005.01.31
*********************************************************/
function getCurrDateTime()
{
	var currDateTime;
	var today = new Date();
	year = today.getYear();

	month = today.getMonth()+1;
	if (month<10)
	{
		month = "0" + month;
	}	
		

	day = today.getDate();
	if (day<10)
	{
		day = "0" + day;	
	}	
	
	hour = today.getHours();
	if (hour<10)
	{
		hour = "0" + hour;	
	}	
	
	minute = today.getMinutes();
	if (minute<10)
	{
		minute = "0" + minute;	
	}	
	
	second = today.getSeconds();
	if (second<10)
	{
		second = "0" + second;	
	}	
	
	currDateTime = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
	return currDateTime;
}

/********************************************************* 
### 函数名  : isMail() 
### 功能    : 
### 入参    : 无
### 出参    : 
### 作者    : micoz 
### 修改日期: 2005.01.31
*********************************************************/
function isMail(mail)
{
  if (mail.value=="")
  	return false;
  return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}

/********************************************************* 
### 函数名  : checkPost() 
### 功能    : 
### 入参    : 无
### 出参    : 
### 作者    : micoz 
### 修改日期: 2005.01.31
*********************************************************/
function checkPost(sPost)
{
   //邮政编码
	if(document.sPost.value=='')
	{
  	  alert("温馨提示: 邮政编码不能为空");
  	  return false;
	}
	if(isNaN(document.sPost.value))
	{
	  	alert("温馨提示: 邮政编码必须为数字");
  	  return false;
	}
	if(document.sPost.value.length!=6)
	{
	  	alert("温馨提示: 邮政编码输入不正确");
  	  return false;
	}
	return true;
}


/********************************************************* 
### 函数名  : standardChar()
### 功能    : 校验字符串是否是正整数
### 入参    : string
### 出参    : 
### 返回    : true or false
### 作者    : guodong 
### 修改日期: 2004.11.08
*********************************************************/
function checkIsInteger( string )
{
    if( string == "" )
    {
        return false;
    }
 
    if( /^\d+$/.test( string ) )
    {
        return true;
    }
    else
    {
        return false;
    }
}
/********************************************************* 
### 函数名  : checkStandardChar()
### 功能    : 校验字符串是否由字母数字或者下划线组成，不能以数字开头
### 入参    : string
### 出参    : 
### 返回    : true or false
### 作者    : micoz 
### 修改日期: 2004.11.08
*********************************************************/
function checkStandardChar( string )
{
    if( string == "" )
    {
        return false;
    }
 
    if( /^([a-zA-Z_])(\w*)$/.test( string ) )
    {
        return true;
    }
    else
    {
        return false;
    }
}

/********************************************************* 
### 函数名  : checkCallNumber()
### 功能    : 校验字符串是电话号码(数字-组成)
### 入参    : string
### 出参    : 
### 返回    : true or false
### 作者    : micoz 
### 修改日期: 2005.03.02
*********************************************************/
function checkCallNumber( string )
{
    if( string == "" )
        return false;
    
    if (strlen(string)<=6)
    	return false;
    		
    if( /^\d+$/.test( string ) )
        return true;
 
    return false;
}

/********************************************************* 
### 函数名  : checkIsChinese()
### 功能    : 校验字符串是否为中文
### 入参    : str
### 出参    : 
### 返回    : true or false
### 作者    : micoz 
### 修改日期: 2004.11.08
*********************************************************/
function checkIsChinese(str)
{
    //如果值为空，通过校验
    if (str == "")
        return false;
    var pattern = /^([\u4E00-\u9FA5]|[\uFE30-\uFFA0])*$/gi;
    if (pattern.test(str))
        return true;
    else
        return false;
}

/********************************************************* 
### 函数名  : getUrlParam()
### 功能    : 从URL中读取类似CGI参数值
### 入参    : 变量名
### 出参    : 变量值
### 作者    : mokymo 
### 修改日期: 2004.11.08
*********************************************************/
function getUrlParam(varName)
{
    var url = unescape(window.location.href);
    var urlArray=url.split("?");
    if (urlArray.length<2) return null;
    var paramArray=urlArray[1].split("&");
    var paramStr;
    for(i=0;i<paramArray.length;i++)
    {
        paramStr=paramArray[i].split("=");
        if (paramStr.length<2) continue;
        if(paramStr[0]==varName) return paramStr[1];
    }
    return null;
}


/********************************************************* 
### 函数名  : playv()
### 功能    : 从URL中读取类似CGI参数值
### 入参    : 变量名
### 出参    : 变量值
### 作者    : mokymo 
### 修改日期: 2004.11.08
*********************************************************/
function playv(v)
{
	document.writeln("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"391\" height=\"261\" align=\"middle\">");
	document.writeln("<param name=\"movie\" value=\"vplay/xxx.swf\" />");
	document.writeln("<param name=\"allowScriptAccess\" value=\"sameDomain\" />");
	document.writeln("<param name=\"quality\" value=\"high\" />");
	document.writeln("<param name=\"bgcolor\" value=\"#ffffff\" /> ");
	document.writeln("<param name=\"wmode\" value=\"transparent\"> ");
	document.writeln("<param name=\"flashvars\" value=\"flvUrl=" + v +"\">");
	document.writeln("<param name=\"LOOP\" value=\"false\" />");
	document.writeln("</object>");
}


/********************************************************* 
### 函数名  : playv()
### 功能    : 从URL中读取类似CGI参数值
### 入参    : 变量名
### 出参    : 变量值
### 作者    : mokymo 
### 修改日期: 2004.11.08
*********************************************************/
function getuin()
{
	  var str; 
		if(getUrlParam("uin") == null)
		{
				str = "";
		}
		else
		{
				str = getUrlParam("uin");
		}
		form1.fusername.value = str;
}


/********************************************************* 
### 函数名  : getCookie()
### 功能    : 从Cookie中读取变量值
### 入参    : 键名
### 出参    : 键值
### 作者    : mokymo 
### 修改日期: 2004.12.29
*********************************************************/
function getCookie(Key)
{
	var search = Key + "=";
	begin = document.cookie.indexOf(search);
	if (begin != -1) 
	{
		begin += search.length;
		end = document.cookie.indexOf(";",begin);
		if (end == -1)
			end = document.cookie.length;
		return document.cookie.substring(begin,end);
	}
	return null;
} 

/********************************************************* 
### 函数名  : strlen()
### 功能    : 计算字符串的字节数
### 入参    : 字符串
### 出参    : 字符串字节长度
### 作者    : mokymo 
### 修改日期: 2005.02.18
*********************************************************/
function strlen(str)
{
	if (!str)
	{
		return 0;
	}
	var len = 0;
	var i;
	for (i=0;i<str.length;i++)
	{
		if (str.charCodeAt(i)>255)
			len+=2;
		else
			len++;
	}
	return len;
}


/********************************************************* 
### 函数名  : strlen()
### 功能    : 校验身份证号码
### 入参    : 身份证号码
### 出参    : 字符串字节长度
### 作者    : mokymo 
### 修改日期: 2005.02.18
*********************************************************/
function checkIdcard(idcard,provice)
{
	var Errors=new Array(
							"验证通过!",
							"身份证号码位数不对!",
							"身份证号码出生日期超出范围或含有非法字符!",
							"身份证号校验位错误!",
							"身份证地区非法!",
							"身份证号码与地区不符!"
						);
	var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
	var idcard,Y,JYM;
	var S,M;
	var idcard_array = new Array();

	idcard_array = idcard.split("");

	//地区检验
	if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
	//if(area[idcard.substr(0,2)]!=provice)return Errors[5];

	//身份号码位数及格式检验
	switch(idcard.length){
	case 15:
		if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 ))
		{
			ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
		}
		else {
			ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
		}
		if(ereg.test(idcard))
			return Errors[0];
		else
			return Errors[2];
		break;

	case 18:
		//18位身份号码检测
		//出生日期的合法性检查
		//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
		//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
		if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 ))
		{
			ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
		}
		else
		{
			ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
		}

		if(ereg.test(idcard))//测试出生日期的合法性
		{
			//计算校验位
			S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
			+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
			+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
			+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
			+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
			+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
			+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
			+ parseInt(idcard_array[7]) * 1
			+ parseInt(idcard_array[8]) * 6
			+ parseInt(idcard_array[9]) * 3 ;

			Y = S % 11;
			M = "F";
			JYM = "10X98765432";
			M = JYM.substr(Y,1);//判断校验位
			return Errors[0]
		}
		else
			return Errors[2];
		break;

	default:
		return Errors[1];
		break;
	}
}


/********************************************************* 
### 函数名  : checkimg()
### 功能    : 检查图片
### 入参    : 身份证号码
### 出参    : 字符串字节长度
### 作者    : mokymo 
### 修改日期: 2005.02.18
*********************************************************/
function SetImgSize(img,maxWidth,maxHeight)   
{     
  	var   imgWidth   =   img.width;   
  	var   imgHeight   =   img.height;   
	 	if(imgWidth>0&&imgHeight>0)
	 	{    
	    if(imgWidth>maxWidth||imgHeight>maxHeight)
			{
		  	if((maxWidth   /   maxHeight)   >   (imgWidth   /   imgHeight))   
		  	{   
		  		img.height   =   maxHeight;   
		  		img.width   =   imgWidth   *   (maxHeight   /   imgHeight);   
		  	}   
		  	else   
		  	{   
		  		img.width   =   maxWidth;   
		  		img.height   =   imgHeight   *   (maxWidth   /   imgWidth);   
		  	}    
		  }
	 }
	 else
	 {
	    img.width=maxWidth;
		 	img.height=maxHeight;
	 }
}   

/********************************************************* 
### 函数名  : isMail() 
### 功能    : 
### 入参    : 无
### 出参    : 
### 作者    : micoz 
### 修改日期: 2005.01.31
*********************************************************/
function isMail(mail)
{
  if (mail.value=="")
  	return false;
  return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}


/********************************************************* 
### 函数名  : checkFile() 
### 功能    : 
### 入参    : 无
### 出参    : 
### 作者    : micoz 
### 修改日期: 2005.01.31
*********************************************************/
function checkFile()
{	
  a = checkFile.arguments;
	var sval = a[0];
	var sMax = a[1];
	
	var vf = new Image();    
	vf.src = sval;

	if(sMax < vf.fileSize)
	{
		return false;	
	}
	
	return true;
}

/********************************************************* 
### 函数名  : keydown() 
### 功能    : 
### 入参    : 无
### 出参    : 
### 作者    : stonelv
### 修改日期: 2008.01.20
*********************************************************/
function keydown(str, len){		
	if((event.keyCode !=  8 ) && (getlen(str) > len)){ 
		event.returnValue=false;
	}
}

/********************************************************* 
### 函数名  : keydown() 
### 功能    : 
### 入参    : 无
### 出参    : 
### 作者    : stonelv
### 修改日期: 2008.01.20
*********************************************************/
function wait(){		
	alert('敬请期待!');
}



/********************************************************* 
### 函数名  : showwish() 
### 功能    : 
### 入参    : 无
### 出参    : 
### 作者    : stonelv
### 修改日期: 2008.01.20
*********************************************************/
function showflash(info)
{	
	var oTd1 =document.getElementById("flash");
	var strBuf = new str_Buf();
	strBuf.append("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0\" width=\"100%\" height=\"100%\">");
	strBuf.append("<param name=\"movie\" value=\"game.swf?" + info +  "\" />");
	strBuf.append("<param name=\"quality\" value=\"high\" />");
	strBuf.append("<param name=\"wmode\" value=\"transparent\" />");
	strBuf.append("<embed src=\"game.swf?"  + info + "width=\"100%\" height=\"100%\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" wmode=\"transparent\"></embed>");
	strBuf.append("</object>");
	oTd1.innerHTML = strBuf.toString()
}

/********************************************************* 
### 函数名  : toloadflash() 
### 功能    : 
### 入参    : 无
### 出参    : 
### 作者    : stonelv
### 修改日期: 2008.01.20
*********************************************************/
function toloadflash(surl){
		var xmlHttp = createXMLHTTP();
		xmlHttp.open("GET", surl);	
		xmlHttp.onreadystatechange = function() {
			if(xmlHttp.readyState == 4){
					if(xmlHttp.status == 200) {				
						showflash(xmlHttp.responseText);
					}
			}				
		}
		xmlHttp.send(null);
}


/********************************************************* 
### 函数名  : createXMLHTTP() 
### 功能    : 
### 入参    : 无
### 出参    : 
### 作者    : stonelv
### 修改日期: 2008.01.20
*********************************************************/
function createXMLHTTP(){
	var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
											 "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
											 
	for(var i = 0; i < arrSignatures.length; i++){
		try{
				var oRequest = new ActiveXObject(arrSignatures[i]);
				return oRequest;		
		 }	
		catch(oError){				
		}
	}		
	throw new Error("MSXML is not installed on your system.");
}


