$(function(){

// super global
if(jQuery.browser.msie == true && jQuery.browser.version != "9.0"){ 
	var msie = true;
} else { 
	var msie = false;
}

var disqus_developer = 1; // developer mode is on	


// FUNCS

var marketoTracking = function() {
	
	// Define vars
	var  cookieDomain = "zendesk.com";
	var	 refer = document.referrer;
	var	 searchString;
	var	 searchEngine;
		 
	//if there's no referrer, do nothing
	if ( refer != undefined && refer != "" ) {
		var referrerDomain = refer.substr(refer.indexOf("\/\/") + 2, refer.indexOf("\/",8) - refer.indexOf("\/\/") - 2).toLowerCase();
		var excludedDomainFound = false;
		excludedDomainFound = ((referrerDomain.indexOf("zendesk.com") != -1) || (referrerDomain.indexOf("salesforce") != -1));
	}

	if( !excludedDomainFound ) {
		var i = 0;
		var searchEngines = [
			{ name: "Yahoo", url: /\.yahoo\.co/i, query: "p" },
			{ name: "Google", url: /\.google\./i, query: "q" },
			{ name: "MSN Search", url: /search\.msn\./i, query: "q" },
			{ name: "AOL", url: /\.aol\./i, query: "query" },
			{ name: "Bing", url: /\.bing\.com/i, query: "q" },
			{ name: "Ask", url: /\.ask\.com/i, query: "q" }
		];
		
		while (i < searchEngines.length) {
			if (refer.match(searchEngines[i].url)) {
	  			searchEngine = searchEngines[i].name;
	  			searchString = $.getQueryString({ ID: searchEngines[i].query, URL: refer, DefaultValue: "" });
	  			break;
			}
			i++;
		}
		
		if (i == searchEngines.length) {
		 	searchEngine = referrerDomain;
		 	var queries = ["q","p","query"];
		 	var i = 0;
		 	while ((i < queries.length) && (searchString == undefined)) {
		   		searchString = $.getQueryString({ ID: queries[i], URL: refer });
		   		i++;
		 	}
	
		   	// no search strings found -- use this text instead.
		 	if (searchString == undefined) {
		   		searchString = "Null";
		 	}
		}		
		
		// Set vars for Cookie Stuff
		var campaign = getURLParameter("utm_campaign");
		var	keyword = getURLParameter("utm_term");
		var	paid = (getURLParameter("utm_medium") == "cpc") ? true : false ;
		
		// Case 1: If Original PPC Campaign cookie is not set
		if ( !$.cookie('Original_PPC_Campaign__c')) { 
				$.cookie('Original_PPC_Campaign__c', campaign, {expires: 730, path: '\/', domain: cookieDomain});
	     		$.cookie('Last_PPC_Campaign__c', campaign, {expires: 730, path: '\/', domain: cookieDomain});
	    } else { 
				$.cookie('Last_PPC_Campaign__c', campaign, {expires: 730, path: '\/', domain: cookieDomain});
		} 
		
		// Case 1: If Original PPC Keyword cookie is not set
		if ( !$.cookie('Original_PPC_Keyword__c')) { 
				$.cookie('Original_PPC_Keyword__c', keyword, {expires: 730, path: '\/', domain: cookieDomain});
		  		$.cookie('Last_PPC_Keyword__c', keyword, {expires: 730, path: '\/', domain: cookieDomain});
    	} else {
	    	$.cookie('Last_PPC_Keyword__c', keyword, {expires: 730, path: '\/', domain: cookieDomain});
		} 
		
		// Case 1: If Original Referrer Cookie is not set
		if( !$.cookie('Original_Referrer2__c')) { 
			$.cookie('Original_Referrer2__c', referrerDomain,{expires: 730, path: '\/', domain: cookieDomain});
	     	$.cookie('Last_Referrer__c', referrerDomain,{expires: 730, path: '\/', domain: cookieDomain});
	    } else {
			$.cookie('Last_Referrer__c', referrerDomain,{expires: 730, path: '\/', domain: cookieDomain});
	    }
		
		// Case 1: If Original Search Engine Cookie is not set
		if( !$.cookie('Original_Search_Engine2__c')) { 				
			$.cookie('Original_Search_Engine2__c', searchEngine,{expires: 730, path: '\/', domain: cookieDomain});
			$.cookie('Last_Search_Engine__c', searchEngine,{expires: 730, path: '\/', domain: cookieDomain});
	    } else {
			$.cookie('Last_Search_Engine__c', searchEngine,{expires: 730, path: '\/', domain: cookieDomain});
	    }
		
		// Case 1: If Original Search String Cookie is not set
		if( !$.cookie('Original_Search_String__c') ) { 
			$.cookie('Original_Search_String__c', searchString,{expires: 730, path: '\/', domain: cookieDomain});
			$.cookie('Last_Search_String__c', searchString,{expires: 730, path: '\/', domain: cookieDomain});
	    } else {
			$.cookie('Last_Search_String__c', searchString,{expires: 730, path: '\/', domain: cookieDomain});
	    }
		
		//console.log('search string', searchString);

		// Case 1: If Original Search Type Cookie is not set, search happened, and refer url contains "utm_campaign" 
		if ( !$.cookie('Original_Referrer_Type__c') && paid ){ 
			$.cookie('Original_Referrer_Type__c', "Paid", {expires: 730, path: '\/', domain: cookieDomain});
			$.cookie('Last_Referrer_Type', "Paid", {expires: 730, path: '\/', domain: cookieDomain});
	    } else if ( !$.cookie('Original_Referrer_Type__c') && !paid ){ 
			$.cookie('Original_Referrer_Type__c', "Organic", {expires: 730, path: '\/', domain: cookieDomain});
			$.cookie('Last_Referrer_Type', "Organic", {expires: 730, path: '\/', domain: cookieDomain});
	    } else {
	    	var isPaid = (paid) ? 'Paid' : 'Organic'; 
    		$.cookie('Last_Referrer_Type', isPaid, {expires: 730, path: '\/', domain: cookieDomain});
	    }
	
	} // end excludedDomain loop
	
	function getURLParameter(name) {
		return decodeURI((RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]);
	}

}; // end marketoTracking	


function modernizrGo() { 
	if (!Modernizr.borderradius) {
		$('#ghost-background, #active-background').corner("10px cc:#f7f7f7");
		$('#grid-top-logo').corner("115px cc:#f3f3f3");
		$('#trial').corner("10px");

	}

	if(!Modernizr.input.placeholder){
		$('[placeholder]').focus(function() {
		  var input = $(this);
		  if (input.val() == input.attr('placeholder')) {
			input.val('');
			input.removeClass('placeholder');
		  }
		}).blur(function() {
		  var input = $(this);
		  if (input.val() == '' || input.val() == input.attr('placeholder')) {
			input.addClass('placeholder');
			input.val(input.attr('placeholder'));
		  }
		}).blur();
		$('[placeholder]').parents('form').submit(function() {
		  $(this).find('[placeholder]').each(function() {
			var input = $(this);
			if (input.val() == input.attr('placeholder')) {
			  input.val('');
			}
		  })
		});
	}
}

function buttonGo(parent) {
	var button = parent.find('span:last-child');
	var hover = parent.find('span:nth-child(2)');
	var click = parent.find('span:first-child');
	
	if(msie == true){
		parent.mouseenter(function() {
			button.css({ 'display': 'none' });
		}).mouseleave(function() {			
			button.css({ 'display': 'block' });
		});

		parent.mousedown(function(){
			button.css({ 'display': 'none' });
			hover.css({ 'display': 'none' });
		}).mouseup(function(){
			hover.css({ 'display': 'block' });
		});
		
	} else {
			parent.mouseenter(function() {
				button.stop().animate({ opacity: '0' },75);			
			}).mouseleave(function() {			
				button.stop().animate({ opacity: '1' },75);			
			});
	
			parent.mousedown(function(){
				button.stop().animate({ opacity: '0' },75);
				hover.stop().animate({ opacity: '0' },75);
			}).mouseup(function(){
				hover.stop().animate({ opacity: '1' },75);
			});		
	}
	// IE fallback
	if(msie == true){
		$('#create-my-zendesk').mousedown(function(){
			if(open == true){
				$('#create-my-zendesk').css({ 'display': 'none' });
				$('#create-my-zendesk-active').css({ 'display': 'none' });
			}
		});
		$('#create-my-zendesk').mouseup(function(){
			if(open == true){
				$('#create-my-zendesk').css({ 'display': 'block' });
				$('#create-my-zendesk-active').css({ 'display': 'none' });			
			}
		});
	} else {
		$('#create-my-zendesk').mousedown(function(){
			if(open == true){
				$('#create-my-zendesk').stop().animate({ opacity: '0' },75);
				$('#create-my-zendesk-active').stop().animate({ opacity: '0' },75);
			}
		});
		$('#create-my-zendesk').mouseup(function(){
			if(open == true){
				$('#create-my-zendesk').stop().animate({ opacity: '1' },75);
				$('#create-my-zendesk-active').stop().animate({ opacity: '0' },75);			
			}
		});
	}
}

function googleCSE() {
	$('#searchform').submit(function(){
		var searchTerm = $('#s').val();
		$('#cse-search-form .gsc-search-box input:first-child').val(searchTerm);
		$('.gsc-search-box').submit();
		return false;
	});
	
	$('#searchform-page').submit(function(){
		var searchTerm = $('#s-page').val();
		$('#cse-search-form .gsc-search-box input:first-child').val(searchTerm);
		$('.gsc-search-box').submit();
		return false;
	});

	function getSearchVar(){
		if(typeof($('#main form.gsc-search-box td.gsc-input input:first-child').val()) == 'undefined'){ 
			setTimeout(getSearchVar,50);
			return;
		}
		$('#s-page').val($('#main form.gsc-search-box td.gsc-input input:first-child').val());
	}
}

function signUpFormWinning() {
	$(function() {
		var trial = $('#trial');
		var	h3 = $('.bait h3');
		var	active = false;
		var marketo = false;

		// bind all listeners after dom ready

		//
		if (!trial.hasClass('buy')) { 
			trial.hover(
				function(){
					trial.addClass('hover');
					trial.animate({ backgroundColor: "#ffe03d" }, 300);
					trial.css({ 'background-image': 'none'});
					h3.animate({ color: "#b37c00"}, 300);
				},
				function(){
					trial.removeClass('hover');
					h3.stop(true,true).animate({ color: "#ABABAB"}, 300);
					trial.stop(true,true).animate({ backgroundColor: "#eeeeee" }, 300);
				}
			);
		}

		// form rollout on click
		trial.click(function(){
			if(!active) {
				trial.find('.bait').hide();
				trial.addClass('active');
				trial.animate({height:'266px'}, 300);
				trial.find('.wrap').fadeIn(300);
				trial.find('input#fullname').focus();
				active = true;
			}
		});

		// buy button scroll and rollout on click
		$('.buy-button').click(function(){
			if($(this).hasClass('sticky') && $('#login-link').length === 0) {
				$(this).attr('class','').hide();
			}

			var offset = $('#trial-top').offset().top;

			$('html, body').animate({ scrollTop: offset }, 'slow', function() {
				trial.find('.wrap').show();
				trial.find('.bait').hide();
				trial.addClass('active');
				trial.css({'background-position':'0 0'}).animate({height:'266px'}, 'fast');
				trial.find('input#fullname').focus();
				active = true; 
			} );

			_gaq.push(['_setAccount', 'UA-970836-4']);
			_gaq.push(['_trackEvent', 'Try Zendesk Free', 'Click']);
		});
		
		// form submission;
		$('#trial form').submit(function(){
			if(validate()) {
				if(!marketo) {
					setMarketoValues();
					marketo = true;
				}
				register($(this));
			}
			return false;
		});

		$('#site_address').bind('keyup', function() {			
			if($(this).val().length >= 1) {
				var phantom = $('#phantom');

				phantom.html($(this).val());
				$(this).addClass('shadow').css({'background-position':calcTextWidth(phantom) + 'px 8px'});
			} else {
				$(this).removeClass('shadow');
			}
		});
	});

	function calcTextWidth(parent){
		var content = parent.html(),
			measure = '<span>' + content + '</span>',
			width;

		parent.html(measure);
		width = parent.find('span:first').width();
		parent.html(content);
		return width + 8;
	}

	function validate() {
		var required = ['subdomain', 'company', 'name', 'email'],
			email = $("#email"),
			errors = [],
			input;

		// validate required fields
		for(var i = 0, len = required.length; i < len; i++) {
			input = $('.' + required[i]);
			if (input.val() == '' || input.val().indexOf('Enter') === 0) {
				errors.push(required[i]);
				input.parent().addClass('error');
			} else {
				input.parent().removeClass('error');
			}
		}

		// validate email
		if(!/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email.val())) {
   			email.parent().addClass('error');
   			errors.push('email');
  		}

		// if no errors check terms checkbox
		if(errors.length === 0 && $('#terms').attr('checked') != 'checked') {
			$('.shake').effect("shake", { times:2, distance:5, direction:"right" }, 100);
			errors.push('disclaimer');
		}

		return (errors.length === 0) ? true : false;
	}

	function setMarketoValues() {
		// Original recipe
		$("input#trial_extras\\[Original_PPC_Campaign__c\\]").val($.cookie('Original_PPC_Campaign__c'));
	 	$("input#trial_extras\\[Original_PPC_Keyword__c\\]").val($.cookie('Original_PPC_Keyword__c'));
	 	$("input#trial_extras\\[Original_Referrer2__c\\]").val($.cookie('Original_Referrer2__c'));
		$("input#trial_extras\\[Original_Search_Engine2__c\\]").val($.cookie('Original_Search_Engine2__c'));
		$("input#trial_extras\\[Original_Search_String__c\\]").val($.cookie('Original_Search_String__c'));
		$("input#trial_extras\\[Original_Referrer_Type__c\\]").val($.cookie('Original_Referrer_Type__c'));
	 	
	 	// Last chance to dance trance
	 	$("input#trial_extras\\[Last_PPC_Campaign__c\\]").val($.cookie('Last_PPC_Campaign__c'));
	 	$("input#trial_extras\\[Last_PPC_Keyword__c\\]").val($.cookie('Last_PPC_Keyword__c'));
	 	$("input#trial_extras\\[Last_Referrer__c\\]").val($.cookie('Last_Referrer__c'));
		$("input#trial_extras\\[Last_Search_Engine__c\\]").val($.cookie('Last_Search_Engine__c'));
		$("input#trial_extras\\[Last_Search_String__c\\]").val($.cookie('Last_Search_String__c'));
		$("input#trial_extras\\[Last_Referrer_Type__c\\]").val($.cookie('Last_Referrer_Type__c'));
	}

	function register(form) {
		if($('#terms').attr('checked') != 'checked') {
			$('.shake').effect("shake", { times:2, distance:5, direction:"right" }, 100);
		} else {
			var timeZoneOffset = (new Date()).getTimezoneOffset() / 60 * (-1);
			
			$('#terms-wrap').hide();
			$('#loading').fadeIn('fast');

			//timeZoneOffset -= (isDST() ? 1 : 0);

			// set timezone
			if ($("input[name='account[utc_offset]']").length == 0) {
				form.prepend('<input type="hidden" name="account[utc_offset]" value="' + timeZoneOffset + '" />');
			}

			// set country code
			if (google.loader.ClientLocation && google.loader.ClientLocation.address) {
				var countryCode = google.loader.ClientLocation.address.country_code;

				if ($("input[name='address[country_code]']").length == 0) {
					form.prepend('<input type="hidden" name="address[country_code]" value="' + countryCode + '" />');
				}
			}

			// fill default phone val - hackety hack
			if ($('#phone').val() == "") {
				$('#phone').val('-');
			}

			// send reg info to the product
			$.getJSON("http://signup.zendesk.com/accounts.json?_method=post&callback=?", form.formSerialize(), parseResponse);	
		}
	}

	function parseResponse(response) {
		var trial = $('#trial');
		
		if (response.success) {
			var ToTangoID = 'SP-1111-01',
				tracker = new __sdr(ToTangoID),
				company;

			// init totango tracker code
			tracker.track(
				'Submit Form', // activity
				'Signup', // module
					{
						o: $('#company_name').val(), // organization name
						ofid: $('#site_address').val() // organization ID
					},
				$('#full_name').val() // user
			);

			// inject the succes page
			$('#trial').after('<iframe style="display:none;" src="http://www.zendesk.com/wp-content/themes/zendesk-twentyeleven/signup_success.html"></iframe>');
			
			// log event
			_gaq.push(['_setAccount', 'UA-970836-4']);
			_gaq.push(['_trackEvent', 'Try Zendesk Free', 'Create']);

			// redirect timer
			setTimeout(function() {
				if (trial.hasClass('buy')) {
					window.location = response.right_away_link + '?causeware=true';
				} else {
					window.location = response.right_away_link;
				}
			}, 2000);
		} else {
			$('#loading').hide();
			$('#terms-wrap').fadeIn('fast');

			$.each(response.errors, function (index, value) {
				var ident  = ['subdomain', 'company', 'name', 'email'],
					len    = ident.length,
					errors = [];

				for(var i = 0; i < len; i++) {
					if(value.toLowerCase().indexOf(ident[i]) === 0) {
						$('#trial').find('.' + ident[i]).parent().addClass('error');
					}
				}
			});
		}
	}
	
	function isDST() {
		var today = new Date(),
			jan = new Date(today.getFullYear(), 0, 1, 0, 0, 0, 0),
			jul = new Date(today.getFullYear(), 6, 1, 0, 0, 0, 0),
			temp = jan.toGMTString(),
			jan_local = new Date(temp.substring(0, temp.lastIndexOf(" ")-1)),
			temp = jul.toGMTString(),
			jul_local = new Date(temp.substring(0, temp.lastIndexOf(" ")-1)),
			hoursDiffStdTime = (jan - jan_local) / (1000 * 60 * 60),
			hoursDiffDaylightTime = (jul - jul_local) / (1000 * 60 * 60);
	
	   return hoursDiffDaylightTime != hoursDiffStdTime;
	}
} // end signupFormWinning

$(window).load(function(){
	$(function() {
		var top,
			bar    = $("#nav-bar-content"),
			offset = $("#nav-bar-anchor").offset().top,
			menu   = $('#menu-main'),
			lotus  = $('#access-primary a.lotus'),
			trial  = $('#try-button-sm'),
			phone  = $('#phone-number'),
			home   = $('#login-link').length === 1, 
			expanded = false;

		$(window).scroll(function() {
			top = $(this).scrollTop();

			if (top > offset) {
				bar.css({
					'position':'fixed',
					'top':'-1px',
					'width':'100%',
					'z-index':'5555',
          			'box-shadow': '0px 0px 8px 0px #777'
				});

				if(!expanded) {
					menu.animate({'margin-left':'36px'}, 250);
					lotus.animate({'margin-left':'-10px', 'opacity':'1'}, 250);
					trial.fadeIn(100);

					expanded = true;
				}
			} else if (top <= offset) {
				bar.attr('style', '');
				
				if(expanded) {
					menu.animate({'margin-left':'0px'}, 150);
					lotus.animate({'margin-left':'-30px', 'opacity':'0'}, 200);
					
					if(!home)
						trial.fadeOut(100);

					expanded = false;
				}
			}
		});

		$(window).trigger('scroll');
	});
});

// global
modernizrGo();

// sexy buttons
buttonGo($('div#free-trial-button-container'));	
buttonGo($('div#signup-container'));		
buttonGo($('div#home-page-slides'));
buttonGo($('div#home-page-slides2'));
buttonGo($('div#home-page-slides3'));

// federated search across university.zendesk.com, support.zendesk.com, zendesk.com
googleCSE();  

// sign up
signUpFormWinning();

marketoTracking();
}); // all scripty things must come to an...
