// JavaScript Document
// WRITTEN FOR IMPERIAL SELECT //
// DEPENDENT ON jquery.js //
var IE = document.all?true:false
var drops = new Array();

function DropDown(width, arr, val_arr, default_op, tooltip) {
	this.width = width;
	var arr = arr;
	var val_arr = val_arr;
	

	
	this.id = "";
	drops[drops.length] = this;
	
	
	var cont = "";
	
	var sel_options = Array();

	var disabled = false;
	
	
	var action_func = "";
	
	this.setAction = function (func) {
		action_func = func;
	}


	this.getOptions = function () {
		var input_str = "";
		for (i = 0; i < sel_options.length; i++) {
			if (i == sel_options.length-1) {
				input_str += sel_options[i];	
			}
			else {
				input_str += sel_options[i]+",";
			}
		}
		
		return input_str;
		
	}
	
	this.resetDrop = function () {
		sel_options = Array();	
		
		if (default_op != "") {
			$("#"+this.id+" .drop_left").html(default_op);
		}
		else {
			$("#"+this.id+" .drop_left").html("(0) options selected");	
		}
		this.disabled();
	}
	this.init = function (init_arr) {
		sel_options = init_arr;
		
		$("#"+this.id+" .drop_item").each(function() {
												    if (doCheck(val_arr[$("input", this).attr("alt")])) {
														$("input", this).attr("checked", "true");	
														
														$(".drop_left", $(this).parent().parent().parent()).html("("+sel_options.length+") options selected");
													}
												   });
	}
	
	this.render = function (container) {
		this.id = container;
		
		
		cont = document.createElement("div");
		
		
		var left = document.createElement("div");
		left.className = "drop_left";
		left.style.width = (this.width-12)+"px";
		


		if (IE) {
			left.onclick = this.showOptions;
		}
		else {
			left.addEventListener("click", this.showOptions, true);
		}
		
		
		if (default_op != "") {
			left.innerHTML = default_op;	
		}
		else {
			left.innerHTML = "(0) options selected";
		}
		
		var right =document.createElement("div");
		right.className = "drop_right";
		
		if (IE) {
			right.onclick = this.showOptions;	
		}
		else {
			right.addEventListener("click", this.showOptions, true);
		}
		

		
		var clear = document.createElement("div");
		clear.style.clear = "both";
		clear.style.height = "0px";
		
		var drop = document.createElement("div");
		drop.className = "drop_options";
		
		
		var drop_cont = document.createElement("div");
		drop_cont.className = "drop_container";
		
		
		for (i = 0; i < arr.length; i++) {
			var drop_item = document.createElement("div");	
			drop_item.className = "drop_item";
			drop_item.alt = i;
			if (IE) {
				drop_item.onclick = this.setOption;
			}
			else {
				drop_item.addEventListener("click", this.setOption, true);
			}
			
			var check_temp = document.createElement("input");
			check_temp.type = "checkbox";
			
			check_temp.style.cssFloat = "left";
			check_temp.style.styleFloat = "left";
			
			
			drop_item.appendChild(check_temp);
			
			var check_val = document.createElement("div");
			check_val.style.cssFloat = "left";
			check_val.style.styleFloat = "left";
			check_val.style.marginLeft = "10px";
			check_val.innerHTML = arr[i];
			check_val.style.paddingTop = "3px";
			
			drop_item.appendChild(check_val);
			
			var clear_item = document.createElement("div");
			clear_item.style.clear = "both";
			drop_item.appendChild(clear_item);
			
			
			
			drop_cont.appendChild(drop_item);
			
		}
		drop.appendChild(drop_cont);
		
		var temp = document.createElement("div");
		temp.style.textAlign = "center";
		temp.style.paddingBottom = "5px";
		temp.style.paddingTop = "5px";
		
		var save = document.createElement("img");
		save.src = path+"images/save.jpg";
		save.style.cursor = "pointer";
		
		if (IE) {
			save.onclick = this.saveOptions;	
		}
		else {
			save.addEventListener("click", this.saveOptions, true);
		}
		temp.appendChild(save);
		
		drop.appendChild(temp);
		
		
		cont.appendChild(left);
		cont.appendChild(right);
		cont.appendChild(clear);
		
		cont.appendChild(drop);
		
		document.getElementById(container).appendChild(cont);
		
		
		if (arr.length == 0) {
			this.disabled();	
		}

		
	}
	
	
	this.updateContent = function (input_arr, input_val_arr, default_op) {

		arr = input_arr;
		val_arr = input_val_arr;

		$("#"+this.id+" .drop_options").html("");
		
		var drop_cont = document.createElement("div");
		drop_cont.className = "drop_container";
		
		$("#"+this.id+" .drop_options").append(drop_cont);
		
		
		var drop_item = document.createElement("div");
		drop_item.innerHTML = "*select some options below and click 'save' to continue";
		drop_item.style.styleFloat = "left";
		drop_item.style.cssFloat = "left";
		drop_item.style.padding = "6px";
		drop_item.style.marginBottom = "10px";
		$("#"+this.id+" .drop_container").append(drop_item);
		
		var drop_item = document.createElement("div");
		drop_item.innerHTML = "close X";
		drop_item.style.styleFloat = "right";
		drop_item.style.cssFloat = "right";
		drop_item.style.padding = "6px";
		drop_item.style.marginBottom = "10px";
		drop_item.style.cursor = "pointer";
		drop_item.className = "red_link";
		if (IE) {
			drop_item.onclick = this.terminate;
		}
		else {
			drop_item.addEventListener("click", this.terminate, true);
		}
		
		$("#"+this.id+" .drop_container").append(drop_item);
		
		var drop_item = document.createElement("div");
		drop_item.style.clear = "both";
		drop_item.style.height = "0px";
		$("#"+this.id+" .drop_container").append(drop_item);
		
		for (i = 0; i < arr.length; i++) {
			if (arr[i] != "") {
				var drop_item = document.createElement("div");	
				drop_item.className = "drop_item";
				drop_item.alt = i;
				if (IE) {
					drop_item.onclick = this.setOption;
				}
				else {
					drop_item.addEventListener("click", this.setOption, true);
				}
				
				var check_temp = document.createElement("input");
				check_temp.type = "checkbox";
				check_temp.style.cssFloat = "left";
				check_temp.style.styleFloat = "left";
	
				
				
				drop_item.appendChild(check_temp);
				
				var check_val = document.createElement("div");
				check_val.style.cssFloat = "left";
				check_val.style.marginLeft = "10px";
				check_val.innerHTML = arr[i];
				check_val.style.paddingTop = "3px";
				check_val.style.styleFloat = "left";

				
				drop_item.appendChild(check_val);
				
				var clear_item = document.createElement("div");
				clear_item.style.clear = "both";
				drop_item.appendChild(clear_item);
				
				
				
				$("#"+this.id+" .drop_container").append(drop_item);
			}
			
		}
		
		var temp = document.createElement("div");
		temp.style.textAlign = "center";
		temp.style.paddingBottom = "5px";
		temp.style.paddingTop = "5px";
		
		var save = document.createElement("img");
		save.src = path+"images/save.jpg";
		save.style.cursor = "pointer";
		
		if (IE) {
			save.onclick = this.saveOptions;	
		}
		else {
			save.addEventListener("click", this.saveOptions, true);
		}
		temp.appendChild(save);
		
		$("#"+this.id+" .drop_options").append(temp);
		
		

		
	}
	
	this.disabled = function () {
		disabled = true;
		
		$(".drop_left", cont).css("background-image", "url("+path+"images/dropdown/back_over.jpg)");	
		$(".drop_left", cont).css("color", "#9d9e9e");	
		
		if (tooltip != null) {
			cont.title = tooltip;
		}

		
	}	
	this.enabled = function () {
		disabled = false;
		$(".drop_left", cont).css("background-image", "url("+path+"images/dropdown/back.jpg)");	
		$(".drop_left", cont).css("color", "#626262");	
		
		cont.title = "";


	}
	
	this.terminate = function (e) {
		var obj = "";
		if (e != null) {
			obj = e.target;	
		}
		else {
			obj = event.srcElement;
		}
			
		var id = obj.parentNode.parentNode.parentNode.parentNode.id;
			
		$("#"+id+" .drop_options").fadeOut(200);
		$("#"+id+" .drop_right").css("background-image", "url("+path+"images/dropdown/arrow.jpg)");
		$("#"+id+" .drop_overlay").remove();	
	}
	
	
	this.closeDrop = function () {
		$("#"+this.id+" .drop_options").fadeOut(200);
		$("#"+this.id+" .drop_right").css("background-image", "url("+path+"images/dropdown/arrow.jpg)");
		$("#"+this.id+" .drop_overlay").remove();
	}
	
	this.saveOptions = function (e) {
		if (!disabled) {
			var obj = "";
			if (e != null) {
				obj = e.target;	
			}
			else {
				obj = event.srcElement;
			}
				
			var id = obj.parentNode.parentNode.parentNode.parentNode.id;
	
			$("#"+id+" .drop_right").css("background-image", "url("+path+"images/dropdown/arrow.jpg)");
			$("#"+id+" .drop_options").slideUp(50);	
			$("#"+id+" .drop_overlay").remove();
			
			if (action_func != "") {
				action_func();
			}
			
			
		}
	
	}

	
	this.showOptions = function (e) {
		
		if (!disabled) {
			
			var obj = "";
			if (e != null) {
				obj = e.target;	
			}
			else {
				obj = event.srcElement;
			}
			
			var id = obj.parentNode.parentNode.id;
			if ($("#"+id+" .drop_options").css("display") == "none") {
				
				for (i = 0; i < drops.length; i++) {
					drops[i].closeDrop();	
				}
				$("#"+id+" .drop_options").fadeIn(200);
				
				$("#"+id+" .drop_right").css("background-image", "url("+path+"images/dropdown/arrow_over.jpg)");
				
				current_drop = this;
				
				var div = document.createElement("div");
				div.className = "drop_overlay";

				var temp = $(cont).offset().left;
				div.style.marginLeft = "-"+temp+"px";
				
				$("#"+id+" .drop_options").css("left", $(cont).position().left+"px");
				cont.appendChild(div);
			}
			else {
				$("#"+id+" .drop_options").fadeOut(200);
				$("#"+id+" .drop_right").css("background-image", "url("+path+"images/dropdown/arrow.jpg)");
				
				current_drop = "";
			}
		
		}
		
		
			
	}
	
	
	function doCheck(option) {
		
		for (s = 0; s < sel_options.length; s++) {
			if (sel_options[s] == option) {
				return true;	
			}
		}	
		return false;
	}
	
	function findMatch (option) {
		for (i = 0; i < sel_options.length; i++) {
			if (sel_options[i] == option) {
				sel_options.splice(i, 1);
				return true;	
			}
		}
	}
	
	this.setOption = function (e) {
		if (!disabled) {
			var obj = "";
			if (e != null) {
				obj = e.target;	
			}
			else {
				obj = event.srcElement;
			}
			
			if (obj.checked == true) {
				obj.checked = false;	
			}
			else {
				obj.checked = true;
			}	
			
			while (obj.className != "drop_item") {
				obj = obj.parentNode;	
			}
			
			if (!findMatch(val_arr[obj.alt])) {
				sel_options[sel_options.length] = val_arr[obj.alt];
					
			}
			
			var value = "("+sel_options.length+") options selected";
			
			if (sel_options.length == 0) {
				if (default_op != "") {
					value = default_op;
				}
				else {
					value = "(0) options selected";	
				}	
			}
			
			if ($("input", obj).attr("type") == "checkbox") {
				if ($("input", obj).attr("checked") == true) {
					$("input", obj).attr("checked", false);	
				}
				else {
					$("input", obj).attr("checked", true);	
				}
			}
			
			if (obj.parentNode.type == "checkbox") {
				if ($("input", obj.parentNode).attr("checked") == true) {
					$("input", obj.parentNode).attr("checked", false);	
				}
				else {
					$("input", obj.parentNode).attr("checked", true);	
				}
			}
			
			var id = obj.parentNode.parentNode.parentNode.parentNode.id;
			$("#"+id+" .drop_left").html(value);
		
		}

	}
	


	
	
}
