//-------------------------------------------------------------------------------------------
// Author: Alexander Appelt
// Created: 23.02.2009
// Description: Javascript functions
//-------------------------------------------------------------------------------------------

//----------------------------------------------------------------------------------
function revisarDigito( dvr )
{  
   dv = dvr + ""  
   if ( dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k'  && dv != 'K')   
   {     
      alert("Debe ingresar un digito verificador valido");     
      return false;  
   }  
   return true;
}

//----------------------------------------------------------------------------------
function revisarDigito2( crut )
{  
   largo = crut.length; 
   if ( largo < 2 )  
   {     
      alert("Debe ingresar el rut completo");
      return false;  
   }  
   if ( largo > 2 )     
      rut = crut.substring(0, largo - 1); 
   else     
      rut = crut.charAt(0);   
   dv = crut.charAt(largo-1); 
   revisarDigito( dv ); 

   if ( rut == null || dv == null )
      return 0 

   var dvr = '0'  
   suma = 0 
   mul  = 2 

   for (i= rut.length -1 ; i >= 0; i--)   
   {  
      suma = suma + rut.charAt(i) * mul      
      if (mul == 7)        
         mul = 2     
      else           
         mul++ 
   }  
   res = suma % 11   
   if (res==1)    
      dvr = 'k'   
   else if (res==0)     
      dvr = '0'   
   else  
   {     
      dvi = 11-res      
      dvr = dvi + "" 
   }
   if ( dvr != dv.toLowerCase() )   
   {     
      alert("EL rut es incorrecto");
      return false   
   }

   return true
}

//----------------------------------------------------------------------------------
function Rut(obj, texto)
{  
   var tmpstr = "";  
   for ( i=0; i < texto.length ; i++ )    
      if ( texto.charAt(i) != ' ' && texto.charAt(i) != '.' && texto.charAt(i) != '-' )
         tmpstr = tmpstr + texto.charAt(i);  
   texto = tmpstr;   
   largo = texto.length;   

   if ( largo < 2 )  
   {     
      alert("Debe ingresar el rut completo");
      return false;  
   }  

   for (i=0; i < largo ; i++ )   
   {        
      if ( texto.charAt(i) !="0" && texto.charAt(i) != "1" && texto.charAt(i) !="2" && texto.charAt(i) != "3" && texto.charAt(i) != "4" && texto.charAt(i) !="5" && texto.charAt(i) != "6" && texto.charAt(i) != "7" && texto.charAt(i) !="8" && texto.charAt(i) != "9" && texto.charAt(i) !="k" && texto.charAt(i) != "K" )
      {        
         alert("El valor ingresado no corresponde a un R.U.T valido");
         return false;     
      }  
   }  

   var invertido = "";  
   for ( i=(largo-1),j=0; i>=0; i--,j++ )    
      invertido = invertido + texto.charAt(i);  
   var dtexto = "";  
   dtexto = dtexto + invertido.charAt(0); 
   dtexto = dtexto + '-';  
   cnt = 0; 

   for ( i=1,j=2; i<largo; i++,j++ )   
   {
      if ( cnt == 3 )      
      {        
         dtexto = dtexto + '.';        
         j++;        
         dtexto = dtexto + invertido.charAt(i);       
         cnt = 1;    
      }     
      else     
      {           
         dtexto = dtexto + invertido.charAt(i);       
         cnt++;      
      }  
   }  

   invertido = "";   
   for ( i=(dtexto.length-1),j=0; i>=0; i--,j++ )     
      invertido = invertido + dtexto.charAt(i); 

   obj.value = invertido.toUpperCase()

   if ( revisarDigito2(texto) )     
      return true;   

   return false;
}

//----------------------------------------------------------------------------------
function echeck(str) {

      var at="@"
      var dot="."
      var lat=str.indexOf(at)
      var lstr=str.length
      var ldot=str.indexOf(dot)
      if (str.indexOf(at)==-1){
         alert("EL E-Mail es incorrecto")
         return false
      }

      if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
         alert("EL E-Mail es incorrecto")
         return false
      }

      if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
          alert("EL E-Mail es incorrecto")
          return false
      }

       if (str.indexOf(at,(lat+1))!=-1){
          alert("EL E-Mail es incorrecto")
          return false
       }

       if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
          alert("EL E-Mail es incorrecto")
          return false
       }

       if (str.indexOf(dot,(lat+2))==-1){
          alert("EL E-Mail es incorrecto")
          return false
       }
      
       if (str.indexOf(" ")!=-1){
          alert("EL E-Mail es incorrecto")
          return false
       }

       return true               
   }

//----------------------------------------------------------------------------------
function EMail(obj, emailval)
{
   if ((obj.value==null)||(obj.value=="")){
      alert("EL E-Mail es incorrecto");
      obj.focus();
      return false;
   }
   if (echeck(obj.value)==false){
      obj.focus();
      return false;
   }
   return true
 }

//----------------------------------------------------------------------------------
// calculate summary price
//----------------------------------------------------------------------------------
function calcSum()
{
   // object status
   var obj_exists = true;
   
   // get buy formular
   try
   {
      var obj_frm = document.buyform;
      var obj_len = obj_frm.elements.length;
   }
   catch(error)
   {
      obj_exists = false;      
   }
   
   // loop through form items
   if(obj_exists)
   {
      // set sum to zero
      var isum    = 0;
      
      // get summary object
      var obj_sum = document.getElementById('idx_summary');
   
      for(var x = 0; x < obj_frm.elements.length; x++)
      {
      
         // check if element is an quantity field
         if(obj_frm.elements[x].type == 'text' && obj_frm.elements[x].name.indexOf('itmqty') >= 0)
         {
         
            // refomat value
            var val  = trim(obj_frm.elements[x].value).replace('.','');
            
            // parse to int
            var ival = parseInt(val);
            
            // check if number is valid
            if(val == '' || isNaN(ival) || String(ival) != val)
               ival = 0;
            else
            {
               // get item price
               var iprc = document.getElementById('prc' +obj_frm.elements[x].name);
               
               // calculate full item price
               var iqtyprc = eval(iprc.value) * ival;
               
               // add to summary price
               isum += iqtyprc;
            }
         }
      }
      isum = isum - (isum / 100 * 5);
      isum = Math.round(isum);
      
      // set summary price
      obj_sum.innerHTML = disp_number(isum);
   }
}

//----------------------------------------------------------------------------------
// format price for output
//----------------------------------------------------------------------------------
function disp_number(num)
{
   // init variables
   var retstr  = '';
   var numstr  = String(num);
   var counter = 1;
   
   // ok, manuall format here for thousands
   // loop through each char backwards

   numstr = numstr.replace('.',',');
   
   var weiter = false;

   if(numstr.indexOf(',') == -1)
      weiter = true;
   
   for( var x = (numstr.length -1); x >= 0; x--)
   {
      // add char to return string
      retstr = numstr.charAt(x) +retstr;

      if(numstr.charAt(x) == ',')
      {
         counter = 0;
         weiter = true;
      }
      
      // after three chars add the seperator
      if(counter % 3 == 0 && counter > 0 && x > 0 && weiter == true)
         retstr = '.' +retstr;
      
      // count the chars
      counter++;
   }
   
   // special format for 0
   if(retstr == '0')
      retstr = '000.000';
   
   return retstr;
}

//----------------------------------------------------------------------------------
// trim functions
//----------------------------------------------------------------------------------
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}
//----------------------------------------------------------------------------------
function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
//----------------------------------------------------------------------------------
function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}