// ---------------------------------------- jQuery extentions ----------------------------------------
/*	jQuery: Exists Function
	Checks to see if the a selector exists before processing with a function.
	Why this itself doesn't exist, I have no idea.
*/
jQuery.fn.exists = function(){return jQuery(this).length>0;}

/* jQuery: Outer HTML Function
	Converts DOM element to string with html
*/
jQuery.fn.outerHTML = function() {
    return $('<div>').append( this.eq(0).clone() ).html();
}

/* jQuery: Fade Toggle
	Toggles the opacity of an object.
*/
jQuery.fn.fadeToggle = function(speed, easing, callback) { 
   return this.animate({opacity: 'toggle'}, speed, easing, callback); 
}; 

// ---------------------------------------- Variables ----------------------------------------
// Server Details
var serverEmail = "info@gold4money.ca";
var serverRoot = "http://" + document.location.hostname;
var siteName = "GotGold";

// ---------------------------------------- Generic Class Rules ----------------------------------------
$('input').bind('focusin', function(){
	$(this).addClass('focused');
});

$('input').bind('focusout', function(){
	$(this).removeClass('focused');
});

$('.onenyne').hover(function(){
	$(this).find('.logo').css({'opacity':""}).stop().fadeIn(250,'easeOutQuad');
},function(){
	$(this).find('.logo').css({'opacity':""}).stop().fadeOut(250,'easeOutQuad');
});

// ---------------------------------------- COOKIES! ----------------------------------------
function setCookie(name,value,days){
	if(days){
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires=" + date.toGMTString();
	} else {
		var expires = "";
	}
	document.cookie = name + "=" + value+expires+"; path=/";
}

function getCookie(c_name){
	var i,x,y,ARRcookies=document.cookie.split(";");
	for (i=0;i<ARRcookies.length;i++){
		x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
		y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
		x=x.replace(/^\s+|\s+$/g,"");
		if (x==c_name){
			return unescape(y);
		}
	}
}

// ---------------------------------------- Adjust Wrapper ----------------------------------------
function resizePages() {
	var width = $(window).width();
	var height = $(window).height();
	var contentHeight = $(document).height();
	var trueHeight = contentHeight > height? contentHeight : height ;
	console.log("Resizing Page: Height = " + trueHeight);
}

// ---------------------------------------- Start Page Elements ----------------------------------------
function startRotator(){
	console.log('Rotator Banner: Start');
	$('.rotator').each(function(index, element) {
			//Bind Controls
			var currentItem = 0;
			var itemCount = $(this).find('.itemHolder .item').length;
			var itemWidth = 700;
			var rotatorTimer;
			
			function getPage(){
				if(currentItem < 0){
					currentItem = itemCount-1;
				}
				
				if(currentItem >= itemCount){
					currentItem = 0;
				}
				
				$('.itemHolder').stop().animate({'margin-left':-currentItem * itemWidth},1000,"easeOutExpo");
				
				resetTimer();
			}
			
			function resetTimer(){
				if (rotatorTimer){
					clearInterval(rotatorTimer);
				}
				rotatorTimer = setInterval(function(){
					currentItem ++;
					getPage();
				}, 5000);
				return false;
			};
			
			$('.prev', this).bind('click', function (event) {
				event.preventDefault();
				currentItem --;
				getPage();
				return false;
			});
			
			$('.next', this).bind('click', function (event) {
				event.preventDefault();
				currentItem ++;
				getPage();
				return false;
			});

			getPage();
			console.log('Rotator Banner: Total Items = ' + itemCount);
    });
}

// ---------------------------------------- Mail-In Form ----------------------------------------
function validateMailInForm(){
	var formError = false;
	
	if (validateName()){
	} else {
		formError = true;
	}
		
	if (validateAddress()){
	} else {
		formError = true;
	}

	if (validateCity()){
	} else {
		formError = true;
	}
	
	if (validateProvince()){
	} else {
		formError = true;
	}
	
	if (validatePostal()){
	} else {
		formError = true;
	}
	
	if (validateEmail()){
	} else {
		formError = true;
	}
	
	if (formError == true){
		return false;	
	} else {
		return true;	
	}
}

function validateName() {
	var contactName = $('#goldxpressForm #name').val();
	if (contactName == null || contactName == ""){
		$('#goldxpressForm #name').removeClass('success');
		$('#goldxpressForm #name').addClass('error');
		return false;
	} else {
		$('#goldxpressForm #name').removeClass('error');
		$('#goldxpressForm #name').addClass('success');
		return true;
	}
}

function validateEmail() {
	var contactMail = $('#goldxpressForm #email').val();
	var atpos=contactMail.indexOf("@");
	var dotpos=contactMail.lastIndexOf(".");
	if (contactMail == null || contactMail == "" || atpos<1 || dotpos<atpos+2 || dotpos+2>=contactMail.length){
		$('#goldxpressForm #email').removeClass('success');
		$('#goldxpressForm #email').addClass('error');
		return false;
	} else {
		$('#goldxpressForm #email').removeClass('error');
		$('#goldxpressForm #email').addClass('success');
		return true;
	}
}

function validateAddress() {
	var contactName = $('#goldxpressForm #address').val();
	if (contactName == null || contactName == ""){
		$('#goldxpressForm #address').removeClass('success');
		$('#goldxpressForm #address').addClass('error');
		return false;
	} else {
		$('#goldxpressForm #address').removeClass('error');
		$('#goldxpressForm #address').addClass('success');
		return true;
	}
}

function validateCity() {
	var contactName = $('#goldxpressForm #city').val();
	if (contactName == null || contactName == ""){
		$('#goldxpressForm #city').removeClass('success');
		$('#goldxpressForm #city').addClass('error');
		return false;
	} else {
		$('#goldxpressForm #city').removeClass('error');
		$('#goldxpressForm #city').addClass('success');
		return true;
	}
}

function validatePostal() {
	var contactName = $('#goldxpressForm #postalzip').val();
	if (contactName == null || contactName == ""){
		$('#goldxpressForm #postalzip').removeClass('success');
		$('#goldxpressForm #postalzip').addClass('error');
		return false;
	} else {
		$('#goldxpressForm #postalzip').removeClass('error');
		$('#goldxpressForm #postalzip').addClass('success');
		return true;
	}
}

function validateProvince() {
	var contactName = $('#goldxpressForm #postalzip').val();
	if (contactName == null || contactName == ""){
		$('#goldxpressForm #postalzip').removeClass('success');
		$('#goldxpressForm #postalzip').addClass('error');
		return false;
	} else {
		$('#goldxpressForm #postalzip').removeClass('error');
		$('#goldxpressForm #postalzip').addClass('success');
		return true;
	}
}

function sendMailInForm(){
	var contactName = $('#goldxpressForm #name').val();
	var contactMail = $('#goldxpressForm #email').val();
	var contactAddress = $('#goldxpressForm #address').val();
	var contactCity = $('#goldxpressForm #city').val();
	var contactProvince = $('#goldxpressForm #province').val();
	var contactPostal = $('#goldxpressForm #postalzip').val();
	var contactPhone = $('#goldxpressForm #phone').val();
	var contactSubject = "GoldXpress Mail-In Form"
	var contactMessage = contactName + " requests a GoldXpress Kit."

	$.post(serverRoot + "/assets/scripts/site.contact.php",{
		userEmail: serverEmail,
		senderName: contactName,
		senderEmail: contactMail,
		senderAddress: contactAddress,
		senderCity: contactCity,
		senderProvince: contactProvince,
		senderPostal: contactPostal,
		senderPhone: contactPhone,
		senderSubject: contactSubject,
		senderMessage: contactMessage},
		function(data){
			if(data.gridStatus == "pass"){
				$('#goldxpressForm .indent').empty().append(
					'<p>Thank You for requesting your <b>Free GoldXPress Kit</b>'
				);
			}
		}
	, "json");
}

$('#goldxpressForm #name').bind("blur", function(){
	validateName();	
});

$('#goldxpressForm #email').bind("blur", function(){
	validateEmail();	
});

$('#goldxpressForm #address').bind("blur", function(){
	validateAddress();	
});

$('#goldxpressForm #city').bind("blur", function(){
	validateCity();	
});

$('#goldxpressForm #province').bind("blur", function(){
	validateProvince();	
});

$('#goldxpressForm #postalzip').bind("blur", function(){
	validatePostal();	
});

$('#goldxpressForm button[type="reset"]').bind("click", function(event){
	$('#goldxpressForm input[type="text"]').val("");
	$('#goldxpressForm textarea').val("");
	$('#goldxpressForm input').removeClass('error');
	$('#goldxpressForm input').removeClass('success');	
	return false;
});

$('#goldxpressForm button[type="submit"]').bind("click", function(event){
	event.preventDefault();
	if(validateMailInForm()){
		sendMailInForm();
	}
});

// ---------------------------------------- JavaScript ----------------------------------------
$(document).ready(function(){
	// Top Secret CODES
	if ( window.addEventListener ) {
		// Konami Komando
		var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
		window.addEventListener("keydown", function(e){
			kkeys.push( e.keyCode );
			if ( kkeys.toString().indexOf( konami ) >= 0 )
				window.location = "http://onenyne.com/";
		}, true);		
	}
	
	$('.onenyne a').hover(function(){
			$('.onenyne a div').animate({'left':'0'}, 500, 'easeOutExpo');
		},function(){
			$('.onenyne a div').animate({'left':'60'}, 500, 'easeOutExpo');
	});
	
	//Home Rotator
	if($('.rotator').exists()){
		startRotator();
	}

	// Resize Handler
	$(window).resize(function () {
		resizePages();
	});	
	resizePages();
});

$(window).load(function() {
});
