;( function ( $ ) {
	
	var COMPONENT 				= "travel._tnz.view.site.templates.trade.newsletter.cfc.Gateway";
	var POSITIONDIV				= "#div-newsletter-subscribe-position";
	var POSITIONSELECT			= "#newsletter-subscribe-position";
	var EDITIONDIV				= "#div-newsletter-subscribe-edition";
	var EDITIONSELECT			= "#newsletter-subscribe-edition";
	//var COUNTRYDIV			= "#div-newsletter-subscribe-country";
	//var COUNTRYSELECT			= "#newsletter-subscribe-country";
	var EMAILINPUT				= "#newsletter-subscribe-email";
	var FIRSTNAMEINPUT			= "#newsletter-subscribe-firstname";
	var LASTNAMEINPUT			= "#newsletter-subscribe-lastname";
	var FIRSTNAMEDIV			= "#div-newsletter-subscribe-firstname";
	var LASTNAMEDIV				= "#div-newsletter-subscribe-lastname";
	var SUBMITDIV				= "#div-newsletter-subscribe-button";

	var	TYPE					= "POST";
	var SELECTPOSITIONMESSAGE	= "#newsletter-subscribe-select-position-message";
	var SELECTEDITIONMESSAGE	= "#newsletter-subscribe-select-edition-message";
	//var SELECTCOUNTRYMESSAGE	= "#newsletter-subscribe-select-country-message";
	var ENTERNAMEMESSAGE		= "#newsletter-subscribe-enter-name-message";
	var MAINCONTAINER			= "#div-newsletter-subscribe-maincontainer";
	
	//var countriesRetrived	= false;
	var editionsRetrived	= false;
	
	$.extend
	({
		newsletterSubscribe:{
			//UI Events
				emailChange			:	function()//when the email changes
									{
										if( ! editionsRetrived )
										{
											editionsRetrived	= true;
											$.newsletterSubscribe.getEditions(
												function( result )
												{
													//$( COUNTRYSELECT ).html( result.data );
													//$( COUNTRYDIV ).slideDown();
													//$( POSITIONSELECT ).html( result.data );
													//$( EDITIONSELECT ).html( result.data );
													$( POSITIONDIV ).slideDown();		
													$( EDITIONDIV ).slideDown();																									
													$( FIRSTNAMEDIV ).slideDown();
													$( LASTNAMEDIV ).slideDown();
													$( SUBMITDIV ).slideDown();
												}
											);										
										}
									}
			,	subscribe			:	function()
									{
										var message = "";
										var valid	= true;
										
										$( FIRSTNAMEINPUT ).val( $.trim( $( FIRSTNAMEINPUT ).val() ) );
										$( LASTNAMEINPUT ).val( $.trim( $( LASTNAMEINPUT ).val() ) );
										$( EMAILINPUT ).val( $.trim( $( EMAILINPUT ).val() ) );
										
										/*
										if( $( COUNTRYSELECT ).val().length == 0  )
										{
											valid	= false;
											message += $( SELECTCOUNTRYMESSAGE ).val() + "\n"; 
										}
										*/
								
										if( $( FIRSTNAMEINPUT ).val().length === 0 || $( LASTNAMEINPUT ).val().length === 0  )
										{
											valid	= false;
											message += $( ENTERNAMEMESSAGE ).val() + "\n"; 											
										}
										if( $( POSITIONSELECT ).val().length == 0  )
										{
											valid	= false;
											message += $( SELECTPOSITIONMESSAGE ).val() + "\n"; 
										}	
										if( $( EDITIONSELECT ).val().length == 0  )
										{
											valid	= false;
											message += $( SELECTEDITIONMESSAGE ).val() + "\n"; 
										}										
										if( !valid )
										{
											alert( message	);
										}
										else
										{
											//build the args
											var oArgs	= {
													email		: $.trim( $( EMAILINPUT ).val() )
												,	position	: $( POSITIONSELECT ).val()
												,   edition		: $( EDITIONSELECT ).val()
												,	firstname	: $( FIRSTNAMEINPUT ).val()										
												,	lastname	: $( LASTNAMEINPUT ).val()										
											};
											
											$.TNZCFC.invoke({
												  component 			: COMPONENT
												, method 				: "subscribe"		
												, args					: oArgs
												, resultHandler 		: function( result )
																			{
																				$( MAINCONTAINER ).hide();
																				$( MAINCONTAINER ).html( result.message );
																				$( MAINCONTAINER ).slideDown();
																			}													
												, dataType				: "json"
												, type					: TYPE
											});		
											
										}
									}
			
			//server calls
			,	getPositions		: 	function( callback )
									{
										$.TNZCFC.invoke({
											  component 			: COMPONENT
											, method 				: "getPositionsSelectOptions"		
											, resultHandler 		: callback													
											, dataType				: "json"
											, type					: TYPE
										});		
									}
									
			,	getEditions		: 	function( callback )
									{
										$.TNZCFC.invoke({
											  component 			: COMPONENT
											, method 				: "getEditionSelectOptions"		
											, resultHandler 		: callback													
											, dataType				: "json"
											, type					: TYPE
										});		
									}

			/*,	getCountries	: 	function( callback )
									{
										$.TNZCFC.invoke({
											  component 			: COMPONENT
											, method 				: "getCountrySelectOptions"		
											, resultHandler 		: callback													
											, dataType				: "json"
											, type					: TYPE
										});		
									}
			*/
			 ,	loadWidget		:	function()
									{
										$.TNZCFC.invoke({
											  component 			: COMPONENT
											, method 				: "getNewsletterWidget"		
											, resultHandler 		: function( result )
																		{
																			$( MAINCONTAINER ).hide();
																			$( MAINCONTAINER ).html( result.message );
																			$( MAINCONTAINER ).slideDown();
																		}												
											, dataType				: "json"
											, type					: TYPE
										});
									}
										
		}
	});
	
})( jQuery );

$( document ).ready(
	function(){
		$.newsletterSubscribe.loadWidget();
	}
);