OnErrCustom = function(p)
{
    if (p.msg == "Login failure")
    {
        if ($get('PCBSLoginInfomation_PopUp') != null)
        {
            PopUpShow("PCBSLoginInfomation", true);
            setTimeout(function() { window.location = "Login.aspx" }, 5000);
        }
        else
        {
            window.location = "Login.aspx";
        }
        return false;
    }
    return true;
}

function ShowControl(id, show)
{
    var ctrl = $get(id);
    if (ctrl != null)
        ctrl.style.display = (show) ? "": "none";
}

function StudFilterKey(arg) {
    if (window.event.keyCode == 13) {
        arg();
    }
}


function doexcol(el, cnt) {
    var p = el;
    while (p && p.tagName != 'TR')
        p = p.parentNode;
    while (p && cnt > 0) {
        p = p.nextSibling;
        while (p && p.tagName != 'TR') p = p.nextSibling;
        if (!p) return;
        if (p.style.display == "")
            p.style.display = "none";
        else p.style.display = "";
        cnt--;
    }
    if (el.innerHTML == "+")
        el.innerHTML = "-";
    else el.innerHTML = "+";
    }

/*
function XMLHelper()
{
    var self = this;
    self.createFromString = function(str){
            var ret = null;
            if (window.ActiveXObject) { // code for IE
                var ids = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0",
                        "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0",
                        "Msxml2.DOMDocument", "Microsoft.XMLDOM"];
                for (var i = 0; i < ids.length; i++)
                    try { ret = new ActiveXObject(ids[i]); break; } catch(ex) {}
                ret.resolveExternals = true;
                ret.async=false;
                if(str != null && str != "") ret.loadXML(str);
                ret.setProperty("SelectionLanguage", "XPath");
                ret.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");
            } else { // code for Mozilla, Firefox, Opera, etc.
                if(str != null && str != "") {
                    var parser=new DOMParser();
                    ret = parser.parseFromString(str,"text/xml");
                } else ret = document.implementation.createDocument("","",null);
            }
            return ret;
        };
    
    self.createFromURL = function(url){
            return self.createFromString($.ajax({
                type: "GET",
                url: url,
                async: false
            }).responseText);
        };
      
    self.selectNodes = function(node, xpath){
            if(window.ActiveXObject) {// code for IE
                return node.selectNodes(xpath);
            } else {// code for Mozilla, Firefox, Opera, etc.
                var doc = node;
                if(node.ownerDocument)
                    doc = node.ownerDocument;
                var ret = new Array();
                if(doc.documentElement != null) {
                    var nsResolver = doc.createNSResolver(doc.documentElement)
                    var items = doc.evaluate(xpath, node, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
                    for(var i = 0; i < items.snapshotLength; i++)
                        ret[i] =  items.snapshotItem(i);
                }
                return ret;
            }
        };
    self.selectNodeText = function(node, xpath)
        {
            var node = this.selectSingleNode(node, xpath);
            if(node == null) return "";
            
            if(window.ActiveXObject) {// code for IE                
                return node.text;
            } else {// code for Mozilla, Firefox, Opera, etc.                
                return node.textContent;
            }
        };
    self.selectSingleNode = function(node, xpath){
            var nodes = this.selectNodes(node, xpath);
            if(nodes.length > 0) return nodes[0];
            else return null;
        };
    self.text = function(xml, xpath, val) {
            if(!xpath) xpath = ".";
            var node = this.selectSingleNode(xml, xpath);
            if(typeof val !== "undefined") {
                if(val == null) val = "";
                var doc = node.ownerDocument;
                var text = this.selectSingleNode(node, "text()");
                if(text == null) {
                    text = doc.createTextNode(val);
                    node.appendChild(text);
                } else text.data = val;
            } else {
                var ret = "";
                if (node)
                    for(var i = 0; i < node.childNodes.length; ++i)
                        ret += node.childNodes.item(i).data;
                return ret;
            }
        };
     self.assign = function(parent, data) {
            var frag = this.createFromString(data);
            var root = frag.documentElement;
            var node = this.selectSingleNode(parent, root.nodeName);
            frag.removeChild(root);
            if(node == null) parent.appendChild(root);
            else parent.replaceChild(root, node);
            return root;
        };
    self.outerXML = function(node){
            if(node.xml){//code for IE
                return node.xml;
            } else {//code for Mozilla
                var ser = new XMLSerializer();
                return ser.serializeToString(node);
            }
        };
   self.insert = function(src, dest, at) {
            if(at == null || at == "last()" || at >= dest.childNodes.length) dest.appendChild(src);
            else dest.insertBefore(src, dest.childNodes[at]);
            return src;
        };
   self.removeChild = function(node, child)
        {
            return node.removeChild(child);            
        };
   return self;
}

var xmlHelper = XMLHelper();
*/
var XML = new Object();
XML.load = function(url) {
    var xmldoc = XML.newDocument();
    xmldoc.async = false;  
    xmldoc.load(url);
    return xmldoc;  
  };


XML.newDocument = function(rootTagName, namespaceURL) {
    if (!rootTagName) rootTagName = "";
    if (!namespaceURL) namespaceURL = "";

    if (document.implementation && document.implementation.createDocument) {
        // This is the W3C standard way to do it
        return document.implementation.createDocument(namespaceURL, 
                       rootTagName, null);
    }
    else { // This is the IE way to do it
        // Create an empty document as an ActiveX object
        // If there is no root element, this is all we have to do
        var doc = new ActiveXObject("MSXML2.DOMDocument");

        // If there is a root tag, initialize the document
        if (rootTagName) {
            // Look for a namespace prefix
            var prefix = "";
            var tagname = rootTagName;
            var p = rootTagName.indexOf(':');
            if (p != -1) {
                prefix = rootTagName.substring(0, p);
                tagname = rootTagName.substring(p+1);
            }

            // If we have a namespace, we must have a namespace prefix
            // If we don't have a namespace, we discard any prefix
            if (namespaceURL) {
                if (!prefix) prefix = "a0"; // What Firefox uses
            }
            else prefix = "";

            // Create the root element (with optional namespace) as a
            // string of text
            var text = "<" + (prefix?(prefix+":"):"") + tagname +
                (namespaceURL
                 ?(" xmlns:" + prefix + '="' + namespaceURL +'"')
                 :"") +
                "/>";
            // And parse that text into the empty document
            doc.loadXML(text);
        }
        return doc;
    }
}; 

XML.selectNodes = function(node, xpath){
            if(window.ActiveXObject) {// code for IE
                return node.selectNodes(xpath);
            } else {// code for Mozilla, Firefox, Opera, etc.
                var doc = node;
                if(node.ownerDocument)
                    doc = node.ownerDocument;
                var ret = new Array();
                if(doc.documentElement != null) {
                    var nsResolver = doc.createNSResolver(doc.documentElement)
                    var items = doc.evaluate(xpath, node, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
                    for(var i = 0; i < items.snapshotLength; i++)
                        ret[i] =  items.snapshotItem(i);
                }
                return ret;
            }
        };
    XML.selectNodeText = function(node, xpath)
        {
            var node = this.selectSingleNode(node, xpath);
            if(node == null) return "";
            
            if(window.ActiveXObject) {// code for IE                
                return node.text;
            } else {// code for Mozilla, Firefox, Opera, etc.                
                return node.textContent;
            }
        };
    XML.selectSingleNode = function(node, xpath){
            var nodes = this.selectNodes(node, xpath);
            if(nodes.length > 0) return nodes[0];
            else return null;
        };