/************************
 * MouseOver/Out Events *
 ************************/
function mOver(ref) {
	document.getElementById(ref).src = 'images/buttons/' + ref + '_mo.jpg'
}

function mOut(ref) {
	document.getElementById(ref).src = 'images/buttons/' + ref + '.jpg'
}

/************
 * Ajax RSH *
 ************/
function link(grp,ref) {
	url = "mainbody.asp?grp=" + grp + "&ref=" + ref;
	addHistoryEvent("?grp=" + grp + "&ref=" + ref);
	loadXMLDoc(url,'mainbody');
	if (ref == "logoff") {
		loadXMLDoc('top_menu.asp','top_menu');
	}
}

function loadXMLDoc(url,div) {
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	}
	else {// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.open("GET",url,false);
	xmlhttp.send(null);
	updateText(xmlhttp.responseText,div);
}

function historyChange(newLocation, historyData) {
	var url = "mainbody.asp" + newLocation;
	var div = "mainbody";
	loadXMLDoc(url,div);
};

/*basic Ajax wrapper*/
function getXHR() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
}

/***************
 * Update text *
 ***************/
 function updateText(newText,targetId) {
	document.getElementById(targetId).innerHTML=newText;
}

/***************
 * Submit form *
 ***************/
function submitForm(grp,ref,form,div) {
	url = "mainbody.asp?grp=" + grp + "&ref=" + ref;
    var xmlHttpReq = false;
    var self = this;
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', url, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
			updateText(self.xmlHttpReq.responseText,div);
        }
    }
    self.xmlHttpReq.send(getquerystring(form));
	if (ref == "login") {
		loadXMLDoc('top_menu.asp','top_menu');
		link('hom','mijnaccount');
	}
}

function getquerystring(form) {
    var form = document.forms[form];
	var qstr = "";

    function GetElemValue(name, value) {
        qstr += (qstr.length > 0 ? "&" : "")
            + escape(name).replace(/\+/g, "%2B") + "="
            + escape(value ? value : "").replace(/\+/g, "%2B");
			//+ escape(value ? value : "").replace(/\n/g, "%0D");
    }
	
	var elemArray = form.elements;
    for (var i = 0; i < elemArray.length; i++) {
        var element = elemArray[i];
        var elemType = element.type.toUpperCase();
        var elemName = element.name;
        if (elemName) {
            if (elemType == "TEXT"
                    || elemType == "TEXTAREA"
                    || elemType == "PASSWORD"
					|| elemType == "BUTTON"
					|| elemType == "RESET"
					|| elemType == "SUBMIT"
					|| elemType == "FILE"
					|| elemType == "IMAGE"
                    || elemType == "HIDDEN")
                GetElemValue(elemName, element.value);
            else if (elemType == "CHECKBOX" && element.checked)
                GetElemValue(elemName, 
                    element.value ? element.value : "On");
            else if (elemType == "RADIO" && element.checked)
                GetElemValue(elemName, element.value);
            else if (elemType.indexOf("SELECT") != -1)
                for (var j = 0; j < element.options.length; j++) {
                    var option = element.options[j];
                    if (option.selected)
                        GetElemValue(elemName,
                            option.value ? option.value : option.text);
                }
        }
    }
    return qstr;
}

function postcodeCheck(invoer) {
  re = /^[1-9][0-9]{3} ?[a-zA-Z]{2}$/
  OK = re.exec(invoer.value);
  if (OK) 
     invoer.value = invoer.value.substr(0,4) + " " + invoer.value.substr(invoer.value.length - 2,2).toUpperCase();
  else
     alert (invoer.value + " is geen geldige Nederlandse postcode!");
}

function verzendEmailForm(testfield,grp,ref,ref2,ref4,ref5) {
	if (testVerplicht(document.emailform,testfield)) {
		params = 'grp=' + grp + '&ref=' + ref + '&ref2=' + ref2 + '&ref4=' + ref4 + '&ref5=' + ref5 + '&act=mail'
		sendMail(params)
	}
} 

function emailCheck(invoer) { 
   if (invoer.value == '') return true;
	re = /^[A-Za-z0-9_\-]+([.][A-Za-z0-9_\-]+)*[@][A-Za-z0-9_\-]+([.][A-Za-z0-9_\-]+)+$/
   OK = re.exec(invoer.value);
   if (OK) 
    	return true;
   else {
	   alert('Foutief emailadres');
	   return false;
	}
} 

function controleerEmail(email) {
	re = /^[A-Za-z0-9_\-]+([.][A-Za-z0-9_\-]+)*[@][A-Za-z0-9_\-]+([.][A-Za-z0-9_\-]+)+$/
	OK = re.exec(email);
	if (OK) {
		return true;
	}
	return false;
} 

function controleerPostcode(postcode) {
	re = /^[1-9][0-9]{3} ?[a-zA-Z]{2}$/
	OK = re.exec(postcode);
	if (OK) {
		return true;
	}
	return false;
}

function controleerRekeningnummer(rekeningnummer) {
	var n = rekeningnummer;
	n = n.replace(/\D/g,'', 'all');
	var c = n;
	a = c.length;
	e = 0;
	if (a == 9) for (var i = 0; i < 9; i++) e += (9 - i) * c[i];
	if(a < 7 || a == 8 || e % 11 != 0 ||  a > 9) {
		return false;
	}
	return true;
}

function formcheckEmail(invoer) {
	if (controleerEmail(invoer.value)) {
		invoer.className = '';
	}
	else {
		alert('Foutief emailadres');
	}
} 

function formcheckPostcode(invoer) {
	if (controleerPostcode(invoer.value)) {
		invoer.value = invoer.value.substr(0,4) + " " + invoer.value.substr(invoer.value.length - 2,2).toUpperCase();
		invoer.className = '';
	}
	else {
		alert (invoer.value + " is geen geldige Nederlandse postcode!");
	}
}

function formcheckRekeningnummer(invoer) {
	invoer.value = invoer.value.replace(/\D/g,'', 'all');
	if (controleerRekeningnummer(invoer.value)) {
		invoer.className = '';
	}
	else {
		alert (invoer.value + " is geen geldige bankrekening!");
	}
}

function bedrijf(invoer) {
	fout = -1;
	for (var i=0; i < invoer.elements.length; i++) {
		invoer.elements[i].className = ''

		if (invoer.elements[i].id == 'naam' || invoer.elements[i].id == 'adres' || invoer.elements[i].id == 'woonplaats' || invoer.elements[i].id == 'telefoon') {
			if (invoer.elements[i].value == '') {
				invoer.elements[i].className = 'markeer';
				if (fout < 0) fout = i;
			}
		}
		if (invoer.elements[i].id == 'bankrekening') {
			if (controleerRekeningnummer(invoer.elements[i].value) == false) {
				invoer.elements[i].className = 'markeer';
				if (fout < 0) fout = i;
			}
		}
		
		if (invoer.elements[i].id == 'incasso') {
			if (invoer.elements[i].checked == false) {
				incassoTekst.className = 'markeerTekst';
				if (fout < 0) fout = i;
			}
			else {
				incassoTekst.className = '';
			}	
		}
		if (invoer.elements[i].id == 'email') {
			if (controleerEmail(invoer.elements[i].value) == false) {
				invoer.elements[i].className = 'markeer';
				if (fout < 0) fout = i;
			}
		}
		if (invoer.elements[i].id == 'postcode') {
			if (controleerPostcode(invoer.elements[i].value)) {
			}
			else {
				invoer.elements[i].className = 'markeer';
				if (fout < 0) fout = i;
			}
		}
	}
	
	if (fout > -1){
		alert ('De gemarkeerde velden zijn niet (correct) ingevuld');
		invoer.elements[fout].focus();
		
	}
	else {
		return true;
	}
	return false;
}

function testBedrijfAanmelden(invoer) {
	if (bedrijf(invoer)) {
		submitForm('hom','bedrijf','emailform','mainbody');
	}
	else {	
	}
}

function profileBedrijf(invoer) {
	if (bedrijf(invoer)) {
		submitForm('hom','mijnaccount','emailform2','mainbody');
	}
	else {	
	}
}

function bedrijfPreference(invoer) {
	var categorie = 0;
	var materiaal = 0;
	for (var i=0; i < invoer.elements.length; i++) {
		if (invoer.elements[i].name == 'categorie') {
			if (invoer.elements[i].checked) {
				categorie++;
			}
		}
		else if (invoer.elements[i].name == 'materiaal') {
			if (invoer.elements[i].checked) {
				materiaal++;
			}
		}
	}
	if (materiaal == 0 || categorie == 0) {
		alert ("Selecteer minimaal een categorie en materiaal soort");
	}
	else {	
		return true;
	}
	return false;
}

function testBedrijfAanmeldenPreference(invoer) {
	if (bedrijfPreference(invoer)) {
		submitForm('hom','bedrijf','emailform','mainbody');
	}
	else {	
	}
}

function profileBedrijfPreference(invoer) {
	if (bedrijfPreference(invoer)) {
		submitForm('hom','mijnaccount','emailform','mainbody');
	}
	else {	
	}
}

function testOfferteAanvraag(invoer) {
	fout = -1;
	for (var i=0; i < invoer.elements.length; i++) {
		invoer.elements[i].className = '';
		if (invoer.elements[i].id == 'naam' || invoer.elements[i].id == 'adres' || invoer.elements[i].id == 'woonplaats' || invoer.elements[i].id == 'telefoon') {
			if (invoer.elements[i].value == '') {
				invoer.elements[i].className = 'markeer';
				if (fout < 0) fout = i;
			}
		}
		if (invoer.elements[i].id == 'email') {
			if (controleerEmail(invoer.elements[i].value) == false) {
				invoer.elements[i].className = 'markeer';
				if (fout < 0) fout = i;
			}
		}
		if (invoer.elements[i].id == 'postcode') {
			if (controleerPostcode(invoer.elements[i].value)) {
			}
			else {
				invoer.elements[i].className = 'markeer';
				if (fout < 0) fout = i;
			}
		}
	}
	
	if (fout > -1){
		alert ('De gemarkeerde velden zijn niet (correct) ingevuld');
		invoer.elements[fout].focus();
		
	}
	else {
		submitForm('hom','prijsopgave','emailform','mainbody');
	}
}

function offerteAanvraagPreference(invoer) {
	var categorie = 0;
	var materiaal = 0;
	for (var i=0; i < invoer.elements.length; i++) {
		if (invoer.elements[i].name == 'categorie') {
			if (invoer.elements[i].checked) {
				categorie++;
			}
		}
		else if (invoer.elements[i].name == 'materiaal') {
			if (invoer.elements[i].checked) {
				materiaal++;
			}
		}
	}
	if (materiaal == 0 && categorie == 0) {
		alert ("Selecteer minimaal een materiaal soort en een categorie");
	}
	else if (materiaal == 0) {
		alert ("Selecteer minimaal een materiaal soort");
	}
	else if (categorie == 0) {
		alert ("Selecteer minimaal een categorie");
	}
	else {
		return true;
	}
	return false;
}	

function testOfferteAanvraagPreference(invoer) {
	if (offerteAanvraagPreference(invoer)) {
		submitForm('hom','prijsopgave','emailform','mainbody');
	}
	else {	
	}
}

