var whitespace = " \t\n\r";
var dot = ".";

function stripCharsInBag (s, bag) {
	var i;
    var returnString = "";
    for (i = 0; i < s.length; i++) {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function stripWhitespace (s) {
	return stripCharsInBag (s, whitespace)
}

function trimEnds(str) {
	while (str.substring(0,1) == ' ') {
		str = str.substring(1, str.length);
	}
	while (str.substring(str.length-1, str.length) == ' ') {
		str = str.substring(0,str.length-1);
	}
	return str;
}

function checkValidEmail(theField) {
	var iEmail = "此处只允许输入一个并且有效的电子邮件地址（如：foo@bar.com）。 请重新输入。";
	var iChar = "请只输入 A-Z、a-z 或 0-9 这样的字符。@ _ - 用于公司电子邮件。";
    dot = ".";
	whitespace = " \t\n\r";
    var isValid = true;
	var fldVal = trimEnds(theField.value);
    var at1 = fldVal.indexOf("@");
    var at2 = fldVal.indexOf(dot);
    var at3 = fldVal.substring((at1+1), (at1+2)).indexOf(dot); //. after @
    var at4 = fldVal.substring(0).indexOf(dot); // starts with .
    var len = fldVal.length;
    var at5 = fldVal.substring((len-1),len).indexOf(dot); // ends with .
	var at6 = fldVal.lastIndexOf("@");
	var at7 = fldVal.substring((at1+1),len).indexOf(dot); //. anywhere after @
	var tld = fldVal.substring((fldVal.lastIndexOf(".")+1),len); //this is the TLD
	var knownDomains = "com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum";
    var hasTwoDot=false; 
    var strAfterAt=fldVal.substring(at1+1,len);    
    if (strAfterAt.length>0) {
        for (i = 0; i < strAfterAt.length; i++) {
                 var c = strAfterAt.charAt(i);
                 if (c==dot && strAfterAt.charAt(i+1)==dot)
                         hasTwoDot=true;
        }
    }       
	var invalidTLD = false;
	if ((knownDomains.indexOf(tld.toLowerCase())==-1) && (tld.length!=2)) {
		invalidTLD = true;		
	}
    var isNonAlpha = fldVal.match(/[^0-9a-zA-Z@._-]/);

	// do not question why this is like this, there is a hierarchy they want in displaying error messages based on the type of error
	if (at1 != at6) {
        alert(iEmail);
		isValid = false;
    } else if (isNonAlpha) {
        alert(iChar);
        isValid = false;
    } else if ((at1 < 1) || (at3 == 0) || (at7 == -1) || (at4==0) || (at5==0) || (hasTwoDot) || (len - at2 < 2) || invalidTLD) {
        alert(iEmail);
		isValid = false;
	}
	// yes, that's right, leave the above error flagging order as-is!!

    if (!isValid) {
        theField.value = "";
        theField.select();
        theField.focus();
    } else {
        theField.value = fldVal;
    }

    return isValid;
}

function checkValidEmailNoPrompt(theField) {
    dot = ".";
    whitespace = " \t\n\r";
    var isValid = true;
    var fldVal = trimEnds(theField);
    var at1 = fldVal.indexOf("@");
    var at2 = fldVal.indexOf(dot);
    var at3 = fldVal.substring((at1+1), (at1+2)).indexOf(dot); //. after @
    var at4 = fldVal.substring(0).indexOf(dot); // starts with .
    var len = fldVal.length;
    var at5 = fldVal.substring((len-1),len).indexOf(dot); // ends with .
    var at6 = fldVal.lastIndexOf("@");
    var at7 = fldVal.substring((at1+1),len).indexOf(dot); //. anywhere after @
    var tld = fldVal.substring((fldVal.lastIndexOf(".")+1),len); //this is the TLD
    var knownDomains = "com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum";
    var hasTwoDot=false;
    var strAfterAt=fldVal.substring(at1+1,len);
    if (strAfterAt.length>0) {
        for (i = 0; i < strAfterAt.length; i++) {
            var c = strAfterAt.charAt(i);
            if (c==dot && strAfterAt.charAt(i+1)==dot)
               hasTwoDot=true;
        }
    }
    var invalidTLD = false;
    if ((knownDomains.indexOf(tld.toLowerCase())==-1) && (tld.length!=2)) {
       invalidTLD = true;
    }
    var isNonAlpha = fldVal.match(/[^0-9a-zA-Z@._-]/);
    if (at1 != at6) {
                isValid = false;
    } else if (isNonAlpha) {
        isValid = false;
    } else if ((at1 < 1) || (at3 == 0) || (at7 == -1) || (at4==0) || (at5==0) || (hasTwoDot) || (len - at2 < 2) || invalidTLD) {
        isValid = false;
    }
    // yes, that's right, leave the above error flagging order as-is!!

    return isValid;
}

function checkForEmailError(theField) {
    dot = ".";
    whitespace = " \t\n\r";
    var errCode = 0;
    var fldVal = trimEnds(theField);
    var at1 = fldVal.indexOf("@");
    var at2 = fldVal.indexOf(dot);
    var at3 = fldVal.substring((at1+1), (at1+2)).indexOf(dot); //. after @
    var at4 = fldVal.substring(0).indexOf(dot); // starts with .
    var len = fldVal.length;
    var at5 = fldVal.substring((len-1),len).indexOf(dot); // ends with .
    var at6 = fldVal.lastIndexOf("@");
    var at7 = fldVal.substring((at1+1),len).indexOf(dot); //. anywhere after @
    var tld = fldVal.substring((fldVal.lastIndexOf(".")+1),len); //this is the TLD
    var knownDomains = "com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum";
    var hasTwoDot=false;
    var strAfterAt=fldVal.substring(at1+1,len);
    if (strAfterAt.length>0) {
        for (i = 0; i < strAfterAt.length; i++) {
            var c = strAfterAt.charAt(i);
            if (c==dot && strAfterAt.charAt(i+1)==dot)
               hasTwoDot=true;
        }
    }
    var invalidTLD = false;
    if ((knownDomains.indexOf(tld.toLowerCase())==-1) && (tld.length!=2)) {
       invalidTLD = true;
    }
    var isNonAlpha = fldVal.match(/[^0-9a-zA-Z@._-]/);
	if (isNonAlpha) {
        errCode = 2;
	} else if (at1 != at6) {
		errCode = 1;
    } else if ((at1 < 1) || (at3 == 0) || (at7 == -1) || (at4==0) || (at5==0) || (hasTwoDot) || (len - at2 < 2) || invalidTLD) {
        errCode = 1;
    }
    // yes, that's right, leave the above error flagging order as-is!!

    return errCode;
}



/* PALite Signup JS */
//this function kept to be compatible with the original PALite Signup boxes
function regpaliteUser(url,hasCodeField)
{		 
	 regpaliteUserWithForm(url,hasCodeField,document.reqpalite);
}
//this is the new function passing a form object
function regpaliteUserWithForm (url,hasCodeField,withForm)
{
   if (hasCodeField)
   {
      var emailFldVal = stripWhitespace(withForm.email.value);    	
      var codeFldVal	= stripWhitespace(withForm.code.value);    
      if (emailFldVal =="")
      {
         alert("请输入电子邮件地址");
         withForm.email.focus();  
      }
      else if( codeFldVal =="")
      {
         alert("Please Enter Code");
         withForm.code.focus();
      }
      else if(emailFldVal == "" &&  codeFldVal=="")
      {		
         withForm.reset();        		
      }
      else if (emailFldVal != "" && codeFldVal!="")
      {
         if (checkValidEmailNoPrompt(withForm.email.value)) 
         {
            withForm.action=url;
            withForm.submit();        		
         }
      } 
   }
   else if(!hasCodeField)
   {
      var emailFldVal = withForm.email.value;    				
      if (emailFldVal =="")
      {
         alert("请输入电子邮件地址");
         withForm.email.focus();
      }
      else if(emailFldVal == "输入电子邮件地址")
      {
         alert("请输入电子邮件地址");
         withForm.email.value="";
         withForm.email.focus();
      }
      else if(emailFldVal == "")
      {		
         withForm.reset();        		
      }
      else if (emailFldVal != "")
      {
         var result = checkForEmailError(withForm.email.value);
         if (result == 1)
         {
             alert("请在此处输入有效的电子邮件地址（如： foo@bar.com）。 请重新输入。");
             withForm.email.value="";
             withForm.email.focus();
         }
         else if (result == 2)
         {
             alert("请只输入 A-Z、a-z 或 0-9 这样的字符。@ _ - 用于公司电子邮件。");
             withForm.email.value="";
             withForm.email.focus();
         }
         else
         {
			if (typeof(withForm.searchQueryKeyword)=="undefined") {
				withForm.action=url;
				withForm.submit();
			} else {
				if (withForm.searchQueryKeyword.value == "") {
					alert("请输入产品关键词");
					withForm.searchQueryKeyword.focus();
				} else {
					withForm.action=url;
					withForm.submit();
				}
			}
         }
      }
	}
}

function write_blank() {
    var emailFldVal = document.reqpalite.email.value;    				
    if(emailFldVal == "Enter e-mail" || emailFldVal == "Enter e-mail address" || emailFldVal == "输入电子邮件地址"){
        document.reqpalite.email.value="";
    }
}
//Add by Dovie Chen Jun 19, 2006
function keypresssubmit(url,hasCodeField, evt)
{
	keypresssubmitWithForm(url,hasCodeField,evt,document.reqpalite);
}
function keypresssubmitWithForm(url,hasCodeField,evt,withForm)
{
	var keyCode = evt.keyCode;
	if (keyCode==13){
		regpaliteUserWithForm(url,hasCodeField,withForm);
	}
}

function pax_write_blank(){
var _48=document.pax_reqpalite.email.value;
if(_48=="Enter e-mail"||_48=="Enter e-mail address" || _48 == "Enter your email here" || _48 == "输入电子邮件地址"){
document.pax_reqpalite.email.value="";
}
}

//add below for MR17360
/* Stack up window.onload events using this function from Simon Willison - http://www.sitepoint.com/blog-post-view.php?id=171578 */
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function destroycatfish(){
	var catfish = document.getElementById('catfish');
	document.body.removeChild(catfish); /* clip catfish off the tree */
	document.getElementsByTagName('html')[0].style.padding= '0'; /* reset the padding at the bottom */
	return false;
}

function closeme(){
	var closelink = document.getElementById('closeme');
	if(closelink != null)
		closelink.onclick = destroycatfish;

}
addLoadEvent(function() {
	closeme();
});

function SetPACookie(name,value){
	var argv=SetPACookie.arguments;
	var argc=SetPACookie.arguments.length
	var expires=(argc>2) ? argv[2] : null
	var path="/"
	var domain=".globalsources.com.cn"
	var secure=(argc>5) ? argv[5] : false
	document.cookie=name + "=" +escape(value) + ((expires==null) ? "" :( ";expires=" + expires.toGMTString())) + ((path==null) ? "" :( ";path=" + path)) + ((domain==null) ? "" :( ";domain=" + domain)) +((secure==true) ? "; secure " : "")
}

function GetPACookie(name){	
	var arg=name + "=" 
	var alen=arg.length
	var clen=document.cookie.length
	var i=0,prev=0;next=0;
	var retval=false;
	while(true)	{
		next=document.cookie.indexOf("; ", prev);
		if(next<=0){
			var chkval=document.cookie.substring(prev,clen);
			var eqpos=chkval.indexOf("=", 0);
			if(eqpos>0){
				if((chkval.substring(0,eqpos+1))==arg){
					retval=true;
					break;
				}	
			}	
			break;				
		}
		if(next>0){
			var chkval=document.cookie.substring(prev,next);
			var eqpos=chkval.indexOf("=", 0);
			if(eqpos>0){
				if((chkval.substring(0,eqpos+1))==arg){
					retval=true;
					break;
				}	
			}
		}
		prev=next+2;
	}
	return retval;
}

function displayCatfishAdPA(){
	if(!GetPACookie("showCatfishAdPA")){
		document.getElementById("catfish").style.display="block";	
	}else{
		document.getElementById("footergap").style.display="none";
	}
}

function closeCatfishAdPA(){
	SetPACookie("showCatfishAdPA","yes");	
	document.getElementById("footergap").style.display="none";
	document.getElementById("catfish").style.display="none";
}
function hasSpecialChars(txtStr) {
	var regExp = /[^0-9a-zA-Z._-]/;
	if (txtStr.length>0)
		return (regExp.test(txtStr));
	else
		return false;
}

function checkValidPW(formObj,invalidDivID) {
	var retVal = true;
	if (formObj.value.length > 0) {
		hideBox(invalidDivID);
		if (hasSpecialChars(formObj.value)) {
			showBox(invalidDivID);
			retVal = false;
			//formObj.value = '';
		}
	} else {
		hideBox(invalidDivID);
	}	
	return retVal;
}
