// Function to add placeholder
function add_placeholder(fid) {
	var frm = $( '#' + fid );
	if( frm.length > 0 ) {
		var ipt = frm.find( 'input[type="text"]' );
		var cls = 'ph';
		ipt.each( function() {
			var lab = $( 'label[for="' + $(this).attr('id') + '"]' );
			var txt = lab.text();
			lab.hide();
			$(this).val(txt);
			$(this).addClass(cls);
			$(this).focus( function() {
				$(this).removeClass(cls);
				if( $(this).val() === txt ) $(this).val('');
			});
			$(this).blur( function() {
				if( $(this).val() === '' || $(this).val() === txt ) {
					$(this).val(txt);
					$(this).addClass(cls);
				}
			});
		});
	}
}

// Function to write an error message
function add_error_message( msg, fid ) {
	var eid = 'contact-form-error';
	if( msg === '' ) {
		$( '#' + eid ).remove();
	} else {
		var elm = $( '#' + eid );
		if( elm.length > 0 ) {
			elm.text(msg);
		} else {
			var err = $('<p class="error" id="' + eid + '">' + msg + '</p>');
			$( '#' + fid ).before(err);
		}
	}
}

// Function to validate form input
function validate_form(fid) {
	var e = [];
	var f = $('#' + fid + ' .required');
	f.each( function() {
		if( $(this).val() === '' || $(this).hasClass('ph') ) {
			e.push( $(this).siblings('input[type="hidden"].validation').first().val() );
		} else if( $(this).hasClass('email') ) {
			var x = /[\(\)<\>\,\;\:\\\"\[\]]/;
			var y = /^[^@]+@[^@.]+\.[^@]*\w\w$/;
			if( $(this).val().match(x) || (!y.test( $(this).val() )) ) {
				e.push( 'a valid email address' );
			}
		}
	});
	if( e.length > 0 ) {
		var m = 'Please enter ';
		m += e[0];
		if( e.length > 1 ) {
			if( e.length > 2 ) {
				for( var i = 1; i < ( e.length - 1 ); i++ ) {
					m += ', ';
					m += e[i];
				}
			}
			m += ' and ';
			m += e[e.length-1];
		}
		m += '.';
		add_error_message( m, fid );
		return false;
	}
}

// Function to activate form validation
function add_validation(fid) {
	var frm = $( '#' + fid );
	if ( frm.length > 0 ) {
		frm.submit( function() {
			return validate_form(fid);
		});
		frm.bind( 'reset', function() {
			add_error_message('');
		});
	}
}

// Function to scroll to element
function add_scroll() {
	var lnk = $('.back-to-top a');
	if( lnk.length > 0 ) {
		lnk.click( function(evt) {
			$('html, body').animate({
				scrollTop: 0
			}, 250);
			evt.preventDefault();
		});
	}
}

// Function to add lightbox effect
function add_lightbox() {
	$('.fancybox').fancybox();
}

// Function to add home page banner cycle
function add_cycle() {
	if( $('#home-banner').length > 0 ) {
		$('#home-banner').cycle();
	}
}

// Functions to run on load
$(document).ready( function() {
	add_placeholder('newsletter-form');
	add_validation('contact-form');
	add_validation('newsletter-form');
	add_scroll();
	add_lightbox();
	add_cycle();
});

