function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
/**
*
* Function to serialize form elements for submit via AJAX
*
**/
formSerialize = function(obj) {
    var a = [];
    	var obj = typeof obj=='string'?document.getElementById(obj):obj;

	var flds = getElementsByTagNames('input,textarea,select', obj);
	
	for (var i=0;i<flds.length;i++) {
		//if(flds[i].type=='radio') alert(flds[i].name);
	
		var item = flds[i];	
 	    var n = item.name;
        var t = item.type;
	
	       if ( !n || item.disabled || t == 'reset' ||
            (t == 'checkbox' || t == 'radio') && !item.checked ||
            (t == 'submit' || t == 'image' || t == 'button') && item.form.clicked != item ||
            item.tagName.toLowerCase() == 'select' && item.selectedIndex == -1) {
            		continue;
            } else {
     	       	a.push(encodeURIComponent(n) + "=" + encodeURIComponent(item.value));
            }

        if (t == 'image' && item.form.clicked_x)
            a.push(
				encodeURIComponent(n + "_x") + "=" + encodeURIComponent(item.form.clicked_x),
				encodeURIComponent(n + "_y") + "=" + encodeURIComponent(item.form.clicked_y)
            );

        if (t == 'select-multiple') {
    			for(var x=0;x<item.options.length;x++) {
    					if(item.options[x].selected)   a.push(encodeURIComponent(n) + "=" + encodeURIComponent(item.options[x].value));
    			}
        }
	
	}
			
    return a.join("&");
};

/**
*
* Function to get elements by tagnameS
*
**/
function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
		 var tagNames = list.split(',');
		var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++)
	{
		 var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++)
			{
			resultArray.push(tags[j]);
			 }
		}
		var testNode = resultArray[0];
			if (testNode.sourceIndex)
		{
			resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
		}
		else if (testNode.compareDocumentPosition)
		{
		resultArray.sort(function (a,b) {
					return 3 - (a.compareDocumentPosition(b) & 6);
				});
		}
	return resultArray;
}


// ---
AJAX = {
	XMLHttp : null,
	callbackFunction : null,
	response : null,
	
	init: function (){
		if(!this.XMLHttp){
			if(typeof XMLHttpRequest != "undefined"){
				this.XMLHttp = new XMLHttpRequest();
			}
			else if(typeof window.ActiveXObject != "undefined"){
				try {
					this.XMLHttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
				}
				catch(e){
					try {
						this.XMLHttp = new ActiveXObject("MSXML2.XMLHTTP");
					}
					catch(e){
						try {
							this.XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
						}
						catch(e){
							this.XMLHttp = null;
						}
					}
				}
			}
		}
		return this.XMLHttp;
	},
	
	get : function (url, callbackFunction){
		if(this.init()){
			if(typeof callbackFunction != "undefined"){
				this.callbackFunction = callbackFunction;
			}
			// This line needed to properly control the onreadystatechange event for Firefox
			this.XMLHttp.onreadystatechange = function (){};
			this.XMLHttp.abort();
			this.XMLHttp.open("GET", url, true);
			this.XMLHttp.onreadystatechange = this.contentReady;
			//this.XMLHttp.setRequestHeader('Last-Modified','Sat, 1 Jan 2005 05:00:00 GMT');
			this.XMLHttp.setRequestHeader('Cache-Control', 'no-cache');
			this.XMLHttp.send(null);
		}
	},
	
	post : function (url, query, callbackFunction){
		if(this.init()){
			if(typeof callbackFunction != "undefined"){
				this.callbackFunction = callbackFunction;
			}
			// This line needed to properly control the onreadystatechange event for Firefox
			this.XMLHttp.onreadystatechange = function (){};
			this.XMLHttp.abort();
			this.XMLHttp.open("POST", url, true);
			this.XMLHttp.onreadystatechange = this.contentReady;
			this.XMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
			this.XMLHttp.setRequestHeader('Last-Modified','Sat, 1 Jan 2005 05:00:00 GMT');
			this.XMLHttp.setRequestHeader('Cache-Control', 'no-cache');

			this.XMLHttp.send(query);
		}
	},
	
	contentReady : function (){
		var AJAXObj = AJAX;
		//if(AJAXObj.XMLHttp && AJAXObj.XMLHttp.readyState == 1){
		//	document.getElementById('wait').style.display='block';
		//} else 
		if(AJAXObj.XMLHttp && AJAXObj.XMLHttp.readyState == 4){
		     if (AJAXObj.XMLHttp.status==200){
				//AJAXObj.response = AJAXObj.XMLHttp.responseText;
				if(AJAXObj.callbackFunction && typeof AJAXObj.callbackFunction == "function"){
				//AJAXObj.callbackFunction(AJAXObj.response);
				AJAXObj.callbackFunction(AJAXObj.XMLHttp);
				}
    			} else {
				AJAXObj.callbackFunction('Er is een fout opgetreden.');
    			}


		}
	}
};
// ---

/**
* Validate E-mail address
* @param val: fieldvalue
**/
function isValidEmail(val) {
	if (val.search( /[A-Za-z0-9]@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0 -9]+$/ ) == -1 ) {
		return false;
	}
	return true;
}

/**
* valideer tel nr (123-4567890, 1234-567890 of 06-12345678)
*
**/
function isValidTel(val) {
	if (val.search( /[0-9]{3}-[0-9]{7}|[0-9]{4}-[0-9]{6}|06-[0-9]{8}/ ) == -1 ) {
		return false;
	}
	return true;
}

/**
* valideert postcode (1234 AB of 1234AB)
*
**/
function isValidPC(val) {
	if (val.search( /[0-9]{4} [A-Za-z]{2}|[0-9]{4}[A-Za-z]{2}/ ) == -1 ) {
		return false;
	}
	return true;
}

function valFld(fld, naam, required, fldtype) {
	var fldtype = fldtype || 'txt';
	fld.style.backgroundColor='';
	fld.style.color='';
	var val = fld.value;
	if(required && val== '') {
		alert('U dient ' + naam + ' in te vullen!');
		fld.style.backgroundColor='red';
		fld.style.color='#ffffff';
		fld.focus();
		return false;
	} else if(!required && val== '') {
		return true;
	}
	if(fldtype=='pc' && !isValidPC(val)) {
		alert('U dient een geldige postcode in te vullen!');
		fld.style.backgroundColor='red';
		fld.style.color='#ffffff';
		fld.focus();
		return false;
	} else if(fldtype=='tel' && !isValidTel(val)) {
		alert('U dient een geldig telefoonnummer in te vullen!');
		fld.style.backgroundColor='red';
		fld.style.color='#ffffff';
		fld.focus();
		return false;
	} else if(fldtype=='mail' && !isValidEmail(val)) {
		alert('U dient een geldig e-mail adres in te vullen!');
		fld.style.backgroundColor='red';
		fld.style.color='#ffffff';
		fld.focus();
		return false;
	}			
	return true;
}

function checkDomain() {
	var frm = document.forms[0];
	if (frm.domain.value=='') {
		alert('U dient de gewenste domeinnaam in te vullen.');	
	} else {
		var dext = frm.domainext.options[frm.domainext.selectedIndex].value;
		document.getElementById('wait').style.display='block';
		document.getElementById('result').style.display='none';
		AJAX.get('/clickdreams.nsf/(DomeinCheck)?open&d=' + frm.domain.value + '&e=' + dext, function(o) {
			document.getElementById('wait').style.display='none';
			document.getElementById('result').style.display='block';
		 	document.getElementById('result').innerHTML=o.responseText;
		});
	}
}

function submitFrm() {
	var frm = document.forms[0];
	if( valFld(frm.Naam, 'uw naam',true) && valFld(frm.Email, 'uw e-mail adres',true,'mail') && valFld(frm.Telefoon, 'uw telefoonnummer', false,'tel') && valFld(frm.Subject, 'het onderwerp',true) ) {
		var q=formSerialize(frm);
		document.getElementById('contact').style.display='none';
		document.getElementById('contactwait').style.display='block';
		AJAX.post('/clickdreams.nsf/(submitInfo)', 'submittype=infoclick&' + q, function(o) {
			document.getElementById('contactwait').style.display='none';
			var el = document.getElementById('contactresult');
			try {
				var result = o.responseXML.documentElement;
				var statustext= result.getElementsByTagName('status')[0].firstChild.nodeValue;
				if(statustext=='ok') {
					var statusmsg=result.getElementsByTagName('msg')[0].firstChild.nodeValue;				
					el.innerHTML=decodeURIComponent(statusmsg);
					el.style.display='block';	
				} else {
					var statusmsg=result.getElementsByTagName('msg')[0].firstChild.nodeValue;
					document.getElementById('contact').style.display='block';
					alert(statusmsg);
				}
			} catch(e) {
					document.getElementById('contact').style.display='block';
					alert('Er is een fout opgetreden tijdens het verzenden.\nProbeer het later nog eens.');
    		}    													   

		});
	}
}

