$(document).ready(function(){
	
	sendOnForm();
	ageGate();
	
	//ie6 image flicker fix
	try {document.execCommand("BackgroundImageCache", false, true);} catch(err) {}


});

function triggerOverlay() {
	//$('.flashholder').html('<div class="chatwindow" id="chatwindow"></div>');
	$('.overlay').show();
}

function hideOverlay() {
	$('.flashholder').html('<div class="chatwindow" id="chatwindow"></div>');
	$('.overlay').hide();
	var chatname = $('.ag input#ag_chatname').val();
			
	if($('input#ag_name').length > 0) {
		var name = $('.ag input#ag_name').val();
	} else {
		var name = chatname;
	}
			
	var territory = $('.ag input#ag_territory').val();
	startFlash(name,chatname,territory);
}

function ageGate(){

	var defaultText = $('.ag input#ag_chatname').attr('title');

	$('.ag input#ag_chatname').focus(function(){
		if($(this).val() == defaultText){$(this).val('');return false;}
	}).blur(function(){
		if($(this).val() == ''){$(this).val(defaultText);}
	});
	
	$('#ag_dob_month, #ag_dob_year').change(function(){
	
		//when month and year fields are changed - update the days available.
		var day = $('#ag_dob_day').val();
		var month = $('#ag_dob_month').val();
		var year = $('#ag_dob_year').val();
		//is it a leap year?
		var leapyear = (year%4) ? false : true; 
		
		//how many days should there be that month?
		var days = 31;
		if(leapyear){if(month == 2) {days = 29;}} else {if(month == 2) {days = 28;}}
		if(month == 4||month == 6||month == 9||month == 11) {days = 30;}
		
		//how many days currently showing
		var currdays = $('#ag_dob_day option:last').attr('value');

		if (days < currdays) {
			//remove excess days
			for(j=currdays;days < j;j--){
				$('#ag_dob_day option[value='+j+']').remove();
			}
			
		} else if(days > currdays) {
			// add in extra days
			for(j=currdays;days>j;j++){
				$('#ag_dob_day option[value='+j+']').after('<option value="'+(j*1+1)+'">'+(j*1+1)+'</option>');
			}
		}
	
	});
	
	function processAgeGate(){
		
		//check entered date is more than 18 years ago
		var day = $('#ag_dob_day').val();
		var month = $('#ag_dob_month').val();
		var year = $('#ag_dob_year').val();
		var enteredDate = new Date();
		year = (year * 1) + 18;
		enteredDate.setFullYear(year,month-1,day);
		
		var today = new Date();
		
		if (enteredDate>today) {
			ageValidation = false;
			$('.ag .dob').shakeup();
		} else {
			ageValidation = true;
		}

		
		//validate name
		var chatname = $('.ag input#ag_chatname').val();
		if(chatname == defaultText || chatname.length < 2) {
			var nameValidation = false;
			$('.ag input#ag_chatname').css({'background':'#ffcccc'}).shakeup();						
		} else {
			var nameValidation = true;
			$('.ag input#ag_chatname').css({'background':'#ffffff'})
		}
		
		if(nameValidation && ageValidation){	

			var chatname = $('.ag input#ag_chatname').val();
			
			if($('input#ag_name').length > 0) {
				var name = $('.ag input#ag_name').val();
			} else {
				var name = chatname;
			}
			
			var territory = $('.ag input#ag_territory').val();
			$('.ag').hide();
			startFlash(name,chatname,territory);
			
		
		}

	
	}
	
	
	$('.ag form').submit(function(){processAgeGate();return false;});
	$('.ag form a.agree').click(function(){processAgeGate();return false;});


}

$.fn.shakeup = function(){
	$(this).css('position','relative');
	$(this).animate({left:'+=2'},100,'swing',function(){
		$(this).animate({left:'-=4'},100,'swing',function(){
			$(this).animate({left:'+=4'},100,'swing',function(){
				$(this).animate({left:'-=4'},100,'swing',function(){
					$(this).animate({left:'+=4'},100,'swing',function(){
						$(this).animate({left:'-=2'},100,'swing');
					});
				});
			});
		});
	});
}

function sendOnForm() {
	
	$('.header a.travelwithus').hover(function(){
		$(this).children('img').stop().animate({'opacity':1},300);
	},function(){
		$(this).children('img').stop().animate({'opacity':0},300);	
	});

	//customised checkbox
	$('a.checkbox').click(function(){
	
		if($('#optin').val() == '0') {
			$('#optin').val('1').parent('div').removeClass('invalid');	
			$(this).children('img').show();
		} else {
			$('#optin').val('0').parent('div').addClass('invalid');
			$(this).children('img').hide();
		}
	
		return false;
	
	});

	//store the standard fieldset height for use later 
	var friendFsHeight = $('fieldset:eq(1)').height();
	$('fieldset:first').attr({'name':friendFsHeight});
	
	// add/remove friends functionality
	$('a.addfriends').click(function(){
		
		// new friend count
		var friendno = ($('#friendcount').val()*1) + 1;
		var friendIndex = ($('#friendindex').val()*1) + 1;
		var territory = $('body').attr('class');
		
		
		// get the new html
		$.post('../inc_friendholder.php',{'friendno':friendIndex,'territory':territory},function(data){
			$('fieldset.buttons').before(data);
			
			//add validation to new input fields
			validateInputs();
			preview();
			// animate the new fieldset
			$('fieldset.buttons').prev('fieldset').children('.inner').fadeIn('slow');
			$('fieldset.buttons').prev('fieldset').animate({'height':$('fieldset:first').attr('name')},'slow','easeOutBack',function(){
				
				
				
				var fieldset = $(this);
								
				// add in the close button functionality
				$('a.close').unbind().click(function(){
					$(this).parents('fieldset.friend').children('.inner, .close, .previewer').fadeOut('normal');
					$(this).parents('fieldset.friend').animate({'height':0},'slow','easeInBack',function(){
						$(this).remove();
					});
					
					// update the friend count
					var friendcount = $('#friendcount').val();
					$('#friendcount').val((friendcount*1)-1);
					
					// if there's only 1 friend fieldset left - hide the close button.
					if(friendcount == 2) {
					
						$('a.close').unbind().fadeOut('fast');
					
					}
					
					return false;		
						
				});
			});
			
			// need to show the initial hidden close button
			$('a.close:hidden').fadeIn();
			
			//update the friend count.
			$('#friendcount').val(friendno);
			$('#friendindex').val(friendIndex);
		});
		return false;
	
	});
	
	//validation
	$('button').click(function(){
		
		// inputs validate individually on blur, so trigger all blur events to check validation of all.
		$('#sendonform input').trigger('blur');
		// check optin checkbox too.
		if($('#optin').val() == '0'){$('#optin').parent('div').addClass('invalid');}
		
		if($('#sendonform div').hasClass('invalid')) {
			$('#sendonform .invalid').shakeup();
		} else {
			return true;
			//alert('Process Form');
		}
		
		return false;
	});

	validateInputs();
	preview();	
}

function preview(){

	//preview stuff
	$('a.preview-button').unbind().click(function(){
		
		var fieldset = $(this).parents('fieldset');
		//validate friend form first
		fieldset.find('input').trigger('blur');
		if(fieldset.find('div').hasClass('invalid')) {
			//if invalid
			fieldset.find('.invalid').shakeup();
		} else {
			//if validated ok - show preview
			fieldset.find('.inputs, .preview-button').fadeOut();
			fieldset.animate({'height':'390'},'slow','easeOutBack',function(){
			
				fieldset.find('.previewer').fadeIn(function(){
					
					//initiate flash player
					var name = fieldset.find("input[id^=fname]").val();
					var email = fieldset.find("input[id^=femail]").val(); 
					var id = fieldset.find('.preview-holder').children('div').attr('id');
					var territory = $('body').attr('class');
					
					var previewvars = {};
					previewvars.fname = name;
					previewvars.territory = territory;
					var previewparams = {};
					previewparams.wmode = 'transparent';
					swfobject.embedSWF("../swf/preview.swf", id, "400", "300", "9.0.0", "../swf/expressinstall.swf", previewvars, previewparams);
					
				
				});
			
			});
		}
		
				
		
		return false;
	});
	$('a.preview-close').unbind().click(function(){
	
		var fieldset = $(this).parents('fieldset');
		var id = fieldset.find('.preview-holder').children(':first').attr('id');
		fieldset.find('.preview-holder').html('<div id="'+id+'"></div>');
		fieldset.animate({'height':$('fieldset:first').attr('name')},'slow','easeInBack');
		fieldset.find('.previewer').fadeOut('fast',function(){
			
			fieldset.find('.inputs, .preview-button').fadeIn('slow');
		});

		return false;
	});
	


}

function validateInputs(){

		$("#sendonform input[name*='name']").unbind().blur(function(){
			var str = $(this).val();
			if(!ncheck(str)){$(this).parent('div').addClass('invalid');} else {$(this).parent('div').removeClass('invalid');}
		});

		$("#sendonform input[name*='email']").unbind().blur(function(){
			var str = $(this).val();
			if(!echeck(str)){$(this).parent('div').addClass('invalid');} else {$(this).parent('div').removeClass('invalid');}
		});
		
		

}


//email checker
//email address must have one (@) and atleast one (.)
//no spaces or extra '@'s are allowed, nor is a (.) just before or after the @
//must be at least one (.) after the @
function echeck(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
		
	if (str.indexOf(at)==-1){return false;}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){return false;}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){return false;}
	if (str.indexOf(at,(lat+1))!=-1){return false;}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){return false;}
	if (str.indexOf(dot,(lat+2))==-1){return false;}
	if (str.indexOf(" ")!=-1){return false;}

	return true;					
}

//name checker
//name must be at least 2 characters long
function ncheck(str) {
	if (str.length < 2) {return false;} else {return true;}
}

