﻿Event.observe(window, "load", documentOnLoad);
Event.observe(document, "dom:loaded", domOnLoad);

function documentOnLoad(ev) {
}

function domOnLoad(ev) {
    if (prepareKeywordSearch) prepareKeywordSearch();
}

function launchEvent(objectID, event) {
    eval('$(objectID).' + event + '()');
}

function fnSetDefaultButton(btnName, event) {
    var keyCode = getKeyCode(event);
    var target = getSourceElement(event);
    if (keyCode == 13) {
        if (target.type == "textarea" || target.type == "text") {
            event.returnValue = true;
            event.cancel = false;
        } else {
            event.returnValue = false;
            event.cancel = true;
            var btn = document.getElementById(btnName);

            if (btn) btn.click();
        }
    } else {
        event.returnValue = true;
        event.cancel = false;
    }
}

function fnTrapEnter(event) {
    var keyCode = getKeyCode(event);
    var target = getSourceElement(event);

    if ((target.type == "textarea" || target.type == "text") && keyCode == 13) {
        event.returnValue = true;
        event.cancel = false;
        return;
    } else {
        if (keyCode == 13) {
            event.returnValue = false;
            event.cancel = true;
        }
    }
}

function getKeyCode(event) {
    if (event.which) return event.which;
    if (event.keyCode) return event.keyCode;
    return null;
}

function getSourceElement(event) {
    if (event.srcElement) return event.srcElement;
    if (event.target) return event.target;
    return null;
}

function writeToDisplayObject(displayID, toWrite) {
    var displayObject;

    if (document.all) displayObject = document.all[displayID];
    else displayObject = document.getElementById(displayID);

    if (displayObject.value)
        displayObject.value = toWrite;
    else
        displayObject.innerHTML = toWrite;
}

function limitCharacters(textArea, displayID, charCount, e) {
    var source = getSourceElement(e);
    var chars = textArea.value;

    writeToDisplayObject(displayID, (charCount - chars.length).toString());

    if (chars.length > charCount) {
        textArea.value = textArea.value.substring(0, charCount);
        event.returnValue = false;
        event.cancel = true;
        return false;
    }
    return true;
}

var TagValue = "";
var bv = new Array();

function setBannerPageTags(assetid, ev, ed, lk) {
    var row = new Array();
    row.push(assetid);
    row.push(ev);
    row.push(ed);

    if (lk == "1") {
        row.push(lk);
        commitBannerPageTags();
    }

    bv.push(row);

    return;
}

function commitBannerPageTags() {
    while (bv.length > 0) {
        var row = bv.shift();
        setPageTag("e_assetid", row[0]);
        if (row[3]) {
            setPageTag("lk", row[3]);
        }
        tagEvent(row[1], row[2]);
    }
    return;
}

var pve = new Array();

function setPostViewEvent(ev, ed) {
    var row = new Array();
    row.push(ev);
    row.push(ed);
    pve.push(row);

    return;
}

function commitPostViewEventPageTags() {
    while (pve.length > 0) {
        var row = pve.shift();
        tagEvent(row[0], row[1]);
    }
    return;
}

var Errorv = new Array();

function setErrorPageTags(ed, field, error) {
    var row = new Array();
    row.push(ed);
    row.push(field);
    row.push(error);

    Errorv.push(row);

    return;
}

function commitErrorPageTags() {
    while (Errorv.length > 0) {
        var row = Errorv.shift();

        setPageTag("field", row[1]);
        setPageTag("error", row[2]);
        tagEvent("Error", row[0]);
        clearTag("field", "error");
        clearEvents();
    }
    return;
}

function commitPageViewPageTags() {
    if (window.commitPageTags) {
        commitPageTags();
    }

    if (window.commitBannerPageTags) {
        commitBannerPageTags();
    }

    if (window.commitErrorPageTags) {
        commitErrorPageTags();
    }

    if (window.commitPostViewEventPageTags) {
        commitPostViewEventPageTags();
    }
}