window.onload = initAll;

var time = new Date();

var statesArray = new Array();
var canArray = new Array();
var productArray = new Array();
var bbbPiecesArray = new Array();
var inArray = new Array();
var mmArray = new Array();

var panelSizeList = '';
var xhr = false;
var xhr2 = false;
var xhr3 = false;
var selIdx = false

// Remember previous settings

var mmPre = false;

function initAll() {

	
	document.getElementById("inside_form").style.visibility = 'hidden';
	document.getElementById("quotations").style.visibility = 'hidden';
	document.getElementById("thickSelectIdx").style.visibility = 'hidden';
	document.getElementById("bbp_select").style.visibility = 'hidden';
	document.getElementById("bundlesSelect").style.visibility = 'hidden';
		
	
	document.getElementById("inquiryType").selected = 0;
	document.getElementById("inquiryType").onchange = switchMenu;
	document.getElementById("countrySelect").onchange = doCountrySelect;
	document.getElementById("countrySelect2").onchange = doCountrySelect2;
	document.getElementById("dimSelect").onchange = doDimSelect;
	
	var selIdx = document.getElementById("thickSelectIdx");
	selIdx.onchange = doThickSelect;
	
	if (window.XMLHttpRequest) {
	
		
		xhr = new XMLHttpRequest();
		xhr2 = new XMLHttpRequest();
		xhr3 = new XMLHttpRequest();
	
		
	} else {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
				xhr2 = new ActiveXObject("Microsoft.XMLHTTP");	
				xhr3 = new ActiveXObject("Microsoft.XMLHTTP");	
	
			} catch (e) {}
		}
	}
	
	if ((xhr) && (xhr2) && (xhr3)) {
	
		xhr.onreadystatechange = makeStateList;
		xhr.open("GET", "XML/states.xml", true);
		xhr.send(null)
		
		xhr2.onreadystatechange = makeCountryList;
		xhr2.open("GET", "XML/iso_3166-1_list_en.xml", true);
		xhr2.send(null)
		
		xhr3.onreadystatechange = makeTData;
		xhr3.open("GET", "XML/t_data.xml", true);
		xhr3.send(null)
		
		
		
	} else {
		alert("XMLHttpRequest Failed!");	
	}
	
		
	for (var i=0; i<document.links.length; i++) {
		var linkObj = document.links[i];
		if (linkObj.id) {
			var imgObj = document.getElementById(linkObj.id + "Img");
			if (imgObj) {
				setupRollover(linkObj,imgObj);
			}
		}
	}
	
	var allLinks = document.getElementsByTagName("a");
	
	
	for (var i=0; i<allLinks.length; i++) {
		if (allLinks[i].className.indexOf("menuLink") > -1) {
			allLinks[i].onload = toggleMenu;
			allLinks[i].onclick = toggleMenu;
			setupRollover(allLinks[i], document.getElementById("productsImg"));
		}
	}

}


function toggleMenu() {
	var startMenu = this.href.lastIndexOf("/")+1;
	var stopMenu = this.href.lastIndexOf(".");
	var thisMenuName = this.href.substring(startMenu,stopMenu);

	var thisMenu = document.getElementById(thisMenuName).style;
	thisMenu.display = (thisMenu.display == "block") ? "none" : "block";

	return false;
}



function setupRollover(thisLink,thisImage) {
	thisLink.imgToChange = thisImage;
	thisLink.onmouseout = rollOut;
	thisLink.onmouseover = rollOver;	
	
	thisLink.outImage = new Image();
	thisLink.outImage.src = thisImage.src;

	thisLink.overImage = new Image();
	if (thisLink.id == "products_img") {
		thisLink.overImage.src = "images/products2.jpg";
	} else {
		thisLink.overImage.src = "images/" + thisLink.id + "2.jpg";
	}
	
}



function rollOver() {
	this.imgToChange.src = this.overImage.src;
}

function rollOut() {
	this.imgToChange.src = this.outImage.src;
}

function makeStateList() {
	/*
	*  Make two lists, one for American States, the other from Canadian states, from data in states.xml.
	*/
	
	if (xhr.readyState == 4) {
		if ((xhr.status == 200) && (xhr.responseXML)) {
			var us_state = xhr.responseXML.getElementsByTagName("state");
			var can_prov = xhr.responseXML.getElementsByTagName("can_prov");
		
			for (var i=0; i < us_state.length; i++) {	
				statesArray[i] = us_state[i].getElementsByTagName('label')[0].firstChild.nodeValue;
			}
			for (var i=0; i < can_prov.length; i++) {	
				canArray[i] = can_prov[i].getElementsByTagName('label')[0].firstChild.nodeValue;
			}	
		
		} else {	
			alert("A problem has been encountered with " + xhr.status); 	
		}
	}
}

function makeCountryList() {
	
	/*
	*  Make a list of all Countries from iso_3166-1_list_en.xml document.
	*/
	
	if (xhr2.readyState == 4) {
		if ((xhr2.status == 200) && (xhr2.responseXML)) {
				var countrySel = document.getElementById("countrySelect");		
				var countrySel2 = document.getElementById("countrySelect2");		
				var countries = xhr2.responseXML.getElementsByTagName("ISO_3166-1_Entry");
				for (var i=0; i < countries.length; i++) {	
					var newOption = document.createElement('option');
					var newOption2 = document.createElement('option');
					var elText = countries[i].getElementsByTagName('ISO_3166-1_Country_name')[0].firstChild.nodeValue;
					newOption.value = elText;
					newOption.text = elText;
					newOption2.value = elText;
					newOption2.text = elText;
					countrySel.options[i] = newOption;
					countrySel2.options[i] = newOption2;
				}	
		} else {
			
			alert("A problem has been encountered with " + xhr2.status); 	
		}
	}
}

function makeTData() {
	if (xhr3.readyState == 4) {
		if ((xhr3.status == 200) && (xhr3.responseXML)) {
			
			var bbp_grade = xhr3.responseXML.getElementsByTagName("bbp_grade");
			var bbp_pieces = xhr3.responseXML.getElementsByTagName("bbp_pieces");
			var product_list = xhr3.responseXML.getElementsByTagName("p_list");
			var thick_list = xhr3.responseXML.getElementsByTagName("bbp_thick");
			var panel_size = xhr3.responseXML.getElementsByTagName("panel_size");
			var prodSelectIdx = document.getElementById("prodSelectIdx");		
			var gradeSelect = document.getElementById("gradeSelect");	
			var dimSelect = document.getElementById("dimSelect");	
			makeTotalBundles();
			panelSizeList = '<p>Panel Size: <select id="panelSelect">';
			
			for (var i=0; i < bbp_grade.length; i++) {	
				gradeSelect.options[i] = new Option(bbp_grade[i].getElementsByTagName('label')[0].firstChild.nodeValue + "", 
																							   bbp_grade[i].getElementsByTagName('label')[0].firstChild.nodeValue + "");
			}		
			
			for (var i=0; i < bbp_pieces.length; i++) {	
				bbbPiecesArray[i] = bbp_pieces[i].getElementsByTagName('number')[0].firstChild.nodeValue;	
			}	
			
			for (var i=0; i < product_list.length + 1; i++) {	
				if (i == 0) {
					var newOption = document.createElement('option');
					var elText = '- Select a Product -';	
				} else {
					var newOption = document.createElement('option');
					var elText = product_list[i - 1].getElementsByTagName('option')[0].firstChild.nodeValue;
				}
				newOption.value = elText;
				newOption.text = elText ;
				prodSelectIdx.options[i] = newOption;
		
			}	
			
			for (var i=0; i < thick_list.length; i++) {	
			
				inArray[i] = thick_list[i].getElementsByTagName('in')[0].firstChild.nodeValue;	
				mmArray[i] = thick_list[i].getElementsByTagName('mm')[0].firstChild.nodeValue;
				dimSelect.options[i] = new Option(thick_list[i].getElementsByTagName('mm')[0].firstChild.nodeValue, i);
			}	
			
			for (var i=0; i < panel_size.length; i++) {	
				panelSizeList = panelSizeList + '<option value="' + i + '">' + 
				panel_size[i].getElementsByTagName('option')[0].firstChild.nodeValue + '</option>';	
			}	
			
	
			document.getElementById("prodSelectIdx").onchange = doProductSelect;
		
		} else {	
			alert("A problem has been encountered with " + xhr3.status); 	
		}
	}

}


function validate_form (user_time)

{
    valid = true;
	var new_time = new Date();
	
	if ((new_time.getTime() - time.getTime()) < 13000) {
		alert ("You might be a ROBOT, because you entered that way too fast.  Wait a couple of seconds before hitting submit.");
        valid = false;
		
	} else if (document.contact_form.contact_name.value == "" )
    {
        alert ("Please fill in your name.");
        valid = false;
    } 
	else if ((document.contact_form.email.value == "") || (!valid_email(document.contact_form.email.value))) {
		alert ( "Please enter a proper e-mail address." );
		valid = false;

	} else if (document.contact_form.text_a.value == "") {
		alert ( "Please give a description of what your inquiring." );
		valid = false;	
	}
	
	return valid;
}

function valid_email(email) {
	var reg_ex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	return reg_ex.test(email);
}



function switchMenu() {
	/* 
	*  Handle the case when a user selects a country, and display the states / provinces
	*  for Canadian and American countries.
	*/
	
	if (document.getElementById("inquiryType").selectedIndex == 0) {
		
		document.getElementById("contact_form").style.height = '300px';
		document.getElementById("inside_form").style.visibility = 'hidden';
		document.getElementById("inside_form").style.height = '0px';	
		document.getElementById("quotations").style.visibility = 'hidden';
		document.getElementById("quotations").style.height = '0px';	
	
	} else if (document.getElementById("inquiryType").selectedIndex == 1) {
		document.getElementById("contact_form").style.height = '820px';
		document.getElementById("inside_form").style.visibility = 'visible';
		document.getElementById("quotations").style.visibility = 'hidden';	
		document.getElementById("quotations").style.height = '0px';	
	
		
	} else if (document.getElementById("inquiryType").selectedIndex == 2) {
		document.getElementById("contact_form").style.height = '1080px';
		document.getElementById("inside_form").style.visibility = 'visible';
		document.getElementById("quotations").style.visibility = 'visible';	
		document.getElementById("quotations").style.height = '250px';	
	}
}

function doCountrySelect2() {
	/* 
	*  Handle the case when a user selects a country, and display the states / provinces
	*  for Canadian and American countries.
	*/
	
	cur_coun = document.getElementById("countrySelect2");
	cur_name = cur_coun.options[cur_coun.selectedIndex].text;
	var sArea = document.getElementById('stateArea2');
	
	if (cur_name == 'CANADA') {		
		var html_string = '<p>Prov / Terr: <select id="stateSelect2" name"stateSel2">';
		for (var i=0; i < canArray.length; i++) {
			html_string = html_string + '<option value="' + canArray[i] + '">' + canArray[i] + '</option>';
		}
		html_string = html_string + '</select></p>';
	
		sArea.innerHTML = html_string;
		
	} else if  (cur_name == 'UNITED STATES') {
	
		var html_string = '<p>State: <select id="stateSelect2" name="stateSel2">';
		for (var i=0; i < statesArray.length; i++) {
			html_string = html_string + '<option value="' +  statesArray[i]  + '">' + statesArray[i] + '</option>';
		}
		html_string = html_string + '</select></p>';
	
		sArea.innerHTML = html_string;
	} else {
		sArea.innerHTML = '<p>State / Prov :<input type="text" name="stateSel2" size="22"/></p>';
	}

}

function doCountrySelect() {
	/* 
	*  Handle the case when a user selects a country, and display the states / provinces
	*  for Canadian and American countries.
	*/
	
	cur_coun = document.getElementById("countrySelect");
	cur_name = cur_coun.options[cur_coun.selectedIndex].text;
	var sArea = document.getElementById('stateArea');
	
	if (cur_name == 'CANADA') {		
		var html_string = '<p>Prov / Terr: <select id="stateSelect" name="stateSel">';
		for (var i=0; i < canArray.length; i++) {
			html_string = html_string + '<option value="' + canArray[i]+ '">' + canArray[i] + '</option>';
		}
		html_string = html_string + '</select></p>';
	
		sArea.innerHTML = html_string;
		
	} else if  (cur_name == 'UNITED STATES') {
	
		var html_string = '<p>State: <select id="stateSelect"  name="stateSel">';
		for (var i=0; i < statesArray.length; i++) {
			html_string = html_string + '<option value="' + statesArray[i] + '">' + statesArray[i] + '</option>';
		}
		html_string = html_string + '</select></p>';
	
		sArea.innerHTML = html_string;
	} else {
		sArea.innerHTML = '<p>State / Prov :<input type="text" name="stateSel" size="22"/></p>';
	}

}

function doProductSelect() {
	var pList = document.getElementById('prodSelectIdx');
	var prodArea = document.getElementById('productListArea');
	
	if (pList.selectedIndex == 0) {
		prodArea.style.visibility = 'hidden';
		document.getElementById("bundlesSelect").style.visibility = 'hidden';
		
	} else if (pList.selectedIndex == 1) {
		prodArea.innerHTML = "<h4>Pieces per Bundle: " + bbbPiecesArray[0] + "</h4>";
		document.getElementById("bbp_select").style.visibility = 'visible';
		document.getElementById("thickSelectIdx").style.visibility = 'visible';
		document.getElementById("bundlesSelect").style.visibility = 'visible';
		document.getElementById("thickSelectIdx").selected = 0;
		prodArea.style.visibility = 'visible';
		selIdx.style.visibility = 'visible';
		piecesPer = document.getElementById("piecesPer");
	

	} else {
		prodArea.style.visibility = 'hidden';	
		document.getElementById("bbp_select").style.visibility = 'hidden';
		document.getElementById("thickSelectIdx").style.visibility = 'hidden';
		document.getElementById("bundlesSelect").style.visibility = 'hidden';
		
	}
	
}
function doThickSelect() {
	var thickSel = document.getElementById("thickSelectIdx");
	var prodArea = document.getElementById('productListArea');
	var dimS = document.getElementById("dimSelect");	
	
	if (thickSel.selectedIndex == 0) {
		for (var i = 0; i < mmArray.length; i++) {
			dimS[i] = new Option(mmArray[i], mmArray[i]);	
		}	
	} else if (thickSel.selectedIndex == 1) {
		for (var i = 0; i < inArray.length; i++) {
			dimS[i] = new Option(inArray[i], inArray[i]);	
		}	
	} 
	
	prodArea.innerHTML = "<h4>Pieces per Bundle: " + bbbPiecesArray[0] + "</h4>";

	
}

function fillOptions(element, array) {
	for (var i = 0; i < array.length; i++) {
		element[i] = new Option(array[i], i);	
	}
	return element;
}

function doDimSelect() {
	var dimSel = document.getElementById("dimSelect");
	var prodArea = document.getElementById('productListArea');
	prodArea.innerHTML = "<h4>Pieces per Bundle: " + bbbPiecesArray[dimSel.selectedIndex] + "</h4>";
}

function makeTotalBundles() {
	var bunS = document.getElementById("bundSelect");	
	for (var i = 0; i < 40; i++) {
		bunS[i] = new Option(i + 1, i + 1);	
	}		
	
}