﻿selectObject = function(id, varName, mouseoverclass) {
	if (!document.getElementById(id) || !varName) { return; }
	this.options = new Array();
	this.defaultOption = '';
	this.varName = varName;
	this.parentId = id;
	this.parentElement = document.getElementById(id);
	this.headId = id + '_head';
	this.listId = id + '_list';
	this.titleId = id + '_title';
	this.inputName = '';
	this.inputId = id +'_input';
	this.strutId = id + '_strut';
	
	this.mouseOverClass = mouseoverclass ? mouseoverclass : 'undermouse';
	this.onChangeHandler = '';
}
	
selectObject.prototype = {
	setFieldName: function(inputName){
		this.inputName = inputName;
	},
	addOption: function(value, title, defaultOption){
		this.options[value] = title;
		if (defaultOption == true)
			this.defaultOption = value;
	},
	setOnChangeHandler: function(handler){
		this.onChangeHandler = handler;
	},
	generateHTML: function(){
		var html, titlediv, headerlink, head, list, hiddeninput;
		
		titlediv = '<div id="' + this.titleId + '">' + ((this.defaultOption) ? this.options[this.defaultOption] : 'Select Value!' ) + '</div>';
		headerlink = '<a href="javascript:void(0);" onclick="' + this.varName + '.showList()"></a>';
		head = '<div id="' + this.headId + '">';
		head +=  headerlink + titlediv;
		head += '</div>'
		
		list = '<div id="' + this.listId + '" style="display:none;position:absolute;overflow:auto;z-index:20;">';
		//list="";
		for(var key in this.options){
			
			list += '<div value="' + key + '" onclick="' + this.varName + '.selectItem(this);" onmouseout="' + this.varName + '.mouseOverMove(this);" onmouseover="' + this.varName + '.mouseOverMove(this);">'
			list += this.options[key];
			list += '</div>';
		}
		//list+='</div>';
		list += '<div id="' + this.strutId + '"></div></div>';
		
		hiddeninput = (this.inputName) ? '<input type="hidden" id="' + this.inputId + '" name="' + this.inputName + '" value="' + this.defaultOption + '">' : '' ;
			
		html = head + list + hiddeninput;
		return html;
	},
	showList: function(){
		var listElement = document.getElementById(this.listId);
		listElement.style.display = (listElement.style.display == 'none') ? '' : 'none';
	},
	mouseOverMove: function(listItemElement)
	{
		listItemElement.className = (listItemElement.className == this.mouseOverClass) ? '' : this.mouseOverClass;
	},
	selectItem: function(listItemElement)
	{
		var titleElement = document.getElementById(this.titleId);
		var newValue = listItemElement.getAttribute('value');
		titleElement.innerHTML = this.options[newValue];
		titleElement.setAttribute('value', newValue);
		if (this.inputName)
			document.getElementById(this.inputId).value = newValue;
		if (document.getElementById(this.listId).style.display != 'none')
			this.showList();
		if (this.onChangeHandler)
			eval(this.onChangeHandler + '("'+ newValue +'")');
	},
	write: function()
	{
		this.parentElement.innerHTML = this.generateHTML();
	}
}

