/**
 * @author bnelson
 */
var programs;

jQuery( document ).ready( function()
{
	jQuery( "#wrapper-content" ).css( { background: "#FFF", borderLeft: "1px solid #B7BABC", borderRight: "1px solid #B7BABC" } );
	jQuery( "#wrapper-menu-main" ).hide();

	jQuery( ".form-item input:text" ).css( { width: "492px" } );
	jQuery( "#_topic, #_proid" ).css( { width: "495px" } );
	jQuery( "#_message" ).css( { width: "492px" } );

	getPrograms();
	
	jQuery(".form-item").append( jQuery("<div></div>").addClass( "form-message" ) );
	
	jQuery(".prompting-select").change( function()
	{
		jQuery(this).find("option[value='prompt']").remove();
	});
	
	jQuery("#submitForm").click( submitForm );
	jQuery("#resetForm").click( resetForm );
	jQuery("#cte_yes").change( function() { jQuery( ".cte-no" ).hide(); jQuery( ".cte-yes" ).show();enableForm(); } );
	jQuery("#cte_no").click( function() { jQuery( ".cte-no" ).show(); jQuery( ".cte-yes" ).hide();enableForm(); } );
});

function enableForm()
{
	jQuery( "#_emailaddress" ).removeAttr( 'disabled' );
	jQuery( "#_lastname" ).removeAttr( 'disabled' );
	jQuery( "#_firstname" ).removeAttr( 'disabled' );
	jQuery( "#_message" ).removeAttr( 'disabled' );
	jQuery( "#_authcode" ).removeAttr( 'disabled' );
	jQuery( "#_proid" ).removeAttr( 'disabled' );
	jQuery( "#_topic" ).removeAttr( 'disabled' );
	jQuery("#submitForm").removeAttr( 'disabled' );
}

function getPrograms()
{
	jQuery.ajax(
	{
		type: "POST",
		dataType: "xml",
		url: "/CTE/services/cte-services.php?cachebust=" + new Date().getTime(),
		data: { method: "GetPrograms", showAll: true, salt: jQuery( "#salt" ).val(), hash: jQuery( "#hash" ).val(), cachebreak: Math.random() },
		success: function( xml )
		{
			programs = xml;
			jQuery( xml ).find( "program" ).each( function()
			{
				if( jQuery(this).find("num").text()*1 < 500 )
				{
					jQuery("<option></option>").attr( { value: jQuery(this).find("id").text(), title: jQuery(this).find("name").text() } ).text( "(ASC) " + jQuery(this).find("name").text() ).appendTo( jQuery("#_proid") );
				} else {
					jQuery("<option></option>").attr( { value: jQuery(this).find("id").text(), title: jQuery(this).find("name").text() } ).text( "(MASTERS) " + jQuery(this).find("name").text() ).appendTo( jQuery("#_proid") );
				}
			});
		},
		error: function( XMLHttpRequest, textStatus, errorThrown )
		{
			alert( "ERROR: [contactform|getPrograms] " + textStatus + ": " + errorThrown );
		}
	} );
}

function resetForm()
{
	window.close();
}

function submitForm()
{
	validate( "email", jQuery( "#_emailaddress" ) );
	validate( "string", jQuery( "#_message" ) );
	if( jQuery("[name=ctemember]:radio:checked").val() == "yes" )
	{
		validate( "string", jQuery( "#_authcode" ) );
	} else if( jQuery("[name=ctemember]:radio:checked").val() == "no" )
	{
		validate( "string", jQuery( "#_lastname" ) );
		validate( "string", jQuery( "#_firstname" ) );
		jQuery( "#_authcode" ).val( "" );
	}
	if( jQuery("#page .invalid").size() > 0 )
	{
		return;
	}
	
	jQuery.ajax(
	{
		type: "POST",
		dataType: "xml",
		url: "/CTE/services/cte-services.php?cachebust=" + new Date().getTime(),
		data: { method: "SendContact", salt: jQuery( "#salt" ).val(), hash: jQuery( "#hash" ).val(), 
				firstname: jQuery( "#_firstname" ).val(), lastname: jQuery( "#_lastname" ).val(), 
				email: jQuery( "#_emailaddress" ).val(), proid: jQuery( "#_proid" ).val(),
				topic: jQuery( "#_topic" ).val(), message: jQuery( "#_message" ).val(), authcode: jQuery( "#_authcode" ).val(),
				type: window.location.hash },
		success: function( xml )
		{
			jQuery.modal.close();
			var type = jQuery( xml ).find( "type:first" ).text();
			if( type == "failure" )
			{
				jQuery.prompt('<strong>' + jQuery( xml ).find( "title:first" ).text() + '</strong> <p>' + jQuery( xml ).find( "body:first" ).text() + '</p>', { prefix: "mp", loaded: function(){ jQuery('#flash-sponsers').hide(); }, callback: function(){ jQuery('#flash-sponsers').show();jQuery( "#submitForm" ).removeAttr( "disabled" ); } } );
			} else if( type == "success" )
				jQuery.prompt('<strong>' + jQuery( xml ).find( "title:first" ).text() + '</strong> <p>' + jQuery( xml ).find( "body:first" ).text() + '</p>', { prefix: "mp", loaded: function(){ jQuery('#flash-sponsers').hide(); }, callback: resetForm } );
		},
		error: function( XMLHttpRequest, textStatus, errorThrown )
		{
			alert( "ERROR: [contactform|submitForm] " + textStatus + ": " + errorThrown );
		}
	});
	
	jQuery( "#submitForm" ).attr("disabled","disabled");
}

function validate( type, object )
{
	if( type == "string" )
	{
		if( StringValidator( jQuery(object).val() ) )
		{
			jQuery(object).removeClass("invalid").parent().find(".form-message").text("");
		} else {
			jQuery(object).addClass( "invalid" ).parent().find( ".form-message" ).text("Required field.");
		}
	}
	
	if( type == "email" )
	{
		if( EmailValidator( jQuery(object).val() ) )
		{
			jQuery(object).removeClass( "invalid" ).parent().find( ".form-message" ).text("");
		} else {
			jQuery(object).addClass( "invalid" ).parent().find( ".form-message" ).text("Invalid email address.");
		}
	}
}

function EmailValidator( e )
{
	var emailReg = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
	var regex = new RegExp( emailReg );
	return regex.test( e );
}

function StringValidator( s )
{
	return ( s.replace( /\s+/g, '' ) != "" );
}
