    function openWindow( url, name, params ) {
      window.open( url, name, params );
    }

    function openMenu( area ) {
      var cant	= 4;
      for( i = 1; i <= cant; i++ )
        document.getElementById( 'sub' + i ).style.display	= 'none';
      document.getElementById( 'sub' + area ).style.display	= 'block';
    }

    function openItem( type, id ) {
      var item	= document.getElementById( type + id );
      if ( item.style.display == 'none' )
        item.style.display		= 'block';
      else
        item.style.display		= 'none';
    }

    function setCurrency() {
      var currency			= document.getElementById('curr');
      if ( currency ) {
        if ( document.location.href.indexOf('.htm') > 0 )
          document.location.href	= document.location.href.substr(0,document.location.href.indexOf('.htm')) + '.htm?curr=' + currency.value;
        else
          document.location.href	= document.location.href.substr(0,document.location.href.indexOf('.php')) + '.php?curr=' + currency.value;
      }
    }

    function ark_showServices( service, section ) {
      ajax( '../../../inc/ajax.php?action=showServices&serv=' + service + '&section=' + section );
    }

    function ark_showFields( service, id ) {
      ajax( '../../../inc/ajax.php?action=showFields&serv=' + service + '&id=' + id );
    }

    function showPaymentMethods() {
      ajax( '../../../inc/ajax.php?action=showPaymentMethods&id=' + document.getElementById('forma_de_pago').value );
    }

    function ark_domainAvailability() {
      ajax( '../../../inc/ajax.php?action=domainAvailability&domain=' + document.getElementById('domain').value + '&ext=' + document.getElementById('extension').value );
      return false;
    }

    var precio			= new Array();
    function addService() {
      var div_serv		= document.getElementById('servicios');			// contenedor
      var cant			= div_serv.getElementsByTagName('h1');			// cantidad de servicios seleccionados.
      var serv			= document.getElementById('servicio1').cloneNode(true);	// servicio a clonar
      var ultimo		= cant[cant.length-1].parentNode.id;
      processNode( serv, parseFloat(ultimo.substring( ultimo.indexOf('servicio')+8 ))+1 );
      div_serv.appendChild(serv);
      if ( serv.outerHTML )
        serv.outerHTML		= serv.outerHTML.replace(/>/, " name=" + serv.name + ">");
      precio[precio.length]	= 0;
    }

    function dropService( id ) {
      var div_serv		= document.getElementById('servicios');
      var cant			= div_serv.getElementsByTagName('h1').length;
      if ( document.getElementById('servicio'+id) ) {
        var serv		= document.getElementById('servicio'+id);
        serv.parentNode.removeChild(serv);
      }
      precio[id]		= 0;
    }

    function processNode( nodo, id ) {
      nodo.setAttribute( 'id', 'servicio'+id );
      var label			= nodo.getElementsByTagName('label')[0];
      var servicios		= nodo.getElementsByTagName('select')[0];
      var divs			= nodo.getElementsByTagName('div');
      var span			= nodo.getElementsByTagName('span')[0];
      var a			= span.getElementsByTagName('a')[0];
      label.setAttribute( 'for', 'id_seccion'+id );
      servicios.setAttribute( 'id', 'id_seccion'+id );
      servicios.setAttribute( 'onchange', 'ark_showServices('+id+',this.value);' );
      servicios.value		= '';
      for ( i = 0; i < divs.length; i++ ) {
        if ( divs[i].id.indexOf('plan_campos') != -1 ) {
          divs[i].setAttribute( 'id', 'plan_campos'+id );
          divs[i].innerHTML	= '';
        }
        else if ( divs[i].id.indexOf('plan') != -1 ) {
          divs[i].setAttribute( 'id', 'plan'+id );
          var label		= divs[i].getElementsByTagName('label')[0];
          var planes		= divs[i].getElementsByTagName('select')[0];
          label.setAttribute( 'for', 'id_plan'+id );
          planes.setAttribute( 'id', 'id_plan'+id );
          planes.setAttribute( 'onchange', 'ark_showFields('+id+',this.value);' );
          planes.length		= 1;
        }
      }
      span.style.display	= 'block';
      a.setAttribute( 'href', 'javascript:dropService('+id+');' );
      if ( servicios.outerHTML )
        servicios.outerHTML	= servicios.outerHTML.replace(/>/, " name=" + servicios.name + ">");
    }

    function validate( form ) {
      var error = false;
      var j     = -1;
      var chain = '';
      for ( var i = 0; i < form.elements.length; i++ ) {
        if ( form.elements[i].title && ( form.elements[i].value == '' || ( form.elements[i].type == 'checkbox' && !form.elements[i].checked ) ) ) {
          if ( j < 0 ) {
            j   = i;
          }
          chain = chain + '- ' + form.elements[i].title + '\n';
          error = true;
        }
      }
      if ( error ) {
        alert( 'El o los siguientes campos no pueden quedar incompletos antes de proceder:\n' + chain );
        form.elements[j].focus();
        return false;
      }
      else {
        for ( var i = 0; i < form.elements.length; i++ ) {
          if ( form.elements[i].title && form.elements[i].name == 'email' ) {
            if ( !validEmail( form.elements[i].value ) ) {
              alert( 'Email inválido!' );
              form.elements[i].focus();
              return false;
            }
            else {
              return true;
            }
          }
        }
      }
    }

    function validEmail( email ) {
      return email.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.info)|(\.edu)|(\.gov)|(\.org)|(\.info)|(\.biz)|(\.tv)|(\.tk)|(\.es)|(\.cl)|(\.ch)|(\..{2,2}))$)\b/gi);
    }

    url           = document.location.href;
    xend          = url.lastIndexOf("/") + 1;
    var base_url  = url.substring( 0, xend );

    function ajax( url ) {
      if ( url.substring(0, 4) != 'http' )
        url       = base_url + url;
      var jsElem  = document.createElement('SCRIPT');
      jsElem.type = 'text/javascript';
      jsElem.src  = url;
      document.body.appendChild( jsElem );
    }
