/**
* ###############################################
* HOSTING MX Servicios en Internet 2008
* HMX CORE JS FILE
* IMPORTANT: DO NOT CHANGE ANYTHING BELOW THIS POINT UNLESS YOU KNOW WHAT YOU ARE DOING
* ONLY HMX.DEVS CAN CHANGE
* ###############################################
*/
 /* HOSTINGMX'S GLOBAL ROUTINES
  *   */
 /*$(document).ready(function(){
  init_login_buttons();
  chrono_start();
  if ($.browser.msie && $.browser.version<7.0)
    $('head').append ('<!--[if IE 6]> <link href="http://images.hostingmx.com.mx/global/styles/support_ie6.css" rel="stylesheet" type="text/css"> <![endif]-->');
  if ($.browser.msie && $.browser.version>=7.0)
    $('head').append ('<!--[if IE 7]> <link href="http://images.hostingmx.com.mx/global/styles/support_ie7.css" rel="stylesheet" type="text/css"> <![endif]-->');
});*/
 
/* overlay()
 * Construye un overlay
*/ 
 function overlay()
 {   // Creating overlay
  	$('body').append('<div id="overlay"><div id="overlay_wrapper"></div></div>');  	
  	// Applying a special behavior for correct overlay rendering in IE6 
  	$("#overlay_wrapper").css({'width': $(window).width(), 'height': $(document).height()});
  	if ($.browser.msie && $.browser.version<7.0) {
  		$("#overlay").css('filter', 'alpha(opacity='+30+')');
  		$("#overlay").css("background-image", "none");
    }
 }
 
/* dialog(title)
 * Construye un cuadro de dialogo
*/
 
function dialog(title){
 	overlay();
  	// Append the dialog
  	// Detecting lower versions from IE7 - Applying filter and styles for this versions.
  	if ($.browser.msie && $.browser.version<7.0) {  		
  		$('body').append('<div id="dialogWrapper"><div class="dialogContainer"><img src="http://images.hostingmx.com.mx/global/elements/dialog/dialog_panel_grad_bg20080818.png" class="dialogBackground" /><div class="dialogContent"><div style="padding:0px 0px 0px 0px;"><div class="navbackground"></div></div><div class="clear"></div><div id="contentDomainSearch"><div class="navbar"></div><div class="dialogMain"></div><div class="dialogFooter"><div class="inlineseparator"></div><span><img src="http://images.hostingmx.com.mx/global/elements/dialog/hostingmx_logo.png" alt="Hosting MX" width="96" height="30"/></span><a class="close" onclick="close_dialog(); return false;"><img src="http://images.hostingmx.com.mx/global/elements/close.png" alt="Cerrar" width="82" height="23"/></a></div></div></div></div></div>');
  		}
  		else  	
  	    $('body').append('<div id="dialogWrapper"><div class="dialogContainer"><div class="top-left-edge"></div><div class="top-edge"></div><div class="top-right-edge"></div><div class="left-edge"></div><div class="right-edge"></div><div class="bottom-left-edge"></div><div class="bottom-edge"></div><div class="bottom-right-edge"></div><img src="http://images.hostingmx.com.mx/global/elements/dialog/dialog_panel_grad_bg20080818.png" class="dialogBackground" /><div class="dialogContent"><div style="padding:0px 0px 0px 0px;"><div class="navbackground"></div></div><div class="clear"></div><div id="contentDomainSearch"><div class="navbar"></div><div class="dialogMain"></div><div class="dialogFooter"><div class="inlineseparator"></div><span><img src="http://images.hostingmx.com.mx/global/elements/dialog/hostingmx_logo.png" alt="Hosting MX" width="96" height="30"/></span><a class="close" href="#" onclick="close_dialog(); return false;"><img src="http://images.hostingmx.com.mx/global/elements/close.png" alt="Cerrar" width="82" height="23"/></a></div></div></div></div></div>');
  	//close_dialog();
  	$(".navbackground").append('<div class="floattitle"><div class="domainsearch"><span class="title">'+title+'</span></div></div><div class="clear"></div>');
}  
 
/* close_dialog()
 * Funcion para destruir el cuadro de dialogo existente
*/ 
function close_dialog()
{	$("#dialogWrapper").remove();
   	$("#overlay").remove();
   	$("#tld").show();
   	$("#domainname").val("").blur();	
}

/* dialog_buttons(btns,active_button)
 * Construye los botones del cuadro de dialogo necesarios que recibe en el arreglo de entrada btns.
   Por default agrega la clase "active" al boton cuyo indice sea el recibido en el parametro active_button
*/
function dialog_buttons(btns,active_button)
{  dialog_content(btns.length);
   var content="";
   for(i=0; i < btns.length; i++)
   {  content+='<div class="toggle" id="'+btns[i][2]+'"><div class="toggleleft';
      if(i==active_button) content+=' active';
      content+='"></div><div class="togglemiddle';
      if(i==active_button) content+=' active';
      content+='"><a href="#" onclick="dialog_toggle(\''+btns[i][2]+'\','+i+'); return false;"><img src="http://images.hostingmx.com.mx/global/elements/dialog/spacer.gif" class="toggleIcon '+btns[i][0]+'" alt="'+btns[i][1]+'"/><span class="default';
      if(i==active_button) content+=' sel';
      content+='">'+btns[i][1]+'</span></a></div><div class="toggleright';
      if(i==active_button) content+=' active';
      content+='"></div></div>';
      $("#content_button"+i).append(btns[i][3]);
      if(i!=active_button)
        $("#content_button"+i).hide();
   }
   content+='<div class="divclear"></div>';
   $(".navbar").append(content);   
}

/* dialog_toggle(current_id,j)
 * Funcion que efectua el efecto toggle para los botones del cuadro de dialogo, de manera que al dar click sobre el, muestre su correspondiente contenido.
*/
function dialog_toggle(current_id,j)
{ 	$(".toggle > *").removeClass('active');
	$("#"+current_id+" > div").addClass('active');
	$("span").removeClass('sel');
	$("#"+current_id+" a > span").addClass('sel');
	$(".dialogMain > div").hide();
	$("div#content_button"+j).show();    
}

/* dialog_content(number_buttons)
 * Construye una seccion por cada boton que se recibe en el arreglo de botones
*/ 
function dialog_content(number_buttons)
{  for(i=0;i<number_buttons;i++)
      $(".dialogMain").append('<div id=content_button'+i+'></div>');  
   return true;
}

/* DATE
 * Display date */
  
 function displayDate() {
	var today = new Date()
	var yyyy = today.getFullYear()
	var dd = (today.getDate()<=9) ? "0"+(today.getDate()) : today.getDate()
	
	var day = new Array(7);
	day[0] = "Domingo";
	day[1] = "Lunes";
	day[2] = "Martes";
	day[3] = "Miércoles";
	day[4] = "Jueves";
	day[5] = "Viernes";
	day[6] = "Sábado";
	
	var month = new Array(12);
	month[0]  = "Enero";
	month[1]  = "Febrero";
	month[2]  = "Marzo";
	month[3]  = "Abril";
	month[4]  = "Mayo";
	month[5]  = "Junio";
	month[6]  = "Julio";
	month[7]  = "Agosto";
	month[8]  = "Septiembre";
	month[9]  = "Octubre";
	month[10] = "Noviembre";
	month[11] ="Diciembre";
	
	return day[today.getDay()] + " " + dd + " de " + month[today.getMonth()] + " de " + yyyy
}

/* find_char(str,char)
 * Funcion que determina si el caracter char se encuentra dentro de la cadena str.
*/
function find_char(str,char)
{  for(i=0;i<str.length;i++)
  	 if(str.charAt(i)==char) 
	    return true;
  return false;
}

/* number_format(num,decs,separator)
 * Funcion que da formato a un numero float con un numero de decimales determinado y con separacion de miles
*/
function number_format(num,decs,separator)
{   var number_str = ""; var aux;    
	var count = 0,m,k;    
	if(num<0) aux=1; else aux=0;    
	num=num.toString();   	
	if(!find_char(num,"."))
	{  number_str=num+".00";
	   count=num.length;
	}
	else
	{  var decimals=0,ban=0; 
	   for(m=0; m<=num.length-1; m++){
		   if(ban==1)
		     decimals++;		   
		   if(num.charAt(m)==".")
		     ban=1;		
		   if(ban==0) 
		     count++;   
		   number_str += num.charAt(m);   		   
		   if(decimals==decs)
		     break;
		}
		if(decimals<decs)
		{  for(j=decimals;j<decs;j++)
		      number_str+="0";
		}
	}
	if(separator.length>0)
	{  last_thousand=count%3;
	   if(last_thousand>0)
	   {  final_str=number_str.substr(0,last_thousand);
	      for(m=0; m<parseInt(count/3); m++)
	         final_str+=separator+number_str.substr(last_thousand+(m*3),3);
	   }
	   else
	      final_str=number_str.substr(0,count);
	   number_parts=number_str.split(".");	         
	   number_str=final_str+"."+number_parts[1];
	}
	return number_str;    
}

/* mail_validate(mailstr)
 * Funcion para validar una direccion de correo electronico utilizando expresiones regulares. Devuelve true si la cadena tiene formato de
   correo electronico y false en caso contrario.
*/
function mail_validate(mailstr) 
{	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (!filter.test(mailstr)) return false
	return true
}

/* rfc_validate(rfcstr) 
 * Funcion para validar un rfc dado como parametro de entrada utilizando expresiones regulares. Devuelve true en caso de que cumpla los
   requisitos de un RFC y false en caso contrario.
*/
function rfc_validate(rfcstr) 
{	var filter=/^([A-Z\S]{3,4})\d{6}([A-Z\w]{0,3})$/i
	if (!filter.test(rfcstr)) return false
	return true
}

/* domain_validate(domstr) 
 * Funcion para validar un nombre de dominio con uso de expresiones regulares. Devuelve true en caso de que cumpla requisitos y false en caso
   contrario.
*/
function domain_validate(domstr) 
{	var filter=/\w+([\.-]?\w+)*(\.\w{2,4})+$/
    if (!filter.test(domstr)) return false
    var special_chars=[/ñ/,/á/,/é/,/í/,/ó/,/ú/,/Á/,/É/,/Í/,/Ó/,/Ú/,/Ñ/,/ /,/ü/,/Ü/,/'/,/!/,/=/,/>/,/</,/&/,/%/,/,/,/#/,/@/];
    for(i=0;i<special_chars.length;i++)
    {	filter=special_chars[i];
    	if(filter)
    	{	if (filter.test(domstr))
    			return false;
    	}
    }
    return true;
}

/* special_chars(domstr)
 * Determina si una cadena de entrada contiene los caracteres españoles mas comunes utilizados en la lengua española. (Acentos, tildes y dieresis)
*/
function special_chars(domstr)
{	var special_chars=[/ñ/,/á/,/é/,/í/,/ó/,/ú/,/Á/,/É/,/Í/,/Ó/,/Ú/,/Ñ/,/ /,/ü/,/Ü/];
	for(i=0;i<special_chars.length;i++)
	{	filter=special_chars[i];
		if(filter)
		{	if (filter.test(domstr))
				return false;
		}
	}
	return true;
}

/* is_tldavailable(tld_str)
 * Funcion necesaria para validar las busquedas por el modulo WHOIS. Las terminaciones aqui agregadas son las que se permiten buscar mediante el
   modulo WHOIS de hostingmx
*/
function is_tldavailable(tld_str)
{  var tld_av=["com","com.mx","org","gob.mx","net","net.mx","me","info","biz"];
   var flag=0;
   for(i=0; i < tld_av.length; i++)
   {  if(tld_str==tld_av[i])
      {  flag=1; break;}   
   }
   if(flag==1)  return true;
   return false;
}

/* phone_area_code_validate(codestr)
 * Funcion para validar el codigo de area de un numero telefonico (LADA). Devuelve true si es valido y false en caso contrario
*/
function phone_area_code_validate(codestr)
{   var expression =/^([0-9]{3,3})$/
    if(!expression.test(codestr))
       return false;   
    return true;
}

/* phone_validate(codestr)
 * Funcion para validar el codigo un numero telefonico. Devuelve true si es valido y false en caso contrario
*/
function phone_validate(codestr)
{   var expression =/^([0-9]{7,7})$/
    if(!expression.test(codestr))
       return false;   
    return true;
}

/* phone_country_validate(codestr)
 * Funcion para validar el codigo del pais un numero telefonico. Devuelve true si es valido y false en caso contrario
*/
function phone_country_validate(codestr)
{   var expression =/^([0-9]{2,2})$/
    if(!expression.test(codestr))
       return false;   
    return true;
}

/* is_numeric(str)
 * Funcion para validar si una cadena contiene solo numeros. De ser asi devuelve true, si no devuelve false.
*/
function is_numeric(str) 
{	var allowed = "0123456789";
	var flag = true;
	var current;
	for (i = 0; i < str.length && flag == true; i++) 
	{	current = str.charAt(i); 
		if (allowed.indexOf(current) == -1)
		  flag = false;		
	}
	return flag;
}

/* upper_str(string_input)
 * Funcion para convertir una cadena de entrada en sus caracteres correspondientes en mayusculas 
*/
function upper_str(string_input) 
{   var result="";
    var str = string_input.split(''); 
    for(i=0; i<=str.length-1; i++) {
        str[i] = str[i].toUpperCase();
        result+=str[i];
    }
    return(result);
}

/* lower_str(string_input)
 * Funcion para convertir una cadena de entrada en sus caracteres correspondientes en minusculas 
*/
function lower_str(string_input) 
{   var result="";
    var str = string_input.split(''); 
    for(i=0; i<=str.length-1; i++) {
        str[i] = str[i].toLowerCase();
        result+=str[i];
    }
    return(result);
}

/* placeholder(object)
 * Funcion que permite crear el efecto "placeholder" sobre un objeto caja de texto o textarea cualquiera en cualquier navegador
   recibe como entrada el objeto a tratar.
*/
function placeholder(object)
{  object.focus(function(){
	  if($(this).attr('value') == $(this).attr('defaultValue'))	
		$(this).attr('value',''); 	
   });
   object.blur(function(){
	  if($(this).attr('value') == '')	
		$(this).attr('value', $(this).attr('defaultValue')); 	
   });
}

/* random_schar()
 * Funcion que devuelve un caracter especial al azar.
*/
function random_schar()
{  var special=["+","-","*","/","@","=",",",".","_","!","?","<",">"];
   randno = Math.floor ( Math.random() * special.length );
   return special[randno];   
}

/* crypt (string)
 * Funcion para encriptar una cadena de entrada con codificacion MD5 es necesaaria para el logueo crossdomain 
*/
function crypt (string) 
{   function RotateLeft(lValue, iShiftBits) {
        return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
    }
    function AddUnsigned(lX,lY) {
        var lX4,lY4,lX8,lY8,lResult;
        lX8 = (lX & 0x80000000);
        lY8 = (lY & 0x80000000);
        lX4 = (lX & 0x40000000);
        lY4 = (lY & 0x40000000);
        lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
        if (lX4 & lY4) {
            return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
        }
        if (lX4 | lY4) {
            if (lResult & 0x40000000) {
                return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
            } else {
                return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
            }
        } else {
            return (lResult ^ lX8 ^ lY8);
        }
     }
     function F(x,y,z) { return (x & y) | ((~x) & z); }
     function G(x,y,z) { return (x & z) | (y & (~z)); }
     function H(x,y,z) { return (x ^ y ^ z); }
     function I(x,y,z) { return (y ^ (x | (~z))); }
    function FF(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };
    function GG(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };
    function HH(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };
    function II(a,b,c,d,x,s,ac) {
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
        return AddUnsigned(RotateLeft(a, s), b);
    };
    function ConvertToWordArray(string) {
        var lWordCount;
        var lMessageLength = string.length;
        var lNumberOfWords_temp1=lMessageLength + 8;
        var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
        var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
        var lWordArray=Array(lNumberOfWords-1);
        var lBytePosition = 0;
        var lByteCount = 0;
        while ( lByteCount < lMessageLength ) {
            lWordCount = (lByteCount-(lByteCount % 4))/4;
            lBytePosition = (lByteCount % 4)*8;
            lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
            lByteCount++;
        }
        lWordCount = (lByteCount-(lByteCount % 4))/4;
        lBytePosition = (lByteCount % 4)*8;
        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
        lWordArray[lNumberOfWords-2] = lMessageLength<<3;
        lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
        return lWordArray;
    };
    function WordToHex(lValue) {
        var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
        for (lCount = 0;lCount<=3;lCount++) {
            lByte = (lValue>>>(lCount*8)) & 255;
            WordToHexValue_temp = "0" + lByte.toString(16);
            WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
        }
        return WordToHexValue;
    };
    function Utf8Encode(string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
        }
        return utftext;
    };
    var x=Array();
    var k,AA,BB,CC,DD,a,b,c,d;
    var S11=7, S12=12, S13=17, S14=22;
    var S21=5, S22=9 , S23=14, S24=20;
    var S31=4, S32=11, S33=16, S34=23;
    var S41=6, S42=10, S43=15, S44=21;
    string = Utf8Encode(string);
    x = ConvertToWordArray(string);
    a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
    for (k=0;k<x.length;k+=16) {
        AA=a; BB=b; CC=c; DD=d;
        a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
        d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
        c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
        b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
        a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
        d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
        c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
        b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
        a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
        d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
        c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
        b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
        a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
        d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
        c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
        b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
        a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
        d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
        c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
        b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
        a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
        d=GG(d,a,b,c,x[k+10],S22,0x2441453);
        c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
        b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
        a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
        d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
        c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
        b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
        a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
        d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
        c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
        b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
        a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
        d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
        c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
        b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
        a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
        d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
        c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
        b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
        a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
        d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
        c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
        b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
        a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
        d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
        c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
        b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
        a=II(a,b,c,d,x[k+0], S41,0xF4292244);
        d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
        c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
        b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
        a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
        d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
        c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
        b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
        a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
        d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
        c=II(c,d,a,b,x[k+6], S43,0xA3014314);
        b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
        a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
        d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
        c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
        b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
        a=AddUnsigned(a,AA);
        b=AddUnsigned(b,BB);
        c=AddUnsigned(c,CC);
        d=AddUnsigned(d,DD);
    }
    var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
    return temp.toLowerCase();
}

/* init_login_buttons()
 * Funcion que programa los elementos del formulario de inicio de sesion en cualquier lugar del subdominio www
*/
function init_login_buttons()
{  placeholder($('input[@name=user]'));   
   placeholder($('input[@name=password]'));   
   $('input[@name=password]').keydown(function(e){
      if (e.keyCode == 13) 
      {  $("#loginlink").click();
         return false;
      }
   });
   $("#loginlink").click(function()
   {	$("div.validate-error").remove();
   		if($("#error_displayed").val()==1)
		  $("#disp_log_inputs").click();                 
		else
		{	var user=$('input[@name=user]').val();
			var pass=crypt($('input[@name=password]').val());
			if(user=="usuario")
			  alert("Debes teclear tu usuario");    
			else
			{  var path="https://auth.hostingmx.com.mx/login/index.php";			  
			   $.ajax({
					type: "POST",
					data: "method=POST&url="+path+"&user="+user+"&password="+pass,
					url: "/global/includes/crossdomain.php",
					success: function(content) {	   
						if(content=="0")
						 	$("div#session_status").append('<div class="validate-error"><span>Datos Incorrectos, intente de nuevo</span></div>');						 
						else
							register_session(content);						 
					},
					error: function(){
						$("#loginlink").click();
					}
 			    }); 
			}
		}
		return false;
  });
}

function register_session(session)
{	$.ajax({
		type: "POST",
		data: "session="+session,
		url: "/global/includes/function_register_session.php",
		success: function(content) {	   
			$("div#session_status").html(content);
			$("div.atlaslogo").hide();
			$("input[@name=autentified]").val("true");
			chrono_start();
		},
		error: function(){
			register_session(session);
		}			                		
	});
}

/* Funcion que destruye una sesion activa */
function logout()
{	if(confirm("Usted esta a punto de cerrar su sesi\u00F3n.\n\nDesea continuar?"))
	{	$.ajax({
			url: "/global/includes/function_logout.php",
			success: function() {	   
				 $("form#loginform").append("<input type='hidden' name='logout' value=1><input type=hidden value="+location.href+" name=prevlocation>");
				 $("form#loginform").attr("action","https://auth.hostingmx.com.mx/login/");
				 $("form#loginform").submit();
			},
			error: function() {
				logout();
			}			                		
		});		
	}
}
//SESSION TIME CHRONOMETER
var ChronoID = null;
var ChronoExecuting = false;
var decimals=0, seconds=0, minutes=0;
  
/* Funcion que detiene el cronometro de sesion*/
function chrono_stop (){  
    clearTimeout(ChronoID);  
    ChronoExecuting = false;
}  

/* Funcion que inicializa los valores del cronometro*/
function init_chrono () {  
    decimals = 0;
    seconds = 0; 
    minutes = 0;      
}

/*Funcion que muestra un overlay y un mensaje de bloqueado al pasar 15 minutos de inactividad de un usuario logueado */  
function session_bloqued_action()
{   chrono_stop();               
	dialog("");
	$(".dialogContainer").css("height","61px");
	$(".dialogContent").css({"height":"61px", "margin":"0", "padding":"0"});
    $(".navbackground").css({"margin":"0", "padding":"0"});
    $(".navbackground > *").hide();
    $(".navbackground").append('<div id="session_message"></div>');
    $("#session_message > *").show();
    $(".dialogFooter").hide();
    if ($.browser.msie)
    {   if($.browser.version<7.0)
          $(".dialogBackground,#contentDomainSearch").hide();                  
    }
    $("#session_message").append('<span>Se ha bloqueado tu sesi&oacute;n por inactividad, debes actualizar la p&aacute;gina. Da un clic <a href="javascript:location.reload(true)">aqu&iacute;.</a></span><img class="warning" src="http://images.hostingmx.com.mx/global/elements/dialog/dialog_session_sessiontime20080819.png" alt="Se ha cerrado la sesi&oacute;n"/><div class="clear"></div>');	
}  

/* Funcion que al cumplir 15 minutos aproximadamente, ejecuta la funcion session_bloqued_action()*/
function chrono_counter () {               
    decimals++;
    if ( decimals > 9 ) {  
        decimals = 0;  
        seconds++;
        if ( seconds > 59 ) {  
            seconds = 0;  
            minutes++;
            if ( minutes > 15 ) {                  
               session_bloqued_action();	         
			   return true;           
            }  
        }  
    }    
    ChronoID = setTimeout("chrono_counter()", 100);
    ChronoExecuting = true;
    return true;
}  

/* Funcion que inicializa el conteo de 15 minutos antes de bloquear la sesion de un usuario logueado */
function chrono_start() {  
   if($("input[@name=autentified]").val()=="true")
   { chrono_stop();
     init_chrono(); 
     chrono_counter();
     $.ajax({
      type: "POST",
      data: "ajax_petition=1",
      url: "/global/includes/function_sessiontime.php",
      success: function(content) {        		   
	     if(content=="0")
	     {  session_bloqued_action();
	     }
      }
     });  
   }
}  

function secret_question(code)
{  var question="";
   switch(code)
   {  case "1": {question="¿Cu&aacute;l es el color de ojos de mi esposa/esposo?"; break;}
	  case "2": {question="¿Cu&aacute;l es/fue mi matr&iacute;cula de universitario?"; break;}
 	  case "3": {question="¿En qu&eacute; ciudad nac&iacute;?"; break;}
	  case "4": {question="¿En qu&eacute; escuela estudi&eacute; la carrera?"; break;}
	  case "5": {question="¿Cu&aacute;l es la fecha de mi aniversario de matrimonio?"; break;}
	  case "6": {question="¿Cu&aacute;l es mi n&uacute;mero de n&oacute;mina?"; break;}
	  case "7": {question="¿Cu&aacute;l es mi color favorito?"; break;}
	  case "8": {question="¿Cu&aacute;l es el apellido de soltera de mi madre?"; break;}
   }
   return question;
}

/* prettycheckbox(checkbox_object,anchor_object)
 * Funcion para inicializar un checkbox y convertirlo en su clase "pretty". Recibe el objeto checkbox y el objeto anchor que contiene la imagen como 
   parametros
*/
function prettycheckbox(checkbox_object,anchor_object)
{	$(checkbox_object).hide();
	$(anchor_object).click(function(){
		if($(anchor_object).hasClass('active'))
		{	$(anchor_object).removeClass('active').addClass('inactive');
			$(checkbox_object).removeAttr('checked');
		}
		else
		{	$(anchor_object).removeClass('inactive').addClass('active');
			$(checkbox_object).attr('checked','checked');
		}
	});
}
