 /**
 *	
 *  This file contains some useful javascript functions for validation
 *
 * 	javascript 2.0
 *
 * 	@copyright    Copyright (c) 2006, Omnisharp Corp., Inc.
 *  @author  	  Rishindra Namdeo
 * 	@link         http://www.omniharp.com
 * 	@package      OTTM
 * 	@version      1.0.0
 *	@revision	  N/A	
 * 	@modifiedby   Rishindra
 * 	@lastmodified $Date: 2006-06-07 
 */
 
//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//1. Field must contain string value
//   function noNum(frm,ctrl,msg)

//2. Field must contain Numeric value
//   function noChar(frm,ctrl,msg)

//3. Login id field checking
//   function chkloginid(frm,ctrl,msg) 

//4. E-Mail Validation 
//   function isEmail(frm,ctrl,msg)

//5. Field must not contain splchr 
//   function isSplChr(frm,ctrl,msg)

//6. Password and Confirm Password Check
//   function isConfirms(frm,ctrl1,ctrl2)

//7. Fiels must hava specific minimum and maximum length of character
//   isProperLen(frm,ctrl,min_len,max_len,msg)

//8.1. Fields can have special character with number
//    function isCustomNum(frm,ctrl,alpha,msg)

//8.2. Fields can have special character with number
//     function isCustomAlpha(frm,ctrl,alpha,msg)

//9. Function to display date in long formate 
//   function showDate(size,color)

//10. Function to convert lowercase to uppercase  
//	  function toUpper(frm,ctrl)

//11. Field must contain a value, It may be string value or Numeric value. 
//    function isBlank(frm,ctrl,msg)
//12. funcrion for combo validation. 


//13. urlEncode for Ajax

//14. Field must contain Numeric value but noZero
//    function noZero(frm,ctrl,msg)

//15. checking the Length of a field
  // function checkLength(frm,ctrl,msg,maxLen)
//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
// This id general supporting function

  function isCharsInBag (s, bag)
  {
	var i;
	for (i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1)
		return false;
	}
	return true;
  }

//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//1. Field must contain string value

  function noNum(frm,ctrl,msg)
  {
	var val=document.forms[frm].elements[ctrl].value;
	var reg=/\d/;
        var len=val.length;
	   
	//	if(val.indexOf(' ')==0||val.lastIndexOf(' ')==(len-1))
		//{
		//	alert(msg + " field must not begin and end with space!");
		//	document.forms[frm].elements[ctrl].select();
	//		return true;
	//	}
	 if(reg.test(val))
		{
		alert("Please do not type numbers in " + msg +"!");
		document.forms[frm].elements[ctrl].select();
		return true;
		}
		else
		{
		return false;
		}
   }


//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//2. Field must contain Numeric value

    function noChar(frm,ctrl,msg)
    {
	 var val=document.forms[frm].elements[ctrl].value;
	 var len=val.length;
	
	/* if(val.indexOf(' ')==0||val.lastIndexOf(' ')==(len-1))
	  {
	  alert(msg + " field must not begin and end with space!");
  	  document.forms[frm].elements[ctrl].select();
   	  return true;
   	} 
	  else*/
	  
	  if(isNaN(val))
	  {
	  alert(msg);
	  document.forms[frm].elements[ctrl].select();
	  return true;
	}
}

//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//3. Login id field checking

   function chkloginid(frm,ctrl,msg) 
   {
	var str = document.forms[frm].elements[ctrl].value;
	if (str == "")
	{
		alert("\nPlease enter your Login Name !")
		document.forms[frm].elements[ctrl].focus();
		return true;
	}
	if((str.substring(0,1)<"a" || str.substring(0,1)>"z") && (str.substring(0,1)<"A" || str.substring(0,1)>"Z"))
	{
		alert("The Login Name should begin with an alphabetic character!");
		document.forms[frm].elements[ctrl].select();
		return true;
	}
	for (var i = 1; i < str.length; i++) 
	{
		var ch = str.substring(i, i + 1);
		if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && (ch < "0" || "9" < ch) && (ch != '_')) 
		{
			alert("\nThe Login Name only accepts letters,numbers & underscore.\n\nPlease re-enter your Login Name.");
			document.forms[frm].elements[ctrl].select();
			return true;
		}
	}
	return false;
   }


//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//4. E-Mail Validation 

   function isEmail(frm,ctrl,msg)
   {
	   
        var emailid=document.forms[frm].elements[ctrl].value;
	if(emailid !=''){
    	if((emailid.indexOf("@"))<=0  || (emailid.indexOf("."))<=0 || !isCharsInBag(emailid.substr(emailid.length-1,1),'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') || (emailid.indexOf("@.")>=0) || (emailid.indexOf(".@")>=0) || (emailid.substr(0,1)==".") || !isCharsInBag(emailid,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@._-') || ( (emailid.substr(0,1)>=0 && emailid.substr(0,1)<=9 ) )|| (emailid.substr(0,2)<0) ||!isCharsInBag(emailid.substr(0,1),'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'))
		{
		alert(msg);
		document.forms[frm].elements[ctrl].focus();
		document.forms[frm].elements[ctrl].select();
		return true;
		}
		else
		{
		return false;
    	}
     }
   }

//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//5.   Field must not contain splchr 

   function isSplChr(frm,ctrl,msg)
   {
	var val=document.forms[frm].elements[ctrl].value;
	var reg=/\W/;
	if(reg.test(val))
	{
		alert(msg);
		document.forms[frm].elements[ctrl].select();
		return true;
	}
	else
	{
		return false;
	}
   } 


//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//6.  Password and Confirm Password Check
   function isConfirms(frm,ctrl1,ctrl2,msg)
   {
	   
	var val1=document.forms[frm].elements[ctrl1].value;
	var val2=document.forms[frm].elements[ctrl2].value;
	if(val1=="")
	{
		alert("Please enter password");
		document.forms[frm].elements[ctrl1].focus();		
		return true;
	}
	if(val1!=val2)
	{
		alert(msg);
		document.forms[frm].elements[ctrl2].select();
		return true;
	}
	else
	{
		return false;
	}
   } 	


//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//7. Fiels must hava specific minimum and maximum length of character

   function isProperLen(frm,ctrl,min_len,max_len,msg)
   {
	var val=document.forms[frm].elements[ctrl].value;
	var len1=val.length;
	if(len1 < min_len || len1 > max_len)
	{
		alert(msg + " field should greater than " + min_len + " character and less than " + max_len);
		document.forms[frm].elements[ctrl].select();
		return true;
	}
	else
	{
		return false;
	}
   } 


//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//8.1. Fields can have special character with number

   function isCustomNum(frm,ctrl,alpha,msg)
    {
        var val=document.forms[frm].elements[ctrl].value;
       
        if((!isCharsInBag(val,'0123456789' + alpha )))
	    {
		alert(msg + " field contain only numeric and " + alpha +" character !");
		document.forms[frm].elements[ctrl].select();
		return true;
	    }
	    else
	    {
    	return false;
	    }
    
     }
     
     
//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//8.2. Fields can have special character with number

   function isCustomAlpha(frm,ctrl,alpha,msg)
    {
        var val=document.forms[frm].elements[ctrl].value;
       
        if((!isCharsInBag(val,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + alpha )))
	    {
		alert(msg + " field contain only Alphabat and " + alpha +" character !");
		document.forms[frm].elements[ctrl].select();
		return true;
	    }
	    else
	    {
    	return false;
	    }
    
     }     


//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//9. Function to display date in long formate 
   function showDate(size,color)
   {
      days = new Array(7)
      days[1] = "Sunday";
      days[2] = "Monday";
      days[3] = "Tuesday"; 
      days[4] = "Wednesday";
      days[5] = "Thursday";
      days[6] = "Friday";
      days[7] = "Saturday";
      months = new Array(12)
      months[1] = "January";
      months[2] = "February";
      months[3] = "March";
      months[4] = "April";
      months[5] = "May";
      months[6] = "June";
      months[7] = "July";
      months[8] = "August";
      months[9] = "September";
      months[10] = "October"; 
      months[11] = "November";
      months[12] = "December";
      today = new Date(); day = days[today.getDay() + 1]
      month = months[today.getMonth() + 1]
      date = today.getDate()
      year=today.getYear(); 
      if (year < 2000)
      year = year + 1900;
      document.write ("<font size="+ size +" face='Verdana, Helvetica, sans-serif' color="+ color +"> "+ day +
      ", " + month + " " + date + ", " + year + "</font>")
    
    }


//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//10. Function to convert lowercase to uppercase  
	  function toUpper(frm,ctrl)
 	  {
 	  return document.forms[frm].elements[ctrl].value=document.forms[frm].elements[ctrl].value.toUpperCase();
 	  }


//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//11. Field must contain a value, It may be string value or Numeric value. 
      function isBlank(frm,ctrl,msg){
		var val=document.forms[frm].elements[ctrl].value;
	    var len=val.length;
		var new_str;
	
		val1 = Trim(val);
		if(val1.length==0){
		alert(msg);
		document.forms[frm].elements[ctrl].focus();
		document.forms[frm].elements[ctrl].select();
		return true;
		}
		else if(val.indexOf(' ')==0||val.lastIndexOf(' ')==(len-1)){
			while (val.substring(0,1) == ' '){
			  val = val.substring(1, val.length);
			}
           while (val.substring(val.length-1, val.length) == ' '){
               val = val.substring(0,val.length-1);
            }
		document.forms[frm].elements[ctrl].value=val;
		}
		else if(val1.length > 0){
		    while (val.substring(0,1).charCodeAt(0) == 13){
				   val = val.substring(1, val.length);
		 	   }
		    document.forms[frm].elements[ctrl].value=val;
		   }
		else
		{
			return false;
		}
     }
	 
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//12. function for combo validation. 	
	 function isComboSelect(frm,ctrl,msg)
    {
        var val=document.forms[frm].elements[ctrl].value;
       
        if(val=='0')
	    {
		alert(msg );
		document.forms[frm].elements[ctrl].focus();
		return true;
	    }
	    else
	    {
    	return false;
	    }
    
     }
	 
	 
//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//13. CUSTOM PASSWORD CHEECK (LIKE MIN 6 CHAR WITH ONE NUM CHAR)

   function isProperPass(frm,ctrl,min_len,msg,msg1)
   {
	var val=document.forms[frm].elements[ctrl].value;
	var len1=val.length;
	if(len1 < min_len )
	{
		alert(msg);
		document.forms[frm].elements[ctrl].select();
		return true;
	}
	else
	{
		  var reg=/\d/;	
		 if (!reg.test(val)) {
			alert(msg1);
			document.forms[frm].elements[ctrl].select();
			return true;
		  }
		  else
		  {
			return false;  
		  }

	}
   } 	 


//trim function to remove blank spaces

function Trim(s) 
   {
   	// Remove leading spaces and carriage returns
   	while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
   	 { s = s.substring(1,s.length); }
     
   	// Remove trailing spaces and carriage returns
 while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
   	 { s = s.substring(0,s.length-1); }
     
   	return s;
   }
   
//////// function for record dropDown combo
	
		function submit_me()
		{
		document.frmDropDown.submit();
		}



////urlEncode//////////////////////////////////////////////////////////////////////////////////////
 function urlEncode( text3s )
 {
 // The javascript escape and unescape functions do not correspond
 // with what browsers actually do...
 var SAFECHARS = "0123456789" + // Numeric
 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic
 "abcdefghijklmnopqrstuvwxyz" +
 "-_.!~*'()"; // RFC2396 Mark characters
 var HEX = "0123456789ABCDEF";
 var plaintext = text3s;
 var encoded = "";
 for (var i = 0; i < plaintext.length; i++ ) {
  var ch = plaintext.charAt(i);
  if (ch == " ") {
   encoded += "+"; // x-www-urlencoded, rather than %20
  }
  else if (SAFECHARS.indexOf(ch)!= -1) {
   encoded += ch;
  }
  else {
   var charCode = ch.charCodeAt(0);
   if (charCode > 255) {
   }
   else {
    encoded += "%";
    encoded += HEX.charAt((charCode >> 4) & 0xF);
    encoded += HEX.charAt (charCode & 0xF);
   }
  }
 }
 return encoded;
 }
 /////////////////////////////////////////////////////////////////////////////////////////////
function Encode_JSstring( val_text )
 {
 // The javascript escape and unescape functions do not correspond
 // with what browsers actually do...
 var SAFECHARS = "0123456789" + // Numeric
 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic
 "abcdefghijklmnopqrstuvwxyz" +
 "-_.!~*'()"; // RFC2396 Mark characters
 var HEX = "0123456789ABCDEF";
 var plaintext = val_text;
 var encoded = "";
 for (var i = 0; i < plaintext.length; i++ ) {
  var ch = plaintext.charAt(i);
  if (ch == " ") {
   encoded += " "; // x-www-urlencoded, rather than %20
  }
  else if (SAFECHARS.indexOf(ch)!= -1) {
   encoded += ch;
  }
  else {
   var charCode = ch.charCodeAt(0);
   if (charCode > 255) {
   }
   //else {
   // encoded += "%";
   // encoded += HEX.charAt((charCode >> 4) & 0xF);
   // encoded += HEX.charAt (charCode & 0xF);
  // }
  }
 }
 return encoded;
 }
 /////////////////////////////////////////////////////////////////////////////////////////////
//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//14. Field must contain Numeric value but noZero and on blank

    function noZero(frm,ctrl,msg)
    {
	 var val=document.forms[frm].elements[ctrl].value;
	 var len=val.length;
	  if(len == 0){
		  alert(msg);
		  document.forms[frm].elements[ctrl].select();
		  return true;
	  }else if(isNaN(val)){
		  alert(msg);
		  document.forms[frm].elements[ctrl].select();
		  return true;
	  }else{
		  if(val == 0){
		     alert(msg);
			 document.forms[frm].elements[ctrl].select();
	         return true;
		    }
		}
}

 /////////////////////////////////////////////////////////////////////////////////////////////
//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
//15. checking the Length of a field

    function checkLength(frm,ctrl,msg,maxLen){
	 var val=document.forms[frm].elements[ctrl].value;
	 var len=val.length;
	  if(len > eval(maxLen)){
	  alert(msg);
	  document.forms[frm].elements[ctrl].select();
	  return true;
	}
}
