﻿var SUN_COL_DELIMITER = String.fromCharCode(16);
var SUN_ROW_DELIMITER = String.fromCharCode(15);
var COL_DELIMITER = String.fromCharCode(18);
var ROW_DELIMITER = String.fromCharCode(17);
var COL_DELIMITER = String.fromCharCode(18);
var __sun_m_bPageLoaded = false;

window.onload = __sun_Page_OnLoad;

function getById(sID, oCtl) {
    if (oCtl == null)
        oCtl = document;
    if (oCtl.getElementById)
        return oCtl.getElementById(sID);
    else if (oCtl.all)
        return oCtl.all(sID);
    else
        return null;
}

function createElement(sTagName) {
    if (document.createElement)
        return document.createElement(sTagName.toLowerCase());
    else
        return null;
}

function appendChild(oParent, oChild) {
    if (oParent.appendChild)
        return oParent.appendChild(oChild);
    else
        return null;
}

function getVars() {
    __vars = new Array();

    var oCtl = getById('__sunVariable');
    if (oCtl != null) {
        if (oCtl.value.indexOf('__scdoff') != -1) {
            //browsers like MacIE don't support char(18) very well... need to use multichars
            COL_DELIMITER = '~|~';
            ROW_DELIMITER = '~`~';
            QUOTE_REPLACEMENT = '~!~';
        }

        var aryItems = oCtl.value.split(ROW_DELIMITER);
        for (var i = 0; i < aryItems.length; i++) {
            var aryItem = aryItems[i].split(COL_DELIMITER);
            if (aryItem.length == 2)
                __vars[aryItem[0]] = aryItem[1];
        }
    }

    return __vars;
}

function getVar(sKey) {
    if (getVars()[sKey] != null) {
        var re = eval('/' + QUOTE_REPLACEMENT + '/g');
        return getVars()[sKey].replace(re, '"');
    }
}

function setVar(sKey, sVal) {
    if (__vars == null)
        getVars();
    __vars[sKey] = sVal;
    var oCtl = getById('__sunVariable');
    if (oCtl == null) {
        oCtl = createElement('INPUT');
        oCtl.type = 'hidden';
        oCtl.id = '__sunVariable';
        appendChild(getByTagName("body")[0], oCtl);
    }
    var sVals = '';
    var s;
    var re = eval('/"/g');
    for (s in __vars)
        sVals += ROW_DELIMITER + s + COL_DELIMITER + __vars[s].toString().replace(re, QUOTE_REPLACEMENT);

    oCtl.value = sVals;
    return true;
}

function __sun_ClientAPIEnabled() {
    //return typeof (sun) != 'undefined';
    return true;
}

function __sun_Page_OnLoad() {
    if (__sun_ClientAPIEnabled()) {
        var sLoadHandlers = getVar('__sun_pageload');
        if (sLoadHandlers != null)
            eval(sLoadHandlers);
    }
    __sun_m_bPageLoaded = true;
}

function __sun_KeyDown(iKeyCode, sFunc, e) {
    if (e == null)
        e = window.event;

    if (e.keyCode == iKeyCode) {
        eval(unescape(sFunc));
        return false;
    }
}