// Coded By Sudipta Bhattacharjya for company purpuse
var formArray;
var singleValidation=0;
var chkArray=new Array();
var error=0;
var imgflag=0;
var msgflag=0;
var x;
var knownDomsPat=/^(com|net|org|edu|int|mil|mobi|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
function setImg(v)
{
	 imgflag=v;
}
function setMsg(v)
{
	 msgflag=v;
}
function setSingleValidation(v)
{
	 singleValidation=v;
}
function init(v)
{
	   formArray=v;
	   //alert(formArray[0].name);
}
function isNumber(v,specialchars)
{
	var style="^[0-9]+$";
	if(specialchars!="")
	{
		 style="^[0-9"+specialchars+"]+$";
	}
	
   var regExpr=new RegExp(style);
    		if(!v.match(regExpr))
			{
			  return false;
			}
			return true;
}
function isCharecter(v,specialchars)
{
	 var style="^[A-Za-z]+$";
	if(specialchars!="")
	{
		 style="^[A-Za-z"+specialchars+"]+$";
	}
	
   var regExpr=new RegExp(style);
    		if(!v.match(regExpr))
			{
			  return false;
			}
			return true;
}
function isEmail(v)
{
    
          var regExpr=new RegExp("^([a-zA-Z0-9_.-]+[@][a-zA-Z-]+[.](([a-zA-Z]{3})|([a-zA-Z]{2}[.][a-zA-Z]{2})))$");
    		if( !v.match(regExpr))
            		{
					   
            				return false;
            		}
					return true;

 
}
/*function isWebsite(v)
{
    
          var regExpr=new RegExp("^[a-zA-Z0-9.:/]+$");
    		if( !v.match(regExpr))
            		{
					   
            				return false;
            		}
					return true;

 
}
*/


function isWebsite(urlStr){if (urlStr.indexOf(" ")!=-1){return false;}if(urlStr==""||urlStr==null){return false;}urlStr=urlStr.toLowerCase();var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";var validChars="\[^\\s" + specialChars + "\]";var atom=validChars + '+';var urlPat=/^(\w*)\.([\-\+a-z0-9]*)\.(\w*)/;var matchArray=urlStr.match(urlPat);if (matchArray==null){return false;}var user=matchArray[2];var domain=matchArray[3];for (i=0; i<user.length; i++) {if (user.charCodeAt(i)>127) {return false;}}for (i=0; i<domain.length; i++) {if (domain.charCodeAt(i)>127) {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) {return false;}}if (domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {return false;}return true;}


function isContactno(v)
{
     var regExpr=new RegExp("^([0-9]{3})-([0-9]{3})-([0-9]{4})$");
    		if( !v.match(regExpr))
			{
			       return false;
			}
		return true;
   
}
function isfax(v)
{
     var regExpr=new RegExp("^[0-9.-]+$");
    		if( !v.match(regExpr))
			{
			       return false;
			}
		return true;
   
}
function isDate(v)
{
	 var regExpr=new RegExp("^([0-9]{1,2})-([0-9]{1,2})-([0-9]{4})$");
    		if( !v.match(regExpr))
			{
			     return false;
			}
			return true;
}
function isAlphanumeric(v,specialchars)
{
	      var style="^[A-Za-z0-9\\r\\n]+$";
		  if(specialchars!="")
		  {
			   style="^[A-Za-z0-9\\r\\n"+specialchars+"]+$";
		  }
		  
           var regExpr=new RegExp(style);
    		if( !v.match(regExpr))
			{
				
			        return false;
			}
			var reg=new RegExp("^[0-9]+$");
    		if(v.match(reg))
			{
				
			        return false;
			}
			
			return true;
}
 var errflag=0;
 var errflag1=0;
 function getErrorString(id,v)
 {
	    var errstr=v;
		var errstr1='<img src="validation/error.gif" width="13px" height="13px">';
	            	 if(imgflag==1 & msgflag==0)
					 {
						 document.getElementById(id).innerHTML=v;
						 var id1=id+'1';
						 document.getElementById(id1).innerHTML='';
					 }
					 if(msgflag==1 & imgflag==0)
					 {
						 document.getElementById(id).innerHTML='';
						 var id1=id+'1';
						 document.getElementById(id1).innerHTML='<img src="validation/error.gif" width="13px" height="13px">';
					 }
					 if(imgflag==0 & msgflag==0)
					 {
						  document.getElementById(id).innerHTML=v;
						  var id1=id+'1';
						 document.getElementById(id1).innerHTML='<img src="validation/error.gif" width="13px" height="13px">';
					 }
					 
			 		 
 }
function isBlank(n,val)
{ 
	 var id=n+'_container';
	  			 
			    if(val==''| val.charAt(0)==' ')
				{
					
						 
					 getErrorString(id,errmsg1);
					  //chkArray[x]=1;
					 document.getElementById(n).className='formerror';
					  errflag=1;
					  errflag1=1;
					 return false;
				}
				else
				{
					 if(imgflag!=1)
					 {
						 id1=id+'1'; 
					 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';

					 }
					  document.getElementById(n).className='forminput';
					  // chkArray[x]=0;
					  errflag1=0;
					  return true;
				}
	      
}

var iid='';
var tab2='';
var field2='';
function setExtraTable(tab,field)
{
	tab2=tab;
	field2=field;
}
function validation(name)
{
	//alert('inside');
	//alert(singleValidation);
	 
	  var i=0;
	  var n;
	 errflag=0;
	 errflag1=0;
	 var specialchars='';
	  while(true)
	  {
		 
		  n=formArray[i].id;
		//alert(n);
		 //return false;
		 //
		    
		  val=formArray[i].value;
		  if(singleValidation==1)
		  {
			  n=name;
			  val=document.getElementById(name).value;
		  }
		  iid=n;
		   specialchars='';
		  x=i;
		  
		  var index=n.lastIndexOf("-");
		  
		  var chkflag=n.substring(0,index);
		  var chkflag1=chkflag;
		  index=chkflag.indexOf("[");
		  if(index!=-1)
		  {
			   chkflag=chkflag.substring(0,index); 
		  }
		  else
		  {
			    index=chkflag.indexOf("(");
				if(index!=-1)
				  {
					   chkflag=chkflag.substring(0,index); 
				  }						
		  }
		   
		  
		  var lindex=chkflag1.lastIndexOf("]");
		  if(index!=-1 & lindex!=-1)
		  {
			  index=index+1;
			  specialchars=chkflag1.substring(index,lindex);
		  }
		  //alert(n);
		//  alert(specialchars);
		  var id=n+'_container';
		 // alert(id);
		//  alert(chkflag);
		//  alert(val);
		  switch(chkflag)
		  {
			   //var id=n+'_container';
			  case 'M':
			 	 isBlank(n,val);
				break;
			  case 'MAN':
			   
				   if(isBlank(n,val))
				   {
					    if(!isAlphanumeric(val,specialchars))
						{
							
							getErrorString(id,errmsg2);
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
							
						}
						else
						{      
						       if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								 
						}
				   }
				  break;
				  
				  case 'MCH':
				       			    
				   if(isBlank(n,val))
				   {
					    if(!isCharecter(val,specialchars))
						{
							getErrorString(id,errmsg3);
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								
						}
				   }
				  break;
				  case 'MW':
			    
				   if(isBlank(n,val))
				   {
					    if(!isWebsite(val))
						{
							getErrorString(id,errmsg4);
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								
						}
				   }
				  break;
				  
			  case 'MN':
			        if(isBlank(n,val))
				   {
					    if(!isNumber(val,specialchars))
						{
							getErrorString(id,errmsg5);
							 document.getElementById(n).className='formerror';
							//alert(formArray[i]);
							errflag=1;
							errflag1=1;
							
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								 
						}
				   }
				   break;
			  case 'ME':
			       if(isBlank(n,val))
				   {
					    if(!isEmail(val))
						{
							 
							getErrorString(id,errmsg6);
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
							
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								
						}
				   }
				   break;
			  case 'MC':
			       if(isBlank(n,val))
				   {
					    if(!isContactno(val))
						{
							getErrorString(id,errmsg7);
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
						}
				   }
				   break;  
				  
			case 'MD':
			   if(isBlank(n,val))
				   {
					    if(!isDate(val))
						{
							getErrorString(id,'Incorrect date format');
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
						}
				   }
				   break;  
				 
			case 'MT':
			      if(isBlank(n,val))
				   {
					    if(!isContactno(val))
						{
							getErrorString(id,'Invalid number');
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
						}
				   }
				   break;  
			        
			  case 'AN':
			    if(val!=''){
			           if(!isAlphanumeric(val,specialchars))
						{
							getErrorString(id,errmsg2);
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								
						}
				}
				else
				{
					 document.getElementById(id).innerHTML='';
								 formArray[i].className='forminput';  
				}
						break;
				
				case 'CH':
				       			    
				  if(val!=''){
			           if(!isCharecter(val,specialchars))
						{
							getErrorString(id,errmsg3);
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								
						}
				}
				else
				{
					 document.getElementById(id).innerHTML='';
								 formArray[i].className='forminput';  
				}
						break;
						
				case 'W':
			    if(val!=''){
			           if(!isWebsite(val))
						{
							getErrorString(id,'Enter website in the format: www.domain.com ');
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								
						}
				}
				else
				{
					 document.getElementById(id).innerHTML='';
								 formArray[i].className='forminput';  
				}
						break;		
						
			   
			  case 'N':
			    if(val!=''){
			         if(!isNumber(val,specialchars))
						{
							getErrorString(id,errmsg5);
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								 
						}
				}
				else
				{
					 document.getElementById(id).innerHTML='';
								 formArray[i].className='forminput';
				}
						break;
			  case 'E':
			     if(val!=''){
			            if(!isEmail(val))
						{
							getErrorString(id,errmsg6);
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								 
						}
				 }
				 else
				 {
					   document.getElementById(id).innerHTML='';
								 formArray[i].className='forminput';
				 }
						break;
			  case 'C':
			    if(val!=''){
			       if(!isContactno(val))
						{
							getErrorString(id,'Invalid Number');
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								 
						}
				}
				else
				{
					 document.getElementById(id).innerHTML='';
								 formArray[i].className='forminput'; 
				}
						break;
						
			case 'D':
			   if(val!=''){
			       if(!isDate(val))
						{
							getErrorString(id,'Incorrect date format');
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								 
						}
				}
				else
				{
					 document.getElementById(id).innerHTML='';
								 formArray[i].className='forminput'; 
				}
						break;
						
		  case 'T':
		     if(val!=''){
			       if(!isContactno(val))
						{
							getErrorString(id,'Invalid number');
							formArray[i].className='formerror';
							errflag=1;
							errflag1=1;
						}
						else
						{
							   if(imgflag!=1)
							   {id1=id+'1'; 
document.getElementById(id1).innerHTML='<img src="validation/ok.gif" width="13px" height="13px">';
document.getElementById(id).innerHTML='';
							   }
								 formArray[i].className='forminput';
								 errflag1=0;
								 
						}
				}
				else
				{
					 document.getElementById(id).innerHTML='';
								 formArray[i].className='forminput'; 
				}
						break;
		  }
		  
		  index=chkflag1.lastIndexOf(")");
		 // alert(chkflag1);
		 // alert(chkflag);
		  if(lindex=-1)//if no special cahr defined.
		  {
			    lindex=chkflag1.indexOf("(");
				lindex=lindex-1;						  
		  }
		  if(index!=-1 & index>lindex)                   //lindex is index of ]
		  {
			  lindex=lindex+2;
			  chkflag=chkflag1.substring(lindex,index);         //table name and field name for ajax validation.
			  var arr=chkflag.split(",");
			 // alert(arr[0]+":"+arr[1]);
			// alert("a");
			  validate(n,arr[0],arr[1],val);               //n=id,arr[0]=tablename,arr[1]=fieldname,val=field value.
		  }
		  
		  if(singleValidation==1)
		      break;
		  if(n==name)
		    break;
		   i=i+1;	
		   //alert(errflag);
		   //alert(name);
		   if(name=='submitid' && errflag==1)
		   {
			   alert('There have been one or more errors while filling out the form. Please check through each sections for fields marked in red');
		   
		     return false;
		   }
	  }
	 // makehighlight(name);
	 
	 if(errflag1==1)
	 {
	
	  return false;
	 }
	else
	    return true;
}



function createRequestObject() { 
    var ro; 
    var browser = navigator.appName; 
    if(browser == "Microsoft Internet Explorer"){ 
        ro = new ActiveXObject("Microsoft.XMLHTTP"); 
    }else{ 
        ro = new XMLHttpRequest(); 
    } 
    return ro; 
} 

var http = createRequestObject(); 

function validate(id,tab,field,val)
{
	
var url ='validation/validation.php?tab='+tab+'&field='+field+'&val='+val;
//alert(url);
if(tab2!='' & field2!='')
{
	 url ='validation/validation.php?tab='+tab+'&field='+field+'&val='+val+'&tab1='+tab2+'&field1='+field2;

}

 http.open('GET', url,true); 

    http.onreadystatechange = validatehandleResponse; 
	 
    http.send(null); 

	
}
function validatehandleResponse()
 { 
  
 // alert("here");
    if(http.readyState == 4)
	{ 
	  
        var response = http.responseText;
		//alert(response);
		
		id=iid+'_container';
		
       
		if(response!='')
		{
			
			  id1=id+'1';
			  document.getElementById(id).innerHTML=response;
			  document.getElementById(id1).innerHTML='<img src="validation/error.gif" width="13px" height="13px">';
							document.getElementById(iid).className='formerror';
							errflag=1;
							errflag1=1;
		}
		
	}
 }
 
 function getFormat(postionString,controlName,e) 
{
    var pos=postionString.split(',');
	var length=(document.getElementById(controlName).value).length;
	//alert(length);
	for(var i=0;i<pos.length;i++)
	{
	   var j= Number(pos[i])-Number(1);
	   if(length==j & e.keyCode!=8)
	   {
	      document.getElementById(controlName).value=document.getElementById(controlName).value+'-';
		  return;
	   }
	}
	
}
