//*******************************************************************************
// CONSTANTS
//*******************************************************************************
// site specific pages
var site_google = "UA-3724738-11";
var site_homePage = "index.asp";

var site_surveyPage = "survey.asp";
var site_thankYouPage = "thankyou.asp";
var site_videoVoteResultsPage = "register.asp";
var site_ADEProfile = "survey_ade.asp";
var site_expertThankYouPage = "expert_thankyou.asp";
var site_storyThankYouPage = "story_thankyou.asp";
var site_newsletterThankYouPage = "newsletter_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_welcome = 15;

var pg_peopletalking = 16;
var pg_howitworks = 17;
var pg_videos = 18;
var pg_votingresults = 19;
var pg_rateitem = 20;
var pg_rateitemthankyou = 21;
var pg_ratingresults = 22;
var pg_storylogin = 23;
var pg_storyregister = 24;
var pg_storythankyou = 25;
var pg_newsletterlogin = 26;
var pg_newsletterregister = 27;
var pg_newsletterthankyou = 28;
var pg_expertlogin = 29;
var pg_expertregister = 30;
var pg_expertthankyou = 31;
var pg_retailerform = 32;

var pg_adeprofile = 33;
var pg_viewblog = 34;

var pg_peopletalkingimage = 35;
var pg_article = 36;
var pg_articleimage = 37;
var pg_contact = 38;
var pg_contactthankyou = 39;

//*******************************************************************************
// VARIABLES
//*******************************************************************************
// core variables
var url_site = "http://" + window.location.hostname + "/sys/";
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, div_error, div_user, div_invite, div_coupon, div_results, div_thankyou;
var div_winner, div_profile, div_rewards, div_welcome;
var div_people, div_howitworks, div_videos, div_rate, div_ratings, div_retailer;
var div_blog, div_person, div_article, div_articleimage, div_contact;

// 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);
    trackConversion(pg);
  }
}


//*******************************************************************************
// GOOGLE Adwords Converson tracking
//*******************************************************************************
//***********************************************
// trackConversion()
//***********************************************
function trackConversion(pg)
{
  if ( 
       (pg == "api_createacoount") || (pg == "api_storyregister") || (pg == "api_newsletterregister") || (pg == "api_expertregister") || 
       (pg == "api_loginuser") || (pg == "api_storyloginuser") || (pg == "api_newsletterloginuser") || (pg == "api_expertloginuser") || 
       (pg == "api_redeemcoupon")
     )
  {
    var str;
    str = "%3Cscript language='JavaScript' type='text/javascript'%3E var google_conversion_id=1060910399;var google_conversion_language='en_US'; var google_conversion_format='3'; var google_conversion_color='ffffff'; var google_conversion_label='zgxMCKOLehC_6vD5Aw'; %3C/script%3E %3Cscript language='JavaScript' src='http://www.googleadservices.com/pagead/conversion.js'%3E%3C/script%3E";
//alert(unescape(str));
    //document.write( unescape(str) );
  }
}


//*******************************************************************************
// PAGE ARRAYS
//*******************************************************************************
//***********************************************
// setupPageArray
//***********************************************
function setupPageArray()
{
	pageArray = new Array();

	// add page
	addPage(pg_login,"ajax_loginform","api_loginuser","div_user",div_user,0,0,"api_ProcessLogin","login_form");
	addPage(pg_logout,"","api_logoutuser","",null,0,0,"api_ProcessLogout","");
	addPage(pg_forgotpassword,"ajax_forgotpasswordform","api_forgotpassword","div_user",div_user,0,0,"api_ProcessPassword","forgotpassword_form");
	addPage(pg_errormessage,"ajax_errormessageform","","div_error",div_error, -1, -1,"","");
	addPage(pg_forgotpasswordconfirm,"ajax_forgotpasswordconfirmform","","div_user",div_user,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_welcome,"ajax_welcome","","div_welcome",div_welcome,0,0,"","");

	addPage(pg_peopletalking,"ajax_peopletalkingform","api_peopletalking","div_people",div_people,0,0,"","");
	addPage(pg_howitworks,"ajax_howitworksform","api_howitworks","div_howitworks",div_howitworks,0,0,"","");

	addPage(pg_videos,"ajax_videovoteform","api_voteforvideo","div_videos",div_videos,0,0,"api_ProcessVideoVote","videovote_form");
	addPage(pg_votingresults,"ajax_votingresultsform","","div_videos",div_videos,0,0,"","");

	addPage(pg_rateitem,"ajax_rateitemform","api_rateitem","div_rate",div_rate,0,0,"api_ProcessRateItem","rateitem_form");
	addPage(pg_rateitemthankyou,"ajax_rateitemthankyouform","","div_rate",div_rate,0,0,"","");
	addPage(pg_ratingresults,"ajax_ratingresultsform","","div_ratings",div_ratings,0,0,"","");

	addPage(pg_storylogin,"ajax_storyloginform","api_storyloginuser","div_user",div_user,0,0,"api_ProcessStoryLogin","login_form");
	addPage(pg_storyregister,"ajax_storyregisterform","api_storyregister","div_user",div_user,0,0,"api_ProcessStoryRegister","user_form");
	addPage(pg_storythankyou,"ajax_storythankyouform","","div_thankyou",div_thankyou,0,0,"","");

	addPage(pg_newsletterlogin,"ajax_newsletterloginform","api_newsletterloginuser","div_user",div_user,0,0,"api_ProcessNewsletterLogin","login_form");
	addPage(pg_newsletterregister,"ajax_newsletterregisterform","api_newsletterregister","div_user",div_user,0,0,"api_ProcessNewsletterRegister","user_form");
	addPage(pg_newsletterthankyou,"ajax_newsletterthankyouform","","div_thankyou",div_thankyou,0,0,"","");

	addPage(pg_expertlogin,"ajax_expertloginform","api_expertloginuser","div_user",div_user,0,0,"api_ProcessExpertLogin","login_form");
	addPage(pg_expertregister,"ajax_expertregisterform","api_expertregister","div_user",div_user,0,0,"api_ProcessExpertRegister","user_form");
	addPage(pg_expertthankyou,"ajax_expertthankyouform","","div_thankyou",div_thankyou,0,0,"","");

	addPage(pg_retailerform,"ajax_retailerform","","div_retailer",div_retailer,0,0,"","");

	addPage(pg_adeprofile,"ajax_adeprofileform","api_submitadeprofile","div_profile",div_profile,0,0,"api_ProcessSubmitADEProfile","profile_form");
	addPage(pg_viewblog,"ajax_viewblogform","","div_blog",div_blog,0,0,"","");

	addPage(pg_peopletalkingimage,"ajax_peopletalkingimage","","div_person",div_person,0,0,"","");

	addPage(pg_article,"ajax_articleform","","div_article",div_article,0,0,"","");
	addPage(pg_articleimage,"ajax_articleimage","","div_articleimage",div_articleimage,0,0,"","");

	addPage(pg_contact,"ajax_contactform","api_contactform","div_contact",div_contact,0,0,"api_ProcessContact","contact_form");
	addPage(pg_contactthankyou,"ajax_contactthankyouform","","div_contact",div_contact,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;
}
//***********************************************
// redirectParentPage
//***********************************************
function redirectParentPage(newPage)
{
  parent.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);

  // items already added
  var itemsAdded = new Array();
  
	// 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")
		  {
		    var fnd;
        fnd = false;
		    for (ia = 0; ia < itemsAdded.length; ia++)
		    {
		      if (itemsAdded[ia] == form.elements[i].name)
		      {
		        fnd = true;
		      }
		    }
		    if (!fnd)
		    {
          var tmpData;
          tmpData = "0";

          if (form[form.elements[i].name].length == null)
          {
            if (form[form.elements[i].name].checked)
            {
              paramData = paramData + form.elements[i].name + "=" + form.elements[i].value + "||";
            }
            else
            {
              paramData = paramData + form.elements[i].name + "=0||";
            }
          }
          else
          {
            for (v=0; v < form[form.elements[i].name].length; v++)
            {
              if (form[form.elements[i].name][v].checked)
              {
                if (tmpData != "")
                {
                   tmpData = tmpData + ","
                }
                tmpData = tmpData + form[form.elements[i].name][v].value;
              }
            }
 		        paramData = paramData + form.elements[i].name + "=" + tmpData + "||";
   		      itemsAdded.push(form.elements[i].name);
          }
	      }
//  		    paramData = paramData + form.elements[i].name + "=" + form.elements[i].value + "||";
//  		    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);
	}

/*
  // DEBUG
  if (pageArray[pg-1].api == "api_createaccount")
  {
    alert("DEBUG: " + paramData);
  }
*/

  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 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 SUBMIT ADE PROFILE results
			if (pageArray[p].api_processor == pageArray[pg_adeprofile-1].api_processor)
			{
				api_ProcessSubmitADEProfile();
			}

			// process EDIT ACCOUNT results
			if (pageArray[p].api_processor == pageArray[pg_editaccount-1].api_processor)
			{
				api_ProcessEditAccount();
			}

			// process THANK YOU results
			if (pageArray[p].api_processor == pageArray[pg_thankyou-1].api_processor)
			{
				api_ProcessMemberEntry();
			}
			
			// process VIDEO VOTE results
			if (pageArray[p].api_processor == pageArray[pg_videos-1].api_processor)
			{
				api_ProcessVideoVote();
			}

			// process STORY LOGIN USER results
			if (pageArray[p].api_processor == pageArray[pg_storylogin-1].api_processor)
			{
				api_ProcessStoryLogin();
			}

			// process STORY REGISTER results
			if (pageArray[p].api_processor == pageArray[pg_storyregister-1].api_processor)
			{
				api_ProcessStoryRegister();
			}

			// process NEWSLETTER LOGIN USER results
			if (pageArray[p].api_processor == pageArray[pg_newsletterlogin-1].api_processor)
			{
				api_ProcessNewsletterLogin();
			}

			// process NEWSLETTER REGISTER results
			if (pageArray[p].api_processor == pageArray[pg_newsletterregister-1].api_processor)
			{
				api_ProcessNewsletterRegister();
			}

			// process EXPERT LOGIN USER results
			if (pageArray[p].api_processor == pageArray[pg_expertlogin-1].api_processor)
			{
				api_ProcessExpertLogin();
			}

			// process EXPERT REGISTER results
			if (pageArray[p].api_processor == pageArray[pg_expertregister-1].api_processor)
			{
				api_ProcessExpertRegister();
			}

			// process RATE ITEM results
			if (pageArray[p].api_processor == pageArray[pg_rateitem-1].api_processor)
			{
				api_ProcessRateItem();
			}

			// process CONTACT results
			if (pageArray[p].api_processor == pageArray[pg_contact-1].api_processor)
			{
				api_ProcessContact();
			}
    }
    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);

  // set thank you page
  setCookie("rp_thankyou","sweepstakes");

  // extract the profile status and redirect accordingly
  node = l.childNodes[2];
  if (node.childNodes[0].nodeValue == "0")
  {
    redirectPage(site_thankYouPage);
  }
  else
  {
    redirectPage(site_surveyPage);
  }
}
//***********************************************
// api_ProcessLogout
//***********************************************
function api_ProcessLogout() 
{
  // set cookies
  clearCookies();

  // show the login page
  redirectPage(site_homePage);
}
//***********************************************
// 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);

  // set thank you page
  setCookie("rp_thankyou","sweepstakes");

  // redirect to survey page
  redirectPage(site_surveyPage);
}
//***********************************************
// 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() 
{
  // extract the data
  var l = rp_rootNode.childNodes[1];
  var p = l.childNodes[0];
  var ap = p.childNodes[0].nodeValue;

  // do we need to show the ADE profile?
  if ( (ap == "1") && (readCookie("rp_thankyou") == "sweepstakes") )
  {
    // redirect to the ade profile
    redirectParentPage(site_ADEProfile);
  }
  else
  {
    // show thank you page
    if (readCookie("rp_thankyou") == "sweepstakes")
    {
      redirectParentPage(site_thankYouPage);
    }
    else if (readCookie("rp_thankyou") == "expert")
    {
      redirectParentPage(site_expertThankYouPage);
    }
    else if (readCookie("rp_thankyou") == "story")
    {
      redirectParentPage(site_storyThankYouPage);
    }
    else if (readCookie("rp_thankyou") == "newsletter")
    {
      redirectParentPage(site_newsletterThankYouPage);
    }
  }
}
//***********************************************
// api_ProcessSubmitADEProfile
//***********************************************
function api_ProcessSubmitADEProfile() 
{
  // redirect to the thank you page
  redirectParentPage(site_thankYouPage);
}
//***********************************************
// api_ProcessEditAccount
//***********************************************
function api_ProcessEditAccount() 
{
  // default
  redirectPage(site_thankYouPage);
}
//***********************************************
// api_ProcessMemberEntry
//***********************************************
function api_ProcessMemberEntry() 
{
  redirectPage(site_sweepstakesThankYouPage);
}
//***********************************************
// api_ProcessVideoVote
//***********************************************
function api_ProcessVideoVote() 
{
  // extract the data and store in a cookie
  var l = rp_rootNode.childNodes[1];
  var p = l.childNodes[0];
  var voteid = p.childNodes[0].nodeValue;

  // set cookies
  document.cookie = "rp_vote_id=" + voteid +"; path=/; expires=31/12/2009 12:00:00;";
  
  // redirect to results
//  redirectPage(site_videoVoteResultsPage);
  redirectParentPage(site_videoVoteResultsPage);
}
//***********************************************
// api_ProcessStoryLogin
//***********************************************
function api_ProcessStoryLogin() 
{
  // 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);

  // set thank you page
  setCookie("rp_thankyou","story");

  // extract the profile status and redirect accordingly
  node = l.childNodes[2];
  if (node.childNodes[0].nodeValue == "0")
  {
    redirectParentPage(site_storyThankYouPage);
  }
  else
  {
    redirectParentPage(site_surveyPage);
  }
}
//***********************************************
// api_ProcessStoryRegister
//***********************************************
function api_ProcessStoryRegister() 
{
  // 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);

  // set thank you page
  setCookie("rp_thankyou","story");

  // redirect to survey page
  redirectParentPage(site_surveyPage);
}
//***********************************************
// api_ProcessNewsletterLogin
//***********************************************
function api_ProcessNewsletterLogin() 
{
  // 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);

  // set thank you page
  setCookie("rp_thankyou","newsletter");

  // extract the profile status and redirect accordingly
  node = l.childNodes[2];
  if (node.childNodes[0].nodeValue == "0")
  {
    redirectPage(site_newsletterThankYouPage);
  }
  else
  {
    redirectPage(site_surveyPage);
  }
}
//***********************************************
// api_ProcessNewsletterRegister
//***********************************************
function api_ProcessNewsletterRegister() 
{
  // 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);

  // set thank you page
  setCookie("rp_thankyou","newsletter");

  // redirect to survey page
  redirectPage(site_surveyPage);
}
//***********************************************
// api_ProcessRateItem
//***********************************************
function api_ProcessRateItem() 
{
   // show thank you page
   getPageObject(pg_rateitemthankyou);
   
   // get new results
   getPageObject(pg_ratingresults);
   
}
//***********************************************
// api_ProcessExpertLogin
//***********************************************
function api_ProcessExpertLogin() 
{
  // 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);

  // set thank you page
  setCookie("rp_thankyou","expert");

  // extract the profile status and redirect accordingly
  node = l.childNodes[2];
  if (node.childNodes[0].nodeValue == "0")
  {
    redirectParentPage(site_expertThankYouPage);
  }
  else
  {
    redirectParentPage(site_surveyPage);
  }
}
//***********************************************
// api_ProcessExpertRegister
//***********************************************
function api_ProcessExpertRegister() 
{
  // 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);

  // set thank you page
  setCookie("rp_thankyou","expert");

  // redirect to survey page
  redirectParentPage(site_surveyPage);
}
//***********************************************
// api_ProcessContact
//***********************************************
function api_ProcessContact() 
{
   // show thank you page
   getPageObject(pg_contactthankyou);
   
}





//*******************************************************************************
// 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)
{
  alert(msg);
}
//***********************************************
// 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])  );
	}
}
