// Droplist controller

var dlStates = new Array();
dlStates[0] = new Image();
dlStates[0].src = "/en/img/dropbtn.gif";
dlStates[1] = new Image();
dlStates[1].src = "/en/img/dropbtn_over.gif";
dlStates[2] = new Image();
dlStates[2].src = "/en/img/dropbtn_pressed.gif";

var dlists = new Array();
var sizey = new Array();
var minx = new Array();
var maxx = new Array();

function InitDropList(name) {
	// Registering the droplsit
	// First check if page is reloaded
	var isReload = false;
	var seekValue = "";
	try {
		var reloadHidden = document.getElementById("hdnPageReload").value.toString();
		if (reloadHidden == "1") {
			isReload = true;
			seekValue = document.getElementById(name+"_hidden").value.toString().toUpperCase();
		}
	} catch(errr) {
	}
	
	// Proceed
	dlists.push(document.getElementById(name));
	if (document.getElementById(name).getAttribute("restricted")) {
		sizey.push(parseInt(document.getElementById(name).getAttribute("restricted")));
	} else {
		sizey.push(0);
	}
	if (document.getElementById(name).getAttribute("minx")) {
		minx.push(parseInt(document.getElementById(name).getAttribute("minx")));
	} else {
		minx.push(0);
	}
	if (document.getElementById(name).getAttribute("maxx")) {
		maxx.push(parseInt(document.getElementById(name).getAttribute("maxx")));
	} else {
		maxx.push(0);
	}
	// Setting event handlers
	var dl_btn = document.getElementById(name+"_btn");
	dl_btn.onmouseover = DLMouseOver;
	dl_btn.onmouseout = DLMouseOut;
	dl_btn.onclick = DLClick;
	dl_btn.ondblclick = Dummy;
	var dl_list = document.getElementById(name+"_list");
	if (typeof dl_list.childNodes == "undefined") {
		var dlChildren =  dl_list.children;
	} else {
		var dlChildren =  dl_list.childNodes;
	}
	for (var i=0;i<dlChildren.length;i++) {
		var tempchild = dlChildren[i];
		if (tempchild.tagName && tempchild.tagName.toUpperCase() == "DIV") {
			tempchild.onmouseover = ItemMouseOver;
			tempchild.onmouseout = ItemMouseOut;
			tempchild.onclick = ItemClick;
			if (isReload) {
				if (tempchild.getAttribute("val")!=null && tempchild.getAttribute("val").toString().toUpperCase() == seekValue) {
					tempchild.className = "DropItemSelected";
					tempchild.setAttribute("active","1");
					try {
						document.getElementById(name+"_value").value = strippedHTML(tempchild.innerHTML);
					} catch(eee) {}
					try {
						document.getElementById(name+"_hidden").value = tempchild.getAttribute("val").toString();
					} catch(eee) {}
				} else if (tempchild.getAttribute("val")==null && strippedHTML(tempchild.innerHTML).toString().toUpperCase() == seekValue) {
					tempchild.className = "DropItemSelected";
					tempchild.setAttribute("active","1");
					try {
						document.getElementById(name+"_value").value = strippedHTML(tempchild.innerHTML);
					} catch(eee) {}
					try {
						document.getElementById(name+"_hidden").value = tempchild.getAttribute("val").toString();
					} catch(eee) {}
				} else if (tempchild.tagName.toString().toUpperCase() == "DIV") {
					tempchild.className = "DropItem";
					tempchild.setAttribute("active","0");
				}
			}
		}
	}
	document.body.onclick = HideAllDrops;
	window.onresize = HideAllDropsUncond;
}

function DLMouseOver(e) {
	if (typeof e == "undefined" || e == null) {
		var source = event.srcElement;
	} else {
		var source = e.target;
	}
	if (source.getAttribute("active") != "1") {
		source.src = dlStates[1].src;
	}
}

function DLMouseOut(e) {
	if (typeof e == "undefined" || e == null) {
		var source = event.srcElement;
	} else {
		var source = e.target;
	}
	if (source.getAttribute("active") != "1") {
		source.src = dlStates[0].src;
	}
}

function DLClick(e) {
	if (typeof e == "undefined" || e == null) {
		var source = event.srcElement;
	} else {
		var source = e.target;
	}
	// Toggle list
	var theList = document.getElementById(source.getAttribute("mylist")+"_list");
	if (theList.style.display != "block") {
		HideExplicit(theList.id);
		ShowList(theList.id);
		source.src = dlStates[2].src;
		source.setAttribute("active","1");
	} else {
		HideList(theList.id);
		source.src = dlStates[0].src;
		source.setAttribute("active","0");
	}
}

function ItemMouseOver(e) {
	if (typeof e == "undefined" || e == null) {
		var source = event.srcElement;
	} else {
		var source = e.target;
	}
	if (source.getAttribute("active") != "1") {
		source.className = "DropItemHover";
	}
}

function ItemMouseOut(e) {
	if (typeof e == "undefined" || e == null) {
		var source = event.srcElement;
	} else {
		var source = e.target;
	}
	if (source.getAttribute("active") != "1") {
		source.className = "DropItem";
	}
}

function ItemClick(e) {
	if (typeof e == "undefined" || e == null) {
		var source = event.srcElement;
	} else {
		var source = e.target;
	}
	// Mark
	var mylist = document.getElementById(source.offsetParent.getAttribute("mylist")+"_list")
	if (typeof mylist.childNodes == "undefined") {
		var dlChildren =  mylist.children;
	} else {
		var dlChildren =  mylist.childNodes;
	}
	for (var i=0;i<dlChildren.length;i++) {
		var tempchild = dlChildren[i];
		if (tempchild.tagName && tempchild.tagName.toUpperCase() == "DIV") {
			tempchild.setAttribute("active",((tempchild == source)?"1":"0"));
			tempchild.className = ((tempchild == source)?"DropItemSelected":"DropItem");
		}
	}
	// Copy value to input
	var myval = document.getElementById(source.offsetParent.getAttribute("mylist")+"_value");
	if (myval.tagName.toUpperCase() == "INPUT") {
		myval.value = strippedHTML(source.innerHTML);
	} else {
		myval.innerHTML = source.innerHTML;
	}
	var myhide = document.getElementById(source.offsetParent.getAttribute("mylist")+"_hidden");
	
	if (myhide != null && typeof myhide != "undefined") {
		myhide.value = source.getAttribute("val").toString();
	}
	// Close droplist
	var mybtn = document.getElementById(source.offsetParent.getAttribute("mylist")+"_btn");
	mybtn.src = dlStates[0].src;
	HideList(source.offsetParent.getAttribute("mylist")+"_list");
	// Check specials
	if (source.getAttribute("special")!=null) {
		// Has special function
		switch (source.getAttribute("special")) {
			case "manualevent":
				window.setTimeout(source.getAttribute("eventfunc") + "", 1);
				break;
			case "ajax":
				window.setTimeout(source.getAttribute("ajaxfunc").toString() + "", 1);
				break;
			case "1":
				// Step 2 - show states
				document.getElementById("statelabel").style.display = "inline";
				document.getElementById("state").style.display = "block";
				break;
			case "0":
				// Step 2 - hide states
				document.getElementById("statelabel").style.display = "none";
				document.getElementById("state").style.display = "none";
				break;
		}
	}
	if (source.getAttribute("IsComprehenssive")!=null) {
		switch (source.getAttribute("IsComprehenssive").toString().toUpperCase()) {
			case "TRUE":
				var inType = document.getElementById("insuranceType_hidden").value.toString();
				if (inType == "2") {
					// Autoselect comprehensive
					alert("This car type must have 'Comprehensive' insurance type!");
					var clickobj = new Object();
					clickobj.srcElement = document.getElementById("comprehensiveInsurance");
					clickobj.target = document.getElementById("comprehensiveInsurance");
					radioClick(clickobj);
				}
				break;
		}
	}
}

function strippedHTML(source) {
	var tempstr = "";
	var rx = /&amp;/;
	tempstr = source.replace(rx,"&");
	rx = /&nbsp;/;
	tempstr = tempstr.replace(rx," ");
	rx = /<br>/;
	tempstr = tempstr.replace(rx," ");
	rx = /<br \/>/;
	tempstr = tempstr.replace(rx," ");
	return tempstr;
}

function ShowList(which) {
	var list = document.getElementById(which);
	list.style.display = "block";
	list.style.top = "-5000px";
	list.style.left = "-5000px";
	setTimeout("PositionList(document.getElementById('"+which+"'));",20);
}

function HideList(which) {
	var list = document.getElementById(which);
	list.style.display = "none";
}

function getSizeRestriction(name) {
	for (var i=0;i<dlists.length;i++) {
		if (dlists[i] == document.getElementById(name)) {
			// Found
			return sizey[i];
		}
	}
	return 0;
}

function getMinimumX(name) {
	for (var i=0;i<dlists.length;i++) {
		if (dlists[i] == document.getElementById(name)) {
			// Found
			return minx[i];
		}
	}
	return 0;
}

function getMaximumX(name) {
	for (var i=0;i<dlists.length;i++) {
		if (dlists[i] == document.getElementById(name)) {
			// Found
			return maxx[i];
		}
	}
	return 0;
}

function getTotalHeight(dlname) {
	var mylist = document.getElementById(dlname+"_list");
	if (typeof mylist.childNodes == "undefined") {
		var dlChildren =  mylist.children;
	} else {
		var dlChildren =  mylist.childNodes;
	}
	var result = 0;
	for (var i=0;i<dlChildren.length;i++) {
		var tempchild = dlChildren[i];
		if (tempchild.tagName && tempchild.tagName.toUpperCase() == "DIV") {
			result += tempchild.offsetHeight+1;
		}
	}
	return result;
}

function getMaxWidth(dlname) {
	var mylist = document.getElementById(dlname+"_list");
	if (typeof mylist.childNodes == "undefined") {
		var dlChildren =  mylist.children;
	} else {
		var dlChildren =  mylist.childNodes;
	}
	var result = 0;
	for (var i=0;i<dlChildren.length;i++) {
		var tempchild = dlChildren[i];
		if (tempchild.tagName && tempchild.tagName.toUpperCase() == "DIV") {
			if (tempchild.offsetWidth > result) {
				result = tempchild.offsetWidth+10;
			}
		}
	}
	return result;
}

function PositionList(o) {
	var staticElem = o.getAttribute("mylist");
	o.style.left = YKM.getRealX(staticElem)+"px";
	o.style.top = (YKM.getRealY(staticElem)+22)+"px";
	// Check size
	var sr = getSizeRestriction(staticElem);
	if (sr > 0) {
		if (o.offsetHeight >= sr) {
			o.style.height = sr + "px";
		} else {
			o.style.height = getTotalHeight(staticElem) + "px";
		}
	} else {
	}
	// Check X restrictions
	var MIx = getMinimumX(staticElem);
	var MAx = getMaximumX(staticElem);
	var MAX = getMaxWidth(staticElem);
	if (MAx>0) {
		// Maximum restricted
		if (MIx>0) {
			// Minimum restricted
			if (MAX<MIx) {
				o.style.width = MIx + "px";
			} else if (MAX>MIx && MAX<MAx) {
				o.style.width = (MAX+20) + "px";
			} else {
				o.style.width = MAx + "px";
			}
		}
	} else {
		// Maximum not restricted
		if (MIx>0) {
			// Minimum restricted
			if (MAX<MIx) {
				o.style.width = MIx + "px";
			} else {
				o.style.width = (MAX+20) + "px";
			}
		} else {
			// No restrictions
		}
	}
}

function HideAllDrops(e) {
	if (typeof e == "undefined" || e == null) {
		var source = event.srcElement;
	} else {
		var source = e.target;
	}
	var valid = true;
	for (var i=0;i<dlists.length;i++) {
		if (YKM.isChildOf(source,dlists[i]) || YKM.isChildOf(source,document.getElementById(dlists[i].id+"_list"))) {
			valid = false;
			break;
		}
	}
	if (valid) {
		for (var i=0;i<dlists.length;i++) {
			document.getElementById(dlists[i].id+"_list").style.display = "none";
			document.getElementById(dlists[i].id+"_btn").src = dlStates[0].src;
		}
	}
	if (typeof _calHideAllCals != "undefined") {
		_calHideAllCals(source);
	}
}

function HideAllDropsUncond() {
	for (var i=0;i<dlists.length;i++) {
		document.getElementById(dlists[i].id+"_list").style.display = "none";
		document.getElementById(dlists[i].id+"_btn").src = dlStates[0].src;
	}
}

function HideExplicit(exception) {
	var ex = document.getElementById(exception);
	for (var i=0;i<dlists.length;i++) {
		if (document.getElementById(dlists[i].id) != ex) {
			document.getElementById(dlists[i].id+"_list").style.display = "none";
			document.getElementById(dlists[i].id+"_btn").src = dlStates[0].src;
		}
	}
}


