function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
<!--
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//-->
	function newin (url)
		{
			contentWindow = window.open(url,"Panel","toolbar=no,width=625,height=505;,directories=no,status=no,scrollbars=yes,resize=no,menubar=no");
		}

<!-- Modify by Jason. Cop from /include/i_common.js -->


    var i_errfound; //for function error()

    function trim(argvalue) {
          var tmpstr = ltrim(argvalue);

          return rtrim(tmpstr);
    }

    function ltrim(argvalue) {
          while (1) {
          if (argvalue.substring(0, 1) != ' ')
              break;
              argvalue = argvalue.substring(1, argvalue.length);
      }
          return argvalue;
    }

    function rtrim(argvalue) {
          while (1) {
          if (argvalue.substring(argvalue.length - 1, argvalue.length)!= ' ')
              break;
              argvalue = argvalue.substring(0, argvalue.length - 1);
      }
          return argvalue;
    }

        function error(elem, text) {
                if (i_errfound) return;
                window.alert (text);
                elem.focus();
                i_errfound=true;
        }

        function ValidLength(item, len) {
        //true if item.length >= len
                return (item.length >= len);
        }

		 var letterInPos = makeArray(27);
 letterInPos[1] = 'A';
 letterInPos[2] = 'B';
 letterInPos[3] = 'C';
 letterInPos[4] = 'D';
 letterInPos[5] = 'E';
 letterInPos[6] = 'F';
 letterInPos[7] = 'G';
 letterInPos[8] = 'H';
 letterInPos[9] = 'I';
 letterInPos[10] = 'J';
 letterInPos[11] = 'K';
 letterInPos[12] = 'L';
 letterInPos[13] = 'M';
 letterInPos[14] = 'N';
 letterInPos[15] = 'O';
 letterInPos[16] = 'P';
 letterInPos[17] = 'Q';
 letterInPos[18] = 'R';
 letterInPos[19] = 'S';
 letterInPos[20] = 'T';
 letterInPos[21] = 'U';
 letterInPos[22] = 'V';
 letterInPos[23] = 'W';
 letterInPos[24] = 'X';
 letterInPos[25] = 'Y';
 letterInPos[26] = 'Z';
 letterInPos[27] = ' ';

 function isLetter(c) {

         return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) );
 }

 function isAlphaNumericNoSpa(str){
     for (var j=0; j<str.length; j++) {
           var temp = str.charAt(j);
           if (!(isLetterOrDigit(temp)) ){
                return false;
                break;
           }
           // if j = last term, it means true - all char are ok!! Great
           if(j == str.length-1)
              return true;
    }

}
function isNumeric(str) {

        for (var j=0; j<str.length; j++) {
                var temp = str.charAt(j);
//                alert(temp);
        if (!((temp=="0") || (temp=="1") || (temp=="2") || (temp=="3") || (temp=="4") || (temp=="5") || (temp=="6") || (temp=="7") || (temp=="8") || (temp=="9"))){
                return false;
                break;
        }
        // if j = last term, it means true - all char are digits!! Great!!
        // str.length-1 since j starts from 0!
        if(j == str.length-1)
                   return true;
            }
 }


 function isSpace(c) {
          return (c == " ");
 }

 function isLetterOrDigit(c) {
        return (isLetter(c) || isNumeric(c))
 }

 function isAlphabet(str){
     for (var j=0; j<str.length; j++) {
           var temp = str.charAt(j);
           if (!(isLetter(temp)) && !(isSpace(temp))){
                return false;
                break;
           }
           // if j = last term, it means true - all char are ok!! Great
           if(j == str.length-1)
              return true;
    }

}

 function isAlphaNumeric(str){
     for (var j=0; j<str.length; j++) {
           var temp = str.charAt(j);
           if (!(isLetterOrDigit(temp)) && !(isSpace(temp))){
                return false;
                break;
           }
           // if j = last term, it means true - all char are ok!! Great
           if(j == str.length-1)
              return true;
    }

}

 function checkChar(c) {
         var i;
           for (i = 1; i <= 27; i++) {
                      if (letterInPos[i] == c)
                         return i;
         }
 }
        function gjfTxtOnChg(frmname, domain, dependent, errtext)        {
        //avoid chg in visible text by chk value against hidden field value
                i_errfound= false;
                var oValue = eval('document.' + frmname + '.' + dependent).value;
                var nValue = eval('document.' + frmname + '.' + domain).value;
                if (parseFloat(oValue) != parseFloat(nValue))        {
                        error(eval('document.' + frmname + '.' + domain), errtext);
                        eval('document.' + frmname + '.' + domain).value = oValue;
                };
        }


        function gjfCeilTxtOnChg(frmname, domain, dependent, errtext)        {
        //avoid chg in visible text by chk value against hidden field value
                i_errfound= false;
                var oValue = gjfCeilingFloat(eval('document.' + frmname + '.' + dependent).value, 1);
                var nValue = eval('document.' + frmname + '.' + domain).value;
                if (parseFloat(oValue) != parseFloat(nValue))        {
                        error(eval('document.' + frmname + '.' + domain), errtext);
                        eval('document.' + frmname + '.' + domain).value = oValue;
                };
        }

        function gjfRndTxtOnChg(frmname, domain, dependent, errtext)        {
                //avoid chg in visible text by chk value against hidden field value
                i_errfound= false;
                var oValue = gjfRoundFloat(eval('document.' + frmname + '.' + dependent).value, 2);
                var nValue = eval('document.' + frmname + '.' + domain).value;
                if (parseFloat(oValue) != parseFloat(nValue))        {
                        error(eval('document.' + frmname + '.' + domain), errtext);
                        eval('document.' + frmname + '.' + domain).value = oValue;
                };
        }


        function gjfValidEmail(item) {
                var alertEmailAddrNotEntered         ="Sorry, you must enter your email address.";
                var alertInvalidCharFoundInEmailAddr ="Sorry, this email address seems wrong.";
                var alertAtSignMissingInEmailAddr    ="Sorry, this email address seems wrong.";
                var alertBlankSpaceFoundInEmailAddr  ="Sorry, this email address seems wrong.";
                var invalidEmailChars = "\"|&;<>!*\\";

                email = item;

          if (! gjfValidateAsciiData (email)) {
            //alert(alertInvalidCharFoundInEmailAddr);
            return false;
          }

          var invalidChars = invalidEmailChars;
          for (var i = 0; i < invalidChars.length; i++) {
            if (email.indexOf(invalidChars.charAt(i)) != -1) {
              //alert(alertInvalidCharFoundInEmailAddr);
              return false;
            }
          }

           if (email == ""){
            //alert(alertEmailAddrNotEntered);
            return false;
          }
          if (email.indexOf("@") == -1){
            //alert(alertAtSignMissingInEmailAddr);
            return false;
          }

          if (email.indexOf(" ") != -1){
            //alert(alertBlankSpaceFoundInEmailAddr);
            return false;
          }

          if (window.RegExp) {
            var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
            var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";

            var reg1 = new RegExp (reg1str);
            var reg2 = new RegExp (reg2str);

            if (reg1.test(email) || !reg2.test(email)) {
              //alert(alertInvalidCharFoundInEmailAddr);
              return false;
            }
          }
          return true;
        }

        function gjfValidateAsciiData(urstr) {
        //use by gjfValidEmail
          var i;
          var result;

          for (i=0; i<urstr.length; i++) {
            if ((urstr.charAt(i) < " ") || (urstr.charAt(i) > "~"))
              return false;
          }
          return true;
        }
function makeArray(n) {
        for (var i = 1; i <= n; i++) {
                      this[i] = 0
           }
           return this
 }
function IsNum(str) {
//chk pos numeric whole numbers
        for (var j=0; j<str.length; j++) {
                var temp = str.charAt(j);
                if (!((temp=="0") || (temp=="1") || (temp=="2") || (temp=="3") || (temp=="4") || (temp=="5") || (temp=="6") || (temp=="7") || (temp=="8") || (temp=="9") )){
                        return false;
                        break;
                }
        }
        return true;
}

function IsFloat(str) {
//chk pos numeric numbers (float)
    var count=0;
        for (var j=0; j<str.length; j++) {
                var temp = str.charAt(j);
                if (!((temp==".") || (temp=="0") || (temp=="1") || (temp=="2") || (temp=="3") || (temp=="4") || (temp=="5") || (temp=="6") || (temp=="7") || (temp=="8") || (temp=="9") )){
                        return false;
                        break;
                }
                if (temp==".")
                   count+=1;

        }
        if (str.charAt(str.length-1) == ".")
           return false;
        return (count<=1);
}

var daysOfMonth = new Object();
daysOfMonth ['Jan'] = daysOfMonth ['January']  = daysOfMonth [1]  = 31;
daysOfMonth ['Feb'] = daysOfMonth ['February']  =  daysOfMonth [2] = 28;
daysOfMonth ['Mar'] = daysOfMonth ['March']  = daysOfMonth [3] = 31;
daysOfMonth ['Apr'] = daysOfMonth ['April']  = daysOfMonth [4] = 30;
daysOfMonth ['May'] = daysOfMonth ['May']  = daysOfMonth [5] = 31;
daysOfMonth ['Jun'] = daysOfMonth ['June']  = daysOfMonth [6] = 30;
daysOfMonth ['Jul'] = daysOfMonth ['July']  = daysOfMonth [7] = 31;
daysOfMonth ['Aug'] = daysOfMonth ['August']  = daysOfMonth [8] = 31;
daysOfMonth ['Sep'] = daysOfMonth ['September'] = daysOfMonth [9] = 30;
daysOfMonth ['Oct'] = daysOfMonth ['October']  = daysOfMonth [10] = 31;
daysOfMonth ['Nov'] = daysOfMonth ['November']  = daysOfMonth [11] = 30;
daysOfMonth ['Dec'] = daysOfMonth ['December']  = daysOfMonth [12] = 31;

//-----------------------------------------------------------------------------------------
// Validate the date when the inputs are from the Textfields
// (Where the syear, smonth, sday are in document.form_name.field_name.value !!)
//-----------------------------------------------------------------------------------------
function validTextDate(syear, smonth, sday) {

        var year = parseInt(syear,10);
        var month = parseInt(smonth,10);
        var day = parseInt(sday,10);

        return validDate(year, month, day);

}

//-----------------------------------------------------------------------------------------
// Validate the date (Generic function)
// (Where the syear, smonth, sday are in values !!)
//-----------------------------------------------------------------------------------------
function validDate(syear, smonth, sday) {

        var year = syear;
        var month = smonth;
        var day = sday;

        if (month == 0)
                return false;
        if (day == 0)
                return false;
        if (year == 0)
                return false;

        if (month < 1 || month > 12)
                return false;
        if (day < 1)
                return false;
        if (month == 2 && isLeapYear(year))
                var dayLimit = 29;
        else
                var dayLimit = daysOfMonth[month];
        if (day > dayLimit)
                return false;


        return true;

}

//-----------------------------------------------------------------------------------------
// Check for Expiry date of Credit Card
// Syntax: validExpiry(document.regform.MonthExpiry, document.regform.YearExpiry)
//-----------------------------------------------------------------------------------------
function validExpiryDate(smonth, syear, thisyear, thismonth) {

//	var thisyear = <%=Year(Date)%>;
//	var thismonth = <%=Month(Date)%>;
	
//    thisyear = 2000;
//    thismonth = 8;

        monthIndex = smonth.selectedIndex;
        monthval = smonth.options[monthIndex].value;
    testmonth = parseInt(monthval,10);

        yearIndex = syear.selectedIndex;
    yearval = syear.options[yearIndex].value;
    testyear = parseInt(yearval,10);

    if (testyear == 0)
            return false;
        if (testmonth == 0)
                return false;

    if (thisyear < testyear)
                return true;
    else if (thismonth > testmonth)
        return false;
    else if (thismonth <= testmonth)
        return true;
}

//-----------------------------------------------------------------------------------------
// Check for leap year
//-----------------------------------------------------------------------------------------
function isLeapYear(y) {
        return (y % 4 == 0  && (y % 400 == 0 || y % 100 != 0))
}

//-----------------------------------------------------------------------------------------
// Validate Credit Card number
// validCreditCard(document.regform.CardType, document.regform.CardNo)
//-----------------------------------------------------------------------------------------

// non-digit characters which are allowed in credit card numbers
var creditCardDelimiters = "- "

// Removes all characters which appear in string bag from string s.

function stripCharsInBag (s, bag) {
    var i;
    var returnString = "";

    // Search through string's characters one by one.
    // If character is not in bag, append to 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 isCreditCard(st) {

  // Encoding only works on cards with less than 19 digits
  if (st.length > 19)
    return (false);

  sum = 0; mul = 1; l = st.length;
  for (i = 0; i < l; i++) {
    digit = st.substring(l-i-1,l-i);
    tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }

  if ((sum % 10) == 0)
    return (true);
  else
    return (false);

} // END FUNCTION isCreditCard()

function isVisa(cc) {

  if (((cc.length == 16) || (cc.length == 13)) &&
      (cc.substring(0,1) == 4))
    return isCreditCard(cc);
  return false;
}  // END FUNCTION isVisa()

function isMasterCard(cc) {

  var firstdig = cc.substring(0,1);
  var seconddig = cc.substring(1,2);
  if ((cc.length == 16) && (firstdig == 5) &&
      ((seconddig >= 1) && (seconddig <= 5)))
    return isCreditCard(cc);
  return false;

} // END FUNCTION isMasterCard()

function isAmericanExpress(cc) {

  var firstdig = cc.substring(0,1);
  var seconddig = cc.substring(1,2);
  if ((cc.length == 15) && (firstdig == 3) && ((seconddig == 4) || (seconddig == 7)))
    return isCreditCard(cc);
  return false;

} // END FUNCTION isAmericanExpress()

function validfulldate(testdate)
{

        if (testdate.length != 10) {
                return false;
        }
        if (!((testdate.charAt(2) == "/") && (testdate.charAt(5) == "/")))        {
                return false;
        }
        else        {
                var datearray = testdate.split("/");
                if ((!IsNum(datearray[2])) || (!IsNum(datearray[1])) || (!IsNum(datearray[0])))        {
                        return false;
                };
                return validDate(parseInt(datearray[2],10),parseInt(datearray[1],10),parseInt(datearray[0],10));				
        }
        return true;
}

        function gjfRepeat(chars, NoOfOccurence)        {
                var tmpString = '';

                for (var i=0; i < NoOfOccurence; i ++)        {
                        tmpString = tmpString + chars
                }
                return tmpString;
        }

        function gjfCeilingFloat(objvalue, Place)        {
        //ceiling the float up to the value of Place
                var power = Math.pow(10, Place);
                var tmp = objvalue * power;
                var intPart = parseInt(tmp, 10);
                var result;

                if (tmp != intPart)        {
                        intPart ++;
                }
                result = intPart/power;
                return result;
        }
   
		function gjfRoundFloat(objvalue, Place)	{
		//round the objvalue by the value of Place
			var power = Math.pow(10, Place);
			var neg = false;
			if (objvalue < 0)	{
				neg = true;
				objvalue = objvalue * -1;
			};
			var tmp = objvalue * power;
			var intPart = parseInt(tmp, 10);
			var result;
			var tmp2 = (tmp - intPart) * 10;

			if (tmp2 >= 5)	{
				intPart ++;
			}
			
			result = intPart / power;	
			if (neg)	{
				result = result * -1;
			};

			return result;
		}


        function gjfNewCeilingFloat(objvalue, Place)        {
// set the -ve input to +ve, ceiling it and then change it to be -ve
                var IsNeg = false
                if (objvalue < 0)
                {
                        IsNeg = true;
                        objvalue *= -1;
                }
                var power = Math.pow(10, Place);
                var tmp = objvalue * power;
                var intPart = parseInt(tmp, 10);
                var result;

                if (tmp != intPart)        {
                        intPart ++;
                }
                result = intPart/power;

                if (IsNeg == true)
                {
                        result *= -1;
                }

                return result;
        }

        function gjsChkDateNotOverToday        (Today, TargetDate)        {
                //if pass date > today, then return false
                //i_errfound = false;

                var dtarr = TargetDate.value.split("/");
                var TodayArr = Today.value.split("/");

                var dtTarget = new Date(parseInt(dtarr[2], 10), parseInt(dtarr[1], 10), parseInt(dtarr[0], 10));
                var dtToday = new Date(parseInt(TodayArr[2], 10), parseInt(TodayArr[1], 10), parseInt(TodayArr[0], 10));
                if (dtTarget > dtToday)        {
                        return false;
                }
                return true;
        }


        function gjsChkDateNotOverToday2        (Today, TargetDate)        {
                //if pass date > today, then return false

                var dtarr = TargetDate.value.split("/");
                var TodayArr = Today.value.split("/");

                var dtTarget = new Date(parseInt(dtarr[2], 10), parseInt(dtarr[1], 10), parseInt(dtarr[0], 10));
                var dtToday = new Date(parseInt(TodayArr[2], 10), parseInt(TodayArr[1], 10), parseInt(TodayArr[0], 10));
                if (dtTarget >= dtToday)        {
                        return false;
                }
                return true;
        }

        function gjsChkDateOverToday        (Today, TargetDate)        {
                //if pass date > today, then return true

                var dtarr = TargetDate.value.split("/");
                var TodayArr = Today.value.split("/");

                var dtTarget = new Date(parseInt(dtarr[2], 10), parseInt(dtarr[1], 10), parseInt(dtarr[0], 10));
                var dtToday = new Date(parseInt(TodayArr[2], 10), parseInt(TodayArr[1], 10), parseInt(TodayArr[0], 10));

                if (dtTarget < dtToday)        {
                        return false;
                }

                return true;
        }
        function gjsSearchItem        ()        {
                //if pass date > today, then return true
                window.open('../System/ItemSearch.asp','my_new_window','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width=500,height=300,left=0,top=0');
        }

        function gjsSearchVendor        ()        {
                //if pass date > today, then return true
                window.open('../System/ContactSearch.asp?checkVendor=1','my_new_window','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width=500,height=300,left=0,top=0');
        }


