var validateEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

$(document).ready(function(){	
	
	// adding "last" class to last nav item in main navigation
	$("#mainNav li:last").addClass("last");	
	
	// adding "last" class to last UL in case studies listing
	$(".caseStudiesList:last").addClass("caseStudiesListLast");	
	
	// setting background position inline. mostly for the sake of animations in Firefox
	$("#mainNav li a").each(function() {
		if($(this).hasClass("active"))
		return;
		$(this).css("backgroundPosition", "0px 0px");
	});
		
	// animate background position for main navigation items, skipping active item in the process
	$("#mainNav li a").mouseover(function() {
		if($(this).hasClass("active"))
		return;
		$(this).animate({backgroundPosition: "(0px -36px)"}, 380); 
	});
	$("#mainNav li a").mouseout(function() {
		if($(this).hasClass("active"))
		return;
		$(this).animate({backgroundPosition: "(0px 0px)"}, 380);	 
	});
	
	// animate thumbnal movement for home feature
	$("#homeFeature li a").mouseover(function() {
		if($(this).hasClass("active"))
		return;
		$(this).animate({backgroundPosition: "(26px 10px)", opacity: "1.0"}, 220); 
	});
	$("#homeFeature li a").mouseout(function() {
		if($(this).hasClass("active"))
		return;
		$(this).animate({backgroundPosition: "(26px 17px)", opacity: "0.5"}, 220);	 
	});

	
	$("#homeFeatureThumbs li a").click(function() {
		homeFeatureSwitch(this);
		return false;
	})
	
	// adding "last" class to last item in homepage tab content
	$("#homeTabsCont ul li:last").addClass("last");
	/*$("#homeTabs li a").click(function() {
		homeTabSwitch(this);
		return false;
	});*/
	//onclick="homeTabSwitch(this); return false;"
	
	// adding "last" class to last item in footer nav
	$("#footerNav li:last").addClass("last");
	
	$("a#resizeSmall").click(function() {
		resizeArticle('small');
		return false;
	});
	
	$("a#resizeMed").click(function() {
		resizeArticle('medium');
		return false;
	});
	
	$("a#resizeLarge").click(function() {
		resizeArticle('large');
		return false;
	});
	
	resetShareButtons();
	
	$(".subPageModSubscribe form").submit(function() {
		alert(this);
	});
	
	$(".homeNewsletterSignup form").submit(function() {
		alert(this);
	});
});

function subscribeSubmit(form) {
	var subscribeurl = $(form).attr("action");
	if (validateEmail.test(form[0].value)) {
		$.ajax({type: "GET", url: subscribeurl,data: "email=" + form[0].value,
		   success: function(subscribeResponse){
				$(".subPageModSubscribe").html(subscribeResponse);
			}
		});	
	} else {
		alert("Invalid email address");
		return false;
	}
	return false;
}

function subscribeSubmitHome(form) {
	var subscribeurl = $(form).attr("action");

	if (validateEmail.test(form[0].value)) {
		$.ajax({type: "GET", url: subscribeurl,data: "email=" + form[0].value,
		   success: function(subscribeResponse){
				$(".homeNewsletterSignup").html(subscribeResponse);
			}
		});	
	} else {
		alert("Invalid email address");
		return false;
	}
	return false;
}

// check if user has voted on poll
function initPoll(pollID, pollurl) {
	if(readCookie(pollID)) {
		$.ajax({type: "GET", url: pollurl,
		   success: function(pollResults){
				$(".pollModuleForm").html(pollResults);
				stripePollResults();
			}
		});
	}
}

function getPollResults(pollID, pollResultPage) {
	var pollValue;
	$("input:radio").each( function(f) {
		if($("input:radio:eq("+f+")").attr("checked")) {
			pollValue = $(this).attr("value");
		}
	});
	if(!pollValue) {
		alert("Please select a poll answer");
	} else {
		$.ajax({
			type: "GET",
			url: pollResultPage,
			data: "pollID=" + pollID + "&poll="+pollValue,
			success: function(pollResults){
				createCookie(pollID, pollValue, 365);
				$(".pollModuleForm").html(pollResults);
			}
		});
	}
	return false;
}

function createCookie(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 readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0; i < ca.length; i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0)
			return c.substring(nameEQ.length,c.length);
	}
	return false;
}
/*----------------------*/

var okToChange = true;
function homeFeatureSwitch(el) {
	if($(el).hasClass("active"))
	return false;
	
	if(okToChange = true) {
		okToChange = false;
		$("#homeFeatureThumbs li a.active").animate({backgroundPosition: "(26px 17px)", opacity: "0.5"}, 220);
		$("#homeFeatureThumbs li a.active").removeClass("active");
		$(el).addClass("active");
		var targetContent = $(el).attr("rel")+".aspx";
		$(".homeFeatureContent").fadeOut("slow", function() {
			$("#homeFeature .loaderIcon").fadeIn("fast");
			$(".homeFeatureContent").html("");
			$.ajax({type: "GET", url: targetContent,
			   success: function(ajaxContent){
					$("#homeFeature .loaderIcon").fadeOut("slow");
					$(".homeFeatureContent").html(ajaxContent);
					$(".homeFeatureContent").fadeIn("slow");
				}
			});
		});
		okToChange = true;
	} else {
		return false;	
	}
	
	
}

function addLastClasstoTab() {
	$("#homeTabsCont ul li:last").addClass("last");
}

function homeTabSwitch(el) {
	if($(el).hasClass("active"))
		return false;
		
	$("#homeTabs li a.active").removeClass("active");
	$(el).addClass("active");
	var targetContent = $(el).attr("rel");
	
	$(".homeTabsCont").hide();
	$("#"+targetContent).show();
	
	/*$("#homeTabsCont ul").fadeOut("normal", function() {
		//$("#homeTabsCont ul").remove();
		$("#homeTabsCont").html("<div class='loaderIcon'></div>");
		$("#homeTabsCont .loaderIcon").fadeIn("fast");
		$.ajax({type: "GET", url: targetContent,
		   success: function(ajaxContent){
			    //$("#homeTabsCont").fadeOut("slow");
				$("#homeTabsCont").html(ajaxContent);
				addLastClasstoTab();
				$("#homeTabsCont").fadeIn("normal");
			}
		});
	});*/
	
	return false;
}
	
	

/**
 * @author Alexander Farkas
 * v. 1.02
 */
(function($) {
	$.extend($.fx.step,{
	    backgroundPosition: function(fx) {
            if (fx.state === 0 && typeof fx.end == 'string') {
                var start = $.curCSS(fx.elem,'backgroundPosition');
                start = toArray(start);
                fx.start = [start[0],start[2]];
                var end = toArray(fx.end);
                fx.end = [end[0],end[2]];
                fx.unit = [end[1],end[3]];
			}
            var nowPosX = [];
            nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
            nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];           
            fx.elem.style.backgroundPosition = nowPosX[0]+' '+nowPosX[1];
            
           function toArray(strg){
               strg = strg.replace(/left|top/g,'0px');
               strg = strg.replace(/right|bottom/g,'100%');
               strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");
               var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
               return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];
           }
        }
	});
})(jQuery);

// empties a text field of it's default value when a user first clicks into the text field
// when the text field loses focus, the default value is written back if no user defined value is entered
function scanInputs()
{
	var combinedFields = new Array();		// going to hold the the NodeLists for both inputs[text] and textareas

	// grab all inputs with a type of text and push the returned NodeList to the array. Repeat for textareas
	var inputs = document.getElementsByTagName("input");
	for(var i = 0; i < inputs.length; i++)
	{
		combinedFields.push(inputs[i]);
	}
	var textAreas = document.getElementsByTagName("textarea");
	for(var i = 0; i < textAreas.length; i++)
	{
		combinedFields.push(textAreas[i]);
	}

	inputValuesArray = new Array();		// holds the associative array [name] = value/innerHTML

	for(var i = 0; i < combinedFields.length; i++)
	{

		// check to see if it's a text field. The first part of the statement is so we don't throw an error when on textareas since they don't have type attr
		if(combinedFields[i].getAttribute("type") && combinedFields[i].getAttribute("type").toLowerCase() == "text" && inputs[i])
		{
			inputValuesArray[inputs[i].getAttribute("name")] = inputs[i].value;
			combinedFields[i].onfocus = function()
			{
				if(this.value == inputValuesArray[this.getAttribute("name")]) {
					this.value = "";
				} else if (this.value == "Other*") {
					this.value ="";
				}
			}
			combinedFields[i].onblur = function()
			{
				if(this.value == "") {
					if((inputValuesArray[this.getAttribute("name")] == undefined) && (this.id = "otherField")) {
						this.value = "Other*";
					} else {
						this.value = inputValuesArray[this.getAttribute("name")];	
					}
				}
			}
		}
		else if(combinedFields[i].nodeName.toLowerCase() == "textarea")
		{
			inputValuesArray[combinedFields[i].getAttribute("name")] = combinedFields[i].innerHTML;
			combinedFields[i].onfocus = function()
			{
				if(this.innerHTML == inputValuesArray[this.getAttribute("name")]) 
					this.innerHTML = "";
				
			}
			combinedFields[i].onblur = function()
			{
				if(this.innerHTML == "") {
					this.innerHTML = inputValuesArray[this.getAttribute("name")];
				}
			}
		}
	}
}
/*----------------------*/

function resetShareButtons() {
    var delicLink = "http://del.icio.us/post?url="+shareURL+"&title="+shareTitle;
	$("#shareDelic").attr("href", delicLink);
	
	var fbLink = "http://www.facebook.com/sharer.php?u="+shareURL+"&t="+shareTitle;
	$("#shareFacebook").attr("href", fbLink);
	
	var diggLink = "http://digg.com/submit?phase=2&url="+shareURL+"&title="+shareTitle;
	$("#shareDigg").attr("href", diggLink);
	
	var stLink = "http://www.stumbleupon.com/submit?url="+shareURL;
	$("#shareStumble").attr("href", stLink);
}

var articleFontSizing = 'small';

function resizeArticle(size) {
		if(size == "small") {
			$("#articleContent").removeClass();
		}
		if(size == "medium") {
			$("#articleContent").removeClass();
			$("#articleContent").addClass("articleContentMedium");
		}
		if(size == "large") {
			$("#articleContent").removeClass();
			$("#articleContent").addClass("articleContentLarge");
		}
		
		articleFontSizing = size;
}

/* BEGIN: Search Tracking
/*-----------------------------*/
function searchTracking() {
	var url = window.location.toString();
	var urlArray = url.split('?q=');
	var cat;
	var search = urlArray[1];
	if(urlArray[0].match('Site') || urlArray[0].match('Articles')) {
		cat = 1;
	} else if(urlArray[0].match('Images')) {
		cat = 2;
	} else if(urlArray[0].match('Videos')) {
		cat = 3;
	} else if(urlArray[0].match('Audios')) {
		cat = 4;
	} 
	var tracking = '/System/Search/Save%20Search%20Term.aspx?q='+search+'&cat='+cat;
	$.ajax({
		type: "GET",
		url: tracking,
		dataType: "script"
	});
}

function validateForm(form)
{
	var errCount = 0;
	var ageField = document.getElementById("redirect");
	if(ageField)
		var ageCheck = checkAge(form,ageField);
	
	for(var i = 0; i < form.elements.length; i++)
	{
		var error = false
		// all fields with a _req at the end of their name are required fields
		// also check for the * at the end of the field

		if(form.elements[i].name.match(/_req$/))
			error = true;
		if(form.elements[i].type == "select-one")
		{
			//alert(form.elements[i].selectedIndex)
			if(form.elements[i].name.match(/_req$/) && (form.elements[i].options[form.elements[i].selectedIndex].value.match(/\*$/) || form.elements[i].options[form.elements[i].selectedIndex].text.match(/\*$/)))
				error = true;
		}
		if(error)
		{
			form.elements[i].style.backgroundColor = "#fd4242";
			//form.elements[i].parentNode.style.backgroundColor = "yellow";
			errCount++;
		}
		else
		{
			form.elements[i].style.backgroundColor = "#fff";
			//form.elements[i].parentNode.style.backgroundColor = "#ffffff";
			
		}
	}
	
	if(errCount != 0) {
		alert('Please Complete All Hightlighted Fields');
		return false;
	} else if(ageCheck == "too young")
	{
		ageField.value = 1;
		//alert("too young")
		return true;
	}
	else
	{
		return true;
	}
}
/*----------------------*/

function checkAge(form,ageField)
{
	/* the minumum age you want to allow in */
	var min_age = 14;

	/* change "age_form" to whatever your form has for a name="..." */
	var year = parseInt(document.forms["contactForm"]["birthYear_req"].value);
	var month = parseInt(document.forms["contactForm"]["birthMonth_req"].value) - 1;
	var day = parseInt(document.forms["contactForm"]["birthDay_req"].value);

	var theirDate = new Date((year + min_age), month, day);
	var today = new Date;

	if ( (today.getTime() - theirDate.getTime()) < 0) {
		//alert("You are too young to enter this site!");
		return "too young";
	}
	else {
		return true;
	}
}
/*----------------------*/

function validateFormMedia(form)
{
	var errCount = 0;
	$(".radioSet").each(function(i) {
		var okToPass = false;
		for(r=0; r <= $(".radioSet:eq("+i+") input:radio").length; r++) {
			var currentValue = $(".radioSet:eq("+i+") input:radio:eq("+r+")").attr("checked");
			if(currentValue == true)
			okToPass = true;
		}
		for(r=0; r <= $(".radioSet:eq("+i+") input:checkbox").length; r++) {
			var currentValue = $(".radioSet:eq("+i+") input:checkbox:eq("+r+")").attr("checked");
			if(currentValue == true)
			okToPass = true;
		}
		if(!okToPass) {
			errCount++;
			$(".radioSet:eq("+i+") .radioSetTitle").css("color", "red");
		}
		else {
			$(".radioSet:eq("+i+") .radioSetTitle").css("color", "#858585");	
		}
	});
	
	for(var i = 0; i < form.elements.length; i++)
	{
		var error = false
		var emailFilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		// all fields with a _req at the end of their name are required fields
		// also check for the * at the end of the field
		
		if(form.elements[i].name.match(/_req$/) && form.elements[i].value.match(/\*$/))
			error = true;
		if(form.elements[i].name == 'contactEmail_req' || form.elements[i].name == 'email_req' || form.elements[i].name == 'staff_email_req') {
			if(emailFilter.test(form.elements[i].value)) {
				error = false;
			} else {
				error = true;
			}
		}
		if(form.elements[i].type == "select-one")
		{
			//alert(form.elements[i].selectedIndex)
			
			//if(form.elements[i].selectedIndex == 0)
			if(form.elements[i].name.match(/_req$/) && (form.elements[i].options[form.elements[i].selectedIndex].value.match(/\*$/) || form.elements[i].options[form.elements[i].selectedIndex].text.match(/\*$/)))
				error = true;
		}
		if(error)
		{
			form.elements[i].style.color = "red";
			if(form.elements[i].type == "select-one")
			$(form.elements[i]).addClass("errorDropdown");
			//form.elements[i].parentNode.style.backgroundColor = "yellow";
			errCount++;
		}
		else
		{
			form.elements[i].style.color = "#858585";
			if(form.elements[i].type == "select-one")
			$(form.elements[i]).removeClass("errorDropdown");
			//form.elements[i].parentNode.style.backgroundColor = "#ffffff";
			
		}
	}
	
	if(errCount != 0) {
		$("#errorMessage").html("Please complete all highlighted fields.");
		return false;
	}
	else
	{
		$("#errorMessage").html("");
		clearDefaultFields(form);
		return true;		
	}
}

/*----------------------*/
function validateThis(form)
{
	var errCount = 0;
	var error = false
	for(var i = 0, z = form.elements.length; i < z; i++)
	{
		var reset = false;
		// all fields with a _req at the end of their name are required fields
		// also check for the * at the end of the field
		if(form.elements[i].name.match(/_req$/))
		{
			if(form.elements[i].value == "")
			{
				form.elements[i].style.backgroundColor = "#b90000";
				errCount++;
			}
			else if(form.elements[i].value != "" && form.elements[i].name.match(/email/i))
			{
				var emailExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
				if(!emailExp.test(form.elements[i].value))
				{
					var el = document.getElementById(form.elements[i].name+"_error");
					el.innerHTML = "invalid email address";
					errCount++;
				}
				else
				{
					reset = true;
				}
			} 
			else
			{
				reset = true;
			}
		}
		// else if(form.elements[i].name.match(/_req$/) && (form.elements[i].options[form.elements[i].selectedIndex].value.match(/\*$/) || form.elements[i].options[form.elements[i].selectedIndex].text.match(/\*$/)))
		// 			error = true;
		if(reset)
		{
			form.elements[i].style.backgroundColor = "#fff";
		}
	}
	if(errCount > 0)
	{
		alert("Seems there are some errors with your form entries.\nPlease double check your entries.");
		return false;
	}
	else
		return true;
}
/*----------------------------*/
function printPage()
{
	window.print();
}

/*----------------------*/

function openWin(url,wName,para)
{
	//alert(typeof(arguments[2]));
	if(typeof(arguments[2]) == "object")
		var values = _parameters(arguments[2]);
	window.open(url,wName,values);
}

function _parameters(attributes)
{
	var values = [];
	for(attribute in attributes)
	{
		values.push(attribute + "=" + attributes[attribute].toString());
	}
	return values.join(",");
}
/*----------------------*/

//Striping for poll results
stripePollResults = function () {
	$(".pollResultRow:odd").addClass("pollResultRowOdd");
}
/*----------- Begin Michael's Form Validation -----------*/
function validate(form)
{
	var errCount = 0;
	var error = false
	for(var i = 0, z = form.elements.length; i < z; i++)
	{
		var reset = false;
		// all fields with a _req at the end of their name are required fields
		// also check for the * at the end of the field
		if(form.elements[i].style.display == 'none') {
			continue;
		}
		if(form.elements[i].name.match(/_req$/)) {
			if(form.elements[i].value == "")
			{
				if(document.getElementById(form.elements[i].name+"_error"))
				{	
					var el = document.getElementById(form.elements[i].name+"_error");
					el.innerHTML = "field can't be blank";
				}
				else
				{
					if(form.elements[i].getAttribute('type')=='radio') alert('radio');
					else form.elements[i].style.backgroundColor = "#b90000";
				}
				errCount++;
			}
			else if(form.elements[i].value != "" && form.elements[i].name.match(/email/i))
			{
				var emailExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
				if(!emailExp.test(form.elements[i].value))
				{
					if(document.getElementById(form.elements[i].name+"_error"))
					{	
						var el = document.getElementById(form.elements[i].name+"_error");
						el.innerHTML = "invalid email address";
						errCount++;
					} else
					{
						form.elements[i].style.backgroundColor = "#b90000";
					}
					errCount++;
				}

			} 
			else if(form.elements[i].getAttribute('type') == 'radio') {
				if(i != 0 && form.elements[i-1].name == form.elements[i].name) {continue;}
				var a = 0;
				var bool = false;
				while(form.elements[i+a].name == form.elements[i].name) {
					if(form.elements[i+a].checked == true) {
						bool = true;
					}
					a++;
				}
				if(!bool) {
					if(document.getElementById(form.elements[i].name+"_error"))
					{	
						var el = document.getElementById(form.elements[i].name+"_error");
						el.innerHTML = "field can't be blank";
					}
					else
					{
						a = 0;
						while(form.elements[i+a].name == form.elements[i].name) {
							form.elements[i+a].style.outline = '1px solid #b90000';
							a++;
						}	
					}
					errCount++;
				} else {
					a = 0;
					while(form.elements[i+a].name == form.elements[i].name) {
						form.elements[i+a].style.outline = 'none';
						a++;
					}
				}
			}
			else
			{
				reset = true;
			}
		} 
		// else if(form.elements[i].name.match(/_req$/) && (form.elements[i].options[form.elements[i].selectedIndex].value.match(/\*$/) || form.elements[i].options[form.elements[i].selectedIndex].text.match(/\*$/)))
		// 			error = true;
		if(reset)
		{
			if(document.getElementById(form.elements[i].name+"_error"))
			{	
				var el = document.getElementById(form.elements[i].name+"_error");
				el.innerHTML = "";
			}	
			else
			{
				form.elements[i].style.background = "none";
			}
		}
	}
	if(errCount > 0)
	{
		$('.submit').attr("disabled", false);
		alert("Seems there are some errors with your form entries.\nPlease double check your entries.");
		return false;
	}
	else {
		form.action = "/System/Forms/Save_Form.aspx";
        form.submit();
        form.action = "http://now.eloqua.com/e/f2.aspx";
        form.submit();
		return true;
		//$('.submit').attr("disabled", true);			
	}
}
/*----------------------*/
