﻿var classUtil = function () {
    classUtil.prototype.dom = function (id) {
        return document.getElementById(id);
    }

    classUtil.prototype.getEvent = function (event) {
        if (event)
            return event;
        else
            return window.event;
    }

    classUtil.prototype.ajaxSS = function (claveSolicitud, datos, tipoResp, url, proceso) {
        http_request = false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // Ver nota sobre esta linea al final
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) { }
            }
        }

        if (!http_request) {
            alert('Falla :( No es posible crear una instancia XMLHTTP');
            return false;
        }
        http_request.onreadystatechange = function () {
            if (http_request.readyState == 4) {
                if (http_request.status == 200) {
                    if (tipoResp == "xml") {
                        if (window.DOMParser) {
                            parser = new DOMParser();
                            xmlDoc = parser.parseFromString(http_request.responseText, "text/xml");
                        }
                        else // Internet Explorer
                        {
                            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                            xmlDoc.async = "false";
                            xmlDoc.loadXML(http_request.responseText);
                        }
                        try {
                            if (xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue == "-10") {
                                self.location.href = "loggin.aspx";
                            } else {
                                proceso(xmlDoc);
                            }
                        } catch (e) {
                            proceso(xmlDoc);
                        }
                    } else {
                        proceso(http_request.responseText);
                    }
                } else {
                    alert('Hubo problemas con la petición.');
                }
            }
        }
        http_request.open('post', url, true);
        http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http_request.send(encodeURI('claveSolicitud=' + claveSolicitud + '&proceso=ajax&' + datos));
    }

    classUtil.prototype.ajaxRemoto = function (tipoResp, url, proceso) {
        http_request = false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // Ver nota sobre esta linea al final
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) { }
            }
        }

        if (!http_request) {
            alert('Falla :( No es posible crear una instancia XMLHTTP');
            return false;
        }
        http_request.onreadystatechange = function () {
            if (http_request.readyState == 4) {
                if (http_request.status == 200) {
                    if (tipoResp == "xml") {
                        if (window.DOMParser) {
                            parser = new DOMParser();
                            xmlDoc = parser.parseFromString(http_request.responseText, "text/xml");
                        }
                        else // Internet Explorer
                        {
                            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                            xmlDoc.async = "false";
                            xmlDoc.loadXML(http_request.responseText);
                        }
                        proceso(xmlDoc);
                    } else {
                        proceso(http_request.responseText);
                    }
                } else {
                    alert('Hubo problemas con la petición.');
                }
            }
        }
        http_request.open('get', url, true);
        http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http_request.send(null);
    }

    classUtil.prototype.getStyle = function (x, styleProp) {
        if (x.currentStyle)
            var y = x.currentStyle[styleProp];
        else if (window.getComputedStyle)
            var y = document.defaultView.getComputedStyle(x, null).getPropertyValue(styleProp);
        return y;
    }

    classUtil.prototype.clean = function (valor) {
        var temp = valor;
        var obj = new RegExp("\s+", "gi");
        if (obj.test(temp)) {
            temp = temp.replace(obj, '$ 2');
        }
        obj = new RegExp("/ + / g", "gi");
        temp = temp.replace(obj, "");
        if (temp == "") {
            temp = "";
        }
        return temp;
    }

    classUtil.prototype.CleanWordHTML = function (str) {
        str = str.replace(/<o:p>\s*<\/o:p>/g, "");
        str = str.replace(/<o:p>.*?<\/o:p>/g, "&nbsp;");
        str = str.replace(/\s*mso-[^:]+:[^;"]+;?/gi, "");
        str = str.replace(/\s*MARGIN: 0cm 0cm 0pt\s*;/gi, "");
        str = str.replace(/\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"");
        str = str.replace(/\s*TEXT-INDENT: 0cm\s*;/gi, "");
        str = str.replace(/\s*TEXT-INDENT: 0cm\s*"/gi, "\"");
        str = str.replace(/\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"");
        str = str.replace(/\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"");
        str = str.replace(/\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"");
        str = str.replace(/\s*tab-stops:[^;"]*;?/gi, "");
        str = str.replace(/\s*tab-stops:[^"]*/gi, "");
        str = str.replace(/\s*face="[^"]*"/gi, "");
        str = str.replace(/\s*face=[^ >]*/gi, "");
        str = str.replace(/\s*FONT-FAMILY:[^;"]*;?/gi, "");
        str = str.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
        str = str.replace(/<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3");
        str = str.replace(/\s*style="\s*"/gi, '');
        str = str.replace(/<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;');
        str = str.replace(/<SPAN\s*[^>]*><\/SPAN>/gi, '');
        str = str.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
        str = str.replace(/<SPAN\s*>(.*?)<\/SPAN>/gi, '$1');
        str = str.replace(/<FONT\s*>(.*?)<\/FONT>/gi, '$1');
        str = str.replace(/<\\?\?xml[^>]*>/gi, "");
        str = str.replace(/<\/?\w+:[^>]*>/gi, "");
        str = str.replace(/<H\d>\s*<\/H\d>/gi, '');
        str = str.replace(/<H1([^>]*)>/gi, '');
        str = str.replace(/<H2([^>]*)>/gi, '');
        str = str.replace(/<H3([^>]*)>/gi, '');
        str = str.replace(/<H4([^>]*)>/gi, '');
        str = str.replace(/<H5([^>]*)>/gi, '');
        str = str.replace(/<H6([^>]*)>/gi, '');
        str = str.replace(/<\/H\d>/gi, '<br>'); //remove this to take out breaks where Heading tags were 
        str = str.replace(/<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;');
        str = str.replace(/<(B|b)>&nbsp;<\/\b|B>/g, '');
        str = str.replace(/<([^\s>]+)[^>]*>\s*<\/\1>/g, '');
        str = str.replace(/<([^\s>]+)[^>]*>\s*<\/\1>/g, '');
        str = str.replace(/<([^\s>]+)[^>]*>\s*<\/\1>/g, '');
        //some RegEx code for the picky browsers
        var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)", "gi");
        str = str.replace(re, "<div$2</div>");
        var re2 = new RegExp("(<font|<FONT)([^*>]*>.*?)(<\/FONT>|<\/font>)", "gi");
        str = str.replace(re2, "<div$2</div>");
        str = str.replace(/size|SIZE = ([\d]{1})/g, '');
		str = str.replace( /(\bstyle\s*=\s*('[^']*'|"[^"]*"|[^\s>]+))/i,"");
        return str;
    }

    classUtil.prototype.posicion = function (obj) {
        var x = 0;
        var y = 0;
        if (obj.offsetParent) {
            while (obj.offsetParent) {
                x += obj.offsetLeft;
                y += obj.offsetTop;
                obj = obj.offsetParent;
            }
        } else if (obj.y) {
            x = obj.x;
            y = obj.y;
        }
        return { 'x': x, 'y': y };
    }

    this.itemsMarcarStyle = [];

    classUtil.prototype.marcarItems = function (items) {
        this.desmarcarItems();
        var i = 0; var item; for (i = 0; i < items.length; i++) {
            item = util.dom(items[i]);
            var fondo;
            var borde;
            var colorLetra;
            try {
                fondo = item.style.background;
            } catch (e) {
                fondo = this.getStyle(item, "background");
            }
            try {
                borde = item.style.border;
            } catch (e) {
                borde = this.getStyle(item, "border");
            }
            try {
                colorLetra = item.style.color;
            } catch (e) { }
            this.itemsMarcarStyle.push({ object: item, background: fondo, border: borde, color: colorLetra });
            item.style.background = "#f5f8f9 url(css/images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x";
            item.style.color = "#e17009";
            item.style.border = "1px solid #79b7e7";
        }
    }

    classUtil.prototype.desmarcarItems = function () {
        var i = 0; var item; for (i = 0; i < this.itemsMarcarStyle.length; i++) {
            item = this.itemsMarcarStyle[i];
            item.object.style.background = this.itemsMarcarStyle[i].background;
            item.object.style.color = this.itemsMarcarStyle[i].color;
            item.object.style.border = this.itemsMarcarStyle[i].border;
        }
        this.itemsMarcarStyle = [];
    }

    var mostrarFinSesion = function () {
        var dialogo = $("<p style='16px;'>Sesion concluida..</p>").dialog({ modal: true, autoOpen: false, width: 300, height: 140, title: "Mensaje", buttons: { Cerrar: function () {
            dialogo.dialog("close");
            self.location.href = "loggin.htm";
        }
        }
        });
    }

    classUtil.prototype.trim = function (str) {
        return str.replace(/^\s*|\s*$/g, "");
    }

    classUtil.prototype.validarEmail = function (valor) {
        var filter = /^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[A-za-z]$/;
        if (filter.test(valor)) {
            return true;
        } else {
            return false;
        }
    }

}
var util = new classUtil();
