/*********************************************************************
CORE.JS | Version 1.0.7
Original author: Jonathan Pritchard
Last Modified by: Jonathan Pritchard
Last Modified on: 06/11/09

----------------------------------------------------------------------
NOTES:
1.0.3 - Taken out all "add stand from external" functions as
we're going to make a "cart" style widget for organisers to use on their sites
1.0.3 - Added function open_contact_window(email). First seen in EOW2009
1.0.4 - Added forename and surname fields for Save/Retrieve. Fields added to DB also.
1.0.4 - Save/Retrieve validation added
1.0.5 - Clear fields once email is sent to colleague
1.0.7 - Started a refinement of duplicate element mirroring. Finish
      - Finish this refinement and we might make 1.1...?
----------------------------------------------------------------------
**********************************************************************/
var userID = 0;
var showID = 1;
var toggleHelp = 1;

function initAll(){

    menu_rollovers();

    load_flash();
    change_loginStatus("not");
    var strAuth = getCookieValue("www.showplans.co.uk/pure2010");
    
    if (strAuth != false)
	{
      var arrAuth = strAuth.split("##");
      userLogin(arrAuth[0], arrAuth[1], true);
    }
	
        $(".event_hook").click(
        function(event){
            return execute_event(event);
        }).blur(
        function(event){
            return execute_event(event);
        });

	//$(".user_name").click(textBox_onClick).blur(textBox_blur);
	//$(".email_copy").blur(chkEmailCopy_onBlur);

	//$("#aLogout").click(function(){userLogout(); return false;});
	
	//$(".save_stand").click(function(){save_stands(); return false;});
	//$(".load_stand").click(function(){load_stands(); return false;});
	
	//$("#menuitem_todayplanner").click(function(){load_floorplan('all');});
	//$("#menuitem_siteplan").click(function(){load_siteplan(); return false;});
	
	//$("#btnForward").click(function(){send_to_colleague();return false;});
        
	//$("#menuPrint").click(function(){printplan();return false;});
	
	
	/*$("#menuSaveRetrieve").click(function(){
		$("#login_area").slideToggle("slow");
		if($("#forward_area").is(":visible")){
			$("#forward_area").slideToggle("slow");
		}
		return false;
	});
	$("#lowermenuSaveRetrieve").click(function(){
		$("#login_area1").slideToggle("slow");
		return false;
	});
	$("#menuForward").click(function(){
		$("#forward_area").slideToggle("slow");
		if($("#login_area").is(":visible")){
			$("#login_area").slideToggle("slow");
		}
		return false;
	});*/

	//Browser Detection:
	 if(window.opera){
          var i=xUA.indexOf('opera');
          if(i!=-1){
              var v=parseInt(xUA.charAt(i+6));
              xOp7Up=v>=7;
              xOp6Dn=v<7;
          }
      } else if(navigator.vendor!='KDE' && document.all && xUA.indexOf('msie')!=-1){
          xIE4Up=parseFloat(navigator.appVersion)>=4;
          xIE4=xUA.indexOf('msie 4')!=-1;
          xIE5=xUA.indexOf('msie 5')!=-1;
      } else if(document.layers){
          xNN4=true;
      }
      xMac=xUA.indexOf('mac')!=-1;
	  //end browser detection
	  
}

function printdayplan(){
	printtmr=setTimeout("printplan();",100);
}

function confirmExit(){
	var i = 0
	for (var tmpProp in mystands){
		i++
	}
	if(i > 0){
            return "Are you sure you want to exit without saving your event plan? Click 'Cancel' to return to the Pure 2010 MyPlan, then enter your email, select 'Save' and your itinerary will be saved for next time!";
	} else {
            return true;           
        }

}

//**************************************load flash files********************************************
function load_flash(){
	//If stands numbers are found in querystring then load the floorplan directly
	if (querySt("stands") != ""){
		
		//stand number(s) were found in the querystring so perform the following ops on the data:
		//1) Remove all dashes from the querystring
		//2) Remove the text "Stand: " from the querystring
		//3) remove leading Zeros and Us at the beginning of each stand number
		
		var stands = querySt("stands").replaceAll("Stand:%20","").replaceAll("-","");
		var arrStandNumbers = stands.split(",");
		for(var i=0;i<arrStandNumbers.length;i++){
			var leadingchar = arrStandNumbers[i].substr(0,1)
			if(leadingchar == "0" || leadingchar == "U") {
				arrStandNumbers[i] = arrStandNumbers[i].substr(1,arrStandNumbers[i].length);
			}
		}
		
		//Now load the floorplan directly (bypassing the siteplan)
		makeFlash(arrStandNumbers.toString(),'');
		load_floorplan("all");
		
	}else if(querySt("ss")){
		makeFlash('','');
		load_floorplan("all");
		addStandFromExternal(querySt("ss"));
	}else{
		makeFlash('','');
		load_siteplan();
	}
	
	//the siteplan
/*	var so = new SWFObject("FLASH/preloader.swf", "siteplan", "860", "470", "8", "#ffffff");
   	so.addParam("quality", "high");
   	so.addParam("wmode", "transparent");
   	so.addParam("align", "middle");
   	so.write("siteplan_area");*/
	
	$("#siteplan_area").flash(
		{
			swf: "FLASH/preloader.swf",
			name: "siteplan",
			height:590,
			width:1003,
			params: {
				quality: 'high',
				wmode: 'transparent',
				align: 'middle',
				bgcolor: '#FFFFFF'
			}
		}
	);
}

function textBox_onClick(ob){
	if($(this).val() == "Your email address here..."){
		$(this).val("");	
	}
}
function textBox_blur(){
	if($(this).val() == ""){
		$(this).val("Your email address here...");	
	}
}


/******************************************************************************/

/*
 *This function executes all events for form elements on this system. !Important
 **/

function execute_event(event){
    
    var returnVal = false; //we use this to canel anchor actions only. true must be returned for radio and check buttons.

    switch(event.target.id){
        //************* Save Retrieve form element events
        case"chkEmailCopy":
            $("#chkEmailCopy1").attr("checked",$(event.target).is(":checked"));
            returnVal = true;
            break;
        case"chkEmailCopy1":
            $("#chkEmailCopy").attr("checked",$(event.target).is(":checked"));
            returnVal = true;
            break;

        case"txtForename":
        case"txtForename1":
            duplicate_element_operation(event, "txtForename", "txtForename1", "");
            break;

        case"txtSurname":
        case"txtSurname1":
            var defaultText = "";
            var targetText = $(event.target).val();
            switch(event.type){
                case "click":
                    if(targetText == defaultText){
                        $(event.target).val(defaultText);
                    }else{

                    }
                break;
                case "blur":
                    if($(event.target).val() == ""){
                        //if the blurred text input is empty then insert default text into both boxes/
                        $("#txtSurname").val(defaultText);
                        $("#txtSurname1").val(defaultText);
                    }else{
                        switch(event.target.id){
                            case "txtSurname":
                                $("#txtSurname1").val(targetText);
                                break;
                            case "txtSurname1":
                                $("#txtSurname").val(targetText);
                        }
                    }
            }
            break;

        case"txtUsername":
        case"txtUsername1":
            var targetText = $(event.target).val();
            switch(event.type){
                case "click":
                    if(targetText == "Your email address here..."){
                        $(event.target).val("");
                    }
                break;
                case "blur":
                    if($(event.target).val() == ""){
                        //if the blurred text input is empty then insert default text into both boxes/
                        $("#txtUsername").val("Your email address here...");
                        $("#txtUsername1").val("Your email address here...");
                    }
                    else{
                        switch(event.target.id){
                            case "txtUsername":
                                $("#txtUsername1").val(targetText);
                                break;
                            case "txtUsername1":
                                $("#txtUsername").val(targetText);
                        }
                    }
                    //duplicate_element_operation(event,"txtForwardFromName", "txtForwardFromName1","Your email address here...");
            }
            break;
        case "radioAllowContactYes":
        case "radioAllowContactNo":
            //** mirror the change on the lower panel:
            //deselect all radios in the lower group
            $("input[name=allowcontact1]").removeAttr("cheched")
            //match the upper group to the one selected here
            switch(event.target.id){
                case "radioAllowContactYes":
                    $("#radioAllowContactYes1").attr("checked","checked");
                    break;
                case "radioAllowContactNo":
                    $("#radioAllowContactNo1").attr("checked","checked");
            }
            returnVal = true;
        break;
        case "radioAllowContactYes1":
        case "radioAllowContactNo1":
            //** mirror the change on the upper panel:
            //deselect all radios in the upper group
            $("input[name=allowcontact]").removeAttr("checked")
            //match the upper group to the one selected here
            switch(event.target.id){
                case "radioAllowContactYes1":
                    $("#radioAllowContactYes").attr("checked","checked");
                    break;
                case "radioAllowContactNo1":
                    $("#radioAllowContactNo").attr("checked","checked");
            }
            returnVal = true;
        break;
        case "btnSaveStand1":
        case "btnSaveStand":
            switch(event.type){
                case "click":
                    save_stands();
            }
            break;
        case "btnLoadStand":
        case "btnLoadStand1":
            switch(event.type){
                case "click":
                load_stands()
            }
            break;

            //************* Forward form element events
        case "txtForwardEmail":
        case "txtForwardEmail1":
            switch(event.type){
                case "click":
                
                case "blur":
                    
                    duplicate_element_operation(event,"txtForwardEmail", "txtForwardEmail1","");

                    /*switch(e.target.id){
                        case "txtForwardEmail":
                            $("#txtForwardEmail1").val($("#txtForwardEmail").val());
                        case "txtForwardEmail1":
                            $("#txtFowardEmail").val($("#txtForwardEmail1"));
                    }*/
            }
        break;
        case "txtForwardFromName":
        case "txtForwardFromName1":

            switch(event.type){
                case "blur":
                    duplicate_element_operation(event,"txtForwardFromName", "txtForwardFromName1","");
            }

        break;
        case "txtPersonalMsg":
        case "txtPersonalMsg1":
            switch(event.type){
                case "blur":
                    duplicate_element_operation(event,"txtPersonalMsg", "txtPersonalMsg1","");
            }

        break;
        break;
        case "btnForward":
        case "btnForward1":
            switch(event.type){
                case "click":
                send_to_colleague();
            }
            break;
        //Menu elements
        case "menuitem_todayplanner":
            //click event assumed:
            switch(event.type){
                case "click":
                    load_floorplan('all');
            }
            break;
        case "menuitem_siteplan":
            switch(event.type){
                case "click":
                    load_siteplan();
            }
            break;
        case "menuSaveRetrieve":
        case "menuSaveRetrieve1":
            //click event assumed:
            switch(event.type){
                case "click":
                    switch(event.target.id){
                        case "menuSaveRetrieve":
                            $("#login_area").slideToggle("slow");
                            if($("#forward_area").is(":visible")){
                                    $("#forward_area").slideToggle("slow");
                            }
                            break;
                        case "menuSaveRetrieve1":
                            $("#login_area1").slideToggle("slow");
                            if($("#forward_area1").is(":visible")){
                                    $("#forward_area1").slideToggle("slow");
                            }
                    }

            }
            break;


        case "menuForward":
        case "menuForward1":
            //click event assumed:
            switch(event.type){
                case "click":
                    switch(event.target.id){
                        case "menuForward":
                            $("#forward_area").slideToggle("slow");
                            if($("#login_area").is(":visible")){
                                    $("#login_area").slideToggle("slow");
                            }
                            break;
                        case "menuForward1":
                            $("#forward_area1").slideToggle("slow");
                            if($("#login_area1").is(":visible")){
                                    $("#login_area1").slideToggle("slow");
                            }
                    }
                    
            }
            break;
        case "menuPrint":
        case "menuPrint1":
            //click event assumed:
            switch(event.type){
                case "click":
                    printplan();
            }
            break;
        //login elements
        case "aLogout":
            switch(event.type){
                case "click":
                    userLogout();
            }

    }
    return returnVal;
}

function duplicate_element_operation(event, elementID1, elementID2, defaultText){
    
    var targetText = $(event.target).val();
            switch(event.type){
                case "click":
                    if(targetText == defaultText){
                        $(event.target).val("");
                    }else{

                    }
                break;
                case "blur":
                    if($(event.target).val() == ""){
                        //if the blurred text input is empty then insert default text into both boxes/
                        $("#" + elementID1).val(defaultText);
                        $("#" + elementID2).val(defaultText);
                    }else{
                        switch(event.target.id){
                            case elementID1:
                                $("#" + elementID2).val(targetText);
                                break;
                            case elementID2:
                                $("#" + elementID1).val(targetText);
                        }
                    }
            }
    
}

/******************************************************************************/

function chkEmailCopy_onBlur(ob){
	//alert(this.id + ":" + this.value);
	switch(this.id){
		case "chkEmailCopy":
			$("#chkEmailCopy1").attr("checked",$(this).attr("checked"));
			break;
		case "chkEmailCopy1":
			$("#chkEmailCopy").attr("checked",$(this).attr("checked"));
	}
}

function userLogin() {
  	var result = true;
	//var strEmail = getCookieValue("www.showplans.co.uk");
	var strCookieVal = $.cookie("www.showplans.co.uk");
	
	if (strCookieVal != null){
		//a cookie exists so split it up.
                //fill out text boxes and spanUserEmail with correct details
                var arrCookieDetails = strCookieVal.split("##");
		$("#txtForename").val(arrCookieDetails[0]);
                $("#txtForename1").val(arrCookieDetails[0]);
                $("#txtSurname").val(arrCookieDetails[1]);
                $("#txtSurname1").val(arrCookieDetails[1]);
                $("#txtUsername").val(arrCookieDetails[2]);
                $("#txtUsername1").val(arrCookieDetails[2]);
		$("#spanUserEmail").html(arrCookieDetails[2]);
		$("#spanUserEmail1").html(arrCookieDetails[2]);
		change_loginStatus("auth");
	}
	else
	{
		if($("#txtUsername").val() != "" && $("#txtUsername").val() != "Your email address here..."){
			//the text box is not empty so see if we can set a cookie with this email:
			var strForename = $("#txtForename").val();
                        var strSurname = $("#txtSurname").val();
                        var strUsername = $("#txtUsername").val();
			var reValidEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if(!reValidEmail.test(strUsername)){
				//the supplied email is not valid
				response("Please enter a valid email address.", 2);
				//document.forms[0].elements[0].focus(); *** we cant shift focus here because the control doesnt exist yet. Result of callilng initAll from html (see line 1).....
				result = false;
			}else{
				//the email is valid so set a cookie and show/hide the
				// @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
				$.cookie("www.showplans.co.uk/pure2010", strForename + "##" + strSurname + "##" + strUsername, {expires: 255});
				//writePersistentCookie("www.showplans.co.uk", username,"years", 255);
				$("#spanUserEmail").html(strSurname);
				$("#spanUserEmail1").html(strSurname);
				change_loginStatus("auth");
			}
		} else {
			//theres no email in the email inputs and no cookie so return false
			result = false;
		}
		//a cookie does not exist so leave things as they are. Wait for the user to enter their email, then 
		//wait for them to press 'load' or 'save' before setting the cookie:
	}
	return result;
 	
}

function userLogout(){

    //remove cookie here
    userID = 0;
    change_loginStatus("not");


	$("#spanUserEmail").val("");
	$("#txtUsername").val("Your email address here...");
        $("#txtForename").val("");
        $("#txtSurname").val("");
    //deleteCookie("www.showplans.co.uk");
	$.cookie("www.showplans.co.uk/pure2010", null);
    response("You have been logged out.", 2);
	if(!$(".siteplan_view").is(":visible")){
		removeAllStands();
	}

}

/*function send_email(username, argument){

var oXmlHttp = zXmlHttp.createRequest();
            oXmlHttp.open("post", "server_side/email.php", true);
            oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

            oXmlHttp.onreadystatechange = function () {
                //the readyState variable has changed. See if its 4 (finished).
                if (oXmlHttp.readyState == 4) {
                    //the request is finished. now check taht the request was successful.
                    if (oXmlHttp.status == 200) {
                        //check if auth details came back positive:
                        var XMLresponse = oXmlHttp.responseText;
                        if(XMLresponse == "true"){

                            response("The email has been sent to your address.", 2);

                        }else if(XMLresponse == "nouser"){

                            response("No user with that email address is registered.", 2);
                        }else if(XMLresponse == "false"){

                            response("There was an error sending your email.", 2);

                        }else{
                             response("There was an error sending your email:" + XMLresponse, 2);
                        }

                    } else {
                        response("An error occurred: " + oXmlHttp.statusText, 2);
                    }
                }
            };
            //alert("username=" + sUsername + "&password=" + sPassword);
            //alert("username=" + escape(username) + "&argument=" + escape(argument));
            oXmlHttp.send("email=" + escape(username) + "&argument=" + escape(argument));
            response("Sending email.", 3);

}*/



/************************************************************
 ********************* Stand Functions **********************
 ************************************************************/

function save_stands(){
	//set a cookie with the users validated email address:
	userLogin()	
	
        //extract stand numbers from array. not exactly sure what i'm doing here.
        var strStands = "";
        var stndarrpoint = 0;
        for (var tmpProp in mystands){
            //stndarr[stndarrpoint]=new Array(tmpProp,mystands[tmpProp][0],mystands[tmpProp][1],mystands[tmpProp][2],mystands[tmpProp][3],mystands[tmpProp][4],mystands[tmpProp][5]);
            if(mystands[tmpProp] != "null" || mystands[tmpProp] != "undefined"){
                strStands += tmpProp + "##";
            }
            stndarrpoint++;
            //alert(stndarrpoint);
        }

        for (var tmpPropPav in mypavstands){
            if(mypavstands[tmpPropPav[0]] != "null" || mypavstands[tmpPropPav[0]] != "undefined"){
                strStands += tmpPropPav + "##";
            }
        //stndarrpoint++;
        //alert(stndarrpoint);
        }
        //alert(strStands + " no of stands: " + stndarrpoint);
        //alert(mystands.length);

        var oXmlHttp = zXmlHttp.createRequest();
        oXmlHttp.open("post", "server_side/functions.php", true);
        oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        oXmlHttp.onreadystatechange = function () {
                //the readyState variable has changed. See if its 4 (finished).
                if (oXmlHttp.readyState == 4) {
                        //the request is finished. now check that the request was successful.
                        if (oXmlHttp.status == 200) {
                                //response (if any is needed. think accessibility)
                                response("Your stands have been saved.", 2);
                                change_loginStatus("showloadbtn");
                                //alert(oXmlHttp.statusText);
                                //alert("no error occurred: " + oXmlHttp.statusText)
                        } else {
                                response("An error occurred: " + oXmlHttp.statusText, 2);
                                //alert("An error occurred: " + oXmlHttp.statusText);
                        }
                }
        };
        var strForename = $("#txtForename").val();
        var strSurname = $("#txtSurname").val();
        var strUserEmail = $("#txtUsername").val();

        //*** Validation ***
        //clear the response element before continuing:
        $("#spanLoadSaveResponse").html("");
        var booValid = true
        if (strForename == ""){
            booValid = false;
            $("#spanLoadSaveResponse").html($("#spanLoadSaveResponse").html() + "Please enter your forename.<br />");
        }
        if (strSurname == ""){
            booValid = false;
            $("#spanLoadSaveResponse").html($("#spanLoadSaveResponse").html() + "Please enter your surname.<br />");
        }
        if (strUserEmail == "" || strUserEmail == "Your email address here..."){
            booValid = false;
            $("#spanLoadSaveResponse").html($("#spanLoadSaveResponse").html() + "Please enter a valid email address.<br />");
        }
        if(booValid){
            var strEmailCopy = ""
            //Get the number of stands in mystands. for some reason mystands.length returns 0 everytime :(
            if($("#chkEmailCopy").attr("checked") && count_stands() > 0){
                    //generate event plan grid:
                    strEmailCopy = "&emailcopy=" + php_urlencode(generate_epgrid());
            }
			//produce a true/false value for allow contact radio buttons:
            var strAllowContact = "";
            if($("#radioAllowContactYes").attr("checked")){
                strAllowContact = "true";
            }else if($("#radioAllowContactNo").attr("checked")){
                strAllowContact = "false";
            }
            //alert("stands=" + escape(strStands) + "&uemail=" + escape(strUserEmail) + "&sid=" + escape(showID) + "&op=save" + strEmailCopy);
            oXmlHttp.send("stands=" + escape(strStands) + "&uemail=" + escape(strUserEmail) + "&forename=" + escape(strForename) + "&surname=" + escape(strSurname) + "&allowcontact=" + strAllowContact + "&sid=" + escape(showID) + "&op=save" + strEmailCopy);
            response("saving stands.", 3);
        }

}

function load_stands()
{
//alert("userlogin(): " + userLogin());
//set a cookie with the users validated email address:
	
	if(userLogin()){
		var oXmlHttp = zXmlHttp.createRequest();
		oXmlHttp.open("post", "server_side/functions.php", true);
		oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		
		oXmlHttp.onreadystatechange = function () 
		{
			//the readyState variable has changed. See if its 4 (finished).
			if (oXmlHttp.readyState == 4) 
			{
				//the request is finished. now check that the request was successful.
				if (oXmlHttp.status == 200) 
				{
                                    ////stand##stand##stand^^^forename^^^surname^^^true
                                    var arrAllReturnInfo = oXmlHttp.responseText.split("^^^");
                                    $("#txtForename").val(arrAllReturnInfo[1]);
                                    $("#txtSurname").val(arrAllReturnInfo[2]);
                                    if(arrAllReturnInfo[3] == "true"){
                                        $("#radioAllowContactYes").attr("checked","checked");
                                        $("#radioAllowContactNo").removeAttr('checked');
                                        $("#radioAllowContactYes1").attr("checked","checked");
                                        $("#radioAllowContactNo1").removeAttr('checked');
                                    }else{
                                        $("#radioAllowContactNo").attr("checked","checked");
                                        $("#radioAllowContactYes").removeAttr('checked');
                                        $("#radioAllowContactNo1").attr("checked","checked");
                                        $("#radioAllowContactYes1").removeAttr('checked');
                                    }
                                    //$("#chkAllowContact").attr("checked", arrAllReturnInfo[3]);

                                    //request was successful. Now Parse the result:
                                    var arrStands = arrAllReturnInfo[0].split("##")
                                    for(var i=0; i<arrStands.length; i++){

                                            //window.document.showplan.SetVariable("javaAdd",arrStands[i]);
                                            getFlashMovieObject("showplan").SetVariable("javaAdd",arrStands[i]);
                                            //alert(arrStands[i]);
                                    }
                                    response("Your stands have been successfuly loaded.", 2);
                                    reListStands();
                                    response("", 0);
				} else {
					response("An error occurred: " + oXmlHttp.statusText, 2);
					response("", 0);
				}
			}
		}	
		var strUserEmail = $("#txtUsername").val();
		//alert("uemail=" + escape(strUserEmail) + "&sid=" + escape(showID) + "&op=load");
		response("", 1);
		//var strEmailCopy = ""
		//if($("#chkEmailCopy").attr("checked")) strEmailCopy = "&emailcopy" + $("#mystandlist").html();
		oXmlHttp.send("uemail=" + escape(strUserEmail) + "&sid=" + escape(showID) + "&op=load");
		
	
	}
}
function send_to_colleague()
{
	//send this event plan to a specified email address:
	//- check all required fields have been filled in:
	var validationResult = true
	$("#divForwardWarning").html("")
	if($("#txtForwardEmail").val() == "")
	{
		$("#divForwardWarning").html($("#divForwardWarning").html() + "<br />- Please enter a valid email address.");
		validationResult = false;
	}
	if($("#txtForwardFromName").val() == "")
	{
		$("#divForwardWarning").html($("#divForwardWarning").html() + "<br />- Please enter your name before sending.");
		validationResult = false;
	}
	if(count_stands() == 0)
	{
		$("#divForwardWarning").html($("#divForwardWarning").html() + "<br />- You have not added any stands to your event plan.");
		validationResult = false;
	}
	
	//- send information to functions.php
	if(validationResult == true)
	{
		var oXmlHttp = zXmlHttp.createRequest();
		oXmlHttp.open("post", "server_side/functions.php", true);
		oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		
		oXmlHttp.onreadystatechange = function () 
		{
			//the readyState variable has changed. See if its 4 (finished).
			if (oXmlHttp.readyState == 4) 
			{
				//the request is finished. now check that the request was successful.
				if (oXmlHttp.status == 200) 
				{
					//request was successful. Let the user know:
					$("#divForwardWarning").attr("class","notice");
					$("#divForwardWarning").html("<br />Your event plan was successfuly sent to " + $("#txtForwardEmail").val() + ". To send your event plan some someone else enter the new email address and message.");
				}
				response("Your event plan has been successfuly sent.", 2);
				response("", 0);
                                $("#txtForwardEmail").val("");
                                $("#txtForwardFromName").val("");
                                $("#txtPersonalMsg").val("");
			} else {
				response("An error occurred: " + oXmlHttp.statusText, 2);
				response("", 0);
			}
		}
		var strUserEmail = $("#txtUsername").val();
		//alert("uemail=" + escape(strUserEmail) + "&sid=" + escape(showID) + "&op=load");
		response("", 1);
		//var strEmailCopy = ""
		//if($("#chkEmailCopy").attr("checked")) strEmailCopy = "&emailcopy" + $("#mystandlist").html();
		/*var strForwardEmail = $("#txtForwardEmail").val()
		var strForwardFromName = 
		var strForwardMsg = 
		var strForwardDayPlan =*/
		//alert("uemail=" + escape(strUserEmail) + "&sid=" + escape(showID) + "&op=sendplan&toemail=" + $("#txtForwardEmail").val() + "&fromname=" + $("#txtForwardFromName").val() + "&msg=" + $("#txtPersonalMsg").val() + "&dayplan=" + php_urlencode(generate_epgrid()));
		
		//generate stand list to be used in return link
		var strStands = "";
		for (var tmpProp in mystands){
			if(strStands != ""){
				strStands += ","
			}
			strStands += tmpProp;
		}
	
		oXmlHttp.send("uemail=" + escape(strUserEmail) + "&sid=" + escape(showID) + "&op=sendplan&toemail=" + $("#txtForwardEmail").val() + "&fromname=" + $("#txtForwardFromName").val() + "&msg=" + $("#txtPersonalMsg").val() + "&dayplan=" + php_urlencode(generate_epgrid()) + "&stands=" + strStands);
	}
}

function generate_epgrid(){
	
	var stndarr=new Array();
	var stndarrpoint=0;
	var quotchr=String.fromCharCode(34);
	var setnumtxt="";
	var setnumnum=0;
	var setnumbegin="";
	
	var outhtm="<table class='userstand' border='0' cellpadding='10' cellspacing='0'>";
	outhtm+="<tr><th scope='col'>&nbsp;</th><th scope='col'>Exhibitor</th><th scope='col'>Stand</th><th scope='col'>Profile</th></tr>";
	for (var tmpProp in mystands){
		stndarr[stndarrpoint]=new Array(tmpProp,mystands[tmpProp][0],mystands[tmpProp][1],mystands[tmpProp][2],mystands[tmpProp][3],mystands[tmpProp][4],mystands[tmpProp][5]);
		stndarrpoint++;
	}
	stndarr.sort(sortByColumn);
	for (var tmpRow in stndarr){
		setnumnum++;
		setnumtxt+=setnumbegin+stndarr[tmpRow][0]+","+setnumnum;
		setnumbegin=",";
		outhtm+="<tr>";
		outhtm+="<td class='userstandid'>"+setnumnum+"</td>";
		if ((stndarr[tmpRow][2]=="")||(stndarr[tmpRow][2]=="undefined")){
			outhtm+="<td class='userstandexhibitor'>&nbsp;</td>";
		}else{
			outhtm+="<td class='userstandexhibitor'>"+stndarr[tmpRow][2]+"</td>";
		}
		outhtm+="<td class='userstandstand'>"+stndarr[tmpRow][0]+"</td>";				
		if ((stndarr[tmpRow][3]=="")||(stndarr[tmpRow][3]=="undefined")){
			outhtm+="<td class='userstandweb'>&nbsp;</td>";
		}else{
			outhtm += "<td class='userstandweb'><a href='http://" + stndarr[tmpRow][3] +"' >Website</a></td>";
		}
		outhtm+="</tr>";
	}
	outhtm+="</table>";
	
	return outhtm;
}

function count_stands(){
	var standcount = 0
	for (var tmpProp in mystands){
		standcount++;
	}
	return standcount;
}

function open_contact_window(email) {
    
    window.open('ExhibitorContact.aspx?e=' + email, 'Contact', 'width=482,height=730,menubar=no,status=no,location=no,toolbar=no,scrollbars=no');
}

	 
	 
