﻿// JScript File
            
var EventUtil = new Object;
EventUtil.addEventHandler = function(oTarget, sEventType, fnHandler)
                            {   
                                if(oTarget.addEventListener) //For DOM-compliant browsers
                                {
                                    oTarget.addEventListener(sEventType, fnHandler, false);
                                }                                        
                                else if(oTarget.attachEvent) //For IE
                                {
                                    oTarget.attachEvent("on" + sEventType, fnHandler);
                                }
                                else    //For all other browsers
                                {
                                    oTarget["on" + sEventType] = fnHandler;
                                }
                            }
                            
EventUtil.removeEventHandler = function(oTarget, sEventType, fnHandler)
                               {
                                    if(oTarget.removeEventListener) //For DOM-compliant browsers
                                    {
                                        oTarget.removeEventListener(sEventType, fnHandler, false);
                                    }
                                    else if(oTarget.detachEvent)    //For IE
                                    {
                                        oTarget.detachEvent("on" + sEventType, fnHandler);
                                    }
                                    else                            //For all other browsers
                                    {
                                        oTarget["on" + sEventType] = null;
                                    }
                               
                               }
                      

EventUtil.getEvent = function GetEvent(e)
                    {
                        return (window.event != null) ? window.event : e; // IE vs. DOM compliant browsers
                    }                      
                                                                                
String.prototype.trim = function()
                        {
                            var rgxExtraSpace = /^\s+(.*?)\s+$/;        //Begins and ends with one or more whitespace characters; Fill 1st backreference via reluctant quantifier.
                            return this.replace(rgxExtraSpace, "$1");   //Return just the first backreference
                        };  
                        


function StringBuilder()
{
    this.__strings__ = new Array;
}
StringBuilder.prototype.append =    function(str)
                                    {
                                        this.__strings__.push(str);
                                    };

StringBuilder.prototype.toString =  function()
                                    {
                                        return this.__strings__.join("");
                                    };

StringBuilder.prototype.length =  function()
                                    {
                                        return this.__strings__.length;
                                    };
                                    
function GetScrollXYOffset() 
{
    //gets page offset from top left of browser
    var scrOfX = 0, scrOfY = 0;
    if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }
    return [ scrOfX, scrOfY ];
}//end GetScrollXY()

function centerUpdatePanel(loadingPanelID, focusElementID)
{
    centerElementOverFocusElement(document.getElementById(loadingPanelID), document.getElementById(focusElementID));
}

function centerElementOverFocusElement(element, focusElement)
{
    if (!Sys.UI.DomElement.getLocation)
    {
        return 0;
    }
    
    var elementLocation = Sys.UI.DomElement.getLocation(focusElement);
    var focusElementHeight = focusElement.clientHeight;
    var focusElementWidth = focusElement.clientWidth;

    element._element.style.position = "absolute";
    element._element.style.top = elementLocation.y + "px";
    element._element.style.left = elementLocation.x + "px";
    element._element.style.height = focusElementHeight + "px";
    element._element.style.width = focusElementWidth + "px";
}

function trimString(originalString, maxLength)
{
    var result = new String(originalString);
    if((result.length <= maxLength))
    {
        return result;
    }
    else if((result.indexOf(' ', 0) <= 0) || (result.indexOf(' ', 0) > maxLength))
    {
        return result.substring(0, (maxLength - 3)) + '...';
    }
    else
    {
        result = originalString.substring(0, maxLength)
        var words= result.split(" ");
        words.pop();
        result = words.join(' ');
        result = result.replace(/[^\w\s]+$/i, '') + '...';
        return result;
    }
}

//positions container parameter below the relativeTo parameter, and checks that container is completely within
//the current browser dimensions
function positionContainerInWindow(relativeTo, container)
{
    //position container within the current window;
    var x, y;
    x = relativeTo.clientX;
    if((x + $(container).width()) > $(window).width())
    {
        x = ($(window).width() - $(container).width());
    }
    x += $(document).scrollLeft();
    y = relativeTo.clientY + 10;
    if((y + $(container).height()) > $(window).height())
    {
        y = ($(window).height() - $(container).height());
    }
    y += $(document).scrollTop();
    $(container).css("left", x + "px");
    $(container).css("top", y + "px");
    $(container).show();
}

function Search(keyword, url, defaultVal)
{
    if(keyword == defaultVal)
    {
        Redirect(url, new Array(new Array('cs', '1')));
    }
    else
    {
        var params = new Array(new Array('keyword', keyword), new Array('cs', '1'));
        Redirect(url, params);
    }
    return false;
}

function Redirect(url, qsParams)
{
    var qs = new StringBuilder();
    if (qsParams)
    {
        for(i=0;i<qsParams.length;i++)
        {
            qs.append(qsParams[i][0] + '=' + encodeURI(qsParams[i][1]));
            if (i<qsParams.length - 1)
            {
                qs.append('&');
            }
        }
    }
    
    if(qs.length() > 0)
    {
        url += '?' + qs.toString();
    }
    window.location = url;
}

//function toggleMenuItem(ipImgDown, ipImgUp, ipDiv, ipSpeed) 
function toggleMenuItem(ipDiv, ipSpeed, headerContainerId, bottomElementId)
{
    $('#'+ipDiv).slideToggle(ipSpeed);
    $('#'+headerContainerId).toggleClass('LeftNavHeaderExpanded');
    $('#'+headerContainerId).toggleClass('LeftNavHeaderCollapsed');
    if (bottomElementId)
    {
        $('#'+bottomElementId).toggleClass('LeftNavBottomExpanded');
        $('#'+bottomElementId).toggleClass('LeftNavBottomCollapsed');
    }
}