/**
* Declaration variables
*/
var selectedTab = "";
var screenHeight = window.screen.availHeight;
var screenWidth = window.screen.availWidth;
var colorDepth = window.screen.colorDepth;
var timeNow = new Date();
var referrer = escape(document.referrer);
var windows, mac, linux;
var ie, op, moz, misc, browsercode, browsername, browserversion, operatingsys;
var dom, ienew, ie4, ie5, ie6, moz_rv, moz_rv_sub, ie5mac, ie5xwin, opnu, op4, op5, op6, op7, saf, konq;
var appName, appVersion, userAgent;
var appname = navigator.appName;
var appVersion = navigator.appVersion;
var userAgent = navigator.userAgent.toLowerCase();
var title = document.title;
var checktoggle = 1;
var DOMBROWSER = "default";

windows = (appVersion.indexOf('Win') != -1);
mac = (appVersion.indexOf('Mac') != -1);
linux = (appVersion.indexOf('Linux') != -1);

/**
* DOM Compatible?
*/
if (!document.layers)
{
        dom = (document.getElementById ) ? document.getElementById : false;
} else {
        dom = false;
}

if (document.getElementById)
{
        DOMBROWSER = "default";
} else if (document.layers) {
        DOMBROWSER = "NS4";
} else if (document.all) {
        DOMBROWSER = "IE4";
}

misc=(appVersion.substring(0,1) < 4);
op=(userAgent.indexOf('opera') != -1);
moz=(userAgent.indexOf('gecko') != -1);
ie=(document.all && !op);
saf=((userAgent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc."));
konq=(userAgent.indexOf('konqueror') != -1);

if (op) {
        op_pos = userAgent.indexOf('opera');
        opnu = userAgent.substr((op_pos+6),4);
        op5 = (opnu.substring(0,1) == 5);
        op6 = (opnu.substring(0,1) == 6);
        op7 = (opnu.substring(0,1) == 7);
} else if (moz){
        rv_pos = userAgent.indexOf('rv');
        moz_rv = userAgent.substr((rv_pos+3),3);
        moz_rv_sub = userAgent.substr((rv_pos+7),1);
        if (moz_rv_sub == ' ' || isNaN(moz_rv_sub)) {
                moz_rv_sub='';
        }
        moz_rv = moz_rv + moz_rv_sub;
} else if (ie){
        ie_pos = userAgent.indexOf('msie');
        ienu = userAgent.substr((ie_pos+5),3);
        ie4 = (!dom);
        ie5 = (ienu.substring(0,1) == 5);
        ie6 = (ienu.substring(0,1) == 6);
}

if (konq) {
        browsercode = "KO";
        browserversion = appVersion;
        browsername = "Knoqueror";
} else if (saf) {
        browsercode = "SF";
        browserversion = appVersion;
        browsername = "Safari";
} else if (op) {
        browsercode = "OP";
        if (op5) {
                browserversion = "5";
        } else if (op6) {
                browserversion = "6";
        } else if (op7) {
                browserversion = "7";
        } else {
                browserversion = appVersion;
        }
        browsername = "Opera";
} else if (moz) {
        browsercode = "MO";
        browserversion = appVersion;
        browsername = "Mozilla";
} else if (ie) {
        browsercode = "IE";
        if (ie4) {
                browserversion = "4";
        } else if (ie5) {
                browserversion = "5";
        } else if (ie6) {
                browserversion = "6";
        } else {
                browserversion = appVersion;
        }
        browsername = "Internet Explorer";
}

if (windows) {
        operatingsys = "Windows";
} else if (linux) {
        operatingsys = "Linux";
} else if (mac) {
        operatingsys = "Mac";
} else {
        operatingsys = "Unkown";
}

function browserObject(objid)
{
        if (DOMBROWSER == "default")
        {
                return document.getElementById(objid);
        } else if (DOMBROWSER == "NS4") {
                return document.layers[objid];
        } else if (DOMBROWSER == "IE4") {
                return document.all[objid];
        }
}

// ======= KEYBOARD SHORTCUTS =======
if (window.Event)
{
        document.captureEvents(Event.KEYDOWN);
}
document.onkeydown = keyHandler;

var isTicketList = false;
var isTicketPage = false;

function keyHandler(e)
{
        var isShift = isCtrl = false;

        var eventSrc = null;

        if (window.Event)
        {
                if (e.altKey == true) {
                        return true;
                }

                if (e.shiftKey == true)
                {
                        isShift = true;
                } else if (e.ctrlKey == true) {
                        isCtrl = true;
                }

                keyPress = e.which;

                try {
                        if (e.srcElement) {
                                eventSrc = e.srcElement;
                        } else if (e.target) {
                                eventSrc = e.target;
                        }
                } catch (e) {

                }
        } else {
/*                if ((event.modifiers & event.ALT_MASK)) {
                        return false;
                }

                if (event.modifiers & event.SHIFT_MASK)
                {
                        isShift = true;
                } else if (event.modifiers & event.CTRL_MASK) {
                        isCtrl = true;
                }*/

                if (window.event.altKey == true)
                {
                        return true;
                } else if (window.event.shiftKey == true) {
                        isShift = true;
                } else if (window.event.ctrlKey == true) {
                        isCtrl = true;
                }

                keyPress = window.event.keyCode;

                try {
                        if (window.event.srcElement) {
                                eventSrc = window.event.srcElement;
                        } else if (window.event.target) {
                                eventSrc = window.event.target;
                        }
                } catch (e) {

                }
        }

        keyPressChar = String.fromCharCode(keyPress);

        if (isCtrl && isTicketPage && keyPressChar == "Z")
        {
                if (selectedTab == "ttpostreply")
                {
                        document.replyform.submit();
                } else if (selectedTab == "ttforward") {
                        document.forwardform.submit();
                } else if (selectedTab == "ttrelease") {
                        document.releaseform.submit();
                } else if (selectedTab == "ttbilling") {
                        document.billingform.submit();
                } else if (selectedTab == "ttaddnotes") {
                        document.noteform.submit();
                }

                return true;
        }

        // Loop through DOM Nodes
        for (var eHandler = eventSrc; eHandler != null; eHandler = eHandler.parentNode) {
                if (eHandler.nodeName == "TEXTAREA" || eHandler.nodeName == "SELECT" || eHandler.nodeName == "INPUT" || eHandler.nodeName == "BUTTON") {
                        return true;
                }
        }

/*        if (isShift == true && keyPress != "16")
        {
                alert(keyPressChar);
        }*/

        // Ticket List + Shift + ] = Previous Department
        if (isTicketList == true && isShift == true && keyPress == 221)
        {


        // Ticket List + Shift + [ = Next Department
        } else if (isTicketList == true && isShift == true && keyPress == 219) {


        // Ticket List + Shift + | = View All
        } else if (isTicketList == true && isShift == true && keyPress == 220) {


        // Search Keywords
        } else if (isShift == true && keyPressChar == "S" && (isTicketList == true || isTicketPage == true)) {
                CustomPopup('ticketsearch', e, 'linkticketsearch', 'ticketsearch');
                setTimeout('document.tiqform.query.focus();', 400);
        // Search Ticket ID
        } else if (isShift == true && keyPressChar == "T" && (isTicketList == true || isTicketPage == true)) {
                CustomPopup('ticketsearch', e, 'linkticketsearch', 'ticketsearch');
                setTimeout('document.tidform.ticketid.focus();', 400);
        } else if (isShift == true && keyPressChar == "P" && isTicketPage == true) {
                switchGridTab('ttpostreply', 'tickets');
                setTimeout('document.replyform.replycontents.focus();', 400);
        } else if (isShift == true && keyPressChar == "G" && isTicketPage == true) {
                switchGridTab('ttgeneral', 'tickets')
        } else if (isShift == true && keyPressChar == "F" && isTicketPage == true) {
                switchGridTab('ttforward', 'tickets');
                fetchData('forward', ticketPageTicketID);
        } else if (isShift == true && keyPressChar == "B" && isTicketPage == true) {
                switchGridTab('ttbilling', 'tickets');
                fetchData('billing', ticketPageTicketID);
        } else if (isShift == true && keyPressChar == "N" && isTicketPage == true) {
                switchGridTab('ttaddnotes', 'tickets');
                fetchData('addnotes', ticketPageTicketID);
        } else if (isShift == true && keyPressChar == "R" && isTicketPage == true) {
                switchGridTab('ttrelease', 'tickets');
                fetchData('release', ticketPageTicketID);
        } else if (isShift == true && keyPressChar == "H" && isTicketPage == true) {
                switchGridTab('tthistory', 'tickets');
                fetchData('history', ticketPageTicketEmail);
        // Shift + ->
        } else if (isShift == true && keyPress == 39 && isTicketPage == true) {
                window.location.href = swiftpath+ "staff/index.php?_m=tickets&_a=ticketactions&action=jump&t=next&ticketid="+ticketPageTicketID;
        // Shift + -<
        } else if (isShift == true && keyPress == 37 && isTicketPage == true) {
                window.location.href = swiftpath+ "staff/index.php?_m=tickets&_a=ticketactions&action=jump&t=previous&ticketid="+ticketPageTicketID;
        }



//        alert(keyPress);
}

function displayObject(objid)
{
        result = browserObject(objid);
        if (!result)
        {
                alert("Invalid Display Object: "+objid+"\nPlease make sure that all correct display objects are on the page");
                return;
        }

        result.style.display = "";
}

function hideObject(objid)
{
        result = browserObject(objid);
        if (!result)
        {
                alert("Invalid Display Object: "+objid+"\nPlease make sure that all correct display objects are on the page");
                return;
        }

        result.style.display = "none";
}

function displayTicketEdit() {
        displayObject('ticketedit');
        displayObject('ticketsubmit');
        hideObject('tickettext');
}

function hideTicketEdit() {
        hideObject('ticketedit');
        hideObject('ticketsubmit');
        displayObject('tickettext');
}

function switchDisplay(objid)
{
        result = browserObject(objid);
        if (!result)
        {
                alert("Invalid Display Object: "+objid+"\nPlease make sure that all correct display objects are on the page");
                return;
        }

        if (result.style.display == "none")
        {
                result.style.display = "";
        } else {
                result.style.display = "none";
        }
}

function blurObject(objid) {
        var objM = browserObject(objid);
        if (objM)
        {
                objM.blur();
        }
}

function displayGridTabData(gridname, dodisplay) {
        if (dodisplay)
        {
                displayObject("gridtableopt"+gridname);
        } else {
                switchDisplay("gridtableopt"+gridname);
        }
        hideTab("massaction");
        hideTab("search");
        hideTab("settings");
}

function displayTab(objid) {
        if (objid != "addresscards" && objid != "detailedcards")
        {
                result = browserObject("tab_"+objid);
                if (!result)
                {
        //                alert("Invalid Display Object: "+objid+"\nPlease make sure that all correct display objects are on the page");
                        return;
                }

                result.style.display = "";
        }

        resultlink = browserObject(objid);
        if (!resultlink)
        {
                return;
        }
        resultlink.className = "currenttab";
}

function hideTab(objid) {
        if (objid != "addresscards" && objid != "detailedcards")
        {
                var result = browserObject("tab_"+objid);
                if (!result)
                {
        //                alert("Invalid Display Object: "+objid+"\nPlease make sure that all correct display objects are on the page");
                        return;
                }

                result.style.display = "none";
        }
        resultlink = browserObject(objid);
        if (!resultlink)
        {
                return;
        }
        resultlink.className = "";
}

function iif(cond, success, failure) {
        return cond ? success : failure;
}

function switchGridTab(object, tabgroup) {
        if (tabgroup == "gridoptions")
        {
                var gridtabs = new Array("search", "massaction", "settings");
                hideTabObj(object, gridtabs);
        } else if (tabgroup == "tickets") {
                selectedTab = object;
                var tickettabs = new Array("ttgeneral", "ttpostreply", "ttforward", "ttaddnotes", "ttbilling", "tthistory", "ttlog", "ttedit", "ttrelease", "ttlschats");
                hideTabObj(object, tickettabs);
        } else if (tabgroup == "teamwork") {
                selectedTab = object;
                var twtabs = new Array("twday", "twworkweek", "twweek", "twmonth");
                hideTabObj(object, twtabs);
        } else if (tabgroup == "contacts") {
                selectedTab = object;
                var cltabs = new Array("addresscards", "detailedcards");
                hideTabObj(object, cltabs);
        } else if (tabgroup == "contactform") {
                selectedTab = object;
                var cftabs = new Array("clgeneral", "clbusiness", "clpersonal", "clmisc", "cltickets", "clchats", "clcustom");
                hideTabObj(object, cftabs);
        } else if (tabgroup == "eventform") {
                selectedTab = object;
                var cftabs = new Array("efgeneral", "efmisc", "efcustom");
                hideTabObj(object, cftabs);
        } else if (tabgroup == "taskform") {
                selectedTab = object;
                var cftabs = new Array("tfgeneral", "tfmisc", "tfcustom");
                hideTabObj(object, cftabs);
        } else if (tabgroup == "userform") {
                selectedTab = object;
                var cftabs = new Array("suedit", "sutickets", "suchats", "suticketreports");
                hideTabObj(object, cftabs);
        }
}

function hideTabObj(showtab, tablist) {
        displayTab(showtab);
        for (i=0;i<tablist.length;i++)
        {
                if (tablist[i] != showtab)
                {
                        hideTab(tablist[i]);
                }
        }
}


function hideTabOn(objid, displaytype) {
        result = browserObject(objid);
        if (!result)
        {
                alert("Invalid Display Object: "+objid+"\nPlease make sure that all correct display objects are on the page");
                return;
        }

        if (result.style.display == "none")
        {
                // hidden
                hideTab("search");
                hideTab("massaction");
                hideTab("settings");
        } else {
                if (displaytype == "search")
                {
                        displayTab("search");
                } else if (displaytype == "settings") {
                        displayTab("settings");
                } else {
                        displayTab("massaction");
                }
        }
}

function toggleAll(formname) {
        var currForm = formname;
        var isChecked = checktoggle;
        var itercount = 1;
        var trassignid;

        if (checktoggle == 1) {
                checktoggle = 0;
        } else {
                checktoggle = 1;
        }

        for (var elementIdx=0; elementIdx<currForm.elements.length; elementIdx++) {
                if (!currForm.elements)
                {
                        break;
                }

                if (currForm.elements[elementIdx].type == 'checkbox') {
                        currForm.elements[elementIdx].checked = isChecked;
                } else if (currForm.elements[elementIdx].type == 'hidden') {
                        hidval = currForm.elements[elementIdx].name;

                        if (hidval.substr(0, 13) == 'itemhighlight')
                        {
                                trassignid = hidval.substr(13, hidval.length);
                                currForm.elements[elementIdx].value = isChecked;
                                highlightTR("trid"+trassignid, isChecked, itercount);
                                itercount++;
                        }
                }
        }
}

function highlightTR(element, isChecked, ditercount){

        var mgobj = browserObject(element);
        if (!mgobj)
        {
                return;
        }

        var altdecide = ditercount%2;

        if (isChecked == 1)
        {
                mgobj.className="rowselect";
        } else {
                if (altdecide == 0)
                {
                        mgobj.className="row1";
        } else {
                        mgobj.className="row2";
                }
        }
}

function showHighlight(name)
{
        if (name.className != "rowselect")
        {
                name.style.backgroundColor = "";
                name.className = 'rowhighlight';
        }
}

function clearHighlight(name, classname, bgcolor)
{
        if (name.className != "rowselect")
        {
                name.style.backgroundColor = bgcolor;
                name.className = classname;
        }
}

function doConfirm(question,url) {
        var x = confirm(question);
        if (x) {
                window.location.href = url;
        }
}

function submitGridForm(dosubmit)
{
        if (dosubmit)
        {
                document.ticketlistform.submit();
        }
        return true;
}

function doFormConfirm(confirmmessage, object) {
        if (object.value == "")
        {
                return false;
        }

        var x = confirm(confirmmessage);
        if (x) {
                object.form.submit();
                return true;
        }

        return false;
}

function selectjump(object){
        object.form.submit();
        return true;
}

function htmlize(str){
        str = str.replace(/\&/g,"&amp;");
        str = str.replace(/\</g,"&lt;");
        str = str.replace(/\>/g,"&gt;");
        str = str.replace(/\"/g,"&quot;");
        str = str.replace(/\n/g,"<br/>\n");
        return str;
}

function preloadImages() {
    if (document.images) {
        var imgFiles = arguments;
        if (document.preloadArray == null) {
            document.preloadArray = new Array();
        }
        var i = document.preloadArray.length;
        with (document) {
            for (var j = 0; j < imgFiles.length; j++) {
                if (imgFiles[j].charAt(0) != "#") {
                    document.preloadArray[i] = new Image();
                    document.preloadArray[i++].src = imgFiles[j];
                }
            }
        }
    }
}

/**
* MENU TAB RELATED FUNCTIONS
*/
function switchTabClass(tabname, classname) {
        var t_tab = browserObject(tabname);
        if (t_tab)
        {
                t_tab.className = classname;
        }
}

function resetTabDefault() {
        var tabClass = "menusectiondefault";
        if (swiftiswinapp == "1")
        {
                tabClass = "menusectionwinapp";
        }
        for (i = 1; i <= 10; i++)
        {
                switchTabClass("tb_menusection"+i, tabClass);
        }
}

function switchTab(tabitem, classid) {
        var t_ml = browserObject("tb_menuline");
        var t_mlnk = browserObject("tb_menulinks");
        var t_md = browserObject("linksdiv");

        t_md.innerHTML = menulinks[tabitem];
        t_ml.className = "menuline"+classid;
        t_mlnk.className = "menulinks"+classid;
        t_md.className = "menulinks"+classid;

        resetTabDefault();
        switchTabClass("tb_menusection"+tabitem, "menusection"+classid);
}

function LoadBarMenu(obj, tdobj){
        if(document.getElementById){
        var el = document.getElementById(obj);
        var ar = document.getElementById("parent").getElementsByTagName("span");
                if(el.style.display != "block"){
                        for (var i=0; i<ar.length; i++){
                                if (ar[i].className=="BarOptions" || ar[i].className=="BarOptionsDisplay")
                                ar[i].style.display = "none";
                        }
                        el.style.display = "block";
                }else{
                        el.style.display = "none";
                }
        }

        if (tdobj)
        {
                tdobj.style.background='#FFFFFF';
        }
}

function navigateWindow(navlocation) {
        window.location.href = navlocation;
}

function doRand()
{
        var num;
        now=new Date();
        num=(now.getSeconds());
        num=num+1;
        return num;
}

function popupInfoWindow(url) {
        screen_width = screen.width;
        screen_height = screen.height;
        widthm = (screen_width-400)/2;
        heightm = (screen_height-500)/2;
        window.open(url,"infowindow"+doRand(), "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=400,height=500,left="+widthm+",top="+heightm);
}

function popupSmallWindow(url) {
        screen_width = screen.width;
        screen_height = screen.height;
        widthm = (screen_width-400)/2;
        heightm = (screen_height-300)/2;
        window.open(url,"infowindow"+doRand(), "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=400,height=300,left="+widthm+",top="+heightm);
}

function changeImage(imgid, newpath)
{
        imgObj = browserObject(imgid);
        if (imgObj)
        {
                imgObj.src = newpath;
        }
}

function popupDataWindow(url) {
        screen_width = screen.width;
        screen_height = screen.height;
        widthm = (screen_width-700)/2;
        heightm = (screen_height-600)/2;
        window.open(url,"datawindow"+doRand(), "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=700,height=600,left="+widthm+",top="+heightm);
}

function changeColorTable(inputname, value) {
        tableid = browserObject("color"+inputname);

        tableid.style.backgroundColor = value;
        return true;
}

function enableField(field) {
        if (document.all || document.getElementById) {
                field.disabled = false;
        }
}

function disableField(field) {
        if (document.all || document.getElementById) {
                if (!field)
                {
                        return;
                }
                field.disabled = true;
        }
}

function initEditor() {
        htmlAreaLoaded = true;

        editor = new HTMLArea("contents");
        var config = editor.config;
        config.pageStyle = 'body { font-family: Verdana, Sans-Serif; font-size: 12px; } ';
        config.statusBar = false;
        config.toolbar = [
                [ "fontname", "space",
                  "fontsize", "space",
                  "formatblock", "space",
                  "bold", "italic", "underline", "strikethrough", "separator",
                  "subscript", "superscript", "separator",
                  "copy", "cut", "paste", "space", "undo", "redo", "space"],

                [ "justifyleft", "justifycenter", "justifyright", "justifyfull", "separator",
                  "lefttoright", "righttoleft", "separator",
                  "orderedlist", "unorderedlist", "outdent", "indent", "separator",
                  "forecolor", "hilitecolor", "separator",
                  "inserthorizontalrule", "createlink", "insertimage", "inserttable", "htmlmode"]
        ];
        if (loadTablePlugin == true)
        {
                editor.registerPlugin("TableOperations");
        }
        editor.registerPlugin("ContextMenu");
        editor.generate();
        return false;
}

function clearAllMenus(doignore) {
        return;

        if (!window.CMenuList)
        {
                return;
        }
        for (var i = 0;i<window.CMenuList.length;i++)
        {
                var itemKey = window.CMenuList[i];
                if ((window.CMenuClick == false || doignore == true) && window.CMenus[itemKey].isover == false)
                {
                        window.CMenus[itemKey].cancelQueued();
                        window.CMenus[itemKey]._setVisibility(false);
//                        window.CMenus[itemKey].showLevel(null, 0);
                }
        }
}

function listMoveItem(from, to)
{
        var f;
        var SI;

        from = document.forms["viewform"][from];
        to = document.forms["viewform"][to];

        if (from.options.length > 0)
        {
                for (i=0;i<from.length;i++)
                {
                        if (from.options[i].selected)
                        {
                                SI = from.selectedIndex;
                                f = from.options[SI].index;
                                to.options[to.length] = new Option(from.options[SI].text,from.options[SI].value);
                                from.options[f] = null;
                                i--;
                        }
                }
        }
}

function listMoveUpList(listField) {
        listField = document.forms["viewform"][listField];

        if ( listField.length == -1)
        {
//                alert("There are no values which can be moved!");
        } else {
                var selected = listField.selectedIndex;
                if (selected == -1)
                {
//                        alert("You must select an entry to be moved!");
                } else {
                        if (listField.length == 0 )
                        {
//                                alert("There is only one entry!\nThe one entry will remain in place.");
                        } else {
                                if ( selected == 0 ) {
//                                        alert("The first entry in the list cannot be moved up.");
                                } else {
                                        var moveText1 = listField[selected-1].text;
                                        var moveText2 = listField[selected].text;
                                        var moveValue1 = listField[selected-1].value;
                                        var moveValue2 = listField[selected].value;
                                        listField[selected].text = moveText1;
                                        listField[selected].value = moveValue1;
                                        listField[selected-1].text = moveText2;
                                        listField[selected-1].value = moveValue2;
                                        listField.selectedIndex = selected-1;
                                }
                        }
                }
        }
}

function listMoveDownList(listField) {
        listField = document.forms["viewform"][listField];

        if (listField.length == -1) {
//                alert("There are no values which can be moved!");
        } else {
                var selected = listField.selectedIndex;
                if (selected == -1) {
//                        alert("You must select an entry to be moved!");
                } else {
                        if ( listField.length == 0 ) {
//                                alert("There is only one entry!\nThe one entry will remain in place.");
                        } else {
                                if ( selected == listField.length-1 ) {
//                                        alert("The last entry in the list cannot be moved down.");
                                } else {
                                        var moveText1 = listField[selected+1].text;
                                        var moveText2 = listField[selected].text;
                                        var moveValue1 = listField[selected+1].value;
                                        var moveValue2 = listField[selected].value;
                                        listField[selected].text = moveText1;
                                        listField[selected].value = moveValue1;
                                        listField[selected+1].text = moveText2;
                                        listField[selected+1].value = moveValue2;
                                        listField.selectedIndex = selected+1;
                                }
                        }
                }
        }
}

function processViewForm() {
        leftField = document.forms["viewform"]["leftfields[]"];
        mainField = document.forms["viewform"]["fields[]"];

        if (leftField.options.length > 0)
        {
                for (i=0;i<leftField.length;i++)
                {
                        leftField.options[i].selected = true;
                }
        }
        if (mainField.options.length > 0)
        {
                for (i=0;i<mainField.length;i++)
                {
                        mainField.options[i].selected = true;
                }
        }

        return true
}

function refreshPage() {
//        window.location.reload(true);
        window.location.href = swiftpath+"staff/index.php?_m=tickets&_a=manage";
}

function absX(o) {
        if (o == document.body) return 0;
        var x = o.offsetLeft;
        if (o.offsetParent && o.offsetParent != o)
                x += absX(o.offsetParent);
        return x;
}

function absX2(o, dotype) {
        if (o == document.body) return 0;

        var x = o.offsetLeft;
        if (dotype == 1)
        {
                x += o.offsetWidth;
        }

        if (o.offsetParent && o.offsetParent != o)
                x += absX2(o.offsetParent, 0);
        return x;
}

function absY(o) {
        if (o == document.body) return 0;
        var y = o.offsetTop;
        if (o.offsetParent && o.offsetParent != o)
                y += absY(o.offsetParent);
        return y;
}

function absY2(o, dotype) {
        if (o == document.body) return 0;
        var y = o.offsetTop;
        if (dotype == 1)
        {
                y += o.offsetHeight;
        }
        if (o.offsetParent && o.offsetParent != o)
                y += absY2(o.offsetParent, 0);
        return y;
}

function CustomOver(text, id, id2) {
        var o1 = browserObject(id); var o2 = browserObject(id2);
        if (!o1 || !o2)
        {
                return;
        }

//        return overlib(text, RELX, absX(o1), RELY, absY2(o2, 1), WIDTH, 300, FGCLASS, "stickyfg", BGCLASS, "stickybg", TEXTFONTCLASS, "stickyfont", CAPTIONFONTCLASS, "stickyfont", CLOSEFONTCLASS, "stickyfont");
        return overlib(text, FOLLOWMOUSE, WIDTH, 300, FGCLASS, "stickyfg", BGCLASS, "stickybg", TEXTFONTCLASS, "stickyfont", CAPTIONFONTCLASS, "stickyfont", CLOSEFONTCLASS, "stickyfont");
}

function CustomPopup(menu, e, id, datam) {
        var o1 = browserObject(id), o2 = browserObject('popupRef');
        if (!o1 || !o2)
                return;

        CMenuPopUpXY(menu, absX(o1), absY(o2));
}

function CustomPopupRef(menu, e, id, datam, refobject, refvar) {
        if (!refvar)
        {
                return false;
        }

        var o1 = browserObject(id), o2 = browserObject(refobject);
        if (!o1 || !o2)
                return;

        if (menu == "tviewmenu")
        {
                if (browsercode == "IE")
                {
                        var minval = 1;
                } else {
                        var minval = 3;
                }
                var yCord = absY2(o2, 1)-minval;
        } else if (menu == "kbcachemenu" || menu == "prcachemenu" || menu == "dlcachemenu" || menu == "fwquotemenu") {
                var yCord = absY2(o2, 1);
        } else {
                var yCord = absY(o2);
        }
        CMenuPopUpXY(menu, absX2(o1), yCord);
}

function CustomPopupRefRight(menu, id, refobject) {
        var o1 = browserObject(id), o2 = browserObject(refobject);
        if (!o1 || !o2)
                return;

        if (menu == "tviewmenu")
        {
                var yCord = absY(o2)-1;
        } else {
                var yCord = absY(o2);
        }
        CMenuPopUpXY(menu, absX2(o1, 1), yCord);
}

function mEventRef(m, node_index, e, refvar) {
        if (!refvar)
        {
                return false
        }
}

function hideMenu(menu) {
//        window.CMenus[menu].hide();
}

function storeCaret (textEl) {
        if (textEl.createTextRange)
                textEl.caretPos = document.selection.createRange().duplicate();
}

function insertAtCaret (textEl, text) {
        if (textEl.createTextRange && textEl.caretPos) {
                var caretPos = textEl.caretPos;
                caretPos.text =
                caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
                text + '' : text;
        } else {
                textEl.value = textEl.value+ "" + text;
        }
}

var popupCalendar = null;

function showCalendar(id, format, showsTime, showsOtherMonths) {
        var el = document.getElementById(id);
        if (popupCalendar != null) {
                popupCalendar.hide();
        } else {
                var cal = new Calendar(1, null, calSelected, calCloseHandler);
                if (typeof showsTime == "string") {
                        cal.showsTime = true;
                        cal.time24 = (showsTime == "24");
                }
                if (showsOtherMonths) {
                        cal.showsOtherMonths = true;
                }
                popupCalendar = cal;
                cal.setRange(1900, 2070);
                cal.create();
        }
        popupCalendar.setDateFormat(format);
        popupCalendar.parseDate(el.value);
        popupCalendar.sel = el;

        popupCalendar.showAtElement(el, "Br");

        return false;
}

function calSelected(cal, date) {
        cal.sel.value = date;
        if (cal.dateClicked && (cal.sel.id == "opt_due"))
        cal.callCloseHandler();
}

function calCloseHandler(cal) {
        cal.hide();
        popupCalendar = null;
}

// =========== XML HTTP REQUEST STUFF ==============
var xmlhttp;
var xmlaction = "";

function loadXMLHTTPRequest(url) {
        if (window.XMLHttpRequest) {
                xmlhttp = new XMLHttpRequest();
                xmlhttp.onreadystatechange = processStatusChange;
                xmlhttp.open("GET", url, true);
                xmlhttp.send(null);
        } else if (window.ActiveXObject) {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                if (xmlhttp) {
                        xmlhttp.onreadystatechange = processStatusChange;
                        xmlhttp.open("GET", url, true);
                        xmlhttp.send();
                }
        }
}

var oldKeyword = "";
function processStatusChange() {
        if (xmlhttp.readyState == 4) {
                if (xmlhttp.status == 200) {
                        formname = getActiveFormName();
                        if (xmlaction == "tp" && formname == "replyform")
                        {
                                switchGridTab('ttpostreply', 'tickets');
                                document.replyform.replycontents.focus();
                        }

                        if (xmlaction == "kb" || xmlaction == "pr" || xmlaction == "tp" || xmlaction == "forwardquote" || xmlaction == "forwardquoteall")
                        {
                                insertAtCaret(document.forms[formname].replycontents, xmlhttp.responseText);
                        } else if (xmlaction == "history" || xmlaction == "forward" || xmlaction == "addnotes" || xmlaction == "edit" || xmlaction == "billing" || xmlaction == "release" || xmlaction == "lschats") {
                                ticketDataObj = browserObject("tab_tt"+xmlaction);
                                if (ticketDataObj)
                                {
                                        ticketDataObj.innerHTML = xmlhttp.responseText;
                                }

                                if (xmlaction == "addnotes")
                                {
                                        setTimeout('document.noteform.notecontents.focus();', 100);
                                } else if (xmlaction == "forward") {
                                        setTimeout('document.forwardform.opt_to.focus();', 100);
                                } else if (xmlaction == "release") {
                                        setTimeout('document.releaseform.tt_staffid.focus();', 100);
                                } else if (xmlaction == "billing") {
                                        setTimeout('document.billingform.tworked.focus();', 100);
                                }
                        } else if (xmlaction == "auditlog") {
                                logObj = browserObject("tab_ttlog");
                                if (logObj)
                                {
                                        logObj.innerHTML = xmlhttp.responseText;
                                }
                        } else if (xmlaction == "userlookup") {
//                                alert(xmlhttp.responseText);
                                eval(xmlhttp.responseText);
                        } else if (xmlaction == "twday" || xmlaction == "twworkweek" || xmlaction == "twweek" || xmlaction == "twmonth") {
                                tabObj = browserObject("tab_"+xmlaction);
                                if (tabObj)
                                {
                                        tabObj.innerHTML = xmlhttp.responseText;
                                }
                        } else if (xmlaction == "addresscards" || xmlaction == "detailedcards") {
                                tabObj = browserObject("contactscontainer");
                                if (tabObj)
                                {
                                        tabObj.innerHTML = xmlhttp.responseText;
                                        recalcContactHeight();
                                        document.realtimesearch.searchquery.focus();
                                }
                        } else if (xmlaction == "cltickets" || xmlaction == "clchats" || xmlaction == "sutickets" || xmlaction == "suchats" || xmlaction == "suticketreports") {
                                tabObj = browserObject("tab_"+xmlaction);
                                if (tabObj)
                                {
                                        tabObj.innerHTML = xmlhttp.responseText;
                                }
                        }
                } else {
                        alert("There was a problem retrieving the XML data from Server:\n" +xmlhttp.statusText);
                }
        }
}

function windowPlaceEmail(email, formname, formfield)
{
        if (!window.opener)
        {
                alert("Couldnt find window opener. Unable to append email");
                return;
        }

        var fieldValue = window.opener.document.forms[formname].elements[formfield].value;

        var appendValue = "";
        if (fieldValue == "")
        {
                appendValue = email;
        } else {
                appendValue = fieldValue+","+email;
        }

        window.opener.document.forms[formname].elements[formfield].value = appendValue;
        window.close();
}

function fetchData(datatype, dataid) {
        if (datatype == "kb")
        {
                xmlaction = "kb";
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=knowledgebase&_a=ajax&randno="+doRand()+"&kbarticleid="+dataid+"&sessionid="+swiftsessionid);
        } else if (datatype == "pr") {
                xmlaction = "pr";
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=tickets&_a=ajax&randno="+doRand()+"&predefinedreplyid="+dataid+"&sessionid="+swiftsessionid);
        } else if (datatype == "tp" || datatype == "tpf") {
                xmlaction = datatype;
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=tickets&_a=ajax&randno="+doRand()+"&ticketpostid="+dataid+"&sessionid="+swiftsessionid);
        } else if (datatype == "history") {
                xmlaction = "history";
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=tickets&_a=ajax&action=history&randno="+doRand()+"&email="+dataid+"&sessionid="+swiftsessionid);
        } else if (datatype == "auditlog" || datatype == "forward" || datatype == "release" || datatype == "addnotes" || datatype == "forwardquote" || datatype == "forwardquoteall") {
                xmlaction = datatype;
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=tickets&_a=ajax&action="+datatype+"&randno="+doRand()+"&ticketid="+dataid+"&sessionid="+swiftsessionid);
        } else if (datatype == "edit") {
                xmlaction = "edit";
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=tickets&_a=ajax&action=edit&randno="+doRand()+"&ticketid="+dataid+"&sessionid="+swiftsessionid);
        } else if (datatype == "billing") {
                xmlaction = "billing";
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=tickets&_a=ajax&action=billing&randno="+doRand()+"&ticketid="+dataid+"&sessionid="+swiftsessionid);
        } else if (datatype == "twday" || datatype == "twworkweek" || datatype == "twweek" || datatype == "twmonth") {
                xmlaction = datatype;
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=teamwork&_a=ajax&action="+datatype+"&customtype="+dataid+"&randno="+doRand()+"&sessionid="+swiftsessionid);
        } else if (datatype == "addresscards" || datatype == "detailedcards") {
                xmlaction = datatype;
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=teamwork&_a=ajax&action="+datatype+"&randno="+doRand()+"&sessionid="+swiftsessionid+"&searchquery="+dataid);
        } else if (datatype == "cltickets" || datatype == "sutickets") {
                xmlaction = datatype;
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=tickets&_a=ajax&action=history&randno="+doRand()+dataid+"&sessionid="+swiftsessionid);
        } else if (datatype == "suticketreports") {
                xmlaction = datatype;
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=tickets&_a=ajax&action=ticketreports&randno="+doRand()+"&userid="+dataid+"&sessionid="+swiftsessionid);
        } else if (datatype == "clchats" || datatype == "suchats" || datatype == "lschats") {
                xmlaction = datatype;
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=livesupport&_a=ajax&action=history&randno="+doRand()+dataid+"&sessionid="+swiftsessionid);
        }
}

function keywordCheck(formname, formfield)
{
        newKeyword = document.userlookupform.searchquery.value;
        if (oldKeyword != newKeyword)
        {
                oldKeyword = newKeyword;
/*                searchdivObj = browserObject("searchdiv");
                if (searchdivObj)
                {
                        searchdivObj.innerHTML = newKeyword;
                }*/
                // Fetch the keyword
                xmlaction = "userlookup";
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=core&_a=userlookup&action=search&randno="+doRand()+"&query="+escape(newKeyword)+"&formname="+escape(formname)+"&formfield="+escape(formfield)+"&sessionid="+swiftsessionid);
        }
        setTimeout("keywordCheck('"+formname+"', '"+formfield+"');", 1000);
}

function keywordCheckContacts()
{
        newKeyword = document.realtimesearch.searchquery.value;
        if (oldKeyword != newKeyword)
        {
                oldKeyword = newKeyword;
                // Fetch the keyword
                xmlaction = selectedTab;
                loadXMLHTTPRequest(swiftpath+"staff/index.php?_m=teamwork&_a=ajax&action="+selectedTab+"&randno="+doRand()+"&searchquery="+escape(newKeyword)+"&sessionid="+swiftsessionid);
        }
        setTimeout("keywordCheckContacts();", 1000);
}

function autoInsertKB(kbarticleid) {
        formname = getActiveFormName();

        if (!document.forms[formname])
        {
                window.location.href = swiftpath+"staff/index.php?_m=knowledgebase&_a=editquestion&kbarticleid="+kbarticleid;
        } else {
                fetchData("kb", kbarticleid);
        }
}

function autoInsertPR(predefinedreplyid) {
        fetchData("pr", predefinedreplyid);

        return true;
}

function autoInsertTP(ticketpostid, fetchtype) {
        fetchData("tp", ticketpostid);
}

function autoInsertDL(downloaditemid, link, title) {
        formname = getActiveFormName();
        if (formname == "forwardform" || formname == "newticketform")
        {
                fprefix = "f";
        } else {
                fprefix = "";
        }

        if (!document.forms[formname])
        {
                window.location.href = swiftpath+"staff/index.php?_m=downloads&_a=editfile&downloaditemid="+downloaditemid;
        } else if (link != "") {
                // Simply append the link to the contents
                insertAtCaret(document.forms[formname].replycontents, link);
        } else {
                // Add the download to select box
                displayObject(fprefix+"downloads1");
                displayObject(fprefix+"downloads2");
                to = document.forms[formname]["opt_downloads[]"];
                to.options[to.length] = new Option(title,downloaditemid);
        }
}

function removeDLItem() {
        formname = getActiveFormName();
        to = document.forms[formname]["opt_downloads[]"];

        if (to.options.length > 0)
        {
                for (i=0;i<to.length;i++)
                {
                        if (to.options[i].selected)
                        {
                                to.options[i] = null;
                        }
                }
        }
}

function getActiveFormName()
{
        var formname = "";
        if (selectedTab == "ttforward")
        {
                formname = "forwardform"
        } else if (selectedTab == "newticket") {
                formname = "newticketform";
        } else {
                formname = "replyform";
        }

        return formname;
}

function clearDLItems() {
        formname = getActiveFormName();
        if (formname == "forwardform" || formname == "newticketform")
        {
                fprefix = "f";
        } else {
                fprefix = "";
        }

        to = document.forms[formname]["opt_downloads[]"];

        if (to.options.length > 0)
        {
                for (i=0;i<to.length;i++)
                {
                        to.options[i] = null;
                }
        }
        hideObject(fprefix+"downloads1");
        hideObject(fprefix+"downloads2");
}

function processReplyForm() {
        formname = getActiveFormName();
        selField = document.forms[formname]["opt_downloads[]"];

        if (selField.options.length > 0)
        {
                for (i=0;i<selField.length;i++)
                {
                        selField.options[i].selected = true;
                }
        }

        return true
}

function openSpellChecker() {
        formname = getActiveFormName();
        var text1 = document.forms[formname].replycontents;
        var speller = new spellChecker(text1);
        speller.openChecker();
}

/**
* ###############################################
* BEGIN COOLMENUPRO CODE, MERGED INTO ONE FILE.
* ###############################################
*/

var kbmenuloaded = false;
var prmenuloaded = false;
var dlmenuloaded = false;
var htmlAreaLoaded = false;
var VSTYLE = {"border":1, "borders":[1,0,1,1], "shadow":1, "color":{"border":"#6393DF", "shadow":"#DBD8D1", "bgON":"#FFFFFF","bgOVER":"#F7FAFF"}, "css":{"ON":"clsCMOn", "OVER":"clsCMOver"}};
var VSTYLEBORDER = {"border":1, "borders":[1,1,1,1], "shadow":1, "color":{"border":"#6393DF", "shadow":"#DBD8D1", "bgON":"#FFFFFF","bgOVER":"#F7FAFF"}, "css":{"ON":"clsCMOn", "OVER":"clsCMOver"}};
var VSTYLESEL = {"border":1, "borders":[1,0,1,1], "shadow":1, "color":{"border":"#6393DF", "shadow":"#DBD8D1", "bgON":"#FFF6E2","bgOVER":"#F7FAFF"}, "css":{"ON":"clsCMOn", "OVER":"clsCMOver"}};
var VSTYLESELBORDER = {"border":1, "borders":[1,1,1,1], "shadow":1, "color":{"border":"#6393DF", "shadow":"#DBD8D1", "bgON":"#FFF6E2","bgOVER":"#F7FAFF"}, "css":{"ON":"clsCMOn", "OVER":"clsCMOver"}};
var SUBPOPUPTOP = {"border":1, "borders":[1,1,1,1], "shadow":1, "color":{"border":"#6393DF", "shadow":"#DBD8D1", "bgON":"#FFFFFF","bgOVER":"#F7FAFF"}, "css":{"ON":"clsCMOn", "OVER":"clsCMOver"}};
var SUBPOPUP = {"border":1, "borders":[1,0,1,1], "shadow":1, "color":{"border":"#6393DF", "shadow":"#DBD8D1", "bgON":"#FFFFFF","bgOVER":"#F7FAFF"}, "css":{"ON":"clsCMOn", "OVER":"clsCMOver"}};
var STYLEPOPUP = {"border":1, "borders":[1,1,1,1], "shadow":1, "color":{"border":"#6393DF", "bgON":"#FFFFFF","bgOVER":"#F7FAFF",shadow:'#DBD8D1'}, "css":{"ON":"popupOn", "OVER":"popupOver"}};

// Title: COOLjsMenu
// URL: http://javascript.cooldev.com/scripts/coolmenu/
// Version: 2.4.3
// Last Modify: 9 May 2005
// Author: Alex Kunin <alx@cooldev.com>
// Notes: Registration needed to use this script on your web site.
// Copyright (c) 2001-2005 by CoolDev.Com
// Copyright (c) 2001-2005 by Sergey Nosenko

// Options: PROFESSIONAL, COMPRESSED, COMPATIBLE

function _u(_2){return typeof(_2)=='undefined'};function _K(_2){return typeof(_2)=='number'};function _1X(_2){return typeof(_2)=='object'};_k=document;_1N=RegExp;_h=window;_k._3e=_k.getElementById;_33=_k._3e?function(_E){return _k.getElementById(_E)}:function(_E){return _k.all[_E]};_34={_f:1,_d:0,_g:3,_e:2};_2n={};for(var i in _34)_2n[_34[i]]=i;_1y=1;_1$=2;_h.CMenus=_h.$CM=_h._G=[];_1={};_1._24=navigator.appVersion;_1._1J=navigator.userAgent;_1._1z=_h.opera;_1._3i=_1._1J.match(/opera.[789]/i);_1._1n=_1._1z&&!_1._3i;_1._X=_k._3e;_1._2A=_1._24.match(/MSIE 5.5/)&&_1._X&&!_1._1z;_1._3j=_1._24.match(/MSIE 5/)&&_1._X&&!_1._2A&&!_1._1z;_1._20=_1._24.match(/MSIE 6/)&&_1._X&&!_1._1z;_1._3g=_k.all&&!_1._X&&!_1._1z;_1._1f=_1._3g||_1._3j||_1._20;_1._21=_1._1J.match(/Mac/);_1._3F=_1._1J.match(/hotjava/i);_1._I=_k.layers&&!_1._X&&!_1._3F;_1._1R=_1._1J.match(/gecko/i);_1._A=_1._1f&&!_1._21;_3E={zIndex:1000,pos:'relative',dynamic:false,delay:[0,800],popupoff:[0,0],blankImage:'img/b.gif'};_2B={main:false,image:null,color:'',cssStyle:'',cssClass:'',attributes:'',size:['+item','+item'],offset:[0,0],code:_1._1n?'&nbsp;':'',_f:0,_d:0,_g:0,_e:0,_s:true,align:'left',valign:'top',_14:function(){with(this){_14=_L;if(!main){_f=Number.NaN;_d=Number.NaN;_f=size[1](_6,this);_d=size[0](_6,this);if(isNaN(_f)||isNaN(_d)){_f=_._1S();_d=_._1T();_f=size[1](_6,this);_d=size[0](_6,this)};_._T(_f,_d)};_g=offset[1](_6,this)+((this._2F&&this._6._3B)||0);_e=offset[0](_6,this);_._Q(_g,_e);_6._7._9._2J(this)}},_2w:function(){if(this._s!=this._6._2I(this.visibility))this._._n(this._s=!this._s);this._14()},_3n:function(){if(this._s!=this._6._2I(this.visibility)){this._s=!this._s;var _O=(this._6._7._9._1V&&_1._1f&&this[this._s?'fadeIn':'fadeOut'])||'';var _A=(_1._1f&&!_1._21&&this.filters)||'';if(_O||_A)this._._3.filter=_O+' '+_A;with(this._){if(_O)_.filters[0].apply();_n(this._s);if(_O)_.filters[0].play()}};this._14()}};_3K={};function _1t(_z,_2s){for(var i in _2s)if(_u(_z[i]))_z[i]=_2s[i]};BLANK_IMAGE='img/b.gif';function COOLjsMenuPRO(_r,_j){_1t(_j[0],_3E);this._1Y=_j[0].dynamic&&((_1._X&&!_1._1n&&!(_1._1f&&_1._21))||_1._I);this._3o=_j[0].autosize;this._2r=_1._1f||_1._1R;this._1q={};_j[0].blankImage=BLANK_IMAGE;if(!_r){_r='menu_';do _r+=Math.round(Math.random()*10);while(!_u(_h._G[_r]))};_h._G[this._r=_r]=this;this._q='$CM.'+_r;this._18=_j[0].popup;this._25=_j[0].frames;this._37=this._25&&_j[0].frames[0]==_h.name;this._13=!this._18&&_j[0].pos=='relative'&&(!this._25||this._37);this.$root=this._b={_4:this,_r:this._r,_q:this._q+'.$root',_7:null,_g:0,_e:0,_5:_j[0],frameoff:_j[0].pos?_j[0].pos:[0,0],_10:_L,_w:'R',_1p:true,_1E:-1,_1w:_j,_39:function(){return[]},_S:function(){return[]},_l:_22.prototype._l};if(this._25&&!this._37){this._b._g=0;this._b._e=0}else if(!this._13&&!this._18){this._b._g=_j[0].pos[0];this._b._e=_j[0].pos[1]};this._3d=this._3a=0;this._b.$level=this._b._9=new _1A(this,this._b);with(this._b){if(_K(_5.delay))_5.delay=[400,_5.delay];_5._3x=_5.delay[0];_5._30=_5.delay[1]};this.items=this._j=[];this._2N='';this._1x=[];this._2R=null;this._1u=null;this._26=null;this._2P={name:'trigger',size:['+item','+item'],zIndex:1000,code:'{trigger}'};this._1k(this._2P);if(_u(_h._Z)){_h._Z=_h.onload;_h.onload=function(){CLoadNotify();if(_h._Z){var _o=_h._Z;_h._Z=null;return _o()}}};if(_1._1n)_v=_1D;else if(_1._I)_v=_1l;else{_v=_1h};_v._2Z={}};$=COOLjsMenuPRO.prototype;$._l=function(_1s){return this._r+'_'+_1s};$.$ev=$._3P=function(_R,_w,_3N){var _a=true,_6=this._j[_w];if(_6){_a=this['$'+_R](_6);if(this[_R])this[_R](_6)};return _a};$._2Q=function(){return this._b._5.blankImage};$._Z=function(){if(!this._18){if(_1._I&&this._13)with(_k.anchors[this._l('da')]){this._b._g=x;this._b._e=y};this._2G()};this._Z=_L};$.initTop=function(){this._1q._f=this._2W();this._1q._d=this._2Y();var w=0,h=0,i,s;if(!this._2r)for(i in this)if(i.match(/^\$(on.*)$/))this._2N+=_1m(_1N.$1,'return '+this._q+'.$ev(\'' + _1N.$1 + '\', {index})');this._b._9._2$();if(this._b._5.placeholder)with(this._b._5){w=placeholder[1];h=placeholder[0]}else with(this._b._9){var x=0,y=0;for(i=0;i<_8.length;i++){if(i>0){x+=_8[i]._1F[1](_8[i]);y+=_8[i]._1F[0](_8[i])};w=Math.max(w,x+_8[i]._2_[1](_8[i]));h=Math.max(h,y+_8[i]._2_[0](_8[i]))}};this._2g=_K(w+h)&&w+h==w+h;if(!_1._I){s='<div id="'+this._l('r')+'" style="z-index:'+this._b._1w[0].zIndex+';position:';if(this._13)s+='relative;'+(this._2g?'width:'+w+'px;height:'+h+'px;':'');else s+='absolute;left:'+this._b._g+'px;top:'+this._b._e+'px;';s+='">'+(this._1Y?'':this._b._9._1G())+'</div>';_k.write(s);this._$=_v._U(this._l('r'))}else if(this._13)_k.write('<div><a name="'+this._l('da')+'" href="#"><img src="'+this._2Q()+'"'+(this._2g?'width="'+w+'" height="'+h+'"':'width="1" height="1"')+' border="0" /></a></div>');if(_1._20){this.$$$onclick=new Function('return '+this._q+".$$onclick(event)");this._2O=_k.body.onclick;_k.body.onclick=this.$$$onclick}else if(_1._X){this.$$$onclick=new Function('event','return '+this._q+".$$onclick(event)");_k.addEventListener('click',this.$$$onclick,true)}};$._3w=function(ev,offX,offY){var x=ev.pageX||ev.x;var y=ev.pageY||ev.y;if(_1._1f&&_k.body&&_k.body.parentElement){x+=_k.body.parentElement.scrollLeft;y+=_k.body.parentElement.scrollTop};var _2S=this._b._5.popupoff;x+=_u(offX)?_2S[1]:offX;y+=_u(offY)?_2S[0]:offY;this._3c(x,y)};$._3c=function(_x,_y){this.__(_x,_y);_h.setTimeout(this._q+'._2G()',10)};$._3z=function(_R){var _1B=_R.srcElement||_R.target;while(_1B){if(_1B==this._$._)return true;_1B=_1B.parentNode};return false};$.$$onclick=function(_R){if(!this._3z(_R)){this._17();this._F(null);this._1c(null)};if(this._2O)this._2O()};$._2G=function(){this._F(this._b._9)};$.init=_L;$.show=$._2G;$.hide=function(){this._F(null)};$.__=function(_x,_y){if(_1._I){this._3d=_x;this._3a=_y;this._b._9._2c()}else this._$._Q(_x,_y)};$._2b=function(_3u,_32,_H){this._1x[this._1x.length]=_h.setTimeout(this._q+'.'+_3u+'('+(_32?_32._q:'null')+')',_H)};$.cancelQueued=$._17=function(){for(var i in this._1x)_h.clearTimeout(this._1x[i]);this._1x=[]};$.setActiveItem=$._1c=function(_6,_H){if(_H)this._2b('setActiveItem',_6,_H);else{if(this._1r)this._1r._3p();var _11=_38(this._2R,_6),i;for(i in _11[0])_11[0][i]._10(_1y);for(i in _11[1])_11[1][i]._10(_1$);this._2R=_6;if(_6&&this._b._5.exclusive)for(i in _h._G)if(_h._G[i]!=this){_h._G[i]._F(null);_h._G[i]._1c(null)};if(_6&&_6._c.hasControls){this._1r=_6;_6._3r()}else this._1r=null}};$.setSelectedItem=$._3t=function(_6,_H){if(_H)this._2b('setSelectedItem',_6,_H);else{var _3s=this._26;this._26=_6;(_3s||this._b)._10('',true);(_6||this._b)._10('',true)}};$.showLevel=$._F=function(_9,_H){if(_H)this._2b('showLevel',_9,_H);else{if(_9&&_9._3C)_9=_9._7._7._9;if(!_9&&!this._18)_9=this._b._9;var _11=_38(this._1u,_9),i;_n(_11[0],false);_n(_11[1],true);this._1u=_9;this._3J()}};$._3J=function(){if(_1._1R){if(this._13){var o=this._$._.parentNode;if(o.tagName!='BODY'){o.style.width=this._$._.offsetWidth+'px';o.style.height=this._$._.offsetHeight+'px'}}}};$.$onfocus=function(_6){_6._2e();this._17();this._F(_6._9);_6._1H(true);this._1c(_6)};$.$_3Q=function(_6){this._17();if(this._1r)return true;if(!_6._c.sticky)this._F(null);this._1c(null);_6._1H(false)};$.$onmouseover=function(_6){_6._2e();this._17();this._F(_6._9,this._b._5._3x);_6._1H(true);this._1c(_6);return true};$.$onclick=function(_6){this._17();this._3t(_6);if(_6._c.url){_h.open(_6._c.url,_6._c.target||'_'+'self');if(!_6._c.sticky)this._F(null)}else{this._F(_6._9._s?_6._9._7._7._9:_6._9)};return false};$.$onmouseout=function(_6){this._17();if(this._1r)return true;this._F(this._18&&this._1u?this._b._9:null,this._b._5._30);this._1c(null,this._b._5._30);_6._1H(false);return true};$.$resizeHandler=function(){this._1q._f=this._2W();this._1q._d=this._2Y();this._b._9.__();return this._2t?this._2t():true};$._2x=function(){this._2t=window.onresize;window.onresize=new Function('return '+this._q+'.$resizeHandler()');this._2x=_L};$._2W=function(){return document.body.clientWidth};$._2Y=function(){return document.body.clientHeight};$._1e=function(_Y,_P){if(!_u(_Y)&&typeof(_Y[0])!='function'){_Y[1]=this._2z(_Y[1],_P,1);_Y[0]=this._2z(_Y[0],_P,0)};return _Y};var _2j={};$._2z=function(_2,_P,_2h){var _2i=_2+'|'+_P+'|'+_2h;if(!_u(_2j[_2i]))return _2j[_2i];var _p='return Math.round(';if(_K(_2))_p+=_2;else{_p='with(i)'+_p;var _3G=_2C(_2h),_3O,_m;while(_m=_2.match(/^([-+\.\d+]*)\*?(\w+)/)){if(_m[1]=='')_P=_m[2];else _p+=_N(_m[1])+(_m[2]=='px'?'':'*'+_m[2]+_3G);if(_m[2]=='body')this._2x();_2=_2.slice(_m[0].length)}};if(_P){var _2a=_2C(_2h+2);_p+='+i.'+_P+_2a;switch(_P){case'item':case'previousItem':break;case'parentItem':_p+='+i.parentLevel'+_2a;default:_p+='-i.level'+_2a}};_p+='+0)';var _a=_2j[_2i]=new Function('i,self',_p);return _a};$._1k=function(_,_1I){if(!_._28){_._28=true;if(!_.size&&(_.main||_.code))_.size=['+self','+self'];_1t(_,_2B);if(_1._A&&(_.fadeIn||_.fadeOut))_._2w=_._3n;with(_){if(image)code='<img src="'+image+'" width="'+size[1]+'" height="'+size[0]+'"'+(_1._I?'':' style="display:block"')+' />';code='<div'+attributes+' id="" style="position:absolute;'+(_1._1n?'width:1px;':'')+(color?'background-color:'+color+';':'')+cssStyle+'"'+_1m('class',cssClass)+'>'+code+'</div>'+"\n";if(_1._I)code=code.replace(/background([-\w]*:)/g,'layer-background$1');offset=_J(offset);size=_J(size);if(_K(offset[0]))offset[0]=_N(offset[0])+'px';if(_K(offset[1]))offset[1]=_N(offset[1])+'px';switch(_.align){case'center':offset[1]+='+0.5'+_1I+'-0.5self';break;case'right':offset[1]+='+'+_1I+'-self';break};switch(_.valign){case'middle':offset[0]+='+0.5'+_1I+'-0.5self';break;case'bottom':offset[0]='+'+_1I+'-self';break};if(!_u(_.margin)){var _g,_e,_1K,_1Q;if(_K(_.margin))_g=_e=_1K=_1Q=_.margin;else if(_.margin.length==2){_e=_1Q=_.margin[0];_g=_1K=_.margin[1]}else{_e=_.margin[0];_1K=_.margin[1];_1Q=_.margin[2];_g=_.margin[3]};if(_K(size[0]))size[0]=_N(size[0])+'px';if(_K(size[1]))size[1]=_N(size[1])+'px';if(!main){size[0]+=_N(-_e-_1Q)+'px';size[1]+=_N(-_g-_1K)+'px'};offset[0]+=_N(_e)+'px';offset[1]+=_N(_g)+'px'};this._1e(size);this._1e(offset,'item')}};return _};$._3k=function(_3){if(!_3._28){var i,j;_3._28=true;_3.layers=[];_3._4=this;_3._1i=function(_){this._4._1k(this.layers[this.layers.length]=_,'item')};var b=_3.border||0,_O=_3.transition||{};b=(b&&_3.borders)||[b,b,b,b];var _1v=_3._1v=b[0],_2d=_3._2d=b[1],_2u=_3._2u=b[2],_2v=_3._2v=b[3],_2l=_3._2l=_1v+_2u,_29=_3._29=_2d+_2v;var _1L=0,_1M=0;if(_K(_3.shadow))_1L=_1M=_3.shadow;else if(_1X(this._5.shadow)){_1L=_3.shadow[0];_1M=_3.shadow[1]};if(!_3.color)_3.color={};if(!_3.css)_3.css={};if(_3.color.shadow&&(_1L||_1M))_3._1i({_1j:1,color:_3.color.shadow,offset:[_1M,_1L]});if(_3.color.border&&(_2l||_29))_3._1i({_1j:1,color:_3.color.border});_={size:['+item-'+_29+'px','+item-'+_2l+'px'],offset:[_2d,_1v]};if(_3.color.bgON)_3._1i(_J(_,{_1j:1,color:_3.color.bgON,visibility:_O.fadeIn||_O.fadeOut?'':'n'}));if(_3.color.bgOVER)_3._1i(_J(_,{_1j:1,color:_3.color.bgOVER,visibility:'o',fadeIn:_O.fadeIn,fadeOut:_O.fadeOut}));if(this._3o)_.size=0;_3._1i(_J(_,{main:true,code:'<div class="'+_3.css.ON+'">{code}</div>',visibility:'h',_2F:1}));_3._1i(_J(_,{code:'<div class="'+_3.css.OVER+'">{ocode}</div>',visibility:'H',_2F:1}));_1t(_3,_3K)};return _3};function _1A(_4,_7){this._4=_4;this._7=_7;this._1P=_7==_4._b;this._1O=!_4._18&&this._1P;this._q=this._7._q+'.$level';this._31={_f:0,_d:0};this._r=this._4._l('l'+this._7._w)};$=_1A.prototype;$._8=[];$._g=0;$._e=0;$._1o=false;$._1V=false;$._2$=function(){if(!this._8.length){var i,_j=this._7._1w,_27=_j.length-1;if(_u(_j[_27]))_27--;this._8=_j.slice(1,_27+1);if(this._8.length==1&&this._8[0].array){var _12=this._8[0];this._8=[];for(i=0;i<_12.array.count;i++){this._8[i]=_J(_12);this._8[i].array.prepare(this._8[i],i)}};with(this)for(i in _8)_8[i]=new _22(_4,_7,_8[i],i,_4._j.length)}};$._l=function(_1s){return this._r+'_'+_1s};$._1C=function(){return!this._1O&&(_1._2A||_1._20)&&!this._2L(true)&&!this._2k(true)&&!this._2k(false)};$._2c=function(){if(this._B){this._B._Q(this._4._3d,this._4._3a);for(var i in this._8)this._8[i]._9._2c()}};$.__=function(){this._2f();for(var i in this._8)this._8[i].__();this._2y()};$._1G=function(){this._2$();var i,_a='<div id="'+this._l('l')+'" style="position:absolute;visibility:hidden;">';for(i in this._8)_a+=this._8[i]._2E;_a+='</div>';if(!this._4._1Y){_a='<div id="'+this._l('d')+'" style="position:absolute;visibility:hidden;left:0;top:0;width:1px;height:1px;">'+_a+'</div>';for(i in this._8)_a+=this._8[i]._9._1G()};if(this._1C())_a='<iframe tabindex="-1" frameborder="0" id="'+this._l('f')+'" src="'+(location.protocol=='https:'?this._4._b._5.https_fix_blank_doc:'')+'" scroll="none" style="filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);visibility:hidden;height:1px;position:absolute;width:1px;"></iframe>'+_a;return _a};$._S=function(){with(this._7)return _7?_7._9._S().concat([this]):[this]};$._2J=function(_z){this._D=Math.min(this._D,_z._g);this._C=Math.min(this._C,_z._e);this._1d=Math.max(this._1d,_z._g+_z._f);this._16=Math.max(this._16,_z._e+_z._d)};$._2f=function(){this._D=this._C=65535;this._1d=this._16=-65535};$._2L=function(){return _1._A?this._8[0]._5.filters||'':''};$._2k=function(_3v){return!this._1O&&_1._A?this._8[0]._5[_3v?'fadeIn':'fadeOut']||'':''};$._2y=function(){if(!this._1P){this._g+=this._8[0]._2U[1](this._8[0]);this._e+=this._8[0]._2U[0](this._8[0])}else if(_1._I){this._g=this._4._b._g;this._e=this._4._b._e};this._._Q(-this._D,-this._C);this._B._Q(this._g+this._D,this._e+this._C);this._._T(this._1d-this._D,this._16-this._C);this._B._T(this._1d-this._D,this._16-this._C);if(_1._I){with(this._B._.clip){left=this._D;top=this._C};with(this._._.clip){left=this._D;top=this._C}};if(!_1._I&&!_1._1n&&this._1O&&this._4._13&&!this._4._2g)this._4._$._T(this._f,this._d);if(this._1C())this._2m._n(this._s);else if(this._1O){var i,_19=this._4._b._5.forms_to_hide;if(_19)for(i in _19)_v._U(_19[i])._n(!this._4._1u||this._4._1u==this._4._b._9)}};$._n=function(_2){if(this._s!=_2){this._1V=false;var i;this._s=_2;this._7._10('',true);if(!this._2X){this._2X=true;if(this._4._1Y)this._B=_v._2V(this._1G(),this._4._$||1);else this._B=_v._U(this._l('d'));if(this._1C())this._2m=_v._U(this._l('f'));this._=_v._U(this._l('l'));this._2f();for(i in this._8)this._8[i]._3y();for(i in this._8)this._8[i]._3b();this._f=this._1d-this._D;this._d=this._16-this._C;this._2f()};var _A='';if(_1._A){_A=this._2k(_2)+' '+this._2L();var _1o=_A!=' ';if(_1o!=this._1o){this._B._3.filter=_A;this._1o=_1o};if(_1o)for(i=0;i<this._B._.filters.length;i++)this._B._.filters[i].apply()};_n(this._8,_2);this._2y();if(this._1C()){this._2m._Q(this._g+this._D,this._e+this._C);this._2m._T(this._1d-this._D,this._16-this._C)};this._B._n(_2);this._._n(_2);if(_A)for(var i=0;i<this._B._.filters.length;i++)this._B._.filters[i].play()};this._1V=_2};function _22(_4,_7,_c,_1a,_w){_4._j[_w]=this;if(_u(_c.ocode))_c.ocode=_c.code;_c.index=_w;_c.$0=null;var _3=this._3=(_c.format||{}).style||_7._1w[0].style||_7._5.style;this._1E=_7._1E+1;if(_1X(_3)&&_3.length)_3=_3[this._1E]||_3[0];this._5=_J(_7._5,_3==_7._3?{}:_4._3k(_3),_7._1w[0],_c.format||{});_1t(this,{_4:_4,_w:_w,_7:_7,_1a:_1a,_r:_4._l('i'+_w),_g:0,_e:0,_f:0,_d:0,_q:_4._q+'.items['+_w+']',_M:{},_s:false,_V:_1y,_i:[],_2E:'',_35:_7._9._8[_1a-1],_1P:_7==_4._b,_3q:_1a==0,_3A:_1a==_7._9._8.length-1,_c:_J(_c,this._5.parameters),_1w:_c.sub,_1p:_c.sub&&_c.sub.length>1,_2_:_4._1e(this._5.size),_2U:_4._1e(this._5.leveloff,'parentItem'),_1F:_4._1e(this._5.itemoff,'previousItem'),_2o:_4._1e(this._5.wrapoff,'previousItem')});this.$level=this._9=this._1p?new _1A(_4,this):{_3C:true,_7:this,_q:this._q+'.$level',_S:_1A.prototype._S,_1G:_L,_2c:_L,__:_L};this._c.trigger='<a '+_1m('class',this._5.trigger)+_1m('accesskey',this._c.key)+' href="'+(this._c.url||'#')+'" '+_1m('target',this._c.target)+this._4._2N+'>'+(_1._1n?'':'<img src="'+this._4._2Q()+'" width="100%" height="100%"'+_1m('alt',this._c[this._5.alt||'alt'])+' border="0" />')+'</a>';_1t(this,{main:this._M,maxMain:_7._9._31,item:this,previousItem:this._35,level:_7._9,parentItem:_7,body:this._4._1q,parentLevel:this._1P?null:_7._7._9});var _1Z=[],_1W=[];if(this._5.imgsize&&this._5.image){this._3B=this._5.imgsize[1];_1Z[0]=_4._1k({_1j:1,image:this._5.image,size:this._5.imgsize,offset:[0,this._5._1v],valign:'middle',visibility:'n'},'item');_1Z[1]=_4._1k({_1j:1,image:this._5.oimage||this._5.image,size:this._5.imgsize,offset:[0,this._5._1v],valign:'middle',visibility:'o'},'item')};if(this._5.arrsize&&this._5.arrow){_1W[0]=_4._1k({image:this._5.arrow,size:this._5.arrsize,align:'right',valign:'middle',visibility:'nc'},'item');_1W[1]=_4._1k({image:this._5.oarrow||this._5.arrow,size:this._5.arrsize,align:'right',valign:'middle',visibility:'oc'},'item')};with(this)_1b(_5.levelLayers),_1b(_5.itemLayers),_1b(_5.layers),_1b(_1Z),_1b(_1W),_1b([_4._2P])};$=_22.prototype;$._2e=function(_2H){if(this._4._2r&&!this._3L){var _3M=this._i[this._i.length-1]._._;for(i in _2H?{$onmouseover:1,$onfocus:1}:this._4)if(i.match(/^\$(on.*)$/))_3M[_1N.$1]=new Function('return '+this._4._q+'.$ev(\'' + _1N.$1 + '\', '+this._w+')');this._3L=!_2H}};$._l=function(_1s){return this._r+'_'+_1s};$.getData=function(){return this._c};$._1H=function(_3I){var _2K=this._c[this._5.status||'status'];if(_2K)_h.status=_3I?_2K:_h.defaultStatus};$._S=function(){return this._7._S().concat([this])};$._39=function(){return this._7._39().concat([this._1a])};$._1b=function(_19){for(var i in _19||[]){var _12=_19[i];if(this._3H(_12.visibility)){var i,_p=_12.code,_m;if(!_12._1j){while(_m=_p.match(/\{([\w\d]+)=([^}]*)\}/))_p=_p.replace(new _1N(_m[0],'g'),_u(this._c[_m[1]])?_m[2]:this._c[_m[1]]);while(_m=_p.match(/\{([\w\d]+)\}/)){if(_u(this._c[_m[1]]))break;_p=_p.replace(new _1N(_m[0],'g'),this._c[_m[1]])}};i=this._i.length;this._i[i]=_J(_12);this._2E+=_p.replace('id=""','id="'+this._l(i)+'"')}}};$._3y=function(){var i,_23,_15;for(i in this._i){with(this._i[i]._=_v._U(this._l(i)))if(this._i[i].main){if(!_u(_23))this._i[_23].main=false;_15={_f:Number.NaN,_d:Number.NaN};this._i[i]._f=this._M._f=this._i[i].size[1](this,_15);this._i[i]._d=this._M._d=this._i[i].size[0](this,_15);if(isNaN(this._M._f)||isNaN(this._M._d)){_15={_f:_1S(),_d:_1T()};this._i[i]._f=this._M._f=this._i[i].size[1](this,_15);this._i[i]._d=this._M._d=this._i[i].size[0](this,_15)};with(this._7._9._31){_f=Math.max(_f,this._M._f);_d=Math.max(_d,this._M._d)};_23=i};this._i[i]._6=this};this._2e(true)};$._3b=function(){with(this){_f=_5.size[1](this);_d=_5.size[0](this);if(_35){if(_c.wrapPoint){_g=_2o[1](this);_e=_2o[0](this)}else{_g=_1F[1](this);_e=_1F[0](this)}};_7._9._2J(this)}};$._n=function(_2){this._s=_2;this._10(this._V,true)};$._3H=function(_W){if(_W){var j,_2,_t=false;for(j=0;j<_W.length;j++){_2=null;switch(_W.charAt(j)){case'!':_t=!_t;break;case'G':_2=!!_1._1R;break;case'c':_2=!!this._1p;break;case'C':_2=_t!=!!this._1p;break;case'H':_2=!this._c.hasControls&&!_t;break;case'h':case's':case'n':case'N':case'o':case'O':_2=!_t;break;case'f':_2=this._3q;break;case'l':_2=this._3A;break;default:_2=_W.charAt(j)==this._1E;break};if(_2!==null)if(_2==_t)return false;else _t=false}};return true};$._2I=function(_W){if(!this._s)return false;if(_W){var j,_2,_t=false;for(j=0;j<_W.length;j++){_2=null;switch(_W.charAt(j)){case'!':_t=!_t;break;case'G':_2=!!_1._1R;break;case'C':_2=!!(this._1p&&this._9._s);break;case's':_2=this._4._26==this;break;case'h':_2=this._c.hasControls?!_t:this._V==_1y;break;case'n':_2=this._V==_1y;break;case'N':_2=this._7._V==_1y;break;case'H':case'o':_2=this._V==_1$;break;case'O':_2=this._7._V==_1$;break;default:_2=!_t;break};if(_2!==null)if(_2==_t)return false;else _t=false}};return true};$._10=function(_2,_3D){with(this)if(_2!=_V||_3D){if(_2)_V=_2;for(var i in _i)_i[i]._2w()}};$.__=function(){this._3b();for(var i in this._i){this._i[i]._14=_2B._14;this._i[i]._14()};if(this._9._2X)this._9.__()};$._3p=function(){this._i[this._i.length-1]._._n(true)};$._3r=function(){this._i[this._i.length-1]._._n(false)};_v=_L;function _2D(_1g){for(var i in _1g){_v._2Z[_1g[i].id]=_1g[i];if(_1g[i].layers&&_1g[i].layers.length)_2D(_1g[i].layers)}};function _1h(){};$=_1h.prototype;_1h._U=function(_E){var _a=new _1h;_a._=_33(_E);_a._2q();return _a};_1h._2V=function(_2p,_7){_a=new _1h;_a._=_k.createElement('div');with(_a._.style){position='absolute';left=top=-1000;visibility='hidden'};_a._.innerHTML=_2p;_7._.appendChild(_a._);_a._2q();return _a};$._2q=function(){this._3=this._.style;this._2T=this._.childNodes[0]};$._n=function(_2){this._3.visibility=_2?'inherit':'hidden'};$._1S=function(){this._2T.offsetWidth};$._1T=function(){this._2T.offsetHeight};$._Q=function(_g,_e){with(this._3){left=_g+'px';top=_e+'px'}};$._T=function(_f,_d){with(this._3){width=_f+'px';height=_d+'px'}};function _1D(){};$=_1D.prototype;_1D._U=function(_E){var _a=new _1D;_a._=_33(_E);_a._3=_a._.style;return _a};$._n=function(_2){this._3.visibility=_2?'visible':'hidden'};$._1S=function(){return this._3.pixelWidth};$._1T=function(){return this._3.pixelHeight};$._Q=function(_g,_e){with(this._3){left=_g;top=_e}};$._T=function(_f,_d){with(this._3){width=_f;height=_d}};function _1l(){};$=_1l.prototype;_1l._U=function(_E){var _a=new _1l;_a._=_v._2Z[_E];return _a};_1l._2V=function(_2p){var _a=new _1l;_T._=new Layer(1000);with(_a._){visibility='hide';document.open('text/html');document.write(_E);document.close();_2D(layers)};return _a};$._n=function(_2){this._.visibility=_2?'inherit':'hide'};$._1S=function(){return this._.clip.width};$._1T=function(){return this._.clip.height};$._Q=function(_g,_e){this._.moveTo(_g,_e)};$._T=function(_f,_d){this._.resize(_f,_d)};function _L(){return''};function _1m(_r,_2){return _2?' '+_r+'="'+_2+'"':''};function _J(_z){if(!_u(_z.length)&&_z.concat)return([]).concat(_z);var i,j,_a={};for(j=0;j<arguments.length;j++)if(_1X(arguments[j]))for(i in arguments[j])_a[i]=arguments[j][i];return _a};function _2C(_w){return'.'+_2n[_w]};function _N(_2){switch(_2){case'':_2='+';case'-':case'+':return _2+1;default:return(_2>=0?'+':'')+parseFloat(_2)}};function _38(_2M,_36){var _1_=_2M?_2M._S():[],_1U=_36?_36._S():[],i=0;while(i<_1_.length&&i<_1U.length&&_1_[i]==_1U[i])i++;return[_1_.slice(i),_1U.slice(i)]};function _n(_3f,_2){for(var i in _3f)_3f[i]._n(_2)};function CMenuPopUp(_4,_3l,_3m,_3h){_h._G[_4]._3w(_3l,_3m,_3h)};function CMenuPopUpXY(_4,_x,_y){_h._G[_4]._3c(_x,_y)};function CLoadNotify(){for(var i in _h._G)_h._G[i]._Z()}

if (!themepath)
{
        var themepath = "";
}

var BLANK_IMAGE=themepath+"space.gif";

// +-----------------------------------------------------------------------+
// | Copyright (c) 2002-2003, Richard Heyes, Harald Radi                        |
// | All rights reserved.                                                  |
// |                                                                       |
// | Redistribution and use in source and binary forms, with or without    |
// | modification, are permitted provided that the following conditions    |
// | are met:                                                              |
// |                                                                       |
// | o Redistributions of source code must retain the above copyright      |
// |   notice, this list of conditions and the following disclaimer.       |
// | o Redistributions in binary form must reproduce the above copyright   |
// |   notice, this list of conditions and the following disclaimer in the |
// |   documentation and/or other materials provided with the distribution.|
// | o The names of the authors may not be used to endorse or promote      |
// |   products derived from this software without specific prior written  |
// |   permission.                                                         |
// |                                                                       |
// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |
// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |
// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |
// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |
// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |
// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |
// |                                                                       |
// +-----------------------------------------------------------------------+
// | Author: Richard Heyes <richard@phpguru.org>                           |
// |         Harald Radi <harald.radi@nme.at>                              |
// +-----------------------------------------------------------------------+
//
// $Id: main.js,v 1.34 2005/09/07 23:11:33 vshoor Exp $

/**
* ###############################################
* REMOVED HARD CODED IMAGE WIDTHS [VARUN]
* ###############################################
*/


/**
* Function to create copies of objects which are
* normally passed around by references (Arrays for example)
*/
function arrayCopy(input)
{
        var output = new Array(input.length);

        for (i in input) {
                if (typeof(input[i]) == 'array') {
                        output[i] = arrayCopy(input[i]);
                } else {
                        output[i] = input[i];
                }
        }

        return output;
}

/**
* TreeMenu class
*/
        function TreeMenu(iconpath, myname, linkTarget, defaultClass, usePersistence, noTopLevelImages)
        {
                // Properties
                this.iconpath         = iconpath;
                this.myname           = myname;
                this.linkTarget       = linkTarget;
                this.defaultClass     = defaultClass;
                this.usePersistence   = usePersistence;
                this.noTopLevelImages = noTopLevelImages;
                this.n                = new Array();
                this.output           = '';

                this.nodeRefs       = new Array();
                this.branches       = new Array();
                this.branchStatus   = new Array();
                this.layerRelations = new Array();
                this.childParents   = new Array();
                this.cookieStatuses = new Array();

                this.preloadImages();
        }

/**
* Adds a node to the tree
*/
        TreeMenu.prototype.addItem = function (newNode)
        {
                newIndex = this.n.length;
                this.n[newIndex] = newNode;

                return this.n[newIndex];
        }

/**
* Preload images hack for Mozilla
*/
        TreeMenu.prototype.preloadImages = function ()
        {
                var plustop    = new Image; plustop.src    = this.iconpath + '/plustop.gif';
                var plusbottom = new Image; plusbottom.src = this.iconpath + '/plusbottom.gif';
                var plus       = new Image; plus.src       = this.iconpath + '/plus.gif';

                var minustop    = new Image; minustop.src    = this.iconpath + '/minustop.gif';
                var minusbottom = new Image; minusbottom.src = this.iconpath + '/minusbottom.gif';
                var minus       = new Image; minus.src       = this.iconpath + '/minus.gif';

                var branchtop    = new Image; branchtop.src    = this.iconpath + '/branchtop.gif';
                var branchbottom = new Image; branchbottom.src = this.iconpath + '/branchbottom.gif';
                var branch       = new Image; branch.src       = this.iconpath + '/branch.gif';

                var linebottom = new Image; linebottom.src = this.iconpath + '/linebottom.gif';
                var line       = new Image; line.src       = this.iconpath + '/line.gif';
        }

/**
* Main function that draws the menu and assigns it
* to the layer (or document.write()s it)
*/
        TreeMenu.prototype.drawMenu = function ()// OPTIONAL ARGS: nodes = [], level = [], prepend = '', expanded = false, visbility = 'inline', parentLayerID = null
        {
                /**
            * Necessary variables
            */
                var output        = '';
                var modifier      = '';
                var layerID       = '';
                var parentLayerID = '';

                /**
            * Parse any optional arguments
            */
                var nodes         = arguments[0] ? arguments[0] : this.n
                var level         = arguments[1] ? arguments[1] : [];
                var prepend       = arguments[2] ? arguments[2] : '';
                var expanded      = arguments[3] ? arguments[3] : false;
                var visibility    = arguments[4] ? arguments[4] : 'inline';
                var parentLayerID = arguments[5] ? arguments[5] : null;

                var currentlevel  = level.length;

                for (var i=0; i<nodes.length; i++) {

                        level[currentlevel] = i+1;
                        layerID = this.myname + '_' + 'node_' + this.implode('_', level);

                        /**
            * Store this object in the nodeRefs array
            */
                        this.nodeRefs[layerID] = nodes[i];

                        /**
                * Store the child/parent relationship
                */
                        this.childParents[layerID] = parentLayerID;

                        /**
                * Gif modifier
                */
                        if (i == 0 && parentLayerID == null) {
                                modifier = nodes.length > 1 ? "top" : 'single';
                        } else if(i == (nodes.length-1)) {
                                modifier = "bottom";
                        } else {
                                modifier = "";
                        }

                        /**
                * Single root branch is always expanded
                */
                        if (!this.doesMenu() || (parentLayerID == null && (nodes.length == 1 || this.noTopLevelImages))) {
                                expanded = true;

                        } else if (nodes[i].expanded) {
                                expanded = true;

                        } else {
                                expanded = false;
                        }

                        /**
                * Make sure visibility is correct based on parent status
                */
                        visibility =  this.checkParentVisibility(layerID) ? visibility : 'none';

                        /**
                * Setup branch status and build an indexed array
                        * of branch layer ids
                */
                        if (nodes[i].n.length > 0) {
                                this.branchStatus[layerID] = expanded;
                                this.branches[this.branches.length] = layerID;
                        }

                        /**
                * Setup toggle relationship
                */
                        if (!this.layerRelations[parentLayerID]) {
                                this.layerRelations[parentLayerID] = new Array();
                        }
                        this.layerRelations[parentLayerID][this.layerRelations[parentLayerID].length] = layerID;

                        /**
                * Branch images
                */
                        var gifname  = nodes[i].n.length && this.doesMenu() && nodes[i].isDynamic ? (expanded ? 'minus' : 'plus') : 'branch';
                        var iconName = expanded && nodes[i].expandedIcon ? nodes[i].expandedIcon : nodes[i].icon;
                        var iconimg  = nodes[i].icon ? this.stringFormat('<img src="{0}/{1}" align="top" id="icon_{2}">', this.iconpath, iconName, layerID) : '';

                        /**
                        * Add event handlers
                        */
                        var eventHandlers = "";
                        for (j in nodes[i].events) {
                                eventHandlers += this.stringFormat('{0}="{1}" ', j, nodes[i].events[j]);
                        }

                        /**
                * Build the html to write to the document
                        * IMPORTANT:
                        * document.write()ing the string: '<div style="display:...' will screw up nn4.x
                */
                        var layerTag  = this.doesMenu() ? this.stringFormat('<div id="{0}" style="display: {1}" class="{2}">', layerID, visibility, (nodes[i].cssClass ? nodes[i].cssClass : this.defaultClass)) : this.stringFormat('<div class="{0}">', nodes[i].cssClass ? nodes[i].cssClass : this.defaultClass);
                        var onMDown   = this.doesMenu() && nodes[i].n.length  && nodes[i].isDynamic ? this.stringFormat('onmousedown="{0}.toggleBranch(\'{1}\', true)" style="cursor: pointer; cursor: hand"', this.myname, layerID) : '';
                        var imgTag    = this.stringFormat('<img src="{0}/{1}{2}.gif" align="top" border="0" name="img_{3}" {4}>', this.iconpath, gifname, modifier, layerID, onMDown);
                        var linkTarget= nodes[i].linkTarget ? nodes[i].linkTarget : this.linkTarget;
                        var linkStart = nodes[i].link ? this.stringFormat('<a href="{0}" target="{1}">', nodes[i].link, linkTarget) : '';

                        var linkEnd   = nodes[i].link ? '</a>' : '';

                        this.output += this.stringFormat('{0}<nobr>{1}{2}{3}{4}<span {5}>{6}</span>{7}</nobr><br></div>',
                                          layerTag,
                                                          prepend,
                                          parentLayerID == null && (nodes.length == 1 || this.noTopLevelImages) ? '' : imgTag,
                                                          iconimg,
                                                          linkStart,
                                                          eventHandlers,
                                                          nodes[i].title,
                                                          linkEnd);

                        /**
                * Traverse sub nodes ?
                */
                        if (nodes[i].n.length) {
                                /**
                    * Determine what to prepend. If there is only one root
                                * node then the prepend to pass to children is nothing.
                                * Otherwise it depends on where we are in the tree.
                    */
                                if (parentLayerID == null && (nodes.length == 1 || this.noTopLevelImages)) {
                                        var newPrepend = '';

                                } else if (i < (nodes.length - 1)) {
                                        var newPrepend = prepend + this.stringFormat('<img src="{0}/line.gif" align="top">', this.iconpath);

                                } else {
                                        var newPrepend = prepend + this.stringFormat('<img src="{0}/linebottom.gif" align="top">', this.iconpath);
                                }

                                this.drawMenu(nodes[i].n,
                                              arrayCopy(level),
                                              newPrepend,
                                              nodes[i].expanded,
                                              expanded ? 'inline' : 'none',
                                              layerID);
                        }
                }
        }

/**
* Writes the output generated by drawMenu() to the page
*/
        TreeMenu.prototype.writeOutput = function (customdiv)
        {
                if (customdiv != "")
                {
                        customDivObj = browserObject(customdiv);
                        if (customDivObj)
                        {
                                customDivObj.innerHTML = this.output;
                        }
                } else {
                        document.write(this.output);
                }
        }

/**
* Expand all Nodes
*/
        TreeMenu.prototype.expandAllNodes = function ()
        {
                var nodes = this.n;
                var level = new Array();

                var currentlevel  = level.length;
                var parentLayerID = null;
                var visibility = 'inline';

                for (var i=0; i<nodes.length; i++) {
                        level[currentlevel] = i+1;
                        layerID = this.myname + '_' + 'node_' + this.implode('_', level);

                        if (this.layerRelations[layerID]) {
                                this.toggleBranch(layerID, true);
                        }
                }

                return true;
        }


/**
* Toggles a branches visible status. Called from resetBranches()
* and also when a +/- graphic is clicked.
*/
        TreeMenu.prototype.toggleBranch = function (layerID, updateStatus) // OPTIONAL ARGS: fireEvents = true
        {
                var currentDisplay = this.getLayer(layerID).style.display;
                var newDisplay     = (this.branchStatus[layerID] && currentDisplay == 'inline') ? 'none' : 'inline';
                var fireEvents     = arguments[2] != null ? arguments[2] : true;

                for (var i=0; i<this.layerRelations[layerID].length; i++) {

                        if (this.branchStatus[this.layerRelations[layerID][i]]) {
                                this.toggleBranch(this.layerRelations[layerID][i], false);
                        }

                        this.getLayer(this.layerRelations[layerID][i]).style.display = newDisplay;
                }

                if (updateStatus) {
                        this.branchStatus[layerID] = !this.branchStatus[layerID];

                        /**
                * Persistence
                */
                        if (this.doesPersistence() && !arguments[2] && this.usePersistence) {
                                this.setExpandedStatusForCookie(layerID, this.branchStatus[layerID]);
                        }

                        /**
                        * Fire custom events
                        */
                        if (fireEvents) {
                                nodeObject = this.nodeRefs[layerID];

                                if (nodeObject.ontoggle != null) {
                                        eval(nodeObject.ontoggle);
                                }

                                if (newDisplay == 'none' && nodeObject.oncollapse != null) {
                                        eval(nodeObject.oncollapse);
                                } else if (newDisplay == 'inline' && nodeObject.onexpand != null){
                                        eval(nodeObject.onexpand);
                                }
                        }

                        // Swap image
                        this.swapImage(layerID);
                }

                // Swap icon
                this.swapIcon(layerID);
        }

/**
* Swaps the plus/minus branch images
*/
        TreeMenu.prototype.swapImage = function (layerID)
        {
                var imgSrc = document.images['img_' + layerID].src;

                var re = /^(.*)(plus|minus)(bottom|top|single)?.gif$/
                if (matches = imgSrc.match(re)) {

                        document.images['img_' + layerID].src = this.stringFormat('{0}{1}{2}{3}',
                                                                        matches[1],
                                                                                                                        matches[2] == 'plus' ? 'minus' : 'plus',
                                                                                                                        matches[3] ? matches[3] : '',
                                                                                                                        '.gif');
                }
        }

/**
* Swaps the icon for the expanded icon if one
* has been supplied.
*/
        TreeMenu.prototype.swapIcon = function (layerID)
        {
                if (document.images['icon_' + layerID]) {
                        var imgSrc = document.images['icon_' + layerID].src;

                        if (this.nodeRefs[layerID].icon && this.nodeRefs[layerID].expandedIcon) {
                                var newSrc = (imgSrc.indexOf(this.nodeRefs[layerID].expandedIcon) == -1 ? this.nodeRefs[layerID].expandedIcon : this.nodeRefs[layerID].icon);

                                document.images['icon_' + layerID].src = this.iconpath + '/' + newSrc;
                        }
                }
        }

/**
* Can the browser handle the dynamic menu?
*/
        TreeMenu.prototype.doesMenu = function ()
        {
                return (is_ie4up || is_nav6up || is_gecko || is_opera7);
        }

/**
* Can the browser handle save the branch status
*/
        TreeMenu.prototype.doesPersistence = function ()
        {
                return (is_ie4up || is_gecko || is_nav6up || is_opera7);
        }

/**
* Returns the appropriate layer accessor
*/
        TreeMenu.prototype.getLayer = function (layerID)
        {
                if (is_ie4) {
                        return document.all(layerID);

                } else if (document.getElementById(layerID)) {
                        return document.getElementById(layerID);

                } else if (document.all(layerID)) {
                        return document.all(layerID);
                }
        }

/**
* Save the status of the layer
*/
        TreeMenu.prototype.setExpandedStatusForCookie = function (layerID, expanded)
        {
                this.cookieStatuses[layerID] = expanded;
                this.saveCookie();
        }

/**
* Load the status of the layer
*/
        TreeMenu.prototype.getExpandedStatusFromCookie = function (layerID)
        {
                if (this.cookieStatuses[layerID]) {
                        return this.cookieStatuses[layerID];
                }

                return false;
        }

/**
* Saves the cookie that holds which branches are expanded.
* Only saves the details of the branches which are expanded.
*/
        TreeMenu.prototype.saveCookie = function ()
        {
                var cookieString = new Array();

                for (var i in this.cookieStatuses) {
                        if (this.cookieStatuses[i] == true) {
                                cookieString[cookieString.length] = i;
                        }
                }

                // ======= PERMANENT COOKIE PATCH [VARUN] =======
                var expire = new Date();
                expire.setTime(expire.getTime() + 365*24*60*60*1000);

                document.cookie = 'TreeMenuBranchStatus=' + cookieString.join(':')+"; expires="+expire.toUTCString();
        }

/**
* Reads cookie parses it for status info and
* stores that info in the class member.
*/
        TreeMenu.prototype.loadCookie = function ()
        {
                var cookie = document.cookie.split('; ');

                for (var i=0; i < cookie.length; i++) {
                        var crumb = cookie[i].split('=');
                        if ('TreeMenuBranchStatus' == crumb[0] && crumb[1]) {
                                var expandedBranches = crumb[1].split(':');
                                for (var j=0; j<expandedBranches.length; j++) {
                                        this.cookieStatuses[expandedBranches[j]] = true;
                                }
                        }
                }
        }

/**
* Reset branch status
*/
        TreeMenu.prototype.resetBranches = function ()
        {
                if (!this.doesPersistence()) {
                        return false;
                }

                this.loadCookie();

                for (var i=0; i<this.branches.length; i++) {
                        var status = this.getExpandedStatusFromCookie(this.branches[i]);
                        // Only update if it's supposed to be expanded and it's not already
                        if (status == true && this.branchStatus[this.branches[i]] != true) {
                                if (this.checkParentVisibility(this.branches[i])) {
                                        this.toggleBranch(this.branches[i], true, false);
                                } else {
                                        this.branchStatus[this.branches[i]] = true;
                                        this.swapImage(this.branches[i]);
                                }
                        }
                }
        }

/**
* Checks whether a branch should be open
* or not based on its parents' status
*/
        TreeMenu.prototype.checkParentVisibility = function (layerID)
        {
                if (this.in_array(this.childParents[layerID], this.branches)
                    && this.branchStatus[this.childParents[layerID]]
                        && this.checkParentVisibility(this.childParents[layerID]) ) {

                        return true;

                } else if (this.childParents[layerID] == null) {
                        return true;
                }

                return false;
        }

/**
* New C# style string formatter
*/
        TreeMenu.prototype.stringFormat = function (strInput)
        {
                var idx = 0;

                for (var i=1; i<arguments.length; i++) {
                        while ((idx = strInput.indexOf('{' + (i - 1) + '}', idx)) != -1) {
                                strInput = strInput.substring(0, idx) + arguments[i] + strInput.substr(idx + 3);
                        }
                }

                return strInput;
        }

/**
* Also much adored, the PHP implode() function
*/
        TreeMenu.prototype.implode = function (seperator, input)
        {
                var output = '';

                for (var i=0; i<input.length; i++) {
                        if (i == 0) {
                                output += input[i];
                        } else {
                                output += seperator + input[i];
                        }
                }

                return output;
        }

/**
* Aah, all the old favourites are coming out...
*/
        TreeMenu.prototype.in_array = function (item, arr)
        {
                for (var i=0; i<arr.length; i++) {
                        if (arr[i] == item) {
                                return true;
                        }
                }

                return false;
        }

/**
* TreeNode Class
*/
        function TreeNode(title, icon, link, expanded, isDynamic, cssClass, linkTarget, expandedIcon)
        {
                this.title        = title;
                this.icon         = icon;
                this.expandedIcon = expandedIcon;
                this.link         = link;
                this.expanded     = expanded;
                this.isDynamic    = isDynamic;
                this.cssClass     = cssClass;
                this.linkTarget   = linkTarget;
                this.n            = new Array();
                this.events       = new Array();
                this.handlers     = null;
                this.oncollapse   = null;
                this.onexpand     = null;
                this.ontoggle     = null;
        }

/**
* Adds a node to an already existing node
*/
        TreeNode.prototype.addItem = function (newNode)
        {
                newIndex = this.n.length;
                this.n[newIndex] = newNode;

                return this.n[newIndex];
        }

/**
* Sets an event for this particular node
*/
        TreeNode.prototype.setEvent = function (eventName, eventHandler)
        {
                switch (eventName.toLowerCase()) {
                        case 'onexpand':
                                this.onexpand = eventHandler;
                                break;

                        case 'oncollapse':
                                this.oncollapse = eventHandler;
                                break;

                        case 'ontoggle':
                                this.ontoggle = eventHandler;
                                break;

                        default:
                                this.events[eventName] = eventHandler;
                }
        }

/**
* That's the end of the tree classes. What follows is
* the browser detection code.
*/


//<!--
// Ultimate client-side JavaScript client sniff. Version 3.03
// (C) Netscape Communications 1999-2001.  Permission granted to reuse and distribute.
// Revised 17 May 99 to add is_nav5up and is_ie5up (see below).
// Revised 20 Dec 00 to add is_gecko and change is_nav5up to is_nav6up
//                      also added support for IE5.5 Opera4&5 HotJava3 AOLTV
// Revised 22 Feb 01 to correct Javascript Detection for IE 5.x, Opera 4,
//                      correct Opera 5 detection
//                      add support for winME and win2k
//                      synch with browser-type-oo.js
// Revised 26 Mar 01 to correct Opera detection
// Revised 02 Oct 01 to add IE6 detection

// Everything you always wanted to know about your JavaScript client
// but were afraid to ask. Creates "is_" variables indicating:
// (1) browser vendor:
//     is_nav, is_ie, is_opera, is_hotjava, is_webtv, is_TVNavigator, is_AOLTV
// (2) browser version number:
//     is_major (integer indicating major version number: 2, 3, 4 ...)
//     is_minor (float   indicating full  version number: 2.02, 3.01, 4.04 ...)
// (3) browser vendor AND major version number
//     is_nav2, is_nav3, is_nav4, is_nav4up, is_nav6, is_nav6up, is_gecko, is_ie3,
//     is_ie4, is_ie4up, is_ie5, is_ie5up, is_ie5_5, is_ie5_5up, is_ie6, is_ie6up, is_hotjava3, is_hotjava3up,
//     is_opera2, is_opera3, is_opera4, is_opera5, is_opera5up
// (4) JavaScript version number:
//     is_js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...)
// (5) OS platform and version:
//     is_win, is_win16, is_win32, is_win31, is_win95, is_winnt, is_win98, is_winme, is_win2k
//     is_os2
//     is_mac, is_mac68k, is_macppc
//     is_unix
//     is_sun, is_sun4, is_sun5, is_suni86
//     is_irix, is_irix5, is_irix6
//     is_hpux, is_hpux9, is_hpux10
//     is_aix, is_aix1, is_aix2, is_aix3, is_aix4
//     is_linux, is_sco, is_unixware, is_mpras, is_reliant
//     is_dec, is_sinix, is_freebsd, is_bsd
//     is_vms
//
// See http://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html and
// http://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html
// for detailed lists of userAgent strings.
//
// Note: you don't want your Nav4 or IE4 code to "turn off" or
// stop working when new versions of browsers are released, so
// in conditional code forks, use is_ie5up ("IE 5.0 or greater")
// is_opera5up ("Opera 5.0 or greater") instead of is_ie5 or is_opera5
// to check version in code which you want to work on future
// versions.

/**
* Severly curtailed all this as only certain elements
* are required by TreeMenu, specifically:
*  o is_ie4up
*  o is_nav6up
*  o is_gecko
*/

    // convert all characters to lowercase to simplify testing
    var agt=navigator.userAgent.toLowerCase();

    // *** BROWSER VERSION ***
    // Note: On IE5, these return 4, so use is_ie5up to detect IE5.
    var is_major = parseInt(navigator.appVersion);
    var is_minor = parseFloat(navigator.appVersion);

    // Note: Opera and WebTV spoof Navigator.  We do strict client detection.
    // If you want to allow spoofing, take out the tests for opera and webtv.
    var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
    var is_nav6up = (is_nav && (is_major >= 5));
    var is_gecko = (agt.indexOf('gecko') != -1);


    var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
    var is_ie4up  = (is_ie && (is_major >= 4));

        var is_opera  = (agt.indexOf("opera") != -1);
        var is_opera7 = is_opera && (agt.indexOf("opera 7") != -1);

        // Patch from Harald Fielker
    if (agt.indexOf('konqueror') != -1) {
        var is_nav    = false;
        var is_nav6up = false;
        var is_gecko  = false;
        var is_ie     = true;
        var is_ie4    = true;
        var is_ie4up  = true;
    }
//--> end hide JavaScript
