var keyCode;
var ns = (document.layers)? true:false;
var ie = (document.all)? true:false;

function setSelectedOption(controlID,val)
{   
    var obj=document.getElementById(controlID);    
    if (obj==null)
        return;
       
    for(i=0;i<obj.options.length;i++)
    {
        if(obj.options[i].value==val)
           obj.selectedIndex=i;
    }
}

function trim (str)
{
        //str = this != window? this : str;
        //alert('[' + str.replace(/^\s+|\s+$/g,"") + ']');
        return str.replace(/^\s+|\s+$/g,"");
        
}

function clearform(formname){
	var obj=document.forms[formname];	
	for(i=0;i<obj.elements.length;i++)   
	{   if (obj.elements[i].type=='text')
			obj.elements[i].value='';
	}
}

function clearInputs(objid)
{
    var i=0;
	var obj=document.getElementById(objid).getElementsByTagName('input');	
	
	for(i=0;i<obj.length;i++)   
	{   	
	    if (obj[i].type=='text' || obj[i].type=='password')
	        obj[i].value='';	    
	}
	
	obj=document.getElementById(objid).getElementsByTagName('select');
	for(i=0;i<obj.length;i++)   
	{  
	    obj[i].selectedIndex=0;
	}
	
	obj=document.getElementById(objid).getElementsByTagName('textarea');
	for(i=0;i<obj.length;i++)   
	{  
	    obj[i].value='';
	}
	
	obj=document.getElementById(objid).getElementsByTagName('span');
	for(i=0;i<obj.length;i++)   
	{  
	    if (obj[i].className=='labelText')
	        obj[i].innerHTML='';
	}
}

function validtext_emply(controlID,msg){
	var obj=document.getElementById(controlID);
    if (obj==null)
        return true;
    obj.value=trim(obj.value);
	if (obj.value=='')
	{	
	    if(trim(msg)!='') 	
		{    alert(msg);
		    try { obj.focus(); } catch(e){i=0;}		
		}
		return false;
	}
	
	return true;
}
function validtext_drop(controlID,msg,initialValue){
	var obj=document.getElementById(controlID);
    if (obj==null)
        return true;
	if (trim(obj.value)==initialValue){		
		alert(msg);
		obj.focus();		
		return false;
	}
	
	return true;
}
function validtext_email(controlID,msg){
	var obj=document.getElementById(controlID);
	if (obj==null)
        return true; 
	var myregexp = new RegExp("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
	
	obj.value=trim(obj.value);
	if(obj.value=='')
		return true;
		
	if (myregexp.exec(obj.value)== null)
	{	alert(msg);
		obj.focus();	
		return false;
	}
	
	return true;	
}

function validtext_integer(controlID,msg){
	var obj=document.getElementById(controlID);
	
	if (obj==null)
        return true;
        
    obj.value=trim(obj.value);
	if(obj.value=='')
		return true;
	
	var value=Math.round(obj.value);	
	if(isNaN(value))
	{	alert(msg);
		obj.focus();	
		return false;
	}
	
	return true;	
}

function validtext_integersign(controlID,msg){
	var obj=document.getElementById(controlID);
	if (obj==null)
        return true;
        
	var value=Math.round(obj.value);
	
	obj.value=trim(obj.value);
	if(obj.value=='')
		return true;
		
	if(isNaN(value))
	{	alert(msg);
		obj.focus();		
		return false;
	}
	else if (value<0)
	{	alert(msg);
		obj.focus();		
		return false;
	
	}
	
	return true;	
}

function validtext_decimal(controlID,msg)
{	var ValidChars = "-0123456789.";
  	var Char;
   	var OnePoint=true;
   	var IsValid=true;
   	var obj=document.getElementById(controlID);
   	if (obj==null)
        return true;
        
    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)
	{	alert(msg);
		obj.focus();		
		return false;
	}
	
	return true;	    		      	
} 

function validtext_decimalsign(controlID,msg)
{	var ValidChars = "0123456789.";
  	var Char;
   	var OnePoint=true;
   	var IsValid=true;
   	var obj=document.getElementById(controlID);
   	if (obj==null)
        return true;
        
 	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)
	{	alert(msg);
		obj.focus();		
		return false;
	}
	
	return true;	    		      	
}  					

function 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)
	{	alert(msg);
		obj.focus();		
		return false;
	}
	
	return true;
}
function 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);
	if (obj==null)
        return true;
    
    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=='')
		return true;
        
    if (dateregexp.exec(txtdate))
    {	if(msg!='') 
	    {   alert(msg);
		    obj.focus();		
		}		
		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)
		{	
		    if(msg!='') 
	        {   alert(msg);
		        obj.focus();		
		    }			
			return false;
	    }
	    else
	        return true;	       
	}
	else 
	{	
	    if(msg!='') 
	    {   alert(msg);
		    obj.focus();		
		}
		return false;
	}
	
	return true; 					
 }
 
 function compare_dates(controlID1,controlID2,typeformat,sepChar,msg)
 {	var objdate1=document.getElementById(controlID1);
  	var objdate2=document.getElementById(controlID2);
   	
   	var aux1=objdate1.value.split(sepChar);
   	var aux2=objdate2.value.split(sepChar);
   	
   	var newd1;
   	var newd2;
   	
   	//DDMMYYY
   	if(typeformat==0)
   	{	newd1=aux1[1] + '/' + aux1[0] + '/' + aux1[2];
   		newd2=aux2[1] + '/' + aux2[0] + '/' + aux2[2];
   	}
   	//MMDDYYYY	   	
   	else if(typeformat==1)
   	{	newd1=objdate1.value;
   		newd2=objdate2.value;   	
   	}
   	//YYYYMMDD
   	else if(typeformat==2)
   	{	newd1=aux1[1] + '/' + aux1[2] + '/' + aux1[0];
   		newd2=aux2[1] + '/' + aux2[2] + '/' + aux2[0];   	
   	}
   	
    var numf1=Date.parse(newd1);
	var numf2=Date.parse(newd2); 
		
	if (numf1>numf2)
	{	alert(msg);
		objdate1.focus();		
		return false;
	}
	else
		return true; 
 } 
 
 function validtext_hour(controlID,format,msg)
{	var ValidChars = ':0123456789';
	var xchar;
	var i=0;
	var OneSepart=true;
	var IsValid=true;
	var partHour='';
	var partMinute='';
	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);
		alert(xchar);
		if (ValidChars.indexOf(xchar) == -1)
		{	IsValid=false;
			i=obj.value.lenght;
		}
		else{
				if(xchar==':' && OneSepart)
					OneSepart=false;
				else if(xchar==':' && OneSepart==false)
				{	IsValid=false;
					i=obj.value.lenght;							
				}
				else{	
					if(OneSepart)
						partHour=partHour + xchar;
					else
						partMinute=partMinute + xchar;
				}
		}
	}
									
	if(!IsValid)
	{	alert(msg);
		obj.focus();					
		return false;
	}
	if(partHour.length==4)
	{	partMinute=partHour.substring(2,4);
		partHour=partHour.substring(0,2);					
	}
	alert(partHour);
	alert(partMinute);
	//Format 12hrs.
	if(format==0){
		if(Math.round(partHour)<1 || Math.round(partHour)>12)
			IsValid=false;
		if(Math.round(partMinute)<0 || Math.round(partMinute)>59)
			IsValid=false;						
	//Format  24hrs.
	}else if(format==1){
		if(Math.round(partHour)<0 || Math.round(partHour)>23)
			IsValid=false;
		if(Math.round(partMinute)<0 || Math.round(partMinute)>59)
			IsValid=false;						
	
	}	
	
	if(!IsValid)
	{	alert(msg);
		obj.focus();					
		return false;
	}
	
	if(partHour.length==1)
		partHour='0'+partHour;
	if(partMinute.length==1)
		partMinute='0'+partMinute;
	
	obj.value=partHour + ':' + partMinute;	
	
	return true;			
}
 function controltext_upper(controlID)
 {	var obj=document.getElementById(controlID);
    obj.value=obj.value.toUpperCase(); 	
 }
 
 function controltext_lower(controlID)
 {	var obj=document.getElementById(controlID);
    obj.value=obj.value.toLowerCase(); 	
 }
 
 //Only caracteres alfa-numeric 
  function 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,''); 	  			
	
  }
 
 //Only caracteres alfa-numeric upper
  function 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 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();
	
  }
  
function validtext_rut(ControlID,msg)
{	var Suma = 0;
  	var obj=document.getElementById(ControlID);
  	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();
  	
  	obj.value=trim(obj.value);    
	rut=trim(obj.value);
  	// Valida que el rut no este vacio
  	if (rut.length == 0) { return; }
	
  	// 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)
  	{	alert(msg);
		obj.focus();		
		return false;	
  	}
	
	//Obtener digito verificador
	var index=rut.indexOf('-',0);
	var Dv='';
	
	if(index!=-1)
	   Dv=rut.substring(index+1,rut.length);
	else
	{	alert(msg);
		obj.focus();		
		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())
 	{	alert(msg);
		obj.focus();		
		return false;
	}	
  	else
  	{ 	obj.value= strRut + '-' + Dv;	
    	return true; }
  	
}    

function validtext_rut2(ControlID)
{	var Suma = 0;
  	var obj=document.getElementById(ControlID);
  	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();
  	
  	obj.value=trim(obj.value);    
	rut=trim(obj.value);
  	// Valida que el rut no este vacio
  	if (rut.length == 0) { return; }
	
  	// 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)
  	{	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())
 	{	return false;
	}	
  	else
  	{ 	obj.value= strRut + '-' + Dv;	
    	return true; }
  	
}
function validtext_rut3(_rut)
{	var Suma = 0;  	
  	var rut =_rut;
  	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();
  	
	rut=trim(rut);
  	// Valida que el rut no este vacio
  	if (rut.length == 0) { return; }
	
  	// 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)
  	{	
		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())
 	{	
		return false;
	}	
  	else
  	{ 	
    	return true; 
    }  	
}    

function URLDecode(encoded)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef";        
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
       if (ch == "+") {
           plaintext += " ";
	       i++;
       } else if (ch == "%") {
		    if (i < (encoded.length-2) 
				    && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
				    && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
			    plaintext += unescape( encoded.substr(i,3) );
			    i += 3;
		    } else {
			    alert( 'Bad escape combination near ...' + encoded.substr(i) );
			    plaintext += "%[ERROR]";
			    i++;
		    }
	    } else {
	       plaintext += ch;
	       i++;
	    }
    } // while
    
   return plaintext;       
}
 function popUp(url,tt,w,h,center)
 {  
    var myleft=(screen.width)?(screen.width-w)/2:100;
    var mytop=(screen.height)?(screen.height-h)/2:100; 
    var properties
    if(center)
        properties = 'width='+ w +',height='+ h + ',toolbar=no,location=no,scrollbars=yes,status=1,resizable=1,top='+mytop+',left='+myleft;
    else
        properties = 'width='+ w +',height='+ h + ',toolbar=no,location=no,scrollbars=yes,status=1,resizable=1';
        
    var newWindow=window.open(url,tt,properties);  
    newWindow.focus();        
    return false;       
 } 



 

