var shoppingList = new Array();


/*
From the moment the Model is changed, the output from an Frame number lookup is cleared !
*/
function clearFrameOutput() {
	document.getElementById("frameP").value = "";
	document.getElementById("frameS").value = "";
	mFrameSuffix = "";
	mName = "";
	mType = "";
	mOption = "";
}

function setTypes() {
	clearEngineWindow();
	document.getElementById("serials").style.visibility = "hidden";
	document.getElementById("types").options.length = 0;
	var selIndex = document.getElementById("model").selectedIndex;
	var c = 0;
	var typesArray = m[document.getElementById("model").options[selIndex].value];
	var previousType = "";
	for (var i = 0; i < typesArray.length; i++) {
		var t = typesArray[i];
		if (t.cmodtypengn != previousType) {
			document.getElementById("types").options[c] = new Option(t.cmodtypengn,t.cmodtypengn);
			c++;
		}
		previousType = t.cmodtypengn;
	}
}

function setModels() {
	/* var is = new Is();
	if (!is.ie4up) {
		alert("This section is only supported in Internet Explorer 4 and higher.");
		history.go(-1);
		return;
	}
	*/

	document.getElementById("serials").style.visibility = "hidden";
	document.getElementById("model").options.length = 0;
	var c = 0;
	for (var i in m) {
		document.getElementById("model").options[c] = new Option(i,i);
		if (c == 0) {
			document.getElementById("model").options[c].selected = true;
		}
		c++;
	}
	setTypes();
}

function clearEngineWindow() {
	document.getElementById("enginefrm").src = "empty.html";
	document.getElementById("serials").style.visibility = "hidden";	
}

function setEngineDataVisible() {
	var selIndex = document.getElementById("model").selectedIndex;
	var selectedModel = document.getElementById("model").options[selIndex].value;
	var selectedType = document.getElementById("types").options[document.getElementById("types").selectedIndex].value;
	var selectedNpl = "";
	if (selectedTypesArray.length == 1) {
		selectedNpl = selectedTypesArray[0].npl;
	}
	else {
		selectedNpl = selectedTypesArray[document.getElementById("serialNumbers").selectedIndex].npl;
	}
	//document.getElementById.enginefrm.src = "engine.jsp?model="+selectedModel+"&type="+selectedType+"&npl="+selectedNpl+"&lang="+isolang;
	openWin(selectedModel,selectedType,selectedNpl);
}

var selectedTypesArray;

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function setSerialsVisible() {
	
	if(document.getElementById("serials").style.visibility == "visible" && document.getElementById("serialNumbers").selectedIndex != -1) {
		//alert("Trying to open pop-up");
		setEngineDataVisible();
		//alert("POPUP open");
		return;		// END THIS METHOD !
	}
	
	// multiple serial numbers available for the selected type? -> show these serial numbers.
	var ta = new Array();
	var selIndex = document.getElementById("model").selectedIndex;
	var count = 0;
	var typesArray = m[document.getElementById("model").options[selIndex].value];
	var selTypeIndex = document.getElementById("types").selectedIndex;
	if (selTypeIndex == -1) {
		alert(Pleaseselectthecorrecttype);
		return;
	}
	var selectedType = document.getElementById("types").options[selTypeIndex].value
	for (var i = 0; i < typesArray.length; i++) {
		var t = typesArray[i];
		if (t.cmodtypengn == selectedType) {
			ta[count] = t;
			count++;
		}
	}
	selectedTypesArray = ta;
	if (ta.length > 1) {
		document.getElementById("serialNumbers").options.length = 0;
		for (var i = 0; i < ta.length; i++) {
			var t = ta[i];
			var text = t.nfrmpf+" - "+t.nserepcfr+" - "+t.nserepcto; 
			//Note: in mozilla browsers, multiple spaces are showed as one space in the options field
			document.getElementById("serialNumbers").options[i] = new Option(text, text);
			if(mFrameSuffix != "") {			
				var frameprefix_input = trim(document.getElementById("frameP").value);
				var frameprefix = trim(t.nfrmpf);
				var serial_from = new Number(t.nserepcfr);
				var serial_to = new Number(t.nserepcto);
				var serial_input = new Number(mFrameSuffix);
				if(serial_from < serial_input && serial_input < serial_to) {
					if (frameprefix == frameprefix_input){
						document.getElementById("serialNumbers").selectedIndex = i;
					}
				}
				setEngineDataVisible();
			}
		}		
		document.getElementById("serials").style.visibility = "visible";	
	}
	else {
		// immediately show the selected mt.
		document.getElementById("serials").style.visibility = "hidden";
		setEngineDataVisible();
	}
}

function openWin(model,type,npl) {
	partswindow = window.open("/engines/PartSelection.jsp?model="+model+"&type="+type+"&npl="+npl+"&lang="+isolang,"partselectionwindow","menubar=no,scrollbars=yes,width=800,height=600,resizable=yes");
}

function closePartsWindow() {
	if (typeof(partswindow) != "undefined") {
		try {
			partswindow.close();
		}
		catch (closeEx) {
		}
	}
}

function openShoppingList() {
	slwindow = window.open("shoppinglist.jsp?lang="+isolang,"shoppinglistwindow","menubar=no,scrollbars=yes,width=700,height=500,resizable=yes");
}

function preLoadShoppingList() {
	document.getElementById("enginefrm").src = "shoppinglist.jsp?lang="+isolang+"&print=ok";
}

function addPartToShoppingList(partAdd,add) {
	addPartToShoppingListLong(partAdd.partId,partAdd.partDescription,partAdd.npl,
	partAdd.nplblk,partAdd.nplref,partAdd.nplpartrefseq,partAdd.qty,partAdd.price,partAdd.currency,add);
}

// if add = true -> add else remove part.
function addPartToShoppingListLong(partid,partdescription,nplVal,nplblkVal,nplrefVal,nplpartrefseqVal,qtyVal,price,currency,add) {
	var partAdd = new Part(partid,partdescription,nplVal,nplblkVal,nplrefVal,nplpartrefseqVal,qtyVal,"","",price,currency);
	var slLength = shoppingList.length;
	// if it is already in the shoppinglist -> update it.
	var found = false;
	var i = 0;
	while (!found) {
		if (i >= slLength) {
			found = true;
			shoppingList[slLength] = partAdd;
		}
		else if (theSame(partAdd,shoppingList[i])) {
			if (add) {
				shoppingList[i] = partAdd;
			}
			else { // remove
				for (var j = i; j < slLength-1; j++) {
					shoppingList[j] = shoppingList[j+1];
				}
				shoppingList.length--;
			}
			found = true;
		}
		else {
			i++;
		}
	}
}

function theSame(part1, part2) {
	if (part1.partId == part2.partId) {   // make complete
		return true;
	}
	else return false;
}

function showShoppingList() {
	/*
	in comment since 20090421 request Seddons
	if (window.shoppingList.length > 0)  {
		openShoppingList();
		if (!confirm(Thereisstillashoppinglistpresent)) {
			try {
				slwindow.printShoppingList(window.shoppingList);
			}
			catch (exp) {
			}
			slwindow.focus();
		}
		else {
			slwindow.close();
		}
	}*/
}
