﻿
var m_oSelectoptions = null;
var m_oSelectarea = null;
var selects = new Array();

var selectRightSideWidth = 21;
var selectLeftSideWidth = 8;
var selectAreaHeight = 21;
var selectAreaOptionsOverlap = 2;
var imagesPath = "Images/";
	
var selectText = "please select";
selects = document.getElementsByTagName("select");

var mouseX, mouseY;
var m_oOptionWasSelected;

var browser = '';
var version = '';

if (browser == '')
{
     if (navigator.appName.indexOf('Microsoft') != -1)
          browser = 'IE'
     else if (navigator.appName.indexOf('Netscape') != -1)
          browser = 'Netscape'
     else browser = 'IE';
}
if (version == '')
{
    if(browser == 'IE') {
        var temp=navigator.appVersion.split("MSIE")
        version=parseInt(temp[1])

    }
    else {
     version= navigator.appVersion;
     var paren = version.indexOf('(');
     var whole_version = navigator.appVersion.substring(0,paren-1);
     version = parseInt(whole_version);
    }
}


function CloseSelectOptions(e) {
    if(m_oSelectoptions != null) {
        if (!e) var e = window.event;
        if(browser == 'IE') {
            if(e.srcElement != m_oSelectoptions && e.srcElement.className != "left" && e.srcElement.className != "center" && e.srcElement.className != "right" && e.srcElement.style.backgroundImage.indexOf("text_field_pixel.gif") == -1) {
               hideSelectDiv(e);
            }
        }
        else {
            if(e.target != m_oSelectoptions && e.target.className != "left" && e.target.className != "center" && e.target.className != "right" && e.target.style.backgroundImage.indexOf("text_field_pixel.gif") == -1) {
               hideSelectDiv(e);
            }
        }
    }
}

function selectEvent(e) {
	if (!e) var e = window.event;
	var thecode = e.keyCode;
	switch(thecode){
		case 40: //down
			var fieldId = this.parentNode.parentNode.id.replace(/sarea/g, "");
			var linkNo = 0;
			for(var q = 0; q < selects[fieldId].options.length; q++) {if(selects[fieldId].options[q].selected) {linkNo = q;}}
			++linkNo;
			if(linkNo >= selects[fieldId].options.length) {linkNo = 0;}
			selectMe(selects[fieldId].id, linkNo, fieldId);
			break;
		case 38: //up
			var fieldId = this.parentNode.parentNode.id.replace(/sarea/g, "");
			var linkNo = 0;
			for(var q = 0; q < selects[fieldId].options.length; q++) {if(selects[fieldId].options[q].selected) {linkNo = q;}}
			--linkNo;
			if(linkNo < 0) {linkNo = selects[fieldId].options.length - 1;}
			selectMe(selects[fieldId].id, linkNo, fieldId);
			break;
		default:
			break;
	}
}

function showOptions(g) {
    if ((m_oOptionWasSelected == null) || (m_oOptionWasSelected != true)) {
        elem = document.getElementById("optionsDiv" + g);
        if (elem.className == "optionsDivInvisible") {
            elem.className = "optionsDivVisible";
            if (browser == 'IE' && version <= 6) {
                elem.style.marginTop = "-5px";
            }
            m_oSelectoptions = elem;
            m_oSelectarea = document.getElementById("sarea" + g);
        }
        else if (elem.className == "optionsDivVisible") {
            elem.className = "optionsDivInvisible";
            m_oSelectarea = null;
            m_oSelectoptions = null;
        }
        elem.onmouseout = hideOptions;
    }
    m_oOptionWasSelected = false;
}

function hideOptionsDiv(g)
{
    document.getElementById("optionsDiv"+g).className = "optionsDivInvisible";
	m_oSelectarea = null;
	m_oSelectoptions = null;
	m_oOptionWasSelected = true;
}

AddHandler(window,"load",AttachBodyClick);


function AddHandler(target,eventName,handlerName)
{
    if ( target.addEventListener )
        target.addEventListener(eventName, handlerName, false);
    else if ( target.attachEvent )
        target.attachEvent("on" + eventName, handlerName);
    else
        target["on" + eventName] = handlerName;
}


function AttachBodyClick() {

    AddHandler(document.body,"mouseover",CloseSelectOptions);
}

function hideOptions(e) { //hiding the options on mouseout
	if (!e) var e = window.event;
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	if (reltg!= null)
	{
	    if (((reltg.nodeName != 'A') && (reltg.nodeName != 'DIV') && (reltg.nodeName != 'P')) || ((reltg.nodeName == 'A') && (reltg.className == "selectButton") && (reltg.nodeName != 'DIV'))) {
	        this.className = "optionsDivInvisible";
	    };
	    e.cancelBubble = true;
	    if (e.stopPropagation)
	        e.stopPropagation();
	}
}
function selectMe(selectFieldId,linkNo,selectNo) {
	//feed selected option to the actual select field
	selectField = document.getElementById(selectFieldId);
	for(var k = 0; k < selectField.options.length; k++) {
		if(k==linkNo) {selectField.options[k].selected = "selected";}
		else {selectField.options[k].selected = "";}
	}
	
	//show selected option
	textVar = document.getElementById("mySelectText"+selectNo);
	textVar = textVar.getElementsByTagName('div')[0];
	
	textVar.innerHTML = selectField.options[linkNo].text;
}

function selectOption(obj)
{
    obj.className = "OptionSelected";
    obj.getElementsByTagName("A")[0].className = "OptionSelected";
}

function unselectOption(obj)
{
    obj.className = "OptionUnselected";
    obj.getElementsByTagName("A")[0].className = "OptionUnselected";
}


function hideSelectDiv(e) {
    //debugger;
    var oScroll = ___getPageScroll();
    var oScrollX = oScroll[0];
    var oScrollY = oScroll[1];
    
    if (elem != null)
    if (elem.className=="optionsDivVisible")
    {
        var TheEventObject;
        if(e)
        {
            TheEventObject = e;
        }
        else if(window.event)
        {
            TheEventObject = window.event;
        }
        else
        {
            TheEventObject = null;
        }
        
        if (TheEventObject!= null)
            if (TheEventObject.pageX != null)
            {
                mouseX = e.pageX;
                mouseY = e.pageY;
            }
            else
            {
                mouseX = e.clientX + document.body.scrollLeft;
                mouseY = e.clientY + oScrollY;
            }
        
        if (mouseX>0 && mouseY>0)
        {
            mouseX = mouseX - 15;
            if ((m_oSelectarea!= null) && (m_oSelectoptions!=null))
            {
                oXY = findPosition(m_oSelectarea);
                oXY[0] = oXY[0]+document.body.scrollLeft;
                oXY[1] = oXY[1]+document.body.scrollTop;
                var oWidth = m_oSelectarea.offsetWidth + oXY[0];
                var oHeight = m_oSelectoptions.offsetHeight + m_oSelectarea.offsetHeight + oXY[1];
                
                if ((mouseX<oXY[0])||(mouseY<oXY[1])||(mouseX>oWidth) || (mouseY>oHeight))
                {
                    m_oSelectoptions.className = "optionsDivInvisible";
                    m_oSelectarea = null;
                    m_oSelectoptions = null;
                }
            }
        }
    }
}

function ___getPageScroll() {
    var xScroll, yScroll;
    if (self.pageYOffset) {
        yScroll = self.pageYOffset;
        xScroll = self.pageXOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict
        yScroll = document.documentElement.scrollTop;
        xScroll = document.documentElement.scrollLeft;
    } else if (document.body) {// all other Explorers
        yScroll = document.body.scrollTop;
        xScroll = document.body.scrollLeft;
    }
    arrayPageScroll = new Array(xScroll, yScroll);
    return arrayPageScroll;
}

function findPosition(obj) {
	var curleft = curtop = 0;
	var iLeft = iTop = 0;
	if (obj != null)
	{
	    try {
	        while (obj.offsetParent)
	        {
	            if (browser=="IE" && version==6)
	            {
	                if (obj.offsetLeft<0)
	                    iLeft += 0-obj.offsetLeft;
	                if (obj.offsetTop<0)
	                    iTop += 0-obj.offsetTop;
	            }       
	            curleft += obj.offsetLeft+(obj.offsetWidth-obj.clientWidth);
                curtop += obj.offsetTop;
		        obj = obj.offsetParent;
	        }
	    }
	    catch(ex) {
	    }
	}
	curleft += iLeft;
	curtop += iTop;
	return [curleft,curtop];
}


