//$Id: sys_commonJSFunction_lib.js,v 1.4 2004/06/16 17:25:59 frank Exp $
function switchFunction(url,instance_id)
{
   document.FunctionChoice.action = url; 
   document.all("TopFunctionID").value = instance_id;
   document.FunctionChoice.submit();
   return false;
} 


function InputCheck()
{
   	var uname 	=  document.frmLogon.LOGIN_USERNAME.value;
   	var password =  document.frmLogon.LOGIN_PASSWORD.value;
   	
   	//add by kevin 2003/11/13
	if( uname == "")
	{
		alert( "请输入您的登陆名称。" );
		document.frmLogon.LOGIN_USERNAME.focus();
		return false;
	}	
	
	if( 3>uname.length || uname.length>16 )
	{
		alert( "您输入的登陆名称必须大于3并且小于16 ！" )
		document.frmLogon.LOGIN_USERNAME.focus();
		return false;
	}
	
	regex  = "^[A-Za-z0-9_]{3,}$";
	filter = new RegExp(regex);
	if( !filter.test( uname ) )
	{
		alert( "您的用户登陆名称中输入了非法字符，输入的字符必须在'A-Z'、'a-z'、'0-9'和'_'之中 ！" );
		document.frmLogon.LOGIN_USERNAME.focus();
		return false;
	}
	
	// Check Password
	if( password == "" )
	{
		alert( "请输入您的登陆密码！" )
		document.frmLogon.LOGIN_PASSWORD.focus();
		return false;
	}
	if( 3>password.length || password.length>16 )
	{
		alert( "您输入的密码必须大于3并且小于16 ！" )
		document.frmLogon.LOGIN_PASSWORD.focus();
		return false;
	}
	regex  = "^[A-Za-z0-9_]{3,}$";
	filter = new RegExp( regex );     
	if( !filter.test(password) )
	{
		alert( "您的密码中输入了非法字符，输入的字符必须在'A-Z'、'a-z'、'0-9'和'_'之中 ！" )
		document.frmLogon.LOGIN_PASSWORD.focus();
		return false;
	}
	//end
	return true;
   	/*
  	if (uname.length>16 || uname.length<2) 
  	{
  		alert("The length of user name must be between 2 and 16");
  		document.frmLogon.LOGIN_USERNAME.focus();
  		return false;
  	}
  	  	
  	if (password.length>16 || password.length<3) {
  		alert("The length of passwrod must be between 3 and 16");
  		document.frmLogon.LOGIN_PASSWORD.focus();
		return false;
  	}
    	return true;
    	*/
}

function setLanguage()
{
	var numargs = arguments.length;
	document.all("LanguageID").value=arguments[0];
	if(numargs>1)
	{
		document.all("LanguageCode").value=arguments[1];
	}
	window.languageRefresh.submit();
	return false;	
}

/*********************************************************************************************/
function changepage(page_num, which_one)
{
 var arrArgs = new Array();
 var arrArgs2 = new Array();
 if(page_num<=maxpage && thispage!=page_num &&page_num>0)
 {
  oForm = document.createElement("FORM");
  oForm.action = "";
  oForm.method="POST";
  document.body.appendChild(oForm);
  InputPageNum = document.createElement("INPUT");
  InputPageNum.type = "hidden";
  InputPageNum.name = "page_num";
  InputPageNum.value=page_num;
  oForm.appendChild(InputPageNum);
  which = document.createElement("INPUT");
  which.type = "hidden";
  which.name = "switchPage_which";
  which.value=which_one;
  oForm.appendChild(which);
  for(var i=0;i<arrArgs.length;i++)
  { 
   Inputargs = document.createElement("INPUT"); 
   Inputargs.type = "hidden"; 
   Inputargs.name = arrArgs[i][0]; 
   Inputargs.value= arrArgs[i][1]; 
   oForm.appendChild(Inputargs);
  }
  for(var i=0;i<arrArgs2.length;i++)
  { 
   Inputargs = document.createElement("INPUT"); 
   Inputargs.type = "hidden"; 
   Inputargs.name = arrArgs2[i][0]; 
   Inputargs.value= arrArgs2[i][1]; 
   oForm.appendChild(Inputargs);
  }
  oForm.submit();
 }
 return false;
}         
/*************************************************************************************************/
function searchCommonType(s_typename)
{
  window.open("matchedtype_drv.php?retext="+s_typename+"&commontype="+document.frmFindCommonType.commontypename.value,"_blank","toolbar=no,resizable,scrollbars,dependent,width=600,height=400,left=100,top=100")
}

/*by david liu 2002/05/17*/
function changepage2()
{
	var orderby	= document.switchpageForm.page_orderby.value;
	var order	= document.switchpageForm.page_order.value;
	
	var numargs = arguments.length;
	if(numargs<1)
		return false;
	var page_number = arguments[0]; 
	if(numargs>1)
		orderby	= arguments[1]; 
	if(numargs>2)
		order	= arguments[2];
	if(page_number<=maxpage && page_number>0)
	{
		document.switchpageForm.page_num.value=page_number;
		document.switchpageForm.page_orderby.value=orderby;
		document.switchpageForm.page_order.value=order;
		document.switchpageForm.submit();
	}
	return false;
}

function Chk_Blank(sInput)
{
   var s  , ss;
   s=sInput;
   // Split at each space character.
   ss = s.split(" ");
   if (ss.length>1)
   		return false;
   	else
   		return true;
}

//check functions list
function checkBeforeSubmit()
{
	var arrInputs = document.all.tags("INPUT");
	var arrArea = document.all.tags("TEXTAREA");
	
	if(arrInputs!=null)
		for(var i =0;i<arrInputs.length;i++)
			if(arrInputs[i].type=="text" || arrInputs[i].type=="TEXT")
				if(!arrInputs[i].disabled){
						try{
						if(!arrInputs[i].onchange())
							return false;
						}
						catch(e){}
				}

	if(arrArea!=null)
		for(var i =0;i<arrArea.length;i++)
			if(!arrArea[i].disabled){
					try{if(!arrArea[i].onchange())
						return false;
					}
					catch(e){}
			}
	return true;
}


function check()
{
	var numargs = arguments.length;
	var result;
	if(numargs<2 || numargs>4)
		return true;
	
	var obj 	= arguments[0]; 
	var datatype	= arguments[1]; 
	if(numargs>2)
		var maxdatalength = arguments[2];
	if(numargs>3)
		var mindatalength = arguments[3];
	switch(numargs){
		case 2: 
			result = checkValid(obj.value,datatype);
			break;
		case 3:
			result = checkValid(obj.value,datatype,maxdatalength);
			break;
		case 4:
			result = checkValid(obj.value,datatype,maxdatalength,mindatalength);
			break;
	}
	if(!result){
		obj.focus();
		return false;
	}
	
	return true;
	
}


function checkValid()
{
	var numargs = arguments.length;
	if(numargs<2 || numargs>4)
		return true;
		
	var value 	= arguments[0];
	var datatype	= arguments[1]; 
	if(numargs>2)
		var maxdatalength = arguments[2];
	if(numargs>3)
		var mindatalength = arguments[3];
	
	var result;
	datatype = datatype.toLowerCase();
	switch(numargs)
	{
	case 2:
		switch(datatype)
		{
			case "int":
			case "integer":
//				result = checkInt(value);
				result = checkCommon("int",value);
				break;
			case "url":
				result = checkCommon("url",value);
				break;
			case "float":
			case "num":
			case "number":
				result = checkCommon("num",value);
				break;
			case "email":
			case "e-mail":
				result = checkCommon("email",value);
				break;
			case "date":
				result = checkDate(value);
				break;
			case "time":
				result = checkTime(value);
				break;
			case "datetime":
				result = checkDateTime(value);
				break;
			case "zip":
			case "zipcode":
				result = checkZip(value);
				break;
			default:
				return true;
		}	
		break;
	case 3:
		switch(datatype)
		{
			case "int":
			case "integer":
				result = checkCommon("int",value,maxdatalength);
				break;
			case "url":
				result = checkCommon("url",value,maxdatalength);
				break;
			case "float":
			case "num":
			case "number":
				result = checkCommon("num",value,maxdatalength);
				break;
			case "char":
			case "string":
				result = checkChar(value,maxdatalength);
				break;
			case "email":
			case "e-mail":
				result = checkCommon("email",value,maxdatalength);
				break;
//if datatype is date then the arguement 3 is the date format.				
			case "date":
				result = checkDate(value,maxdatalength);
				break;
//if datatype is time then the arguement 3 is the time format.
			case "time":
				result = checkTime(value,maxdatalength);
				break;
//if datatype is datetime then the arguement 3 is the datetime format.
			case "datetime":
				result = checkDateTime(value,maxdatalength);
				break;
			case "zip":
			case "zipcode":
				result = checkZip(value);
				break;
			default:
				return true;
		}	
		break;
	case 4:
		switch(datatype)
		{
			case "int":
			case "integer":
				result = checkCommon("int",value,maxdatalength,mindatalength);
				break;
			case "url":
				result = checkCommon("url",value,maxdatalength,mindatalength);
				break;
			case "float":
			case "num":
			case "number":
				result = checkCommon("num",value,maxdatalength,mindatalength);
				break;
			case "char":
			case "string":
				result = checkChar(value,maxdatalength,mindatalength);
				break;
			case "email":
			case "e-mail":
				result = checkCommon("email",value,maxdatalength,mindatalength);
				break;
			case "date":
				result = checkDate(value,maxdatalength);
				break;
			case "time":
				result = checkTime(value,maxdatalength);
				break;
			case "datetime":
				result = checkDateTime(value,maxdatalength);
				break;
			case "zip":
			case "zipcode":
				result = checkZip(value);
				break;
			default:
				return true;
		}	
		break;
	}	
	if(!result){
		return false;
	}
	return true;
}

function checkZip()
{
	return true;
	
}

function checkChar()
{
	var numargs = arguments.length;
	if(numargs<2 || numargs>3)
		return true;
		
	var value 		= arguments[0];
	var maxdatalength 	= arguments[1];
	
	if(numargs>2)
		var mindatalength = arguments[2];
		
		
	var str = value.toString();

	if(maxdatalength==0 && numargs==3)
	{
		if(str.length<mindatalength){
			//alert("Too short,the min length is "+mindatalength);
			return false;
		}
	}	
	else
	{
		if(str.length>maxdatalength)
		{	
			//alert("Too long,the max length is "+maxdatalength);
			return false;
		}
		
		if(numargs==3){
			if(str.length<mindatalength)
				{
					//alert("Too short,the min length is "+mindatalength);
					return false;
				}
		}
	}
	return true;
}

function checkCommon()
{
	var numargs = arguments.length;
	var result;
	if(numargs<2 || numargs>4)
		return true;
	
	var type		= arguments[0];
	var value 		= arguments[1];
;
	
	if(numargs>2)
		var maxdatalength 	= arguments[2];

	if(numargs>3)
		var mindatalength 	= arguments[3];
		
	var regex;
	var filter;
	switch (type){
		case "int":
/*			regex=/(^\d+$)/;
			filter = new RegExp(regex);
			if(!filter.test(value))
    			{
        			alert("Please input a valid int!");
        			return false;
    			}
*/
    			if(!fnIsIntNum(value))
   			{
        			//alert("Please input a valid int!");
        			return false;
    			}
			break;
		case "num":
			regex=/(^\d+$)|(^\d+\.\d+$)|(^[-]\d+\.\d+$)|(^[-]\d+$)/;
			filter = new RegExp(regex);
			if(!filter.test(value))
    			{
        			//alert("Please input a valid number!");
        			return false;
    			}
			break;
		case "email":
			regex="^([a-z0-9_-])+@([a-zZ0-9_-])+(\.[a-z0-9_-])+[a-z]{2,3}$";
     			filter = new RegExp(regex);
 			if(!filter.test(value))
    			{
        			//alert("Please input a valid email address!");
        			return false;
   			}
   			break;
		case "url":
			regex="(^http://{1}((\w)+[.]){1,3})";
			filter = new RegExp(regex);
 			if(!filter.test(value))
    			{
        			//alert("Please input a valid url!");
        			return false;
   			}
   			break;
	}
	
	switch(numargs)
  	{
  		case 2:
  			result  = true;
  			break;
  		case 3:
			result	= checkChar(value,maxdatalength);
			break;
  		case 4:
  			result	= checkChar(value,maxdatalength,mindatalength);
  			break;
  	}
  	if(!result)
  		return false;
  	
	return true;
	
}

function checkTime()
{
	var numargs = arguments.length;
	var result;
	var regex;
	var filter;
	var arrDate;
	var bolAllday;
	var strHour;
	var strMin;
	var strSec;
	
	if(numargs<1 || numargs>2)
		return true;
	var strFormat;
	var value		= arguments[0];
	if(numargs==2)
		strFormat	= arguments[1];
	else
		strFormat	= "HH:I";
		
	switch(strFormat)
	{
		case "HH:I":	
			regex="(^([0-9]{1,2}):([0-9]{1,2})$)";
			filter = new RegExp(regex);
 			if(!filter.test(value))
    			{
        			//alert("Please input a valid time!");
        			return false;
   			}
   			arrDate	 	= value.split(":");
			strHour  	= arrDate[0];
			strMin	 	= arrDate[1];
			strSec 		= "-1";
			bolAllday 	= true;
   			break;
   		case "hh:i":
   			regex="(^([0-9]{1,2}):([0-9]{1,2})$)";
			filter = new RegExp(regex);
 			if(!filter.test(value))
    			{
        			//alert("Please input a valid time!");
        			return false;
   			}
   			arrDate	 	= value.split(":");
			strHour  	= arrDate[0];
			strMin	 	= arrDate[1];
			strSec 		= "-1";
			bolAllday 	= false;
   			break;
   		case "HH:I:S":
   			regex="(^([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})$)";
			filter = new RegExp(regex);
 			if(!filter.test(value))
    			{
        			//alert("Please input a valid time!");
        			return false;
   			}
   			arrDate	 	= value.split(":");
			strHour  	= arrDate[0];
			strMin	 	= arrDate[1];
			strSec		= arrDate[2];
			bolAllday 	= true;
   			break;
   		case "hh:i:s":
   			regex="(^([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})$)";
			filter = new RegExp(regex);
 			if(!filter.test(value))
    			{
        			//alert("Please input a valid time!");
        			return false;
   			}
   			arrDate	 	= value.split(":");
			strHour  	= arrDate[0];
			strMin	 	= arrDate[1];
			strSec		= arrDate[2];
			bolAllday 	= false;
   			break;
   	}
   	
	if(bolAllday)
	{
		if(strHour>23 || strHour<1)
		{
			//alert("Please input a valid time");
			return false;
		}
	}else{
		if(strHour>12 || strHour<1)
		{
			//alert("Please input a valid time");
			return false;
		}
	
	}
	
	if(strMin>59 || strMin <0)
	{
		//alert("Please input a valid time");
		return false;
	}
	
	if((strSec>59 || strSec <0)&& strSec!="-1")
	{
		//alert("Please input a valid time");
		return false;
	}
	
	return true;
		
		
}

function checkDateTime()
{
	var numargs = arguments.length;
	var bolDateresult;
	var bolTimeresult;
	var filter;
	var strFormat;
	var arrDateTime;
	var strDate;
	var strTime;
	var arrFormat;
	var strDateFormat;
	var strTimeFormat;
	
	if(numargs<1 || numargs>2)
		return true;
	
	var value		= arguments[0];
	if(numargs==2)
		strFormat	= arguments[1];
	else
		strFormat	= "MM/DD/YYYY HH:I";
	arrFormat 	= strFormat.split(" ");
	strDateFormat	= arrFormat[0];
	strTimeFormat	= arrFormat[1];
	
	
	regex=/^[\w\W]+\s[\w\W]+$/;
	filter = new RegExp(regex);
 	if(!filter.test(value))
 	{
 		//alert("Please input a valid datetime");
 		return false;
 	}
 	
 	arrDateTime = value.split(" ");
 	strDate = arrDateTime[0];
 	strTime = arrDateTime[1];
 	
 	
 	bolDateresult 	= checkDate(strDate,strDateFormat);
 	if(!bolDateresult)
 		return false;
 	bolTimeresult	= checkTime(strTime,strTimeFormat);
	if(!bolTimeresult)
		return false;
	return true;

}

function checkDate()
{
	var numargs = arguments.length;
	var result;
	var filter;
	var arrDate;
	var regex;
	if(numargs<1 || numargs>2)
		return true;
	var strFormat;
	var value		= arguments[0];
	if(numargs==2)
		strFormat	= arguments[1];
	else
		strFormat	= "MM/DD/YYYY";
	/*first :
		check the value's format;
	*/
	switch(strFormat)
	{
		case "MM/DD/YYYY":	
			regex="(^[0-9]{1,2})/([0-9]{1,2})/([0-9]{4}$)";
			filter = new RegExp(regex);
 			if(!filter.test(value))
    			{
        			//alert("Please input a valid date!");
        			return false;
   			}
   			arrDate	 = value.split("/");
			strMonth = arrDate[0];
			strDay	 = arrDate[1];
			strYear  = arrDate[2];
			result 	 = checkDay(strMonth,strDay,strYear);
   			break;
   		case "MM-DD-YYYY":
   			regex="(^[0-9]{1,2})-([0-9]{1,2})-([0-9]{4}$)";
			filter = new RegExp(regex);
 			if(!filter.test(value))
    			{
        			//alert("Please input a valid date!");
        			return false;
   			}
   			arrDate	 = value.split("-");
			strMonth = arrDate[0];
			strDay	 = arrDate[1];
			strYear  = arrDate[2];
			result 	 = checkDay(strMonth,strDay,strYear);
   			break;
   		case "YYYY/MM/DD":
   			regex="(^([0-9]{4}/[0-9]{1,2})/([0-9]{1,2})$)";
			filter = new RegExp(regex);
 			if(!filter.test(value))
    			{
        			//alert("Please input a valid date!");
        			return false;
   			}
   			arrDate	 = value.split("/");
			strMonth = arrDate[1];
			strDay	 = arrDate[2];
			strYear  = arrDate[0];
			result 	 = checkDay(strMonth,strDay,strYear);
   			break;
   		case "YYYY-MM-DD":
   			regex="(^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})$)";
			filter = new RegExp(regex);
 			if(!filter.test(value))
    			{
        			//alert("Please input a valid date!");
        			return false;
   			}
   			arrDate	 = value.split("-");
			strMonth = arrDate[1];
			strDay	 = arrDate[2];
			strYear  = arrDate[0];
			result 	 = checkDay(strMonth,strDay,strYear);
   			break;
	}
	if(!result)
		return false;
	return true;
}




function checkDay(strMonth,strDay,strYear)
{
   
    bIsLeapYear = ((!(strYear%4)) && (strYear%100)) || !(strYear%400);
    if (bIsLeapYear && strMonth==2 && strDay>29)
    {
        //alert("Please check your valid information for leap year!");
        return false;
    }
    if (!bIsLeapYear && strMonth==2 && strDay>28)
    {
        //alert("Please check your valid information!");
        return false;
    }
    if ((strMonth==4||strMonth==6||strMonth==9||strMonth==11)&&strDay>30)
    {
        //alert("Please check your valid information!");
        return false;
    }
    if (strMonth>12 || strMonth<1)
    {
        //alert("Please check your month information!");
        return false;
    }
    if (strDay<1)
    {
        //alert("Please check your day information!");
        return false;
    }
    return true;
 
}

//**********************************************************************************************************
function fnIsIntNum(strNum)
{
var strCheckNum = strNum + "";
if(strCheckNum.length < 1)         
	return false;
else if(isNaN(strCheckNum))        
	return false;
else if(parseInt(strCheckNum) < 1)      
	return false; 
else if(parseFloat(strCheckNum) > parseInt(strCheckNum)) 
	return false;
else if(strCheckNum.substr(0 ,1)=="0") 
	return false;
else if(!(strCheckNum.indexOf('.')==-1))
	return false;
return true;
}

function EmailCheck (emailStr) 
{

	var validcharsBefore = "abcdefghijklmnopqrstuvwxyz0123456789.-_";
	var validcharsAfter = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
	var email = emailStr;
	var emailBefore ;
	var emailAfter ;
	
	//	'@''s index must >=1
	IndexChar=email.indexOf("@");
	if (1>IndexChar)
		return false;
	
	emailBefore =email.substring(0,IndexChar);
	emailAfter =email.substring(IndexChar+1,email.length-1);
	
	if (1>emailAfter.indexOf("."))
		return false;
	
	for (var i=0; emailBefore.length>i; i++) 
	{
		var letter = emailBefore.charAt(i).toLowerCase();
		if (validcharsBefore.indexOf(letter) != -1)
			continue;
		return false;
	}
	for (var i=0; emailAfter.length>i; i++) 
	{
		var letter = emailAfter.charAt(i).toLowerCase();
		if (validcharsAfter.indexOf(letter) != -1)
			continue;
		return false;
	}
	return true;
}

function PhoneCheck (strNumber) {

	var validchars = "0123456789-()+";
	var number = strNumber;
	
	for (var i=0; number.length>i; i++) 
	{
		var letter = number.charAt(i).toLowerCase();
		if (validchars.indexOf(letter) != -1)
			continue;
		return false;
	}
	
	if (number.indexOf("-")==0) return false;
	if (number.indexOf("-")==(number.length-1)) return false;
	
		
	return true;
}


/*************************************************************************************
*			Trim blank (right & left)							*
*************************************************************************************/
function lTrim(str) 
{ 
	if (str.charAt(0) == " ") 
	{ 
		str = str.slice(1);
		str = lTrim(str);  
	} 
	return str; 
} 

function rTrim(str) 
{ 
	var iLength; 
	iLength = str.length; 
	if (str.charAt(iLength - 1) == " ") 
	{ 
		str = str.slice(0, iLength - 1);
		str = rTrim(str);
	} 
	return str; 
} 

function trim(str) 
{ 
	return lTrim(rTrim(str)); 
}

/**************************************************************************************/

function CheckNumber (strNumber) {

	var validchars = "0123456789.";
	var number = strNumber;
	
	for (var i=0; number.length>i; i++) 
	{
		var letter = number.charAt(i).toLowerCase();
		if (validchars.indexOf(letter) != -1)
			continue;
		return false;
	}
	
	if (number.indexOf('.')>=0)
		if (number.indexOf('.',number.indexOf('.')+1)>0)
			return false;
	
	
		
	return true;
}
function CompDate(date1,date2)
{
	//	if date1 >= date2 	return true
	datebig = new Date(date1);
	datesmall = new Date(date2);
	if (datebig >= datesmall )
		return true;
	else
		return false;

}
 function CheckRegularString (strInput) {

var validchars = "0123456789_-";
validchars +="abcdefghighlmnopqrstuvwxyz";
validchars +="ABCDEFGHIGKLMNOPQRSTUVWXYZ";

var number = strInput;

for (var i=0; number.length>i; i++) 
{
	var letter = number.charAt(i).toLowerCase();
	if (validchars.indexOf(letter) != -1)
		continue;
	return false;
}

if (number.indexOf('.')>=0)
if (number.indexOf('.',number.indexOf('.')+1)>0)
	return false;

return true;
}