String.prototype.startsWith = function(s) {
    return (s == null) ? false : (this.substring(0, s.length) == s);
};
String.prototype.endsWith = function(s) {
    return (s == null) ? false : (this.substr(this.length - s.length, s.length) == s);
};
/*utils*/
hasClass = function(elm, cls) {
    if (!elm || !elm.className) return null;
    return (' ' + elm.className + ' ').indexOf(' ' + cls + ' ') + 1;
};
changeClass = function(elm, oldcls, newcls) {
    if (!elm) return null;
    var c = elm.className.split(' ');
    for (var i = 0; i < c.length; i++) {
        if (c[i] == oldcls || c[i] == newcls || c[i] == '') c.splice(i, 1);
    }
    c.push(newcls);
    elm.className = c.join(' ');
};
toggleClass = function(elm, cls) {
    if (hasClass(elm, cls)) changeClass(elm, cls, '');
    else changeClass(elm, '', cls);
};
__ebi = function(id) {
    var elm = document.getElementById(id);
    if (arguments.length > 1) {
        var elms = {};
        elms[id] = elm;
        for (var i = 1; i < arguments.length; i++) elms[arguments[i]] = __ebi(arguments[i]);
        return elms;
    }
    return elm;
};
__ebt = function(tag, elm) {
    return (elm ? elm : document).getElementsByTagName(tag);
};
/* forms */
submitChecktrip = function(formObject) {
    var alerts = [];
    if (formObject['RECORD_LOCATOR'].value.length != 6) alerts.push(formObject['alerts_record'].value);
    if (formObject['LAST_NAME'].value == "") alerts.push(formObject['alerts_lastname'].value);
    if (alerts.length > 0) {
        alert(formObject['alerts'].value + "\n- " + alerts.join("\n- "));
        return false;
    }
    formObject.target = "_blank";
    return true;
};
submitTimetable = function(link, direction, f) {
    var sel = f.options[f.selectedIndex].value;
    if (sel != "all" && sel != "") {
        if (link.indexOf("?") > -1) link += "&";
        else link += "?";
        link += direction + "=" + sel;
    }
    window.location = link;
};

/* enhance */
swaplines = function() {
    var uls = __ebt('ul');
    var cls, div, lis;
    var LIST_CLS = 'swaplines';
    for (var i = 0; i < uls.length; i++) {
        cls = uls[i].className;
        if (cls.indexOf(LIST_CLS) >= 0) {
            cls = cls.substr(cls.indexOf(LIST_CLS));
            cls = (cls.indexOf(' ') >= 0) ? cls.substr(0, cls.indexOf(' ')) : cls;
            div = (cls.length > LIST_CLS.length) ? parseInt(cls.substr(LIST_CLS)) : 2;
            if (isNaN(div)) div = 2;
            lis = uls[i].getElementsByTagName('li');
            for (var j = 0; j < lis.length; j++) {
                if (lis[j].parentNode == uls[i]) lis[j].className += ' itm' + (j % div);
            }
        }
    }
};
switchframes = function(linkElement) {
    var frame = (linkElement.href.indexOf('check') >= 0) ? 'check' : 'book';
    var elms = __ebi('book', 'bookf', 'check', 'checkf');
    for (var p in elms) {
        if (!elms[p]) continue;
        toggleClass(elms[p], 'selected');
    }
    return false;
};
enhanceLinks = function(classNames) {
    var elms = __ebt("a");
    var elm;
    for (var i = 0; i < elms.length; i++) {
        elm = elms[i];
        for (var j = 0; j < classNames.length; j++) {
            if (hasClass(elm, classNames[j])) {
                fn = eval(classNames[j]);
                if (typeof(fn) == 'function') elm.onclick = function() {
                    return fn(this);
                }
            }
        }
    }
};

jump = function(url) {
    if (url != null && url != "") {
        return !(window.location.href = url);
    } else {
        return false;
    }
};

show = function(id) {
    document.getElementById(id).style.visibility = "visible";
};

hide = function(id) {
    document.getElementById(id).style.visibility = "hidden";
};

appendPercent = function() {    
    for (var i = 0;i < document.getElementsByClassName("thisYear").length;i++) {
        document.getElementsByClassName("thisYear")[i].innerHTML = document.getElementsByClassName("thisYear")[i].innerHTML + " %";
    }
};

var highlightedElement = null;

highlight = function(element) {
    if (highlightedElement != null) highlightedElement.style.backgroundPosition = "left top";
    element.style.backgroundPosition = "right top";
    highlightedElement = element;
};

/* init & load */
window.oninit = function() {
    if (document.getElementById && document.getElementsByTagName) {
        swaplines();
        enhanceLinks(['switchframes']);
        appendPercent();
    }
};

launchInit = function() {
    if (document.getElementsByTagName && typeof(window.oninit) == 'function') {
        if (document.getElementsByTagName('body').length > 0) window.oninit();
        else setTimeout('launchInit()', 30);
    }
};
launchInit();