
function main(puCtry, puCty, puLoc, doCtry, doCty, doLoc) {

	ppuCtry = puCtry;
	ppuCty = puCty;
	ppuLoc = puLoc;

	pdoCtry = doCtry;
	pdoCty = doCty;
	pdoLoc = doLoc;

	LoadPUCountries();
	LoadDOCountries();

	while (!isArray(countries)) {
		setTimeout('', 100);
	}
	if (ppuCtry)	{
		PreselectPUCountry(ppuCtry);
		puCtryChange();
	}

}

function LoadPUCountries() {

	for (var i=document.getElementById("puCtry").options.length-1; i>=0; i--){
		 document.getElementById("puCtry").options[i] = null;
	}

	document.getElementById("puCtry").options[0] = new Option("select a country", "select a country");

	while (!isArray(countries)) {
		setTimeout("",100);
	}
	for(i = 0; i < countries.length; i++){
		document.getElementById("puCtry").options[document.getElementById("puCtry").options.length]=
		new Option(countries[i][0], countries[i][1]);
	}

	document.getElementById("puCtry").disabled = false;

	checkSubmit();

}

function LoadDOCountries() {

	for (var i=document.getElementById("doCtry").options.length-1; i>=0; i--){
		 document.getElementById("doCtry").options[i] = null;
	}
	
	document.getElementById("doCtry").options[0] = new Option("select a country", "select a country");
	
	while (!isArray(countries)) {
		setTimeout("",100);
	}
	for(i = 0; i < countries.length; i++){
		document.getElementById("doCtry").options[document.getElementById("doCtry").options.length]=
		new Option(countries[i][0], countries[i][1]);
	}

	document.getElementById("doCtry").disabled = false;

	checkSubmit();

}

function puCtryChange() {

	locations = '';
	disableElement("puLoc");

	if (document.getElementById("puCtry").selectedIndex != 0) {
		showNavigationBar('on');
		LoadPUCities();
	} else {
		showNavigationBar('off');
		disableElement("puCty");
	}

	checkSubmit();
	ppuCtry = '';

}

function doCtryChange() {

	if (document.getElementById("doCtry").selectedIndex != 0) {
		LoadDOCities();
	} else {
		disableElement("doCty");
		disableElement("doLoc");
	}

	checkSubmit();
	pdoCtry = '';

}

function puCtyChange() {

	if (document.getElementById("puCty").selectedIndex != 0) {
		LoadPULocations();
		document.getElementById("puLoc").disabled = false;
	} else {
		disableElement("puLoc");
		disableElement("doLoc");
	}

	checkSubmit();
	ppuCty = '';

}

function doCtyChange() {

	if ((document.getElementById("doCty").selectedIndex != 0) && (document.getElementById("puLoc").selectedIndex != 0)) {
		LoadDOLocations();
		document.getElementById("doLoc").disabled = false;
	} else {
		disableElement("doLoc");
	}

	checkSubmit();
	pdoCty = '';

}

function puLocChange() {

	if ((document.getElementById("doCty").selectedIndex != 0) && (document.getElementById("puLoc").selectedIndex != 0)) {
		LoadDOLocations();
		document.getElementById("doLoc").disabled = false;
	} else {
		disableElement("doLoc");
	}

	checkSubmit();
	ppuLoc = '';

}


function doLocChange() {

	checkSubmit();

}

function LoadPUCities() {

	loadStatus("puCty");

	container = document.getElementById("jscontainer");
	container.innerHTML = "";

	selectBoxId = "puCty";

	var obj = document.createElement("script");
	obj.src = 'http://www.easyterra.com/javascript/javascript_cities.php?Ctry_code=' + document.getElementById("puCtry").options[document.getElementById("puCtry").selectedIndex].value;
	obj.type= "text/javascript";
	container.appendChild(obj);

}

function LoadDOCities() {

	loadStatus("doCty");

	container = document.getElementById("jscontainer2");
	container.innerHTML = "";

	selectBoxId = "doCty";

	var obj = document.createElement("script");
	obj.src = 'http://www.easyterra.com/javascript/javascript_cities.php?Ctry_code=' + document.getElementById("doCtry").options[document.getElementById("doCtry").selectedIndex].value;
	obj.type= "text/javascript";
	container.appendChild(obj);

}

function LoadPULocations() {

	loadStatus("puLoc");
	
	container = document.getElementById("jscontainer");
	container.innerHTML = "";

	selectBoxId = "puLoc";

	var obj = document.createElement("script");
	obj.src = 'http://www.easyterra.com/javascript/javascript_locations.php?Ctry_code=' + document.getElementById("puCtry").options[document.getElementById("puCtry").selectedIndex].value + '&Cty_name=' +  document.getElementById("puCty").options[document.getElementById("puCty").selectedIndex].innerHTML;
	obj.type= "text/javascript";
	container.appendChild(obj);

}

function LoadDOLocations() {

	container = document.getElementById("jscontainer");
	container.innerHTML = "";

	selectBoxId = "doLoc";

	var obj = document.createElement("script");
	obj.src = 'http://www.easyterra.com/javascript/javascript_locations.php?Ctry_code=' + document.getElementById("doCtry").options[document.getElementById("doCtry").selectedIndex].value + '&Cty_name=' +  document.getElementById("doCty").options[document.getElementById("doCty").selectedIndex].innerHTML;
	obj.type= "text/javascript";
	container.appendChild(obj);

}

function refreshPUCitySelect() {

	for (var i=document.getElementById("puCty").options.length-1; i>=0; i--){
		 document.getElementById("puCty").options[i] = null;
	}
	
	document.getElementById("puCty").options[0] = new Option("select a city","select a city");

	while (!isArray(cities)) {
		setTimeout('', 100);
	}
	for(i = 0; i < cities.length; i++){
		document.getElementById("puCty").options[document.getElementById("puCty").options.length]=
		new Option(cities[i][0], cities[i][1]);
	}

	document.getElementById("puCty").disabled = false;

	if (document.getElementById("doCtry").selectedIndex == 0) {
		document.getElementById("doCtry").selectedIndex = document.getElementById("puCtry").selectedIndex;
		doCtryChange();
	}


	while (!isArray(cities)) {
		setTimeout('', 100);
	}
	if (ppuCty)	{
		PreselectPUCity(ppuCty);
		puCtyChange();
	}

	checkSubmit();

}

function refreshDOCitySelect() {

	for (var i=document.getElementById("doCty").options.length-1; i>=0; i--){
		 document.getElementById("doCty").options[i] = null;
	}
	
	document.getElementById("doCty").options[0] = new Option("select a city","select a city");

	while (!isArray(cities)) {
		setTimeout('', 100);
	}
	for(i = 0; i < cities.length; i++){
		document.getElementById("doCty").options[document.getElementById("doCty").options.length]=
		new Option(cities[i][0], cities[i][1]);
	}

	document.getElementById("doCty").disabled = false;
	if (document.getElementById("doCtry").selectedIndex == document.getElementById("puCtry").selectedIndex) {
		document.getElementById("doCty").selectedIndex = document.getElementById("puCty").selectedIndex;
	}

	if (ppuLoc) {
		PreselectPULocation(ppuLoc);
	}
	
	while (!isArray(cities)) {
		setTimeout('', 100);
	}
	if (pdoCty)	{
		PreselectDOCity(pdoCty);
	}

	doCtyChange();

	checkSubmit();

}


function refreshPULocSelect() {

	pulocations = locations;

	for (var i=document.getElementById("puLoc").options.length-1; i>=0; i--){
		 document.getElementById("puLoc").options[i] = null;
	}

	if (locations[0][1] != 'X') { 
		document.getElementById("puLoc").options[0] = new Option("select a location","select a location");
		for(i = 0; i < pulocations.length; i++){
			if (pulocations[i][2] != 'D') {
				document.getElementById("puLoc").options[document.getElementById("puLoc").options.length]=
				new Option(pulocations[i][0], pulocations[i][1]);
			}
		}
	} else {
		document.getElementById("puLoc").options[0] = new Option('no locations available', pulocations[0][1]);
	}

	if ((document.getElementById("puCtry").selectedIndex == document.getElementById("doCtry").selectedIndex) && (document.getElementById("doCty").selectedIndex == 0)) {
		if (pdoCtry) {
			PreselectDOCountry(pdoCtry);
		}
		doCtryChange();
	}
	
	checkSubmit();

}

function refreshDOLocSelect() {

	dolocations = locations;

	for (var i=document.getElementById("doLoc").options.length-1; i>=0; i--){
		 document.getElementById("doLoc").options[i] = null;
	}

	if (locations[0][1] != 'X') { 
		document.getElementById("doLoc").options[0] = new Option("select a location","select a location");
	} else {
		document.getElementById("doLoc").options[0] = new Option('no locations available', dolocations[0][1]);
	}

	if (document.getElementById("puLoc").selectedIndex != 0) {
		allowedSuppliers = pulocations[document.getElementById("puLoc").selectedIndex-1][3];
		for(i = 0; i < dolocations.length; i++){
			allowthisone = false;
			for (j=0; j < dolocations[i][3].length; j++) {
				if (in_array(dolocations[i][3][j], allowedSuppliers) == true) {
					allowthisone = true
				}
			} 
			selectedloc = pulocations[document.getElementById("puLoc").selectedIndex-1][0];

			if (allowthisone == true) {
				document.getElementById("doLoc").options[document.getElementById("doLoc").options.length]=
				new Option(dolocations[i][0], dolocations[i][1]);

			}
		}
	}

	if ((document.getElementById("puCtry").selectedIndex == document.getElementById("doCtry").selectedIndex) && (document.getElementById("puCty").selectedIndex == document.getElementById("doCty").selectedIndex)) {

		if (pdoLoc)  {
			PreselectDOLocation(pdoLoc);
		} else {
			PreselectDOLocation(selectedloc);
		}
	} else {
		if (pdoLoc)  {
			PreselectDOLocation(pdoLoc);
		}
	}
	
	checkSubmit();

	pdoLoc = '';

}

function in_array(needle, haystack) {
    for (var i = 0; i < haystack.length; i++) {
        if (haystack[i] == needle) {
            return true;
        }
    }
    return false;
	
}

function disableSubmit() {

	document.getElementById("submit").disabled = true;

}

function enableSubmit() {

	document.getElementById("submit").disabled = false;

}

function disableElement(elementId) {

	document.getElementById(elementId).selectedIndex = 0;
	document.getElementById(elementId).disabled = true;

}

function loadStatus(elementId) {

	for (var i=document.getElementById(elementId).options.length-1; i>=0; i--){
		 document.getElementById(elementId).options[i] = null;
	}

	disableElement(elementId);
		
	document.getElementById(elementId).options[0] = new Option("loading...","X");

}

function PreselectPUCountry(puCtry) {

	ctry = 0;
	for(i = 0; i < countries.length; i++){
		if (countries[i][0] == puCtry) { var ctry = i+1; }	
	}
	
	if (ctry != 0){
		document.getElementById("puCtry").selectedIndex = ctry;
	}

}

function PreselectDOCountry(doCtry) {


	ctry = 0;
	for(i = 0; i < countries.length; i++){
		if (countries[i][0] == doCtry) { var ctry = i+1; }	
	}
	
	if (ctry != 0){
		document.getElementById("doCtry").selectedIndex = ctry;
	}

}

function PreselectPUCity(puCty) {

	cty = 0;
	for(i = 0; i < cities.length; i++){
		if (cities[i][0] == puCty) { var cty = i+1; }
	}
	
	if (cty != 0){
		document.getElementById("puCty").selectedIndex = cty;
	}

}

function PreselectDOCity(doCty) {

	cty = 0;
	for(i = 0; i < cities.length; i++){
		if (cities[i][0] == doCty) { var cty = i+1; }
	}
	
	if (cty != 0){
		document.getElementById("doCty").selectedIndex = cty;
	}

}

function PreselectPULocation(puLoc) {

	loc = 0;
	for(i = 0; i < locations.length; i++){
		if (locations[i][0] == puLoc) { var loc = i+1; }
	}
	
	if (loc != 0){
		document.getElementById("puLoc").selectedIndex = loc;
	}

}

function PreselectDOLocation(doLoc) {
	
	if ((document.getElementById("puCtry").selectedIndex == document.getElementById("doCtry").selectedIndex) || (pdoLoc != 0)) {
		if (((document.getElementById("puCty").selectedIndex == document.getElementById("doCty").selectedIndex) && (document.getElementById("puLoc").selectedIndex != 0)) || (pdoLoc != 0)) {
			for(i = 0; i < document.getElementById("doLoc").options.length; i++){
				if (document.getElementById("doLoc").options[i].text == doLoc) {
					document.getElementById("doLoc").selectedIndex = i;
				}
			}
		}
	}

}

function checkSubmit() {

	disable = false;
	if (document.getElementById("puCtry").selectedIndex == 0)	{ disable = true }
	if (document.getElementById("puCty").selectedIndex == 0)	{ disable = true }
	if (document.getElementById("puLoc").selectedIndex == 0)	{ disable = true }
	if (document.getElementById("doCtry").selectedIndex == 0)	{ disable = true }
	if (document.getElementById("doCty").selectedIndex == 0)	{ disable = true }
	if (document.getElementById("doLoc").selectedIndex == 0)	{ disable = true }
	
	if (disable) {
		disableSubmit();
	} else {
		enableSubmit();
	}

}

// SAFARI NEEDS AN ALTERNATIVE!!!!
// function isArray(obj) {
//    if (obj.constructor.toString().indexOf("Array") == -1)
//       return false;
//    else
//       return true;
// }


// X-Browser isArray(), including Safari
function isArray(obj) {
	return obj.constructor == Array;
}

