function getXMLTag (rXML, tag, attr) {
	if (attr) { if (rXML.getElementsByTagName(tag)[0]) { return rXML.getElementsByTagName(tag)[0].attributes.getNamedItem(attr).nodeValue; } }
	else { return rXML.getElementsByTagName(tag)[0].firstChild.nodeValue; }
}

function getAddress() { new Request.HTML({url: '/rpcs/getAddress.php', method: 'get', update: 'offerForm_address', data: 'postcode_c=' + $('offerForm_postcode_c').value + '&postcode_l=' + $('offerForm_postcode_l').value + '&huisnr=' + $('offerForm_huisnr').value}).send(); }

var offerFormData;
function offerFormInit(offerFormStep) {
	//events
	if ($('offerForm_leverdatum')) { $('offerForm_leverdatum').addEvent('change', function() {
		if (this.value == 'gewenst op') { disabled = false; } else { disabled = true; }
		$('offerForm_leverdatum_d').set('disabled', disabled);
		$('offerForm_leverdatum_m').set('disabled', disabled);
		$('offerForm_leverdatum_j').set('disabled', disabled);
	}); }
	$$('#offerForm_contact', '#offerForm_email').addEvent('keyup', function() { offerFormValidate(); });

	//sync values from cookie
	offerFormData = JSON.decode(Cookie.read('offerFormData'));
	if (!offerFormData) { offerFormData = new Object(); }

	$each(offerFormData, function (v, k) { if (el = $('offerFormStep' + offerFormStep).getElement('form').elements[k]) { el.value = v; } });

	//capture changes for sync to cookie
	$$('#offerFormStep' + offerFormStep + ' textarea', '#offerFormStep' + offerFormStep + ' input[type="text"]', '#offerFormStep' + offerFormStep + ' select').addEvent('change', function() {
		offerFormData[this.name] = this.value;
		Cookie.write('offerFormData', JSON.encode(offerFormData), {path: '/'});
	});

	$$('#offerFormStep' + offerFormStep + ' input[type="radio"]').addEvent('click', function() {
		list = $('offerFormStep' + offerFormStep).getElement('form').elements[this.name];
		for (i=0;i<list.length;i++) {
			if (list[i].checked) {
				offerFormData[list[i].name] = list[i].value;
				Cookie.write('offerFormData', JSON.encode(offerFormData), {path: '/'});
			}
		}
	});

	//automatic address retrieve
	$$('#offerForm_postcode_c', '#offerForm_postcode_l', '#offerForm_huisnr').addEvent('change', function() { this.value = this.value.trim(); getAddress(); });
	if (offerFormStep == 2) { getAddress(); }

	//validate first time (upon data restored from cookie)
	offerFormValidate();
}

var offReq = new Request({async: false, url: '/rpcs/offerBox.php', noCache: true, method: 'get', onSuccess: function(rTxt, rXML) {
	if (getXMLTag(rXML, 'companylist', 'autoselected') == 'true') { var offerCompanyCnt = 0; } else { var offerCompanyCnt = getXMLTag(rXML, 'companylist', 'count'); }
	var offerProductCnt = getXMLTag(rXML, 'productlist', 'count');

	if ($defined($('offerLblCompanyCnt'))) $('offerLblCompanyCnt').set('html', offerCompanyCnt);
	if ($defined($('offerLblProductCnt'))) $('offerLblProductCnt').set('html', offerProductCnt);

	if ($defined($('offerLblTotalCnt'))) {
		var offerTotalCnt = offerCompanyCnt.toInt() + offerProductCnt.toInt();
		if (offerTotalCnt > 0) {
			$('offerLblTotalCnt').set('html', ' (' + (offerCompanyCnt.toInt() + offerProductCnt.toInt()) + ')');
		} else {
			$('offerLblTotalCnt').empty();
		}
	}

	var offerFormStep = getXMLTag(rXML, 'form', 'step');
	if (offerFormStep) {
		if ($defined($('offerFormStep' + offerFormStep))) { $('offerFormStep' + offerFormStep).destroy(); }

		var offerForm = new Element('div', {id: 'offerFormStep' + offerFormStep});
		offerForm.set('html', getXMLTag(rXML, 'form'));
		offerForm.inject(document.body);

		offerFormInit(offerFormStep);

		closeFog(); showUponFog('offerFormStep' + offerFormStep);
	}

	if (getXMLTag(rXML, 'action', 'action') == 'submit') {
		alert('Uw offerte aanvraag is verzonden!');
		closeFog();
	}
}});

window.addEvent('domready', function() {
	offReq.send();	//page init sync

	$$('.addCompanyBtn').addEvent('click', function() { offReq.send({data: 'action=addCompany&md5=' + this.rel + '&form=1'}); return false; });
	$$('.addProductBtn').addEvent('click', function() { offReq.send({data: 'action=addProduct&pid=' + this.rel + '&form=1'}); return false; });
	$$('.offerOpenBtn').addEvent('click', function() { offReq.send({data: 'form=1'}); return false; });
	$$('.offerRmAllBtn').addEvent('click', function() { offReq.send({data: 'action=remAll'}); return false;	});
});

function offerRemCompany(md5) { offReq.send({data: 'action=remCompany&md5=' + md5 + '&form=1'}); return false; }
function offerRemProduct(pid) { offReq.send({data: 'action=remProduct&pid=' + pid + '&form=1'}); return false; }
function offerPrevStep() { offReq.send({data: 'form=1'}); return false; }

function offerNextStep() {
	//validate
	var nok = false;
	$each($$('#offerFormStep1 textarea', '#offerFormStep1 input[type="text"]'), function (el) {
		el.value = el.value.trim();
		if (el.name.match(/^aantal/)) { if (!el.value.match(/^\d+$/)) { el.style.backgroundColor = '#ffcbe9'; nok = true; } else { el.style.backgroundColor = ''; } }
		if (el.name.match(/^(spec_desc|easytext)/)) { if (!el.value.match(/^[\s\S]{4,}$/)) { el.style.backgroundColor = '#ffcbe9'; nok = true; } else { el.style.backgroundColor = ''; } }
	});
	if (nok) { alert('Enkele (verplichte) velden zijn niet of niet juist ingevoerd!'); return false; }

	//submit
	offReq.post($('offerFormStep1').getElement('form')); return false;
}

function offerFormValidate(setBgColor) {
	var nok = false;
	var fieldCheck = new Array();
	fieldCheck['bedrijfsnaam'] = new Array(/^.{3,80}$/, false);
	fieldCheck['contact'] = new Array(/^.{2,40}$/, true);
	fieldCheck['email'] = new Array(/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/, true);
	fieldCheck['postcode_c'] = new Array(/^[1-9]{1}[0-9]{3}$/, new Array('postcode_l', 'huisnr'));
	fieldCheck['postcode_l'] = new Array(/^[A-Za-z]{2}$/, new Array('postcode_c', 'huisnr'));
	fieldCheck['huisnr'] = new Array(/^[1-9]{1}[0-9]{0,4}$/, new Array('postcode_c', 'postcode_l'));
	fieldCheck['toevoeg'] = new Array(/^.{1,26}$/, false);
	fieldCheck['tel_r'] = new Array(/^0(6|800|90(6|9|0)|([1-5]|7)[0-9]{2}|([1-5]|[7-9])[0-9])$/, 'tel_a');
	fieldCheck['tel_a'] = new Array(/^([0-9]{4}|[0-9]{7}|[1-9][0-9]{5,7})$/, 'tel_r');
	fieldCheck['easytext'] = new Array(/^[\s\S]{4,}$/, false);

	$each($$('#offerFormStep2 textarea', '#offerFormStep2 input[type="text"]'), function (el) {
		if (setBgColor) { el.value = el.value.trim(); } //only trim at submit (while also setting bgColor)

		if (!fieldCheck[el.name]) { return; }
		if (typeof fieldCheck[el.name][1] == 'string') { required = $('offerForm_' + fieldCheck[el.name][1]).value; }
		else if (typeof fieldCheck[el.name][1] == 'object') { required = false; for (var x = 0; x < fieldCheck[el.name][1].length; x++) { if ($('offerForm_' + fieldCheck[el.name][1][x]).value) { required = true; } } }
		else { required = fieldCheck[el.name][1]; }

		if ((el.value == '' && required) || (el.value != '' && !el.value.match(fieldCheck[el.name][0]))) {
			nok = true;
			if (setBgColor) { el.style.backgroundColor = '#ffcbe9'; }
			if (span = el.getParent().getElement('span')) { span.removeClass('validateOk'); span.addClass('validate'); }
		} else {
			el.style.backgroundColor = '';
			if (span = el.getParent().getElement('span')) { span.removeClass('validate'); span.addClass('validateOk'); }
		}
	});

	//combo check
	if (setBgColor) {
		var infonr = $('offerForm_tel_r').value.match(/^0(800|90(6|9|0))$/);
		var nr = $('offerForm_tel_r').value + $('offerForm_tel_a').value;
	
		if (nr.length > 0 && ((infonr && !(nr.length == 8 || nr.length == 11)) || (!infonr && nr.length != 10))) {
			$('offerForm_tel_r').style.backgroundColor = '#ffcbe9';
			$('offerForm_tel_a').style.backgroundColor = '#ffcbe9';
			nok = true;
		}
	}

	if (nok) { return false; } else { return true; }
}	

function offerSubmit() {
	if (!offerFormValidate(true)) { alert('Enkele (verplichte) velden zijn niet of niet juist ingevoerd!'); return false; }
	offReq.post($('offerFormStep2').getElement('form')); return false;
}
