//===============================//
//						   	     //
// Newsletter Overlay Javascript //
//						   		 //
//===============================//

//Purpose: Show overlay when user has visited the site a given number of times.
//Usage: These functions are called automatically when any page it's included in is loaded.
//Dependency: jQuery/jQuery-ui

//$Id: newsletter_overlay.js 1787 2010-07-22 08:53:28Z jamescollier $

//Global Variables
var newsletter_subscribe_cookie_name_views 			= "eb_news_over_page_views";
var newsletter_subscribe_seen_before_cookie_name 	= "eb_has_seen_news_over";
var newsletter_subscribe_test_cookie_name		 	= "eb_test_cookie";
var newsletter_subscribe_display_delay 				= 4000;							//Delay in milliseconds before overlay appears.
var newsletter_subscribe_page_views 				= 4;							//Number of pageviews before overlay happens.
var newsletter_subscribe_cookie_timeout 			= 90;							//Number of days before a user will see the overlay again if they've subscribed.
var newsletter_not_subscribe_cookie_timeout 		= 30;							//Number of days before a user will see the overlay again if they've not subscribed.


//set_cookie()
//Creates a cookie based on a given name and value pair, which expires
//after the number of days given in 'expiredays'.
function set_cookie(name,value,expiredays)
{
	var exp_date = new Date();
	exp_date.setDate(exp_date.getDate()+expiredays);
	document.cookie=name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exp_date.toUTCString()) + ";path=/";
}

//get_cookies()
//Returns a given cookie's contents.
//Based on: http://techpatterns.com/downloads/javascript_cookies.php
function get_cookie(check_name){

	// Split this cookie up into name/value pairs
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		//Split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );

		//Trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// If the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}

	if ( !b_cookie_found )
	{
		return false;
	}
}

//test_cookie()
//Attempts to create a 'test cookie' and retrieve it.
//Returns true upon succesfull execution, and false on failure.
function test_cookie(){
	set_cookie(newsletter_subscribe_test_cookie_name,1,null);
	if(get_cookie(newsletter_subscribe_test_cookie_name) == false){
		return false;
	}else{
		return true;
	}
}

//check_above_ie6()
//Check we're not using IE6 or below, returns true if above IE6
//and false if IE6 or below.
function check_above_ie6(){

	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
		 var ieVersion=new Number(RegExp.$1)
		 if (ieVersion<=6){
		 	return false;
		 }
	}
	return true;
}

//check_page_views()
//Advances page view counter if counter cookie exists, or creates it if not.
//If stored page views is greater than or equal to 'newsletter_subscribe_page_views'
//cookie then run open_newsletter_overlay(). Will advance counter on framed pages,
//but will not run open_newsletter_overlay().
function check_page_views(){
	var page_views = get_cookie(newsletter_subscribe_cookie_name_views);
	if(page_views == false){
		set_cookie(newsletter_subscribe_cookie_name_views,1,null);
	}else{
		if(page_views  >= newsletter_subscribe_page_views){
			if(top.location.href != window.location.href) {
				//If in a frame, probably a hosted job. So do nothing, don't show overlay.
			}else{
				setTimeout("open_newsletter_overlay()", newsletter_subscribe_display_delay);
			}
		}else{
			page_views++
			set_cookie(newsletter_subscribe_cookie_name_views,page_views,null);
		}
	}
}

//open_newsletter_overlay()
//Runs dialog('open') which shows overlay to user.
function open_newsletter_overlay(){
	if(get_cookie(newsletter_subscribe_seen_before_cookie_name) == false){
		set_cookie(	newsletter_subscribe_seen_before_cookie_name,1,newsletter_not_subscribe_cookie_timeout);
		$("#newsletterOverlay").dialog('open');
	}
}

//Execute after page has loaded. Instantiates '#newsletterOverlay' as
//jQuery dialog box.
$(function() {

	//Attach 'dialog' property to div.
	$("#newsletterOverlay").dialog({
			autoOpen: false,
			width:350,
			height:255,
			modal: true,
			buttons: {
				'Not Now': function() {
					$(this).dialog('close');
					$('select').css("visibility", "visible");
				},
				Subscribe: function() {
					set_cookie(newsletter_subscribe_seen_before_cookie_name,1,newsletter_subscribe_cookie_timeout);
					document.forms['newsletter_overlay_form'].submit();
					$('select').css("visibility", "visible");
				}
			}
		});
	$('.ui-dialog-titlebar-close').css("display","none");
});

//Check test cookies is set, and than above IE6 before starting to count page views.
if(test_cookie() && check_above_ie6()){
	check_page_views();
}
