var Site = {
	
	uploadedimage:Object,
	page:String,
	fbid:Number,
	filecode:String,
	caption:String = 'highroller',
	overlay:String = 'clear',
	textcolor:String = 'light',
	
	loadinparams:Object,
	loadindur:Number,
	loadinease:String,
	
	loadoutparams:Object,
	loadoutdur:Number,
	loadoutease:String,
	
	loading:Boolean,
	
	init : function()
	{
		$(document).pngFix();
		
		
		Site.loadinparams = { top:'50px' };
		Site.loadindur = 400;
		Site.loadinease = 'easeOutBounce';
		Site.loadoutparams = { top:'0' };
		Site.loadoutdur = 250;
		Site.loadoutease = 'easeInQuad';
		Site.loading = false;
		
		// init facebook
		window.fbAsyncInit = function() {
			FB.Flash.hasMinVersion = function () { return false; };
			FB.init({
				appId : '216835215041410', 
				status : true, 
				cookie : true, 
				xfbml : true				
			});
		};
		
		(function() {
			var e = document.createElement('script'); e.async = true;
			e.src = document.location.protocol +
		    '//connect.facebook.net/en_US/all.js';
		    document.getElementById('fb-root').appendChild(e);
		}());
		
		$('#facebooklogin1,#facebooklogin2').live('click', Site.login_to_facebook);
		$('.facebooklogout').live('click', Site.logout_of_facebook);
		$('.facebook.thumb').live('click', Site.import_photo);
		$('#facebookshare').live('click', Site.post_to_facebook);
		$('#addtothesite').live('click', Site.add_to_the_site);
		$('.facebookpaginate').live('click', Site.page_photos);
		
		$('.jokerpaginate').live('click', Site.page_jokers);
		
		
		// check for hashbANG FUCKYEAHHASHBANG!!!1!
		$('a.main, a[href*="#!/"]').live('click', Site.change_page);
		var params = {};
		params.page = document.location.hash.replace('#!/','');
		if (params.page && params.page!='home') Site.change_page(params);
		
		
		// wire up pokerface tabs
		$('a.tab').live('click', Site.switch_pokerface_tabs);
	},
	
	change_page: function(params)
	{
		$('a.active').removeClass('active');
			
		if (params.type=='click') 
		{
			params = {};
			params.page = $(this).attr('href').replace('/#!/','');
		}
		
		$('a[href="/#!/'+params.page+'"]').addClass('active');
		Site.page = params.page;
		Site.load_background(params.page);
		
		if(Site.loading) return false;
		Site.loading = true;
		
		$('#loadalert').animate(Site.loadinparams,Site.loadindur,Site.loadinease,function()
		{
			
			$('#copy').animate({top:'100px', opacity:0},400,'easeInQuint',function()
			{
				$.post('/customajax/change_page', params, function(data, textStatus, xhr) 
				{
					$(document).scrollTop(0);
					$('#copy').css({top:'-100px'}).html(data).animate({top:'0', opacity:1},1000,'easeOutQuint', function(){
						$('#loadalert').animate(Site.loadoutparams,Site.loadoutdur,Site.loadoutease);
						if ($.browser.msie) 
						{
							this.style.removeAttribute('filter');
						}
						Site.loading = false;
					});
					Site.init_guidealerts(true);
					$('a.lightbox').lightBox();
				});
			});
		});
	},
	
	init_guidealerts: function(skipscroll)
	{
		if(!skipscroll)	$.scrollTo('#file-uploader', 600, {easing:'easeInOutQuad',offset:-50});
		
		$guides = $('.guidealert');
		$('#pokerfaceshelp').bind('click', function(){
			$guides.fadeIn(350);
			return false;
		});
		/*
		$guides.hide().draggable({
			stop: function(event, ui) 
			{
				window.log(ui);
			}
		});
		*/
		$guides.hide().delay(1500).fadeIn(500);
		$(document).bind('mousedown', function(event) {
			window.log(event);
			if (event.target && event.target.alt && event.target.alt=="Help") 
			{
				return;
			}
			$guides.fadeOut(250);
		});
	},
	
	switch_pokerface_tabs: function()
	{
		if ($(this).hasClass('locked')) return false;

		$('.step').hide();
		$('a.tab.active').removeClass('active');
		
		$('#'+$(this).attr('rel')).show();
		$(this).addClass('active').nextAll().addClass('locked');
		
		return false;
	},
	
	load_background: function(n)
	{
		var src = '/images/bg/'+n+'.jpg';
		$bg = $('#bg');
		
		$img = $('<img src="/images/bg/'+n+'.jpg" />');
		$img.bind('load', function(){
			$bg.hide().css({
				'background-image':'url('+src+')'
				}).fadeIn(500);
		});
		
	},
	
	start_upload: function()
	{
	    $('#f1_upload_process').show();
	    return true;
	},
	
	stop_upload: function(result)
	{
		Site.uploadedimage = $.evalJSON(result);
		if (Site.uploadedimage.success == 1)
		{
			Site.init_step2();
		}
		else 
		{
			$('#result').html('<span class="emsg">There was an error during file upload!</span><br/><br/>');
		}
		$('#f1_upload_process').hide();
		
		return true;   
	},
	
	import_photo: function()
	{
		$(this).children('img').css('opacity',0.3);
		$a = $(this);
		
		if(Site.loading) return false;
		Site.loading = true;
		
		$('#loadalert').animate(Site.loadinparams,Site.loadindur,Site.loadinease,function()
		{
			var params = {};
			params.url = $a.attr('rel');
			$.post('/customajax/import_photo', params, function(data, textStatus, xhr) 
			{
				//optional stuff to do after success
				window.log('photo imported');
				$a.children('img').css('opacity',1.0);
				Site.uploadedimage = $.evalJSON(data);
				Site.init_step2();
			});
		});
		
		
		return false;
	},
	
	init_step2: function()
	{
		$img = $('<img id="uploadedimage" src="/uploads/jokers/'+Site.uploadedimage.filename+'" />');
		$('#imageholder').html('').append($img);
		
		$img.draggable({
			stop:function(event,ui){ }
		});
		
		$('#slider').slider({
			value:100,
			slide: function(event, ui) {
				
				var w = Site.uploadedimage.w*ui.value/100;
				var h = Site.uploadedimage.h*ui.value/100;
				
				$('#uploadedimage').css(
				{ 
					height: h+'px', 
					width: w+'px'
				});
			}
		});
		
		var w = Site.uploadedimage.w * $('#slider').slider('value') / 100;
		var h = Site.uploadedimage.h * $('#slider').slider('value') / 100;
		
		$img.css(
		{
			left: '-'+((w-400)/2)+'px',
			top: '-'+((h-400)/2)+'px'
		});
		
		$('#slider').slider("value",100);
		
		$('div.pftabs a.active').removeClass('active').next().addClass('active');
		$('#step2button').bind('click', Site.save_edits);
		
		$('#step1, #step2').toggle();
		$('a[rel="step1"]').removeClass('locked');
		
		$('#loadalert').animate(Site.loadoutparams,Site.loadoutdur,Site.loadoutease);
		Site.loading = false;
		
		Site.init_guidealerts();
	},
	
	init_facebook_photos: function()
	{
		var params = {};
		params.a = 1;
		$.post('/customajax/init_facebook_photos', params, function(data, textStatus, xhr) 
		{
			$('#facebookthumbs').html(data);
		});
	},
	
	page_photos: function()
	{
		if(Site.loading) return false;
		Site.loading = true;
		
		$a = $(this);
		
		// $('#facebookthumbs').html('<p><em>Your photos are being fetched from Facebook...</em></p>');
		$('#loadalert').animate(Site.loadinparams,Site.loadindur,Site.loadinease,function()
		{
			var params = {};
			params.url = $a.attr('rel');
			$.post('/customajax/init_facebook_photos', params, function(data, textStatus, xhr) 
			{
				if (data) 
				{
					$('#facebookthumbs').html(data);
				}
				
				$('#loadalert').animate(Site.loadoutparams,Site.loadoutdur,Site.loadoutease);
				Site.loading = false;
			});
		});
		return false;
	},
	
	page_jokers: function()
	{
		$a = $(this);
		if (!$a.attr('rel')) return false;
		
		if(Site.loading) return false;
		Site.loading = true;
		
		$('#loadalert').animate(Site.loadinparams,Site.loadindur,Site.loadinease,function()
		{
			var params = {};
			params.start = $a.attr('rel');
			$.post('/customajax/page_jokers', params, function(data, textStatus, xhr) 
			{
				if (data) 
				{
					$('#jokergallery').html(data);
					$('a.lightbox').lightBox();
				}
				
				$('#loadalert').animate(Site.loadoutparams,Site.loadoutdur,Site.loadoutease);
				Site.loading = false;
			});
		});
		
		return false;
	},
	
	save_edits: function()
	{
		if(Site.loading) return false;
		Site.loading = true;
		
		$('#loadalert').animate(Site.loadinparams,Site.loadindur,Site.loadinease,function()
		{
			$img = $('#uploadedimage');
			
			var params = {};
			params.filename = Site.uploadedimage.filename;
			params.x = $img.css('left');
			params.y = $img.css('top');
			params.scale = $('#slider').slider('value');


			$.post('/customajax/save_edits', params, function(data, textStatus, xhr) 
			{
				var o = $.evalJSON(data);
				if (o.success==1) 
				{
					var d = +new Date();
					$img = $('<img id="editedimage" src="/uploads/jokers/'+o.filename+'?a='+d+'" />');
					$('#editedimage').remove();
					$('#editedholder').prepend($img);
					$('#caption').draggable();
					$('#step3button').bind('click', Site.save_image);

					$('a.swatch').bind('click', Site.change_overlay);
					$('a.textcolor').bind('click', Site.change_textcolor);
					$('#captions').bind('change', Site.change_caption);


					$('div.pftabs a.active').removeClass('active').next().addClass('active');
					$('#step2, #step3').toggle();
					$('a[rel="step2"]').removeClass('locked');
					
					$('#loadalert').animate(Site.loadoutparams,Site.loadoutdur,Site.loadoutease);
					Site.loading = false;
					
					Site.init_guidealerts();
				}
			});
		});
		
		return false;
	},
	
	change_caption: function()
	{
		Site.caption = $(this).val();
		$('#caption').attr('src','/images/captions/'+Site.textcolor+'/'+Site.caption+'.png');
	},
	
	change_textcolor: function()
	{
		Site.textcolor = (Site.textcolor=='light') ? 'dark' : 'light';
		$('#caption').attr('src','/images/captions/'+Site.textcolor+'/'+Site.caption+'.png');
		return false;
	},
	
	change_overlay: function()
	{
		Site.overlay = $(this).attr('rel');
		$('#overlay').attr('src','/images/overlays/'+Site.overlay+'.png');
		return false;
	},
	
	save_image: function()
	{
		if(Site.loading) return false;
		Site.loading = true;
		
		$('#loadalert').animate(Site.loadinparams,Site.loadindur,Site.loadinease,function()
		{
			var params = {};
			params.overlay = Site.overlay;
			params.caption = Site.caption;
			params.textcolor = Site.textcolor;
			params.filename = Site.uploadedimage.filename;
			params.x = $('#caption').css('left');
			params.y = $('#caption').css('top');

			$('#uploadthumb').attr('src','/images/blank.gif');
			$.post('/customajax/save_image', params, function(data, textStatus, xhr) 
			{
				var o = $.evalJSON(data);
				Site.filecode = o.filecode;
				
				var d = +new Date();
				$('div.pftabs a.active').removeClass('active').next().addClass('active');
				$('#uploadthumb').attr('src','/uploads/jokers/'+o.filecode+'_200.jpg?a='+d);
				$('#step3, #step4').toggle();
				$('a[rel="step3"]').removeClass('locked');
				
				$('#loadalert').animate(Site.loadoutparams,Site.loadoutdur,Site.loadoutease);
				Site.loading = false;
				
				Site.init_guidealerts();
			});
		});

		return false;
	},
	
	init_facebook: function()
	{
		// logged in and connected user, someone you know
		$('.fbloggedin').show();
		$('.fbsignin').hide();
		
		FB.api('/me', function(response) {
			Site.fbid = response.id;
			$('#facebookavatar').attr('src','https://graph.facebook.com/'+response.id+'/picture');
			$('#facebooklink').attr('href',response.link).html(response.name);
			$('.facebookname').html(response.name);
		});
		
		$('#loadalert').animate(Site.loadoutparams,Site.loadoutdur,Site.loadoutease);
		Site.loading = false;
		
		if (Site.page == 'pokerfaces') 
		{
			Site.init_facebook_photos();
		}
		
		
	},
	
	add_to_the_site: function()
	{
		// $('#addtothesite').die('click',Site.add_to_the_site);
		if(Site.loading) return false;
		Site.loading = true;
		
		$('#loadalert').animate(Site.loadinparams,Site.loadindur,Site.loadinease,function()
		{
			var params = {};
			params.petname = $('#petname').val();
			params.user_id = Site.fbid;
			params.filecode = Site.filecode;
		
			$.post('/customajax/add_to_the_site', params, function(data, textStatus, xhr) 
			{
				$('#addtothesite').replaceWith('<p>Your design has been added to our collection. It will be made public once it passes moderation.</p>');
				$('#loadalert').animate(Site.loadoutparams,Site.loadoutdur,Site.loadoutease);
				Site.loading = false;
			});
		});
		
		return false;
	},
	
	post_to_facebook: function()
	{
		// $('#facebookshare').die('click', Site.post_to_facebook);
		
		if(Site.loading) return false;
		Site.loading = true;
		
		$('#loadalert').animate(Site.loadinparams,Site.loadindur,Site.loadinease,function()
		{
			var petname = ($('#petname').val()) ? $('#petname').val() : 'my pet';
			var caption = '';
			switch(Site.caption)
			{
				case 'joker':
				caption = 'Joker';
				break;
			
				case 'queenofhearts':
				caption = 'Queen of Hearts';
				break;
			
				case 'kingofhearts':
				caption = 'King of Hearts';
				break;
			
				case 'highroller':
				caption = 'High Roller';
				break;
			
				case 'jackpot':
				caption = 'Jackpot';
				break;
			
				case 'doubledown':
				caption = 'Double Down';
				break;
			
				case 'highcard':
				caption = 'High Card';
				break;
				
				case 'allin':
				caption = 'All In';
				break;
			
				case 'fullhouse':
				caption = 'Full House';
				break;
			
				case 'straight':
				caption = 'Straight';
				break;
			
				case 'flush':
				caption = 'Flush';
				break;
			
				case 'wildcard':
				caption = 'Wild Card';
				break;
			}
		
			var params = {};
			params['message'] = 'I\'ve added '+petname+' to the deck of jokers on the BrewFest website! Click here to add your pet!';
			params['name'] = caption + ' - BrewFest 2011';
			params['description'] = 'Here\'s to looking at life through a full glass – at BrewFest! Enjoy a night of unlimited samples of brews, wine and other libations – served up in a collectible glass  – as well as lip-smacking bits and bites from local eateries.';
			params['link'] = 'http://brewfestgb.com/';
			params['picture'] = 'http://brewfestgb.com/uploads/jokers/'+Site.filecode+'_100.jpg';
			params['caption'] = 'www.brewfestgb.com';
		
			window.log(params['picture']);
		
			FB.api('/me/feed', 'post', params, function(response) {
				if (!response || response.error) {
					alert('Error occured');
				} else {
					$('#facebookshare').replaceWith('<p>Your design has been posted to your Facebook wall. Thanks for sharing!</p>');
					/*
					$.post('/customajax/notify_recipients', params, function(data, textStatus, xhr) 
					{
						window.log(data);
					});
					*/
				}
				$('#loadalert').animate(Site.loadoutparams,Site.loadoutdur,Site.loadoutease);
				Site.loading = false;
			});
		});
		
		return false;
	},
	
	logout_of_facebook: function()
	{
		FB.logout(function(response) {
			$('.fbloggedin').hide();
			$('.fbsignin').show();
		});
		
		return false;
	},
	
	login_to_facebook: function()
	{
		if(Site.loading) return false;
		Site.loading = true;
		
		$('#loadalert').animate(Site.loadinparams,Site.loadindur,Site.loadinease);
			// FB.Connect.requireSession();
		FB.UIServer.setLoadedNode = function(a,b){FB.UIServer._loadedNodes[a.id]=b;};
		FB.login(function(response) {
		if (response.status=='connected') {
			window.log('Welcome!  Fetching your information.... ');
			Site.init_facebook();
		} else {
			window.log('User cancelled login or did not fully authorize.');
		}
		}, {perms:'publish_stream,user_photos'});
		
		
	},

	validate_form : function(form,error)
	{
		if(!form) form = document.forms[0];
		var submit_it = true;
		var email_pattern = new RegExp(/[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i);
		
		// console.log('validate_form');

		$(form).find(".REQUIRED").each(function(req)
		{
			if(($(this).attr('type')!='checkbox' && this.value == '') || 
				($(this).attr('type')=='checkbox' && !this.checked) || 
				($(this).hasClass('email') && !email_pattern.test($(this).val()))) 
			{
				// console.log('error');
				$(this).parents("div.formfield").addClass('error');
				submit_it = false;
			}
			else
			{
				$(this).parents("div.formfield").removeClass('error');
			}			
		});
		if( !submit_it ) 
		{
			if(!error) error = $('#error_message');
			error.html('Please review the highlighted, required fields and resubmit.').fadeIn(250);
			$.scrollTo(parseInt(error.offset().top-120,10)+'px', 800, {easing:'easeInOutCubic'});
		}
		return submit_it;
	}
};

window.log=function(){log.history=log.history||[];log.history.push(arguments);if(this.console){console.log(Array.prototype.slice.call(arguments));}};

$(document).ready(function(){ Site.init(); });
