// iedereenleeft main object - by Bramus! - http://www.bram.us/
var iedereenleeft = {

	init		: function() {
					// dead.line.you.know
	}
}

// trimmer - by Bramus! - http://www.bram.us/
var trimmer		= {
	LTrim		: function (value) {
					var re = /\s*((\S+\s*)*)/;
					return value.replace(re, "$1");	
	},

	RTrim		: function (value) {
					var re = /((\s*\S+)*)\s*/;
					return value.replace(re, "$1");
	},
	
	trim		: function (value) {
					return trimmer.LTrim(trimmer.RTrim(value));
	}
}

// mailValidator - by Bramus! - http://www.bram.us/
// does not validate on syntax, but on availability of user within the system
var mailValidator	= {
	
	validateMember	: function(fieldId, targetId) {
	
					new Ajax.Updater (
						'result', 
						'index.php?p=/check/member/', 
						{	 
							onLoading	: function(req) {
								$(targetId).value	= 'EMPTY';
							},
							
							onComplete	: function(req) {
								$(targetId).value 	= trimmer.trim(req.responseText);
							},
							
							parameters	: 'memberMail=' + $F(fieldId),
							
							method		: 'post',
							
							asynchronous: true
						}
					);				
	}
}

// progresschecker - by Bramus! - http://www.bram.us/
// ajax calling stuff to check wether detectFaces / mergeFaces has completed
var progressChecker	= {
	
	isMergeDone		: function(themeInstance) {
		
					//Event.observe('debug', 'change', progressChecker.debugChanged, false);
					
					new Ajax.PeriodicalUpdater (
						'result',
						'index.php?p=/check/isMergeDone',
						{
							onSuccess	: function(req) {
								
								$('debug').value 	= trimmer.trim(req.responseText);
								
								switch($F('debug')) {
									case "-AJAX1":
										$('spinner').style.visibility	= 'hidden';
										$('formSubmit').disabled		= false;
										Ajax.PeriodicalUpdater.stop();
										//$('formSubmit').click();
										//$('mergeDoneForm').submit();
										document.forms.mergeDoneForm.submit();
										break;
										
									case "-AJAX-2":	// busy	
									case "-AJAX-1":	// error	
									default:
										break;
										
								}
							},
							
							parameters	: 'themeInstance=' + themeInstance,
							
							method		: 'post',
							
							interval	: '1',
							
							asynchronous: true
						}
					);
		
	},
	
	isFaceDetectDone: function(faceInstance) {
		
					//Event.observe('debug', 'change', progressChecker.debugChanged, false);
					
					new Ajax.PeriodicalUpdater (
						'result',
						'index.php?p=/check/isFaceDetectDone',
						{		
							onSuccess	: function(req) {
								
								$('debug').value 	= trimmer.trim(req.responseText);
								
								switch($F('debug')) {
									case "-AJAX0":	// 0 faces
									case "-AJAX1":	// faces
										$('spinner').style.visibility	= 'hidden';
										$('formSubmit').disabled		= false;
										Ajax.PeriodicalUpdater.stop();
										break;
										
									case "-AJAX-2":	// busy	
									case "-AJAX-1":	// error	
									default:
										break;
										
								}
							},
							
							parameters	: 'faceInstance=' + faceInstance,
							
							method		: 'post',
							
							interval	: '1',
							
							asynchronous: true
						}
					);
		
	},
	
	debugChanged	: function() {
					switch ($F('debug')) {
						case "-AJAX0":
						case "-AJAX1":
							$('spinner').style.visibility	= 'hidden';
							$('formSubmit').disabled		= false;
							break;
						case "-AJAX-2":	// busy	
						case "-AJAX-1":	// error	
						default:
							break;
					}
	}
	
}



// formchecker - by Bramus! - http://www.bram.us/
// v 1.2 - customized for iedereenleeftmee
var formchecker = {

	okColor			: '#ffffff',									// background to set when value is ok
	nokColor		: '#ffffff',									// background to set when value is not ok
	nokMessage		: 'Gelieve alle vereiste velden in te vullen',	// message to display when form not ok
	objForm			: 'NULL',

	checkForm		: function (waitforsth, daForm) {
					$('formSubmit').disabled		= true;
					$('spinner').style.visibility	= 'visible';
					formchecker.objForm = daForm;
					if (waitforsth == true) {
						setTimeout('formchecker.coreCheck()', 2000);	// wait 2 seconds for mailvalidator to return value...
					} else {
						formchecker.coreCheck();	
					}
					return false;
	},
	
	coreCheck		: function() {
					var arClass, bValid, gotError;	
					var objField = formchecker.objForm.getElementsByTagName('*');
					gotError = false;
					
					for (var iFieldCounter=0; iFieldCounter<objField.length; iFieldCounter++) {
					
						// Allow for multiple values being assigned to the class attribute
						arClass = objField[iFieldCounter].className.split(' ');
												
						for (var iClassCounter=0; iClassCounter<arClass.length; iClassCounter++) {
						
							if (objField[iFieldCounter].nodeName.toLowerCase() != 'label') {
																
								switch (arClass[iClassCounter]) {
																
									case 'check':		      	
										bValid 		= formchecker.isChecked(objField[iFieldCounter]);
										errorMsg	= 'Gelieve dit aan te vinken.\n';
										break;
																
									case 'select':		      	
										bValid 		= formchecker.isSelected(objField[iFieldCounter]);
										errorMsg	= 'Gelieve een item uit de lijst te selecteren.\n';
										break;
										
									case 'string':
										bValid 		= formchecker.isString(objField[iFieldCounter].value.replace(/^\s*|\s*$/g, ''));
										errorMsg	= 'Gelieve dit veld  in te vullen.\n';
										break;
										
									case 'number' :
										bValid 		= formchecker.isNumber(trimmer.trim(objField[iFieldCounter].value));
										errorMsg	= 'Gelieve een numerieke waarde in te vullen.\n';
										break;
										
									case 'chooseface' :
										bValid 		= formchecker.isNumber(trimmer.trim(objField[iFieldCounter].value));
										errorMsg	= 'Gelieve een gezicht te kiezen.\n';
										break;
										
									case 'email' :
										bValid 		= formchecker.isEmail(trimmer.trim(objField[iFieldCounter].value));
										errorMsg	= 'Gelieve een geldig emailadres in te vullen.\n';
										break;
										
									case 'unique' :
										if (objField[iFieldCounter].value == 'EMPTY') {
											bValid		= false;
											errorMsg	= 'Gelieve een emailadres in te vullen.\n';
										}
										
										if (objField[iFieldCounter].value == 'INVALID') {
											bValid		= false;
											errorMsg	= 'Gelieve een geldig emailadres in te vullen.\n';
										}
										
										if (objField[iFieldCounter].value == 'NOK') {
											bValid		= false;
											errorMsg	= 'Deze persoon is reeds lid van een andere groep.\n';
										}
										
										if (objField[iFieldCounter].value == 'OK') {
											bValid		= true;
											errorMsg	= '';
										}
										
										break;
										
									case 'date' :
										bValid 		= formchecker.isDate(trimmer.trim(objField[iFieldCounter].value));
										errorMsg	= 'Gelieve een geldige datum in te vullen.\n';
										break;
										
									default:
										bValid = 'NULL';
									
								}
					
								if (bValid == false) {
					
									gotError = true;
																		
									objField[iFieldCounter].style.background = formchecker.nokColor;
									
									if (document.getElementById("error_" + objField[iFieldCounter].name)) {
										document.getElementById("error_" + objField[iFieldCounter].name).innerHTML			= errorMsg;
										document.getElementById("error_" + objField[iFieldCounter].name).style.visibility	= 'visible';
									}
									
								} else {
									if (bValid != 'NULL') {									
										objField[iFieldCounter].style.background = formchecker.okColor;
									
										if (document.getElementById("error_" + objField[iFieldCounter].name)) {
											document.getElementById("error_" + objField[iFieldCounter].name).innerHTML			= '';
											document.getElementById("error_" + objField[iFieldCounter].name).style.visibility	= 'hidden';
										}
									}									    
								}
							}
						}
					}
					
					
					if (gotError) {
						if (formchecker.nokMessage != '') {
							alert(formchecker.nokMessage);
						}
						$('formSubmit').disabled		= false;
						$('spinner').style.visibility	= 'hidden';
					} else {
						formchecker.objForm.submit();
					}
					
	},
		
	isSelected		: function (objField) {
						if (objField.selectedIndex == 0) {
							return false;
						} else {
							return true;
						}
	},
		
	isChecked		: function (objField) {
					  var strName = objField.name;
					  var arrOptions = document.getElementsByName(strName);
					  for (var i=0; i<arrOptions.length; i++) {
						if (arrOptions[i].checked) return true;
					  }
					  return false;
	},
		
	isString		: function (strValue) {
						return (typeof strValue == 'string' && strValue != ''); //  && isNaN(strValue)
	},
		
	isNumber		: function (strValue) {
						return (!isNaN(strValue) && strValue != '');
	},
		
	isEmail			: function (strValue) {
						var objRE = /^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,}$/;
						return (strValue != '' && objRE.test(strValue));
	},
	
	isDate			: function (strValue) {						
						return !isNaN(new Date(strValue));		// <<--- this needs checking
	}
}

	function setThemeFaceNr(nr) {
		$('themefacenr').value 		= nr;
		
		elems = getElementsByClassName(document, 'a', 'spot');
		
		for (i = 0; i < elems.length; i++) {
			elems[i].style.border	= '1px solid #336699';
		}
		
		$('spot' + nr).style.border	= '1px solid #CC0033';
	}
	
	function setFaceNr(nr) {
		$('facenr').value 		= nr;
		
		elems = getElementsByClassName(document, 'a', 'face');
		
		for (i = 0; i < elems.length; i++) {
			elems[i].style.border	= '1px solid #336699';
		}
		
		$('face' + nr).style.border	= '1px solid #CC0033';
	}
	
	function updateExample(nr) {
		if (nr == 0) {
			$('themeExample').style.visibility	= "hidden";
		} else {
			$('themeExample').style.visibility	= "visible";
			$('themeExample').src	= "images/theme_examples/" + nr + ".jpg";
		}
		return false;
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	

/*
Create the new window - 456bereastreet pwnge!
*/
/* Create the new window */
function openInNewWindow(e) {
	if (!e) var e = window.event;
	// Abort if a modifier key is pressed
	if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
		return true;
	}
	else {
		// Change "_blank" to something like "newWindow" to load all links in the same new window
	    var newWindow = window.open(this.getAttribute('href'), '_blank');
		if (newWindow) {
			if (newWindow.focus) {
				newWindow.focus();
				return false;
			}
		}
		return true;
	}
}

/*
Add the openInNewWindow function to the onclick event of links with a class name of "new-window"
*/
function getNewWindowLinks() {
	// Check that the browser is DOM compliant
	if (document.getElementById && document.createElement && document.appendChild) {
		// Change this to the text you want to use to alert the user that a new window will be opened
		var strNewWindowAlert = " (Nieuw venster)";
		// Find all links
		var links = document.getElementsByTagName('a');
		var objWarningText;
		var strWarningText;
		var link;
		for (var i = 0; i < links.length; i++) {
			link = links[i];
			// Find all links with a class name of "non-html"
			if (/\bnon\-html\b/.exec(link.className)) {
				// Create an em element containing the new window warning text and insert it after the link text
				objWarningText = document.createElement("em");
				strWarningText = document.createTextNode(strNewWindowAlert);
				objWarningText.appendChild(strWarningText);
				link.appendChild(objWarningText);
				link.onclick = openInNewWindow;
			}
		}
		objWarningText = null;
	}
}

Event.observe(window, 'load', iedereenleeft.init, false);
Event.observe(window, 'load', getNewWindowLinks, false);

