r_m="This field is required.";
alpha_m = "Only alphabets are allowed here.";
int_m = "Only integers (0-9) are allowed here.";
alphanum_m = "Only alphanumerics are allowed here."
float_m = "Only decimel numbers (eg 3.2) are allowed here.";
email_m = "This does not seem to be a valid email-id.";
phone_m = "This does not seem to be a valid phone number.";
date_m = "This does not seem to be a valid date.";
c_m="Atleast one option is required."
wrongpassword_m = "The passwords you entered do not match.";		
$(document).ready(function() {
$(this).find('form').prepend(
		'<div class="note"><span class="mandatory">&nbsp;</span> = Mandatory field</div>');	
	
	
$('form').submit(function(e) {
$(this).prev('div.totalErrors').remove();
$(this).find('div.errMsg').remove();
$(this).find('input').removeClass('errFld');
$(this).find('select').removeClass('errFld');
$(this).find('textarea').removeClass('errFld');
var tS = ':text,:password,:file,textarea';
var ne = 0;
$(this).find(implode(tS,'.required')).each(function()
	{
		var v = String($(this).val());
		if((jQuery.trim(v) == ''))
		{
			$(this).addClass('errFld');		
			$(this).after('<div class="errMsg">' + r_m + '</div>');
			ne++;
		}
	});
		  	
  	$(this).find(implode(tS,'.validate-alpha')).each(function()
	{
  		var v = String($(this).val());
			if(jQuery.trim(v) != '')
			{
				var regex = /^[a-zA-Z \s]+$/i;
				if(!regex.test(v))
				{
					$(this).addClass('errFld');		
					$(this).after('<div class=errMsg>' + alpha_m + '</div>');
					ne++;
				}
			}
	});
	$(this).find(implode(tS,'.validate-alphanum')).each(function()
	{
		var v = String($(this).val());
			if(jQuery.trim(v) != '')
			{
				var regex =/^[\w \s]+$/;
				if(!regex.test(v))
				{
						$(this).addClass('errFld');		
						$(this).after('<div class=errMsg>' + alphanum_m + '</div>');
						ne++;
				}
			}
	});
  	$(this).find(implode(tS,'.validate-integer')).each(function()
	{
  		var v = String($(this).val());
			if(jQuery.trim(v) != '')
			{ 
				var regex = /^[0-9]+$/;
				if(!regex.test(v))
				{
					$(this).addClass('errFld');		
					$(this).after('<div class=errMsg>' + int_m + '</div>');
					ne++;
				}
			}
	});
  	$(this).find(implode(tS,'.validate-float')).each(function()
	{
  		var v = String($(this).val());
			if(jQuery.trim(v) != '')
			{
				var regex = /^[0-9\.]+$/;
				if(!regex.test(v))
				{
					$(this).addClass('errFld');		
					$(this).after('<div class=errMsg>' + float_m + '</div>');
					ne++;
				}
			}
	});

  	$(this).find(implode(tS,'.validate-email')).each(function()
	{
  		var v = String($(this).val());
			if(jQuery.trim(v) != '')
			{
				var regex = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
				if(!regex.test(v))
				{
					$(this).addClass('errFld');		
					$(this).after('<div class=errMsg>' + email_m + '</div>');
					ne++;
				}
			}
		
	});
  	$(this).find(implode(tS,'.validate-date')).each(function()
	{
  		var v = String($(this).val());
			if(jQuery.trim(v) != '')
			{ 
  				var regex = /^([0-3][0-9]\/[0-3][0-9]\/[0-9][0-9][0-9][0-9])$/
  				if(!regex.test(v))
  				{
  					$(this).addClass('errFld');		
  					$(this).after('<div class=errMsg>' + date_m + '</div>');
  					ne++;
  				}
			}
	});
  	$(this).find(implode(tS,'.validate-phone')).each(function()
	{
  		var v = String($(this).val());
  		var regex = /^([0-9\-\+]+)$/;
  		
  				if(jQuery.trim(v) != '')
	  				if(!regex.test(v))
	  				{
	  					$(this).addClass('errFld');		
	  					$(this).after('<div class=errMsg>' + phone_m + '</div>');
	  					ne++;
	  				}
	});
	if (!$(this).find('input#pwd').is('.errFld') && !$(this).find('input#conPwd').is('.errFld')) {
		//alert('here');
		var pwd = $(this).find('input#pwd').val();
		var conPwd = $(this).find('input#conPwd').val();
		
		if ((conPwd != undefined) && (pwd != conPwd)) {
			alert(conPwd);
			$(this).find('#conPwd').addClass('errFld');
			$(this).find('#conPwd').after('<div class=errMsg>' + wrongpassword_m + '</div>');
			ne++;
		}
	}
	
	if($(this).find('div.required :checkbox, div.required :radio').length>0)
	{
		var elen=$(this).find('div.required :checkbox, div.required :radio').find(':checked').length;
		var el=$(this).find('div.required :checkbox, div.required :radio').not(':checked)');
		if(parseInt(elen)==0)
		{
			el.parent().after('<div class=errMsg>' + c_m + '</div>');
			ne++;
		}
	}
	
  	$(this).find('select.required').each(function()
	{
  		var v = String($(this).val());
  		var regex = /^select$/i;
  		if(jQuery.trim(v)!='')
			{
				if(regex.test(v))
				{
					$(this).addClass('errFld');		
					$(this).after('<div class=errMsg>' + r_m + '</div>');
					ne++;
				}
			}
	});
	
	if(parseInt(ne) != 0)
	{
		$(this).before('<div class=totalErrors>There are ' + ne + ' errors found! Please rectify these errors and try again.<div>');
		// Custom animation
		/*
		$(this).prev('div.totalErrors').css({'display':'none'})
		$(this).find('div.errMsg').css({'display':'none'})
		$.scrollTo('10px');
		$(this).prev('div.totalErrors').slideDown('slow');
		$(this).find('div.errMsg').slideDown('slow');
  		*/
  		return false;
	}
	return true;
});

function implode(eT, cT)
{
	var xs = ':not(:disabled):not([readonly]=readonly)';
	var s = '';
	var e  = eT.split(',');
	for(var i=0; i<=e.length-1; i++)
	{
		s = s + e[i] + xs + cT + ',';
	}
	//alert(s);
	return(s.substring(0,s.length-1));
}
	
});
(function(h){var m=h.scrollTo=function(b,c,g){h(window).scrollTo(b,c,g)};m.defaults={axis:'y',duration:1};m.window=function(b){return h(window).scrollable()};h.fn.scrollable=function(){return this.map(function(){var b=this.parentWindow||this.defaultView,c=this.nodeName=='#document'?b.frameElement||b:this,g=c.contentDocument||(c.contentWindow||c).document,i=c.setInterval;return c.nodeName=='IFRAME'||i&&h.browser.safari?g.body:i?g.documentElement:this})};h.fn.scrollTo=function(r,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};a=h.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=h(k),d=r,l,e={},p=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(d)){d=n(d);break}d=h(d,this);case'object':if(d.is||d.style)l=(d=h(d)).offset()}h.each(a.axis.split(''),function(b,c){var g=c=='x'?'Left':'Top',i=g.toLowerCase(),f='scroll'+g,s=k[f],t=c=='x'?'Width':'Height',v=t.toLowerCase();if(l){e[f]=l[i]+(p?0:s-o.offset()[i]);if(a.margin){e[f]-=parseInt(d.css('margin'+g))||0;e[f]-=parseInt(d.css('border'+g+'Width'))||0}e[f]+=a.offset[i]||0;if(a.over[i])e[f]+=d[v]()*a.over[i]}else e[f]=d[i];if(/^\d+$/.test(e[f]))e[f]=e[f]<=0?0:Math.min(e[f],u(t));if(!b&&a.queue){if(s!=e[f])q(a.onAfterFirst);delete e[f]}});q(a.onAfter);function q(b){o.animate(e,j,a.easing,b&&function(){b.call(this,r,a)})};function u(b){var c='scroll'+b,g=k.ownerDocument;return p?Math.max(g.documentElement[c],g.body[c]):k[c]}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);
