var _preserror=0;
function  form_haserror(controlValidID,formID)
{	var form=document.forms[formID];
	var i=0;
	var aux='';
	var jseval='';
	var band=0;
	var aux=mycontrolsvalidate.split(';');
	var jseval=myjsvalidate.split('#');
	_preserror=0;
	for(i=0;(i<jseval.length-1);i++)
	{	//alert(jseval[i]);
		if(aux[i].indexOf(controlValidID)!=-1)
			eval(jseval[i]);				
	}
	//alert(_preserror);	
	if(_preserror)
	{	event.returnValue=false;
		return false;
		_preserror=0;
	}
	else
		return true;		
				 
}
function trim (str)
{
        //str = this != window? this : str;
        //alert('[' + str.replace(/^\s+|\s+$/g,"") + ']');
        return str.replace(/^\s+|\s+$/g,"");
        
}
function msgerror(controlID,msg)
{		
	var objmsgerror=document.getElementById('sperror_' + controlID); 
	var obj=document.getElementById(controlID); 	
	objmsgerror.style.posLeft=obj.style.posLeft;			  
	objmsgerror.style.posTop=obj.style.posTop+2;
	objmsgerror.style.posLeft=objmsgerror.style.posLeft +  obj.style.posWidth + 2 ;
	_preserror=1;	
	objmsgerror.innerHTML=msg;
	objmsgerror.style.visibility='visible';			

	return false;
}
function clear_msgerror(controlID)
{	var objmsgerror=document.getElementById('sperror_' + controlID); 
	objmsgerror.style.visibility='hidden';		
	//_preserror=0;
}

function ptb_validtext_drop(controlID,msg,initialValue){
	
	var obj=document.getElementById(controlID);
    
    if (obj==null)
        return true;
	if (trim(obj.value)==initialValue){		
		msgerror(controlID,msg);
		return false;
	}
	
	clear_msgerror(controlID);
	return true;
}

function ptb_validtext_emply(controlID,msg){
	var obj=document.getElementById(controlID);
	obj.value=trim(obj.value);
	if (obj.value==''){		
		msgerror(controlID,msg);
		return false;
	}
	
	clear_msgerror(controlID);
	return true;
}

function ptb_validtext_email(controlID,msg){
	var obj=document.getElementById(controlID);
	var pattern = new RegExp("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
	
	obj.value=trim(obj.value);
	if(obj.value=='')
		return true;
		
	if (pattern.exec(obj.value) == null)
	{	msgerror(controlID,msg);
		return false;
	}
	clear_msgerror(controlID);
	return true;	
}

function ptb_validtext_integer(controlID,msg){
	var obj=document.getElementById(controlID);
	
	obj.value=trim(obj.value);
	if(obj.value=='')
		return true;
	
	var value=Math.round(obj.value);	
	if(isNaN(value))
	{	msgerror(controlID,msg);
		return false;
	}
	clear_msgerror(controlID);	
	return true;	
}

function ptb_validtext_integersign(controlID,msg){
	var obj=document.getElementById(controlID);
	var value=Math.round(obj.value);
	
	obj.value=trim(obj.value);
	if(obj.value=='')
		return true;
		
	if(isNaN(value))
	{	msgerror(controlID,msg);
		return false;
	}
	else if (value<0)
	{	msgerror(controlID,msg);
		return false;
	
	}
	clear_msgerror(controlID);
	return true;	
}

function ptb_validtext_decimal(controlID,msg)
{	var ValidChars = "-0123456789.";
  	var Char;
   	var OnePoint=true;
   	var IsValid=true;
   	var obj=document.getElementById(controlID);
 	obj.value=trim(obj.value);
 	if(obj.value=='')
		return true;
				 					 
   	for (i=0;i<obj.value.length; i++) 
    {   Char = obj.value.charAt(i);     
    	if ((ValidChars.indexOf(Char) == -1)) 
        {	 IsValid=false;	 
			 i=obj.value.lenght;	
        }
		else					
	    {  	if(Char=='.' && OnePoint)
	        	OnePoint=false;
	        else if(Char=='.' && OnePoint==false)
	        {	IsValid=false;
				i=obj.value.lenght;
			}	
	
			if(Char=='-' && i!=0)
	        {	IsValid=false;
				i=obj.value.lenght;
			}		        
		}
	} 
	
	if(!IsValid)
	{	msgerror(controlID,msg);		
		return false;
	}
	clear_msgerror(controlID);
	return true;	    		      	
} 

function ptb_validtext_decimalsign(controlID,msg)
{	var ValidChars = "0123456789.";
  	var Char;
   	var OnePoint=true;
   	var IsValid=true;
   	var obj=document.getElementById(controlID);
   	
   	obj.value=trim(obj.value);
 	if(obj.value=='')
		return true;			 	
						 
   	for (i=0;i<obj.value.length; i++) 
    {   Char = obj.value.charAt(i);     
    	if ((ValidChars.indexOf(Char) == -1)) 
        {	 IsValid=false;	 
			 i=obj.value.lenght;	
        }
		else					
	    {  	if(Char=='.' && OnePoint)
	        	OnePoint=false;
	        else if(Char=='.' && OnePoint==false)
	        {	IsValid=false;
				i=obj.value.lenght;
			}	
	
			if(Char=='-' && i!=0)
	        {	IsValid=false;
				i=obj.value.lenght;
			}		        
		}
	} 
	
	if(!IsValid)
	{	msgerror(controlID,msg);
		return false;
	}
	clear_msgerror(controlID);
	return true;	    		      	
}  					

function ptb_validtext_phone(controlID,msg)
{	var ValidChars = '-0123456789';
	var xchar;
	var OnePoint=true;
	var IsValid=true;
	var obj=document.getElementById(controlID);
	obj.value=trim(obj.value);
	if(obj.value=='')
		return true;
		
	for (i=0;i<obj.value.length; i++){
		xchar = obj.value.charAt(i);
		if ((ValidChars.indexOf(xchar) == -1))
		{	IsValid=false;
			i=obj.value.lenght;
		}
	}
	if(!IsValid)
	{	msgerror(controlID,msg);		
		return false;
	}
	clear_msgerror(controlID);
	return true;
}
function ptb_validtext_date(controlID,typeformat,msg) 
{	//var Error =document.getElementById(ControlError);
	//	0-	DDMMYYYY
	//	1-	MMDDYYYY
	//	2-	YYYYMMDD
	
	var Day;
	var Month;
	var Year;
	var BadDate = false;
	var obj=document.getElementById(controlID);
	obj.value=trim(obj.value);
	var txtdate=obj.value;
    var dateregexp=/([1-9]|0[1-9]|1[012])[- \/.]([1-9]|0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\\d\\d/;
    var remcarac=/[-\\\/.]/;   
       
   if(txtdate.replace(' ','')=='')
		return true;
        
    if (dateregexp.exec(txtdate))
    {	msgerror(controlID,msg);
		return false;
	}	
	//DDMMYY
	if (typeformat==0)
	{ Day = txtdate.substring(0,2);
	  Day=Day.replace(remcarac,'');
	  
	  Month = txtdate.substring(Day.length+1,Day.length+3);
	  Month=Month.replace(remcarac,'');	  
	  Year = txtdate.substring(Day.length + Month.length+ 2,txtdate.lenght);			
	
	}
	//MMDDYYYY
	if (typeformat==1)
	{  Month = txtdate.substring(0,2);
	   Month=Month.replace(remcarac,'');
	   
	   Day = txtdate.substring(Month.length+1,Month.length+3);
	   Day=Day.replace(remcarac,'');
	   
	   Year = txtdate.substring(Day.length + Month.length + 2,txtdate.length);
	   
	}	
	//YYYYMMDD
	if (typeformat==2)
	{ Year = txtdate.substring(0,4);	  
	  Month =txtdate.substring(5,7);	  	  
	  Month=Month.replace(remcarac,'');
	  Day =txtdate.substring(Month.length + 6,txtdate.length);	  
	}
	
	//alert(Month);
	//alert(Day);
	//alert(Year);
	
	 Day = Math.round(Day);
	 Month = Math.round(Month);
	 Year = Math.round(Year);	
	 
 	 if(!isNaN(Day) && !isNaN(Month) && !isNaN(Year) && Day >= 1 && Year >= 1900)
	 {   if (Month>12)
			BadDate=true;
	    if((Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month == 10 || Month == 12) && Day >31)
			BadDate = true;
	    if((Month == 4 || Month == 6 || Month == 9 || Month == 11)&& Day > 30)
			BadDate = true; 
	    if( Month == 2 && ( Day > 29 ||( Day == 29 &&((Year % 400 != 0)&&((Year % 4 != 0) || (Year % 100 == 0))))))
			BadDate = true;
	        
	    if(BadDate)
		{	msgerror(controlID,msg);
			return false;
	    }
	    else
	        return true;	       
	}
	else 
	{	msgerror(controlID,msg);
		return false;	
	}
	clear_msgerror(controlID);
	return true; 					
 }
 function ptb_validtext_rut(controlID,msg)
{	var Suma = 0;
  	var obj=document.getElementById(controlID);
  	obj.value=trim(obj.value);
  	var rut = obj.value;
  	var NumMag = 2;
  	var Resto = 0;
  	var strRut='';
  	var j=0;
  	var i=0;
  	var band=1;
  	// Defino el arreglo con los posibles digitos verificadores
 	var DigVer = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "K", "0");
  	var ParteNumerica = new Array();
  	
  		
  	// Valida que el rut no este vacio
  	if (rut.length == 0) { return true; }
	
  	// Copio solo la parte numerica, sin espacios ni puntos
  	// en otra variable para calcular el digito verificador
  	for (j=0;j<rut.length; j++)
  	{
   		if(rut.charAt(j)== '-')
   		{	band=0;
   			j=rut.length;
   		}
   		else if (rut.charAt(j) != ' ' && rut.charAt(j) != '.')
 		{  	ParteNumerica[i] = rut.charAt(j); 			
 			++i;

 		}
  	}
   	if(band)
  	{	msgerror(controlID,msg);
  		return false;	
  	}
	
	//Obtener digito verificador
	var index=rut.indexOf('-',0);
	var Dv='';
	
	if(index!=-1)
	   Dv=rut.substring(index+1,rut.length);
	else
	{	return false;
	}   
	
	band=1;
	var aux; 	
  	// Se calcula el digito verificador del rut
  	for (i=ParteNumerica.length-1; i>=0 && band; i--, NumMag++)
  	{  	aux=Math.round(ParteNumerica[i]);
  		if(!isNaN(aux))
  		{	strRut =  aux + strRut;
  			Suma += aux*NumMag;
   			if (NumMag>6) { NumMag = 1; }
   		}
   		else
   			band=0;	
  	}
	
	Resto = 11-(Suma%11);
  	if (!band || DigVer[Resto]!= Dv.toUpperCase())
 	{	msgerror(controlID,msg);
 		return false;
	}	
  	else
  	{ 	obj.value= strRut + '-' + Dv;	
    	clear_msgerror(controlID);
		return true; 	
	}
  	
}
 function ptb_controltext_upper(controlID)
 {	var obj=document.getElementById(controlID);
    obj.value=obj.value.toUpperCase(); 	
 }
 
 function ptb_controltext_lower(controlID)
 {	var obj=document.getElementById(controlID);
    obj.value=obj.value.toLowerCase(); 	
 }
 
 //Only caracteres alfa-numeric 
  function ptb_controltext_removenotletter(controlID)
  { var control=document.getElementById(controlID);
     
    var myregexp= new String('[^-\\@\\.\\#\\$\\%\\_\\sa-zA-Z0-9]');
    		  	
    var mytest = new RegExp(myregexp,'g');		    
	control.value=control.value.replace(mytest,''); 	  			
	control.value=control.value.toUpperCase();
	
  }
 
 //Only caracteres alfa-numeric upper
  function ptb_controltext_removenotletterupper(controlID)
  { var control=document.getElementById(controlID);
     
    var myregexp= new String('[^-\\@\\.\\#\\$\\%\\_\\sa-zA-Z0-9]');
    		  	
    var mytest = new RegExp(myregexp,'g');		    
	control.value=control.value.replace(mytest,''); 	  			
	control.value=control.value.toUpperCase();
	
  }
  
  //Only caracteres alfa-numeric lower
  function ptb_controltext_removenotletterlower(controlID)
  { var control=document.getElementById(controlID);
     
    var myregexp= new String('[^-\\@\\.\\#\\$\\%\\_\\sa-zA-Z0-9]');    		  	
    var mytest = new RegExp(myregexp,'g');		    
	control.value=control.value.replace(mytest,''); 	  			
	control.value=control.value.toLowerCase();
	
  }
 

