﻿/*********************************************************************************/
/*                  JomiTech Components For PHP Script File                      */
/*               Copyright © JomiTech 2007. All Rights Reserved.                 */
/*********************************************************************************/
var JTComboBoxList = new Array();
var JTComboBoxActive = null;

addEvent( window, "load", JTComboBoxOnLoad );

function JTComboBoxInitialize( id, jsOnChange, jsOnBlur, jsOnFocus )
{
	var comboBox = document.getElementById( id );
	var comboBoxContainer = document.getElementById( id + "_container" );

	comboBox.container = comboBoxContainer;

	JTComboBoxCleanup( id );

	comboBox.jsOnChange = jsOnChange;
	comboBox.jsOnBlur = jsOnBlur;
	comboBox.jsOnFocus = jsOnFocus;

    if( !JTPageLoaded )
        JTComboBoxList.push( id );
    else
        JTComboBoxLoad( id );

    eval( "window." + id + " = comboBox;" );
}

function JTComboBoxOnLoad()
{
	for( var i = 0; i < JTComboBoxList.length; ++i )
        JTComboBoxLoad( JTComboBoxList[ i ] );

    JTComboBoxList = new Array();
}

function JTComboBoxLoad( id )
{
    var comboBoxDropDownBox = document.getElementById( id + "_dropdownbox" );

    comboBoxDropDownBox.parentNode.removeChild( comboBoxDropDownBox );
    document.body.appendChild( comboBoxDropDownBox );
    comboBoxDropDownBox.style.zIndex = 1900;
}

function JTComboBoxCleanup( id )
{
	var node;
	var children = ( document.body.childNodes ) ? document.body.childNodes : document.documentElement.childNodes;

	id += "_dropdownbox";

	for( var i = 0; i < children.length; ++i )
	{
		node = children[ i ];
		if( node.id == id )
		{
			document.body.removeChild( node );
			break;
		}
	}
}

function JTComboBoxShowDropDownBox( id )
{
	var comboBox = document.getElementById( id );
	var comboBoxContainer = comboBox.container;
    var comboBoxDropDownBox = document.getElementById( id + "_dropdownbox" );
	var comboBoxDropDownBoxSizer = document.getElementById( id + "_dropdownboxsizer" );    

    comboBoxDropDownBox.style.left = ( getObjectScreenX( comboBoxContainer ) + 1 ) + "px";
	comboBoxDropDownBox.style.top = getObjectScreenY( comboBoxContainer ) + comboBoxContainer.offsetHeight + "px";	
    comboBoxDropDownBox.style.display = "block";
    
    comboBoxDropDownBoxSizer.style.width = ( comboBoxContainer.offsetWidth - 2 ) + "px"; 
    
    var ul = JTLocateFirstChildByTagName( comboBoxDropDownBox, "UL" );
    var items = ul.getElementsByTagName( "LI" );
    for( var i = 0; i < items.length; ++i )
    {
		var li = items[ i ];
		if( li.className.indexOf( "jtcomboboxitemselected" ) > -1 )
		{
			comboBoxDropDownBox.scrollTop = li.offsetTop;
			break;
		}
    }
    
    comboBoxDropDownBox.focus();
    comboBoxDropDownBox.onblur = JTComboBoxDropDownBlur;

    if( comboBox.jsOnFocus )
		comboBox.jsOnFocus( comboBox );
		
	JTComboBoxActive = comboBox;
}

function JTComboBoxDropDownBlur( e )
{
	JTComboBoxCloseDropDown();	
}

function JTComboBoxItemClick( id, e )
{
	var event = e || window.event;
	var comboBox = document.getElementById( id );
    var comboBoxDropDownBox = document.getElementById( id + "_dropdownbox" );
    var comboBoxItem = getEventTarget( event );
    var comboBoxItemSpan;
    if( comboBoxItem.tagName == "LI" )
		comboBoxItemSpan = JTLocateFirstChildByTagName( comboBoxItem, "SPAN" );
	else
		comboBoxItemSpan = comboBoxItem;

	if( comboBox.value != comboBoxItemSpan.innerHTML )
	{
		comboBox.value = comboBoxItemSpan.innerHTML;
		if( comboBox.jsOnChange )
			comboBox.jsOnChange( new JTEvent( comboBox, "change" ) );
	}

	JTComboBoxCloseDropDown();
}

function JTComboBoxCloseDropDown()
{
	if( JTComboBoxActive )
	{
		document.getElementById( JTComboBoxActive.id + "_dropdownbox" ).style.display = "none";

		if( JTComboBoxActive.jsOnBlur )
			JTComboBoxActive.jsOnBlur( JTComboBoxActive );

		JTComboBoxActive = null;
	}
}

function JTComboBoxItemOver( e )
{
	var event = e || window.event;
	var item = getEventTarget( event );
	if( item.tagName != "LI" )
		item = item.parentNode;

	item.className += " over";
}

function JTComboBoxItemOut( e )
{
	var event = e || window.event;
	var item = getEventTarget( event );
	if( item.tagName != "LI" )
		item = item.parentNode;
	
	item.className = item.className.replace( " over", "" );
}
