$(document).ready(function() {
	
	// add google analytics tracking to external links
	jQuery('a[href]').each(function(i) {
		var h = jQuery(this).attr('href');
		if (h.search(/http/i) == 0) {
			jQuery(this).bind('click', function(event) {
				var z = h.indexOf('://');
				var u = '/outgoing/' + h.substring(z+3);
				try {
					pageTracker._trackPageview(u);
				}
				catch(err) {}
			});
		}
	});
	
	// adjust artist bio pic height
	var bioPic = new Image();
	bioPic.onload = function() {
		if (this.height > 300) {
			$('#bioPic').addClass('portraitPic');
			$('#bioLinks').addClass('portraitPic');
		}
	};
	bioPic.src = $('#bioPic').attr('src');
	
	
	// add more/less links to bio and highlight text
	jQuery('#bioText, #bioHighlight').each(function() {
		var self = this;
		
		var minSize = $(self).height();
		var maxSize = $(self).children('div').height();
		if (maxSize > minSize) {
			var link = $(document.createElement('a'));
			link.attr('href', '#');
			link.attr('class', 'textMoreLink');
			link.html('[more]')
			
			link.toggle(function(e) {
				$(self).animate({'height':maxSize}, 'medium');
				$(this).html('[less]');
				return false;
			}, function(e){
				$(self).animate({'height':minSize}, 'medium');
				$(this).html('[more]');
				return false;
			});
			$(self).after(link);
			
		}
	});
	
	
	//bind sign up form
	if ($('form#joinForm').size() > 0) {
		
		
		
		
		$('#email').bind('keyup blur focus', function(event) {
			var feedback = $(this).next();
			feedback.attr('class','');
			
			var filter = /^([a-zA-Z0-9_\.\-\!])+\@(([a-zA-Z0-9\-])+\.)+([a-z]{2,3})$/;
			
			if (filter.test(this.value)) {
				feedback.html('email address formatted correctly');
				feedback.addClass('success');
			}
			else {
				feedback.html('your email address is incorrectly formatted.');
				feedback.addClass('error');
			}
		});
		
		
		$('#pass1').bind('keyup blue focus', function(event) {
			var feedback = $(this).next();
			feedback.attr('class','');
			
			var rating = passwordTester(this.value);
			var check_pass2 = true;
			
			switch(rating) {
				case 0:
					feedback.html('password must be more then 4 characters');
					feedback.addClass('error');
					check_pass2 = false;
					break;
				case 1:
					feedback.html('weak password');
					feedback.addClass('notification');
					break;					
				case 2:
				case 3:
					feedback.html('medium strength password');
					feedback.addClass('notification');
					break;
				case 4:
				case 5:
					feedback.html('strong password');
					feedback.addClass('success');
					break;
				default:
					alert('error');
			}
			
			if (check_pass2) {
				var pass2_feedback = $('#pass2').next();
				pass2_feedback.attr('class','');
				
				if ($('#pass1').val() == $('#pass2').val()) {
					pass2_feedback.html('your passwords match');
					pass2_feedback.addClass('success');
				}
				else {
					pass2_feedback.html('your passwords do not match');
					pass2_feedback.addClass('error');
				}
			}
		});
		
		
		$('#pass2').bind('keyup blur focus', function() {
			var feedback = $(this).next();
			feedback.attr('class','');
			
			if ($('#pass1').val() == $('#pass2').val()) {
				feedback.html('your passwords match');
				feedback.addClass('success');
			}
			else {
				feedback.html('your passwords do not match');
				feedback.addClass('error');
			}
		});
		
		
		$('#country').bind('change', function() {
			var selection = this.value;
			var url = '/ajax.php';
			
			$('#states').remove();
			
			$.get(url, {'action':'getChildLocations', 'parent':selection}, function(data) {
				// if no children do nothing
				if (data == "([])") {
					return false;
				}
				
				// evaluate JSON data of child locations
				var children = eval(data);
				
				// create a html string 
				var html = "<div id='states'><label>&nbsp;</label><select name='location[]'>";
				for (var child_id in children) {
					html += "<option value='" + child_id + "'>" + children[child_id] + "</option>";
				}
				html += "</select><p>&nbsp;</p></div>";
				
				// append the new html string after country selector
				$('#country').next().after(html);
			});
		});
		
		$('#joinForm input').bind('keyup blur focus', function(event) {
			var email = $('#email').next().hasClass('success');
			var pass1 = $('#pass1').next().hasClass('success') || $('#pass1').next().hasClass('notification');
			var pass2 = $('#pass2').next().hasClass('success');
			
			if (email && pass1 && pass2) {
				$('#submit').attr('disabled',false);
			}
			else {
				$('#submit').attr('disabled',true);
			}
		});
		
		$('#country').change();
		$('#submit').attr('disabled', true);
		$('#email').focus();


	}
	
	
	
	//bind forgotten password form
	if ($('form#forgottenForm').size() > 0) {
		
		$('#email').bind('keyup blur focus', function(event) {
			var feedback = $(this).next();
			feedback.attr('class','');
			
			var filter = /^([a-zA-Z0-9_\.\-\!])+\@(([a-zA-Z0-9\-])+\.)+([a-z]{2,3})$/;
			
			if (filter.test(this.value)) {
				feedback.html('email address formatted correctly');
				feedback.addClass('success');
			}
			else {
				feedback.html('your email address is incorrectly formatted.');
				feedback.addClass('error');
			}
		});
		
		$('#forgottenForm input').bind('keyup blur focus', function(event) {
			var email = $('#email').next().hasClass('success');
			
			if (email) {
				$('#submit').attr('disabled',false);
			}
			else {
				$('#submit').attr('disabled',true);
			}
		});
		
		$('#submit').attr('disabled', true);
		$('#email').focus();

	}
	
	
	
	
	/*
	// load news and show feeds
	var url = 'feed.php';
	$('#newsfeed, #showfeed').each(function() {
		var rssAddress = $(this).attr('feed');
		if (rssAddress != null || rssAddress != undefined) {
			$.post(url, {feed:rssAddress}, function(data) {
				var feed = "";
				$('item', data).each(function(i) {
					var title = $(this).children('title').text();
					var link = $(this).children('link').val();
					var body = $(this).children('description').html();
					var date = $(this).children('pubDate').text();
					
					body = body.replace('<!--[CDATA[', '');
					body = body.replace(']]-->', '');
					
					feed += "<div>";
					feed += "<h6>"+title+"</h6>";
					feed += "<em>"+date+"</em>";
					//feed += link;
					feed += "<p>"+body+"</p>";
					feed += "</div>";
				});
				
				$('#newsfeed').html(feed);
			});
		}
	});
*/

	
});



function passwordTester(password) {
	var score = 0;
	
	if (password.length < 4) {
		return score;
	}
	
	// if password bigger than 4 give 1 point
    if (password.length > 3) {
    	score++;
    }
    
    // if password has both lower and uppercase characters give 1 point      
    if ( ( password.match(/[a-z]/) ) && ( password.match(/[A-Z]/) ) ) {
    	score++;
    }

    // if password has both numbers and characters give 1 point
    if (password.match(/\d+/) && ( password.match(/[a-z]/i) ) ) {
    	score++;
    }

    // if password has at least one special caracther give 1 point
    if ( password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/) ) { 
    	score++;
    }

    // if password bigger than 12 give another 1 point
    if (password.length > 12) {
    	score++;
    }
    
    return score;
}





