
//********************************** Promo Floater **********************************//

//runlevel (1 on - 0 off)
var runlevel = 0;

//debug 1=see messages 2=see messages and act as new visitor. 3 = see 1 and 2, but with some javascript alerts
var debug = 0;

var debug_reset_links = 0;

//random number up to x. Counts from zero. Zero will hit everytime.
var number_to_hit = 0;

//cookie expires in x days
var cookie_days = 365;

//campaign name. Also used to prefix event actions and cookie names
var base_name = "listbuilder-summer09";

//Layer to show/hide
var layer_name = "newsletterpromo";

//url(s) to exclude. List as many as you want here. You can use regex as well.
var excludeurls=new Array();
excludeurls[0] = "/center/subscribe.jsp";
//excludeurls[1] = "/newsletter/";

//**************** do not edit below *********************//

var today = new Date();

// persistent cookie days
var expiry = new Date(today.getTime() + 30 * 24 * 60 * 60 * 1000);

//grab the path with parameters and values
var firstpathviewed = location.href.replace('http://' + location.host,'');

var currentpathviewed = location.href.replace('http://' + location.host,'');

//grab a random number in our range
var random_number = Math.floor(Math.random()*(number_to_hit + 1));


function urlPassesCheck() {
	
	var returnvalue = true;
	for (i=0;i < excludeurls.length;i++) {
		//compile a regex for the item in the exclude list
		var reg = new RegExp(excludeurls[i],"gi");
		
		if (reg.test(currentpathviewed)) {
			return false;
		}
	}
	return returnvalue;
}

//get a cookie value by name
function get_cookie(Name) {
  var search = Name + "=";
  var returnvalue = "";
  if (document.cookie.length > 0) {
    offset = document.cookie.indexOf(search);
    if (offset != -1) { // if cookie exists
      offset += search.length;
      // set index of beginning of value
      end = document.cookie.indexOf(";", offset);
      // set index of end of cookie value
      if (end == -1)
         end = document.cookie.length;
      returnvalue=unescape(document.cookie.substring(offset, end));
      }
   }
  return returnvalue;
}

//set cookie or change values of current cookie
function setCookie(name, value, days, path) {
	if (!days) {
		days = 1; // default to 1 day if empty
		}
		var expdate = new Date();
		expdate.setTime(expdate.getTime() + days*24*60*60*1000);
		//dc = name + "=" + escape(value) + "; expires=" + expdate.toGMTString() + "; path=" + path;
		document.cookie=name + "=" + value + "; path=" + path + "; expires=" + expdate.toGMTString();
		if (debug > 2) {
		alert("Cookie values " + document.cookie);
		}
	}
	
//delete a cookie	
function deleteCookie(name) {
	// set the cookie date to 10 years ago
	var ckyDate = new Date;
	ckyDate.setFullYear(ckyDate.getFullYear( ) -10);
	document.cookie=name + "=; path=/; expires=" + ckyDate.toGMTString();
	if (debug > 2) {
	alert("The cookie named '" + name + "' has been marked to expire " +  ckyDate.toGMTString());
	}
}

function hideContainer(name) {
	$('#' + name).fadeOut();

	//Only send event tag on close once. 
	if (get_cookie(base_name) == '') {
		ntptEventTag('ev=' + base_name + '_closed');
		setCookie(base_name, 'declined', cookie_days, '/');	
	}
}

function showContainer(name) {
	$('#' + name).show();
}


//main function for survey
function loadornot(){
	//check cookie and random number
	if ((get_cookie(base_name)=='' || debug > 1) && random_number == number_to_hit && urlPassesCheck() == true){
		
		//set viewed cookie
		
		//cookie to store url
			if (get_cookie(base_name + 'viewedurl') == '') {
			setCookie(base_name + 'viewedurl', firstpathviewed, cookie_days, '/');
			ntptEventTag('ev=' + base_name + '_shown');
			}
		showContainer(layer_name);
	}

}




//Debug information here
if (debug > 0 && debug_reset_links > 1) {
	document.write("Random number to hit: <b>");
	document.write(number_to_hit);
	document.write("</b><br>");
	document.write("Random number currently: <b>");
	document.write(random_number);
	document.write("</b><br>");
	document.write("<br>");
	document.write("Has it been viewed yet: ");
		if (get_cookie(base_name + 'viewed')!='') {
			document.write("<b>yes</b>");
			document.write("<br><a href=\"javascript:deleteCookie(\'" + base_name + "viewed\');\">Expire view</a>");
			if (random_number == number_to_hit){
				document.write(" (would have had a popup, but we've seen it already)");
				
			}
		} else {
		document.write("No");
		}
	document.write("<br><br>Current path: ");
	document.write(firstpathviewed);

		if (get_cookie(base_name + 'viewedurl') != '') {
			document.write("<br><br>What is the url cookie: ");
			document.write(get_cookie(base_name + 'viewedurl'));
			document.write("<br><a href=\"javascript:deleteCookie(\'" + base_name  + "viewedurl\');\">Expire url</a>");
		}
		document.write("<br><a href=\"javascript:showContainer(\'" + base_name  + "\');\">Show Promo</a>");
		document.write("<br><a href=\"javascript:hideContainer(\'" + base_name  + "\');\">Hide Promo</a>");
			
		
}


$(document).ready(function(){
	$('#newsletterform').submit(function() { 

		$(this).ajaxSubmit( { 
			beforeSubmit: checkForm,
			type: 'POST',
			dataType: 'json',
			url: '/center/signup_json.jsp',
			success: function(data) {
			
			if (data.status == 'successful') {
				$("#closebox").hide();
				$("#statusfeedback").text('Thank You.');
				ntptEventTag('ev=' + base_name + '_subscribed');
				setCookie(base_name, 'subscribed', cookie_days, '/');
				
				
				$("#newsletterpromo").delay(250).fadeOut(750);
			

			} else { //end if good form submit
			$("#statusfeedback").text('Error. Please try again.').fadeOut(950, function() {
				$("#newsletterpromo").show();
				$("#formcontent").show();
				$("replycontent").hide();
				ntptEventTag('ev=' + base_name + '_failed');
				});
				


			}
			
		}

		} );
		return false;
	}); 
});

function checkForm(formData, jqForm, options) {
	$("#statusfeedback").text("Signing you up..");
	$("#formcontent").hide();
	$("replycontent").show();
	var form = jqForm[0]; 
   /*  if (!form.firstname.value || !form.lastname.value || !form.email.value) { 
        $("#statusfeedback").text('');
       	$("replycontent").hide();
		$("#formcontent").show();
		alert('Please enter a value for all form elements');
        return false; 
    }
    */
    if (!validateEmail(form.email.value)) {
          $("#statusfeedback").text('');
        $("replycontent").hide();
		$("#formcontent").show();
		alert('Please enter a correctly formated email address.');
        return false; 
    }
}

function validateEmail( strValue) {
	/************************************************
	DESCRIPTION: Validates that a string contains a
	  valid email pattern.

	 PARAMETERS:
	   strValue - String to be tested for validity

	RETURNS:
	   True if valid, otherwise false.

	REMARKS: Accounts for email with country appended
	  does not validate that email contains valid URL
	  type (.com, .gov, etc.) or valid country suffix.
	*************************************************/
	var objRegExp = "(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)";
	
	var reg = new RegExp(objRegExp,"gi");
	
	// alert(strValue + ": " + reg.test(strValue)); 
	  //check for valid email
	  return reg.test(strValue);
	}



//is the survey on, if so run the main function
if (runlevel ==1) {
	loadornot();
}
