﻿function gotfocus() {
    $(".focus").focus();
}
function salt() {
    var r = Math.floor(Math.random() * 5001);
    return "&salt=" + r;
}

function dbAJAX(url, qs, f) {
    var queryString;
    if (isArray(qs)) {
        queryString = "?";
        for (x in qs) {
            if (queryString !== "?") {
                queryString += "&";
            }
            queryString += x + "=" + qs[x];
        }
    } else {
        queryString = qs
    }

    url += queryString;
    var getstate = url;
    var oXmlHttp = zXmlHttp.createRequest();
    oXmlHttp.open("get", getstate, true);
    oXmlHttp.onreadystatechange = function() {
        if (oXmlHttp.readyState == 4) {
            if (oXmlHttp.status == 200) {
                var innertext = oXmlHttp.responseText;
                f(innertext);
            } else {
                alert(oXmlHttp.status);
            }
        }
    };
    oXmlHttp.send(null);
}

function isArray(obj) {
    if (obj.constructor.toString().indexOf("Array") == -1)
        return false;
    else
        return true;
}

//========== input masks =================
function noNumbers(e) {
    var keynum
    var keychar
    var numcheck
    if (window.event) // IE
    {
        keynum = e.keyCode
    }
    else if (e.which) // Netscape/Firefox/Opera
    {
        keynum = e.which
    }
    keychar = String.fromCharCode(keynum);
    numcheck = /\D/;
    return numcheck.test(keychar);
}


function numbersOnly(e) {
    
    var key
    var keychar
    var numcheck
    if (window.event) // IE
    {
        key = e.keyCode
    }
    else if (e.which) // Netscape/Firefox/Opera
    {
        key = e.which
    }
    else
        return true;

    keychar = String.fromCharCode(key);
    
    if ((key == null) || (key == 0) || (key == 8) ||
    (key == 9) || (key == 13) || (key == 27))
        return true;

    else if ((("0123456789").indexOf(keychar) > -1))
        return true;

    else
        return false;

}

function floatpt(e) {

    var key
    var keychar
    var numcheck
    if (window.event) // IE
    {
        key = e.keyCode
    }
    else if (e.which) // Netscape/Firefox/Opera
    {
        key = e.which
    }
    else
        return true;

    keychar = String.fromCharCode(key);

    if ((key == null) || (key == 0) || (key == 8) ||
    (key == 9) || (key == 13) || (key == 27))
        return true;

    else if ((("-.0123456789").indexOf(keychar) > -1))
        return true;

    else
        return false;

}
function phoneOnly(e) {
    var key
    var keychar
    var numcheck
    if (window.event) // IE
    {
        key = e.keyCode
    }
    else if (e.which) // Netscape/Firefox/Opera
    {
        key = e.which
    }
    else
        return true;

    keychar = String.fromCharCode(key);
    if ((key == null) || (key == 0) || (key == 8) ||
    (key == 9) || (key == 13) || (key == 27))
        return true;

    else if ((("0123456789-()").indexOf(keychar) > -1))
        return true;

    else
        return false;

}

function noSpaces(e) {
    var keynum
    var keychar
    var numcheck
    if (window.event) // IE
    {
        keynum = e.keyCode
    }
    else if (e.which) // Netscape/Firefox/Opera
    {
        keynum = e.which
    }
    keychar = String.fromCharCode(keynum);
    numcheck = /\ /;
    return !numcheck.test(keychar);
}

function getBrowserPosition() {
    var intH = 0, intW = 0;

    if (self.innerHeight) {
        intH = window.innerHeight;
        intW = window.innerWidth;
    }
    else {
        if (document.documentElement && document.documentElement.clientHeight) {
            intH = document.documentElement.clientHeight;
            intW = document.documentElement.clientWidth;
        }
        else {
            if (document.body) {
                intH = document.body.clientHeight;
                intW = document.body.clientWidth;
            }
        }
    }

    return {
        height: parseInt(intH, 10),
        width: parseInt(intW, 10)
    };
}

function getScrollXY() {
    var scrOfX = 0, scrOfY = 0;
    if (typeof (window.pageYOffset) == 'number') {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
        //DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
    } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }
    return {
        offx: scrOfX,
        offy: scrOfY
    };
}
function centerElement(elem) {
    var viewport = getBrowserPosition();
    var left = (viewport.width == 0) ? 50 : parseInt((viewport.width - elem.offsetWidth) / 2, 10);
    var top = (viewport.height == 0) ? 50 : parseInt((viewport.height - elem.offsetHeight) / 2, 10);

    elem.style.left = left + 'px';
    elem.style.top = top + 'px';

    viewport, left, top, elem = null;
}

function urlencode(str) {
    var hexStr = function(dec) { return '%' + dec.toString(16).toUpperCase(); };
    var ret = '', unreserved = /[\w.-]/; // A-Za-z0-9_.- // Tilde is not here for historical reasons; to preserve it, use rawurlencode instead
    str = (str + '').toString();
    for (var i = 0, dl = str.length; i < dl; i++) {
        var ch = str.charAt(i);
        if (unreserved.test(ch)) { ret += ch; }
        else {
            var code = str.charCodeAt(i);
            // Reserved assumed to be in UTF-8, as in PHP
            if (code === 32) { ret += '+'; } // %20 in rawurlencode
            else if (code < 128) { ret += hexStr(code); } // 1 byte
            else if (code >= 128 && code < 2048) { ret += hexStr((code >> 6) | 0xC0); ret += hexStr((code & 0x3F) | 0x80); } // 2 bytes
            else if (code >= 2048 && code < 65536) { ret += hexStr((code >> 12) | 0xE0); ret += hexStr(((code >> 6) & 0x3F) | 0x80); ret += hexStr((code & 0x3F) | 0x80); } // 3 bytes
            else if (code >= 65536) { ret += hexStr((code >> 18) | 0xF0); ret += hexStr(((code >> 12) & 0x3F) | 0x80); ret += hexStr(((code >> 6) & 0x3F) | 0x80); ret += hexStr((code & 0x3F) | 0x80); } // 4 bytes
        }
    }
    return ret;
}

$.fn.centerInClient = function(options) {
    var opt = { forceAbsolute: true,
        container: window,    // selector of element to center in
        completeHandler: null,
        minX: 0,
        minY: 0
    };
    $.extend(opt, options);

    return this.each(function(i) {
        var el = $(this);
        var jWin = $(opt.container);
        var isWin = opt.container == window;

        // force to the top of document to ENSURE that
        // document absolute positioning is available
        if (opt.forceAbsolute) {
            if (isWin)
                el.remove().appendTo("body");
            else
                el.remove().appendTo(jWin.get(0));
        }

        // have to make absolute
        el.css("position", "absolute");

        // height is off a bit so fudge it
        var heightFudge = isWin ? 2.0 : 1.8;

        var x = (isWin ? jWin.width() : jWin.outerWidth()) / 2 - el.outerWidth() / 2;
        var y = (isWin ? jWin.height() : jWin.outerHeight()) / heightFudge - el.outerHeight() / 2;

        el.css("left", x < opt.minX ? opt.minX + jWin.scrollLeft() : x + jWin.scrollLeft());
        el.css("top", y < opt.minY ? opt.minY + jWin.scrollTop() : y + jWin.scrollTop());
        
        //el.css("left", x + jWin.scrollLeft());
        //el.css("top", y + jWin.scrollTop());

        // if specified make callback and pass element
        if (opt.completeHandler)
            opt.completeHandler(this);
    });
}

var zXml = { useActiveX: (typeof ActiveXObject != "undefined"), useDom: document.implementation && document.implementation.createDocument, useXmlHttp: (typeof XMLHttpRequest != "undefined") }; zXml.ARR_XMLHTTP_VERS = ["MSXML2.XmlHttp.6.0", "MSXML2.XmlHttp.3.0"]; zXml.ARR_DOM_VERS = ["MSXML2.DOMDocument.6.0", "MSXML2.DOMDocument.3.0"]; function zXmlHttp() { } zXmlHttp.createRequest = function() { if (zXml.useXmlHttp) { return new XMLHttpRequest(); } else if (zXml.useActiveX) { if (!zXml.XMLHTTP_VER) { for (var i = 0; i < zXml.ARR_XMLHTTP_VERS.length; i++) { try { new ActiveXObject(zXml.ARR_XMLHTTP_VERS[i]); zXml.XMLHTTP_VER = zXml.ARR_XMLHTTP_VERS[i]; break; } catch (oError) { ; } } } if (zXml.XMLHTTP_VER) { return new ActiveXObject(zXml.XMLHTTP_VER); } else { throw new Error("Could not create XML HTTP Request."); } } else { throw new Error("Your browser doesn't support an XML HTTP Request."); } }; zXmlHttp.isSupported = function() { return zXml.useXmlHttp || zXml.useActiveX; }; function zXmlDom() { } zXmlDom.createDocument = function() { if (zXml.useDom) { var oXmlDom = document.implementation.createDocument("", "", null); oXmlDom.parseError = { valueOf: function() { return this.errorCode; }, toString: function() { return this.errorCode.toString() } }; oXmlDom.__initError__(); oXmlDom.addEventListener("load", function() { this.__checkForErrors__(); this.__changeReadyState__(4); }, false); return oXmlDom; ; } else if (zXml.useActiveX) { if (!zXml.DOM_VER) { for (var i = 0; i < zXml.ARR_DOM_VERS.length; i++) { try { new ActiveXObject(zXml.ARR_DOM_VERS[i]); zXml.DOM_VER = zXml.ARR_DOM_VERS[i]; break; } catch (oError) { ; } } } if (zXml.DOM_VER) { return new ActiveXObject(zXml.DOM_VER); } else { throw new Error("Could not create XML DOM document."); } } else { throw new Error("Your browser doesn't support an XML DOM document."); } }; zXmlDom.isSupported = function() { return zXml.useDom || zXml.useActiveX; }; var oMozDocument = null; if (typeof XMLDocument != "undefined") { oMozDocument = XMLDocument; } else if (typeof Document != "undefined") { oMozDocument = Document; } if (oMozDocument && !window.opera) { oMozDocument.prototype.readyState = 0; oMozDocument.prototype.onreadystatechange = null; oMozDocument.prototype.__changeReadyState__ = function(iReadyState) { this.readyState = iReadyState; if (typeof this.onreadystatechange == "function") { this.onreadystatechange(); } }; oMozDocument.prototype.__initError__ = function() { this.parseError.errorCode = 0; this.parseError.filepos = -1; this.parseError.line = -1; this.parseError.linepos = -1; this.parseError.reason = null; this.parseError.srcText = null; this.parseError.url = null; }; oMozDocument.prototype.__checkForErrors__ = function() { if (this.documentElement.tagName == "parsererror") { var reError = />([\s\S]*?)Location:([\s\S]*?)Line Number(\d+),Column(\d+):<sourcetext>([\s\S]*?)(?:\-*\^)/; reError.test(this.xml); this.parseError.errorCode = -999999; this.parseError.reason = RegExp.$1; this.parseError.url = RegExp.$2; this.parseError.line = parseInt(RegExp.$3); this.parseError.linepos = parseInt(RegExp.$4); this.parseError.srcText = RegExp.$5; } }; oMozDocument.prototype.loadXML = function(sXml) { this.__initError__(); this.__changeReadyState__(1); var oParser = new DOMParser(); var oXmlDom = oParser.parseFromString(sXml, "text/xml"); while (this.firstChild) { this.removeChild(this.firstChild); } for (var i = 0; i < oXmlDom.childNodes.length; i++) { var oNewNode = this.importNode(oXmlDom.childNodes[i], true); this.appendChild(oNewNode); } this.__checkForErrors__(); this.__changeReadyState__(4); }; oMozDocument.prototype.__load__ = oMozDocument.prototype.load; oMozDocument.prototype.load = function(sURL) { this.__initError__(); this.__changeReadyState__(1); this.__load__(sURL); }; Node.prototype.__defineGetter__("xml", function() { var oSerializer = new XMLSerializer(); return oSerializer.serializeToString(this, "text/xml"); }); Node.prototype.__defineGetter__("text", function() { var sText = ""; for (var i = 0; i < this.childNodes.length; i++) { if (this.childNodes[i].hasChildNodes()) { sText += this.childNodes[i].text; } else { sText += this.childNodes[i].nodeValue; } } return sText; }); } function zXslt() { } zXslt.transformToText = function(oXml, oXslt) { if (typeof XSLTProcessor != "undefined") { var oProcessor = new XSLTProcessor(); oProcessor.importStylesheet(oXslt); var oResultDom = oProcessor.transformToDocument(oXml); var sResult = oResultDom.xml; if (sResult.indexOf("<transformiix:result") > -1) { sResult = sResult.substring(sResult.indexOf(">") + 1, sResult.lastIndexOf("<")); } return sResult; ; } else if (zXml.useActiveX) { return oXml.transformNode(oXslt); } else { throw new Error("No XSLT engine found."); } }; function zXPath() { } zXPath.selectNodes = function(oRefNode, sXPath, oXmlNs) { if (typeof XPathEvaluator != "undefined") { oXmlNs = oXmlNs || {}; var nsResolver = function(sPrefix) { return oXmlNs[sPrefix]; }; var oEvaluator = new XPathEvaluator(); var oResult = oEvaluator.evaluate(sXPath, oRefNode, nsResolver, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); var aNodes = new Array; if (oResult != null) { var oElement = oResult.iterateNext(); while (oElement) { aNodes.push(oElement); oElement = oResult.iterateNext(); } } return aNodes; } else if (zXml.useActiveX) { if (oXmlNs) { var sXmlNs = ""; for (var sProp in oXmlNs) { sXmlNs += "xmlns:" + sProp + "=\'" + oXmlNs[sProp] + "\' "; } oRefNode.ownerDocument.setProperty("SelectionNamespaces", sXmlNs); }; return oRefNode.selectNodes(sXPath); } else { throw new Error("No XPath engine found."); } }; zXPath.selectSingleNode = function(oRefNode, sXPath, oXmlNs) { if (typeof XPathEvaluator != "undefined") { ; oXmlNs = oXmlNs || {}; var nsResolver = function(sPrefix) { return oXmlNs[sPrefix]; }; var oEvaluator = new XPathEvaluator(); var oResult = oEvaluator.evaluate(sXPath, oRefNode, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null); if (oResult != null) { return oResult.singleNodeValue; } else { return null; }; } else if (zXml.useActiveX) { if (oXmlNs) { var sXmlNs = ""; for (var sProp in oXmlNs) { sXmlNs += "xmlns:\'" + sProp + "=" + oXmlNs[sProp] + "\' "; } oRefNode.ownerDocument.setProperty("SelectionNamespaces", sXmlNs); }; return oRefNode.selectSingleNode(sXPath); } else { throw new Error("No XPath engine found."); } }; function zXMLSerializer() { } zXMLSerializer.prototype.serializeToString = function(oNode) { var sXml = ""; switch (oNode.nodeType) { case 1: sXml = "<" + oNode.tagName; for (var i = 0; i < oNode.attributes.length; i++) { sXml += " " + oNode.attributes[i].name + "=\"" + oNode.attributes[i].value + "\""; } sXml += ">"; for (var i = 0; i < oNode.childNodes.length; i++) { sXml += this.serializeToString(oNode.childNodes[i]); } sXml += "</" + oNode.tagName + ">"; break; case 3: sXml = oNode.nodeValue; break; case 4: sXml = "<![CDATA[" + oNode.nodeValue + "]]>"; break; case 7: sXml = "<?" + oNode.nodevalue + "?>"; break; case 8: sXml = "<!--" + oNode.nodevalue + "-->"; break; case 9: for (var i = 0; i < oNode.childNodes.length; i++) { sXml += this.serializeToString(oNode.childNodes[i]); } break; }; return sXml; };

