// add dynamic behavior to login fields
function setUpFields() {
	if( $('#email_field').val() != 'E-mail' ) {
		$('#email_field').removeClass( 'shaded' );
	}
	
	$('#email_field').focus( function() {
		if( $.trim( $('#email_field').val() ) == 'E-mail' ) {
			$('#email_field').removeClass( 'shaded' );
			$('#email_field').val('');
		}
	});
	
	$('#email_field').blur(function() {
		if( $.trim( $('#email_field').val() ).length == 0 ) {
			$("#email_field").addClass( 'shaded' );
			$('#email_field').val( 'E-mail' );
		}
	});
	
	$('#password_field_fake').val( 'Password' );
	$('#password_field_fake').focus(function() {
			$('#password_field_fake').toggleClass( 'hidden' );
			$('#password_field').toggleClass( 'hidden' );
			$('#password_field').focus();
	});
	
	$('#password_field').blur(function() {
		if( $.trim( $('#password_field').val() ).length == 0 ) {
			$('#password_field').val( '' );
			$('#password_field_fake').toggleClass( 'hidden' );
			$('#password_field').toggleClass( 'hidden' );
		}
	});
	
	$('#key_field').val( 'Course Key' );
	$('#key_field').focus( function() {
		if( $.trim( $('#key_field').val() ) == 'Course Key' ) {
			$('#key_field').removeClass( 'shaded' );
			$('#key_field').val('');
		}
	});
	
	$('#key_field').blur(function() {
		if( $.trim( $('#key_field').val() ).length == 0 ) {
			$("#key_field").addClass( 'shaded' );
			$('#key_field').val( 'Course Key' );
		}
	});
}

// display random background image
function rotateBg() {
	var bg_images = new Array();
	
	for( var i=1; i<7; i++ ){
		bg_images[i] = new Image();
		bg_images[i].src = "images/pages/home/home_bg" + i + ".jpg";
	}
	
	var num = Math.floor(Math.random()*6) + 1;
	
	$("#main").css("backgroundImage","url(" + bg_images[num].src + ")");
}

function imgRollovers() {
	var enter_over = new Image();
	enter_over.src = "images/pages/home/enter_btn_over.png";
	
	var login_over = new Image();
	login_over.src = "images/pages/home/login_btn_over.png";
	
	var demo_over = new Image();
	demo_over.src = "images/pages/home/default_demo_over.jpg";
	
	// in js/shared/template.js
	setRollover("#enter_btn", enter_over);
	setRollover("#home_login_btn", login_over);
	setRollover("#default_demo", demo_over);
}

function selectDemo() {
	var demoPath = $("#demoMenu").val();
	
	swfobject.embedSWF( demoPath, 'video', "332", "292", "6.0.40", '', null, { wmode: 'transparent', quality: 'best' } );
}

function onEmailSignUpClick() {
	// show email subscription form if it's hidden
	if( !$('#subscriptionForm').is(':visible') ) {
		$('#subscriptionForm [name="emailCategory"]').attr( 'checked', true );
		$( '#subscriptionForm input').attr('disabled', '');
		$('#subscribeEmail').val( 'E-mail' );
		$('#emailNewsListing .hideform').show();
		$('#subscriptionForm').slideDown();
	}
}

function onCancelClick() {
	$('#subscriptionForm').slideUp();
}

function onSubscribeEmailFocus() {
	if( $.trim( $('#subscribeEmail').val() ) == 'E-mail' ) {
		$('#subscribeEmail').removeClass( 'shaded' );
		$('#subscribeEmail').val('');
	}
}

function onSubscribeEmailBlur() {
	if( $.trim( $('#subscribeEmail').val() ).length == 0 ) {
		$('#subscribeEmail').addClass( 'shaded' );
		$('#subscribeEmail').val( 'E-mail' );
	}
}

function onSubscribeSubmitClick() {
	var successMsg = 'Thank you for subscribing!';
	var failureMsg = 'There was a problem with the subscription process. Please try again.';
	var pendingMsg = 'Sending your subscription data&hellip;';
	
	$.ajax( {
		url: g_requestURLs['xfa.doSubscribeNews'],
		type: 'POST',
		data: $('#subscriptionForm').serialize(),
		dataType: 'json',
		success: function( result ) { setSubscribeStatus( result.success ? successMsg : failureMsg, true) }, 
		error: function() { setSubscribeStatus( failureMsg, true) }
	});
	
	$('#emailNewsListing .hideform').hide();
	$( '#subscriptionForm input').attr('disabled', 'disabled');
	$('#subscriptionForm').slideUp();
	setSubscribeStatus( pendingMsg );
}

function setSubscribeStatus( message, autohide ) {
	$('#subscribeStatus p').html( message );
	$('#subscribeStatus:hidden').slideDown()
	if( autohide )
		$('#subscribeStatus').delay(3000).slideUp();
}

function emailNewsValidation() {
	$('#subscriptionForm').validate( {
		rules: {
			subscribeEmail: {
				required: true,
				email: true
			},
			emailCategory: {
				required: true,
				minlength: 1
			}
		},
		messages: {
			subscribeEmail: 'Please include a valid email address',
			emailCategory: 'Please check at least one category'
		},
		
		errorElement: 'p',
		errorLabelContainer: '#subscriptionValidationErrors',
		submitHandler: onSubscribeSubmitClick
	});
}

function onActivateKeySubmit() {
	var key = encodeURIComponent( $.trim($('#key_field').val()) );
	key = ( key == 'Course%20Key' ) ? '' : key;
	var action = $('#activate_key_form').attr( 'action' ) + '&prekey=' + key;
	$('#activate_key_form').attr( 'action', action );
	$('#activate_key_form').unbind( 'submit' );
	$('#activate_key_form').submit();
	
	return false;
}

// Execute these on document load
$(document).bind('ready', function() {
	setUpFields();
	rotateBg();
	imgRollovers();
	emailNewsValidation();
	
	$('#demoMenu').bind( 'change', selectDemo );
	$('#default_demo').bind( 'click', selectDemo );
	$('#emailNewsListing .showform').bind( 'click', onEmailSignUpClick );
	$('#subscribeEmail').bind( 'focus', onSubscribeEmailFocus );
	$('#subscribeEmail').bind( 'blur', onSubscribeEmailBlur );
	$('#emailNewsListing .hideform').bind( 'click', onCancelClick );	
	$('#activate_key_form').bind( 'submit', onActivateKeySubmit );

	/* documentation at bottom of main code src: http://plugins.jquery.com/project/bt */
	$('#activate .showinfo').bt( $('#keyInfo').html(),  
								  {trigger: 'click', 
									closeWhenOthersOpen: true,
									padding: 10,
									width: 200,
									spikeLength: 0,
									cornerRadius: 7,
									fill: '#ffffff',
									strokeWidth: 1,
									strokeStyle: '#8b8a8a',
									cssStyles: {color: '#000'} } );
});
