//init array of error code and array of error message
var arrErrorCode = new Array();
var arrErrorMsg = new Array();

arrErrorCode[0] = "001";
arrErrorCode[1] = "002";
arrErrorCode[2] = "003";
arrErrorCode[3] = "004";
arrErrorCode[4] = "005";
arrErrorCode[5] = "006";
arrErrorCode[6] = "007";
arrErrorCode[7] = "008";
arrErrorCode[8] = "009";
arrErrorCode[9] = "010";
arrErrorCode[10] = "011";
arrErrorCode[11] = "012";
arrErrorCode[12] = "013";

arrErrorMsg[0] = "Please enter xxx0";
arrErrorMsg[1] = "xxx1 is limited in maxlen characters";
arrErrorMsg[2] = "xxx2 must be '.gif','.jpg','.png'.";
arrErrorMsg[3] = "Input xxx3 invalid";
arrErrorMsg[4] = "Please check options";
arrErrorMsg[5] = "Retype password and password not the same";
arrErrorMsg[6] = "Are you sure to delete xxx4?";
arrErrorMsg[7] = "xxx5 and xxx6 not regular";
arrErrorMsg[8] = "Please enter xxx7 or xxx8";
arrErrorMsg[9] = "Please check sentiment or photo box and enter data for it";
arrErrorMsg[10] = "Card out of date for using";
arrErrorMsg[11] = "Card invalid for charging";
arrErrorMsg[12] = "Are you sure to change status";
//end init

/**
 * set onfocus if text string equal 'Search'
 * @param - field
 * @return - string null
 * **/
function SearchOnFocus(field, sValue){
  if(field.value==sValue)
    field.value = '';
}

/**
 * if text search is null then set text equal 'Search'
 * @param - field
 * @return - string 'Search'
 * **/
function SearchOnBlur(field, sValue){
  if(field.value=='')
    field.value=sValue;
}

/**
  * Cut the spaces at the left of a string
  * @param - sStr to be trimmed
  * @return - trimmed string
  * **/
function LTrim(sStr){
  while (sStr.charCodeAt(0) <= 32)
    sStr=sStr.substr(1);
  return sStr;
}

/**
  * Cut the spaces at the rigth of a string
  * @param - sStr to be trimmed
  * @return - trimmed string
  * **/
function RTrim(sStr){
  while (sStr.charCodeAt(sStr.length - 1) <= 32)
    sStr=sStr.substr(0, sStr.length - 1);
  return sStr;
}

/**
  * Cut the spaces at the left and the rigth of a string
  * @param - sStr to be trimmed
  * @return - trimmed string
  * **/
function Trim(sStr){
  while (sStr.charCodeAt(0) <= 32)
    sStr=sStr.substr(1);
    while (sStr.charCodeAt(sStr.length - 1) <= 32)
      sStr=sStr.substr(0, sStr.length - 1);
  return sStr;
}

function isNumeric(str){
        if ((str == null) || (Trim(str).length == 0))
        return false;
    for (var i = 0, len = str.length; i < len; i++){
        var ch = str.charAt(i);
        if (isNaN(parseInt(ch)))
            return false;
    }
    return true;
}

/**
 * Check whether a string can convert to a number
 * @param - sStr to be checked
 * @param - bRequire : "true" or "false" (whether it can be emptied or not)
 * @return - 0 if invalid, -1 if null and required, else return 1
 * **/
function checkNumeric(sStr, bRequire){
    if (isNull(sStr) && (bRequire.toUpperCase() == "FALSE"))
      return 1;
    else if (isNull(sStr) && (bRequire.toUpperCase() == "TRUE"))
      return -1;
    //for (var i = 0; i < sStr.length; i++){
      //var ch = sStr.charAt(i);
      //if (isNaN(parseInt(ch)))
      if (isNaN(sStr))
        return 0;
    //}
    return 1;
}

/**
 * Check whether a character
 * @param - sStr to be checked
 * @param - bRequire : "true" or "false" (whether it can be emptied or not)
 * @return - 0 if invalid, -1 if null and required, else return 1
 * **/
function checkCharacter(sStr, bRequire){
    if (isNull(sStr) && (bRequire.toUpperCase() == "FALSE"))
      return 1;
    else if (isNull(sStr) && (bRequire.toUpperCase() == "TRUE"))
      return -1;

    for (var i = 0; i < sStr.length; i++){
      var ch = sStr.charAt(i);
      if (!isNaN(parseInt(ch)))
        return 0;
    }
    return 1;
}

/**
 * Check whether a string is null
 * @param - string to be check
 * @return - true if it's null, else it is not null
 * **/
function isNull(sStr){
    if ((sStr == null) || (Trim(sStr).length == 0))
        return true;
    else
        return false;
}

/**
 * Check whether an email address is valid
 * @param - sAddress : email address
 * @param - bRequire : "true" or "false" (whether it can be emptied or not)
 * @return - 0 if invalid, -1 if null and required, else return 1
 * **/
function checkMail(sAddress,bRequire){
    if (isNull(sAddress) && (bRequire.toUpperCase() == "FALSE"))
          return 1;
    else if (isNull(sAddress) && (bRequire.toUpperCase() == "TRUE"))
          return -1;

    pos1 = sAddress.indexOf("@");
    pos2 = sAddress.indexOf(".");
    len = sAddress.length;
    if (pos1 <= 0 || pos1 >= len || pos2 <= 0 || pos2 >= len)
          return 0;
    return 1;
}

/**
 * Check whether an image file name is valid (.gif, .png, .jpg)
 * @param - sFile : file name
 * @param - bRequire : "true" or "false" (whether it can be emptied or not)
 * @return - 0 if invalid, -1 if null and required, else return 1
 * **/
function checkImage(sFile,bRequire){
    if (isNull(sFile) && (bRequire.toUpperCase() == "FALSE"))
        return 1;
    else if (isNull(sFile) && (bRequire.toUpperCase() == "TRUE"))
        return -1;
    sFile = sFile.toUpperCase();
    iLen = sFile.length;
    iPos = sFile.lastIndexOf(".");
    sExtension = sFile.substr(iPos, iLen);
    sName = sFile.substr(0, iPos);
    if (sName.length == 0) return -2;
    if (sExtension == ".GIF" || sExtension == ".PNG" || sExtension == ".JPG")
      return 1;
    return 0;
}

/**
 * Check whether a string yyyy/mm/dd or yyyy-mm-dd is valid date or not
 * @param - sDate : date string to be check
 * @param - bRequire : "true" or "false" (whether it can be emptied or not)
 * @return - 0 if invalid, -1 if null and required, else return 1
 * **/
function checkDate(sDate,bRequire){
     var  year,month,day;
     if (isNull(sDate) && (bRequire.toUpperCase() == "FALSE"))
          return 1;
     else if (isNull(sDate) && (bRequire.toUpperCase() == "TRUE"))
          return -1;
     sDate = Trim(sDate);
     sDate = sDate.replace("-","/");
     sDate = sDate.replace("-","/");
     iPos1 = sDate.indexOf("/");
     iPos2 = sDate.lastIndexOf("/");
     iLen = sDate.length;
     if (iPos1 <= 0 || iPos1 > iLen || iPos2 <= 0 || iPos2 > iLen)
        return 0;

     day = sDate.substring(iPos2+1,sDate.length);
     month = sDate.substr(iPos1+1,iPos2-iPos1-1);
     year = sDate.substr(0,iPos1);
     if ((isNumeric(day) == false) || (isNumeric(month) == false) || (isNumeric(year) == false))
        return 0;

     day = parseInt(day,10);
     month = parseInt(month,10);
     year = parseInt(year,10);

     if (month <= 0 || month > 12 || day > 31 || day <= 0)
        return 0;

     switch(month){
             case  4:
             case  6:
             case  9:
             case 11:   if (day > 30)        return false;
                        break;
             case  2:
                        if ((year % 4) == 0){
                             if (day > 29)  return false;
                        }else{
                             if (day > 28)  return false;
                        }
                        break;
     }
     return 1;
}


/**
 * compare fromdate and todate
 * @param - sFromDate : date string to be compare
 * @param - sToDate : date string to be compare
 * @return - -1 if fromdate > todate, else return 1
 * **/

function compareDate(sFromDate,sToDate)
{
	if (sFromDate != "" && sToDate != "")
	{
	  	oFromDate = new Date(sFromDate);
		oToDate = new Date(sToDate);
		if (oFromDate > oToDate)
	    	return -1;
    	else
	    	return 1;
	}
	return 1;
}
/**
 * check max len of s string
 * @param - sStr, iMax
 * @return - true if it's over else if it's not over
 * **/
function overMaxLen(sStr, iMax){
  var iLen = sStr.length;
  if (iLen > iMax)
    return true;
  else
    return false;
}

/**
 * get error message
 * @param - sErrorCode, sFromString, sToString
 * @return - message string
 * **/
function getErrorMsg(sErrorCode, sFromString, sToString){
  var sReturn = String("");
  for (var i=1; i<=arrErrorCode.length; i++){
    if (arrErrorCode[i-1].indexOf(sErrorCode)==0){
      sReturn = arrErrorMsg[i-1].replace(sFromString, sToString);
    }
  }
  return sReturn;
}

/**
 * out put error message into the screen
 * **/
function alertErrorMsg(sErrorMsg, sFieldName){
  alert(sErrorMsg);
  sFieldName.focus();
}

/**
 * Check whether phone number
 * @param - sStr to be checked
 * @param - bRequire : "true" or "false" (whether it can be emptied or not)
 * @return - 0 if invalid, -1 if null and required, else return 1
 * **/
function checkPhoneNumber(sStr, bRequire){
    if (isNull(sStr) && (bRequire.toUpperCase() == "FALSE"))
      return 1;
    else if (isNull(sStr) && (bRequire.toUpperCase() == "TRUE"))
      return -1;
    for (var i = 0; i < sStr.length; i++){
      var ch = sStr.charCodeAt(i);
      if ((ch < 48 || ch >57) && (ch!=40) && (ch!=41) && (ch!=45) && (ch!=46))
        return 0;
    }
    return 1;

}

function openMe(url, inNew, winDef)
{
  if (url == '')
    return;
  if (typeof(inNew)=='undefined')
    inNew = 0;
  if (typeof(winDef)=='undefined')
    winDef = 'scrollbars=yes,status=yes,toolbar=yes,location=yes,menubar=yes,resizable=yes,height=300,width=400,top='.concat((screen.height - 400)/2).concat(',left=0');
  if (inNew)
    open(url, 'Advertising', winDef);
  else
    location.href = url;
}

function getIndexOfArray(arrData, sID){
        var iReturn = -1;
        for (i=0; i<=arrData.length-1; i++){
                if (arrData[i]==sID){
                        iReturn = i;
                }
        }
        return iReturn;
}

/**
* check sign selection for chekcbox or radio button
* @param - arrField, value
* **/
function optSelect(arrField,value){
  if(value=="Paypal+Gift Card"){
    for(var i=0;i<arrField.length;i++){
      if(arrField[i].value=="Paypal" || arrField[i].value=="Gift Card"){
        arrField[i].checked=true;
      }
    }
  }
  for(var i=0;i<arrField.length;i++){
    if(arrField[i].value==value){
      arrField[i].checked=true;
    }
  }
}

/**
* check sign selection for selection box
* @param - cboField, value
* **/
function cboSelect(cboField,value){
	for(var i=0;i<cboField.length;i++){
		if(cboField[i].value==value){
			cboField.selectedIndex=i;
		}
	}
}

function optSelect1(Field,value){
	if(Field.value==value){
    	Field.checked=true;
	}
}

function disable(elem, IsReset) { // elem: form element to be disabled
	if (IsReset) elem.value="";	
	elem.onfocus=elem.blur;
}
	
function enable(elem) { // elem: form element to be reenabled
	elem.onfocus=null;
}

function FillZeroForDigit(sDigit, iNum){
	var sReturn = "";
	if (sDigit.length < iNum){
		for (var i=0; i<iNum-1; i++){
			sReturn += "0";
		}
		sReturn += sDigit;
	}else{
		sReturn = sDigit;
	}
	return sReturn;
}

function UCaseField(sFieldName){
	sFieldName.value = sFieldName.value.toUpperCase();
}

function checkAll(frm, Field, FieldNameCheck){
	for (var i=0;i<frm.elements.length;i++){
		var e=frm.elements[i];
		if (e.name!=Field.name && e.name==FieldNameCheck) e.checked=Field.checked;
	}
}

function getListForDelete(frm, ChkField, act){
	var s="";
    var n=0;
	for (var i=0;i<frm.elements.length;i++){
		var e=frm.elements[i];
		if (e.name==ChkField && e.checked){
			n++;
			if (isNumeric(e.value)){
                s += e.value + ",";
             }else{
				if (e.value.indexOf("'")>0){
                	s += "'" + e.value.replace("'", "''") + "',";
				}else{
                	s += "'" + e.value + "',";
				}
             }
		}
	}
	s = s.substring(0,s.length-1);
    if (n==0){
       alert("Please check deleted information.");
    }else{
       if (confirm("Are you sure to delete the selected item(s)?.")){
		  act.value = s;
          frm.submit();
       }
    }
}

function getListChecked(frm, ChkField, act){
	var s="";
    var n=0;
	for (var i=0;i<frm.elements.length;i++){
		var e=frm.elements[i];
		if (e.name==ChkField && e.checked){
			n++;
			if (isNumeric(e.value)){
                s += e.value + ",";
             }else{
				if (e.value.indexOf("'")>0){
                	s += "'" + e.value.replace("'", "''") + "',";
				}else{
                	s += "'" + e.value + "',";
				}
             }
		}
	}
	s = s.substring(0,s.length-1);
    if (n==0){
       alert("Please check information.");
    }else{
		act.value = s;
        frm.submit();
    }
}

function getListForUpdate(frm, ChkField, check, uncheck){
	var s="";
	var s1="";
	for (var i=0;i<frm.elements.length;i++){
		var e=frm.elements[i];
		if (e.name==ChkField){
			if (isNumeric(e.value)){
				if (e.checked) s += e.value + ",";
				else s1 += e.value + ",";
             }else{
				if (e.value.indexOf("'")>0){
					if (e.checked) s += "'" + e.value.replace("'", "''") + "',";
					else s1 += "'" + e.value.replace("'", "''") + "',";
				}else{
					if (e.checked) s += "'" + e.value + "',";
					else s1 += "'" + e.value + "',";
				}
             }
		}
	}
	if (s.length!=0 || s1.length!=0){
		s = s.substring(0,s.length-1);
		s1 = s1.substring(0,s1.length-1);
		check.value = s;
		uncheck.value = s1;
	    frm.submit();
	}
}

function addbookmark()
{
	bookmarkurl="http://www.baohay.com/"
	bookmarktitle="Welcome To JavaScript Source"
	if (document.all) window.external.AddFavorite(bookmarkurl,bookmarktitle)
}
function tellfriend() 
{
 	window.open('tellfriend.php','tellfriend','toolbar=no,menubar=no,scrollbars=no,resizable=no,width=350,height=100');
}

function viewDetail(frm, id){
 	frm.id.value=id;
	frm.action = "../clients/magazine/view_magazine.php";
	frm.submit();
}

function inputNumericOnly() {
	var key = window.event.keyCode;
	var ch = String.fromCharCode(key);
	if ((isNaN(ch) || key==32) && key!=44 && key!=46) {
		window.event.keyCode = 0;
		return false;
	}
	return true;
}

function delItem(frm, id){
	if (confirm("Are you sure to delete the selected item(s)?.")){
		frm.d_id.value = id;
		frm.submit();
	}
}

function checkDate(dd,mm,yyyy,name)
{
   result=true;
   if(!isNaN(mm)&&(mm!="")&&(parseInt(mm)<12)){
   		result=false
   }
   if(!isNaN(dd)&&(dd!="")&&(parseInt(dd)<31)){
   		result=false
   }
   if(!isNaN(yyyy)&&(yyyy!="")&&(yyyy<10000))	
   {
      if( (mm=="02") && ((dd=="30")||(dd=="31")) )
         result=false;
      if( (mm=="02") && (dd=="29") && (yyyy%4>0) )
         result=false;
      if( ((mm=="04")||(mm=="06")||(mm=="09")||(mm=="11")) && (dd=="31") )
         result=false;
   }
   else
   {
      result=false;
   }
   if(result==false)
      errormsg=errormsg+"- "+name+" is invalid .\n"	
   return result;
}
function checkEmail(email){
	var at1      =  email.indexOf("@");
	var at2      =  email.lastIndexOf("@");
	var dot     =  email.indexOf(".");
	var space   =  email.indexOf(" ");
	if((at1!=-1)&&(at1!=0)&&(at2==at1)&&(dot!=-1)&&(dot>at1+1)&&(dot<email.length-1)&&(space==-1)){
		return true;
	}else{
		return false;
	}
}
