/*
 * $Revision: 0 $
 * $Author: Mike $
 */
 
/*
 * hrefID jQuery extention - returns a valid #hash string from link href attribute in Internet Explorer
 */
(function($){$.fn.extend({hrefId:function(){return $(this).attr('href').substr($(this).attr('href').indexOf('#'));}});})(jQuery);

/**
 * password_strength_plugin.js
 * Copyright (c) 2009 myPocket technologies (www.mypocket-technologies.com)
 *
 * @author Darren Mason (djmason9@gmail.com)
 * @date 3/13/2009
 * @project Description Password Strength Meter is a jQuery plug-in provide you smart algorithm to detect a password strength. Based on Firas Kassem orginal plugin - http://phiras.wordpress.com/2007/04/08/password-strength-meter-a-jquery-plugin/
 * @version 1.0.1 (modified)
 * 
 * @requires jquery.js (tested with 1.3.2)
 * @param userid: 		string,			//required override
 * @param messageloc: 	$(element)		//element to put strenght text in (and classname)
 */
(function($){$.fn.shortPass='too short';$.fn.badPass='weak';$.fn.goodPass='good';$.fn.strongPass='strong';$.fn.samePassword='username';$.fn.resultStyle="";$.fn.passStrength=function(options){var defaults={shortPass:"pass-short",badPass:"pass-bad",goodPass:"pass-good",strongPass:"pass-strong",baseStyle:"test",userid:"",messageloc:""};var opts=$.extend(defaults,options);return this.each(function(){var obj=$(this);$(obj).unbind().keyup(function(){var results=$.fn.teststrength($(this).val(),$(opts.userid).val(),opts);if(opts.messageloc!==""){opts.messageloc.attr('class',$(this).resultStyle).text(results);}});$.fn.teststrength=function(password,username,option){var score=0;if(password.length<8){this.resultStyle=option.shortPass;return $(this).shortPass;}if(password.toLowerCase()==username.toLowerCase()){this.resultStyle=option.badPass;return $(this).samePassword;}score+=password.length*4;score+=($.fn.checkRepetition(1,password).length-password.length)*1;score+=($.fn.checkRepetition(2,password).length-password.length)*1;score+=($.fn.checkRepetition(3,password).length-password.length)*1;score+=($.fn.checkRepetition(4,password).length-password.length)*1;if(password.match(/(.*[0-9].*[0-9].*[0-9])/)){score+=5;}if(password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)){score+=5;}if(password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){score+=10;}if(password.match(/([a-zA-Z])/)&&password.match(/([0-9])/)){score+=15;}if(password.match(/([!,@,#,$,%,^,&,*,?,_,~])/)&&password.match(/([0-9])/)){score+=15;}if(password.match(/([!,@,#,$,%,^,&,*,?,_,~])/)&&password.match(/([a-zA-Z])/)){score+=15;}if(password.match(/^\w+$/)||password.match(/^\d+$/)){score-=10;}if(score<0){score=0;}if(score>100){score=100;}if(score<34){this.resultStyle=option.badPass;return $(this).badPass;}if(score<68){this.resultStyle=option.goodPass;return $(this).goodPass;}this.resultStyle=option.strongPass;return $(this).strongPass;};});};$.fn.checkRepetition=function(pLen,str){var res="";for(var i=0;i<str.length;i++){var repeated=true;for(var j=0;j<pLen&&(j+i+pLen)<str.length;j++){repeated=repeated&&(str.charAt(j+i)==str.charAt(j+i+pLen));}if(j<pLen){repeated=false;}if(repeated){i+=pLen-1;repeated=false;}else{res+=str.charAt(i);}}return res;};})(jQuery);

/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

/* 
 * Scripts
 */ 
jQuery(function($) {
 
	var Profiles = {
		validation : {
			add : function($element,content,type){
				var root = this;
				$element.parent().append('<span class="icon '+type+'" title="'+content+'">'+content+'</span>');
				$element.parent().find('span.icon:last').hide().fadeIn(300).trigger('appear');
			},
			check : function($elements){
				var root = this;
				root.groups = [];
				$elements.each(function(){
					var $element = $(this);
					var error;
					
					if($element.is('input') || $element.is('textarea')){
						if($element.val() === '' && $element.attr('type') !== 'checkbox' && $element.attr('type') !== 'radio') error = 'This field cannot be left empty';
						if($element.is('.email') && /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test($element.val()) === false) error = 'Please provide valid email address';
						if($element.is('.confirm') && $element.val() != $('#'+$element.attr('id').replace('-confirm','')).val()) error = 'Fields do not match';
						if($element.attr('type') === 'checkbox' || $element.attr('type') === 'radio'){
							if($.inArray($element.attr('name'), root.groups) == '-1'){
								var $group = $('input[name='+$element.attr('name')+']');
								if($group.size() > 1 && $group.filter(':checked').size() === 0){
									error = 'Please choose from the list';
									if($element.attr('type') === 'checkbox') error = 'Please choose at least one';
								}
								if($group.size() == 1 && $group.filter(':checked').size() === 0) error = 'This field must be checked';
								root.groups[root.groups.length] = $element.attr('name');
							}
						}
					} else if($element.is('select')){
						if($element.get(0).selectedIndex === 0) error = 'Please select from the list';
					}

					if(typeof error !== 'undefined'){
						root.add($element,error,'error');
					}
				});
			},
			clear : function($element){
				var root = this;
				$element.find('span.error, span.warning, span.valid').remove();
			},
			init : function(){
				var root 		= this;
				var $forms 		= $('#enewsletters form');
				var elements 	= 'input.required, select.required, textarea.required';
				root.groups		= [];
				
				$forms.each(function(){
					$(this).find(elements).each(function(){
						$(this).focus(function(){ 
							if($(this).attr('type') === 'checkbox' || $(this).attr('type') === 'radio'){
								var $group = $('input[name='+$(this).attr('name')+']');
								root.clear($group.parent());
							} else {
								root.clear($(this).parent());
							}
						}).blur(function(){
							root.check($(this));
						});
					});
					
					$(this).submit(function(){
						var $form = $(this);
						root.clear($form);
						root.check($form.find(elements));
						
						if($(this).find('span.error').length > 0){
							var offset = $('#enewsletters span.error:first').offset();
							$.scrollTo((offset.top - 20),500);
							return false;
						}
					});
				});
			}
		},
		ui : {
			toggle : function(){
				$('#enewsletters div.first a.toggle').click(function(){
					var $target = $($(this).hrefId());
					if($target.css('display') == 'none'){
						$target.show();
					} else {
						$target.hide();
					}
					return false;
				});
			},
			tooltips : function(){
				$('span.icon').live('appear',function(){
					if($.fn.tooltip){ 
						$(this).tooltip({
							showBody: " || ",
							showURL: false,
							track: true
						});
					}
				}).filter('.info').trigger('appear');
			},
			ticks : function(){
				$('#enewsletters div.first input[type=checkbox], #enewsletters div.first input[type=radio]').click(function(){
					$(this).focus().blur();
				});
			},
			interests : function(){
				$('#enewsletters div.interests ul > li > input[type=checkbox]').click(function(){
					if($(this).attr('checked') === true){
						$(this).parent().find('ul li input[type=checkbox]').attr('checked','checked');
					} else {
						$(this).parent().find('ul li input[type=checkbox]').removeAttr('checked');
					}
				});
			},
			password : function(){
				$('input[type=password].newpass').parent().after('<p class="password">Strength of your password: <span>unknown</span></p>');
				$('input[type=password].newpass').passStrength({
					messageloc: $(this).parent().next('p.password:first span')
				});
			}
		}
	};
	
	// navigation
	Profiles.ui.password();
	Profiles.validation.init();
	Profiles.ui.toggle();
	Profiles.ui.tooltips();
	Profiles.ui.ticks();
	Profiles.ui.interests();
	
});
