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

function MultiSelect(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.clearList = function() {
		sel_options = new Array();
		
		$("#"+this.id+" .multi_options").html("");

	}
	
	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 drop = document.createElement("div");
		drop.className = "multi_options";
		drop.style.width = this.width+"px";
		
		
		var drop_cont = document.createElement("div");
		drop_cont.className = "multi_container";
		
		
		for (i = 0; i < arr.length; i++) {
			var drop_item = document.createElement("div");	
			drop_item.className = "multi_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);
		
		if (arr.length == 0) {
			var drop_item = document.createElement("div");	
			drop_item.style.fontFamily = "Arial";
			drop_item.style.fontSize = "11px";
			drop_item.style.color = "#666";
			drop_item.innerHTML = default_op;
		}
		
		
		drop_cont.appendChild(drop_item);

		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+" .multi_options").html("");
		
		var drop_cont = document.createElement("div");
		drop_cont.className = "multi_container";
		
		$("#"+this.id+" .multi_options").append(drop_cont);
		
		


		
		
		var drop_item = document.createElement("div");
		drop_item.style.clear = "both";
		drop_item.style.height = "0px";
		$("#"+this.id+" .multi_container").append(drop_item);
		
		for (i = 0; i < arr.length; i++) {
			if (arr[i] != "") {
				
				var test = arr[i].match(/{(.*)}/);
				arr[i] = arr[i].replace(/{([^}]+)}/, "");
				arr[i] = arr[i].replace(/{/, "");
				arr[i] = arr[i].replace(/}/, "");
				
				if (test != null) {
					if (test[1] != "") {
						var drop_head = document.createElement("div");	
						drop_head.className = "multi_item_head";
						drop_head.innerHTML = test[1];
						$("#"+this.id+" .multi_container").append(drop_head);
					}
				}
				
				var drop_item = document.createElement("div");	
				drop_item.className = "multi_item";
				drop_item.alt = i;
				
				if (i == arr.length-1) {
					drop_item.style.border = "none";
				}
				
				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+" .multi_container").append(drop_item);
				
				$(".multi_options", cont).css("background-image", "none");	
			}
			
		}
		

		
		

		
	}
	
	this.disabled = function () {
		disabled = true;
		
		$(".multi_options", cont).css("opacity", "0.5");	
		$(".multi_options", cont).css("filter", "alpha(opacity=50)");	
		$(".multi_options", cont).css("background-image", "none");	

		if (tooltip != null) {
			cont.title = tooltip;
		}

		
	}	
	this.enabled = function () {
		disabled = false;
		$(".multi_options", cont).css("background-image", "url('"+path+"images/new_loader.gif')");	
		$(".multi_options", cont).css("opacity", "1");	
		$(".multi_options", cont).css("filter", "alpha(opacity=100)");	
		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();
	}

	

	
	
	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 != "multi_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);
			
			if (action_func != "") {
				action_func();
			}
		
		}
		
		
		

	}
	


	
	
}
