jQuery.ancoraDual = {

    m_removeEspaciosCadena: function (cadena) {
        while (cadena.charAt(0) == ' ') {
            cadena = cadena.substring(1, cadena.length);
        }
        while (cadena.charAt(cadena.length - 1) == ' ') {
            cadena = cadena.substring(0, cadena.length - 1);
        }
        return cadena;
    },
    m_existNumbers: function (cadena) {
        var NumerosCadena = false;
        for (i = 0; i < cadena.length; i++) {
            if (!isNaN(cadena.charAt(i)) && cadena.charAt(i) != ' ') {
                NumerosCadena = true;
            }
        }
        return NumerosCadena;
    },
    m_existChar: function (cadena) {
        var LetrasCadena = false;
        for (i = 0; i < cadena.length; i++) {
            if (isNaN(cadena.charAt(i)) && cadena.charAt(i) != ' ') {
                LetrasCadena = true;
            }
        }
        return LetrasCadena;
    },

    m_isEmail: function (cadena) {
        if (cadena.lastIndexOf('.') == -1) {
            return false; //no tiene puntos
        }
        var ArrDom = new Array("es", "com", "net", "edu", "info", "cat", "tv", "uk", "fr", "org", "cat");
        var SufixDom = cadena.substring(cadena.lastIndexOf('.') + 1, cadena.length);
        var DomOk = false;
        for (i = 0; i < ArrDom.length; i = i + 1) {
            if (SufixDom == ArrDom[i]) { DomOk = true; }
        }
        if (!DomOk) return false; //El dominio no esta en la lista
        if (cadena.search('@') == -1) {
            return false; //no hay ningun @
        }
        if (cadena.indexOf('@') != cadena.lastIndexOf('@')) {
            return false; //hay mas de una @
        }
        if (cadena.indexOf('@') == 0) {
            return false; // @ en primer lugar
        }
        if (cadena[cadena.indexOf('@') - 1] == '.' || cadena[cadena.indexOf('@') + 1] == '.') {
            return false; // puntos pegados en el @
        }
        for (i = 0; i < cadena.length; i++) {
            var caracter = cadena.charAt(i);
            if (!((caracter >= 'a' && caracter <= 'z') ||
    			(caracter >= 'A' && caracter <= 'Z') ||
    			(caracter >= '0' && caracter <= '9') ||
    			caracter == '.' || caracter == '-' ||
    			caracter == '@' || caracter == '_')) {
                return false;
            }
        }
        return true;
    },
    m_isCIF: function (cadena) {
        var result = false;
        // pasar a mayúsculas
        var temp = cadena.toUpperCase();

        if (!/^[A-Za-z0-9]{9}$/.test(temp)) { // Son 9 dígitos?
            alert("Longitud incorrecta, un CIF    consta de 9 dígitos");
        } else if (!/^[ABCDEFGHKLMNPQS]/.test(temp)) {	// Es una    letra de las admitidas ?
            alert("El primer dígito es  incorrecto, debe ser una letra de las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S    ");
        } else {
            //verifica digit de control
            var v1 = new Array(0, 2, 4, 6, 8, 1, 3, 5, 7, 9);
            var temp = 0;
            for (i = 2; i <= 6; i += 2) {
                temp = temp + v1[parseInt(cadena.substr(i - 1, 1))];
                temp = temp + parseInt(cadena.substr(i, 1));
            }
            temp = temp + v1[parseInt(cadena.substr(7, 1))];
            temp = (10 - (temp % 10));
            if (temp == parseInt(cadena.charAt(cadena.length - 1))) {
                result = true;
            } else {
                alert("El dígito de control  No Correctorrrg");
            }
        }
        return result;
    },
    m_existSpecialCaracters: function (Cadena) {
        //Esta variable contiene todos loa caracteres que consideramos normales 
        // OJO!!!! tiene que  contener un ESPACIO en BLANCO sino tb los elimina!!!!!!!
        var CaracterNormal = " abcçdefghijklmnñopqrstuvxywzABCÇDEFGHIJKLMNOPQRSTUVXYWZáàéèíìïóòúùü";
        for (pos = 0; pos <= Cadena.length - 1; pos++) { //Recorer cadena desde pos=0 hasta pos=length-1 
            if (CaracterNormal.indexOf(Cadena.charAt(pos)) == -1) { //Si indexOf devuelve -1 es que no esta el caracter dentro de 'CaracterNormal' por tanto...
                return true;
            }
        }

        return false; //Devolvemos  true
    },
    m_isDate: function (fecha) {

        var Fecha = fecha;
        var RealFecha = new Date();
        var Ano = new String(Fecha.substring(Fecha.lastIndexOf("/") + 1, Fecha.length));
        var Mes = new String(Fecha.substring(Fecha.indexOf("/") + 1, Fecha.lastIndexOf("/")));
        var Dia = new String(Fecha.substring(0, Fecha.indexOf("/")));

        if (isNaN(Ano) || Ano.length < 4 || parseFloat(Ano) < 1900) {
            return false;
        }
        if (isNaN(Mes) || parseFloat(Mes) < 1 || parseFloat(Mes) > 12) {
            return false;
        }
        if (isNaN(Dia) || parseInt(Dia, 10) < 1 || parseInt(Dia, 10) > 31) {
            return false;
        }
        if (Mes == 4 || Mes == 6 || Mes == 9 || Mes == 11 || Mes == 2) {
            if (Mes == 2 && Dia > 28 || Dia > 30) {
                return false;
            }
        }

        return true;
    },
    m_arrayItems: "",
    m_existInList: function (item) {

        var lstItems = this.m_arrayItems.split(';');
        for (i = 0; i < lstItems.length - 1; i++) {
            if (lstItems[i] == item)
                return true;
        }

        return false;
    },
    m_saveInList: function (id) {

        if (this.m_arrayItems.indexOf(id + ";") == -1)
            this.m_arrayItems += id + ";";
    },
    m_clearList: function () {
        this.m_arrayItems = "";
    },
    // Alerta
    m_alert: function (texto) {
        jAlert(texto, 'Alerta');
    },
    m_Error: "Ha ocurrido un error. Por favor, intentenlo mas tarde. Disculpe las molestias",

    // Filtro Html  ////////////////////////////////////////////////////

    m_filtrarHtml: function (contenido) {

        var mapsFiltrado = "";

        for (i = 0; i < contenido.length; i++) {
            var letra = contenido.charAt(i)
            var filtrado = false;

            if (letra == '\"') {
                mapsFiltrado += letra.replace("\"", "|");
                filtrado = true;
            }

            if (letra == '<') {
                mapsFiltrado += letra.replace("<", "[");
                filtrado = true;
            }

            if (letra == '>') {
                mapsFiltrado += letra.replace(">", "]");
                filtrado = true;
            }

            if (!filtrado) {
                mapsFiltrado += letra;
            }

        }
        return mapsFiltrado;
    },

    // Timeout ////////////////////////////////////////////////////

    m_segundosSesion: 0,
    m_alertTimeOutMostrado: false,
    m_segundosSesion: 0,
    m_segundosSesionTotales: 3600,

    m_controlTimeOut: function () {
        this.m_segundosSesion++;

        if (this.m_segundosSesionTotales - this.m_segundosSesion <= 60) {

            var Diferencia = this.m_segundosSesionTotales - this.m_segundosSesion;
            $('#TimeOut').html("En " + Diferencia + " segundos finaliza la sessi&oacute <a href=\"#\" onclick=\"$.ancoraDual.m_cerrarTimeOut();\">[ Actualizar sessi&oacute ]</a>");
            this.m_mostrarTimeOut();

        }

        if (this.m_segundosSesion == this.m_segundosSesionTotales) {
            location.href = "Abandon.aspx";
        }
    },
    m_resetTimeOut: function () {
        this.m_segundosSesion = 0;
        if (this.m_alertTimeOutMostrado) {
            this.m_cerrarTimeOut();
        }
    },
    m_cerrarTimeOut: function () {
        $('#TimeOut').hide();
    },
    m_mostrarTimeOut: function () {

        var Diferencia = this.m_segundosSesionTotales - this.m_segundosSesion;

        $('#TimeOut').slideDown("slow").fadeIn("slow");
        $('#TimeOut').html("En " + Diferencia + " segons finalitza la sessi&oacute i tornarem a carregar la p&agravegina <a href=\"#\" onclick=\"m_cerrarTimeOut();\">[ Actualitzar sessi&oacute sense carregar la p&agravegina ]</a>");
    },

    // BOX ////////////////////////////////////////////////////

    m_boxActivo: "",
    m_despliegaAcciones_Box: function (idBox, isTr) {

        this.m_resetTimeOut();
        //alert(this.m_boxActivo + "!=" + idBox);

        var Tr = "";
        if (isTr.toString() == "true") {
            Tr = "Tr";
        }

        if (this.m_boxActivo != idBox) {
            if (this.m_boxActivo == "") {
                this.m_boxActivo = idBox;
                $("#" + idBox).addClass("boxSelect" + Tr);
                $("#AccionBox_" + idBox).slideDown("fast");
                return;
            }
            else {
                $("#" + this.m_boxActivo).removeClass("boxSelect" + Tr);
                $("#" + this.m_boxActivo).addClass("box" + Tr);
                $("#AccionBox_" + this.m_boxActivo).fadeOut("fast");

                $("#AccionBox_" + idBox).slideDown("fast");
                $("#" + idBox).addClass("boxSelect" + Tr);
                this.m_boxActivo = idBox;
                return;
            }

        }
        else {
            $("#" + this.m_boxActivo).removeClass("boxSelect" + Tr);
            $("#" + this.m_boxActivo).addClass("box" + Tr);
            $("#AccionBox_" + this.m_boxActivo).fadeOut("fast");
            this.m_boxActivo = "";
            return;

        }
    },
    // HASH TABLE ///////////////////////////////////////////////////
    m_Hash: function () {
        this.length = 0;
        this.items = new Array();
        for (var i = 0; i < arguments.length; i += 2) {
            if (typeof (arguments[i + 1]) != 'undefined') {
                this.items[arguments[i]] = arguments[i + 1];
                this.length++;
            }
        }

        this.removeItem = function (in_key) {
            var tmp_previous;
            if (typeof (this.items[in_key]) != 'undefined') {
                this.length--;
                var tmp_previous = this.items[in_key];
                delete this.items[in_key];
            }

            return tmp_previous;
        }

        this.getItem = function (in_key) {
            return this.items[in_key];
        }

        this.setItem = function (in_key, in_value) {
            var tmp_previous;
            if (typeof (in_value) != 'undefined') {
                if (typeof (this.items[in_key]) == 'undefined') {
                    this.length++;
                }
                else {
                    tmp_previous = this.items[in_key];
                }

                this.items[in_key] = in_value;
            }

            return tmp_previous;
        }

        this.hasItem = function (in_key) {
            return typeof (this.items[in_key]) != 'undefined';
        }

        this.clear = function () {
            for (var i in this.items) {
                delete this.items[i];
            }

            this.length = 0;
        }
    },
    // Favoritos ////////////////////////////////////////////////////

    favoritos: "",
    m_total_favoritos: 0,

    m_FavotitosContains: function (item, lst) {

        var lstItems = lst.split(';');
        for (i = 0; i < lstItems.length - 1; i++) {
            if (lstItems[i] == item)
                return true;
        }

        return false;
    },
    m_add_Favorito: function (item) {

        var seccion = item.toString().substring(0, item.toString().indexOf("_"));

        if (!this.m_FavotitosContains(item, this.favoritos)) {
            this.favoritos += item + ";";
            $("#Favorito_" + item).removeClass('favorito').addClass('favoritoSelect');
            $("#Favorito_" + item).attr('title', 'Eliminar de mi lista de Favoritos');
        }
        else {
            $("#Favorito_" + item).removeClass('favoritoSelect').addClass('favorito');
            $("#Favorito_" + item).attr('title', 'Incluir en mi lista de Favoritos');
            this.favoritos = this.favoritos.replace(item + ";", "");
        }

        this.m_reCount_Favoritos(item);

    },
    m_reCount_Favoritos: function (item) {

        var contador = 0;
        var seccion = "";
        var lstItems = this.favoritos.split(';');
        for (i = 0; i < lstItems.length - 1; i++) {

            var clave = lstItems[i].toString().substring(0, lstItems[i].toString().indexOf("_"));
            var valor = lstItems[i].toString().substring(lstItems[i].toString().indexOf("_") + 1);


            seccion = item.toString().substring(0, item.toString().indexOf("_"));
            if (seccion == clave) {
                contador++;
            }
        }
        $("#favoritos_" + seccion).html(contador);

    },
    m_render_Favoritos: function () {

        if (this.favoritos != "") {

            var myHash = new this.m_Hash();

            var lstItems = this.favoritos.split(';');
            for (i = 0; i < lstItems.length - 1; i++) {

                var clave = lstItems[i].toString().substring(0, lstItems[i].toString().indexOf("_"));
                var valor = lstItems[i].toString().substring(lstItems[i].toString().indexOf("_") + 1);

                $("#Favorito_" + lstItems[i]).removeClass('favorito').addClass('favoritoSelect');
                $("#Favorito_" + lstItems[i]).attr('title', 'Eliminar de mi lista de Favoritos');

                if (typeof (myHash.getItem(clave)) != 'undefined') {
                    var total = parseInt(myHash.getItem(clave));
                    total++;
                    myHash.setItem(clave, total);
                }
                else {
                    myHash.setItem(clave, 1);
                }
            }

            for (var i in myHash.items) {
                $("#favoritos_" + i).html(myHash.getItem(i));
            }
        }

        //$("#favoritos_" + seccion).html(contador);

    },
    m_clear_Favoritos: function (tipoItem) {

        //alert(this.favoritos);
        var lstItems = this.favoritos.split(';');
        for (i = 0; i < lstItems.length - 1; i++) {

            var clave = lstItems[i].toString().substring(0, lstItems[i].toString().indexOf("_"));
            var valor = lstItems[i].toString().substring(lstItems[i].toString().indexOf("_") + 1);

            if (clave.toString() == tipoItem.toString()) {
                this.favoritos = this.favoritos.replace(lstItems[i] + ';', '');
                //alert("tipoItem: " + tipoItem + ", clave: " + clave + ", valor: " + lstItems[i]);
            }
        }
        this.m_render_Favoritos();
        //alert(this.favoritos);
    }
    // Descargas ////////////////////////////////////////////////////
    ,
    m_descargarArchivo: function (link) {
        this.m_resetTimeOut();
        $('#descargar').html("<a id=\"descargaHref\" href=\"Temp/" + link + "\" target=\"_blank\" onClick=\"$('#descargar').fadeOut(2000);\">Descargar</a>");
        $('#descargar').fadeIn(2000);
    },

    m_MostrarMensajeGlobal: function (Mensaje) {
        this.m_resetTimeOut();
        $('#descargar').html(Mensaje);
        $('#descargar').fadeIn(1000);
        $('#descargar').fadeOut(3000);
    },
    // Estado ////////////////////////////////////////////////////
    m_inHome: "true",
    // Pop Modal ////////////////////////////////////////////////////
    m_mostrarModal: function () {

        this.m_resetTimeOut();
        var maskHeight = $(document).height();
        var maskWidth = $(window).width();

        $('#mask').css({ 'width': maskWidth, 'height': maskHeight });

        $('#mask').fadeTo("fast", 0.8);
        $('#mask').fadeIn(1000);

        var winH = $(window).height();
        var winW = $(window).width();

        $('#popUpContenido').css('top', 80);
        $('#popUpContenido').css('left', winW / 2 - $('#popUpContenido').width() / 2);
        $('#popUpContenido').fadeIn(1000);

    },
    m_cerrarPopUpModal: function () {
        this.m_resetTimeOut();
        $('#mask').fadeOut("slow");
        $('#popUpContenido').fadeOut("slow");
    }
    ,
    m_secciones: "",
    m_mostrarSeccion: function (seccion) {
        var array_Secciones = this.m_secciones.split(";")
        for (x = 0; x < array_Secciones.length; x++) {
            if (array_Secciones[x] != "") {
                $('#' + array_Secciones[x]).removeClass('current');
            }
        }

        $('#' + seccion).addClass('current');

    },
    // Url para Semánticas ////////////////////////////////////////////////////
    m_urlPost: "",
    m_cargarUrl: function () {

        var url = location.href;
        var direc = url.split("/").length;
        var total = 0;

        if (url.indexOf('ancoradual') != -1) {
            total = direc - 2;
        } else {
            total = direc - 5;
        }
        $.ancoraDual.m_urlPost = "";
        for (i = 1; i <= total; i++) {
            $.ancoraDual.m_urlPost += "../";
        }
        $.ancoraDual.m_urlPost += "../functions/";
        //alert($.ancoraDual.m_urlPost);
    }

};
