/*
Created 09/27/09										
Questions/Comments: jorenrapini@gmail.com						
COPYRIGHT NOTICE		
Copyright 2009 Joren Rapini
*/

$(document).ready(function(){
	// Place ID's of all required fields here.
	requiredAddUser = ["UserName", "Password", "PassCheck", "Voornaam", "Achternaam", "Email"];
	requiredChangeUser = ["Voornaam", "Achternaam", "Email"];
	requiredChild = ["Voornaam", "Achternaam"];
	requiredContract = ["ContractNummer"];
    // If using an ID other than #email or #error then replace it here
	email = $("#Email");
	// The text to show up within a field when it is incorrect
	emptyerror = "* Dit veld is verplicht.";
	emailerror = "* Geef een geldig emailadres.";
	wachtwoordError = "* wachtwoorden koment niet overeeen."

	initiateTotals();
	
	$("#addUserForm").submit(function(){	
		//Validate required fields
		for (i=0;i<requiredAddUser.length;i++) {
			var input = $('#'+requiredAddUser[i]);
			if ((input.val() == "") || (input.val() == emptyerror)) {
				input.addClass("needsfilled");
				var errorDiv = $('#'+requiredAddUser[i]+'Error');
				errorDiv.text(emptyerror);
			} else {
				input.removeClass("needsfilled");
			}
		}
		// Validate the e-mail.
		if (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email.val())) {
			email.addClass("needsfilled");
			$("#EmailError").text( emailerror );
		}

		if ( $("#Password").val() != $("#PassCheck").val() )
		{
			$("#PassCheck").addClass("needsfilled");
			$("#PassCheckError").text("* wachtwoorden zijn niet gelijk.");
		}
		
		//if any inputs on the page have the class 'needsfilled' the form will not submit
		if ($(":input").hasClass("needsfilled")) {
			return false;
		} else {
			return true;
		}
	});
	
	$("#changeUserForm").submit(function(){	
		//Validate required fields
		for (i=0;i<requiredChangeUser.length;i++) {
			var input = $('#'+requiredChangeUser[i]);
			if ((input.val() == "") || (input.val() == emptyerror)) {
				input.addClass("needsfilled");
				var errorDiv = $('#'+requiredChangeUser[i]+'Error');
				errorDiv.text(emptyerror);
			} else {
				input.removeClass("needsfilled");
			}
		}
		// Validate the e-mail.
		if (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email.val())) {
			email.addClass("needsfilled");
			$("#EmailError").text( emailerror );
		}

		if ( $("#Password").val() != $("#PassCheck").val() )
		{
			$("#PassCheck").addClass("needsfilled");
			$("#PassCheckError").text("* wachtwoorden zijn niet gelijk.");
		}
		
		//if any inputs on the page have the class 'needsfilled' the form will not submit
		if ($(":input").hasClass("needsfilled")) {
			return false;
		} else {
			return true;
		}
	});
	/*
	$("#addChild").submit(function(){	
		//Validate required fields
		for (i=0;i<requiredChild.length;i++) {
			var input = $('#'+requiredChild[i]);
			if ((input.val() == "") || (input.val() == emptyerror)) {
				input.addClass("needsfilled");
				var errorDiv = $('#'+requiredChild[i]+'Error');
				errorDiv.text(emptyerror);
			} else {
				input.removeClass("needsfilled");
			}
		}
		
		//if any inputs on the page have the class 'needsfilled' the form will not submit
		if ($(":input").hasClass("needsfilled")) {
			return false;
		} else {
			return true;
		}
	});	
	*/
	$("#changeChild").submit(function(){	
		//Validate required fields
		for (i=0;i<requiredChild.length;i++) {
			var input = $('#'+requiredChild[i]);
			if ((input.val() == "") || (input.val() == emptyerror)) {
				input.addClass("needsfilled");
				var errorDiv = $('#'+requiredChild[i]+'Error');
				errorDiv.text(emptyerror);
			} else {
				input.removeClass("needsfilled");
			}
		}
		
		//if any inputs on the page have the class 'needsfilled' the form will not submit
		if ($(":input").hasClass("needsfilled")) {
			return false;
		} else {
			return true;
		}
	});	
	
	$("#addContract").submit(function(){	
		//Validate required fields
		for (i=0;i<requiredContract.length;i++) {
			var input = $('#'+requiredContract[i]);
			if ((input.val() == "") || (input.val() == emptyerror)) {
				input.addClass("needsfilled");
				var errorDiv = $('#'+requiredContract[i]+'Error');
				errorDiv.text(emptyerror);
			} else {
				input.removeClass("needsfilled");
			}
		}
		
		//if any inputs on the page have the class 'needsfilled' the form will not submit
		if ($(":input").hasClass("needsfilled")) {
			return false;
		} else {
			return true;
		}
	});	
	
	$("#changeContract").submit(function(){	
		//Validate required fields
		for (i=0;i<requiredContract.length;i++) {
			var input = $('#'+requiredContract[i]);
			if ((input.val() == "") || (input.val() == emptyerror)) {
				input.addClass("needsfilled");
				var errorDiv = $('#'+requiredContract[i]+'Error');
				errorDiv.text(emptyerror);
			} else {
				input.removeClass("needsfilled");
			}
		}
		
		//if any inputs on the page have the class 'needsfilled' the form will not submit
		if ($(":input").hasClass("needsfilled")) {
			return false;
		} else {
			return true;
		}
	});	
	
	$("#wachtwoordWijzigen").submit(function(){	
		//Validate required fields
		requiredWachtwoord = ["wachtwoord", "confirmWachtwoord"];		
		
		for (i=0;i<requiredWachtwoord.length;i++) {
			var input = $('#'+requiredWachtwoord[i]);
			if ((input.val() == "") || (input.val() == emptyerror)) {
				input.addClass("needsfilled");
				var errorDiv = $('#'+requiredWachtwoord[i]+'Error');
				errorDiv.text(emptyerror);
			} else {
				input.removeClass("needsfilled");
			}
		}
		
		//if any inputs on the page have the class 'needsfilled' the form will not submit
		if ($(":input").hasClass("needsfilled")) {
			return false;
		} else {
			var ww = $('#wachtwoord');
			var cww = $('#confirmWachtwoord');
			
			if( ww.val() == cww.val() )
				return true;
			else
			{
				var errorDiv = $('#confirmWachtwoordError');
				ww.val( "" );
				cww.val( "" );
				errorDiv.text(wachtwoordError);
				return false;
			}
		}
	});	
		
	// Clears any fields in the form when the user clicks on them
	$(":input").click(function(){		
	   if ($(this).hasClass("needsfilled") ) {
			$(this).val("");
	   }
	});
	
	$(":input").change(function(){		
		   if ($(this).hasClass("needsfilled") ) 
		   {
			    var errorDiv = $( '#'+$(this).attr("ID")+'Error');
				errorDiv.text( '*' );
				$(this).removeClass("needsfilled");
		   }
	});

        $(".uurinvoer:input").keypress(function(event){
            if( event.which >= 48 && // 0--9
                event.which <= 57 ||
                event.which == 44 ||    // ,
                event.which == 45 ||    // -
                event.which == 46 ||    // .
                event.keyCode == 8  ||  // delete
                event.keyCode == 46 ||  // backspace
                event.keyCode == 37 ||  // arrow rigth
                event.keyCode == 39 )   // arrow left
            {
                return true;
            }
            else
            {
                return false;
            }
        });

	$(".uurinvoer:input").keyup(function(event){
		var val = $(this).val();
		var re = new RegExp("^(-)?(\\d*)([,.])?(\\d+)?$" );
		var res = re.exec( val );

		var uur = 0;
		var min = 0;

		if( ( res[2] != undefined ) && ( res[2] != "" ) )
		{
			uur = parseInt( res[2] )
		}

		if( ( res[3] != undefined ) && ( res[4] != undefined ) )
		{
			var tmp = parseInt( res[4] );

			if( tmp == 00 || tmp == 25 || tmp == 50 || tmp == 75 )
			{
				min = tmp * .01;
			}
			else if( tmp == 0 || tmp == 5 )
			{
				min = tmp * .1;
			}
		}

		var num = $(this).attr("name").slice(6);
		var tgt = $("#uren_"+num);

		var contr = 0;
		if( ($("#contract_"+num).val() != "" ))
		{
			contr = parseFloat($("#contract_"+num).val());
		}

		if( uur > 0 || min > 0 )
		{


			var value = 0;
			if( res[1] == '-' )
			{
				if( ( contr - ( uur + min ) ) < 0 )
				{
					tgt.val( 0 );
				}
				else
				{
					tgt.val( contr - ( uur + min ) );
				}
			}
			else
			{
				tgt.val( contr + ( uur + min ) );
			}
		}
		else
		{
			tgt.val( contr );
		}
		updateSubTotaal( num );
		updateTotaal();
	});


// 		var val = $(this).val() + String.fromCharCode(event.which);
//		var re = new RegExp("^(-)?(\\d*)([,.])?(\\d+)?$" );
//		var res = re.exec( val );
//
//		var uur = 0;
//		var min = 0;
//
//		if( ( res[2] != undefined ) && ( res[2] != "" ) )
//		{
//			uur = parseInt( res[2] )
//		}
//
//		if( ( res[3] != undefined ) && ( res[4] != undefined ) )
//		{
//			var tmp = parseInt( res[4] );
//
//			if( tmp == 00 || tmp == 25 || tmp == 50 || tmp == 75 )
//			{
//				min = tmp * .01;
//			}
//			else if( tmp == 0 || tmp == 5 )
//			{
//				min = tmp * .1;
//			}
//		}
//
//		var num = $(this).attr("name").slice(6);
//		var tgt = $("#uren_"+num);
//
//		var contr = 0;
//		var uren = new Number( 0 );
//		if( ($("#contract_"+num).val() != "" ))
//		{
//			contr = parseFloat($("#contract_"+num).val().replace(',','.'));
//		}
//
//		var value = 0;
//		if( res[1] == '-' )
//		{
//			if( ( contr - ( uur + min ) ) < 0 )
//			{
//				uren = 0;
//			}
//			else
//			{
//				uren = ( contr - ( uur + min ) );
//			}
//		}
//		else
//		{
//			uren = ( contr + ( uur + min ) );
//		}
//
//		tgt.val( uren.toFixed(2));
//
//		updateSubTotaal( num );
//
//                return true;
//           }
//           else if ( event.keyCode == 37 ||
//                     event.keyCode == 39 )
//
//           {
//
//               return true;
//           }
//           else
//               return false;
//	});
//
	function initiateTotals()
	{
		var elements = $("div[id^='totaal_']");
		$.each( elements, function( index, obj )
				{
					var num = $(obj).attr('id').slice(7) + '_1';
					updateSubTotaal( num );
				});
		updateTotaal();
	}

	function updateSubTotaal( num )
	{
		var kid = num.slice(0,num.indexOf('_'));
		var totaalUren = new Number( 0 );
		var totaalContractUren = new Number( 0 );
		var totaalDelta = new Number( 0 );

		totaalContractUren = 0;

		var elements = $("input[id^='contract_"+kid+"']");
		$.each( elements, function( index, obj )
				{
					if( $(obj).val() != "" )
					{
						totaalContractUren += parseFloat( $(obj).val() );
					}
				});

		var tgt = $("#totaalcontract_"+kid);
		tgt.text( totaalContractUren.toFixed(2) );

		elements = $("input[id^='delta_"+kid+"']");
		$.each( elements, function( index, obj )
				{
					if( $(obj).val() != "" )
					{
						totaalDelta += parseFloat( $(obj).val().replace(',','.') );
					}
				});

		tgt = $("#totaaldelta_"+kid);
		tgt.text( totaalDelta.toFixed(2) );

		elements = $("input[id^='uren_"+kid+"']");
		$.each( elements, function( index, obj )
				{
					if( $(obj).val() != "" )
					{
						totaalUren += parseFloat( $(obj).val() );
					}
				});

		tgt = $("#totaal_"+kid);
		tgt.text( totaalUren.toFixed(2) );
	}

	function updateTotaal()
	{
		var elements = $("div[id^='totaalcontract_']");
		$.each( elements, function( index, obj )
		{
			if( $(obj).text() != "" )
			{
				var totaalUren = new Number(parseFloat( $(obj).text() ) );
				var tgt = $($(obj).attr("id").replace( "totaalcontract_", "#overzichtcontract_" ));
				tgt.text( totaalUren.toFixed(2) );
			}
		});

		elements = $("div[id^='totaaldelta_']");
		$.each( elements, function( index, obj )
		{
			if( $(obj).text() != "" )
			{
				var totaalDelta = new Number(parseFloat( $(obj).text() ) );
				var tgt = $($(obj).attr("id").replace( "totaaldelta_", "#overzichtdelta_" ));
				tgt.text( totaalDelta.toFixed(2) );
			}
		});

		elements = $("div[id^='flexibeldelta_']");
		$.each( elements, function( index, obj )
		{
			var tuDiv = $($(obj).attr("id").replace( "flexibeldelta_", "#overzichtcontract_" ));
			var totaalUren = new Number( parseFloat( tuDiv.text()));
			var tdDiv = $($(obj).attr("id").replace( "flexibeldelta_", "#overzichtdelta_" ));
			var totaalDelta = new Number( parseFloat( tdDiv.text()));

			var flexDelta = new Number( totaalDelta - totaalUren );
			$(obj).text( flexDelta.toFixed(2));
		});
        }
});	

