//******************************************************************
// Funciones JAVASCRIPT
//******************************************************************
var pg_loading='Procesando...';
//Color de los editores
var clEditError     = "#fefae5";
var clEditOK        = "#e8f3d2";
var clEdit          = "#f3f3f3";
var clFontColor     = "#2f2f2f";
var clFontErrColor  = "#000000";

function funImgOver(obj, imagen){
	$(obj).attr("src",imagen);
}

function funImgOut(obj, imagen){
	$(obj).attr("src",imagen);
}

function getAjaxURL(pag, args) {
    if (args != null && args.length > 0) {
        if (pag.indexOf('?') == -1)
            pag = pag + '?' + args;
        else
            pag = pag + '&' + args;
    }
    return '/gec' + pag;
}

function NumeroPositivoDecimalOk(valor){
    	var ok1=true;
    	var ok2=true;
	    var ok3=true;
	    var ok4=true;
	    var ok5=true;

	    ok1 = !isNaN(valor);
	    if(valor == null) ok2=false;
        if(valor.indexOf(",")!= -1) ok3=false;
	    if(valor < 0 ) ok5=false;
	    if (ok1 && ok2 && ok3 && ok4 && ok5){
		   return true;
	    }else{
            if(valor.indexOf(",")!= -1) alert('Utilice el punto como separador decimal.');
            if(!ok5) alert('Debe indicar un numero mayor o igual a CERO.');
		    alert('Número Erroneo: '+valor);
		    return false;
	    }
}

function NumeroPostivoEnteroOk(valor){
	 if (valor.match(/^\d+$/) == null || isNaN(parseInt(valor))) {
	     return false;
	 }else{
		 return true;
	 }
}


function FechaValida(Cadena){  
    var Fecha= new String(Cadena);   // Crea un string  
    var RealFecha= new Date();       // Para sacar la fecha de hoy  
    // Cadena Año  
    var Ano= new String(Fecha.substring(Fecha.lastIndexOf("/")+1,Fecha.length));  
    // Cadena Mes  
    var Mes= new String(Fecha.substring(Fecha.indexOf("/")+1,Fecha.lastIndexOf("/")));  
    // Cadena Día  
    var Dia= new String(Fecha.substring(0,Fecha.indexOf("/")));
  
    // Valido el año  
    if (isNaN(Ano) || Ano.length<4 || parseFloat(Ano)<1900){  
        //alert('Año inválido:'+Ano);  
        return false; 
    }  
    // Valido el Mes  
    if (isNaN(Mes) || parseFloat(Mes)<1 || parseFloat(Mes)>12){  
        //alert('Mes inválido:'+Mes);
        return false; 
    }  
    // Valido el Dia  
    if (isNaN(Dia) || parseInt(Dia, 10)<1 || parseInt(Dia, 10)>31){  
        //alert('Día inválido:'+Dia);  
        return false;  
    }  
    if (Mes==4 || Mes==6 || Mes==9 || Mes==11 || Mes==2) {  
        if (Mes==2 && Dia > 28 || Dia>30) {  
            //alert('Día inválido:'+Dia);  
            return false;
        }  
    }  
  return true;    
}  	


	
function anchoValido(formCampo) {
		var valor=formCampo.value;
		if(!NumeroPositivoDecimalOk(valor)){
			formCampo.value=0;
		}
}


//----------------------------------------------------------------
// Redirecciona a una URL
//----------------------------------------------------------------
function redirect(url) {
    window.location.href = url;
}

function redirectAction(pag, args) {
    window.location.href = getAjaxURL(pag, args);
}

//----------------------------------------------------------------
// Carga una pagina desde el servidor
//----------------------------------------------------------------
function ajaxNav(pag, args, dst) {
    if (dst == null || dst == '' || dst == 'null')
        redirect(getAjaxURL(pag, args));
    else {
        $("#"+dst).html('<p align="center"><br><img src="/gec/emdb/img/cargando.gif"> '+pg_loading+'</p>');
        if (typeof $.historyCallback == 'function')
            $.historyLoad('ajPg='+getAjaxURL(pag, args)+';dst='+dst);
        else
            ajaxNavNotHistory(pag, args, dst);
    }
}

//----------------------------------------------------------------
// Carga una pagina (sin incluirla en history)
//----------------------------------------------------------------
function ajaxNavNotHistory(pag, args, dst, clear, callback) {
    //alert("pag = "+pag+", args = "+args+", dst = "+dst);
    if (clear)
        $("#"+dst).html('<p align="center"><br><img src="/gec/emdb/img/cargando.gif"> '+pg_loading+'</p>');
    $.ajax({ url: getAjaxURL(pag, args), cache: false,
             success: function(html){
                $("#"+dst).html(html);
                if (callback != null)
                    callback();
             },
            error: function(XMLHttpRequest, textStatus, errorThrown) { alert('ERROR\nPage:'+getAjaxURL(pag, args)+';dst='+dst+'\ninfo = '+XMLHttpRequest.statusText+'\ntextStatus = '+textStatus+'\nerrorThrown = '+errorThrown); }
    });
}

function ajaxNavSyncNotHistory(pag, args, dst, clear, callback) {
    //alert("pag = "+pag+", args = "+args+", dst = "+dst);
    if (clear)
        $("#"+dst).html('<p align="center"><br><img src="/gec/emdb/img/cargando.gif"> '+pg_loading+'</p>');
    $.ajax({ url: getAjaxURL(pag, args), cache: false, async : false,
             success: function(html){
                $("#"+dst).html(html);
                if (callback != null)
                    callback();
             },
            error: function(XMLHttpRequest, textStatus, errorThrown) { alert('ERROR\nPage:'+getAjaxURL(pag, args)+';dst='+dst+'\ninfo = '+XMLHttpRequest.statusText+'\ntextStatus = '+textStatus+'\nerrorThrown = '+errorThrown); }
    });
}

//----------------------------------------------------------------
// Carga una pagina (sin incluirla en history) y ocultando las
// div con estilo "detail"
//----------------------------------------------------------------
function loadDetail(pag, args, dst) {
    if ($("#"+dst).text() == '')
        ajaxNavNotHistory(pag, args, dst);
    $("#"+dst).slideDown();
}

//----------------------------------------------------------------
// Verifica si una variable esta definida
//----------------------------------------------------------------
function isdefined(variable) {
    return (typeof(window[variable]) != "undefined");
}

//----------------------------------------------------------------
// Verifica si esta definido el campo de un formulario
//----------------------------------------------------------------
function fieldDefined(form, field) {
    for (var i = 0; i < form.length; i++) {
        if (form.elements[i].name == field)
            return true;
    }
    return false;
}


var hideHint = function () {
    window.clearTimeout(hintTimer);
    $('.overlay_hint').fadeOut(700);
};

//----------------------------------------------------------------
// Carga las paginas (utilizando el history)
//----------------------------------------------------------------
var ajaxLoad = function (hash) {
    var args = hash.split(';');
    var url = null;
    var dst = null;
    for (i = 0; i < args.length; i++) {
        if (args[i].indexOf('ajPg=') == 0)
            url = args[i].substring(5);
        if (args[i].indexOf('dst=') == 0)
            dst = args[i].substring(4);
    }
    if (url != null && dst != null) {
        $.ajax({ url: url, cache: false,
                 success: function(html){ $("#"+dst).html(html); },
                 error: function(XMLHttpRequest, textStatus, errorThrown) { alert('ERROR\nPage:'+url+';dst='+dst+'\ninfo = '+XMLHttpRequest.statusText+'\ntextStatus = '+textStatus+'\nerrorThrown = '+errorThrown); }
        });
    }
};

//----------------------------------------------------------------
// Redirecciona a una URL
//----------------------------------------------------------------
function redirect(url) {
    window.location.href = url;
}

function redirectAction(pag, args) {
    window.location.href = getAjaxURL(pag, args);
}


//----------------------------------------------------------------
//Valida un entero
//----------------------------------------------------------------
function restoreEditStyle(val) {
 $("#"+val.id).css({backgroundColor:clEdit, color:clFontColor});
}

//----------------------------------------------------------------
//Valida un entero
//----------------------------------------------------------------
function validateInt(val, msg, validNull) {
 if (validNull && val.value == '') {
     $("#"+val.id).css( {backgroundColor:clEditOK, color:clFontColor});
     return true;
 }
 if (val.value.match(/^\d+$/) == null || isNaN(parseInt(val.value))) {
     $("#"+val.id).css( {backgroundColor:clEditError, color:clFontErrColor } );
     addErrorInfo(msg);
     return false;
 }
 $("#"+val.id).css( {backgroundColor:clEditOK, color:clFontColor});
 val.value = parseInt(val.value);
 return true;
}

//----------------------------------------------------------------
//Valida un real
//----------------------------------------------------------------
function validateFloat(val, msg, validNull) {
 if (validNull && val.value == '') {
     $("#"+val.id).css( {backgroundColor:clEditOK, color:clFontColor});
     return true;
 }
 var error = true;
 if (val.value.match(/^\d*\.{0,1}\d*$/) != null || val.value.match(/^\d*\,{0,1}\d*$/) != null) {
     val.value = val.value.replace(',', '.');
     error = false;
 }
 if (error || isNaN(parseFloat(val.value))) {
     $("#"+val.id).css( {backgroundColor:clEditError, color:clFontErrColor} );
     addErrorInfo(msg);
     return false;
 }
 $("#"+val.id).css( {backgroundColor:clEditOK, color:clFontColor});
 val.value = parseFloat(val.value);
 return true;
}

//----------------------------------------------------------------
//Valida una fecha
//----------------------------------------------------------------
function validateDate(val, msg, validNull) {
 if (validNull && val.value == '') {
     $("#"+val.id).css( {backgroundColor:clEditOK, color:clFontColor});
     return true;
 }
 var result = Date.fromString(val.value);
 if (!result) {
     $("#"+val.id).css( {backgroundColor:clEditError, color:clFontErrColor} );
     addErrorInfo(msg);
     return false;
 }
 val.value = result.asString();
 $("#"+val.id).css( {backgroundColor:clEditOK, color:clFontColor});
 return true;
}

//----------------------------------------------------------------
//Valida una cadena
//----------------------------------------------------------------
function validateString(val, msg, validNull) {
 if (validNull && val.value == '') {
     $("#"+val.id).css( {backgroundColor:clEditOK, color:clFontColor});
     return true;
 }
 if (val.value == "") {
     $("#"+val.id).css( {backgroundColor:clEditError, color:clFontErrColor} );
     addErrorInfo(msg);
     return false;
 }
 $("#"+val.id).css( {backgroundColor:clEditOK, color:clFontColor});
 return true;
}

//----------------------------------------------------------------
//Adiciona informacion a los errores
//----------------------------------------------------------------
function addErrorInfo(msg) {
 if (msg != "") {
     var text = $("#tdErrors").html();
     $("#tdErrors").html(text+'<img src="skins/bullet.gif" border="0">&nbsp;'+msg+'<br>');
 }
}

//----------------------------------------------------------------
//Retorna los datos de un formulario
//----------------------------------------------------------------
function getFormData(form, dynCheck) { 
 var netscape = navigator.userAgent.indexOf("Firefox")!=-1;
 var data = '';
 var item;
 for (var i = 0; i < form.length; i++) {
     if (!dynCheck && form.elements[i].type == "checkbox")
         data = data + '&' + form.elements[i].name + '=' + (form.elements[i].checked ? "true" : "false");
     else if (form.elements[i].value != null && form.elements[i].name != null) {
         if (netscape) {
             item = form.elements[i].value;
             var value = "";
             for (var j = 0; j < item.length; j++)
                 if (item[j] == '%')
                     value += "%25";
                 else
                     value += item[j];
             item = value;
         } else
             item = escape(form.elements[i].value);
         while (item.indexOf("+") >= 0)
             item = item.replace('+', '%2B');    // Escape del +
         data = data + '&' + form.elements[i].name + '=' + item;
     }
 }
 return data.substring(1);
}


//----------------------------------------------------------------
//Envia un formulario y carga el resultado
//----------------------------------------------------------------
function submitForm(url, form, area,  clear) {
 if (clear)
     $("#"+area).html('<p align="center"><br><img src="/gec/emdb/img/cargando.gif"></p>');
 
 $.ajax({type: 'POST', url: getAjaxURL(url, null), data: getFormData(form, false),
         success: function(html) { $("#"+area).html(html); },
         error: function(XMLHttpRequest, textStatus, errorThrown) { alert('ERROR\nPage:'+url+';dst='+area+'\ninfo = '+XMLHttpRequest.statusText+'\ntextStatus = '+textStatus+'\nerrorThrown = '+errorThrown); }
 });
 
 return true;
}

function submitFormGET(url, formulario, area,  clear) {
	 if (clear)
	     $("#"+area).html('<p align="center"><br><img src="/gec/emdb/img/cargando.gif"></p>');
	 
	 $.ajax({type: 'GET', url: getAjaxURL(url, null), data: getFormData(formulario, false),
	         success: function(html) { $("#"+area).html(html); },
	         error: function(XMLHttpRequest, textStatus, errorThrown) { alert('ERROR\nPage:'+url+';dst='+area+'\ninfo = '+XMLHttpRequest.statusText+'\ntextStatus = '+textStatus+'\nerrorThrown = '+errorThrown); }
	 });
	 
	 return true;
	}


//----------------------------------------------------------------
//Bloqueando pantalla
//----------------------------------------------------------------
function BloqueandoPantalla() {
$.blockUI({ css: {border: 'none', 
	               padding: '15px', 
	               backgroundColor: '#000', 
	               '-webkit-border-radius': '10px', 
	               '-moz-border-radius': '10px', 
	               opacity: .5, color: '#fff'},
     message: '<b>Espere...</b>' });
}

//-------------------------------------------------
//Desbloquea la Pantalla
//-------------------------------------------------
function DesbloqueandoPantalla() {
	 $.unblockUI();
}


function funTrOver(objeto){
	$(objeto).addClass('ui-widget-content ui-state-highlight')
}

function funTrOut(objeto){
	$(objeto).removeClass('ui-widget-content ui-state-highlight').addClass('ui-widget-content');
}




function FormatoEmailCorrecto(txtEmail){
	//expresion regular para emails
	var er_email = /^(.+\@.+\..+)$/
	if(!er_email.test(txtEmail) ){
	   	return false
	}else{
		return true;
	}
}


function CodigoPostalCorrecto(txt){
	//expresion regular para emails
	var er_txt = /^\d{5}$/
	if(!er_txt.test(txt) ){
	   	return false
	}else{
		return true;
	}
}


function TelefonoCorrecto(txt){
	//expresion regular para emails
	var er_txt = /^\d{9}$/
	if(!er_txt.test(txt) ){
	   	return false
	}else{
		return true;
	}
}


function TarjetaCreditoCorrecta(txt){
	//expresion regular para emails
	var er_txt = /^\d{12}$/
	if(!er_txt.test(txt) ){
	   	return false
	}else{
		return true;
	}
}

