<!-- standard jquery scripts for EMI pages  -->


$(document).ready(function() {  


	$("a.addparameters").click(function() {
		var sepchar;
		var oldhref = $(this).attr('href');
		var params = new Array('o', 'c', 'u');
		var p, i, pvalue;
		for (i=0; i<params.length; i++){
			p = params[i];
			sepchar = (oldhref.indexOf('?') == -1) ? '?' : '&' ;
			if (oldhref.indexOf(p + '=') == -1){ // need to add it in...
				pvalue = $.query.get(p);
				if (pvalue === true)pvalue = '';
				oldhref = oldhref + sepchar + p + '=' + pvalue;
			}
		}
		$(this).attr('href', oldhref );										
  });


	$(".leftnav").hover(
	  function() {
			var divname = "#" + $(this).attr('id');
			$(divname+"_up").stop(true);
			$(divname+"_over").stop(true);
			$(divname+"_up").css("opacity", 1);
			$(divname+"_up").hide();
			$(divname+"_over").fadeIn("medium");
			
		},
		function() {
			var divname = "#" + $(this).attr('id');
			$(divname+"_over").stop(true);
			$(divname+"_up").stop(true);
			$(divname+"_over").css("opacity", 1);
			$(divname+"_over").hide();
			$(divname+"_up").fadeIn("medium");
		}
	);



  $(".download").click(function(e) {
		 var retval = false;  // who should handle the open of new document
		 var redirect = $(this).attr('href');   // strip off the leading ?
		 $.ajax({
		   type: "GET",
			 url: "loginAdmin.php?action=loginstatus&o=" + $.query.get('o') + '&src=' + Url.encode(redirect),
			 dataType: "xml",
			 async: false,
			 cache: false,
			 success: function(xml){
					var stat = $("status", xml).text();
					if (stat != 'ok') {
						loadPopup("#popupYouMustSignIn");  /* give them one chance to log in */
					}
					else {
						retval = true;
					}
			 }
		 });
		 return retval;
  }); 


	$("#signOut").click(function(e){
		e.preventDefault();
		$.post("loginAdmin.php?action=signout", function(xml) {
			$("#retInfo").html("return=" + xml.text);
			$("#welcome").html("not signed in");
			$("#statusOut").toggle();
			$("#statusIn").toggle();
		});
		return false;
	});




	$("#requestPrivacyPolicy").click(function(e){
		var rethtm;
		e.preventDefault();
		//centering with css
 		  $.ajax({
		   type: "GET",
			 url: "privacyPolicy.htm",
			 dataType: "html",
			 async: false,
			 cache: true,
			 success: function(htm){
					rethtm = htm;
		 	 }
			});
			$("#popupPrivacyPolicyContent").html(rethtm);
			$("#popupPrivacyPolicy").scrollTop(0);
			loadPopup("#popupPrivacyPolicy");
		return false;
	});


	$("#requestOptout").click(function(e){
		e.preventDefault();
		$("#popupRequestOptoutResults").hide();
		loadPopup("#popupRequestOptout");
		return false;
	});


	$("#RequestOptoutForm").ajaxForm(
		{dataType: 'xml', success: function(xml) {
			  var status = $("status", xml).text();  // ok=success
			  var reply = $("reply", xml).text();  // ok=success
				$("#popupRequestOptoutResultsContent").html(reply);
				if (status != "ok"){
					$("#popupRequestOptoutResultsContent").addClass("errorMsg");
				}
				else {
					$("#popupRequestOptoutRequest").hide();
					$("#popupRequestOptoutResultsContent").removeClass("errorMsg");
				}
				$("#popupRequestOptoutResults").show();
			}																	 
	});



	$("#SignInForm").ajaxForm(
		{dataType: 'xml', async: false, cache: false, success: function(xml) {
			  var signInStatus = $("status", xml).text();  // ok=success
			  // alert("Returned xml " + xml.text);
				if (signInStatus == "ok"){
					var uname = $("uname", xml).text();
					// alert("uname="+uname);
					setLoggedIn(uname);
					disableAllPopups(false);
				}
				else {
					$("#signInBad").show();	
				}
			}																	 
	});





	$("#signIn").click(function(e){
		e.preventDefault();
		$("#signInBad").hide();
		loadPopup("#popupSignIn");
		return false;
	});



	$("#register").click(function(e){
		e.preventDefault();
		loadPopup("#popupRegistration");
		$("#registrationErrors").removeClass("errorMsg");
		$("#registrationErrors").text("*Required fields");
		$("#registrationErrors").css("color", "#fff");
		$("#registrationMessageBox").text("");
		return false;
	});


	//Click the x event! 
	$(".popupClose").click(function(){
		disableAllPopups(false);
	});
	
	
	//Click out event!
	$("#backgroundPopup").click(function(){
		disableAllPopups(false);
	});
	
	//Press Escape event!
	$(document).keypress(function(e){
		if(e.keyCode==27){
			disableAllPopups(false);
		}
	});

	$("#requestPassReset").click(function(e){
		e.preventDefault();
		loadPopup("#popupPassRecovery");
		return false;
	});




	$("#PassRecoveryForm").ajaxForm(
		{dataType: 'xml', success: function(xml) {
			  var status = $("status", xml).text();  // ok=success
			  // alert("Returned xml " + xml.text);
				if (status == "ok"){
					var uname = $("uname", xml).text();
					disableAllPopups(false);
				}
				else {
					$("#passRecoveryBad").show();	
				}
			}																	 
	});


	$("#requestRegister").click(function(e){
		e.preventDefault();
		loadPopup("#popupRegistration");
		return false;
	});




  $("#RegistrationForm").validate({
		submitHandler: function(form) {
			
			$(form).ajaxSubmit({
				dataType: 'xml',
				success: function(xml) {
					var signInStatus = $("status", xml).text();  // ok=success
					// alert("Returned xml " + xml.text);
					if (signInStatus == "ok"){
						var uname = $("uname", xml).text();
						// alert("uname="+uname);
						setLoggedIn(uname);
						disableAllPopups(false);
					}
					else {
						var error = $("errorMessage", xml).text();
						$("#registrationErrors").text(error);
						$("#registrationErrors").addClass("errorMsg");
						$("#registrationErrors").css("color", "#FFF");
					}
					return false;  // prevent browser submit
				}																	 
			});
			
			
		},
		invalidHandler: function(form, validator){
		  var errors = validator.numberOfInvalids();
			$("#registrationErrors").text("*Please fix " + errors + " required or invalid fields");
			$("#registrationErrors").addClass("errorMsg");
			$("#registrationErrors").css("color", "#FFF");
			$("registrationMessageBox").hide();
		},

		errorLabelContainer: "#registrationMessageBox"

	});


	$("#r_first").rules("add", {
	  required: true,
		messages: {
			required: "Name required. "
		}
	});

	$("#r_company").rules("add", {
	  required: true,
		messages: {
			required: "Company name required. "
		}
	});


	$("#r_email").rules("add", {
	  required: true,
	  email: true,
		messages: {
			required: "Email required. ",
			email: "Enter valid email address. "
		}
	});


	$("#r_password").rules("add", {
	  required: true,
		minlength: 6,
		messages: {
			required: "Password required. ",
			minlength: "Passwords must be 6 or more characters. "
		}
	});


	$("#r_password2").rules("add", {
	  required: true,
		equalTo: "#r_password",
		messages: {
			required: "Retype password required. ",
			equalTo: "Passwords must match. "
		}
	});


/* got a request for password reset, display the form */
	if (request_new_password == 1) { // is this page requesting a new password?
		loadPopup("#popupPasswordNew");
	}

	$("#PasswordNewForm").ajaxForm(
		{dataType: 'xml', success: function(xml) {
			var status = $("status", xml).text();  // ok=success
			if (status == "ok"){
				$("#gutsPasswordNew").html($("msg", xml).text());
			}
			else {
				$("#passwordNewBad").html($("errorMessage", xml).text());
				$("#passwordNewBad").show();	
			}
		}																	 
	});



	PEPS.rollover.init();  // setup for rollover images
	
	if(typeof moreReadyFunctions == 'function'){   // this allows additional ready functions to be defined in the pages, only call if exists
		moreReadyFunctions();
	}
	
});   // end of $ ready functions




var allPopupStatus = [];

	function loadPopup(popName){
		if ((allPopupStatus[popName] == 0) || (!allPopupStatus[popName])){
				disableAllPopups(true);
				$("input").attr("value", "");
				$("input").removeClass("error");
				$("#backgroundPopup").css({
					"opacity": "0.7"
				});
				$("#backgroundPopup").show();
				centerPopup(popName);
				$(popName).fadeIn("fast");
				allPopupStatus[popName] = 1;
			}
	}
	

	function disableAllPopups(doItFast){
		var closeBackground = false;
		for (i in allPopupStatus){
			if (allPopupStatus[i] ==  1){
				if (doItFast){
					$(i).hide();
				}
				else {
					$(i).fadeOut("fast");
				}
				allPopupStatus[i] = 0;
				closeBackground = true;
			}
		}
		if (closeBackground && !doItFast){
			$("#backgroundPopup").hide();
		}
	}
	



// user is now logged in, display welcome <name> message (either completed registration or logged in
function setLoggedIn(uname){
	$("#welcome").html("Welcome " + uname + "&nbsp;&nbsp;");	
	$("#statusOut").toggle();
	$("#statusIn").toggle();
}






//centering popup
	function centerPopup(idName){
	//request data for centering
		var windowWidth = document.documentElement.clientWidth;
		var windowHeight = document.documentElement.clientHeight;
		var popupHeight = $(idName).height();
		var popupWidth = $(idName).width();
		//centering
		$(idName).css({
			"position": "absolute",
			"top": windowHeight/2-popupHeight/2,
			"left": windowWidth/2-popupWidth/2
		});
		//only need force for IE6
		$("#backgroundPopup").css({
			"height": windowHeight
		});
	}





/* Rollover function... to create a roll-over image, assign it class "ro" and the the image should be _o */

PEPS = {};

PEPS.rollover = 
{
   init: function()
   {
      this.preload();
      
      $(".ro").hover(
         function () { $(this).attr( 'src', PEPS.rollover.newimage($(this).attr('src')) ); }, 
         function () { $(this).attr( 'src', PEPS.rollover.oldimage($(this).attr('src')) ); }
      );
   },

   preload: function()
   {
      $(window).bind('load', function() {
         $('.ro').each( function( key, elm ) { $('<img>').attr( 'src', PEPS.rollover.newimage( $(this).attr('src') ) ); });
      });
   },
   
   newimage: function( src )
   { 
      return src.substring( 0, src.search(/(\.[a-z]+)$/) ) + '_o' + src.match(/(\.[a-z]+)$/)[0]; 
   },

   oldimage: function( src )
   { 
      return src.replace(/_o\./, '.'); 
   }

}


// handy functions...
/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Url = {
 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}