var search_default = 'search...';	
var join_default = 'Please enter your e-mail address...';

$(document).ready(function() {
	
	$('.return_to .cta_button' ).prepend('<strong class="arrow">&lsaquo;</strong>');
	
	$('.cta_button').wrapInner('<span />');
	
	$('.expert_photo:odd').addClass('alternate');
	
	$('.list_expert:last').addClass('last');
	
    $('#site_search input[type="text"]').addClass("idle_field");
	$('#site_search input[type="text"]').focus(function() {
		$(this).removeClass("idle_field").addClass("focus_field");
        if ($(this).val() == search_default){
        	$(this).val('');
    	}
    });
    $('#site_search input[type="text"]').blur(function() {
    	$(this).removeClass("focus_field").addClass("idle_field");
        if ($(this).val() == ''){
        	$(this).val(search_default);
    	}
    });
    
    $('#join_newsletter input[type="text"]').addClass("idle_field");
	$('#join_newsletter input[type="text"]').focus(function() {
		$(this).removeClass("idle_field").addClass("focus_field");
        if ($(this).val() == join_default){
        	$(this).val('');
    	}
    });
    $('#join_newsletter input[type="text"]').blur(function() {
    	$(this).removeClass("focus_field").addClass("idle_field");
        if ($(this).val() == ''){
        	$(this).val(join_default);
    	}
    });
    $('#mc-embedded-subscribe-form').submit(function(){
    	$('#default_text').hide();
	});
    
    $('#mce-EMAIL').addClass("idle_field");
	$('#mce-EMAIL').focus(function() {
		$(this).removeClass("idle_field").addClass("focus_field");
        if ($(this).val() == join_default){
        	$(this).val('');
    	}
    });
    $('#mce-EMAIL').blur(function() {
    	$(this).removeClass("focus_field").addClass("idle_field");
        if ($(this).val() == ''){
        	$(this).val(join_default);
    	}
    });
	
	$("a.programs_option").click(function(e){
		if(!$(".sm_popup:visible").length){
			$('<div class="sm_popup">Please Select a Program Area:<br /><div class="wildlife">Saving <strong>Wildlife</strong><a href="/wildlife" class="cta_button"><span>Explore</span></a></div><div class="health">Protecting <strong>Health</strong><a href="/health" class="cta_button"><span>Explore</span></a></div><a href="#" class="close">close</a></div>').appendTo("body")
	
			$(".sm_popup").css('opacity', 0)
			$(".sm_popup").css('top', e.pageY)
			$(".sm_popup").css('left', e.pageX)
			$(".sm_popup").fadeTo("fast", .95)
		}
		
		return false;
										  
	});
	
	if ($(".sm_popup a.close").length > 0) {
		$(".sm_popup a.close").live("click",function(){
			$(".sm_popup").fadeTo("slow", 0, function(){ $(this).remove()})
			return false;
		});
	}
	
	/* toggles hidden by default - show them with JS */
	$("a#saving_wildlife_expand").show();
	$("a#protecting_health_expand").show();
	
	/* expands programs - saving wildlife */
	$("a#saving_wildlife_expand").click(function(e){
		if ($("#saving_wildlife_drop").is(":hidden")) {
			$("#saving_wildlife_drop").slideDown("slow");
		} else {
			$("#saving_wildlife_drop").slideUp("fast");
		}
		return false;
	});
	
	if ($("#saving_wildlife_drop a.close").length > 0) {
		$("#saving_wildlife_drop a.close").live("click",function(){
			$("#saving_wildlife_drop").slideUp("fast");
			return false;
		});
	}

	
	/* expands programs - protecting health */
	$("a#protecting_health_expand").click(function(e){
		if ($("#protecting_health_drop").is(":hidden")) {
			$("#protecting_health_drop").slideDown("slow");
		} else {
			$("#protecting_health_drop").slideUp("fast");
		}
		return false;
	});
	
	if ($("#protecting_health_drop a.close").length > 0) {
		$("#protecting_health_drop a.close").live("click",function(){
			$("#protecting_health_drop").slideUp("fast");
			return false;
		});
	}

	
	/* set widths form inputs */
	
	$(".small_widths input[type='text'], .set_widths input[type='text'], .set_widths input[type='password']").wrap("<span class=\"outer\"><span></span></span>");
	$(".set_widths textarea").wrap("<span class=\"outer\"><span></span></span>");
	
	$(".small_widths span.outer, .set_widths span.outer").each(function () {
		if($(this).find("input[type='text'], input[type='password']").className != ""){
			tempname = $(this).find("input[type='text'], input[type='password']").attr('class');
			$(this).addClass(tempname);			
		}
		
		$(this).find("input[type='text'], input[type='password']").attr('class', '');
		
		if($(this).find("textarea").className != ""){
			tempname = $(this).find("textarea").attr('class');
			$(this).addClass(tempname);			
		}
		
		$(this).find("textarea").attr('class', '');
	});
	
	$("input[type='hidden']").addClass("hidden");
	
	/* dynamically add icons to errors/success */
	
	if (!($.browser.msie && $.browser.version == 6)){
		$('<span class="icon"></div>').appendTo(".error, .success, .note");
	}
	
	/* open link in new tab */
	
	$("a.new_tab").click(function(event){
		event.preventDefault();
		newWin = window.open($(this).attr('href'), 'newWin');
		newWin.focus();
	});

	
	/* dynamically add class="last" to certain elements */
	
	if (!($.browser.msie && $.browser.version == 6)){
		$(".list_item:last, .program_list_item:last").addClass("last");
	}
	/*
	if($.client.os == "Linux"){
		$("#footer #footer_nav ul li").css({'padding-right' : '15px'});
	}
	*/
	/* make support blocks clickable */
	
	$(".support_block").css({'cursor' : 'pointer'}).click(function(e){					   
		window.location=$(this).find("a").attr("href");
		return false;
	});
	
	if($("#secondary_container").height() > $("#primary_container .content").height()){
		
		var height_needed = $("#secondary_container").height() - $("#primary_container .content").height() - 5;		
		var offset_position = -(height_needed + 15);
		$("#primary_container .content .dynamic_callout").css({'height' : height_needed, 'display' : 'block'});
		
		
		
	}else{
		
		if($("#secondary_container").height() == $("#primary_container .content").height()){
			//alert("same height");
		}else{
			//alert("primary is taller");
		}
	}

	
});

function validate( form ) {
	var agree = true;
	if ((form.optin_email.value==null)||(form.optin_email.value=="")||(form.optin_email.value==join_default)){
		alert("Please enter your email address.");
		form.optin_email.focus()
		return false
	}
	if (echeck(form.optin_email.value)==false){
		form.optin_email.focus()
		return false
	}
	
	if ( agree && form.optin_action[1].checked)
		agree = confirm( 'Are you sure you want to unsubscribe?' );
	if ( agree )
		window.open( '','optin', 'resizable=yes,scrollbars=yes,status=no, width=550,height=400, top=10,left=10, screenX=10,screenY=10' );
	return agree;
}

function echeck(str) {
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	
	if (str.indexOf(at)==-1){
	   alert("Invalid e-mail address");
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   alert("Invalid e-mail address");
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	   alert("Invalid e-mail address");
	   return false;
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	   alert("Invalid e-mail address");
	   return false;
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	   alert("Invalid e-mail address");
	   return false;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	   alert("Invalid e-mail address");
	   return false;
	 }
	
	 if (str.indexOf(" ")!=-1){
	   alert("Invalid e-mail address");
	   return false;
	 }

 	 return true					
}






/* detect operating system */

(function() {
	
	var BrowserDetect = {
		init: function () {
			this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
			this.version = this.searchVersion(navigator.userAgent)
				|| this.searchVersion(navigator.appVersion)
				|| "an unknown version";
			this.OS = this.searchString(this.dataOS) || "an unknown OS";
		},
		searchString: function (data) {
			for (var i=0;i<data.length;i++)	{
				var dataString = data[i].string;
				var dataProp = data[i].prop;
				this.versionSearchString = data[i].versionSearch || data[i].identity;
				if (dataString) {
					if (dataString.indexOf(data[i].subString) != -1)
						return data[i].identity;
				}
				else if (dataProp)
					return data[i].identity;
			}
		},
		searchVersion: function (dataString) {
			var index = dataString.indexOf(this.versionSearchString);
			if (index == -1) return;
			return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
		},
		dataBrowser: [
			{
				string: navigator.userAgent,
				subString: "Chrome",
				identity: "Chrome"
			},
			{ 	string: navigator.userAgent,
				subString: "OmniWeb",
				versionSearch: "OmniWeb/",
				identity: "OmniWeb"
			},
			{
				string: navigator.vendor,
				subString: "Apple",
				identity: "Safari",
				versionSearch: "Version"
			},
			{
				prop: window.opera,
				identity: "Opera"
			},
			{
				string: navigator.vendor,
				subString: "iCab",
				identity: "iCab"
			},
			{
				string: navigator.vendor,
				subString: "KDE",
				identity: "Konqueror"
			},
			{
				string: navigator.userAgent,
				subString: "Firefox",
				identity: "Firefox"
			},
			{
				string: navigator.vendor,
				subString: "Camino",
				identity: "Camino"
			},
			{		// for newer Netscapes (6+)
				string: navigator.userAgent,
				subString: "Netscape",
				identity: "Netscape"
			},
			{
				string: navigator.userAgent,
				subString: "MSIE",
				identity: "Explorer",
				versionSearch: "MSIE"
			},
			{
				string: navigator.userAgent,
				subString: "Gecko",
				identity: "Mozilla",
				versionSearch: "rv"
			},
			{ 		// for older Netscapes (4-)
				string: navigator.userAgent,
				subString: "Mozilla",
				identity: "Netscape",
				versionSearch: "Mozilla"
			}
		],
		dataOS : [
			{
				string: navigator.platform,
				subString: "Win",
				identity: "Windows"
			},
			{
				string: navigator.platform,
				subString: "Mac",
				identity: "Mac"
			},
			{
				string: navigator.userAgent,
				subString: "iPhone",
				identity: "iPhone/iPod"
		    },
			{
				string: navigator.platform,
				subString: "Linux",
				identity: "Linux"
			}
		]
	
	};
	
	BrowserDetect.init();
	
	window.$.client = { os : BrowserDetect.OS, browser : BrowserDetect.browser };
	
});

