/**
 * Javascripts for Fairtradegemeenten maxh001
 *
 */

$(document).ready(function() {

	// newsletter subscribe submit
	$('#newsletter .sbm').click(submitNewsletter);
	$('#newsletter_form').submit(submitNewsletter);
	// add your town
	$('#add-town-form').submit(submitTown);
	$('#add-town-form .sbm').click(submitTown);

	// check login
	$('#login-form').submit(checkLogin);
	$('#login-form .sbm').click(function() {
		$('#login-form').submit();
	});

	// add your town forgot pass
	$('#forgotpass .sbm').click(forgotPass);

	// find your town
	$('#quickfind .sbm').click(findTown);
});

/**
 * Submit subscibe formulier
 */
function submitNewsletter(evt){
	var fld = $('#newsletter #email');
	var v = fld.attr('value');
	if(!isEmail(v)) {
		fld.addClass('invalid');
		$('#newsletter #errorMsg').removeAttr("style");
	} else {
		fld.removeClass('invalid');
		$('#newsletter #errorMsg').attr("style", "display:none");
		var u = '/lib/ajax/saveNewsletter.php';
		$.post(u, '&e='+v, function(r) {
			$('#newsletter').html(r);
		});
	}
	evt.preventDefault();
}

function isEmail(v) {
	return /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(v);
}

/**
 * Submit add-your-town formulier
 */
function submitTown(evt){
	var surnameValid = chkFieldEmpty('#add-town-form #txtSurname', '#add-town-form #lblSurname');
	var firstnameValid = chkFieldEmpty('#add-town-form #txtFirstname', '#add-town-form #lblFirstname');
	var cityValid = chkFieldEmpty('#add-town-form #txtCity', '#add-town-form #lblCity');
	var zipValid = chkFieldEmpty('#add-town-form #txtZip', '#add-town-form #lblZip');
	var streetValid = chkFieldEmpty('#add-town-form #txtStreet', '#add-town-form #lblStreet');
	var telephoneValid = chkFieldEmpty('#add-town-form #txtTelephone', '#add-town-form #lblTelephone');
	var emailValid = chkFieldEmpty('#add-town-form #txtEmail', '#add-town-form #lblEmail');

	// validate email
	var fld = $('#add-town-form #txtEmail');
	var v = fld.attr('value');
	if(!isEmail(v)) {
		fld.addClass('invalid');
		$('#add-town-form #errorMsg').removeAttr("style");
	} else {
		fld.removeClass('invalid');
		$('#add-town-form #errorMsg').attr("style", "display:none");
            
		if (surnameValid && firstnameValid && cityValid && zipValid && streetValid && telephoneValid && emailValid)
		{
			var u = '/lib/ajax/saveTown.php';
			$.post  (u
				, {
					surname: $('#add-town-form #txtSurname').attr('value'),
					firstname: $('#add-town-form #txtFirstname').attr('value'),
					city: $('#add-town-form #txtCity').attr('value'),
					zip: $('#add-town-form #txtZip').attr('value'),
					street: $('#add-town-form #txtStreet').attr('value'),
					telephone: $('#add-town-form #txtTelephone').attr('value'),
					email: $('#add-town-form #txtEmail').attr('value')
				}
				, function(r) {
					$('#add-town-form').html(r);
				});
		}
	}
	evt.preventDefault();
}

/**
 * Check whether field is empty and set invalid css class for field and label
 * @param string fld
 * @param string lbl
 * return bool
 */
function chkFieldEmpty(fld, lbl) {
	var txt = $(fld);
	var label = $(lbl);
	var valid = false;
	if (txt.attr('value') == '') {
		txt.addClass('invalid');
		label.addClass('invalid');
	} else {
		valid = true;
		txt.removeClass('invalid');
		label.removeClass('invalid');
	}

	return valid;
}



/**
 * Toggle divs from select
 *
 */

function toggleDivsFromSelect(s) {
	var numOpt = s.length;
	for(var i=0; i<numOpt; i++) {
		if(s.value == s[i].value) $('#'+s[i].value).show();
		else $('#'+s[i].value).hide();
	}
}

/**
 * Check login
 */
var loginOK = false;

function checkLogin(evt){
	if (!loginOK) {
		// reset form
		$('#login-form #uname, #login-form #pass').removeClass('invalid');
		$('#login-form #empty, #login-form #wrong_user, #login-form #wrong_pass').attr("style", "display:none");

		// uname or pass empty?
		if( $('#login-form #uname').attr('value') == '' || $('#login-form #pass').attr('value') == '') {
			$('#login-form #empty').removeAttr("style");
		} else {
			// check username and pass with database
			var url = '/lib/ajax/checkLogin.php';
			var post = {
				"uname": $('#uname').attr('value'),
				"pass": $('#pass').attr('value')
			};
			$.post(url, post, function(resp) {
				// is username ok?
				if(!resp.userOK) {
					$('#login-form #uname').addClass("invalid");
					$('#login-form #wrong_user').removeAttr("style");
				}
				// is pass ok?
				if(!resp.passOK) {
					$('#login-form #pass').addClass("invalid");
					$('#login-form #wrong_pass').removeAttr("style");
				} else {
					loginOK = true;
					$('#login-form').submit();
				}
			}, 'json')
		}
		return false;
	}
}

/**
 * Submit forgotPass formulier
 */
function forgotPass(evt){
	if($('#forgotpass_form').css('display') == 'none') {
		$('#forgotpass_form').slideDown();
		
	} else {
		// reset form
		$('#forgotpass_uname').removeClass('error');

		// validation
		if($('#forgotpass_uname').attr('value') == '') {
			$('#forgotpass_uname').addClass('error');
			$('#forgotpass_uname').focus();
			return false;
		}

		$('#forgotpass div').toggle();
		var u = '/lib/ajax/forgotpass.php';
		$.post(u, {
			user:$('#forgotpass_uname').attr('value')
		} , function(r) {
			$('#forgotpass_success').html(r);
		});
	}
evt.preventDefault();
}

/**
* Find Town
 */
function findTown(evt){
	var fld = $('#quickFindTxt');
	var v = fld.attr('value');
	if(v=='') {
		fld.addClass('invalid');
	} else {
		fld.removeClass('invalid');
		$.post('/gemeente/', {quickFindTxt:fld.attr('value')});
	}
	evt.preventDefault();
}

/**
 * Homepage counter
 * 
 */

var counter = {
	
	counter_number: '',
	counter_text: '',
	
	counter_number_active: '',
	counter_number_title: '',
	counter_text_active: '',
	counter_text_title: '',
	
	interval: '',
	interval_speed: 3000,
	
	current_state: '',
	
	init: function() {
		this.counter_number = $('#counter_number');
		this.counter_text = $('#counter_text');
		this.counter_number_active = counter_number_active;
		this.counter_number_title = counter_number_title;
		this.counter_text_active = counter_text_active;
		this.counter_text_title = counter_text_title;
		this.startCounter();
	},
	
	startCounter: function() {
		this.switchCounter();
		interval = setInterval(function() { counter.switchCounter(); }, this.interval_speed);
	},
	
	switchCounter: function() {
		if(this.current_state == 'active') {
			this.updateCounter(counter_number_title);
			this.updateText(counter_text_title);
			this.current_state = 'title';
		} else {
			this.updateCounter(counter_number_active);
			this.updateText(counter_text_active);
			this.current_state = 'active';
		}
	},
	
	updateText: function(t) {
		this.counter_text.html(t);
	},
	
	updateCounter: function(num) {
		for(var i=4; i>=num.length; i--) num = '0'+num;
		this.counter_number.html(num);
	}
	
};

