/**
 * Funções JavaScript
 * 
 * @author Fellipe Castro <fcastro@infolink.com.br> InfoLink Teleinformática
 * @created 24/10/2008
 */

/*function montaAction( Email, idForm ){

	if( ( Email.indexOf( "@" ) == -1) || ( Email.indexOf("@infolink.com.br") != -1 ) ){
		document.getElementById( idForm ).action = 'http://webmail.infolink.com.br/cgi-bin/webmail.cgi';
		if( Email.indexOf("@infolink.com.br") != -1 ){
			document.getElementById( 'user' ).value = Email.substr(0, Email.indexOf("@"));
		}
	} else{
		document.getElementById( idForm ).action = 'http://webmail.' + Email.substr(Email.indexOf("@") + 1) + '/cgi-bin/webmail.cgi' ;
		document.getElementById('user2').value=Email;
//		document.getElementById('user').value='';
	}

	
}*/
/*
function montaAction3( Email, idForm ){
	if( ( Email.indexOf( "@" ) == -1) || ( Email.indexOf("@infolink.com.br") != -1 ) ){
		document.getElementById( idForm ).action = 'https://webmails.infolink.com.br/cgi-bin/webmail.cgi';
		if( Email.indexOf("@infolink.com.br") != -1 ){
			popEmail = Email.substr(0, Email.indexOf("@")) + '@pop.infolink.com.br';
			document.getElementById('user').value=popEmail;
		} else if( Email.indexOf( "@" ) == -1){
			document.getElementById('user').value=Email+"@pop.infolink.com.br";
		}
	} else{
		document.getElementById( idForm ).action = 'http://webmail.' + Email.substr(Email.indexOf("@") + 1) + '/cgi-bin/webmail.cgi' ;
		document.getElementById('user').value=Email;
	}

	
}
*/

function montaAction( Email, idForm, serverName ){
	
	if( ( ( Email.indexOf( "@" ) == -1) || ( Email.indexOf("@infolink.com.br") != -1 ) ) ){
		
		document.getElementById( idForm ).action = 'https://webmails.infolink.com.br/cgi-bin/webmail.cgi';
		
		if( Email.indexOf("@infolink.com.br") != -1 ){
			popEmail = Email.substr(0, Email.indexOf("@")) + '@pop.infolink.com.br';
			document.getElementById('user').value=popEmail;
		} else if( Email.indexOf( "@" ) == -1){
			document.getElementById('user').value=Email+"@pop.infolink.com.br";
		}
		
	} else {
		
		var domainName = 'webmail.' + Email.substr(Email.indexOf("@") + 1);
		
		// Verificamos qual servidor responderá a requisição ao nome 'webmails.infolink.com.br'
		var ipServerWebMail = httpRequestNoBlock('http://' + serverName + '/_inc/dnscheck.php', "domain="+domainName);
		
		// Caso seja o servidor com SSL
		if(ipServerWebMail == '200.187.64.69'){
			
			document.getElementById( idForm ).action = 'https://webmails.infolink.com.br/cgi-bin/webmail.cgi';
			
			// Devemos montar a seguinte string - exemplo: contato%viacontato.com@pop.viacontato.com
			popEmail = Email.substr(0, Email.indexOf("@")) +'%'+ Email.substr(Email.indexOf("@") + 1) + '@pop.' + Email.substr(Email.indexOf("@") + 1);
			
			document.getElementById('user').value=popEmail;
			
		} else {
			document.getElementById( idForm ).action = 'http://webmail.' + Email.substr(Email.indexOf("@") + 1) + '/cgi-bin/webmail.cgi' ;
			document.getElementById('user').value=Email;
		}
		
	}

	
}

// #############################################    /FERRAMENTAS     #############################################

function setClass(id, classe){
	document.getElementById(id).className = classe;
}

// #############################################    /FERRAMENTAS     #############################################

// #############################################    JQUERY     #############################################

// Aplica o efeito Toogle em derterminado campo
function toogle(idCampo) {
	$('#' + idCampo).toggle(400);
}

// Esconde derterminado campo
function hide(id) {
	$('#' + id).hide();
}

// Mostra derterminado campo
function show(id) {
	$('#' + id).show();
}

// Remover determinado campo
function remove(id) {
	$('#' + id).remove();	
}

// Função que reseta os valores do formulário
function resetaForm(id) {
	
	$('#' + id).resetForm();
	$('#' + id + '	:input:hidden').val('');
	//Usa XPath para alcançar todos os campos (input, select, textarea, button).
	//$('#'+form_id+'	:input:hidden').val('');
	//$('#'+form_id+' :textarea').val('');
    // OU se cajo deseje resetar apenas os especificos: -> $('#'+form_id+' .resetar').val('');
}

// #############################################    /JQUERY     #############################################

// #############################################    AJAX    #############################################

/**
	Permite requisições via http( Ajax )
	
	@param  String  urlRequest 
	@param  Boolean loading
	
	@return String responseText
	
	Obs: A propriedade async foi alterada para false, pois
	o quando true o "restante" do script era executado
	enquato a "resposta" não chegava, e quando ela a mesma era
	obtida ele já tinha terminado o script. ex: excluirRegistro
**/
function httpRequest( urlRequest, dadosForm, idCampo ) {
//	alert(urlRequest + ' ' + dadosForm + ' ' + idCampo);
	
	var resp;
	
	var ajax = $.ajax({ 
	type: 'POST', 
	url: urlRequest,
	data: dadosForm,
	async: false,
	beforeSend: function(){ $.blockUI({ message: '<img src="../_img/loader.gif">' }) },
	success: function(resposta){
	$.unblockUI();
	if ( idCampo != null ){
		
		// "Exibimos"(innerHTML) a resposta obtida no campo informado
		$('#'+idCampo).html( resposta );
		
	} else {
		
		/*Armazenamos numa variavel global da funcao, pois nao foi possivel dar return
		* de dentro desta function.
		*/
		resp = resposta;
		
	}
	}
	});
	
	// Retorna a resposta, caso ela tenha sido obtida e nenhum idCampo for informado
	if( resp != null && idCampo == null ){
		
		return resp;
		
	}
}

function httpRequestNoBlock( urlRequest, dadosForm ) {
	
	var resp;
	
	var ajax = $.ajax({ 
		type: 'POST', 
		url: urlRequest,
		data: dadosForm,
		async: false,
		success: function(resposta){
	             	/**
	             	 * Armazenamos numa variavel global da funcao, pois nao foi possivel dar return
	             	 * de dentro desta function.
	             	 */
		         	 resp = resposta;
		         }	
	});
	
	// Retorna a resposta, caso ela tenha sido obtida e nenhum idCampo for informado
	return resp;

}

/**
	Escreve em campo html a resposta da requisição http(Ajax)
**/
function exibeResposta( idCampo, resposta ) {
	$('#'+idCampo).html( resposta );
	
}

/**
 Função de teste para informar o funcionamento do ajax
**/
function httpResposta( urlRequest, idCampo) {
	
	var resposta = httpRequest( urlRequest );
	exibeResposta( idCampo, resposta );
		
}

// #############################################    /AJAX    #############################################

// #############################################    FORMULARIOS     #############################################

/**
 * Faz a validação dos campos de um formulário
 *
 * @param DOM form
 * @return Boolean
 */
function validaForm( form ){
	
	var preenchidos = true;
	
	// Percorremos todos os elementos do formulário
	for(i=0;i<form.elements.length;i++){

		// Verificamos se o campo tem preenchimento obrigatório
		if( form.elements[i].title.indexOf('*') > -1 ){
			
			if( form.elements[i].value.length == 0 ){
				/*if(!(form.elements[i].name == 'Senha' || form.elements[i].name == 'pass' || form.elements[i].name == 'senha')){
					
					form.elements[i].value = 'Campo obrigatório';

				}*/
				
				preenchidos = false;
				form.elements[i].className += ' erro-form';
				$('#msg').html("<span style='font-weight: normal;' class='msgerro'>Os campos destacados são de preenchimento obrigatório!</span>");
				
			}
			
			/*if(form.elements[i].value == 'Campo obrigatório'){
				preenchidos = false;
			}*/
			
		}
		
		if( form.elements[i].name == 'dominio' ){
			if( (form.elements[i].value.indexOf('www') > -1) || (form.elements[i].value.indexOf('www') > -1 )){
				
				preenchidos = false;
				form.elements[i].className += ' erro-form';
				form.elements[i].value = 'Sem www';
			}
			
			if(form.elements[i].value == 'Sem www'){
				preenchidos = false;
			}
		}
		
		if( form.elements[i].name == 'user' ){
   
			if( (!form.elements[i].value.indexOf('@') > -1)){
				if(form.elements[i].value != '@infolink.com.br'){
   				//	form.elements[i].value += '@infolink.com.br';
					//alert(form.elements[i].value);
				}
		   	}
			/*if(form.elements[i].value == 'Sem @infolink.com.br'){
				preenchidos = false;
			}*/
		}
		
	}
	
	// Caso um dos campos obrigatorios nao tenham sido preenchido
	if( !preenchidos ){
		
		// Exibimos uma mensagem de erro
		//$('#msg').html( "<span class='msgerro'>Por favor, preencha os campos devidamente.</span>" );
		return false;
		
	} else {
		
		return true;
					
	}
	
}

// #############################################    /FORMULARIOS     #############################################

// ##################################################   INDEX   ##################################################

/**
 * Limpa campo de nome de domínio quando ele recebe focus
 */
function limparCampoNomeDominio( idCampo, valorCampo ){
	
	if( valorCampo == ""){
		
		document.getElementById(idCampo).value = "NOMEDOSEUSITE";
		
	} else if( valorCampo == "NOMEDOSEUSITE" ){

		document.getElementById(idCampo).value = "";
			
	}
}


// ##################################################   /INDEX  ################################################## 

/**
  * Funcao que verifica disponibilidade de um determinado domínio
  * 
  *@param String - nomeDominio
  **/
function verificaDisponibilidadeDominio( nomeDominio ){
	
	if( nomeDominio != null ){
		
		var resp = httpRequest('');
		
	}
	
}


//Javascript DNS Lookup
//06-02-2007
//Eli Moulton

var serverData = false;

if (window.XMLHttpRequest)
{
	serverData = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
	serverData = new ActiveXObject("Microsoft.XMLHTTP");
}

function dnsCheck(domainName)
{	
	//var outputElem = document.getElementById('output');
	//var inputElem  = document.getElementById('domainTxt'); 
	var lookupResults;
	if (serverData)
	{	
		serverData.open('GET','/_inc/dnscheck.php?domain=' + domainName);
		serverData.onreadystatechange = function()
		{
			if (serverData.readyState == 4 && serverData.status == 200)
			{
				var result = serverData.responseText;
				lookupResults = result;
				return 'asdaasaaAaa23432ssd';
				//alert( 'lookupResults dentro ' + lookupResults );
				//return 'retornando : ' + lookupResults;
				/*
				if (lookupResults == -150)
				{
					//outputElem.innerHTML = "No Domain Given";
				}
				else if (lookupResults == -100)
				{
					//outputElem.innerHTML = "Lookup Failed/Invalid Domain";
				}
				else
				{
					return lookupResults;
					//outputElem.innerHTML = "IP: " + lookupResults;
				}
				*/
				
			}
		}
		serverData.send(null);
	}
	else
	{
		//outputElem.innerHTML = "Failed To Create XMLHttpRequest Object";
	}
}

    /*
     * Verifica a validade do nome de domínio
     */
    function validaNomeDominio( nomeDominio, idCmbCategoria, idInputDominio ){
    
        var cmbCategorias = document.getElementById(idCmbCategoria);
        var inputDominio = document.getElementById(idInputDominio);
        var totalCategorias = cmbCategorias.length;
        
        limparCampoNomeDominio(inputDominio.id, inputDominio.value);
        
        // Varremos os campos do select
        for (var i = 0; i < totalCategorias; i++) {
        
            var categoria = cmbCategorias.options[i].value;
			var erDominio = new RegExp("\\." +categoria+'$');			
            
            if (erDominio.test(nomeDominio)) {
				
                document.getElementById(idInputDominio).value = nomeDominio.replace(erDominio, "");
				document.getElementById(idCmbCategoria).options[i].selected = 'selected';
				validaNomeDominio( document.getElementById(idInputDominio).value, idCmbCategoria, idInputDominio );
				
                break;
            }
        }
		
    }
