/**
 * jQuery-Plugin "clearField"
 * 
 * @version: 1.1, 04.12.2010
 * 
 * @author: Stijn Van Minnebruggen
 *          stijn@donotfold.be
 *          http://www.donotfold.be
 * 
 * @example: $('selector').clearField();
 * @example: $('selector').clearField({ blurClass: 'myBlurredClass', activeClass: 'myactiveClass' });
 * 
 */
	
(function($){$.fn.clearField=function(s){s=jQuery.extend({blurClass:'clearFieldBlurred',activeClass:'clearFieldActive',attribute:'rel',value:''},s);return $(this).each(function(){var el=$(this);s.value=el.val();if(el.attr(s.attribute)==undefined){el.attr(s.attribute,el.val()).addClass(s.blurClass)}else{s.value=el.attr(s.attribute)}el.focus(function(){if(el.val()==el.attr(s.attribute)){el.val('').removeClass(s.blurClass).addClass(s.activeClass)}});el.blur(function(){if(el.val()==''){el.val(el.attr(s.attribute)).removeClass(s.activeClass).addClass(s.blurClass)}})})}})(jQuery);






/**
 * 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);

	// font size popup
	$('.fsize').tipsy({gravity: 's', fade: true});
	
	// clearfield
	$('.clearfield').clearField();
	
	// verlanglijstje
	verlanglijstje.init();
	
});

/**
 * 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
				, {
					type_id: $('#gemeente_kind').val(),
					surname: $('#add-town-form #txtSurname').attr('value'),
					firstname: $('#add-town-form #txtFirstname').attr('value'),
					name: $('#add-town-form #txtCity').attr('value'),
                                        place: $('#add-town-form #txtPlace').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'),
					parent_gemeente_id: $('#parent_gemeente_id').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);
	}
	
};




/**
 * Validate form verlanglijstje
 * 
 */

var verlanglijstje = {};

verlanglijstje.init = function() {
	
	verlanglijstje.$form = $('#verlanglijstjeform').submit(function(e) { if(!verlanglijstje.valid()) e.preventDefault(); });
	verlanglijstje.$cbxs = $('input[name="cb[]"]', verlanglijstje.$form);
	verlanglijstje.$type = $('select[name="type"]', verlanglijstje.$form);
	verlanglijstje.$orgname = $('input[name="orgname"]', verlanglijstje.$form);
	verlanglijstje.$orgnameli = $('li.fld_orgname', verlanglijstje.$form);
	verlanglijstje.$firstname = $('input[name="firstname"]', verlanglijstje.$form);
	verlanglijstje.$lastname = $('input[name="lastname"]', verlanglijstje.$form);
	verlanglijstje.$age = $('input[name="age"]', verlanglijstje.$form);
	verlanglijstje.$city = $('input[name="city"]', verlanglijstje.$form);
	verlanglijstje.$email = $('input[name="email"]', verlanglijstje.$form);
	verlanglijstje.numChecked = verlanglijstje.$cbxs.filter(':checked').size();
	verlanglijstje.$reqOther = $('#requireotherfield', verlanglijstje.$form);
	verlanglijstje.$other = $('input[name="cb_other"]', verlanglijstje.$form);
	verlanglijstje.$other2 = $('input[name="cb_other2"]', verlanglijstje.$form);
	verlanglijstje.$other3 = $('input[name="cb_other3"]', verlanglijstje.$form);
	
	$('.submitverlanglijstje').click(function(e) { e.preventDefault(); verlanglijstje.$form.trigger('submit'); });
	
	verlanglijstje.$other.click(function() { if(!verlanglijstje.$reqOther.is(':checked')) { verlanglijstje.$reqOther.attr('checked', 'checked'); }});
	verlanglijstje.$other2.click(function() { if(!verlanglijstje.$reqOther.is(':checked')) { verlanglijstje.$reqOther.attr('checked', 'checked'); }});
	verlanglijstje.$other3.click(function() { if(!verlanglijstje.$reqOther.is(':checked')) { verlanglijstje.$reqOther.attr('checked', 'checked'); }});
	
	verlanglijstje.$cbxs.click(function(e) {
		
		verlanglijstje.numChecked = verlanglijstje.$cbxs.filter(':checked').size();
		
		if(verlanglijstje.numChecked == 3) verlanglijstje.$cbxs.not(':checked').attr('disabled', 'disabled');
		else if(verlanglijstje.numChecked > 3) e.preventDefault();
		else verlanglijstje.$cbxs.attr('disabled', false);
		
		var checker = (verlanglijstje.$reqOther.is(':checked')) ? verlanglijstje.numChecked-1 : verlanglijstje.numChecked;
		switch(checker) {
			
			case 1:
				verlanglijstje.$other.show();
				verlanglijstje.$other2.show();
				verlanglijstje.$other3.val('').hide();
				break;
			
			case 2:
				verlanglijstje.$other.show();
				verlanglijstje.$other2.val('').hide();
				verlanglijstje.$other3.val('').hide();
				break;
			
			case 3:
				verlanglijstje.$other.val('').hide();
				verlanglijstje.$other2.val('').hide();
				verlanglijstje.$other3.val('').hide();
				break;
			
			default:
				verlanglijstje.$other.show();
				verlanglijstje.$other2.show();
				verlanglijstje.$other3.show();
				break;
			
		}
		
	});
	
	verlanglijstje.$type.change(function() {
		if($.inArray($(this).val(), ['bedrijf', 'restaurant', 'school']) != -1) verlanglijstje.$orgnameli.show();
		else verlanglijstje.$orgnameli.hide();
	});
	
};

verlanglijstje.valid = function() {
	
	verlanglijstje.removeErrors();
	var valid = true;
	
	if(verlanglijstje.$type.val() == '' || verlanglijstje.$type.val() == verlanglijstje.$type.attr('rel')) valid = verlanglijstje.addError(verlanglijstje.$type);
	if($.inArray(verlanglijstje.$type.val(), ['bedrijf', 'restaurant', 'school']) != -1 && (verlanglijstje.$orgname.val() == '' || verlanglijstje.$orgname.val() == verlanglijstje.$orgname.attr('rel'))) valid = verlanglijstje.addError(verlanglijstje.$orgname);
	if(verlanglijstje.$firstname.val() == '' || verlanglijstje.$firstname.val() == verlanglijstje.$firstname.attr('rel')) valid = verlanglijstje.addError(verlanglijstje.$firstname);
	if(verlanglijstje.$lastname.val() == '' || verlanglijstje.$lastname.val() == verlanglijstje.$lastname.attr('rel')) valid = verlanglijstje.addError(verlanglijstje.$lastname);
	if(verlanglijstje.$age.val() == '' || verlanglijstje.$age.val() == verlanglijstje.$age.attr('rel')) valid = verlanglijstje.addError(verlanglijstje.$age);
	if(verlanglijstje.$city.val() == '' || verlanglijstje.$city.val() == verlanglijstje.$city.attr('rel')) valid = verlanglijstje.addError(verlanglijstje.$city);
	if(!verlanglijstje.isEmail(verlanglijstje.$email.val())) valid = verlanglijstje.addError(verlanglijstje.$email);
	if(verlanglijstje.numChecked == 0 || verlanglijstje.numChecked > 3) valid = verlanglijstje.addError(verlanglijstje.$cbxs);
	if(verlanglijstje.$reqOther.is(':checked') && verlanglijstje.$other.val() == '') valid = verlanglijstje.addError(verlanglijstje.$other);
	
	return valid;
	
};

verlanglijstje.removeErrors = function() {
	$('.error', verlanglijstje.$form).removeClass('error');
};

verlanglijstje.addError = function($el) {
	$el.addClass('error').parent('label').addClass('error');
	return false;
};

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




