/*


quit()
goback()
goforward()
ToUpper(myChar)
*trim(string)
toUTCDate(testdate)
DateComp(firstdate,seconddate)
isValidString(s, des)
*del_Blank(myInput)
tentoeight(tendate,sepa)
eighttoten(eightdate,sepa)
*isEmpty(s)
isWhitespace (s)
isCharsInBagEx (s, bag)
isCharsInBag (s, bag)
*check_Blank(myInput,hintError,callName)
check_TextLength(myText,myLength,hintError,callName)
check_TextNum(myText,myNum,callName)    // modified by mouqing.jin at 2003-10-27
check_Int(myNum,canBlank,callName) 
check_Double(myDouble,nlen,blen,canBlank,callName) 
check_Num(myNum,canBlank,callName) 
check_TenDate(myDate,canBlank,callName)
check_Address(myAddr,canBlank,callName)
check_Password(myPwd,canBlank,callName)
check_Postcode(myPostcode,canBlank,callName)
check_Phone(myPhone,canBlank,callName)
check_Email(myEmail,canBlank,callName)
check_Account(myAccount,canBlank,callName)
check_Url(myUrl,canBlank,callName)
*checkRadioSelected(radioName)
*checkDeliverDescribe(describe)
*openWindow
*/

function quit(){
   var obj = null ;
   obj = window;
   if (window.parent) {obj = window.parent;}
   
     obj.close();
   
}

function goback(){
   history.back();
}

function goforward(){
   history.forward();
}

function ToUpper(myChar)
{

    myChar.value = myChar.value.toUpperCase();
}

function trim(string) {
   var tmpchar, i, j, result;
   i = 0;
   tmpchar = string.charAt(i);
   while (tmpchar == ' ') {
      i ++;
      tmpchar = string.charAt(i);
   }
   j = string.length - 1;
   tmpchar = string.charAt(j);
   while (tmpchar == ' ') {
      j --;
      tmpchar = string.charAt (j);
   }
   if ( i <= j)
      result = string.substring(i,j+1);
   else
      result = "";
   return result;
}

function toUTCDate(testdate)
 { 
   var valy=testdate.substring(0,testdate.indexOf("-"));    
   var valm=testdate.substring(testdate.indexOf("-")+1,testdate.lastIndexOf("-"));
   var vald=testdate.substr(testdate.lastIndexOf("-")+1);
   var testdate1=new Date(valy,valm-1,vald);
   if ((testdate1.getFullYear()!=valy)|(testdate1.getMonth()!=(valm-1))|(testdate1.getDate()!=vald))
      return false;
   return  Date.UTC(valy, valm,vald);   
 
}

function DateComp(firstdate,seconddate)
 { 
var firstt,secondt;
var MinMilli = 1000 * 60 ;
var HrMilli = MinMilli * 60;
var DyMilli = HrMilli * 24;
firstt=toUTCDate(firstdate);
secondt=toUTCDate(seconddate);
return (secondt-firstt)/DyMilli; 
}


function isValidString(s, des)
{
 	var errorChar;
	var badChar = "><,[]{}?/+=|\\'\":;~!@#$%^&()`"; 
 	if (isEmpty(s))
 	{
 		alert("请输入"+ des +"！");
 		return false;
 	}
	//is s contain invalid characters
	//Validate the user name
	errorChar = isCharsInBagEx( s, badChar)
    	if (errorChar != "" )
	{
		alert("您输入的" + des +"是无效的"+des +",\n\n请不要在"+des+"中输入字符" + errorChar + "!\n\n请重新输入合法的"+des+"！" );
		return false;
	} 	
	
	return true;
 }
 
function del_Blank(myInput)
 {
    var myValue="";
  for(var i=0; i<myInput.value.length;i++)
    {
      var c=myInput.value.charAt(i);
      if (c!=' ') myValue=myValue+c;	
    }
   return myValue; 
 }
 
/*有分隔符的日期转八位
*tendate 有分隔符的日期
*sepa 分隔符
*/ 
function tentoeight(tendate,sepa)
 { 
   var valy=tendate.substring(0,tendate.indexOf(sepa));    
   var valm=tendate.substring(tendate.indexOf(sepa)+1,tendate.lastIndexOf(sepa));
   var vald=tendate.substr(tendate.lastIndexOf(sepa)+1);
   if(valm.length<2)
    valm="0"+valm;
   if(vald.length<2)
    vald="0"+vald;
   return valy+valm+vald
}
/*八位日期转有分隔符的日期
*eightdate 八位日期
*sepa 分隔符
*/ 

function eighttoten(eightdate,sepa)
 { 
   var valy=eightdate.substr(0,4);    
   var valm=eightdate.substr(4,2);
   var vald=eightdate.substr(6);
   return valy+sepa+valm+sepa+vald
}


function isEmpty(s)
{  
	return ((s == null) || (trim(s).length == 0))
}

function isWhitespace (s)
{ //是否含有空白键 
  var whitespace = " \t\n\r";
  var i;
  
   for (i = 0; i < s.length; i++)
   {   
  
       var c = s.charAt(i);
       if (whitespace.indexOf(c) >= 0) 
	   {
		  return true;
	   }
   }

  
   return false;
}

function isCharsInBagEx (s, bag)
{  
  var i,c;
  //返回第一个在s中出现的bag中的字符
  for (i = 0; i < s.length; i++)
  {   
        c = s.charAt(i);
	if (bag.indexOf(c) > -1) 
        return c;
  }
  return "";
}

function isCharsInBag (s, bag)
{  
  var i;
  //s中的任何一个字符只要不包含在bag中,就返回false
  for (i = 0; i < s.length; i++)
  {   
      
      var c = s.charAt(i);
      if (bag.indexOf(c) == -1) return false;
  }
  return true;
}

	
function check_Blank(myInput,hintError,callName) {
   var myvalue=del_Blank(myInput);
   var isBlank=(myvalue.length==0);
   if(hintError && isBlank) 
   {
      alert(callName+"的值必填!");
      myInput.focus();
      if((myInput.type=="text")||(myInput.type=="textarea"))
        myInput.select();
   }
  return isBlank;
}

function check_TextLength(myText,myLength,hintError,callName) {
   var isValid=(trim(myText.value).length<=myLength);
   if(hintError && !isValid) 
   {
      alert(callName+"的长度不能超过"+myLength+"位!");
      myText.focus();
      myText.select();
   }
  return isValid;
 }

/*
     modified by mouqing.jin at 2003-10-27
*/
function check_TextNum(myText,myNum,callName)
{
	var isTrue=(trim(myText.value).length==myNum);
	if(!isTrue)
	{
		alert(callName+"的长度必须是"+myNum+"位!");
                myText.focus();
                myText.select();
	}
	return isTrue;
}

function  check_Int(myNum,canBlank,callName) 
{
   if(check_Blank(myNum,false,"") && canBlank) return true;
   var tempint=new Number(myNum.value);
   if (tempint!=myNum.value)
   {    
          alert(callName+"不是有效的整数!");
          myNum.focus();
          myNum.select();
          return false;
   }
   return true;
}

function  check_Double(myDouble,nlen,blen,canBlank,callName) 
{
   if(check_Blank(myDouble,false,"") && canBlank) return true;  
   var numstr;  
   var regstr;
   myDouble.value=del_Blank(myDouble);
   regstr="^@{0,1}[0-9]{1,"+(nlen-blen)+"}(-[0-9]{1,"+blen+"})?$";
   var r = new RegExp(regstr,"ig");
   numstr=myDouble.value;
   numstr=numstr.replace("@","#");
   numstr=numstr.replace("-","@");
   numstr=numstr.replace(".","-");
   a = numstr.match(r);
   if (a!=numstr){
   	alert(callName+"不是"+nlen+","+blen+"的有效实数!");
    myDouble.focus();
    return false;
           }
  
  return true;
}



function  check_Num(myNum,canBlank,callName) 
{
   if(check_Blank(myNum,false,"") && canBlank) return true;  
   var allNum=true;		
   var cnt=0;
   myNum.value=del_Blank(myNum);
   for(var i=0;i<myNum.value.length;i++)
   {
      var c=myNum.value.charAt(i);
      if(i==0 && (c=='+' || c=='-')) continue;
      if(c == '.')      {  cnt = cnt + 1;      }
      if(cnt>1)       {  break;      }
      if((c<'0'||c>'9')&&(c != '.'))      {  allNum=false;   break;  }
   }
   if( cnt<2 &&  allNum) 
     {
      return true;
     }
   else { 
   	        alert(callName+"不是有效的数值!");
            myNum.focus();
            myNum.select();
            return false;
           }
  
  return true;
}


function  check_Postcode(myPostcode,canBlank,callName) 
{
   if(check_Blank(myPostcode,false,"") && canBlank) return true;
   var tempcode=new Number(myPostcode.value);
   if (tempcode!=myPostcode.value)
   {    
          alert(callName+"不是有效邮编!");
          myPostcode.focus();
          myPostcode.select();
          return false;
   }
   return true;
}

function  check_TenDate(myDate,canBlank,callName)
{
 if(check_Blank(myDate,false,callName) && canBlank) { return true; }
 var vale=myDate.value;
 var isValidDate=false;
 if (vale.length==10)
 {
   valy=vale.substring(0,vale.indexOf("-"));    
   valm=vale.substring(vale.indexOf("-")+1,vale.lastIndexOf("-"));
   vald=vale.substr(vale.lastIndexOf("-")+1);
  chk_date=new Date(valy,valm-1,vald);
  isValidDate=!(( valy < 1000 ) |(chk_date.getFullYear()!=valy)|(chk_date.getMonth()!=valm-1)|(chk_date.getDate()!=vald));
 }
 if(!isValidDate) {
	 alert(callName+"不是一个有效的日期,请按YYYY-MM-DD方式输入一个有效的日期!");	
                 myDate.focus();
                 myDate.select();
 }	
 return isValidDate; 
}






function check_Address(myAddr,canBlank,callName)
{var s;
 if(check_Blank(myAddr,false,"") && canBlank) return true;  
 s=myAddr.value;
  if ( isWhitespace(s) )
	{
		alert(callName+"中不能包含空格符，请重新输入！");	
		myAddr.focus();
		return false;
	}
	//is s contain invalid characters
	var badChar = "><,[]{}?/+=|\\'\":;~!@#$%^&`"; 
	var len = s.length;
   //Validate the user name
    if ( isCharsInBag( s, badChar))
	{
		alert(callName+"中不能含有字符 "+badChar + " !");
		myAddr.focus();
		return false;
	}
	//check user length 
	if ((len>50)||(len<5))
	{
		alert(callName+"不能超过50个汉字也不能少于五个汉字！");
		myAddr.focus();
		return false;
	}
	return true;
 
}

function check_Password(myPwd,canBlank,callName)
{var s;
 if(check_Blank(myPwd,false,"") && canBlank) return true;  
 s=myPwd.value;
   	if ( isWhitespace(s) )
	{
		alert(callName+"中不能包含空格符，请重新输入！");	
		myPwd.focus();
		return false;
	}
	//is s contain invalid characters
	var badChar = "~`!@#$%^&*()_+}{|\][=-/?.>,<"; 
	var len = s.length;
   //Validate the user name
    if ( isCharsInBag( s, badChar))
	{
		alert(callName+"中不能含有字符 "+badChar + " !");
		myPwd.focus();
		return false;
	}
	//check user length 
	if (len<4)
	{
		alert(callName+"不能少于5个字符！");
		myPwd.focus();
		return false;
	}
	return true;
 
}
 

function check_Phone(myPhone,canBlank,callName)
{
 if(check_Blank(myPhone,false,"") && canBlank) return true;  
  var r = new RegExp("^(([0-9]{4}-)?[0-9]{3,5}-)?[0-9]{7,12}(-[0-9]{1,6})?$","ig");
  var s=myPhone.value;
  var checkstr,startpos=-1,endpos=0;
  while (startpos<s.length)
   {
    if (s.indexOf(",",startpos+1)>=0)     
     endpos=s.indexOf(",",startpos+1);
    else
     endpos=startpos+s.substring(startpos+1).length+2;
    tempstr=s.substring(startpos,endpos) 
    a = tempstr.match(r)
    if (a!=tempstr)
    {
          alert(callName+"不是有效的电话")
          myPhone.focus();
          myPhone.select();
          return false;
    } 
    startpos=endpos+1;    
   }
    return true;
}

function check_Email(myEmail,canBlank,callName)
{
 if(check_Blank(myEmail,false,"") && canBlank) return true;  
 var pattern="^[a-zA-Z0-9._-]+[@]{1}[a-zA-Z0-9_-]+[.]{1,5}[a-zA-Z0-9_-]+";
 if(myEmail.value.match(pattern)) {return true;}
 else
 {
          alert(callName+"不是有效的Email地址")
          myEmail.focus();
          myEmail.select();
          return false;
 }  
 return true;
}

function check_Account(myAccount,canBlank,callName)
{
 if(check_Blank(myAccount,false,"") && canBlank) return true;  
 var pattern="^[^a-zA-Z_]";
 if(myAccount.value.match(pattern)) {return true;}
 else
 {
          alert(callName+"首字符只能是字母，下划线");
          myAccount.focus();
          myAccount.select();
          return false;
 }  
 pattern="[^a-zA-Z0-9._-]";
 if(myAccount.value.match(pattern)) {return true;}
 else
 {
          alert(callName+"包含不合法字符！只能包含字母，数字，下划线，'-','.'");
          myAccount.focus();
          myAccount.select();
          return false;
 }  
 
 return true;
}

function check_Url(myUrl,canBlank,callName)
{var s_str;
 if(check_Blank(myUrl,false,"") && canBlank) return true;  
 s_str = myUrl.value;
 s_str = s_str.replace(/\bhttp\:\/\/www(\.[\w+\.\:\/\_]+)/gi, "http\:\/\/&not;¤&cedil;$1");
 s_str = s_str.replace(/\b(http\:\/\/\w+[\w+\.\:\/\_]+)/gi,"<a href=\"$1\" target=_blank>$1<\/a>");  
 s_str = s_str.replace(/\b(www\.[\w+\.\:\/\_]+)/gi, "<a href=\"http://$1\" target=_blank>$1</a>"); 
 s_str = s_str.replace(/\b(\w+@[\w+\.?]*)/gi, "<a href=\"mailto\:$1\" target=_blank>$1</a>");
 if (s_str.substring(0,8)=="<a href=")
    return true;
 else
 {
          alert(callName+"不是正确的Url");
          myUrl.focus();
          myUrl.select();
          return false;
  }  
}



//===================

function checkDate(conName) {
	return true;
}

function genURL(conName) {
	if (conName.value != '') 
	return '/public/calendar.jsp?conName='
			+conName.name
			+'&year='+conName.value.substring(0,4)
			+'&month='+conName.value.substring(5,7)
			+'&day='+conName.value.substring(8,10) ;
	else 
	return '/public/calendar.jsp?conName='
			+conName.name;
	
}

function getDate(conName)
{	if ((! checkDate(conName))) {
		alert('日期格式有误');
	}
	
	var filename = genURL(conName);//('/public/calendar.jsp?conName='+conName.name);
//	alert(filename);
	newwin=window.open(filename,
		'mincalwin', 'WIDTH=195,HEIGHT=275,RESIZABLE=yes,SCROLLBARS=no,STATUS=0');
	if (newwin != null)
	{
		if (newwin.opener == null)
			newwin.opener = self;
		newwin.focus();
	}
}

//-------------------------------
//打开新窗口
//
//
//
//-------------------------------

function openWindow(fileName,windowName,sFeatures)
{	

	if ((windowName=="") || (windowName== null)) {
	  
	  windowName = 'ceaiecwin';
	}
	if ((sFeatures =="") || (sFeatures == null)) {
	  sFeatures = 'left=0,top=0,width=800,height=600,menubar=yes,RESIZABLE=yes,SCROLLBARS=yes,STATUS=0,fullscreen=no,toolbar=yes';
	}
	newwin=window.open(fileName,windowName, sFeatures);
	if (newwin != null)
	{
		if (newwin.opener == null)
			newwin.opener = self;
		newwin.focus();
	}
    return newwin ;	
}


//-----------------------
//当检测所需提交的页面的操作，是否选中了radio中的记录
//参数： chk 页面的radio
//调用方式 ： checkRadioSelected(document.all.radio)
//返回值：true，验证通过
//        false，验证不通过，
//-----------------------	
function checkRadioSelected(chk) {
 
//如果HTML页面没有此control
				if (chk == null) 
					{
					alert('操作前先查询到所需记录');
					return false ;
					}
				else {
//有此control，如果只有一项，则不是数组，无length属性
					if (chk.length == null)
					{
						if (chk.checked ) {
					        	return true;
					        }
					}
//为数组
					else {
						for (i=0; i<chk.length; i++) 
						{
							if (chk[i].checked ) 	{
					         		return true;
						        	//break ;
						        } ;
						}
					}
					alert('操作前先选中所需记录');
					return false ;

				}
	
}

//-----------------------
//当检测所需提交的页面的操作，交货期是否正确
//参数： chk 页面的交货期描述是否正确
//正确表示为：3d,3m,3w,stk(10d)

//调用方式 ： checkRadioSelected(document.all.deliverdescribe)
//返回值：true，验证通过
//        false，验证不通过，
//-----------------------	
function checkDeliverDescribe(tempobj,callName){
//3(d|D) or 3(w|W) or 3(m|M) or (stk|STK)
 //var r = new RegExp("^(([0-9]{4}-)?[0-9]{3,5}-)?[0-9]{7,12}(-[0-9]{1,6})?$","ig");
 tempstr=tempobj.value;
 var r = new RegExp("^(([0-9]+[dDwWmM]{1})|(stk)|(STK))?$","ig");
 a = tempstr.match(r)
 if (a!=tempstr){
   alert(callName + "input Format Error");
   tempobj.focus();
   tempobj.select();
   return false;
 }
 else{
  // alert("??"); 
   //tempobj.focus();
   //tempobj.select();
   return true;
 }  
 }

//-----------------------	
//
//select的option较多时，选择比较麻烦，
//生成一个窗口，输入前面一段内容，查找
//
//
//-----------------------	

  function getInput(conName){        
	var filename = "/public/popup.jsp"+"?name="+conName.name;
	newwin=window.open(filename,
		'querywindow', 'WIDTH=275,HEIGHT=100,RESIZABLE=yes,SCROLLBARS=no,STATUS=0');
	
	if (newwin != null)
	{
		if (newwin.opener == null)
			newwin.opener = self;
	    	newwin.focus();
	}

  }
