$(document).ready(function() {
	// Handle site search
	$('#but-search').click(function(event) {
		event.preventDefault();
		
		if ($('#keywords').val() != '') {
			$('#search-form').submit();
		} else {
			alert('Please enter a search term before clicking "Search"');
		}
	});
	
	// Handle portrait popups
	$('img.portrait').click(function(event) {
		var lg = $(this).attr('src').replace(/_sm.jpg/, '_lg.jpg');
		event.preventDefault();
		window.open(lg, "pop", "width=345,height=441,menubar=no,status=no,toolbar=no");
		return false;
	});
	
	// Handle Popup links
	$("a.pops").click(function(event) {
		var dims = this.rel.split('x');
		window.open(this.href, "pop", "width="+dims[0]+",height="+dims[1]+",menubar=no,status=no,toolbar=no");
		return false;
	});
	
	//	Handle Popup close links
	$("a.close").click(function(event) {
		window.close();
		return false;
	});
	
	// Handle show/hides
	$('a[@rel=showhide]').click(function(event) {
		$('div#' + this.href).slideToggle('slow');
		return false;
	});
	
	// Handle external links
	$("a[@rel=external]").click(function(event) {
		window.open(this.href);
		return false;
	});
	
	$('a.back2').click(function(event) {
		event.preventDefault();
		showpage(this, 'back');
	});
	
	$('a.next').click(function(event) {
		event.preventDefault();
		showpage(this, 'next');
	});
	
	// Handle manager login form button
	$('#manager_login_submit').click(function(event) {
		event.preventDefault();
		$('form[@name=login_form]').submit();
	});
	
	// Handle manager edit form button
	$('#manager_edit_submit').click(function(event) {
		event.preventDefault();
		$('#entryform').submit();
	});
	
	// Handle manager request form button
	$('#manager_request_submit').click(function(event) {
		event.preventDefault();
		$('#manager-request-form').submit();
	});
	
	// Handle Getting Started Step 1 submit
	$('#start-continue').click(function(event) {
		event.preventDefault();
		$('#getting_started1').submit();
	});
	
	// Handle Getting Started Step 2 submit
	$('#start-submit').click(function(event) {
		event.preventDefault();
		$('#getting_started2').submit();
	});
	
	// Handle ClubWrap registration button
	$('#clubwrap_register').click(function(event) {
		event.preventDefault();
		$('#clubwrapregister').submit();
	});
	
	// Handle ClubWrap registration button
	$('#clubwrap_register2').click(function(event) {
		event.preventDefault();
		$('#clubwrapregister2').submit();
	});
	
	// Handle Blog registration button
	$('#blog_register').click(function(event) {
		event.preventDefault();
		$('#blogregister').submit();
	});
	
	// Handle member login submit
	$('#member_login').click(function(event) {
		event.preventDefault();
		$('form[@name=login_form]').submit();
	});
	
	// Handle blog member login submit
	$('#blogmember_login').click(function(event) {
		event.preventDefault();
		$('form[@name=login_form]').submit();
	});
	
	// Handle member forgot password submit
	$('#forgot_password_submit').click(function(event) {
		event.preventDefault();
		$('#user_forgot').submit();
	});
	
	// Handle member change password submit
	$('#change_password_submit').click(function(event) {
		event.preventDefault();
		$('#member_form').submit();
	});
	
	// Handle Financial Library go button
	$('#search_go').click(function(event) {
		event.preventDefault();
		if ($('#library_keywords_new').val() == '') {
			alert('Please supply a keyword before searching the library.');
		} else {
			$('#searchform').submit();
		}
	});
	
	// Handle email article submit button
	$('#popup #submit').click(function(event) {
		event.preventDefault();
		$('#email_to_friend_form').submit();
	});
	
	// Handle customer service submit button
	$('#submit').click(function(event) {
		event.preventDefault();
		$('#freeform').submit();
	});
	
	// Handle blog comment submit button
	$('#comment_submit').click(function(event) {
		event.preventDefault();
		$('#comment_form').submit();
	});
	
	// Handle blog member form (screen_name) submit button
	$('#screen_name_submit').click(function(event) {
		event.preventDefault();
		$('#member_form').submit();
	});
	
	// Handle share this link menu
	$('#share-this').click(function(event) {
		event.preventDefault();
		$('#share-menu').toggle();
	});
	
	// Handle select all checkboxes
	$('#manager-request-form input.select_all').click(function() {
		var tog = $(this).is(":checked");
		var id	= $(this).attr('id').split('-')[0];
		var txt = ( tog ) ? 'Unselect' : 'Select';
		
		$(this).next('span').text(txt);
		
		$('input[id^='+ id +']:not(":last")').attr("checked", tog);
	});
	
	// Handle fake IE CSS :after
	if ( $.browser.msie && $('.bluebox a') ) {
		$('.bluebox a').append('&nbsp;<img src="/images/layout/bluearrow.gif" alt="" />');
	}
});

function showpage(el, dir) {
	var id 	= el.href.slice(-2, -1);
	var old = (dir == 'next') ? parseInt(id) - 1 : parseInt(id) + 1;
	$('#page'+old).hide();
	$('#page'+id).show();
}

// cookie functions http://www.quirksmode.org/js/cookies.html

function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) { createCookie(name,"",-1); }

// Create Text Size control bar and build interaction

function textSize() {
	var textSize	= '<span class="textsize right">Text Size:<a href="" id="sm">A</a><a href="" id="md">A</a><a href="" id="lg">A</a></span>';
	$("div.content h3.pagetitle").before(textSize);
	$("span.textsize a").click(function() {
		var clss	= this.id;
		$(this).parents('span').children('a').removeClass("selected");
		$(this).addClass("selected");
		swapSheet(this.id);
		return false;
	});
	$("div.content h1.pagetitle").before(textSize);
	$("span.textsize a").click(function() {
		var clss	= this.id;
		$(this).parents('span').children('a').removeClass("selected");
		$(this).addClass("selected");
		swapSheet(this.id);
		return false;
	});
}

// Append inline alternate stylesheets to DOM

function swapSheet(id) {
	 $("link[@rel*=alternate style]").each(function(i) {
		this.disabled = true;
		if (this.getAttribute('title') == id) this.disabled = false;
	});
	createCookie('style', id, 365);
}

// Find cookie and envoke correct stylesheet if set

function cookieExists() {
	var c = readCookie('style');
	if (c) { swapSheet(c); $("a#" + c).addClass("selected");
	} else { $("a#sm").addClass("selected"); }
}

// Remove useless whitespace from all unordered lists in a page
function cleanLists() {
	$("ul").each(function() {
		var node	= this.firstChild;
		while(node) {
			var nextNode	= node.nextSibling;
			if(node.nodeType == 3 && !(/\S/).test(node.nodeValue))
			this.removeChild(node);
			node	= nextNode;
		}
		return this;
	});
}

function validate ( form, error )
{
	var fields		= new Array( 'firstname', 'lastname', 'email' );
	var phones		= new Array();
	var radios		= new Array();
	var tbl_radios	= new Array();
	var checkboxes 	= new Array();
	
	if ( form == "email_to_friend_form" )
	{
		fields.push( 'recipient_firstname', 'recipient_lastname', 'recipient_email' );
	}
	else
	{
		if ( form != "clubwrapregister2" && form != "blogregister" )
		{
			fields.push( 'state' );
		}
	}
	
	if ( form == 'blogregister' )
	{
		fields.push( 'screen_name' );
	}
	
	if ( form == 'manager-request-form' )
	{
		checkboxes.push( 'selected_reports' );
		fields.push( 'home_telephone' );
		phones.push( 'home_telephone' );
	}
	
	if ( form == "getting_started1" )
	{
		radios.push( 'primary_income' );
		radios.push( 'account_type' );
		radios.push( 'portfolio_fund' );
		radios.push( 'current_income' );
		radios.push( 'portfolio_period' );
	}
	
	if ( form == "getting_started2" )
	{
		radios.push( 'risk_tolerance' );
		radios.push( 'investment_objective' );
		tbl_radios.push( 'goal_purchasing_power' );
		tbl_radios.push( 'goal_consistent_return' );
		tbl_radios.push( 'goal_longterm_growth' );
		tbl_radios.push( 'goal_high_yield' );
		tbl_radios.push( 'goal_low_volatility' );
		tbl_radios.push( 'goal_high_return' );
		tbl_radios.push( 'goal_tax_efficiency' );
		fields.push( 'home_telephone' );
		phones.push( 'home_telephone' );
		phones.push( 'work_telephone' );
	}

	if ( form == "clubwrapregister" || form == "clubwrapregister2" || form == "blogregister" )
	{
		fields.push( 'password' );
		fields.push( 'password_confirm' );
	}
	
	if ( form == "clubwrapregister" )
	{
		fields.push( 'home_telephone' );
		phones.push( 'home_telephone' );
		phones.push( 'work_telephone' );
	}
	
	if ( form == "member_form" ) {
		fields = new Array("current_password", "password", "password_confirm");
	}
	
	//	-------------------------------------
	//	Validate reg form
	//	-------------------------------------
	
	$("form#" + form).submit( function(event)
	{
		//	-------------------------------------
		//	Reset
		//	-------------------------------------
		
		var msg	= "";
		
		$("form#" + form + " input").parent("p").removeClass("error");
		$("form#" + form + " select").parent("p").removeClass("error");
		$("form#" + form + " label").parent("p").removeClass("error");
		
		//	-------------------------------------
		//	Validate recepient email
		//	-------------------------------------
		
		if ( form == "email_to_friend_form" )
		{
			var email	= $("form#" + form + " input[@name='recipient_email']").val();
			
			if ( /^[^\s,;]+@([^\s.,;]+\.)+[\w-]{2,}$/i.test(email) == false )
			{
				$("form#" + form + " input[@name='recipient_email']").parent("p").addClass("error");
				
				msg	+=	"<li>Please provide a valid recipient email address.</li>"; 
			}
		}
		
		//	-------------------------------------
		//	Validate email
		//	-------------------------------------
		
		if ( form != "member_form" ) { // Execute if not change password form
			var email	= $("form#" + form + " input[@name='email']").val();

			if ( /^[^\s,;]+@([^\s.,;]+\.)+[\w-]{2,}$/i.test(email) == false )
			{
				$("form#" + form + " input[@name='email']").parent("p").addClass("error");

				msg	+=	"<li>Please provide a valid email address.</li>"; 
			}
		}
		
		//	-------------------------------------
		//	Validate phone
		//	-------------------------------------
		//	Disabling this as we assume some
		//	international people will submit forms
		//	-------------------------------------
		
		/*
		
		var phone			= '';
		
		var invalid_phone	= false;
		
		$.each( phones, function(i,n)
		{
			if ( $("form#" + form + " input[@name='" + n + "']").val() != '' )
			{
				phone	= $("form#" + form + " input[@name='" + n + "']").val();
		
				if ( /^[1-9]\d{2}\-?\d{3}\-\d{4}$/.test(phone) == false )
				{
					$("form#" + form + " input[@name='" + n + "']").parent("p").addClass("error");
					
					invalid_phone	= true;
				}
			}		
		});
		
		if ( invalid_phone )
		{
			msg	+=	"<li>Please format phone numbers as xxx-xxx-xxxx.</li>"; 
		}
		
		*/
		
		//	-------------------------------------
		//	Check password match
		//	-------------------------------------
		
		if ( $("form#" + form + " input[@name='password']").val() != $("form#" + form + " input[@name='password_confirm']").val() )
		{
			$("form#" + form + " input[@name='password']").parent("p").addClass("error");
			
			$("form#" + form + " input[@name='password_confirm']").parent("p").addClass("error");
			
			msg	+= "<li>Please make sure that your password confirmation matches your password.</li>";
		}
		
		//	-------------------------------------
		//	Check password length
		//	-------------------------------------
		
		if ( form == "clubwrapregister" || form == "clubwrapregister2" )
		{
			var password	= $("form#" + form + " input[@name='password']").val();
			
			if ( password.length < 5 )
			{
				$("form#" + form + " input[@name='password']").parent("p").addClass("error");
			
				$("form#" + form + " input[@name='password_confirm']").parent("p").addClass("error");
			
				msg	+= "<li>Passwords must be at least 5 characters long.</li>";
			}
		}
		
		//	-------------------------------------
		//	Check empties
		//	-------------------------------------
	
		var empty	= false;
		
		$.each( checkboxes, function(i,n)
		{
			if( $('input[@id^=' + checkboxes[i] +']:checked').length == 0 )
			{
				empty = true;
				$("form#" + form + " label[@for='" + n + "']").parent("p").addClass("error");
			}
		});
		
		$.each( fields, function(i,n)
		{	
			if ( n == 'state' )
			{
				if ( $("form#" + form + " select#state").attr("value") == undefined )
				{
					$("form#" + form + " select#state").parent("p").addClass("error");
					
					msg	+=	"<li>Please select a state.</li>"; 
				}
			}
			else
			{
				if ( $("form#" + form + " input[@name='" + n + "']").val() == '' )
				{
					empty	= true;

					$("form#" + form + " input[@name='" + n + "']").parent("p").addClass("error");
				}
			}
		});
		
		$.each( radios, function(i,n)
		{			
			if ( $("form#" + form + " input[@name='" + n + "']:checked").val() == undefined )
			{
				empty	= true;
				
				$("form#" + form + " input[@name='" + n + "']").parent("p").addClass("error");
			}		
		});
		
		var tbl_empty	= false;
		$("p#qtable1").removeClass("error");
		
		$.each( tbl_radios, function(i,n)
		{			
			if ( $("form#" + form + " input[@name='" + n + "']:checked").val() == undefined )
			{
				//alert(n);
				empty		= true;
				tbl_empty	= true;
			}		
		});
		
		if ( tbl_empty == true )
		{
			$("p#qtable1").addClass("error");
		}
		
		if ( empty === true )
		{
			msg	+= "<li>Please complete the required fields.</li>";
		}
		
		//	-------------------------------------
		//	Check url
		//	-------------------------------------
		
		if ( form == '_realtor' )
		{	
			var empty	= false;
			
			$.each( ['url'], function(i,n)
			{
				var val = $("form#" + form + " input[@name='" + n + "']").val();
				
				if ( val == 'http://' || val == '' )
				{
					empty	= true;
					
					$("form#" + form + " input[@name='" + n + "']").parent("span").addClass("error");
				}		
			});
			
			if ( empty === true )
			{
				msg	+= "<li>Please complete the Web Site URL field.</li>";
			}
		}
				
		//	-------------------------------------
		//	Show message
		//	-------------------------------------
		
		if ( msg != '' )
		{
			$("p#" + error).show();
			$("p#" + error).empty();
			$("p#" + error).append( "<ul>" + msg + "</ul>" );
		
			return false;
		}
	});
}