    var IdentIE5 = "MSIE 5.0";
    var IdentNS = "Netscape";
    var WindowsArray = new Array();
    var AWSenderIdKey = 'awsn';
    var AWActionPopupEnabled = true;
    var AWAlertException = false;
    function awgetElementById (id)
    {
        var element = document.getElementById ?
                            document.getElementById(id) :
                            document.all[id];
        return element;
    }
    function awGetDocumentElementById (doc, id)
    {
        if (!doc)
            return null;
        var element = doc.getElementById ? doc.getElementById(id) : doc.all[id];
        return element;
    }
    function _awFindParent (poTarget, sType, checkCurrent)
    {
        var node = checkCurrent ? poTarget : poTarget.parentNode;
        while (node != null && node.nodeName != sType) {
            node = node.parentNode;
        }
        return node;
    }
    function _awFindChild (poTarget, sType, checkCurrent)
    {
        var node = null;
        if (!poTarget) {
            return poTarget;
        }
        else if (checkCurrent && (poTarget.nodeName == sType)) {
            return poTarget;
        }
        else if (poTarget.childNodes) {
            var childNodes = poTarget.childNodes;
            for (var i=0; i < childNodes.length && node == null; i++) {
                node = _awFindChild(childNodes[i], sType, true);
            }
        }
        return node;
    }
    function _awFindParentUsingPredicate (poTarget, matchFunc, checkCurrent)
    {
        var node = checkCurrent ? poTarget : poTarget.parentNode;
        while (node != null && !matchFunc(node)) {
            node = node.parentNode;
        }
        return node;
    }
    function _awFindChildUsingPredicate (poTarget, matchFunc, checkCurrent)
    {
        var node = null;
        if (!poTarget) {
            return poTarget;
        }
        else if (checkCurrent && matchFunc(poTarget)) {
            return poTarget;
        }
        else if (poTarget.childNodes) {
            var childNodes = poTarget.childNodes;
            for (var i=0; i < childNodes.length && node == null; i++) {
                node = _awFindChildUsingPredicate(childNodes[i], matchFunc, true);
            }
        }
        return node;
    }
    function awIsNetscape ()
    {
        return (navigator.appName.indexOf(IdentNS) != -1);
    }
    function awopenWindow (urlString, windowName, attributesString)
    {
        awprivateSetActionPending(false);
        var namedWindow = WindowsArray[windowName];
        if (namedWindow == null || namedWindow.closed) {
            if (attributesString != null) {
                namedWindow = window.open(urlString, windowName, attributesString);
            }
            else {
                namedWindow = window.open(urlString, windowName);
            }
            WindowsArray[windowName] = namedWindow;
            if (navigator.appVersion.indexOf(IdentIE5) != -1 || navigator.appName.indexOf(IdentNS) != -1) {
                namedWindow.focus();
            }
        }
        else if (navigator.appVersion.indexOf(IdentIE5) != -1 || navigator.appName.indexOf(IdentNS) != -1) {
            namedWindow.focus();
            namedWindow.location.href = urlString;
        }
        else {
            namedWindow.close();
            if (attributesString != null) {
                namedWindow = window.open(urlString, windowName, attributesString);
            }
            else {
                namedWindow = window.open(urlString, windowName);
            }
        }
        return false;
    }
    function awsetDocumentLocation (hrefString, windowName, windowAttributes)
    {
        if (awisNullOrUndefined(windowName)) {
            awGetContent(hrefString);
        }
        else {
            if (awisNullOrUndefined(windowAttributes)) {
                windowAttributes = '';
            }
            awprivateSetActionPending(false);
            namedWindow = window.open(hrefString, windowName, windowAttributes);
            namedWindow.focus();
        }
        return false;
    }
    function awsubmitFormForWindow (urlString, windowName, attributesString, formObject)
    {
        awopenWindow(urlString, windowName, attributesString);
        var originalAction = formObject.action;
        formObject.action = urlString;
        awsubmitForm(formObject, windowName);
        formObject.action = originalAction;
        return false;
    }
    function awsubmitFormAtIndexWithHiddenField (formIndex, hiddenFieldName, value)
    {
        var formObject = document.forms[formIndex];
        var hiddenFieldObject = formObject[hiddenFieldName];
        hiddenFieldObject.value = value;
        awsubmitForm(formObject);
        return false;
    }
    function awMouseWheelOnPopup (popup, event)
    {
        awcancelBubble(event);
        return false;
    }
    var AWDidChangeKey = "awdidchg";
    function awactionPopupChanged (popup, mevent)
    {
        if (AWActionPopupEnabled) {
            popup.setAttribute(AWDidChangeKey, "0");
            var selectedOption = popup.options[popup.selectedIndex];
            var selectedPopupValue = selectedOption.value;
            if (selectedPopupValue == "awnop") {
                popup.selectedIndex = popup.selectedIndex - 1;
                return false;
            }
            if (selectedPopupValue == 'awaction') {
                var formObject = popup.form;
                awaddFormField(formObject, AWSenderIdKey, selectedOption.id);
                awsubmitForm(formObject);
            }
            else {
                var formObject = popup.form;
                awaddFormField(formObject, AWSenderIdKey, popup.name);
                awsubmitForm(formObject);
            }
        }
        AWActionPopupEnabled = true;
        return true;
    }
    function awactionPopupKeyDown (popup, mevent)
    {
        var keyCode = mevent.keyCode;
        if (keyCode == 9) {
            if (popup.getAttribute(AWDidChangeKey) == "1") {
                AWActionPopupEnabled = true;
                return awactionPopupChanged(popup, mevent);
            }
        }
        else if (keyCode == 38 || keyCode == 40) {
            popup.setAttribute(AWDidChangeKey, "1");
            AWActionPopupEnabled = false;
        }
        return true;
    }
    function awsubmitFormForElementName (formName, elementId, actionPendingDelay, mevent)
    {
        if (!awtestAndSetActionPending(actionPendingDelay)) {
            var formObject = eval("document." + formName);
            awaddFormField(formObject, AWSenderIdKey, elementId);
            awsubmitForm(formObject);
        }
        awcancelBubble(mevent);
        return false;
    }
    function awaddFormField (formObject, fieldName, fieldValue)
    {
        return awaddFormFieldWithId(formObject, fieldName, fieldName, fieldValue);
    }
    function awRemoveFormField (formObject, fieldName)
    {
        var child = _awFindChildUsingPredicate(formObject, function (node){
                                return node.id == fieldName || node.name == fieldName;
                                });
        if (child) {
            formObject.removeChild(child);
        }
    }
    
    function aw00 (formObject, target)
    {
        awsubmitForm(formObject, target);
    }
    function aw01 (formName, elementId, actionPendingDelay, mevent)
    {
        if ((mevent.type == "keypress") && (awkeyCode(mevent) != 13)) {
            return true;
        }
        return awsubmitFormForElementName(formName, elementId, actionPendingDelay, mevent);
    }
    function aw02 (popup, mevent)
    {
        return awactionPopupChanged(popup, mevent);
    }
    var AWDisableMouseClick = false;
    function aw03 (senderId, windowName, actionPendingDelay, windowAttributes, mevent)
    {
        if (AWDisableMouseClick) {
            AWDisableMouseClick = false;
            return false;
        }
        if ((mevent.type == "keypress") && (awkeyCode(mevent) != 13)) {
            return true;
        }
        awgotoLink(senderId, windowName, actionPendingDelay, windowAttributes, mevent);
        return false;
    }
    function aw04 (tagObject, formId, windowName, actionPendingDelay, actionName, mevent, submitValue)
    {
        return awtagOnClick(tagObject, formId, windowName, actionPendingDelay, actionName, mevent, submitValue);
    }
    function aw05 (tagObject, formId, windowName, actionPendingDelay, actionName, mevent)
    {
        return awtagOnKeyPress(tagObject, formId, windowName, actionPendingDelay, actionName, mevent);
    }
    function aw06 (popup, mevent)
    {
        var selectedOption = popup.options[popup.selectedIndex];
        if (selectedOption.value.match(/^aw/) == null) {
            AWActionPopupEnabled = false;
        }
        return awactionPopupChanged(popup, mevent);
    }
    function aw07 (formIndex, hiddenFieldName, value)
    {
        return awsubmitFormAtIndexWithHiddenField(formIndex, hiddenFieldName, value)
    }
    function aw08 (urlString, windowName, attributesString)
    {
        return awopenWindow(urlString, windowName, attributesString);
    }
    function aw09 (popup, mevent)
    {
        return awactionPopupKeyDown(popup, mevent);
    }
    function aw10 (scrollValue)
    {
        return awsetPageScrollTop (scrollValue);
    }
    function aw11 (scrollValue)
    {
        return awsetPageScrollLeft (scrollValue);
    }
    function aw12 (popup, mevent)
    {
        return awMouseWheelOnPopup(popup, mevent);
    }
    var AWActionPending = false;
    var AWActionPendingTimeout = 1000;
    var AWActionPendingTimeoutId;
    function awisActionPending ()
    {
        return AWActionPending;
    }
    function awprivateSetActionPending (flag)
    {
        AWActionPending = flag;
        if (!flag && !awisNullOrUndefined(AWActionPendingTimeoutId)) {
            clearTimeout(AWActionPendingTimeoutId);
            AWActionPendingTimeoutId = null;
        }
    }
    function awtestAndSetActionPending (actionPendingDelay)
    {
        var isActionPending = AWActionPending;
        if (!isActionPending) {
            AWActionPending = true;
            if (awisNullOrUndefined(actionPendingDelay)) {
                actionPendingDelay = AWActionPendingTimeout;
            }
            AWActionPendingTimeoutId =
                setTimeout("awprivateSetActionPending(false)", actionPendingDelay);
        }
        else {
        
        }
        return isActionPending;
    }
    function awInvoke (element, senderId, mevent, suppressForm, windowName, actionPendingDelay, tagObjectName, submitValue, senderValue)
    {
        var formId = null;
        if (!senderId) senderId = element.id;
        if (element && !suppressForm) {
            var form = _awFindParent(element, "FORM");
            if (form) formId = form.id;
        }
        return awsenderClicked (senderId, formId, windowName, actionPendingDelay, tagObjectName, mevent, submitValue, senderValue)
    }
    function awsenderClicked (senderId, formId, windowName, actionPendingDelay, tagObjectName, mevent, submitValue, senderValue)
    {
        if (!awtestAndSetActionPending(actionPendingDelay)) {
            var formObject = null;
            if (formId != null) {
                formObject = awgetElementById(formId);
            }
            if (formObject != null) {
                var inputObject;
                if (submitValue) {
                    inputObject = document.createElement('input');
                    inputObject.type = 'hidden';
                    inputObject.id = senderId;
                    inputObject.name = senderId;
                    formObject.appendChild(inputObject);
                    inputObject.value = senderValue ? senderValue : senderId;
                }
                var actionFieldObject = formObject["wzrd_action"];
                if ((actionFieldObject != null) && (tagObjectName != null)) {
                    actionFieldObject.value = tagObjectName;
                }
                awaddFormField(formObject, AWSenderIdKey, senderId);
                awInvokeSenderClickedCallbacks(senderId, formId);
                if (windowName != null) {
                    awsubmitForm(formObject, windowName);
                }
                else {
                    awsubmitForm(formObject);
                }
                if (submitValue) {
                    formObject.removeChild(inputObject);
                }
            }
            else {
                var urlString = awformatUrl(senderId);
                awInvokeSenderClickedCallbacks(senderId, null);
                awsetDocumentLocation(urlString, windowName);
            }
            if (mevent) awcancelBubble(mevent);
        }
        return false;
    }
    var AWSenderClickedCallbackList = null;
    function awRegisterSenderClickedCallback (method)
    {
        if (!AWSenderClickedCallbackList) {
            AWSenderClickedCallbackList = new Array();
        }
        AWSenderClickedCallbackList[AWSenderClickedCallbackList.length] = method;
    }
    function awInvokeSenderClickedCallbacks (senderId, formId)
    {
        if (AWSenderClickedCallbackList) {
            for (var i=0; i < AWSenderClickedCallbackList.length; i++) {
                AWSenderClickedCallbackList[i](senderId, formId);
            }
        }
    }
    function awtagOnClick (tagObject, formId, windowName, actionPendingDelay, actionName, mevent, addValue)
    {
        return awsenderClicked(tagObject.id, formId, windowName, actionPendingDelay, actionName, mevent, addValue, tagObject.value);
    }
    function awtagOnKeyPress (tagObject, formId, windowName, actionPendingDelay, actionName, mevent)
    {
        if (mevent.keyCode == 13) {
            awtagOnClick(tagObject, formId, windowName, actionPendingDelay, actionName, mevent);
            return false;
        }
        return true;
    }
    function awformCR (formObject, mevent)
    {
        if (awkeyCode(mevent) == 13) {
            if (!awtestAndSetActionPending()) {
                awsubmitForm(formObject);
            }
            return false;
        }
        return true;
    }
    function awformatUrl (senderId)
    {
        var urlString = awformatSenderUrl(senderId);
        return awappendScrollValues(urlString);
    }
    function awformatSenderUrl (senderId)
    {
        return awPartialUrl() + AWSenderIdKey + '=' + senderId;
    }
    function awappendScrollValues (urlString)
    {
        if (urlString.indexOf("#") == -1) {
            urlString = urlString + '&awst=' + awgetPageScrollTop() + '&awsl=' + awgetPageScrollLeft();
        }
        return urlString;
    }
    function awgotoLink (senderId, windowName, actionPendingDelay, windowAttributes, mevent)
    {
        if (!awtestAndSetActionPending(actionPendingDelay)) {
            href = awformatUrl(senderId);
            awsetDocumentLocation(href, windowName, windowAttributes);
        }
        awcancelBubble(mevent);
        return false;
    }
    function _awtextRefresh (text)
    {
        var formObject = text.form;
        var senderId = text.name;
        awaddFormField(formObject, AWSenderIdKey, senderId);
        awsubmitForm(formObject, null);
        return false;
    }
    var AWTextChangedId = null;
    function awresetTextChanged ()
    {
        if (AWTextChangedId != null) {
            AWTextChangedId = null;
            document.onclick = null;
        }
    }
    
    function awtxtRfrsh (mevent, text)
    {
        var keyCode = mevent.keyCode;
        if (keyCode == 9) {
            if (text.getAttribute(AWDidChangeKey) == "1") {
                text.setAttribute(AWDidChangeKey, "0");
                _awtextRefresh(text);
            }
        }
        else {
            text.setAttribute(AWDidChangeKey, "1");
            if (document.onclick == null) {
                awDomRegisterUpdateCompleteCallback(awresetTextChanged);
                AWTextChangedId = text.id;
                document.onclick = function (mevent) {
                    if (AWTextChangedId != null) {
                        mevent = mevent ? mevent : event;
                        var text = awgetElementById(AWTextChangedId);
                        if (text != null) {
                            _awtextRefresh(text);
                        }
                    }
                };
            }
        }
        return true;
    }
    function awlimitTextLength(textfield, maxlength) {
        if (maxlength != 0 && textfield.value.length > maxlength) {
            textfield.value = textfield.value.substring(0, maxlength);
        }
    }
    function awisUndefined (value)
    {
        return (typeof value == "undefined");
    }
    function awisNullOrUndefined (value)
    {
        return (value == null || (typeof value == "undefined"));
    }
    var _AWDebugWindow = null;
    function awdebugWindow ()
    {
        if (_AWDebugWindow == null || _AWDebugWindow.closed) {
            var w = window.open("","awdebugWindow","height=400,width=400,left=0,top=0,resizable=1,scrollbars=1");
            w.document.close();
            w.document.write("<head><style>");
            w.document.write("BODY {background-color: #FFEAAA;color: #000000;font: normal 8pt Verdana, Arial, Helvetica, sans-serif;}");
            w.document.write("</style></head><body>");
            _AWDebugWindow = w;
        }
        return _AWDebugWindow;
    }
    function clearDebugWindow () {
        _AWDebugWindow = null;
        var w = awdebugWindow();
        return w;
    }
    var awDeepestChild = null;
    function awshowDebug (spanTag)
    {
        if (event.ctrlKey) {
            var tag = awDeepestChild;
            while (tag != null) {
                if (tag == spanTag) {
                    return;  
                }
                tag = tag.parentElement;
            }
            if (awDeepestChild == null) setTimeout("awFlushDebug()", 0);
            awDeepestChild = spanTag;
        }
    }
    function awFlushDebug() {
        var w = clearDebugWindow();
        w.focus();
        w.document.write('<b>Component Path!</b><br>');
        var tag = awDeepestChild;
        while (tag != null) {
            var tagString = tag.id;
            if (tagString.length > 0 && tagString.indexOf(":")>0) {
                w.document.write('<li>');
                w.document.write(tagString);
                w.document.write('</li>');
            }
            tag = tag.parentElement;
        }
        awDeepestChild = null;
    }
    function awstringEndsWith (sourceString, searchString)
    {
        return (sourceString.lastIndexOf(searchString) == (sourceString.length - searchString.length));
    }
    function awsetResponseId (responseId)
    {
        AWResponseId = responseId;
    }
    function awappendQueryValue (url, key, value)
    {
        var urlString = url.toString();
        var separator = null;
        if (urlString.match(/\?/) == null) {
            separator = '?';
        }
        else {
            separator = '&';
        }
        urlString = urlString + separator + key + "=" + value;
        return urlString;
    }
    var ELEMENT_NODE = 1;
    function awAddClass (n, className)
    {
        if (n.nodeType == ELEMENT_NODE) {
            if (className && className.charAt(className.length-1) != " ") {
                className = className + " ";
            }
            if (n.className && n.className.indexOf(className) == -1) {
                n.className = className + n.className;
            }
            else if (!n.className) {
                n.className = className;
            }
        }
    }
    function awRemoveClass (n, className)
    {
        var curName = n.className;
        if (curName) {
            if (className && className.charAt(className.length-1) != " ") {
                className = className + " ";
            }
            var index = curName.indexOf(className);
            if (index != -1)  {
                n.className = curName.substring(0, index) +
                              curName.substring(index+className.length, curName.length);
            }
        }
    }
    function awPrintStack ()
    {
        var sMsg = "";
        var oFunc;
        if (arguments.length != 0) {
            oFunc = arguments[0];
        }
        else {
            oFunc = awPrintStack.caller;
        }
        while (oFunc != null) {
            var sFunc = oFunc.toString();
            sMsg += "<li>" + sFunc.substring(0,sFunc.search(/\n/)) + "<br/>";
            oFunc = oFunc.caller;
        }
        return sMsg;
    }
    function awGetExceptionMsg (e,sMsg)
    {
        if (AWAlertException) {
            alert(sMsg);
        }
        var str = "****************************<br/>" + sMsg + "<br/>" +
                  "Exception: " + e.message + "<br/>" +
                  awPrintStack(getExceptionMsg.caller) +
                  "<br/>****************************<br/>";
        return str;
    }
    function awHtmlEscapeValue (sValue)
    {
        if (sValue == null)
            return;
        if (sValue.search(/</) != -1) {
            sValue = sValue.replace(/&/g,"&amp;");
            sValue = sValue.replace(/</g,"&lt;");
            sValue = sValue.replace(/>/g,"&gt;");
            sValue = "<pre>" + sValue + "</pre>";
        }
        else if (sValue.search(/function/) != -1) {
            sValue = "<pre>" + sValue + "</pre>";
        }
        return sValue;
    }
    function awabsoluteTop (element)
    {
        var absoluteTop = element.offsetTop;
        var parentElement = element.offsetParent;
        while (parentElement != null) {
            absoluteTop += parentElement.offsetTop
            if (parentElement != awdocumentElement()) {
                absoluteTop -= parentElement.scrollTop;
            }
            parentElement = parentElement.offsetParent;
        }
        return absoluteTop;
    }
    function awclientHeight (docElement)
    {
        var clientHeight = docElement.clientHeight;
        clientHeight += docElement.scrollTop;
        return clientHeight;
    }
    
    function awvisibleInScrollArea (element)
    {
        var docElement = awdocumentElement();
        var scrollTop = docElement.scrollTop; 
        var scrollBottom = awclientHeight(docElement);
        var elementTop = awabsoluteTop(element);
        var elementBottom = elementTop + element.clientHeight;
        var elementTopVisible = (elementTop > scrollTop) && (scrollBottom > elementTop);
        var elementBottomVisible = (elementBottom > scrollTop) && (scrollBottom > elementBottom);
        return elementTopVisible || elementBottomVisible;
    }
