/********************************* HEADER Information Begins ****************************/
//	Project		:	javascript validation
//	Author		:	Alwin
//	Created Date	:	03-06-2005
//	Owner       :Magnesystechnologies
//	
/******************************** HEADER Information Ends *******************************/

// Functions used
//        1. Chk_Numeric(obj_nam,rtrn_msg)   2 parameters-object name and return message
//        2. Chk_AlphaNumeric(obj_nam,rtrn_msg,stat) 
//                   3 parameters-object name,return message,stat indicates accept alpha or  alpha numeric
//		  3. Chk_Mail(obj_nam,rtrn_msg)      2 parameters-object name and return message
//		  4. return_false(obj_nam,rtrn_msg)  2 parameters-object name and return message
//		  5. Chk_Null(obj_nam,rtrn_msg)      2 parameters-object name and return message
		    

//This function is used to check whether a field is null or not
//accepts two parameters .obj_nam is the object name and rtrn_msg is the return message

function Chk_Null(obj_nam,rtrn_msg){
   var x = document.getElementById(obj_nam).value;
   if(x==false)
   {
     return_false(obj_nam,rtrn_msg);
   }
   else
   {
     Clear_Alert(obj_nam);
     return true;
   }
}

function Clear_Alert(obj_nam)
{
     $("#msgbox"+obj_nam).removeClass().addClass('messageboxok').text('OK').fadeIn("slow");
     //$("#msgbox"+obj_nam).removeClass();
}

//This method accepts only numeric values.
//accepts two parameters .obj_nam is the object name and rtrn_msg is the return message

function Chk_Numeric(obj_nam,rtrn_msg){           
  
  var x=document.getElementById(obj_nam).value;  
  var anum=/(^\d+$)|(^\d+\.\d+$)/;
  
  if (anum.test(x)){
       Clear_Alert(obj_nam);
       return true;
  }
  else{
      return_false(obj_nam,rtrn_msg);
  }
}

function Chk_Numeric2(obj_nam){           
  
  var x=document.getElementById(obj_nam).value;  
  var anum=/(^\d+$)|(^\d+\.\d+$)/;
  
  if (anum.test(x)){
       
       return true;
  }
  else{
      return false
  }
}

//This method either accepts character values only(ie a-z or A-Z) or both chars and nums
//according to stat value.if stat=0 alpha only else both alpha and numeric values
//accepts three parameters .obj_nam is the object name and rtrn_msg is the return message

function Chk_AlphaNumeric(obj_nam,rtrn_msg,stat){

    var x = document.getElementById(obj_nam).value;
    var invalids = "";
	
	if(stat==0)
      invalids = "`~@#$%^&*()_-+=\|{}[]:;'\"<>,.?/1234567890";
    else
	  invalids = "`~@#$%^&*()_-+=\|{}[]:;'\"<>,.?/";
	  
    for(i=0; i<invalids.length; i++) {
       
	    if(x.indexOf(invalids.charAt(i)) >= 0 || x==false) {
               return_false(obj_nam,rtrn_msg);
               return false;
		}
    }
    return true;
}

function is_only_alpha(obj_nam)
{
	var strval = document.getElementById(obj_nam).value;
	var invalids = "`~@#$%^&*()_-+=\|{}[]:;'\"<>,.?/1234567890";
	for(i=0; i<invalids.length; i++) {
	    if(strval.indexOf(invalids.charAt(i)) >= 0 || strval==false) {
				
               return false;
		}
    }
	
	return true;
}

function is_alpha_numeric(obj_nam)
{
	var strval = document.getElementById(obj_nam).value;
	var invalids = "`~@#$%^&*()_-+=\|{}[]:;'\"<>,.?/";
	for(i=0; i<invalids.length; i++) {
	    if(strval.indexOf(invalids.charAt(i)) >= 0 || strval==false) {
				
               return false;
		}
    }
	
	return true;
}


// This method is for validating the mail entered
//accepts two parameters .obj_nam is the object name and rtrn_msg is the return message

function Chk_Mail(obj_nam,rtrn_msg){

    var str= document.getElementById(obj_nam).value;
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

    if (filter.test(str)){
        Clear_Alert(obj_nam);
        return true;
    }
    else{
        return_false(obj_nam,rtrn_msg);
    }      
  
}
	function Chk_Password(obj_nam1,obj_nam2,rtrn_msg)
	{
	
	  var x=document.getElementById(obj_nam1).value;
	  var y=document.getElementById(obj_nam2).value;
	 
		if (x==y) 
		{
			Clear_Alert(obj_nam2);
			return true;
		}
		else{
				
			return_false(obj_nam2,rtrn_msg);
		}
	}
	
	function Cnfm_email(obj_nam1,obj_nam2,rtrn_msg)
	{
	
	  var x=document.getElementById(obj_nam1).value;
	  var y=document.getElementById(obj_nam2).value;
	 
		if (x==y) 
		{
     			Clear_Alert(obj_nam2);
			return true;
		}
		else{
				
			return_false(obj_nam2,rtrn_msg);
		}
	}	


function Chk_Length(obj_nam,rtrn_msg)
{
	
	var len=document.getElementById(obj_nam).value.length;
	if(len<6)
	{
		return_false(obj_nam,rtrn_msg);
	}
	else{
		Clear_Alert(obj_nam);
	    return true;
	}
}

function Chk_Length1(obj_nam,rtrn_msg)
{
	
	var len=document.getElementById(obj_nam).value.length;
	if(len<2)
	{
		return_false(obj_nam,rtrn_msg);
	}
	else{
	    return true;
	}
}

function Chk_Url(obj_nam,rtrn_msg){
   //var str= document.getElementById(obj_nam).value;
   //if(str.Startswith("http://www."))
	 return true;	      
 // else
   //  return_false(obj_nam,rtrn_msg);

}

function Chk_Combo(obj_nam,rtrn_msg){
    var str = document.getElementById(obj_nam).selectedIndex;
	if(str==0)
	  return_false1(obj_nam,rtrn_msg);
	else
	  return true;  
}
function Chk_Combo_Text(obj_nam1,obj_nam2,rtrn_msg){
    var str = document.getElementById(obj_nam1).selectedIndex;
	 var x = document.getElementById(obj_nam2).value;
	if((str==0) && (x==false))
	  return_false1(obj_nam1,rtrn_msg);
	else
	  return true;  
}
//The purpose of this method is to clear the form element and give focus to that object.
// This method used by all the above method when it want to return false
//accepts two parameters ,obj_nam is the object name and rtrn_msg is the return message

function return_false(obj_nam,rtrn_msg){
	$("#msgbox"+obj_nam).removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
	$("#msgbox"+obj_nam).html(rtrn_msg).addClass('messageboxerror').fadeTo(900,1); 
	  document.getElementById(obj_nam).value="";
	  document.getElementById(obj_nam).focus();
	  return false;
}

function return_false2(obj_nam,rtrn_msg){
	$("#msgbox"+obj_nam).removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
	$("#msgbox"+obj_nam).html(rtrn_msg).addClass('messageboxerror').fadeTo(900,1); 
	  document.getElementById(obj_nam).focus();
	  return false;
}

function return_false1(obj_nam,rtrn_msg){
      alert(rtrn_msg);      
	  document.getElementById(obj_nam).focus();

	  return false;
}
function Chk_check(obj_nam,rtn_msg)
{

 if(document.getElementById(obj_nam).checked==true)
 {
 	Clear_Alert(obj_nam);	
 	return true;
 }
 else
 {
 	return_false(obj_nam,rtn_msg);
 }
}

function Chk_len3(obj_nam,rtn_msg)
{
	var doc	=	document.getElementById(obj_nam).value;
	if(Chk_AlphaNumeric1(obj_nam,rtn_msg,0))
	{
	if(doc.substr(1,1)	==	".")
		return true;
	else
		return_false1(obj_nam,rtn_msg);
	}
}

function Chk_AlphaNumeric1(obj_nam,rtrn_msg,stat){

    var x = document.getElementById(obj_nam).value;
    var invalids = "";
	
	if(stat==0)
      invalids = "`~@#$%^&*()_-+=\|{}[]:;'\"<>,?/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    else
	  invalids = "`~@#$%^&*()_-+=\|{}[]:;'\"<>,.?/";
	  
    for(i=0; i<invalids.length; i++) {
       
	    if(x.indexOf(invalids.charAt(i)) >= 0 || x==false) {
               return_false(obj_nam,rtrn_msg);
               return false;
		}
    }
    return true;
}


function Chk_illegalchars (obj_nam,rtn_msg)
{
	
	
	var illegalChars = /[\W]/;  //Low only letters and nos

	if (illegalChars.test(obj_nam))
	return true;
	else
	return_false(obj_nam,rtrn_msg);
	return false;
	
}

function Chk_URL(obj_nam) {
	
	urlStr  = document.getElementById(obj_nam).value;
	
	if (urlStr.indexOf(" ") != -1) {
		//alert("Spaces are not allowed in a URL");
		return_false(obj_nam,"Spaces are not allowed in a URL");
        return false;
	}
	if (urlStr == "" || urlStr == null) {
		return true;
	}

	urlStr=urlStr.toLowerCase();

	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var atom=validChars + '+';
	var urlPat=/^http:\/\/(\w*)\.([\-\+a-z0-9]*)\.(\w*)/;
	var matchArray=urlStr.match(urlPat);

	if (matchArray==null) {
		return_false(obj_nam,"The URL seems incorrect \ncheck it begins with http://\n and it has 2 .'s");
        return false;

	}

	var user=matchArray[2];
	var domain=matchArray[3];

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			return_false(obj_nam,"This domain contains invalid characters.");
        	return false;
			//alert("This domain contains invalid characters.");
			//return false;
		}
	}

	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i) > 127) {
			return_false(obj_nam,"This domain name contains invalid characters.");
        	return false;
			
			//alert("This domain name contains invalid characters.");
			//return false;
		}
	}

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;

	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat) == -1) {
			//alert("The domain name does not seem to be valid.");
			//return false;
			return_false(obj_nam,"The domain name does not seem to be valid.");
        	return false;			
		}
	}

	return true;
} 