/**
 * @author Sebastiaan
 */

 Event.observe(window, 'load', PreValidateProfileDetails);
 var amountNV = 0;
 
 /**
 * @author Tom Niessink
 * @param {eventObject} e
 */

function countKeyPressed(i, e) {
	i = $(i);
	if(!e) { e = window.event; }
	cancelKeyNoNumber(e);
}
			
function cancelKeyNoFloatingPointNumber(item, e){
	var chrs = $R("0", "9").toArray(); //the actual characters to allow to be pressed
	if (!item.value.match(/\.|,/g)) {
		chrs.push(",");
		chrs.push(".");
	}
	return cancelKeyOtherThanChars(chrs, e);
}
			
function cancelKeyNoNumber(e){
	var chrs = $R("0", "9").toArray(); //the actual characters to allow to be pressed
	return cancelKeyOtherThanChars(chrs, e);
}
		
function cancelKeyOtherThanChars(chrs, e) {
	//generic excepted charcode (pick one that is valid!!!)
	var accepted_charcode = chrs[0].charCodeAt();
	var rejected_charcode = 0;
	
	
	var charCode;
	
	//browser exceptions
	if(document.all && document.documentElement && typeof document.documentElement.style.maxHeight!="undefined") {
		//IE 7
		charCode = e.keyCode;
	} else if(document.all) {
		//IE 6
		charCode = e.keyCode;
	} else {
		// other browsers
		charCode = e.charCode;
		
		//alert('goedzo');
		// exceptions
		var backspace_tab_return = [8, 9, 13];
		var home_end_delete = [35, 36, 46];
		var cursor = [37, 38, 39, 40];
		var context_menu = 93;
		var F1_12 = $R(112, 123).toArray();
		
		//safari (object detection)
		if(window.devicePixelRatio) { 
			//safari has character keyCodes that overlap the F1_12 ones from firefox
			var F1_12 = [];
		}
		
		// exception keycodes (mostly for firefox)
		var xptns = $A([backspace_tab_return, home_end_delete, cursor, context_menu, F1_12]).flatten();
		
		if(e.keyCode && xptns.member(e.keyCode)) {
			charCode = accepted_charcode;
		} 
	}
	
	//alert(charCode);
	var s = String.fromCharCode(charCode);
	
	//alert(s);
	
	// is charCode geen charCode van een nummer (of een keyCode van een numpad toets)?
	if( !chrs.member(s.toLowerCase()) ) { 
		// alert('stopped');
		// /*
		// Event.stop(e);
		
		// stop the event from happening
		e.cancelBubble = true;
		Try.these(
			function() { e.stopPropagation(); },
			function() { e.returnValue = false; }
		);
		Try.these(
			function() { e.preventDefault() }
		);
		//*/
		return false;
	}
	//alert('not stopped');
	//alert(charCode);
	//alert(s);
	
	return true; 
}
 
/**
 * 
 * @param {Element} textfield
 */
function OldValidateEmpty(textfield)
{	
 	//if(textfield.id != "btw" || (textfield.id == "btw" && BTWverplicht($('country').value.strip()))) { //special case
		if(textfield.value == "")
		{
			
			$(textfield).next('span').removeClassName('completed');
			$(textfield).next('span').addClassName('isRequired');
			if (!textfield.hasClassName('invalid')) 
			{
				amountNV++;
			}
			$(textfield).addClassName('invalid');
		}
		else if(textfield.hasClassName('invalid'))
		{
			$(textfield).removeClassName('invalid');
			$(textfield).next('span').removeClassName('isRequired');
			$(textfield).next('span').addClassName('completed');
			amountNV--;
		}
		else
		{
			$(textfield).next('span').removeClassName('isRequired');
			$(textfield).next('span').addClassName('completed');
		}
	/*} else {
		if(textfield.hasClassName('invalid'))
		{
			$(textfield).removeClassName('invalid');
			amountNV--;
		}
		$(textfield).next('span').removeClassName('isRequired');
		$(textfield).next('span').addClassName('completed');
	}*/

    if ($(textfield).id == 'email')
    {
        if (!$(textfield).value.isEmail())
        {
            $(textfield).next('span').removeClassName('completed');
            $(textfield).next('span').addClassName('isRequired');
            if (!textfield.hasClassName('invalid'))
            {
                amountNV++;
            }
            $(textfield).addClassName('invalid');
        }
        else if(textfield.hasClassName('invalid'))
        {
            $(textfield).removeClassName('invalid');
            $(textfield).next('span').removeClassName('isRequired');
            $(textfield).next('span').addClassName('completed');
            amountNV--;
        }
    }
}


String.prototype.isEmail = function () {
    validmailregex = /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.([a-z][a-z]+)|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
    return validmailregex.test(this);
}

 
 function ValidateForm(formName)
 {
 	/*if(BTWverplicht($("country").value.strip())) {
		$('btw').next('span').show();
		OldValidateEmpty($('btw'));
	} else {
		$('btw').next('span').hide();
		ValidateEmpty($('btw'));
	}*/
    if(BTWverplicht($("country").value.strip())) {
		$('btw_message').show();
		//OldValidateEmpty($('btw'));
	} else {
		$('btw_message').hide();
		//OldValidateEmpty($('btw'));
	}
	
	if($('delSame'))
	{
		if($('delSame').checked)
		{
			$('daddress').value = $('address').value;
			$('dzip').value = $('zip').value;
			$('dcity').value = $('city').value;
			$('dcountry').value = $('country').value;	
			OldValidateEmpty($('daddress'));
			OldValidateEmpty($('dzip'));
			OldValidateEmpty($('dcity'));
			OldValidateEmpty($('dcountry'));
		}
	}
	
	if(amountNV > 0)
	{
		//alert('disabled');
		$('save').disabled = 'disabled';
		$('save').removeClassName('ison');
		$('save').addClassName('isoff');			
	}
	else
	{
		if (formName == 'lastStep') {
			//alert("fout "+formName);
			if (($('empowered') && $('empowered').checked == true || !$('empowered')) && $('agreement') && $('agreement').checked == true) {
				$('save').disabled = '';
				$('save').removeClassName('isoff');
				$('save').addClassName('ison');
			}
			else
			{
				//alert('disabled');
				$('save').disabled = 'disabled';
				$('save').removeClassName('ison');
				$('save').addClassName('isoff');	
			}
		}
		else {
			//alert("fout "+formName);
			$('save').disabled = '';
			$('save').removeClassName('isoff');
			$('save').addClassName('ison');
		}
	}
	
	if($('save').disabled) {
		//console.debug('disabled', $('save'));
		//console.debug(amountNV);
		$('save').disabled = "";
		if (formName != 'lastStep') {
			$('save').onclick = function(){
				alert("U kunt uw profiel niet opslaan omdat niet alle verplichte velden ingevuld zijn. Vul de rood omlijnde velden en probeer het opnieuw.");
				return false;
			}
		} else {
			$('save').onclick = function(){
				alert("Nog niet alle verplichte velden zijn ingevuld. Vul de rood omlijnde velden en probeer het opnieuw.");
				return false;
			}
		}
	} else {
		$('save').onclick = null;
		//alert("goed");
	}
 }
 
 function PreValidateProfileDetails()
 {
 	if ($('profileDetails')) {
		//alert("goed");
		var items = $('profileDetails').getElements();
		items.each(function(item){
			if ($(item).hasClassName('required')) {
				OldValidateEmpty(item);
				Event.observe(item, 'blur', function(){
					OldValidateEmpty(item);
				});
				Event.observe(item, 'blur', function(){
					ValidateForm('profile');
				});
				Event.observe(item, 'keyup', function(){
					OldValidateEmpty(item);
					ValidateForm('profile');
				});				
			}
		});
		
		ValidateForm('profile');
	}
	
	if ($('lastStepConfirm')) {
		//alert("fout");
		var items = $('lastStepConfirm').getElements();
		items.each(function(item){
			if ($(item).hasClassName('required')) {
				OldValidateEmpty(item);
				Event.observe(item, 'blur', function(){
					OldValidateEmpty(item);
				});
				Event.observe(item, 'blur', function(){
					ValidateForm('lastStep');
				});
				Event.observe(item, 'keyup', function(){
					OldValidateEmpty(item);
					ValidateForm('profile');
				});
			}
		});
		
		ValidateForm('lastStep');
	}
 }
 
 /**
  * is BTW een verplicht veld om in te vullen?
  * @param {string} landNaam
  */
 function BTWverplicht(landNaam) {
 	switch(landNaam.toLowerCase()) {
		case "nederland":
		case "nederlander":
		case "nl":
		case "holland":
		case "pays-bas":
			return false;
			break;
		default:
			return true;
	}
 }

