/*=================================================================*\
|* Library Name  : Main JavaScript Library                         *|
|* Programmer    : Foong Chee Mun                                  *|
|* Version       : 1.0                                             *|
|* Creation Date : 8 November 2000                                 *|
|* Last Modified : 8 Novemver 2000                                 *|
\*=================================================================*/

/*******************************************************************\ 
|* Function to exclude the Non-Character (\t \s \n)                *|
|* from the text pass in                                           *|
\*******************************************************************/ 
function trim ( anyText ) {
  anyText = anyText.replace(/^(\s+)/gi, "");
  anyText = anyText.replace(/(\s+)$/gi, "");
  return anyText;
}


/*******************************************************************\ 
|* Function to link the page to other page                         *|
\*******************************************************************/
function go ( url ) {
  location.href = url;
}


/*******************************************************************\ 
|* Function to go back to the previous page                        *|
\*******************************************************************/
function back ( whichpg ) {
  if (!whichpg) whichpg = -1;
  history.go(whichpg);
}

/*******************************************************************\
|* Usage: check_field(Field, Expected Format, Required,            *|
|*                    Description, Max Length)                     *|
|* Expected Format :                                               *|
|*   E  = Email                                                    *|
|*   N  = Number (Non-Decimal)                                     *|
|*   R  = Real (Decimal Integer)                                   *|
|*   U  = URL                                                      *|
|* Required    : 0 = No, 1 = Yes                                   *| 
|* Description : Description of field (Only if field is required)  *|
|* Max Length  : Maximum data length (0 = Infinite)                *|
\*******************************************************************/ 
function check_field ( value , criteria , need , fieldname , maxlength ) {  
  
  var value = trim(value);  
  
  // No data entered for required field
  if (parseInt(need) == 1 && !value) {
    alert("Please enter a value in "+fieldname);
    return false;
  }  
  
  if (parseInt(need) == 0 && !value)    
    return true;  
  
  // Field data too long
  if (parseInt(value.length) > maxlength ) {
    alert("Invalid length of "+fieldname);
    return false;
  }  
  
  //Email Validation
  if (criteria == "E") {
    if(!check_email( value )) {
      alert("Invalid Email Address of "+fieldname);
      return false;
    }  
  }   
  
  //Number Validation
  if (criteria == "N") {
    if(!check_number( value )) {
      alert("Invalid Number of "+fieldname);      
      return false;
    }  
  }  
  
  //Real (Float/Double)  Validation
  if (criteria == "R") {
    if (!check_real( value )) {
      alert("Invalid Real number of "+fieldname);
      return false;
    }  
  }  
  
  //Url Validation
  if (criteria == "U") {
    if(!check_url( value )) {
      //alert("Invalid url of "+fieldname);       
      alert(fieldname+' cannot contain characters like space, backslash( \\ ), asterisk( * ), less-than( < ), greater-than( > ), double-quote( " ), and vertical bar( | )');
      return false;
    }  
  }      
  
  //Doamin Validation
  if (criteria == "D") {
    if(!check_domain( value )) {
      alert("Invalid domain of "+fieldname);             
      return false;
    }  
  }      
  
  //SubDomain Validation
  if (criteria == "S") {
    if(!check_subdomain( value )) {
      alert("Invalid sub domain of "+fieldname);             
      return false;
    }  
  }      
  return true;
}  


/*******************************************************************\ 
|* Function Used to check the validation of email address          *|
\*******************************************************************/
function check_email( email ) {
  var patt = /^([a-zA-Z0-9\_\^\.\-]+)@([a-zA-Z0-9\-]+)(\.([a-zA-Z0-9\-]+)){1,}$/;
  return patt.test( email );    
}


/*******************************************************************\ 
|* Function used to check the validation of any text contains ONLY *|
|* alphanumeric characters [ 0-9 A-Z a-z _ ]                       *|
|* Normally used for checking Login Name and Password              *|
\*******************************************************************/
function check_alphanum( word, startwith, endwith) {
  if( ! startwith ) startwith = "";
  if( ! endwith )   endwith   = "";
    
  var patt = /^$startwith(\w+)$endwith$/;
  return patt.match( trim(word));
}


/*******************************************************************\ 
|* Function used to check the validation of any numbers            *|
|* Number normally is Integer from 0-9 ONLY                        *|
\*******************************************************************/
function check_number( number ) {
  var patt = /^(\d+)$/;
  return patt.test( number );    
}  


/*******************************************************************\ 
|* Function used to check the validation of any real (float/double *|
|* Real normally is the combination of numbers from                *|
|* 0-9 but combines with decimal point (eg 11.23)                  *|
\*******************************************************************/
function check_real( real ) {  
  var patt = /^(\d+)\.(\d+)$/;    
  return patt.test( real );    
}  


/*******************************************************************\ 
|* Function used to check the validation of any url                *|
|* eg. Http://www.ezernet.com OR                                   *|
|* www.ezernet.com                                                 *|
\*******************************************************************/
function check_url( url ) {    
  url = url.replace(/^http:\/\//, "");
  url = url.replace(/^http:\//, "");
  url = url.replace(/^http:/, "");
  //url = url.replace(/^http/, "");  
  //var patt = /^(\w+)(\.(\w+)[ ,':;=/\[\]-_&?^%$#@!~`]{0,}){1,}$/;    
  var patt = /[ \\*<>\"\|]/;
  return !patt.test( url );
}  


/*******************************************************************\ 
|* Function used to check the special html characters              *|
|* to sepcial code                                                 *|
|* eg. " to &quot; > to &gt; < to &lt;                             *|
\*******************************************************************/
function htmlspecialchars( chars ) {
  chars = chars.replace(/"/g, "&quot;");  
  chars = chars.replace(/</g, "&lt;");  
  chars = chars.replace(/>/g, "&gt;");  
  return chars;
}  


function month ( whichmonth, format ) {   
  
  switch (parseInt(whichmonth)) {
    case 1 : return (format == 'L')? "January"   : "Jan"; break; 
    case 2 : return (format == 'L')? "February"  : "Feb"; break; 
    case 3 : return (format == 'L')? "March"     : "Mar"; break; 
    case 4 : return (format == 'L')? "April"     : "Apr"; break; 
    case 5 : return (format == 'L')? "May"       : "May"; break; 
    case 6 : return (format == 'L')? "June"      : "Jun"; break; 
    case 7 : return (format == 'L')? "July"      : "Jul"; break; 
    case 8 : return (format == 'L')? "August"    : "Aug"; break; 
    case 9 : return (format == 'L')? "September" : "Sep"; break; 
    case 10: return (format == 'L')? "October"   : "Oct"; break; 
    case 11: return (format == 'L')? "November"  : "Nov"; break; 
    case 12: return (format == 'L')? "December"  : "Dec"; break; 
    default: return "Unknown Month";
  }    
}  

function check_domain( domain ) {
  var patt = /^(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
  return patt.test( domain );
}    

function check_subdomain( sdomain ) {
  var patt = /^[a-zA-Z0-9\-]+$/;
  return patt.test( sdomain );  
}    

function check_text( value ) {  	
  return value.replace(/\W+/g, "");
}  
  
function check_email2( email ) {      
  var patt = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;    
  return patt.test( email );
}    

function format_decimal ( value ) {      
  aa = value.toString().split(/\./);  
  if(aa.length == 1) { return aa[0].concat(".00"); }
  if(aa[0] == '') aa[0] = "0";
  aa1 = aa[0].replace(/[^\-0-9]/ig, "");
  aa2 = aa[1].replace(/\D+/ig, "");
  
  if (aa1 == '') { aa1 = 0; }
  if (aa2 == '') { aa2 = "00"; }
  if (aa2.length == 1) { aa2 = aa2.concat("0"); }
  if (aa2.length > 2) { aa2 = aa2.substring(0, 2); }  
  
  return aa1.concat(".")+aa2;
}  