<!-- 
/***********************************************************************************************************************/
//	VARIABLES USADAS COMO GLOBALES POR LA CLASE, NO MODIFICAR, USAR LA SECCION DE CONFIGURACION.
var CONTAINER_CHECKBOX, TEXTBOX_DOMAINS, CONTAINER_RESULTS, CONTAINER_ERROR_FORM, CONTAINER_ERROR_RESULTS, CLASS_ERROR, SINGLE_SELECTION, PHP_SCRIPT_VALIDATOR, PHP_SCRIPT_LIST, SHOW_CHECKBOX, SHOW_CHECKBOX_CHECKED,LINCENCE_STATE, CLASS_RESULT="",THIS ;
/************************************************************************************************************************
	FUNCION LLAMADA AL RECIBIR EL ARCHIVO XML AL VALIDAR LA DISPONIBILIDAD DEL DOMINIO.
************************************************************************************************************************/
var VALIDATE_DOMAIN = function(oXMLR){
	var resp;
	var oXMLR_Resp = oXMLR.responseText;

	var msgDisponible="", urlDomain="";
	var pattern;
	var domain="", extension="", disponible="", error="";

	domain = getTag('nombre',oXMLR_Resp);	
	extension = getTag('extension',oXMLR_Resp);
	disponible = getTag('disponible',oXMLR_Resp);

	urlDomain =  domain+'.'+extension;
	
	if( disponible==1 )
		msgDisponible = "Disponible";
	else
		msgDisponible = "<strong>No Disponible</strong>";
	var id = "";
	id = domain+"_"+extension;

	var tmp = document.getElementById( "estado_"+id );

	if( tmp == null ){	return;	}

	tmp.innerHTML = msgDisponible;

	if(SHOW_CHECKBOX ){		
		id = "check_"+domain+"_"+extension;
		var divcheck = document.getElementById( id );		

		if( disponible==1 ){
			var check = document.createElement("input");
			divcheck.innerHTML = "";
			check.setAttribute("id","dom_"+id);
			check.setAttribute("name","dominios[]");
			check.setAttribute("value",urlDomain);
			check.setAttribute("type","checkbox");
			if( SHOW_CHECKBOX_CHECKED )
				check.checked = true;
			divcheck.appendChild( check );
		}else{			
			divcheck.innerHTML = "<a href=\"javascript:POP_DOMAIN('"+urlDomain+"');\">Detalles</a>";
		}		
	}
	return;
}
/*************************************************************************************************************************/
var POP_DOMAIN = function( domain ) {
	var id = parseInt(Math.random()*10000);	
	window.open("popup-dominio.php?domain="+domain,"popup"+id,"width=520,height=400");	
}
/*************************************************************************************************************************/
function DOMAINS_CHECKS(){
//----------------------------------------------------------------------------------------------------------------------
	//CONFIGURABLES - VALORES POR DEFECTO / CAMBIAR DESDE EL OBJETO INVOCADOR
	this.containerCheckbox = "frmWhois";			//AREA QUE CONTIENE LOS CHECKBOX CON LAS EXTENSIONES.
	this.txtboxDomain = "textDominios";				//TEXTBOX PARA INTRODUCIR EL NOMBRE DE DOMINIO.
	this.containerResults = "div_resultados";		//AREA QUE CONTENDRA LA LISTA DE DISPONIBILIDADES.
	this.containerErrorForm = "div_errores";		//AREA DE MENSAJES DE ERRORES DEL FORMULARIO DE EXTENSIONES.
	this.classError = "msg-error";					//NOMBRE DE CLASE PARA DAR FORMATO A MENSAJES DE ERROR.
	this.anchorName = "";							//NOMBRE DE MARCADOR AL QUE SE MOVERA LA PAGINA PARA MOSTRAR RESULTADOS.	
	this.imageWaitingResults = "images/load.gif";	//IMAGEN MOSTRADA AL ESPERAR LA LISTA DE DOMINIOS A CONSULTAR.

	//OPCIONES DE CHECKBOX
	this.showCheckbox = true;		//DEFINE SI SE MOSTRARAN CHECKBOXES
	this.checkboxChecked = false;	//DEFINE SI LOS CHECKBOXESES ESTARAN ACTIVADOS POR DEFECTO.

	//OPCIONES DE CONTRATACION.	
	this.buyLegend 	= "";	//TEXTO EN EL BOTON COMPRAR/CONTRATAR
	this.buyUrl 	= "";	//PAGINA DE CONTRARACION.
	this.buyImage 	= "";	//IMAGEN PARA EL BOTON COMPRAR/CONTRATAR	
	this.singleSelection = true;					//DETERMINA SI SOLO SE PERMITE SELECCIONAR UN SOLOR RESULTADO.
	this.containerErrorResults = "div_errores";		//AREA DE MENSAJES DE ERRORES DE LOS RESULTADOS.
	
	//RESERVADAS
	this.extensions = new Array();	//ALMACERA LAS EXTENSIONES SELECCIONADAS.
	this.domains = new Array();		//ALMACENA LOS DOMINIOS PARA BUSCAR.
	this.baseUrl = "";				//ALMACENA LOS PARAMETROS POR DEFECTO PARA TODAS LAS LLAMADAS ASINCRONAS.

	//NOMBRE DE LOS SCRIPT QUE DEVOLVERAN LOS RESULTADOS ASINCRONOS.
	this.urlScriptTableDomains = "tabla-resultados.php";
	this.urlScriptCheckDomains = "server-interfaz.php";

//----------------------------------------------------------------------------------------------------------------------	
	this.release = function(){	//FUNCION PRINCIPAL, DIPARA LA BUSQUEDA DE DINPONIBILIDAD DE DOMINIOS
		//ASIGNACION A VARIABLES GLOBALES.
		CONTAINER_CHECKBOX 		= this.containerCheckbox;
		TEXTBOX_DOMAINS			= this.txtboxDomain;
		CONTAINER_RESULTS		= this.containerResults;
		CONTAINER_ERROR_FORM	= this.containerErrorForm;
		CONTAINER_ERROR_RESULTS = this.containerErrorResults;	
		CLASS_ERROR				= this.classError;
		SINGLE_SELECTION		= this.singleSelection;

		PHP_SCRIPT_VALIDATOR	= this.urlScriptCheckDomains;
		PHP_SCRIPT_LIST			= this.urlScriptTableDomains;

		SHOW_CHECKBOX = this.showCheckbox;
		SHOW_CHECKBOX_CHECKED = this.checkboxChecked;
		THIS = this;		
		//GUARDANDO LA CLASE ORIGINAL DEL CONTENEDOR DE RESULTADOS
		if( CLASS_RESULT=="")
			CLASS_RESULT = document.getElementById(CONTAINER_RESULTS).getAttribute("class");
		if( CLASS_RESULT=="" || CLASS_RESULT==undefined )
			CLASS_RESULT = document.getElementById(CONTAINER_RESULTS).getAttribute("className");

		this.baseUrl = "contratar_opciones="+this.buyLegend+"|"+this.buyImage+"|"+this.buyUrl;
		if( this.showCheckbox) this.baseUrl+="&checks=si"; 
		if( ! this.showCheckbox ) this.checkboxChecked=false;
		if(this.checkboxChecked) this.baseUrl+="&checks_s=si";
	 	this.fill_arrays();
		if( !this.check_data() ) return false;

		this.check_licence();
		
		if( this.anchorName!='' )
			document.location.href='#'+this.anchorName;
		return true;
	}	
//----------------------------------------------------------------------------------------------------------------------
	this.check_data = function(){		
		setError('',CONTAINER_ERROR_FORM,'');
		setError('',CONTAINER_ERROR_RESULTS,'');		
		if( this.domains.length<=0 ) 
			return setError(CLASS_ERROR,CONTAINER_ERROR_FORM, "Ingrese un nombre de dominio.");		
		var ereg = /^[a-zA-Z0-9]+(\-[a-zA-Z0-9]|[a-zA-Z0-9])*$/;
		var bndDomainSintax = true;
		for( i=0;i<this.domains.length;i++ ){
			if( !ereg.test(this.domains[i]) ) {
				bndDomainSintax = false;
				break;
			}
		}		
		if(!bndDomainSintax)
			return setError(CLASS_ERROR,CONTAINER_ERROR_FORM, "La sintaxis del dominio no es correcta.");			
		if( this.extensions.length<=0 )
			return setError(CLASS_ERROR,CONTAINER_ERROR_FORM, "Seleccione al menos una extensi&oacute;n.");
		return true;
	}
//----------------------------------------------------------------------------------------------------------------------
	this.fill_arrays = function (){		
		var checks = getCheckboxes( CONTAINER_CHECKBOX );
		var domainName = document.getElementById(TEXTBOX_DOMAINS).value;
		this.domains = new Array();
		this.extensions = new Array();		
		if( domainName!='' )
			this.domains[0] = domainName;
		for( i=0;i<checks.length; i++ )
			this.extensions[ this.extensions.length ] = checks[i].value;
	}
//----------------------------------------------------------------------------------------------------------------------
	this.check_domains = function(){
		var url, functionOnSuccess, variables;
		url = PHP_SCRIPT_VALIDATOR;
		
		for( d=0; d<this.domains.length; d++ ){			//DOMINIOS		
			for( e=0; e<this.extensions.length; e++ ){	//EXTENSIONES		
				var XMLRequestObj =  new XHConn();
				variables = "&exe=server&solicitud="+this.domains[d]+"|"+this.extensions[e];
				XMLRequestObj.connect( url, "GET", this.baseUrl+variables, VALIDATE_DOMAIN );

			}//EXTENSIONES
		}//DOMINIOS	
	}	
//----------------------------------------------------------------------------------------------------------------------
	this.build_table = function(){
		var XMLRequestObj =  new XHConn();
		var url = PHP_SCRIPT_LIST
			,domains=""
			,extensions=""
			,variables ="";
		
		for(i=0;i<this.domains.length;i++)
			domains+= this.domains[i]+"|";
		for(i=0;i<this.extensions.length;i++)
			extensions+= this.extensions[i]+"|";
			
		domains 	= domains.replace(/\|$/,'');
		extensions 	= extensions.replace(/\|$/,'');
		
		var functionOnSuccess 	 = function(oXMLR){
			var oXMLR_Resp = oXMLR.responseText;
			document.getElementById(CONTAINER_RESULTS).innerHTML = oXMLR_Resp;
			THIS.check_domains();
		}

		variables = "&exe=cliente&dominios="+domains+"&extensiones="+extensions;
		XMLRequestObj.connect( url, "GET", this.baseUrl+variables, functionOnSuccess );
	}
//-----------------------------------------------------------------------------------------------------------------------
	this.check_licence = function(){
		var XMLCheckLincence =  new XHConn();		
		LINCENCE_STATE = true;		
		setError(CLASS_RESULT,CONTAINER_RESULTS,"");
		document.getElementById(CONTAINER_RESULTS).innerHTML = '<div style="text-align:center;"><img src="'+this.imageWaitingResults+'" alt="Cargando..." /></div>';	
		
		var fnLicence = function(oXMLR){				
			var error='';
			var oXMLR_Resp = oXMLR.responseText;					
			error = getTag('error',oXMLR_Resp); 
			
			if( error!='' )	{
				LINCENCE_STATE = false;	
				setError(CLASS_ERROR,CONTAINER_RESULTS,error);
			}				
			if( LINCENCE_STATE==true ){
				THIS.build_table();	
									
			}
		}
		XMLCheckLincence.connect( PHP_SCRIPT_VALIDATOR, "GET", "", fnLicence );		
	}
}
/****************************************************************************************************************************/
function XHConn() {
	var xmlhttp, bComplete = false, aaa;
	try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
	catch (e) { try { xmlhttp = new XMLHttpRequest(); }
	catch (e) { xmlhttp = false; }}}
	if (!xmlhttp) return null;
	this.connect = function(sURL, sMethod, sVars, fnDone) {
		
		if (!xmlhttp) return false;
		bComplete = false;
		sMethod = sMethod.toUpperCase();
		try {
			if (sMethod == "GET") {
				xmlhttp.open(sMethod, sURL+"?"+sVars, true);
				sVars = "";
			}
			else {
				xmlhttp.open(sMethod, sURL, true);
				xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
				xmlhttp.send(sVars);
			}
			xmlhttp.onreadystatechange = function() {
				if (xmlhttp.readyState == 4 && !bComplete) {
					bComplete = true;					
					fnDone(xmlhttp);
				}
			};
			xmlhttp.send(sVars);
		}
		catch(z) { return false; }
		return true;
	};
	return this;
}
/******************************************************************************************************************/
function setError(divclass, divErrorID, msg){	
	var div;
	try		{	div = document.getElementById(divErrorID);	}
	catch(e){	div = false;	}
	if( !div )	return;
	div.setAttribute("class",""+divclass);
	div.setAttribute("className",""+divclass);
	div.innerHTML = msg;
	return false;
}
/******************************************************************************************************************/
function getCheckboxes(CONT_ID){
	var cont = document.getElementById(CONT_ID);
	var checks  = cont.getElementsByTagName("INPUT");
	var lst = new Array();
	for( i=0;i<checks.length;i++ ){
		if( checks[i].type=='checkbox' ){
			if(checks[i].checked==true)
				lst[ lst.length ] = checks[i];
		}
	}
	return lst;
}
/*******************************************************************************************************************/
function getTag(tagName, strXML){
	var pattern = new RegExp("<"+tagName+">(.*)</"+tagName+">");
	if( pattern.exec( strXML ) ){
		strXML = strXML.match( pattern );
		strXML =  strXML[1];	
	}
	return strXML;	
}

-->
