function addEvent(obj, evType, fn){
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, false);
		return true;
	}
	else if (obj.attachEvent) {
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	}
	else {
		return false;
	}
}

function fireClickEvent(obj) {
	if(document.createEvent) {
		var evt = document.createEvent('MouseEvents');
		evt.initEvent('click', false, true);
		obj.dispatchEvent(evt);
		return true;
	}
	else if(document.createEventObject) {
		return obj.fireEvent('onclick');
	}
	else {
		return false;
	}
}

var ofajax;
var confirmAddProduct = true;

function addOrchardProduct(evt) {
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	var lnk = (evt.target) ? evt.target : evt.srcElement;
	if(evt.preventDefault) { evt.preventDefault(); }
	evt.returnValue = false;
	
	if(confirmAddProduct) {
		if(!confirm('Are you sure you want to ' + lnk.firstChild.data + '?')) {
			return false;
		}
	}
	var prodID = lnk.href.substr(lnk.href.indexOf('addproduct=') + 11);
	var newProd = ofajax.addOrchardProduct(prodID);

	// create all of the new table elements
	var trow = document.createElement('tr');
	var tdata = document.createElement('td');
	tdata.appendChild(document.createTextNode(newProd.PRODUCTNAME));
	trow.appendChild(tdata);
	tdata = document.createElement('td');
	tdata.appendChild(document.createTextNode(newProd.PRICE));
	trow.appendChild(tdata);
	tdata = document.createElement('td');
	tdata.appendChild(document.createTextNode(newProd.LICENCE));
	trow.appendChild(tdata);
	tdata = document.createElement('td');
	tdata.appendChild(document.createTextNode(newProd.VAT));
	trow.appendChild(tdata);
	tdata = document.createElement('td');
	tdata.appendChild(document.createTextNode(newProd.TOTAL));
	trow.appendChild(tdata);
	
	// update the total row
	var ordform = document.getElementById('orderform');
	var rows = ordform.getElementsByTagName('tr');
	var totaldata = rows[rows.length - 1].getElementsByTagName('td');
	totaldata[0].firstChild.data = newProd.BASKETPRICE;
	totaldata[1].firstChild.data = newProd.BASKETLICENCE;
	totaldata[2].firstChild.data = newProd.BASKETVAT;
	totaldata[3].firstChild.data = newProd.BASKETTOTAL;
	
	// insert the new row just before the total
	rows[rows.length - 1].parentNode.insertBefore(trow, rows[rows.length - 1]);
	
	// remove the link element and add product added message
	var lstitem = lnk.parentNode;
	if(lstitem.hasChildNodes()) {
		while(lstitem.childNodes.length >= 1) {
			lstitem.removeChild( lstitem.firstChild );
		}
	}
	lstitem.appendChild(document.createTextNode(newProd.PRODUCTNAME + ' added successfully'));
	lstitem.setAttribute('class', 'ajaxsuccess');

	return false;
}

function addAllOrchardProducts(evt) {
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	var lnk = (evt.target) ? evt.target : evt.srcElement;
	if(evt.preventDefault) { evt.preventDefault(); }
	evt.returnValue = false;
	
	if(!confirm('Are you sure you want to add all Orchard related products?')) {
		return false;
	}
	
	// turn off confirmation boxes
	confirmAddProduct = false;
	
	var orchardlinks = document.getElementById('orchardfiles').getElementsByTagName('a');
	for(var i = orchardlinks.length - 1; i >= 0; i--) {
		if(orchardlinks[i].href.substr(orchardlinks[i].href.indexOf('addproduct=') + 11) !== 'addall') {
			fireClickEvent(orchardlinks[i]);
		}
	}
	
	confirmAddProduct = true;
	
	// remove the add all link
	var lstitem = lnk.parentNode;
	if(lstitem.hasChildNodes()) {
		while(lstitem.childNodes.length >= 1) {
			lstitem.removeChild( lstitem.firstChild );
		}
	}
	
	return false;
}

function HMSOnChange() {
	var hms = document.getElementById('housingsoftware');
	if(hms.options[hms.selectedIndex].text == 'Orchard (ArcHouse)') {
		document.getElementById('orchardfiles').style.display = 'block';
	} else {
		document.getElementById('orchardfiles').style.display = 'none';
	}
}

function checkDeleteProduct(evt) {
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	if(evt) {
		if(!confirm("Are you sure you want to delete this item?")) {
			if(evt.preventDefault) { evt.preventDefault(); }
			evt.returnValue = false;
			return false;
		}
	}
}

function locatorScheduleChange() {
	var sel = document.getElementById('productparam20');
	var val = sel.options[sel.selectedIndex].text;
	var div = document.getElementById('locatorschedulemessage');
	var oldTextNode = div.childNodes[0];
	if(val == 'Please choose...') {
		div.replaceChild(document.createTextNode('Please select the schedule that you will be using.'), oldTextNode);
	} else if(val == 'Own schedule') {
		div.replaceChild(document.createTextNode('If you require M3 to integrate your schedule into Locator Plus, we can issue a quotation for this work if you send us your schedule.'), oldTextNode);
	} else {
		div.replaceChild(document.createTextNode('If you are not an existing subscriber to this schedule, you will need to subscribe separately.'), oldTextNode);
	}
}

function locatorIAmContractorClick() {
	if(document.getElementById('productparam19').checked) {
		document.getElementById('productparam21').parentNode.style.display = "block";
		document.getElementById('band').parentNode.style.display = "none";
	} else {
		document.getElementById('productparam21').parentNode.style.display = "none";
		document.getElementById('band').parentNode.style.display = "block";
	}
}

function housecareBandCheck() {
	var bandnum = document.getElementById('band').options[document.getElementById('band').selectedIndex].value;
	if(bandnum > 8) {
		if(document.getElementById('productparam26')) {
			document.getElementById('productparam26').style.display = "block";
		}
		if(document.getElementById('productparam27')) {
			document.getElementById('productparam27').style.display = "block";
		}
	}
	else {
		if(document.getElementById('productparam26')) {
			document.getElementById('productparam26').style.display = "none";
		}
		if(document.getElementById('productparam27')) {
			document.getElementById('productparam27').style.display = "none";
		}
	}
}

function orderformInit() {
	if(document.getElementById('orchardfiles') && document.getElementById('housingsoftware')) {
		addEvent(document.getElementById('housingsoftware'), 'change', HMSOnChange);
		HMSOnChange();
	}
	if(document.getElementById('orchardfiles')) {
		ofajax = new OrderForm();
		var addorchardlinks = document.getElementById('orchardfiles').getElementsByTagName('a');
		for(var i = 0; i < addorchardlinks.length; i++) {
			if(addorchardlinks[i].href.substr(addorchardlinks[i].href.indexOf('addproduct=') + 11) === 'addall') {
				addEvent(addorchardlinks[i], 'click', addAllOrchardProducts);
			} else {
				addEvent(addorchardlinks[i], 'click', addOrchardProduct);
			}
		}
	}
	if(document.getElementById('orderform')) {
		var delProdLinks = document.getElementById('orderform').getElementsByTagName('a');
		for(var j = 0; j < delProdLinks.length; j++) {
			if(delProdLinks[j].title.indexOf('Remove') == 0) {
				addEvent(delProdLinks[j], 'click', checkDeleteProduct)
			}
		}
	}
	if(document.getElementById('productparam20')) {
		var parent = document.getElementById('productparam20').parentNode;
		var newdiv = document.createElement('div');
		newdiv.setAttribute('id', 'locatorschedulemessage');
		newdiv.appendChild(document.createTextNode(''));
		parent.appendChild(newdiv);
		addEvent(document.getElementById('productparam20'), 'change', locatorScheduleChange);
	}
	if(document.getElementById('productparam21') && document.getElementById('productparam19')) {
		addEvent(document.getElementById('productparam19'), 'click', locatorIAmContractorClick);
		locatorIAmContractorClick();
	}
	if(document.getElementById('productparam26') || document.getElementById('productparam27')) {
		addEvent(document.getElementById('band'), 'change', housecareBandCheck);
		housecareBandCheck();
	}
}

addEvent(window, 'load', orderformInit);