﻿function $n(element) {
    if (arguments.length > 1) {
        for (var i = 0, elements = [], length = arguments.length; i < length; i++)
            elements.push($n(arguments[i]));
        return elements;
    }
    if (typeof element == 'string') {
        var el = document.getElementById(element);
        if (el)
            return el;
    }
    else
        return element;

    var regExp = new RegExp('_' + element + '$');
    var formsLength = document.forms.length;
    for (var i = 0; i < formsLength; i++) {
        var form = document.forms[i];
        var elementsLength = form.elements.length;
        for (var j = 0; j < elementsLength; j++) {
            element = form.elements[j];
            if (element.id && element.id.match(regExp))
                return element;
        }
    }

    //try images
    var imagesLength = document.images.length;
    for (var i = 0; i < imagesLength; i++) {
        element = document.images[i];
        if (element.id && element.id.match(regExp))
            return element;
    }

    //try inputs
    var inputs = document.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
        var element = inputs[i];
        if (element.id && element.id.match(regExp))
            return element;
    }
    
    return null;
}

function CancelBubble(e) {
    if (!e) var e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
} 


/*
name - name of the cookie
value - value of the cookie
[expires] - expiration date of the cookie
(defaults to end of current session)
[path] - path for which the cookie is valid
(defaults to path of calling document)
[domain] - domain for which the cookie is valid
(defaults to domain of calling document)
[secure] - Boolean value indicating if the cookie transmission requires
a secure transmission
* an argument defaults when it is assigned null as a placeholder
* a null placeholder is not required for trailing omitted arguments
*/

function setCookie(name, value, expires, path, domain, secure) {
    var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
    document.cookie = curCookie;
}



function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else
        begin += 2;
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
        end = dc.length;
    return unescape(dc.substring(begin + prefix.length, end));
}


function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

//selects all sibling checkbox items
function selectallsiblings(cb) {

    for (var i = 0; i < cb.parentNode.childNodes.length; i++) {
        if (cb.parentNode.childNodes[i].type == 'checkbox') cb.parentNode.childNodes[i].checked = cb.checked;
    }

}
