// JavaScript Document
var BrowserDetect = {

    init: function () {

        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";

        this.version = this.searchVersion(navigator.userAgent)

            || this.searchVersion(navigator.appVersion)

            || "an unknown version";

        this.OS = this.searchString(this.dataOS) || "an unknown OS";

    },

    searchString: function (data) {

        for (var i=0;i<data.length;i++) {

            var dataString = data[i].string;

            var dataProp = data[i].prop;

            this.versionSearchString = data[i].versionSearch || data[i].identity;

            if (dataString) {

                if (dataString.indexOf(data[i].subString) != -1)

                    return data[i].identity;

            }

            else if (dataProp)

                return data[i].identity;

        }

    },

    searchVersion: function (dataString) {

        var index = dataString.indexOf(this.versionSearchString);

        if (index == -1) return;

        return parseFloat(dataString.substring(index+this.versionSearchString.length+1));

    },

    dataBrowser: [

        {

            string: navigator.userAgent,

            subString: "Chrome",

            identity: "Chrome"

        },

        {   string: navigator.userAgent,

            subString: "OmniWeb",

            versionSearch: "OmniWeb/",

            identity: "OmniWeb"

        },

        {

            string: navigator.vendor,

            subString: "Apple",

            identity: "Safari",

            versionSearch: "Version"

        },

        {

            prop: window.opera,

            identity: "Opera"

        },

        {

            string: navigator.vendor,

            subString: "iCab",

            identity: "iCab"

        },

        {

            string: navigator.vendor,

            subString: "KDE",

            identity: "Konqueror"

        },

        {

            string: navigator.userAgent,

            subString: "Firefox",

            identity: "Firefox"

        },

        {

            string: navigator.vendor,

            subString: "Camino",

            identity: "Camino"

        },

        {       // for newer Netscapes (6+)

            string: navigator.userAgent,

            subString: "Netscape",

            identity: "Netscape"

        },

        {

            string: navigator.userAgent,

            subString: "MSIE",

            identity: "Explorer",

            versionSearch: "MSIE"

        },

        {

            string: navigator.userAgent,

            subString: "Gecko",

            identity: "Mozilla",

            versionSearch: "rv"

        },

        {       // for older Netscapes (4-)

            string: navigator.userAgent,

            subString: "Mozilla",

            identity: "Netscape",

            versionSearch: "Mozilla"

        }

    ],

    dataOS : [

        {

            string: navigator.platform,

            subString: "Win",

            identity: "Windows"

        },

        {

            string: navigator.platform,

            subString: "Mac",

            identity: "Mac"

        },

        {

            string: navigator.platform,

            subString: "Linux",

            identity: "Linux"

        }

    ]



};

BrowserDetect.init();











// global variable

currentID = 000;



// get element by id independ on platform

// Starts

function GetElement(id)

{

    return document.getElementById ? document.getElementById(id) : document.all ? document.all(id) : document.layers ? document.layers[id] : null;

}

// Ends





// switch class of the object

// usage: switch('curclass', 'newclass');

// Starts

function SwitchClass(id, to)

{

    var obj = GetElement(id);

    if (obj)

        obj.className = to;

}

// Ends





// get querystring value from url

// usage: GetQueryString("idDetails");

// Starts

function GetQueryString(key)

{

    return GetQueryString2(key);

}



function GetQueryString2(key)

{

    var strUrl = "" + window.location;

    

    if( strUrl.indexOf( "wcs01" ) != -1 )

    {

        strUrl = strUrl.substring( 0, strUrl.indexOf( "wcs01" ) ) + ".asp?idWebPage=" + strUrl.substring( strUrl.indexOf( "wcs01" ) + 5, strUrl.length ).replace( /\//g, "&" );

    }



    temp = strUrl.split('?');

    if (temp.length == 1)

        temp = temp[0].split('&');

    else

        temp = temp[1].split('&');

    

    for (i=0; i<temp.length; i++)

    {

        var temp3 = new Array();

        temp3 = temp[i].split('=');

        if (temp3.length == 2 && temp3[0] == key)

        {

            return temp3[1];

        }

    }

}

// Ends





// Starts

function ShowHideElement(id)

{

    var prop;

    

    if (currentID != 000) {

        if (id != currentID) {

            GetElement(currentID).style.display = 'none'

        }

    }



    currentID = id;

    

    if (document.getElementById) 

        prop = document.getElementById(id).style;

    else if (document.all)

        prop = document.all[id].style;

    else if (document.layers)

        prop = document.layers[id];

    if (prop.display=='none')

        prop.display = '';

    else

        prop.display = 'none'

}

// Ends







/************************************************************************

// dropMenu

// usage: new dropMenu('tn15397', 'down', 170, 400, 'left', 'bottom', true)

//        onmouseover="dropMenu.showMenu('tn15397',this)"

//        onmouseout="dropMenu.hideMenu('tn15397')"

*************************************************************************/

dropMenu.Registry = []

dropMenu.animationLength = 250

dropMenu.hideDelay = 100

dropMenu.minCPUResolution = 10

dropMenu.aryShim = []

// constructor



//fires on instantiation of each new menu object

function dropMenu(id, parentid, dir, width, height, hAlign, vAlign, animation)

{

    this.ie = document.all ? 1 : 0

    this.ns4 = document.layers ? 1 : 0

    this.dom = document.getElementById ? 1 : 0

    if (this.ie || this.ns4 || this.dom) {

        this.id = id

        this.parentid = parentid

        this.level = dropMenu.getLevel( parentid )

        this.hAlign = hAlign

        this.vAlign = vAlign

        this.dir = dir

        this.animation = animation

        this.orientation = dir == "left" || dir == "right" ? "h" : "v"

        this.dirType = dir == "right" || dir == "down" ? "-" : "+"

        this.dim = this.orientation == "h" ? width : height

        this.hideTimer = false

        this.aniTimer = false

        this.open = false

        this.over = false

        this.startTime = 0

        this.gRef = "dropMenu_"+id

    

        this.width = width

        this.height = height

            

        eval(this.gRef+"=this")

        dropMenu.Registry[id] = this

        var d = document

        var strCSS = '<style type="text/css">';

        strCSS += '#' + this.id + 'Container{visibility:hidden; overflow:hidden; text-align:left;z-index:10000;}'

        strCSS += '#' + this.id + 'Container, #' + this.id + 'Content { position:absolute; width:' + width + 'px; height:' + height + 'px;'// clip:rect(0 ' + width + ' ' + height + ' 0);'

        strCSS += '}'

        strCSS += '</style>'

        d.write(strCSS)

        

        if( BrowserDetect.browser == "Explorer" && BrowserDetect.version > 5.5 && BrowserDetect.version < 7 )

            this.useDivShim = true;

        else

            this.useDivShim = false;

        

        if( this.useDivShim == true && !dropMenu.aryShim[ this.level ] ) {

            strDivShim = '<iframe id="MenuDivShim' + this.level + '" src="javascript:false;" scrolling="no" frameborder="0" style="position:absolute; display:block; z-index:9999; display:none"></iframe>';

            d.write( strDivShim );

            var divShimId = "MenuDivShim" + this.level;

            dropMenu.aryShim[ this.level ] = this.dom ? d.getElementById(divShimId) : this.ie ? d.all[divShimId] : d.layers[divShimId];

        }

        

        this.load()

    }

}



dropMenu.isParent = function( objid, checkid )

{

    while( objid != "" )

    {

        var obj = dropMenu.Registry[ objid ]

        objid = obj.parentid

        if( objid == checkid ) return true

    }

    return false

}





dropMenu.getLevel = function( objid )

{

    var intLevel = 1

    while( objid != "" )

    {

        intLevel += 1

        var obj = dropMenu.Registry[ objid ]

        objid = obj.parentid

    }

    return intLevel

}



dropMenu.prototype.load = function() 

{

    var d = document

    var lyrId1 = this.id + "Container"

    var lyrId2 = this.id + "Content"

    var obj1 = this.dom ? d.getElementById(lyrId1) : this.ie ? d.all[lyrId1] : d.layers[lyrId1]

    if (obj1) var obj2 = this.ns4 ? obj1.layers[lyrId2] : this.ie ? d.all[lyrId2] : d.getElementById(lyrId2)

    var temp

    if (!obj1 || !obj2) window.setTimeout(this.gRef + ".load()", 100)

    else {

        this.container = obj1

        this.menu = obj2

        this.style = this.ns4 ? this.menu : this.menu.style

        this.containerStyle = this.ns4 ? this.container : this.container.style

        this.homePos = eval("0" + this.dirType + this.dim)

        this.outPos = 0

        this.accelConst = (this.outPos - this.homePos) / dropMenu.animationLength / dropMenu.animationLength 



        if( this.useDivShim == true ) {

            var divShimId = "MenuDivShim" + this.level;

            this.divShim = this.dom ? d.getElementById(divShimId) : this.ie ? d.all[divShimId] : d.layers[divShimId];

            this.divShimStyle = this.ns4 ? this.divShim : this.divShim.style

            this.divShimStyle.filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';

        }

        

        // set event handlers.

        if (this.ns4) this.menu.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);

        this.menu.onmouseover = new Function("dropMenu.showMenu('" + this.id + "')")

        this.menu.onmouseout = new Function("dropMenu.hideMenu('" + this.id + "')")

        //set initial state

        this.endSlide()

    }

}



dropMenu.showMenu = function(id, object)

{

    var reg = dropMenu.Registry

    var obj = dropMenu.Registry[id]

    if( obj )

    {

        if (obj.container) {

            obj.over = true

            for (menu in reg) if (id != menu && reg[menu].level == obj.level) dropMenu.hide(menu)

            for (menu in reg) {

                if (id != menu && dropMenu.isParent( id, menu ) && reg[menu].hideTimer ) {

                    reg[menu].hideTimer = window.clearTimeout(reg[menu].hideTimer)

                }

            }

            if (obj.hideTimer) { reg[id].hideTimer = window.clearTimeout(reg[id].hideTimer) }

            

            if( object )

            {

                var left

                if( obj.hAlign == "right" ) 

                    left = findPosX(object) + object.offsetWidth

                else

                    left = findPosX(object);

                var top

                if( obj.vAlign == "top" )

                    top = findPosY(object)

                else

                    top = (findPosY(object) + object.offsetHeight);

                obj.containerStyle["left"] = obj.ns4 ? left : left + "px"

                obj.containerStyle["top"] = obj.ns4 ? top : top + "px"

                obj.containerStyle["position"] = "absolute"

                

                if( obj.useDivShim == true ) {

                    obj.divShimStyle["left"] = obj.containerStyle["left"];

                    obj.divShimStyle["top"] = obj.containerStyle["top"];

                    obj.divShimStyle["width"] = obj.container.offsetWidth + 'px';

                    obj.divShimStyle["height"] = obj.container.offsetHeight + 'px';

                    

                    var nodes = document.getElementById( obj.id + "Content" );

                    if( nodes ) {

                        nodes = nodes.childNodes;

                        for( var i=0; i < nodes.length; i++ ) {

                            var node = nodes[ i ];

                            if( node.tagName.toLowerCase() == "div" && node.className.toLowerCase() == "options" ) {

                                obj.divShimStyle["height"] = node.offsetHeight + 'px';

                                break;

                            }

                        }

                    }

                }

            }

            

            if (!obj.open && !obj.aniTimer) reg[id].startSlide(true)

        }

    }

    else

    {

        for (menu in reg) if (id != menu) dropMenu.hide(menu)

    }

}





dropMenu.showMenuPos = function(id, object, hAlign, vAlign)

{

    var reg = dropMenu.Registry

    var obj = dropMenu.Registry[id]

    if( obj )

    {

        if (obj.container) {

            obj.over = true

            for (menu in reg) if (id != menu && reg[menu].level == obj.level) dropMenu.hide(menu)

            for (menu in reg) {

                if (id != menu && dropMenu.isParent( id, menu ) && reg[menu].hideTimer ) {

                    reg[menu].hideTimer = window.clearTimeout(reg[menu].hideTimer)

                }

            }

            if (obj.hideTimer) { reg[id].hideTimer = window.clearTimeout(reg[id].hideTimer) }

            

            if( object )

            {

                var left

                if( hAlign == "right" ) 

                    left = findPosX(object) + object.offsetWidth

                else

                    left = findPosX(object);

                var top

                if( vAlign == "top" )

                    top = findPosY(object)

                else

                    top = (findPosY(object) + object.offsetHeight);

                obj.containerStyle["left"] = obj.ns4 ? left : left + "px"

                obj.containerStyle["top"] = obj.ns4 ? top : top + "px"

                obj.containerStyle["position"] = "absolute"

                

                if( obj.useDivShim == true ) {

                    obj.divShimStyle["left"] = obj.containerStyle["left"];

                    obj.divShimStyle["top"] = obj.containerStyle["top"];

                    obj.divShimStyle["width"] = obj.container.offsetWidth + 'px';

                    obj.divShimStyle["height"] = obj.container.offsetHeight + 'px';

                    

                    var nodes = document.getElementById( obj.id + "Content" );

                    if( nodes ) {

                        nodes = nodes.childNodes;

                        for( var i=0; i < nodes.length; i++ ) {

                            var node = nodes[ i ];

                            if( node.tagName.toLowerCase() == "div" && node.className.toLowerCase() == "options" ) {

                                obj.divShimStyle["height"] = node.offsetHeight + 'px';

                                break;

                            }

                        }

                    }

                }

            }

            

            if (!obj.open && !obj.aniTimer) reg[id].startSlide(true)

        }

    }

    else

    {

        for (menu in reg) if (id != menu) dropMenu.hide(menu)

    }

}





dropMenu.hideMenu = function(id)

{

    var obj = dropMenu.Registry[id]

    if( obj )

    {

        if (obj.container) {

            if (obj.hideTimer)

                window.clearTimeout(obj.hideTimer)

            obj.hideTimer = window.setTimeout("dropMenu.hide('" + id + "')", dropMenu.hideDelay);

        }

        

        var objid = obj.parentid

        while( objid != "" )

        {

            var obj = dropMenu.Registry[ objid ]

            

            if (obj.container) {

                if (obj.hideTimer)

                    window.clearTimeout(obj.hideTimer)

                obj.hideTimer = window.setTimeout("dropMenu.hide('" + objid + "')", dropMenu.hideDelay);

            }

            

            objid = obj.parentid

        }

        

    }

}



dropMenu.hideAll = function()

{

    for (menu in dropMenu.Registry)

    {

        dropMenu.hide(menu);

        if (menu.hideTimer)

            window.clearTimeout(menu.hideTimer);

    }

}



dropMenu.hide = function(id)

{

    var obj = dropMenu.Registry[id]

    obj.over = false

    if (obj.hideTimer) window.clearTimeout(obj.hideTimer)

    obj.hideTimer = 0

    if (obj.open && !obj.aniTimer) obj.startSlide(false)

}



dropMenu.prototype.startSlide = function(open) {

    this[open ? "onactivate" : "ondeactivate"]()

    this.open = open

    if (open) this.setVisibility(true)

    this.startTime = (new Date()).getTime() 

    this.aniTimer = window.setInterval(this.gRef + ".slide()", dropMenu.minCPUResolution)

}



dropMenu.prototype.slide = function() {

    var elapsed = (new Date()).getTime() - this.startTime

    if (elapsed > dropMenu.animationLength || this.animation == false) 

        this.endSlide()

    else {

        var d = Math.round(Math.pow(dropMenu.animationLength-elapsed, 2) * this.accelConst)

        if (this.open && this.dirType == "-") d = -d

        else if (this.open && this.dirType == "+") d = -d

        else if (!this.open && this.dirType == "-") d = -this.dim + d

        else d = this.dim + d

        this.moveTo(d)

    }

}



dropMenu.prototype.endSlide = function() {

    this.aniTimer = window.clearTimeout(this.aniTimer)

    this.moveTo(this.open ? this.outPos : this.homePos)

    if (!this.open) {

        this.setVisibility(false)

    }

    if ((this.open && !this.over) || (!this.open && this.over)) {

        this.startSlide(this.over)

    }

}



dropMenu.prototype.setVisibility = function(bShow) { 

    var s = this.ns4 ? this.container : this.container.style

    s.visibility = bShow ? "visible" : "hidden"

    //this.divShimStyle.display = bShow ? "" : "none"

    if( this.useDivShim == true ) {

        var reg = dropMenu.Registry

        if( bShow == false ) {

            for( id in reg ) {

                if( dropMenu.Registry[ id ].open && dropMenu.Registry[ id ].level == this.level ) {

                    return;

                }

            }

        }

        this.divShimStyle.display = bShow ? "block" : "none"

    }

}



dropMenu.prototype.moveTo = function(p) { 

    this.style[this.orientation == "h" ? "left" : "top"] = this.ns4 ? p : p + "px"

}



dropMenu.prototype.getPos = function(c) {

    return parseInt(this.style[c])

}



dropMenu.prototype.onactivate = function() {}

dropMenu.prototype.ondeactivate = function() {}



function findPosX(obj)

{

    var curleft = 0;

    if (obj.offsetParent)

    {

        while (obj.offsetParent)

        {

            curleft += obj.offsetLeft

            obj = obj.offsetParent;

        }

    }

    else if (obj.x)

        curleft += obj.x;

    return curleft;

}



function findPosY(obj)

{

    var curtop = 0;

    if (obj.offsetParent)

    {

        while (obj.offsetParent)

        {

            curtop += obj.offsetTop

            obj = obj.offsetParent;

        }

    }

    else if (obj.y)

        curtop += obj.y;

    return curtop;

}
