//*******************************************************************************
// CONSTANTS
//*******************************************************************************
// site specific pages
var site_google = "UA-3724738-9";
var site_mainPage = "tp_index.asp";
var site_homePage = "tp_index.asp";
var site_clubPage = "clb_index.asp";

var site_clubSurveyPage = "CLB_survey.asp";
var site_clubThankYouPage = "CLB_welcome.asp";
var site_clubRedemptionConfirmationPage = "CLB_rewards_redemption.asp";
var site_clubRedemptionThankYouPage = "CLB_rewards_confirmation.asp";
var site_sweepstakesThankYouPage = "SWP_thankyou.asp";

var img_waiting = "<center><img src='image/waiting.gif' border='0'></center>";

// pages
var pg_login = 1;
var pg_logout = 2;
var pg_forgotpassword = 3;
var pg_errormessage = 4;
var pg_forgotpasswordconfirm = 5;
var pg_register = 6;
var pg_invitefriend = 7;
var pg_invitefriendthankyou = 8;
var pg_coupon = 9;
var pg_redeemcoupon = 10;
var pg_printcoupon = 11;
var pg_thankyou = 12;
var pg_profile = 13;
var pg_editaccount = 14;
var pg_sweepstakeslogin = 15;
var pg_sweepstakesregister = 16;
var pg_rewardsavailable = 17;
var pg_rewardstoconfirm = 18;
var pg_rewardsconfirmed = 19;
var pg_accounthistory = 20;
var pg_welcome = 21;

//*******************************************************************************
// VARIABLES
//*******************************************************************************
// core variables
var url_site = "http://" + window.location.hostname + "/io_sites/rs_proxy.asp?url=";
var ajax_url = url_site + "ajaxcalls/";
var api_url = url_site + "apicalls/";

// page array
var pageArray;

// browser width and heigth
var winW;
var winH;

// DIV objects
var div_login;
var div_error;
var div_user;
var div_invite;
var div_coupon;
var div_results;
var div_thankyou;
var div_winner;
var div_profile;
var div_rewards;
var div_welcome;

// overlay flags
var overlayVisible = false;
var errorVisible = false;


// api retrun data
var api_results; 

// system ready flag
var systemReady = false;

// XML return data
var rp_XMLDoc;
var rp_RootNode;
var rp_ResultCode;
var rp_ResultMessage;
var rp_CookiesEnabled;
var rp_CookiesErrorDisplayed = false;


//*******************************************************************************
// INITIALIZATION calls
//*******************************************************************************
//***********************************************
// initSystem
//***********************************************
function initSystem()
{
	if (!systemReady)
	{
		// load the google analytic's code
		loadGoogleCode();

		// get the browser resolution
		getBrowserResolution();

		// setup the system page array
		setupPageArray();

		// set window resize event handle
		window.onresize= windowResized;

		// set system flag
		systemReady = true;
	}
	else
	{
	  alert("System is MOT ready!");
	}
	
	// check cookie
	if (!checkCookiesAreEnabled())
	{
		showCookieErrorMessage();
		return false;
	}

	// return success
	return true;
}




//*******************************************************************************
// COOKIE calls
//*******************************************************************************
//***********************************************
// checkCookiesAreEnabled
//***********************************************
function checkCookiesAreEnabled()
{
  setCookie("CookieTest","Enabled");
  rp_CookiesEnabled = false;

  var allcookies = document.cookie;
  var pos = allcookies.indexOf("CookieTest=");
  if (pos != -1) 
  {
    if (readCookie("CookieTest") == "Enabled")
    {
      rp_CookiesEnabled = true;
    }
  }

  return rp_CookiesEnabled;
}  
//***********************************************
// showCookieErrorMessage
//***********************************************
function showCookieErrorMessage()
{
  if (!rp_CookiesErrorDisplayed)
  {
    showErrorMessage("Cookies must be enabled in order to access this site!");
    rp_CookiesErrorDisplayed = true;
  }
}
//***********************************************
// showCookies
//***********************************************
function showCookies() 
{
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) 
	{
    alert(ca[i]);
	}
}
//***********************************************
// clearCookie
//***********************************************
function clearCookies() 
{
  // set cookies
  document.cookie = "rp_userid=; path=/;";
  document.cookie = "rp_keycode=; path=/;";
}
//***********************************************
// readCookie
//***********************************************
function readCookie(name) 
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) 
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0)
		{
		  return c.substring(nameEQ.length,c.length);
    }
	}

	// cookie does not exist
	return "";
}
//***********************************************
// setCookie
//***********************************************
function setCookie(name,value) 
{
  document.cookie = name + "=" + value + "; path=/; domain=" + window.location.hostname + ";";
}





//*******************************************************************************
// GOOGLE Analytics
//*******************************************************************************
//***********************************************
// loadGoogleCode
//***********************************************
function loadGoogleCode()
{
  // load google analytic code - a method to alleviate the need to modify client sites
  if (site_google != "")
  {
    document.write(unescape("%3Cscript src='http://www.google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
  }
}
//***********************************************
// trackPageView
//***********************************************
function trackPageView(pg)
{
  if (site_google != "")
  {
    var pageTracker = _gat._getTracker(site_google);
    pageTracker._initData();
    pageTracker._trackPageview(pg);
  }
}





//*******************************************************************************
// PAGE ARRAYS
//*******************************************************************************
//***********************************************
// setupPageArray
//***********************************************
function setupPageArray()
{
	pageArray = new Array();

	// add page
	addPage(pg_login,"ajax_loginform","api_loginuser","div_login",div_login,0,0,"api_ProcessLogin","login_form");
	addPage(pg_logout,"","api_logoutuser","",null,0,0,"api_ProcessLogout","");
	addPage(pg_forgotpassword,"ajax_forgotpasswordform","api_forgotpassword","div_login",div_login,0,0,"api_ProcessPassword","forgotpassword_form");
	addPage(pg_errormessage,"ajax_errormessageform","","div_error",div_error, -1, -1,"","");
	addPage(pg_forgotpasswordconfirm,"ajax_forgotpasswordconfirmform","","div_login",div_login,0,0,"","");

	addPage(pg_register,"ajax_registerform","api_createaccount","div_user",div_user,0,0,"api_ProcessRegister","user_form");

	addPage(pg_invitefriend,"ajax_invitefriendform","api_invitefriend","div_invite",div_invite,0,0,"api_ProcessInviteFriend","invite_form");
	addPage(pg_invitefriendthankyou,"ajax_invitefriendthankyouform","api_invitefriend","div_invite",div_invite,0,0,"api_ProcessInviteFriend","invite_form");

	addPage(pg_coupon,"ajax_couponform","","div_coupon",div_coupon,0,0,"","");
	addPage(pg_redeemcoupon,"ajax_redeemcouponform","api_redeemcoupon","div_coupon",div_coupon,0,0,"api_ProcessRedeemCoupon","coupon_form");
	addPage(pg_printcoupon,"ajax_printcouponform","","div_coupon",div_coupon,0,0,"","");

	addPage(pg_thankyou,"ajax_thankyouform","api_memberentry","div_thankyou",div_thankyou,0,0,"api_ProcessMemberEntry","thankyou_form");

	addPage(pg_profile,"ajax_profileform","api_submitprofile","div_profile",div_profile,0,0,"api_ProcessSubmitProfile","profile_form");
	addPage(pg_editaccount,"ajax_editaccountform","api_editaccount","div_user",div_user,0,0,"api_ProcessEditAccount","user_form");

	addPage(pg_sweepstakeslogin,"ajax_sweepstakesloginform","api_sweepstakeslogin","div_login",div_login,0,0,"api_ProcessSweepstakesLogin","login_form");
	addPage(pg_sweepstakesregister,"ajax_sweepstakesregisterform","api_entersweepstakes","div_user",div_user,0,0,"api_ProcessSweepstakesRegister","user_form");

	addPage(pg_rewardsavailable,"ajax_rewardsavailable","api_redeemrewards","div_rewards",div_rewards,0,0,"api_ProcessRedeemRewards","rewards_form");
	addPage(pg_rewardstoconfirm,"ajax_rewardstoconfirm","api_confirmrewards","div_rewards",div_rewards,0,0,"api_ProcessConfirmRewards","rewards_form");
	addPage(pg_rewardsconfirmed,"ajax_rewardsconfirmed","","div_rewards",div_rewards,0,0,"","");

	addPage(pg_accounthistory,"ajax_accounthistory","","div_user",div_user,0,0,"","");
	addPage(pg_welcome,"ajax_welcome","","div_welcome",div_welcome,0,0,"","");
}
//***********************************************
// addPage
//***********************************************
function addPage(pg, ajax, api, divname, div, top, left, api_processor, form)
{
	var tmpObject;
	tmpObject = new Object();
	tmpObject.page = pg;
	tmpObject.ajax = ajax;
	tmpObject.api = api;
	tmpObject.div = div;
	tmpObject.divname = divname;
	tmpObject.top = top;
	tmpObject.left = left;
	tmpObject.http = null;
	tmpObject.api_processor = api_processor;
	tmpObject.form = form;
	pageArray.push(tmpObject);
}


//*******************************************************************************
// OBJECT CALLS
//*******************************************************************************
//***********************************************
// showObject
//***********************************************
function showObject(obj,x,y)
{
  // set the div properties
  if (document.layers)
  {
    obj.style.left = x;
    obj.style.top = y;
  }
  else 
  {
    obj.style.left = x + "px";
    obj.style.top = y + "px";  
  }

  // show the DIV
  obj.style.visibility = "visible";
}
//***********************************************
// hideObject
//***********************************************
function hideObject(obj)
{
  obj.style.visibility = "hidden";
}
//***********************************************
// getObject
//***********************************************
function getObject(objectId) 
{
  // cross-browser function to get an object's style object given its
  if(document.getElementById && document.getElementById(objectId)) 
  {
    // W3C DOM
    return document.getElementById(objectId);
  } 
  else if (document.all && document.all(objectId)) 
  {
    // MSIE 4 DOM
    return document.all(objectId);
  } 
  else if (document.layers && document.layers[objectId]) 
  {
    // NN 4 DOM.. note: this won't find nested layers
    return document.layers[objectId];
  } 
  else 
  {
    return false;
  }
} 




//*******************************************************************************
// HTTP CALLS
//*******************************************************************************
//***********************************************
// getHTTPObject
//***********************************************
function getHTTPObject()
{
	if (typeof(XMLHttpRequest)!='undefined')
	{
		return new XMLHttpRequest();
	}

	var axO=['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'], i;
	for(i=0;i<axO.length;i++)
	{
		try
		{
			return new ActiveXObject(axO[i]);
		}
		catch(e)
		{
		}
	}
	return null;
}
//***********************************************
// redirectPage
//***********************************************
function redirectPage(newPage)
{
  location.href = newPage;
}
//***********************************************
// openPage
//***********************************************
function openPage(newPage)
{
  window.open(newPage);
}




//*******************************************************************************
// PAGE CALLS
//*******************************************************************************
//***********************************************
// getPageObject
//***********************************************
function getPageObject(pg)
{
	// make sure we are fully loaded
	if (!systemReady)
	{
		alert("System is NOT ready!");
		return;
	}

	// find page object
	var p;
	for (p = 0; p < pageArray.length; p++)
	{
		if (pageArray[p].page == pg)
		{
      // get the page
			getAjaxPage(p);
			return false;
		}
	}
  
  // end the call - page not found
	showErrorMessage("PAGE '" + pg + "' has not yet been implemented!");
  return false;
}
//***********************************************
// getAjaxPage
//***********************************************
function getAjaxPage(p) 
{
	// show loading object
	pageArray[p].div = getObject(pageArray[p].divname);
	pageArray[p].div.style.visibility = "visible";
	pageArray[p].div.innerHTML = img_waiting;
	showObject(pageArray[p].div,0,0);

  // get random number
  var rn;
  rn = Math.floor(Math.random()*99999);
  
	// get the page
  pageArray[p].http = getHTTPObject(); 
  pageArray[p].http.open("GET", ajax_url + pageArray[p].ajax + ".asp&rn=" + rn, true);
  pageArray[p].http.onreadystatechange = function()
	{
		processHTTP(pageArray[p].ajax,p);
	}
  pageArray[p].http.send(null);

	// return
	return false;
}





//*******************************************************************************
// AJAX PROCESSOR CALLS
//*******************************************************************************
//***********************************************
// processHTTP
//***********************************************
function processHTTP(name,p) 
{
  if (httpCallIsDone(pageArray[p].http.readyState) == true)
  {
    if (pageArray[p].http.status == 200)
    {
      pageArray[p].div.innerHTML = pageArray[p].http.responseText;
			if (pageArray[p].top == -1)
			{
				var sxy = new Array();
				sxy = getScrollXY();
        getBrowserResolution();
	      showObject(pageArray[p].div, ( ((winW-300) / 2) + sxy[0]) , ( ((winH-200) / 2) + sxy[1])  );
			}
			else
			{
		    showObject(pageArray[p].div, pageArray[p].top, pageArray[p].left);
			}
    }
    else
    {
			if (p != pg_errormessage)
			{
				showErrorMessage("Failed to load data for '" + name + "'");
			}
    }
  }
}
//***********************************************
// httpCallIsDone
//***********************************************
function httpCallIsDone(state) 
{
  if (state == 0)
  {
    window.status = "Connection established";
  }
  else if (state  == 1)
  {
    window.status = "Request received";
  }
  else if (state  == 3)
  {
    window.status = "Answer in process";
  }
  else if (state  == 4) 
  {
    window.status = "Call completed";
    return true;
  }
  return false;
}








//*******************************************************************************
// API CALLS
//*******************************************************************************
//***********************************************
// makeAPICall
//***********************************************
function makeAPICall(pg)
{
	// initialize parameter data
	var form;
	var paramData;
	paramData = "url=apicalls/" + pageArray[pg-1].api + ".asp" + 
	            "&data=userid=" + readCookie("rp_userid") + "||" + 
              "keycode=" + readCookie("rp_keycode") + "||";

  // record page with google
  trackPageView(pageArray[pg-1].api);

	// get the form variables
	if ( (document[pageArray[pg-1].form] != null) && (document[pageArray[pg-1].form] != "undefined") )
	{
	  form = document[pageArray[pg-1].form];

	  // get all of the necessary form elements
	  for(i = 0; i < form.elements.length; i++)
	  {

		  if ( (form.elements[i].type == "hidden") || (form.elements[i].type == "text") || (form.elements[i].type == "textarea") || (form.elements[i].type == "password") )
		  {
		    paramData = paramData + form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value) + "||";
		  }
		  else if (form.elements[i].type == "checkbox")
		  {
			  if (form.elements[i].checked)
			  {
  		    paramData = paramData + form.elements[i].name + "=1||";
		    }
		    else
		    {
  		    paramData = paramData + form.elements[i].name + "=0||";
		    }
		  }
		  else if (form.elements[i].type == "radio")
		  {
			  if (form.elements[i].checked)
			  {
				  paramData = paramData + form.elements[i].name + "=" + form.elements[i].value + "||";
			  }
		  }
		  else if (form.elements[i].type == "select-one")
		  {
			  if (form.elements[i].selectedIndex == -1)
			  {
				  paramData = paramData + form.elements[i].name + "=-1" + "||";
			  }
			  else
			  {
				  paramData = paramData + form.elements[i].name + "=" + form.elements[i].options[form.elements[i].selectedIndex].value + "||";
			  }
		  }
		  else if (form.elements[i].type == "select-multiple")
		  {
			  for (var m = 0; m < form.elements[i].options.length; m++) 
			  {
				  if (form.elements[i].options[m].selected)
				  {
					  paramData = paramData + form.elements[i].name + "=" + form.elements[i].options[m].value + "||";
				  }
			  } 
		  }
	  }
  }
  
 	// setup and execute HTTP call
  pageArray[pg-1].http = getHTTPObject(); 
  pageArray[pg-1].http.open("POST", api_url + pageArray[pg-1].api + ".asp", true);
  pageArray[pg-1].http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  pageArray[pg-1].http.setRequestHeader("Content-length", paramData.length);
  pageArray[pg-1].http.setRequestHeader("Connection", "close");
  pageArray[pg-1].http.onreadystatechange = function()
	{
		processAPI(pageArray[pg-1].api,pg-1);
	}
  pageArray[pg-1].http.send(paramData);
	return false;
}
//***********************************************
// processHTTP
//***********************************************
function processAPI(name,p) 
{
	// is the call done?
  if (httpCallIsDone(pageArray[p].http.readyState) == true)
  {
		// was the call successful?
    if (pageArray[p].http.status == 200)
    {
      // extract result code
      if (!extractResultData(pageArray[p].http.responseText))
			{
				showErrorMessage("Error extracting results '" + name + "'<br><br>Code=" + pageArray[p].http.status);
				return;
			}

      // did the call fail?
      if (rp_ResultCode != "0")
      {
				showErrorMessage(rp_ResultMessage);
        return;
      }

			// process LOGIN USER results
			if (pageArray[p].api_processor == pageArray[pg_login-1].api_processor)
			{
				api_ProcessLogin();
			}

			// process LOGOUT results
			if (pageArray[p].api_processor == pageArray[pg_logout-1].api_processor)
			{
				api_ProcessLogout();
			}

			// process FORGOT PASSWORD results
			if (pageArray[p].api_processor == pageArray[pg_forgotpassword-1].api_processor)
			{
				api_ProcessPassword();
			}

			// process REGISTER results
			if (pageArray[p].api_processor == pageArray[pg_register-1].api_processor)
			{
				api_ProcessRegister();
			}

			// process ENTER SWEEPSTAKES LOGIN results
			if (pageArray[p].api_processor == pageArray[pg_sweepstakeslogin-1].api_processor)
			{
				api_ProcessSweepstakesLogin();
			}

			// process ENTER SWEEPSTAKES REGISTER results
			if (pageArray[p].api_processor == pageArray[pg_sweepstakesregister-1].api_processor)
			{
				api_ProcessEnterSweepstakesRegister();
			}

			// process INVITE FRIEND results
			if (pageArray[p].api_processor == pageArray[pg_invitefriend-1].api_processor)
			{
				api_ProcessInviteFriend();
			}

			// process REDEEM COUPON results
			if (pageArray[p].api_processor == pageArray[pg_redeemcoupon-1].api_processor)
			{
				api_ProcessRedeemCoupon();
			}

			// process SUBMIT PROFILE results
			if (pageArray[p].api_processor == pageArray[pg_profile-1].api_processor)
			{
				api_ProcessSubmitProfile();
			}

			// process EDIT ACCOUNT results
			if (pageArray[p].api_processor == pageArray[pg_editaccount-1].api_processor)
			{
				api_ProcessEditAccount();
			}

			// process REDEEM REWARDS results
			if (pageArray[p].api_processor == pageArray[pg_rewardsavailable-1].api_processor)
			{
				api_ProcessRedeemRewards();
			}

			// process CONFIM REWARDS results
			if (pageArray[p].api_processor == pageArray[pg_rewardstoconfirm-1].api_processor)
			{
				api_ProcessConfirmRewards();
			}

			// process THANK YOU results
			if (pageArray[p].api_processor == pageArray[pg_thankyou-1].api_processor)
			{
				api_ProcessMemberEntry();
			}
    }
    else
    {
			showErrorMessage("Failed to load API results for " + name + "<br><br>Code=" + pageArray[p].http.status);
    }
  }
}

//***********************************************
// extractResultData
//***********************************************
function extractResultData(str) 
{
  // store the results as an XML object
  storeResultsAsXML(str);

  // extract the result code and message - must be first child or success/failure
  rp_ResultCode = rp_rootNode.childNodes[0].attributes[0].value;
  rp_ResultMessage = rp_rootNode.childNodes[0].attributes[1].value;

	// return success
	return true;
}

//***********************************************
// storeResultsAsXML
//***********************************************
function storeResultsAsXML(str) 
{
  var doc;
  if (window.ActiveXObject)
  {
    rp_XMLDoc = new ActiveXObject("Microsoft.XMLDOM");
    rp_XMLDoc.async="false";
    rp_XMLDoc.loadXML(str);
  }
  else
  {
    var parser = new DOMParser();
    rp_XMLDoc = parser.parseFromString(str,"text/xml");
  }

  // get the root node
  rp_rootNode = rp_XMLDoc.documentElement;
}
//***********************************************
// api_ProcessLogin
//***********************************************
function api_ProcessLogin() 
{
  // get the root node
  var l = rp_rootNode.childNodes[1];
  
  // extract the userid
  node = l.childNodes[0];
  setCookie("rp_userid",node.childNodes[0].nodeValue);

  // extract the keycode
  node = l.childNodes[1];
  setCookie("rp_keycode",node.childNodes[0].nodeValue);

  // extract the sweepstakes id
  node = l.childNodes[2];
  setCookie("rp_sweepsid",node.childNodes[0].nodeValue);
 
  // extract the points
  node = l.childNodes[3];
  setCookie("rp_points",node.childNodes[0].nodeValue);

  // extract the first name
  node = l.childNodes[5];
  setCookie("rp_first_name",node.childNodes[0].nodeValue);

  // set entry point
  setCookie("rp_entry","club");
  
  // extract the profile status and redirect accordingly
  node = l.childNodes[4];
  if (node.childNodes[0].nodeValue == "0")
  {
    redirectPage(site_clubThankYouPage);
  }
  else
  {
    redirectPage(site_clubSurveyPage);
  }
}
//***********************************************
// api_ProcessLogout
//***********************************************
function api_ProcessLogout() 
{
  setCookie("rp_userid","-1");
  setCookie("rp_keycode","");

  // show the login page
  redirectPage(site_clubPage);
}
//***********************************************
// api_ProcessPassword
//***********************************************
function api_ProcessPassword() 
{
	getPageObject(pg_forgotpasswordconfirm);
}
//***********************************************
// api_ProcessRegister
//***********************************************
function api_ProcessRegister() 
{
  // get root node
  var l = rp_rootNode.childNodes[1];

  // extract the userid 
  var node = l.childNodes[0];
  setCookie("rp_userid",node.childNodes[0].nodeValue);

  // extract the keycode 
  node = l.childNodes[1];
  setCookie("rp_keycode",node.childNodes[0].nodeValue);

  // save sweepstakes information
  node = l.childNodes[2];
  setCookie("rp_sweepsid",node.childNodes[0].nodeValue);
  setCookie("rp_sweeps_already","0");
 
  // extract the points
  node = l.childNodes[3];
  setCookie("rp_points",node.childNodes[0].nodeValue);

  // extract the first name
  node = l.childNodes[4];
  setCookie("rp_first_name",node.childNodes[0].nodeValue);


  // set entry point
  setCookie("rp_entry","club");

  // redirect to survey page
  redirectPage(site_clubSurveyPage);
}
//***********************************************
// api_ProcessSweepstakesLogin
//***********************************************
function api_ProcessSweepstakesLogin() 
{
  // get the root node
  var l = rp_rootNode.childNodes[1];

  // extract the userid 
  node = l.childNodes[0];
  setCookie("rp_userid",node.childNodes[0].nodeValue);

  // extract the keycode 
  node = l.childNodes[1];
  setCookie("rp_keycode",node.childNodes[0].nodeValue);

  node = l.childNodes[2];
  setCookie("rp_sweeps_promo",node.childNodes[0].nodeValue);

  node = l.childNodes[3];
  setCookie("rp_sweeps_already",node.childNodes[0].nodeValue);

  node = l.childNodes[4];
  setCookie("rp_sweeps_first",node.childNodes[0].nodeValue);

  node = l.childNodes[5];
  setCookie("rp_sweeps_existing",node.childNodes[0].nodeValue);

  node = l.childNodes[6];
  setCookie("rp_sweeps_entries",node.childNodes[0].nodeValue);

  node = l.childNodes[7];
  setCookie("rp_sweeps_nextdate",node.childNodes[0].nodeValue);

  node = l.childNodes[9];
  setCookie("rp_sweeps_entrytype",node.childNodes[0].nodeValue);

  node = l.childNodes[10];
  setCookie("rp_points",node.childNodes[0].nodeValue);

  // extract the first name
  node = l.childNodes[11];
  setCookie("rp_first_name",node.childNodes[0].nodeValue);


  // set entry point
  setCookie("rp_entry","sweepstakes");

  // should we go to the profile page?
  node = l.childNodes[8];
  if (node.childNodes[0].nodeValue == "0")
  {
    redirectPage(site_sweepstakesThankYouPage);
  }
  else
  {
    redirectPage(site_clubSurveyPage);
  }
}
//***********************************************
// api_ProcessEnterSweepstakesRegister
//***********************************************
function api_ProcessEnterSweepstakesRegister() 
{
  // set entry point
  setCookie("rp_entry","sweepstakes");

  // get the root node
  var l = rp_rootNode.childNodes[1];

  // extract the userid 
  node = l.childNodes[0];
  setCookie("rp_userid",node.childNodes[0].nodeValue);

  // extract the keycode 
  node = l.childNodes[1];
  setCookie("rp_keycode",node.childNodes[0].nodeValue);

  node = l.childNodes[2];
  setCookie("rp_sweeps_promo",node.childNodes[0].nodeValue);

  node = l.childNodes[3];
  setCookie("rp_sweeps_entries",node.childNodes[0].nodeValue);

  node = l.childNodes[4];
  setCookie("rp_sweeps_nextdate",node.childNodes[0].nodeValue);

  node = l.childNodes[5];
  setCookie("rp_sweeps_entrytype",node.childNodes[0].nodeValue);

  node = l.childNodes[6];
  setCookie("rp_points",node.childNodes[0].nodeValue);

  // extract the first name
  node = l.childNodes[7];
  setCookie("rp_first_name",node.childNodes[0].nodeValue);


  // redirect to survey page
  redirectPage(site_clubSurveyPage);
}
//***********************************************
// api_ProcessInviteFriend
//***********************************************
function api_ProcessInviteFriend() 
{
  // get the thank you message
  getPageObject(pg_invitefriendthankyou);
}
//***********************************************
// api_ProcessRedeemCoupon
//***********************************************
function api_ProcessRedeemCoupon() 
{
  // open the coupon page
  openPage(site_couponPage);
}
//***********************************************
// api_ProcessSubmitProfile
//***********************************************
function api_ProcessSubmitProfile() 
{
  // show the CLUB thank you page
  if (readCookie("rp_entry") == "club")
  {
    redirectPage(site_clubThankYouPage);
    return;
  }

  // show the SWEEPSTAKES thank you page
  if (readCookie("rp_entry") == "sweepstakes")
  {
    redirectPage(site_sweepstakesThankYouPage);
    return;
  }

  // default
  redirectPage(site_clubThankYouPage);
}
//***********************************************
// api_ProcessEditAccount
//***********************************************
function api_ProcessEditAccount() 
{
  // show the CLUB thank you page
  if (readCookie("rp_entry") == "club")
  {
    redirectPage(site_clubThankYouPage);
    return;
  }

  // show the SWEEPSTAKES thank you page
  if (readCookie("rp_entry") == "sweepstakes")
  {
    redirectPage(site_sweepstakesThankYouPage);
    return;
  }

  // default
  redirectPage(site_clubThankYouPage);
}
//***********************************************
// api_ProcessRedeemRewards
//***********************************************
function api_ProcessRedeemRewards() 
{
  redirectPage(site_clubRedemptionConfirmationPage);
}
//***********************************************
// api_ProcessConfirmRewards
//***********************************************
function api_ProcessConfirmRewards() 
{
  redirectPage(site_clubRedemptionThankYouPage);
}
//***********************************************
// api_ProcessMemberEntry
//***********************************************
function api_ProcessMemberEntry() 
{
  redirectPage(site_sweepstakesThankYouPage);
}





//*******************************************************************************
// UTILITY CALLS
//*******************************************************************************
//***********************************************
// getBrowserResolution
//***********************************************
function getBrowserResolution() 
{
	if (parseInt(navigator.appVersion)>3) 
	{
		if (navigator.appName=="Netscape") 
		{
			winW = window.innerWidth;
			winH = window.innerHeight;
		}
		if (navigator.appName.indexOf("Microsoft")!=-1) 
		{
		  if (document.layers)
		  {
			  winW = document.body.offsetWidth;
			  winH = document.body.offsetHeight;
		  }
		  else
		  {
			  winW = document.body.clientWidth;
			  winH = document.body.clientHeight;
		  }
		}
	}
}
//***********************************************
// getScrollXY
//***********************************************
function getScrollXY() 
{
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) 
	{
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } 
	else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) 
	{
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } 
	else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
  {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}



//*******************************************************************************
// ERROR MESSAGE CALLS
//*******************************************************************************
//***********************************************
// showErrorMessage
//***********************************************
function showErrorMessage(msg)
{
  // IE specific
  if (navigator.appName == "Microsoft Internet Explorer")
  {
    alert(msg);
  }
  else
  {
	  // save the error data
    setCookie("error_message",escape(msg));

	  // show the overlay
	  showOverlay();

	  // show the error message
	  getPageObject(pg_errormessage);

	  // set error flag
	  errorVisible = true;
  } 
}
//***********************************************
// hideErrorMessage
//***********************************************
function hideErrorMessage()
{
	// hide the error div
	var errorDiv 
	errorDiv = getObject("div_error");
	errorDiv.style.visibility = "hidden";

  // clear error message
  setCookie("error_message","");

	// set error flag
	errorVisible = false;

	// hide the overlay
	hideOverlay();
}





//*******************************************************************************
// OVERLAY CALLS
//*******************************************************************************
//***********************************************
//  showOverlay
//***********************************************
function showOverlay()
{
	var sxy = new Array();
	sxy = getScrollXY();

	// get the browser resolution
	getBrowserResolution();

	document.getElementById('overlay').style.display='block';
	document.getElementById('overlay').style.filter='alpha(opacity=50)';
	document.getElementById('overlay').style.width = winW + "px";			
	document.getElementById('overlay').style.height = winH  + "px";			

	// set overlay flag
	overlayVisible = true;
}
//***********************************************
// hideOverlay
//***********************************************
function hideOverlay()
{
  document.getElementById('overlay').style.display='none';

	// set overlay flag
	overlayVisible = false;
}
//***********************************************
// windowResized
//***********************************************
function windowResized()
{
	// adjust the width and height of the overlay
	if (overlayVisible)
	{
		showOverlay();
	}

	// adjust the width and height of the error
	if (errorVisible)
	{
		var sxy = new Array();
		sxy = getScrollXY();
    showObject(pageArray[pg_errormessage-1].div, ( ((winW-300) / 2) + sxy[0]) , ( ((winH-200) / 2) + sxy[1])  );
	}
}
