
//-----------------------------------------------------------------------------------------
 // Global paramenters
 //-----------------------------------------------------------------------------------------
 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 !!)
 //-----------------------------------------------------------------------------------------
 function validTextDate(syear, smonth, sday) {

        var year = Number(syear.value);
        var month = Number(smonth.value);
        var day = Number(sday.value);
        if ((!Number(syear.value))||(!Number(smonth.value))||(!Number(sday.value)))
           return false;
        else
           return validDate(year, month, day);
 }
 
  //-----------------------------------------------------------------------------------------
 // Validate the date (Generic function)
 // (Where the syear, smonth, sday are in values !!)
 //-----------------------------------------------------------------------------------------
 function validDate(year, month, day) {
        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 leap year
 //-----------------------------------------------------------------------------------------
 function isLeapYear(y) {
        return (y % 4 == 0  && (y % 400 == 0 || y % 100 != 0))
 }
 
 function gjfValidfulldate(testdate)
{
// DD/MM/YYYY

        if (testdate.length != 10) {
                return false;
        }
        if (!((testdate.charAt(2) == "/") && (testdate.charAt(5) == "/")))        {
                return false;
        }
        else        {
                var datearray = testdate.split("/");
                if ((!isNumeric(datearray[2])) || (!isNumeric(datearray[1])) || (!isNumeric(datearray[0])))        {
                        return false;
                };
                return validDate(parseInt(datearray[2],10),parseInt(datearray[1],10),parseInt(datearray[0],10));				
        }
        return true;
}

function gjfValidfulldate2(testdate)
{ 

        if (testdate.length != 10) {
       
                return false;
        }
        if (!((testdate.charAt(4) == "-") && (testdate.charAt(7) == "-")))        {
                return false;
        }
        else{
        
                var datearray = testdate.split("-");
                if ((!isNumeric(datearray[2])) || (!isNumeric(datearray[1])) || (!isNumeric(datearray[0])))        {
                        return false;
                }
                return validDate(parseInt(datearray[0],10),parseInt(datearray[1],10),parseInt(datearray[2],10));				
        }
        return true;
}


 function gjfValidfulldate3(testdate)
{
// YYYY/MM/DD

        if (testdate.length != 10) {
                return false;
        }
        if (!((testdate.charAt(4) == "-") && (testdate.charAt(7) == "-")))        {
                return false;
        }
        else        {
                var datearray = testdate.split("-");
                if ((!isNumeric(datearray[2])) || (!isNumeric(datearray[1])) || (!isNumeric(datearray[0])))        {
                        return false;
                };
                return validDate(parseInt(datearray[0],10),parseInt(datearray[1],10),parseInt(datearray[2],10));				
        }
        return true;
}

function gjfValidDateMonth (testdate)
{

        if (testdate.length != 7) {
       
                return false;
        }
        if (!(testdate.charAt(4) == "-"))        {
                return false;
        }
        else{
        
                var datearray = testdate.split("-");
                if ((!isNumeric(datearray[1])) || (!isNumeric(datearray[0])))        {
                        return false;
                }
                return validDate(parseInt(datearray[0],10),parseInt(datearray[1],10),1);				
        }
        return true;
}

function gjfValidfulldatetime(testdate)
{ 

        if (testdate.length != 16) {
                return false;

        }
        if (!((testdate.charAt(4) == "-") 
			  && (testdate.charAt(7) == "-")
			  && (testdate.charAt(10) == " ")
			  && (testdate.charAt(13) == ":")
			  )){
                return false;
                
        }
        else{
				var tmparray = testdate.split(" ");
        
                var datearray = tmparray[0].split("-");
                
                if ((!isNumeric(datearray[2])) || (!isNumeric(datearray[1])) || (!isNumeric(datearray[0])))        
                        return false;
                
                
                if (validDate(parseInt(datearray[0],10),parseInt(datearray[1],10),parseInt(datearray[2],10))){
                
					var timearray = tmparray[1].split(":");
				
					if ((!isNumeric(timearray[0]) || timearray[0]>24) || (!isNumeric(timearray[1]) || timearray[1]>59))
						return false;
					else 
						return true;
                }else{
					return false;
                }
        }
        return true;
}

function gjfValidtimeHHMM(testtime)
{
    if (testtime.length != 5) {
        return false;
    }
    if (!(testtime.charAt(2) == ":")) {
        return false;
    }
    else {
        var timearray = testtime.split(":");

        if ((!isNumeric(timearray[0]) || timearray[0]>23) || (!isNumeric(timearray[1]) || timearray[1]>59))
            return false;
        else 
            return true;
    }
    return true;
}

function gjsChkDateOverToday        (Today, TargetDate)        {
                //if pass date > today, then return true

                var dtarr = TargetDate.split("/");
                var TodayArr = Today.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 removespace(st)
 {
            var result;
            result="";

            for (var x=0; x < st.length; x++)
           {
                if (st.charAt(x)!=" ")
                    {
                        result += st.charAt(x);
                    }
            }
            return result;
 }

 function error_msg(elem,text)
 {
     alert(text);
     elem.focus();
 }

 function validTime(hh1,mm1,ss1)
 {
          if ((isNumeric(hh1))&&(isNumeric(mm1))&&(isNumeric(ss1)))
        {
                    if ((hh1>23) || (mm1>59) || (ss1>59))
                             return false;
                    else
                            return true;
        }
          else
                     return false;
}


 //-----------------------------------------------------------------------------------------
 // Check only numeric 0, 1, 2,.......9
 //-----------------------------------------------------------------------------------------
 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;
            }
 }


 //-----------------------------------------------------------------------------------------
 // Check only numeric 0, 1, 2,.......9, ' ', '-'
 //-----------------------------------------------------------------------------------------
 function isTelephone(str) {

        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") || (temp==" ") || (temp=="-"))){
                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;
            }
 }

 //-----------------------------------------------------------------------------------------
 // Check for valid email
 //-----------------------------------------------------------------------------------------
 function validEmail(item) {

        if (!validLength(item,5))
                return false;
        else if ((item.indexOf('@', 0) == -1) || (item.indexOf (".", 0) == -1))
                return false;

        return true;
 }

 //-----------------------------------------------------------------------------------------
 // Check for text length of a textfield
 //-----------------------------------------------------------------------------------------
 function validLength(item, len) {
        return (item.length >= len);
 }

 function validLength2(item, len) {
     if (navigator.appName == 'Netscape'){
        return (item.length <= len);
     }
     else if (navigator.appName == 'Microsoft Internet Explorer'){
        return (item.length <= (len/2));
     }
 }

 // check numeric and some symbols
 function isDigit(str) {
        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') || (temp=='-') || (temp=='_') || (temp==',') || (temp=='(') || (temp==')') || (temp==' ') || (temp=='.') )){
                              return false;
                        break;
        }
        // if j = last term, it means true - all char are digits!! Great
        if(j == str.length-1)
                   return true;
        }
 }

  function isDigit2(str) {
        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') || (temp=='.') )){
                              return false;
                        break;
        }
        // if j = last term, it means true - all char are digits!! Great
        if(j == str.length-1)
                   return true;
        }
 }

 //display error message ('field name', 'err msg')
 function error(elem, text) {
        if (errfound) return;
                window.alert (text);
                elem.focus();
                errfound=true;
}

 function error2(text) {
        if (errfound) return;
                window.alert (text);
                errfound=true;
}

 //format the currency
 function formatCurrency_old(convertval,decplace) {
        thisval = new String(convertval);
              var valueString = thisval.toString();
              // first format the decimal
              var decimalString = (valueString.indexOf('.') >= 0) ? valueString.substring(valueString.indexOf('.')+1,valueString.length) : '';
              if (decimalString.length >= decplace) {
              // truncate the decimal place
                      decimalString = decimalString.substring(0,decplace);
              }
              else {
              // pad the decimal place
        var padding = decplace - decimalString.length;
        for (i = 1; i <= padding; i++) {
                decimalString = decimalString + '0';
        }
 }

 // then format the integer
        var integerString = (valueString.indexOf('.') >= 0) ? valueString.substring(0,valueString.indexOf('.')) : valueString;
              if (integerString.length == 0) integerString = '0';
                      return (integerString+'.'+decimalString);
              }


function formatCurrency(convertval,decplace)
{
  thisval = new String(convertval);
  var valueString = thisval.toString();
  // first format the decimal
  var decimalString = (valueString.indexOf(".") >= 0) ?
valueString.substring(valueString.indexOf(".")+1,valueString.length) :
"";
  if (decimalString.length >= decplace) {
 // truncate the decimal place
 decimalString = decimalString.substring(0,decplace);
  }
  else {
 // pad the decimal place
 var padding = decplace - decimalString.length;
 for (i = 1; i <= padding; i++) {
  decimalString = decimalString + "0";
 }
  }
  // then format the integer
  var integerString = (valueString.indexOf(".") >= 0) ?
valueString.substring(0,valueString.indexOf(".")) : valueString;
  if (integerString.length == 0) integerString = "0";
  return (integerString+"."+decimalString);
}

 //split the string
 function splitString(stringToSplit,separator){
        arrayOfStrings = stringToSplit.split(' ');
        var stringToSplit='';
        for (var i=0; i < arrayOfStrings.length; i++){
                if (i == arrayOfStrings.length-1){
                        stringToSplit = stringToSplit + arrayOfStrings[i];}
                     else {
                        stringToSplit = stringToSplit + arrayOfStrings[i] + '%20';}
                 }
        return stringToSplit;
 }

 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;
 }

 // define expires vcariable (default set as 10 years)
    var expires = new Date();
    expires.setTime(expires.getTime()+3E11);

 // setCookie function
 function setCookie(name, value, expires, path, domain, secure) {
        var curCookie = name + '=' + escape(value) +
              ((expires) ? '; expires=' + expires.toGMTString() : '') +
              ((path) ? '; path=' + path : '') +
              ((domain) ? '; domain=' + domain : '') +
              ((secure) ? '; secure' : '');
              document.cookie = curCookie;
 }
 
 // getCookie function
 function getCookie(name) {
        var dc = document.cookie;
             var prefix = name + '=';
             var begin = dc.indexOf('; ' + prefix);
             if (begin == -1) {
                begin = dc.indexOf(prefix);
                     if (begin != 0) return null;
                       }
        else
                begin += 2;
                 var end = document.cookie.indexOf(';', begin);
                     if (end == -1)
                         end = dc.length;
                        return unescape(dc.substring(begin + prefix.length, end));
 }

 //display error message ('field name', 'err msg')

 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 isAmex(a){
     if ((a.length != 15)||(a.substr(0,7) != '3771001')){
        return false;
     }
     else {
       var b = '12121212121212';
       var k, x1, x2, x3, x4, s1, c;
       s1 = 0;
       for (k=1; k<=14; k++){
           x1 = a.substr((k-1), 1);
           x2 = b.substr((k-1), 1);
           x3 = x1 * x2;
           x4 = ('00' + trim(String(x3))).substr((('00' + trim(String(x3))).length)-2, 2);
           s1 = s1 + Number(x4.substr(0, 1)) + Number(x4.substr(1, 1));
       }
       c = 10-(s1%10);
       if (c == 10) {c=0;}
          if (a.substr(14,1)!= c){
                   return false;
          }
          else {
             return true;
          }
       }
 } // END FUNCTION isAmex()

 function isAeon(cc){
     if ((cc.substring(0,8) >= 64100000) && (cc.substring(0,8) < 64110000))
         return true;
     else if ((cc.substring(0,8) >= 54173650) && (cc.substring(0,8) < 54173651))
         return true;
     else
         return false;
     }  // END FUNCTION isAeon()
     

 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){
       firstdig = cc.substring(0,1);
       seconddig = cc.substring(1,2);
       if ((cc.length == 16) && (firstdig == 5) &&
            ((seconddig >= 1) && (seconddig <= 5)))
       return isCreditCard(cc);
       return false;

       } // END FUNCTION isMasterCard()

 function makeArray(n) {
        for (var i = 1; i <= n; i++) {
                      this[i] = 0
           }
           return this
 }  
 

//var letterInPos = makeArray(27);
 var letterInPos = new Object();        // JASON modified by 2008-02-18
 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 isPassword(str){
	return (isAlphaNumericNoSpa(str) && validLength(str,6));
}

 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 HKIDCheckDigit(st) {
         var i, sum, weight, l, remainder, digit;
           if (st.length > 8)
                    return false;

           sum = 0; weight = 2; l = st.length;
           for (i = 0; i < l; i++) {
                      digit = st.substring((l-i-1),(l-i));
              if (isDigit(digit) && (i < 6))
                sum += parseInt(digit) * weight;
              else if (isLetter(digit) && (i > 5))
                 sum += (checkChar(digit.toUpperCase()) + 9) * weight;
              else
                      return false;
                      weight++;
        }

        if (weight == 9)
                      sum += 324;

           remainder = sum % 11;

           if (remainder == 0)
                      return 0;
           else if (remainder == 1)
                      return 'A';
           else
                      return (11-remainder);

 }

 function HKIDCheck(st) {
         if (st.length > 11) {
                      return false;
         }

         l = st.length;
           tmpstr = st.substring(0,l-3);
           leftbracket = st.substring(l-3,l-2);
        digit = st.substring(l-2,l-1);
           rightbracket = st.substring(l-1,l);

        // Check Case below
           if (leftbracket != '(') {
                      return false;
           } else if (rightbracket != ')') {
                      return false;
           } else if (!(isLetterOrDigit(digit))) {
                      return false;
           } else {
                      checkdigit = HKIDCheckDigit(tmpstr);
                      if (digit == checkdigit) {
                        return true;
                 } else {
                        return false;
                      }
           }
 }


function GotoURL (url)
 {
    ranval = Math.random();
    url=url+"&ranval="+ranval;
    parent.location=splitString(trim(url));
 }


 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 gjfIsFloat(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);
}
function gjfIsNotEnglishChar(c){
    return (((c > " ") && (c <= "~")) || (escape(c) == "%0D")  || (escape(c) == "%0A"));
 }
 function gjfIsEnglish(str) {
     var hasNonEnglish = false;

     for (var j=0; j<str.length; j++) {
	   var temp = str.charAt(j);
	   if (!(gjfIsNotEnglishChar(temp)) ){
	       hasNonEnglish = true;
		break;
	   }
    }

    return !hasNonEnglish;
 }
 
 // global variable
var mainWin='';

function popUpWin (url, attr_name, W, H, L, T, attr_toolbar, attr_resize, attr_scroll, attr_menubar, attr_status) {
	var J;
	var Btoolbar=Bresize=Bscroll=Bmenubar=Bstatus="";
	var NAME = attr_name || NewWindow;
	var WIDTH = W || 600;
	var HEIGHT = H || 400;
	var LEFT = L || 0;
	var TOP = T || 0;
	Btoolbar = (attr_toolbar) ? "yes" : "no";
	Bresize = (attr_resize) ? "yes" : "no";
	Bscroll = (!attr_scroll) ? "yes" : "no";
	Bmenubar = (attr_menubar) ? "yes" : "no";
	Bstatus = (attr_status) ? "yes" : "no";
	var WINFEATURE = "scrollbars=" + Bscroll + ", toolbar=" + Btoolbar +", resizable=" + Bresize + ", menubar=" + Bmenubar + ", status=" + Bstatus + ", left=" + LEFT + ",top=" + TOP;
	if (!mainWin) {
		mainWin = window.open(url, NAME, "width=" + WIDTH + ",height=" + HEIGHT + ',' + WINFEATURE);
	} else {
		if (!mainWin.closed){
			mainWin.close();
		}
		mainWin = window.open(url, NAME, "width=" + WIDTH + ",height=" + HEIGHT + ',' + WINFEATURE);;
	}
}

function isSQExisted(inValue){
	var i;
	var theChar="";
	var sqExisted = false;
	for (i=0; i<inValue.length; i++) {
		theChar = ""+inValue.charAt(i); //get char, convert to string

		if ((!isAlphaNumericNoSpa(theChar)) && (theChar!=".") && (theChar!="_") && (theChar!="-") && (theChar!="(") && (theChar!=")")){
			sqExisted = true;
			break;
		}
				
	}
	return sqExisted;

}

function chkExtension(objValue) {
	// Only allow file extension with JPG/JPEG or GIF

    objLen = objValue.length;
    objExtStart = objValue.lastIndexOf(".");
    objExt = objValue.substring(objExtStart, objLen).toUpperCase();
    //alert (objExt);
    
    // *** To add more extension, it must be in CAPITAL form ***
	if ((objExt == ".JPG") || (objExt == ".JPEG") || (objExt == ".GIF"))  
		return true;
	else 
		return false;
}


function isSpecChr(inValue){
	var i;
	var theChar="";
	var sqExisted = false;
	for (i=0; i<inValue.length; i++) {
		theChar = ""+inValue.charAt(i); //get char, convert to string

		if ((theChar==",") || (theChar==";") || (theChar=="<")|| (theChar==">")|| (theChar=="\"")){
			sqExisted = true;
			break;
		}
				
	}
	return sqExisted;

}
function CheckFormDate(inDate){
	//format as dd/mm/yyyy
	var dd = inDate[0].value;
	var mm = inDate[1].value;
	var yy = inDate[2].value;
	
	dateStr= dd + "/"+mm +"/" +yy;
	//alert(dateStr);
	if (!gjfValidfulldate(dateStr)){
//			alert("Please enter the date in the right format. (dd/mm/yyyy)");	    			     	        
			return false;
	}else{
			return true;
	}					
}


function BuildDate(inDate){
	//format as dd/mm/yyyy
	var dd = inDate[0].value;
	var mm = inDate[1].value;
	var yy = inDate[2].value;
	return  dd + "/"+mm +"/" +yy;
}

//-----------------------------------------------------------------------------------------
// special check for valid email
//-----------------------------------------------------------------------------------------
 function sValidEmail(item) {

        if (!validLength(item,1))
                return false;
        else if ((item.indexOf('@', 0) == -1) )
                return false;

        return true;
 }
 
//----------------------------------------------------------------------------------------
// a check date function and a build day function for yyyy-mm-dd
//-----------------------------------------------------------------------------------------
 function CheckFormDate2(inDate){
	//format as dd/mm/yyyy
	var dd = inDate[2].value;
	var mm = inDate[1].value;
	var yy = inDate[0].value;
	
	dateStr= dd + "/"+mm +"/" +yy;
	//alert(dateStr);
	if (!gjfValidfulldate(dateStr)){
			return false;
	}else{
			return true;
	}					
}


function BuildDate2(inDate){
	//format as dd/mm/yyyy
	var dd = inDate[2].value;
	var mm = inDate[1].value;
	var yy = inDate[0].value;
	return  yy + "/"+mm +"/" +dd;
}

function newin (url){
	contentWindow = window.open(url,"Panel","toolbar=no,width=480,height=480;,directories=no,status=no,scrollbars=yes,resize=no,menubar=no;");
}

function newPic (url){
	var W = 390;
	var H = 380;
	var P = "directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no";
	
	contentWindow = window.open(url,"Panel","toolbar=no,width="+W+",height="+H+";,"+P);
}

function newCustomWindow (url,Width,Height){
	var W = Width || 500;
	var H = Height || 450;
	var P = "directories=no,status=no,scrollbars=yes,resizable=yes,menubar=yes";
	
	contentWindow = window.open(url,"Printable","toolbar=no,width="+W+",height="+H+";,"+P);
}

function chkPicExtension(objValue) {
	// Only allow file extension with JPG/JPEG or GIF

    objLen = objValue.length;
    objExtStart = objValue.lastIndexOf(".");
    objExt = objValue.substring(objExtStart, objLen).toUpperCase();
    //alert (objExt);
    
    // *** To add more extension, it must be in CAPITAL form ***
	if ((objExt == ".PDF") 
		|| (objExt == ".JPEG") 
		|| (objExt == ".JPG") 
		|| (objExt == ".PNG") 
		|| (objExt == ".BMP") 
		|| (objExt == ".GIF"))  
		return true;
	else 
		return false;
}
function chkFileExtension(objValue) {
	// Only allow file extension with JPG/JPEG or GIF

    objLen = objValue.length;
    objExtStart = objValue.lastIndexOf(".");
    objExt = objValue.substring(objExtStart, objLen).toUpperCase();
    //alert (objExt);
    
    // *** To add more extension, it must be in CAPITAL form ***
	if ((objExt == ".PDF") 
//		|| (objExt == ".XLS") 
//		|| (objExt == ".DOC") 
//		|| (objExt == ".PDF") 
//		|| (objExt == ".PPT") 
//		|| (objExt == ".TXT")
		)  
		return true;
	else 
		return false;
}  

function CompareToday(testdate){
	theToday = new Date();	
	datearray = testdate.split("-");
    targetDate = new Date(parseInt(datearray[0],10),parseInt(datearray[1]-1,10),parseInt(datearray[2],10));	    
    //alert(targetDate);
    if (theToday > targetDate) {
		return 0;
    }else{
		return 1;
    }
	
}

function Compare2Days(testdate1, testdate2){
	//testdate1 should be the earlier date
	datearray1 = testdate1.split("-");
	datearray2 = testdate2.split("-");
    targetDate1 = new Date(parseInt(datearray1[0],10),parseInt(datearray1[1]-1,10),parseInt(datearray1[2],10));
    targetDate2 = new Date(parseInt(datearray2[0],10),parseInt(datearray2[1]-1,10),parseInt(datearray2[2],10));	    	    
    
   
    if ((targetDate1 - targetDate2) == 0) {
		return 0;
	}else if ((targetDate1 - targetDate2)> 0) {	
		return -1;
    }else{
		return 1;
    }
	
}

function Compare2FullDays(testdate1, testdate2){
	//testdate1 should be the earlier date
var tmparray1 = testdate1.split(" ");
var datearray1 = tmparray1[0].split("-");
var timearray1 = tmparray1[1].split(":");
targetDate1 = new Date(parseInt(datearray1[0],10) , parseInt(datearray1[1],10) , parseInt(datearray1[2],10), parseInt(timearray1[0],10), parseInt(timearray1[1],10), 0);
var tmparray2 = testdate2.split(" ");
var datearray2 = tmparray2[0].split("-");
var timearray2 = tmparray2[1].split(":");
targetDate2 = new Date(parseInt(datearray2[0],10) , parseInt(datearray2[1],10) , parseInt(datearray2[2],10), parseInt(timearray2[0],10), parseInt(timearray2[1],10), 0);
   
    if ((targetDate1 - targetDate2) == 0) {
		return 0;
	}else if ((targetDate1 - targetDate2)> 0) {	
		return -1;
    }else{
		return 1;
    }
	
}

function packZero(inValue, num) {
	outValue = inValue + '';

	for (i=outValue.length;i<num;i++) {
		outValue = '0' + outValue;
	}

	return outValue;
}
 
 
//---------- pop-up label for calendar ----------//

var TimerID;

function doSomething(lay) {
	//MM_showHideLayers('layer1','','hide','layer2','','hide','layer3','','hide','layer4','','hide','layer5','','hide','layer6','','hide','layer7','','hide','layer8','','hide','layer9','','hide','layer10','','hide','layer11','','hide','layer12','','hide','layer13','','hide','layer14','','hide','layer15','','hide','layer16','','hide','layer17','','hide','layer18','','hide','layer19','','hide','layer20','','hide','layer21','','hide','layer22','','hide');
	MM_showHideLayers('elabel','','hide');

	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.screenX;
		posy = e.screenY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	// posx and posy contain the mouse position relative to the document
	// Do something with this information
	
	document.getElementById(lay).style.left = posx;
	document.getElementById(lay).style.top = posy;

	
	resettimer();
	
	MM_showHideLayers(lay,'','show');
	
}

function delayhide(gotohide){
	TimerID=setTimeout('MM_showHideLayers(\''+ gotohide +'\',\'\',\'hide\')',500);
}

function resettimer(){
	clearTimeout(TimerID);
}

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_showHideLayers() { //v3.0
	var i,p,v,obj,args=MM_showHideLayers.arguments;
	for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
	if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}


//---------- new left navigation bar ----------//
var menuids=["lmenu"] //Enter id(s) of SuckerTree UL menus, separated by commas

function buildsubmenus(){
for (var i=0; i<menuids.length; i++){
  var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
    for (var t=0; t<ultags.length; t++){
    //ultags[t].parentNode.getElementsByTagName("a")[0].className="subfolderstyle"
		if (ultags[t].parentNode.parentNode.id==menuids[i]) //if this is a first level submenu
			ultags[t].style.left=ultags[t].parentNode.offsetWidth+"px" //dynamically position first level submenus to be width of main menu item
		else //else if this is a sub level submenu (ul)
		  ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
    ultags[t].parentNode.onmouseover=function(){
    this.getElementsByTagName("ul")[0].style.display="block"
    }
    ultags[t].parentNode.onmouseout=function(){
    this.getElementsByTagName("ul")[0].style.display="none"
    }
    }
		for (var t=ultags.length-1; t>-1; t--){ //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
		ultags[t].style.visibility="visible"
		ultags[t].style.display="none"
		}
  }
}

if (window.addEventListener)
window.addEventListener("load", buildsubmenus, false)
else if (window.attachEvent)
window.attachEvent("onload", buildsubmenus)
