// -- Controleren gegevens

function isValidURL(url){
    var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    if(RegExp.test(url)){
        return true;
    }else{
        return false;
    }
}

function isValidEmail(email){
    var RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/
    if(RegExp.test(email)){
        return true;
    }else{
        return false;
    }
} 




function checkContact(text) {

	document.getElementById('contact_error_org').style.display = 'none';
	clearElement('contact_error_org');

	document.getElementById('contact_error_bericht').style.display = 'none';
	clearElement('contact_error_bericht');

	
	var naam_error=false;		
	var org_error=false;
	var tel_error=false;
	var mob_error=false;	
	var email_error=false;	
	var onderwerp_error=false;	
	var tekst_error=false;	
	var error_org = false;
	var error_bericht = false;

	if(document.contactformulier.contact_naam.value=='') {
		document.contactformulier.contact_naam.className = document.contactformulier.contact_naam.className + " error";
		naam_error=true;		
	} 
	if(document.contactformulier.contact_orga.value=='') {
		document.contactformulier.contact_orga.className = document.contactformulier.contact_orga.className + " error";
		org_error=true;
	}
	/*
	if(document.contactformulier.contact_tel.value=='') {
		document.contactformulier.contact_tel.className = document.contactformulier.contact_tel.className + " error";
		tel_error=true;
	}
	
	if(document.aanmeldformulier.contact_mob.value=='') {
		document.contactformulier.contact_mob.className = document.contactformulier.contact_mob.className + " error";
		mob_error=true;	
	}
	*/
	if(!isValidEmail(document.contactformulier.contact_email.value)) {
		document.contactformulier.contact_email.className = document.contactformulier.contact_email.className + " error";
		email_error=true;	
	}

	if(document.contactformulier.contact_onderwerp.value=='') {
		document.contactformulier.contact_onderwerp.className = document.contactformulier.contact_onderwerp.className + " error";
		onderwerp_error=true;
	}

	if(document.contactformulier.contact_tekst.value=='') {
		document.contactformulier.contact_tekst.className = document.contactformulier.contact_tekst.className + " error";
		tekst_error=true;
	}

	

	if(naam_error || org_error || tel_error || mob_error || email_error) {
		document.getElementById('contact_error_org').style.display = 'block';

		insertElement(text[7], 'p', '', '', 'contact_error_org', '', '');
		insertElement('', 'ul', 'contact_error_org_ul', '', 'contact_error_org', '', '');

		if(naam_error) {
			insertElement(text[0], 'li', '', 'error', 'contact_error_org_ul', '', 0);
		}
		if(org_error) {
			insertElement(text[1], 'li', '', 'error', 'contact_error_org_ul', '', 0);
		}
		if(email_error) {
			insertElement(text[2], 'li', '', 'error', 'contact_error_org_ul', '', 0);
		}
		/*
		if(tel_error) {
			insertElement(text[3], 'li', '', 'error', 'contact_error_org_ul', '', 0);
		}
		if(mob_error) {
			insertElement(text[4], 'li', '', 'error', 'contact_error_org_ul', '', 0);
		}
		*/
		
		document.getElementById('contact_orga').scrollIntoView(true);
		error_org = true;
	}  else if(tekst_error || onderwerp_error) {
		document.getElementById('contact_error_bericht').style.display = 'block';

		insertElement(text[7], 'p', '', '', 'contact_error_bericht', '', '');
		insertElement('', 'ul', 'contact_error_bericht_ul', '', 'contact_error_bericht', '', '');

		if(tekst_error) {
			insertElement(text[5], 'li', '', 'error', 'contact_error_bericht_ul', '', 0);
		}
		if(onderwerp_error) {
			insertElement(text[6], 'li', '', 'error', 'contact_error_bericht_ul', '', 0);
		}
		document.getElementById('contact_error_bericht').scrollIntoView(true);
		error_bericht = true;

	}

	if(error_org || error_bericht) {
		return false;
	} else {
		return true;
	}
}



function clearClassFormElements(div) {
    if(div) {
        elements = document.getElementById(div);
    } else {
        elements = document;
    }
	if(elements.getElementsByTagName('form')) {
	    
		/* list all input elements in a form */
		var input = elements.getElementsByTagName('input');
		
		for (var i=0;i<input.length;i++) { 
			/* all list elements in array */
			var formelement = input[i];
			addEvent(formelement, 'change', function() {
				if(this.className == 'error') {
					this.className = '';
				}
				
			});
			if(div) {
			   if(formelement.className == 'error') {
					formelement.className = '';
				} 
			}
			
		}
		var select = elements.getElementsByTagName('select');
		for (var i=0;i<select.length;i++) { 
			/* all list elements in array */
			var formelement = select[i];
			addEvent(formelement, 'change', function() {
				if(this.className == 'error') {
					this.className = '';
				}
			});
			if(div) {
			   if(formelement.className == 'error') {
					formelement.className = '';
				} 
			}
		}
		var textarea = elements.getElementsByTagName('textarea');
		for (var i=0;i<textarea.length;i++) { 
			/* all list elements in array */
			var formelement = textarea[i];
			addEvent(formelement, 'change', function() {
				if(this.className == 'error') {
					this.className = '';
				}
			});
			if(div) {
			   if(formelement.className == 'error') {
					formelement.className = '';
				} 
			}
		}
	}
}




/* add event function */
function addEvent(element, type, handler) {
    // assign each event handler a unique ID
    if (!handler.$$guid) handler.$$guid = addEvent.guid++;
    // create a hash table of event types for the element
    if (!element.events) element.events = {};
    // create a hash table of event handlers for each element/event pair
    var handlers = element.events[type];
    if (!handlers) {
        handlers = element.events[type] = {};
        // store the existing event handler (if there is one)
        if (element["on" + type]) {
            handlers[0] = element["on" + type];
        }
    }
    // store the event handler in the hash table
    handlers[handler.$$guid] = handler;
    // assign a global event handler to do all the work
    element["on" + type] = handleEvent;
};
// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
    // delete the event handler from the hash table
    if (element.events && element.events[type]) {
        delete element.events[type][handler.$$guid];
    }
};

function handleEvent(event) {
    // grab the event object (IE uses a global event object)
    event = event || window.event;
    // get a reference to the hash table of event handlers
    var handlers = this.events[event.type];
    // execute each event handler
    for (var i in handlers) {
        this.$$handleEvent = handlers[i];
        this.$$handleEvent(event);
    }
};



/* get the page-scrollbar top position in */
function getPageScroll(){
	var yScroll;
	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}

/* get alle the page sizes and windowsizes */
function getPageSize(){
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

function insertElement(text, objType, objID, objClass, objParent, objSibling, numOfNodes) {
	// if the object doesnt exsist yet
	if(!document.getElementById(objID)) {
	// create an element with the objType
	var objElement = document.createElement(objType);
		// if there is an id, assign it to the element
		if(objID) 		
			objElement.setAttribute('id', objID);
		// if there is an class, assign it to the element
		if(objClass)
			objElement.className = objClass;
		// if there is any text, insert it into the element
		if(text)
			objElement.innerHTML = text;

		// insert the element inside an other element
		objParent = document.getElementById(objParent);
		if(objParent) {
			objParent.appendChild(objElement);
		}
		// insert the element after an other element
		objSibling = document.getElementById(objSibling);
		if(objSibling) {
			if(numOfNodes>0) {
                for(var n=0; n<numOfNodes; n++) {
	                objSibling = objsibling.nextSibling;
                }
			}
			objSibling.parentNode.insertBefore(objElement, objSibling.nextSibling );
		}
	}
}


function clearElement(element) {
    document.getElementById(element).innerHTML = '';
}
	

function disappear(element, opacity) {
    element = document.getElementById(element); 
	var reduce_opacity_by = 15;
	var rate = 30;	// 15 fps
	
	if (opacity > 0) {
		opacity -= reduce_opacity_by;
		if (opacity < 0) opacity = 0;
		
		if (element.filters) {
			try {
				element.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
			} catch (e) { 
				// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
				element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')';
			}
		} else {
			element.style.opacity = opacity / 100;
		}
	}
	

	if(opacity > 0) {
		setTimeout(function() { disappear(element.id, opacity); }, rate);
	} else {
		element.style.display = "none";
	}
}



