
$(document).ready(function() {

	// simple browser detect
	var thisIsIe = false;
	/*if($.browser.msie) {
		thisIsIe = true;
	}*/

	// custom selects & checkboxes
	$("select, input:checkbox, input:radio, input:file").uniform();

	// homepage features
	var activeFeat = 'app';

	if (thisIsIe) {
		$('.feat-' + activeFeat).css('visibility', 'visible');
	} else {
		$('.feat-' + activeFeat).css('opacity', '1');
		$('.feat-' + activeFeat).css('visibility', 'visible');
	}
	
	bindHomeFeat('.featicn-app', 'app');
	bindHomeFeat('.featicn-social', 'social');
	bindHomeFeat('.featicn-search', 'search');
	bindHomeFeat('.featicn-cart', 'cart');
	bindHomeFeat('.featicn-beauty', 'beauty');

	function bindHomeFeat(selector, state) {
		
		$(selector).bind({

			click: function() {
				setTimeout(function() {
					(function() {
						if (state != activeFeat) {
							// remove selected from old icon
							$('.featicn-' + activeFeat).removeClass('featsel');
							// fade out old selected
							if (thisIsIe) {
								$('.feat-' + activeFeat).css('visibility', 'hidden');
								$('.feat-' + state).css('visibility', 'visible');
								$('.featicn-' + state).addClass('featsel');
								activeFeat = state;
							} else {
								$('.feat-' + activeFeat).stop(true).animate({opacity: 0}, 150, function() {
									$('.feat-' + activeFeat).css('visibility', 'hidden');
									// fade in new selected
									$('.feat-' + state).css('visibility', 'visible');
									$('.feat-' + state).stop(true).animate({opacity: 1}, 300);
									// add selected to new icon
									$('.featicn-' + state).addClass('featsel');
									// update active state
									activeFeat = state;
								});
							}
						}
					}).apply(this);
				}, 50);
				return false;
			}

		});
	}
	
	// jobs list
	$('.jobs-post h4 a').each( 
		function() {
			$(this).bind({
				'click': function(e) {
					e.preventDefault();
					$(this).parent().parent().toggleClass('jobs-post-shown');
					$(this).parent().parent().children(".jobs-post-list").slideToggle(400);
				}
			})
		}
	);
	
	// about features
	var aboutVidLocked = false;
	var aboutVidType = '';
	$('.about-features .btn-watch-video').each( 
		function() {
			$(this).bind({
				'click': function(e) {
					e.preventDefault();
					curPos = $(this).parent().parent().position();
					
					if (curPos.left > 0) {
						thisOverlay = $('.about-overlay-r');
					} else {
						thisOverlay = $('.about-overlay-l');
					}
					
					if ($(this).parent().parent().hasClass('feat-locked')) {
						// hide video
						clearAboutVid();
					} else {
						// hide old selection
						if (aboutVidLocked) {
							clearAboutVid();
						}
						
						$(document).one('mousedown', clearAboutVid);
						$(document).one('touchstart', clearAboutVid);
						
						// show video
						$(this).parent().parent().addClass('feat-locked');
						aboutVidLocked = true;
						aboutVidType = thisOverlay;
						thisOverlay.css('top', (curPos.top-108));
						thisOverlay.css('display', 'block');
						
						var videourl = $(this).attr('href');
						
						if ($.support.opacity) {
							thisOverlay.stop(true).animate({opacity: 1}, 150, function() {
								createVideo(videourl);
							});
						} else {
							createVideo(videourl);
						}
						
					}
					
				},
				'mouseenter': function() {
					$(this).parent().parent().stop(true).addClass('feat-over');
				},
				'mouseleave': function() {
					$(this).parent().parent().stop(true).removeClass('feat-over');
				}
			})
		}
	);
	
	function createVideo(url) {
		var videoDiv = $("<div></div>").addClass('video-snippet');
		aboutVidType.append(videoDiv);
		var fv = videoDiv.flareVideo({
		  'loop': true,
			'autoplay': true,
			'controls': false,
			'flashSrc': '/_swf/flarevideo.swf',
			'srcs':[
  			{
  			  src:  url,
  			  type: 'video/mp4'
  			}
  		]
		});
	}
    
	function clearAboutVid () {
		$('.about-features li').each( 
			function() {
				$(this).removeClass('feat-locked');
			}
		)
		
		aboutVidType.children().remove();
		
		if ($.support.opacity) {
			aboutVidType.stop(true).animate({opacity: 0}, 150, function() {
				$(this).css('display','none');
			});
		} else {
			aboutVidType.css('display', 'none');
		}
		
		aboutVidLocked = false;
		aboutVidType = '';
	};
	
	// sales list
	$('.sales-list li .list-exp').hide();
	$('.sales-list li a').bind({
		'click': function(e) {
			e.preventDefault();
			thisLink = $(this);
			$(this).parent('li').children('.list-exp').slideToggle('fast', function() {
			    thisLink.toggleClass('list-sel');
			});
		}
	});
	
	// refer a friend
    $(".btn-refer-friend").fancybox({
		'titleShow'       : false,
		'overlayShow'     : true,
		'overlayOpacity'  : 0.8,
		'overlayColor'    : '#eeeeee',
		'scrolling'       : 'no',
		'autoDimensions'  : true,
		'showCloseButton' : true,
		'padding'         : 0,
		'margin'          : 0,
		'onStart' : function() {
			if (!$('#fancybox-outer').hasClass('whiteoverlay')) {
				$('#fancybox-outer').addClass('whiteoverlay');
			}
			$(':input','#form-refer-friend').val('');
		},
		'onClosed' : function() {
	    	resetRefer(true);
		}
	});
	
	$(".nav-refer a").fancybox({
		'titleShow'       : false,
		'overlayShow'     : true,
		'overlayOpacity'  : 0.8,
		'overlayColor'    : '#eeeeee',
		'scrolling'       : 'no',
		'autoDimensions'  : true,
		'showCloseButton' : true,
		'padding'         : 0,
		'margin'          : 0,
		'onStart' : function() {
			if (!$('#fancybox-outer').hasClass('whiteoverlay')) {
				$('#fancybox-outer').addClass('whiteoverlay');
			}
			$(':input','#form-refer-friend').val('');
		},
		'onClosed' : function() {
	    	resetRefer(true);
		}
	});
	
	$(".btn-notifyme").fancybox({
		'titleShow'       : false,
		'overlayShow'     : true,
		'overlayOpacity'  : 0.8,
		'overlayColor'    : '#eeeeee',
		'scrolling'       : 'no',
		'autoDimensions'  : true,
		'showCloseButton' : true,
		'padding'         : 0,
		'margin'          : 0,
		'onStart' : function() {
			if (!$('#fancybox-outer').hasClass('whiteoverlay')) {
				$('#fancybox-outer').addClass('whiteoverlay');
			}
			$('#form-notifyme #f-email').val('');
		},
		'onClosed' : function() {
	    	$('#form-notifyme #f-email').val('');
		}
	});
	
	// refer a friend ajax
	$("#form-refer-friend").bind("submit", function() {
	    
		resetRefer(false);
	
		if (($("#f-refer-emails").val().length < 1) || ($("#f-refer-name").val().length < 1) || ($("#f-refer-email").val().length < 1)) {
			$("#f-refer-error").show();
			if ($("#f-refer-emails").val().length < 1) {
				if (!$("#f-refer-emails").parent().parent().hasClass('form-error')) {
					$("#f-refer-emails").parent().parent().addClass('form-error');
				}
			}
			if ($("#f-refer-name").val().length < 1) {
				if (!$("#f-refer-name").parent().parent().hasClass('form-error')) {
					$("#f-refer-name").parent().parent().addClass('form-error');
				}
			}
			if ($("#f-refer-email").val().length < 1) {
				if (!$("#f-refer-email").parent().parent().hasClass('form-error')) {
					$("#f-refer-email").parent().parent().addClass('form-error');
				}
			}
			$.fancybox.resize();
			return false;
		}
	
		$.fancybox.showActivity();
	
		$.ajax({
			type		: "POST",
			cache	    : false,
			url		    : "/refer_friend/",
			data		: $(this).serializeArray(),
			success: function(data) {
				if (data == 'pass') {
					$.fancybox($('#referfriend-thanks').html(), {'padding': 0, 'margin': 0});
					$.fancybox.resize();
					resetRefer(true);
				} else {
					$.fancybox.hideActivity();
					resetRefer(false);
					$("#f-refer-error").show();
					if (data.indexOf("recipients") > -1) {
						$("#f-refer-emails").parent().parent().addClass('form-error');
					}
					if (data.indexOf("name") > -1) {
						$("#f-refer-name").parent().parent().addClass('form-error');
					}
					if (data.indexOf("email") > -1) {
						$("#f-refer-email").parent().parent().addClass('form-error');
					}
					$.fancybox.resize();

				}
			}
		});
		
		return false;
	});
	
	function resetRefer(vals) {
		$("#f-refer-error").hide();
	    $("#f-refer-emails").parent().parent().removeClass('form-error');
	    $("#f-refer-name").parent().parent().removeClass('form-error');
	    $("#f-refer-email").parent().parent().removeClass('form-error');
	    if (vals) {
	    	$(':input','#form-refer-friend').val('');
	    }
	}
	
	// request title
    $(".btn-request-title").fancybox({
		'titleShow'       : false,
		'overlayShow'     : true,
		'overlayOpacity'  : 0.8,
		'overlayColor'    : '#eeeeee',
		'scrolling'       : 'no',
		'autoDimensions'  : true,
		'showCloseButton' : true,
		'padding'         : 0,
		'margin'          : 0,
		'onStart' : function() {
			if (!$('#fancybox-outer').hasClass('whiteoverlay')) {
				$('#fancybox-outer').addClass('whiteoverlay');
			}
			$(':input','#form-request-title').val('');
		},
		'onClosed' : function() {
	    	resetRequest(true);
		}
	});
	
	function resetRequest(vals) {
		$("#f-request-error").hide();
	    $("#f-request-title").parent().parent().removeClass('form-error');
	    $("#f-request-name").parent().parent().removeClass('form-error');
	    $("#f-request-email").parent().parent().removeClass('form-error');
	    $("#f-request-work").parent().parent().removeClass('form-error');
	    if (vals) {
	    	$(':input','#form-request-title').val('');
	    }
	}
	
	// request a title ajax
	$("#form-request-title").bind("submit", function() {
	    
		resetRequest(false);
	
		if (($("#f-request-title").val().length < 1) || ($("#f-request-name").val().length < 1) || ($("#f-request-email").val().length < 1) || ($("#f-request-work").val().length < 1)) {
			$("#f-request-error").show();
			if ($("#f-request-title").val().length < 1) {
				if (!$("#f-request-title").parent().parent().hasClass('form-error')) {
					$("#f-request-title").parent().parent().addClass('form-error');
				}
			}
			if ($("#f-request-name").val().length < 1) {
				if (!$("#f-request-name").parent().parent().hasClass('form-error')) {
					$("#f-request-name").parent().parent().addClass('form-error');
				}
			}
			if ($("#f-request-email").val().length < 1) {
				if (!$("#f-request-email").parent().parent().hasClass('form-error')) {
					$("#f-request-email").parent().parent().addClass('form-error');
				}
			}
			if ($("#f-request-work").val().length < 1) {
				if (!$("#f-request-work").parent().parent().hasClass('form-error')) {
					$("#f-request-work").parent().parent().addClass('form-error');
				}
			}
			$.fancybox.resize();
			return false;
		}
	
		$.fancybox.showActivity();
	
		$.ajax({
			type		: "POST",
			cache	    : false,
			url		    : "/request_title/",
			data		: $(this).serializeArray(),
			success: function(data) {
				if (data == 'pass') {
					$.fancybox($('#requesttitle-thanks').html(), {'padding': 0, 'margin': 0});
					$.fancybox.resize();
					resetRefer(true);
				} else {
					$.fancybox.hideActivity();
					resetRefer(false);
					$("#f-request-error").show();
					if (data.indexOf("title") > -1) {
						$("#f-request-title").parent().parent().addClass('form-error');
					}
					if (data.indexOf("name") > -1) {
						$("#f-request-name").parent().parent().addClass('form-error');
					}
					if (data.indexOf("email") > -1) {
						$("#f-refer-email").parent().parent().addClass('form-error');
					}
					if (data.indexOf("work") > -1) {
						$("#f-refer-work").parent().parent().addClass('form-error');
					}
					$.fancybox.resize();

				}
			}
		});
		
		return false;
	});
	
	$(".newsletter-footer").bind("submit", function(){
		var $this = $(this).addClass("sending").removeClass("sent failed")
		var data = $this.serializeArray() // must come before disabling
		var $inputs = $this.find("input").attr("disabled", "disabled");
		
		$.ajax({
			type: "POST",
			cache	    : false,
			url: $this.attr("action"),
			data: data,
			success: function(data){
			    $this.addClass("sent");
			    $inputs.attr("disabled", "");
			},
			error: function(){
				$this.addClass("failed");
				$inputs.attr("disabled", "");
			},
			complete: function(){
				$this.removeClass("sending");
				$inputs.attr("disabled", "");
			}
		});
		
		return false;
	});
	
	$(".newsletter-side").bind("submit", function(){
		var $this = $(this).addClass("sending").removeClass("sent failed")
		var data = $this.serializeArray() // must come before disabling
		var $inputs = $this.find("input").attr("disabled", "disabled");
		
		$.ajax({
			type: "POST",
			cache	    : false,
			url: $this.attr("action"),
			data: data,
			success: function(data){
			    $this.addClass("sent");
			    $inputs.attr("disabled", "");
			},
			error: function(){
				$this.addClass("failed");
				$inputs.attr("disabled", "");
			},
			complete: function(){
				$this.removeClass("sending");
				$inputs.attr("disabled", "");
			}
		});
		
		return false;
	});
	
});
