$("html").addClass("js");

// Multimedia AJAX pagination
var page_num = "";
var cur_url = ($.url.segment(1)) ? $.url.segment(1) : "null";

function multimedia_live_links (current_url) {
	$(".paginate li a").live("click", function() {
        $("#ajax_load").show();
        page_num = $(this).attr("rel");
        post_url = "/ajax/multimedia_thumbnails/" + page_num + "/";
        // $().scrollTo($(".multimedia_information"), 300);
        $.post(post_url, {url_title: current_url}, function(data){multimedia_pagination(data);}, "html");
        return false;
	});
}
function multimedia_pagination (data) {
    if (data) {
        $("#init_load").hide();
        $("div.multimedia_thumbnail").html(data);
        $("div.multimedia_thumbnail").show();
		$("#ajax_load").hide()
    };
    $("div.multimedia_thumbnail .paginate li a").each(function(index) {
        var link_url = this.href;                        
        page_num = ($.url.setUrl(link_url).segment(2)) ? $.url.setUrl(link_url).segment(2) : $.url.setUrl(link_url).segment(1);
    	this.href = "#";
    	this.rel = page_num;
    });
};

function button_switch(ele) {
	if ($(".featured_resource").length || $(".featured_item .single_feature").length) {
		var num = ele.attr("rel") - 1;
	} else {
		var num = ele.find("span.ident").attr("id");
	};
	$(".montel_buttons img").attr('src', '/img/montel-button_off.png');
	$(".montel_buttons img[rel='" + num + "']").attr('src', '/img/montel-button_on.png');
};

$(window).load(function() {
	if ($("#slider").length) {
		$("#slider").nivoSlider({
		    effect: "fade",
		    directionNavHide: false,
		    manualAdvance: true
		});
		var controller = $(".nivo-controlNav");
		var left_offset = (520 - (controller.width())) / 2;
		$(".nivo-controlNav").css("left", left_offset);
	};
});

$(document).ready(function() {

	// Validate research inquiry form.
	if ($("#research_inquiry").length) {
		var required_text = "All fields are required.";
		var bad_email = "Please enter a valid email address";
		$("#research_inquiry").validate({
			groups: {
				form_fields: "first_name last_name email phone comments company title"
			},
			errorElement: "p",
			errorPlacement: function(error, element) {
				$("p#required_note").after(error);
			},
			messages: {
				first_name: required_text,
				last_name: required_text,
				email: {
					required: required_text,
					email: bad_email
				},
				phone: required_text,
				comments: required_text,
				company: required_text,
				title: required_text
			}	
		});
	};

	// Field labels.
	if($("input[type=text],textarea").length) {
		var blur_text = '#666';

		$("input[type=text],textarea,input[type=password]").each(function(index) {
			$(this).data('title', $(this).attr('title'));
			$(this).data('def_color', $(this).css('color'));
			if ($(this).val() == "") {
				$(this).val($(this).data('title'));
				$(this).css('color', blur_text);
			};
			$(this)
				.focus(function() {
					if ($(this).val() == $(this).data('title')) {
						$(this)
							.val("")
							.css('color', $(this).data('def_color'));
					};
				})
				.blur(function() {
					if ($(this).val() == "") {
						$(this)
							.css('color', blur_text)
							.val($(this).data('title'));
					};
				});
		});

		$("form").submit(function() {
			$(this).find("input[type=text],textarea").each(function(index) {
				if ($(this).val() == $(this).data('title')) {
					$(this).val('');
				};
			});
		});	
	}


	// Commenting stuff.
	if($("#commentForm").length) {
		var required_text = "All fields are required.";
		var bad_email = "The email address you provided doesn't look valid. Please double check it.";
		var comment_val_rules = {
			groups: {
				commenting: "email name comment"
			},
			errorElement: "p",
			errorPlacement: function(error, element) {
				error.appendTo(element.parents("fieldset"));
			},
			messages: {
				email: {
					email: bad_email,
					required: required_text
				},
				comment: required_text,
				name: required_text
			}	
		};
		$("#commentForm form").validate(comment_val_rules);
		$("#replyForm form").validate(comment_val_rules);
		$("a.comment_reply").click(function() {
			$("div#replyForm").insertAfter($(this).parent("li")).show();
			$("div#commentForm").empty();
			$("#weever-parent-id").val($(this).attr("rel"));
			return false;
		});
		
		$("#commentForm form,#replyForm form").submit(function(e) {
			
			if ($(this).valid()) {
				// Delay comment form submits by 1 second to be sure to capture the GA event

				var form = this;
				e.preventDefault()

				if (typeof article_url_title == "undefined" || article_url_title == "") {
					article_url_title = "unknown";
				};

				_gaq.push(['_trackEvent', 'Comments', 'Comment Submit', article_url_title]);

				setTimeout(function() {
					form.submit();
				}, 1000);
			};
		});	
	}


	// Share tools.
	if($("a.share").length) {
		$("a.share").each(function(){
			$(this).hover(
				function() {
					$(this).siblings("ul.share_list").show();
				},
				function() {
					$(this).siblings("ul.share_list").hide();		
				}
			);

			$(this).siblings("ul.share_list").hover(
				function() {
					$(this).show();
					$(this).addClass("hover");
					$(this).siblings("a.share").addClass("hover");
				},
				function() {
					$(this).hide();
					$(this).removeClass("hover");
					$(this).siblings("a.share").removeClass("hover");
				}
			);
		});
	}
	if ($("a.email").length) {
		$("a.email").hover(function() {
			$("li.email_article_li").show();
		}, function() {
			$("li.email_article_li").hide();
		});
		$("li.email_article_li").hover(function() {
			$(this).show();
		}, function() {
			$(this).hide();
		});
		$("li.email_article_li input").mouseenter(function() {
			$("li.email_article_li").show();
		});
	};
	
	if ($("ul.email_article form.email_friend").length) {
		$("ul.email_article form.email_friend").submit(function() {
			$(this).find("img.emaiL_friend_load").show();
			var recipient_email = $(this).find("input[name='recipient_email']").val();
			var sender_email = $(this).find("input[name='sender_email']").val();
			var send_copy = ($(this).find("input[name='send_copy']").is(":checked")) ? "yes" : "no";
			var article_title = $(this).find("input[name='article_title']").val();
			var article_url = $(this).find("input[name='article_url']").val();
			var entry_id = $(this).find("input[name='entry_id']").val();
			var used_ul = $(this).parents("ul.email_article");
			$.post(
				'/ajax/email_friend',
				{recipient_email: recipient_email, sender_email: sender_email, send_copy: send_copy, article_title: article_title, article_url: article_url, entry_id: entry_id},
			 	function(data, status) {
					used_ul.find(".email_article_li").slideUp("medium");
					used_ul.find("img.emaiL_friend_load").hide();
					if (status == "success" && data.email_sent === true) {
						used_ul.find(".email_article_result.success").slideDown("medium").addClass("email_status_message");
					}
					else {
						used_ul.find(".email_article_result.fail").slideDown("medium").addClass("email_status_message");
					};
					setTimeout('$(".email_status_message").slideUp("medium")',5000);
				},
				"json"
			);	
			return false;
		});
	};


	// Register swfobject.
	if($("myFlashContent").length) {
		swfobject.registerObject("myFlashContent", "9.0.0", "{site_url}swf/expressInstall.swf");
	}


	// Video featurette hover.
	// if($("div.video_overlay_1").length) {
	// 	$("div.video_overlay_2").hide();
	// 	$("div.video_overlay_3").hide();
	// 	$("img#video_1").hover(
	// 		function() { 
	// 			$("div.video_overlay_1").show();
	// 			$("div.video_overlay_2").hide();
	// 			$("div.video_overlay_3").hide();
	// 		},
	// 		function() {  }
	// 	);
	// 	$("img#video_2").hover(
	// 		function() { 
	// 			$("div.video_overlay_2").show();
	// 			$("div.video_overlay_1").hide();
	// 			$("div.video_overlay_3").hide();
	// 		},
	// 		function() {  }
	// 	);
	// 	$("img#video_3").hover(
	// 		function() { 
	// 			$("div.video_overlay_3").show();
	// 			$("div.video_overlay_1").hide();
	// 			$("div.video_overlay_2").hide();
	// 		},
	// 		function() {  }
	// 	);
	// }


var montel_buttons = $(".featured_content .montel_buttons");
permaPause = false;

$(".montel_buttons a,.montel_buttons a img").live("mousedown",function() {
	$(document).trigger('pauseCarousel');
	permaPause = true;
});

if (montel_buttons.length
	&& !($.browser.msie && parseInt($.browser.version) == '6')
	&& $(".featured_content .inside li").length > 3
	) {
	
	featured_content_items = new Array();
	
	$(".featured_content .inside li .ident").each(function(index) {
		featured_content_items[index] = ".featured_content .montel_buttons img[rel='" + index + "']";
	});

	$(".featured_content .inside").jCarouselLite({
		auto: 2000,
		scroll: 3,
		speed: 1000,
		visible: 3,
		pause: false,
		afterEnd: button_switch,
		btnGo: featured_content_items
	});
	
} else if (montel_buttons.length) {
	montel_buttons.hide();
};

if ($(".featured_resource li.slider_inner").length > 1 || $(".featured_item .single_feature").length > 1) {
	$(".montel_buttons").css("display","inline");
	$els = ($(".featured_item .single_feature").length) ? $(".featured_item .single_feature") : $("#slider_outer li");
	$els.each(function(index) {
		var state = (index == 0) ? "on" : "off";
		$(".montel_buttons").append('\n<a href="#"><img src="/img/montel-button_' + state + '.png" rel="' + index + '" /></a>');
	});
	$("#resource_slider, .featured_event_container").jCarouselLite({
			auto: 4000,
			scroll: 1,
			speed: 1000,
			visible: 1,
			pause: false,
			btnGo: $(".montel_buttons a"),
			afterEnd: button_switch
	}).hover(function() {
		$(document).trigger('pauseCarousel');
	}, function() {
		if (!permaPause) {
			$(document).trigger('resumeCarousel');	
		};
	});;
};

if ($("div.minical").length) {
	$minical = $("div.minical");
	$minical.css("overflow", "hidden");
	$(".upcoming_events a.prev_events, .upcoming_events a.next_events").live("click", function(e) {
		e.preventDefault();
		$("#ajax_page_loader").show();
		dir = ($(this).is('a.next_events')) ? "next" : "prev";
		num = $(this).attr("rel");
		$.get('/events/upcoming-minical/' + num,
			function(data, status){
				if (status == "success") {
					$minical.height($minical.height());
					$old = $(".upcoming_events");
					$new = $(data);
					$new.find("li img").css('display', 'block');
					if ($.browser.msie && parseInt($.browser.version) == '7') {
						// Incredible amounts of IE7 hackery.
						$old.fadeOut(400, function() {
							$(this).remove();
							$new.hide().appendTo($minical);
							$new.fadeIn(400, function() {
								newHeight = $new.height();
								$minical.animate({height: newHeight + 30}, 600);
							});
						});
					} else {
						if (dir == "next") {
							$new.css("left","275px").appendTo($minical);
							newPos = "-275px";
							$new.animate({left: "0"}, 600);
						} else {
							$new.css("right","275px").prependTo($minical);
							newPos = "275px";
							$new.animate({right: "0"}, 600, function(){
								$(this).css("right", null);
							});
						};
						newHeight = $new.height();
						$old.css("position","absolute").animate({left: newPos}, 600, function(){
							$(this).remove();
						});
						$minical.animate({height: newHeight + 30}, 600);
					};
					if (!results) {
						$("div.minical a.next_events").hide();
					};
				};
			},
			"html"
		);
	});
};

if ($(".agenda .track_1").length) {
	$('.agenda .track_1').each(function(){
	    var $track = $(this),
	        tracks = [$track],
	        maxHeight = $track.height();

	    while(($track = $track.next('[class*=track_]:not([class*=track_1])')).length) {
	        tracks.push($track);
	        var height = $track.height();
	        if (height > maxHeight) maxHeight = height;
	    }

	    $.each(tracks, function(){
	        this.height(maxHeight);
	    });
	});
};

if ($(".purchase_button").length) {
	$type = $(".purchase_button").attr("id");
	$(".purchase_button a")
		.attr("target", "_blank")
		.each(function(index) {
			$(this).click(function() {
				$event_virt_url = "/virt/events/" + $type + "-register/";
				$event_virt_url += escape($(this).attr('rel'));
				_gaq.push(['_trackPageview', $event_virt_url]);
			});
		});
};

	// Submit poll on selection.
	if($("div.poll_featurette").length) {
		$("div.poll_featurette input:submit").hide();
		$("div.poll_featurette input:radio").change(function() {
			$(this).submit();
		});
	}


var $pdf_resources = $("div.resource_center li a[href*='.pdf']");
if ($pdf_resources.length) {
	$pdf_resources.each(function(index) {
		$(this).click(function() {
			$virt_url = "/virt/resources/";
			$virt_url += $(this).attr('rel');
			_gaq.push(['_trackPageview', $virt_url]);
		});
	});
};

	// Validate contact form.
	if ($("form.contact_us").length) {
		$("form.contact_us").validate();
	};


	// Embed field hover.
	if($("li.embed_box").length) {
		$("ul.embed_code").hide();
		$("li.embed_box").hover(
			function() {
				$("ul.embed_code").show();
				$("li.embed_box").addClass("hover")
			},
			function() {
				$("ul.embed_code").hide();		
				$("li.embed_box").removeClass("hover")
			}
		);
		$("#embed").focus( function(){ this.select(); });
	}


	// Homepage dropdown hover.
	if($("ul.dropdown").length) {
		$("ul.dropdown").children().hover(
			function() {
				$(this).addClass("hover");
				$(this).children("ul").show();
				$(this).siblings().children("ul").hide();
				$(this).children("a").addClass("hover");
				$(this).siblings().children("a").removeClass("hover");
				$(this).children("span").addClass("hover");
				$(this).siblings().children("span").removeClass("hover");
			},
			function() {
				$(this).removeClass("hover").children("ul").hide();
			}
		);
	}


	/*
	 * jQuery Form Plugin
	 * version: 2.01 (10/31/2007)
	 * @requires jQuery v1.1 or later
	 *
	 * Examples at: http://malsup.com/jquery/form/
	 * Dual licensed under the MIT and GPL licenses:
	 *   http://www.opensource.org/licenses/mit-license.php
	 *   http://www.gnu.org/licenses/gpl.html
	 */

	(function($){$.fn.ajaxSubmit=function(options){if(typeof options=='function')options={success:options};options=$.extend({url:this.attr('action')||window.location.toString(),type:this.attr('method')||'GET'},options||{});var veto={};$.event.trigger('form.pre.serialize',[this,options,veto]);if(veto.veto)return this;var a=this.formToArray(options.semantic);if(options.data){for(var n in options.data)a.push({name:n,value:options.data[n]})}if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false)return this;$.event.trigger('form.submit.validate',[a,this,options,veto]);if(veto.veto)return this;var q=$.param(a);if(options.type.toUpperCase()=='GET'){options.url+=(options.url.indexOf('?')>=0?'&':'?')+q;options.data=null}else options.data=q;var $form=this,callbacks=[];if(options.resetForm)callbacks.push(function(){$form.resetForm()});if(options.clearForm)callbacks.push(function(){$form.clearForm()});if(!options.dataType&&options.target){var oldSuccess=options.success||function(){};callbacks.push(function(data){if(this.evalScripts)$(options.target).attr("innerHTML",data).evalScripts().each(oldSuccess,arguments);else $(options.target).html(data).each(oldSuccess,arguments)})}else if(options.success)callbacks.push(options.success);options.success=function(data,status){for(var i=0,max=callbacks.length;i<max;i++)callbacks[i](data,status,$form)};var files=$('input:file',this).fieldValue();var found=false;for(var j=0;j<files.length;j++)if(files[j])found=true;if(options.iframe||found){if($.browser.safari&&options.closeKeepAlive)$.get(options.closeKeepAlive,fileUpload);else fileUpload()}else $.ajax(options);$.event.trigger('form.submit.notify',[this,options]);return this;function fileUpload(){var form=$form[0];var opts=$.extend({},$.ajaxSettings,options);var id='jqFormIO'+$.fn.ajaxSubmit.counter++;var $io=$('<iframe id="'+id+'" name="'+id+'" />');var io=$io[0];var op8=$.browser.opera&&window.opera.version()<9;if($.browser.msie||op8)io.src='javascript:false;document.write("");';$io.css({position:'absolute',top:'-1000px',left:'-1000px'});var xhr={responseText:null,responseXML:null,status:0,statusText:'n/a',getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){}};var g=opts.global;if(g&&!$.active++)$.event.trigger("ajaxStart");if(g)$.event.trigger("ajaxSend",[xhr,opts]);var cbInvoked=0;var timedOut=0;setTimeout(function(){$io.appendTo('body');io.attachEvent?io.attachEvent('onload',cb):io.addEventListener('load',cb,false);var encAttr=form.encoding?'encoding':'enctype';var t=$form.attr('target');$form.attr({target:id,method:'POST',action:opts.url});form[encAttr]='multipart/form-data';if(opts.timeout)setTimeout(function(){timedOut=true;cb()},opts.timeout);form.submit();$form.attr('target',t)},10);function cb(){if(cbInvoked++)return;io.detachEvent?io.detachEvent('onload',cb):io.removeEventListener('load',cb,false);var ok=true;try{if(timedOut)throw'timeout';var data,doc;doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;xhr.responseText=doc.body?doc.body.innerHTML:null;xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;if(opts.dataType=='json'||opts.dataType=='script'){var ta=doc.getElementsByTagName('textarea')[0];data=ta?ta.value:xhr.responseText;if(opts.dataType=='json')eval("data = "+data);else $.globalEval(data)}else if(opts.dataType=='xml'){data=xhr.responseXML;if(!data&&xhr.responseText!=null)data=toXml(xhr.responseText)}else{data=xhr.responseText}}catch(e){ok=false;$.handleError(opts,xhr,'error',e)}if(ok){opts.success(data,'success');if(g)$.event.trigger("ajaxSuccess",[xhr,opts])}if(g)$.event.trigger("ajaxComplete",[xhr,opts]);if(g&&!--$.active)$.event.trigger("ajaxStop");if(opts.complete)opts.complete(xhr,ok?'success':'error');setTimeout(function(){$io.remove();xhr.responseXML=null},100)};function toXml(s,doc){if(window.ActiveXObject){doc=new ActiveXObject('Microsoft.XMLDOM');doc.async='false';doc.loadXML(s)}else doc=(new DOMParser()).parseFromString(s,'text/xml');return(doc&&doc.documentElement&&doc.documentElement.tagName!='parsererror')?doc:null}}};$.fn.ajaxSubmit.counter=0;$.fn.ajaxForm=function(options){return this.ajaxFormUnbind().submit(submitHandler).each(function(){this.formPluginId=$.fn.ajaxForm.counter++;$.fn.ajaxForm.optionHash[this.formPluginId]=options;$(":submit,input:image",this).click(clickHandler)})};$.fn.ajaxForm.counter=1;$.fn.ajaxForm.optionHash={};function clickHandler(e){var $form=this.form;$form.clk=this;if(this.type=='image'){if(e.offsetX!=undefined){$form.clk_x=e.offsetX;$form.clk_y=e.offsetY}else if(typeof $.fn.offset=='function'){var offset=$(this).offset();$form.clk_x=e.pageX-offset.left;$form.clk_y=e.pageY-offset.top}else{$form.clk_x=e.pageX-this.offsetLeft;$form.clk_y=e.pageY-this.offsetTop}}setTimeout(function(){$form.clk=$form.clk_x=$form.clk_y=null},10)};function submitHandler(){var id=this.formPluginId;var options=$.fn.ajaxForm.optionHash[id];$(this).ajaxSubmit(options);return false};$.fn.ajaxFormUnbind=function(){this.unbind('submit',submitHandler);return this.each(function(){$(":submit,input:image",this).unbind('click',clickHandler)})};$.fn.formToArray=function(semantic){var a=[];if(this.length==0)return a;var form=this[0];var els=semantic?form.getElementsByTagName('*'):form.elements;if(!els)return a;for(var i=0,max=els.length;i<max;i++){var el=els[i];var n=el.name;if(!n)continue;if(semantic&&form.clk&&el.type=="image"){if(!el.disabled&&form.clk==el)a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y});continue}var v=$.fieldValue(el,true);if(v&&v.constructor==Array){for(var j=0,jmax=v.length;j<jmax;j++)a.push({name:n,value:v[j]})}else if(v!==null&&typeof v!='undefined')a.push({name:n,value:v})}if(!semantic&&form.clk){var inputs=form.getElementsByTagName("input");for(var i=0,max=inputs.length;i<max;i++){var input=inputs[i];var n=input.name;if(n&&!input.disabled&&input.type=="image"&&form.clk==input)a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y})}}return a};$.fn.formSerialize=function(semantic){return $.param(this.formToArray(semantic))};$.fn.fieldSerialize=function(successful){var a=[];this.each(function(){var n=this.name;if(!n)return;var v=$.fieldValue(this,successful);if(v&&v.constructor==Array){for(var i=0,max=v.length;i<max;i++)a.push({name:n,value:v[i]})}else if(v!==null&&typeof v!='undefined')a.push({name:this.name,value:v})});return $.param(a)};$.fn.fieldValue=function(successful){for(var val=[],i=0,max=this.length;i<max;i++){var el=this[i];var v=$.fieldValue(el,successful);if(v===null||typeof v=='undefined'||(v.constructor==Array&&!v.length))continue;v.constructor==Array?$.merge(val,v):val.push(v)}return val};$.fieldValue=function(el,successful){var n=el.name,t=el.type,tag=el.tagName.toLowerCase();if(typeof successful=='undefined')successful=true;if(successful&&(!n||el.disabled||t=='reset'||t=='button'||(t=='checkbox'||t=='radio')&&!el.checked||(t=='submit'||t=='image')&&el.form&&el.form.clk!=el||tag=='select'&&el.selectedIndex==-1))return null;if(tag=='select'){var index=el.selectedIndex;if(index<0)return null;var a=[],ops=el.options;var one=(t=='select-one');var max=(one?index+1:ops.length);for(var i=(one?index:0);i<max;i++){var op=ops[i];if(op.selected){var v=$.browser.msie&&!(op.attributes['value'].specified)?op.text:op.value;if(one)return v;a.push(v)}}return a}return el.value};$.fn.clearForm=function(){return this.each(function(){$('input,select,textarea',this).clearFields()})};$.fn.clearFields=$.fn.clearInputs=function(){return this.each(function(){var t=this.type,tag=this.tagName.toLowerCase();if(t=='text'||t=='password'||tag=='textarea')this.value='';else if(t=='checkbox'||t=='radio')this.checked=false;else if(tag=='select')this.selectedIndex=-1})};$.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=='function'||(typeof this.reset=='object'&&!this.reset.nodeType))this.reset()})};$.fn.enable=function(b){if(b==undefined)b=true;return this.each(function(){this.disabled=!b})};$.fn.select=function(select){if(select==undefined)select=true;return this.each(function(){var t=this.type;if(t=='checkbox'||t=='radio')this.checked=select;else if(this.tagName.toLowerCase()=='option'){var $sel=$(this).parent('select');if(select&&$sel[0]&&$sel[0].type=='select-one'){$sel.find('option').select(false)}this.selected=select}})}})(jQuery);

	// prepare the form when the DOM is ready 
	$(document).ready(function() { 
	    // bind form using 'ajaxForm' 
	    $('.lg-poll').each(function(index) {
	    	new_lg_poll($(this));
	    });
	});

	function new_lg_poll(el){
		$('form', el).ajaxForm({
			beforeSubmit: function(formArray, jqForm){
				if($('input:checked', jqForm).size() == 0){
					alert('Please select an answer before submitting the form');
					return false;
				}
				lg_poll_form = jqForm;
				$('#loading').fadeIn();
				$(el).addClass('loading');
			},
			success: function(data, status){
				data = $(data);
				$(lg_poll_form).parents('.lg-poll').replaceWith(data);
				new_lg_poll(data);
			},
			complete: function(){
				$('#loading').hide();
				$(el).removeClass('loading');
			},
			cache: false
		});
	}



});
