var formerrormsg="Please wait for your order to be processed. It may take a while because the system has to connect to your bank to veryfy your card details.";

function checksubmit(submitbtn)
{
  submitbtn.form.submit();
  checksubmit=blocksubmit;
  return false;
}         
          
function blocksubmit()
{
  if(typeof formerrormsg!="undefined");
  alert(formerrormsg);
  return false;
}

function showPromoSelect(cat_num)
{
    cur = getElement('promo_select_'+cat_num).style.display;

    if(cur == 'none')
        getElement('promo_select_'+cat_num).style.display = 'block';
    if(cur == 'block')
        getElement('promo_select_'+cat_num).style.display = 'none';

    return false;
}

function choosePromoPrize(promo_id,cat_num,url)
{
    cat_num = escape(cat_num);
    window.location = url+'?prize_promo_id='+promo_id+'&cat_num='+cat_num+'#promo_link_'+cat_num;
}

function showPrizeSelect(promo_id)
{
    cur = getElement('promo_prizes_'+promo_id).style.display;

    if(cur == 'none')
        getElement('promo_prizes_'+promo_id).style.display = 'block';
    if(cur == 'block')
        getElement('promo_prizes_'+promo_id).style.display = 'none';

    return false;
}

function removePromoPrize(promo_id,cat_num)
{
    do_it = confirm('Are you sure you wish to remove '+cat_num);

    if(do_it)
        window.location = '/promos.php?promos_id='+promo_id+'&remove_cat_num='+escape(cat_num);
}

function popUpAdmin ( queryString, width, height, url )
{
  if(!width)
    width = '775';

  if(!height)
    height = '700';

  if(!url)
    url = 'admin.php';

  //alert('/'+url+'?' + queryString);
  //alert('resizable=yes,scrollbars=yes,width='+width+',height='+height);
  cmsWindow = window.open('/'+url+'?' + queryString, 'newWin', 'resizable=yes,scrollbars=yes,width='+width+',height='+height);

  return false;
}


function swap_menu_image ( menuImageId, state )
{
  //alert ( aMenuImages );
  document.getElementById ( 'menu_' + menuImageId ).src = eval ( 'aMenuImages' + state + '[' + menuImageId + '].src' );
}

function swap_button_image ( buttonImageName, buttonImageId, state )
{
  //if(state==''){alert(eval(buttonImageName + state + '.src'));}
  document.getElementById ( buttonImageId ).src = eval ( buttonImageName + state + '.src' );
}


function checkPromoForm()
{
    reEmail = /^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/i;
    if( !promoFormValue('user_name'))
        return promoFormError('user_name','Please enter your name');
    if( !promoFormValue('user_email').match( reEmail ) )
        return promoFormError('user_email','Please enter a valid email address');
}

function promoFormError(name,message)
{
    document.promoForm.elements[name].blur();
    document.promoForm.elements[name].focus();
    alert(message);
    return false;
}

function promoFormValue(name)
{
    return document.promoForm.elements[name].value;
}

function checkForm(){

  //alert(document.profileForm.elements['props[category]'].value);
  //alert(document.profileForm.elements['ignore_payment_details'].value);
  //return false;

  //card number, expiry, shipping_state & shipping_country
  if(userType=="staff")
  {
    return true;
  }

  // DEFINE THE RE AND StrING TO CHECK FOR A VALID EMAIL BELOW
  reEmail = /^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/i;
  email = document.profileForm.elements['props[email]'].value;

  if( document.profileForm.elements['props[category]'].value != 'rep' )
  {
    reCard = /^(\*\*\*\*\*\*\*\*\*\*\*)*[0-9]+$/;
    //alert ( document.profileForm.elements['props[card_number]'] );
    cardNo = document.profileForm.elements['props[card_number]'].value;
  }

  // THE REGULAR EXPRESSION AND email ARE DEFINED AT THE START
  // OF THIS FUNCTION
  if( !email.match ( reEmail ) )
  {
    alert("Please supply a valid email address.");
    document.profileForm.elements['props[email]'].value = "";
    document.profileForm.elements['props[email]'].blur();
    document.profileForm.elements['props[email]'].focus();
    return false;
  // NAME
  }
  else if( document.profileForm.elements['props[name]'].value == "" )
  {
    alert("Please tell us your full name.");
    document.profileForm.elements['props[name]'].blur();
    document.profileForm.elements['props[name]'].focus();
    return false;

  // BILLING STREET ADDRESS
  }
  else if( 
            document.profileForm.elements['props[billing_street_address_1]'].value == "" &&
            document.profileForm.elements['props[billing_street_address_2]'].value == "" &&
            document.profileForm.elements['props[billing_street_address_3]'].value == "" &&
            document.profileForm.elements['props[billing_street_address_4]'].value == ""
          )
  {
    alert("Please tell us your billing street address.");
    document.profileForm.elements['props[billing_street_address_1]'].blur();
    document.profileForm.elements['props[billing_street_address_1]'].focus();
    return false;

  // BILLING SUBURB 
  }
  else if( document.profileForm.elements['props[billing_suburb]'].value == "" )
  {
    alert("Please tell us your billing address suburb/town.");
    document.profileForm.elements['props[billing_suburb]'].blur();
    document.profileForm.elements['props[billing_suburb]'].focus();
    return false;

  // BILLING STATE 
  }
  else if( document.profileForm.elements['props[billing_state]'].value == "" )
  {
    alert("Please tell us your billing address state.");
    document.profileForm.elements['props[billing_state]'].blur();
    document.profileForm.elements['props[billing_state]'].focus();
    return false;

  // BILLING POST CODE 
  }
  else if( document.profileForm.elements['props[billing_post_code]'].value == "" )
  {
    alert("Please tell us your billing address post code.");
    document.profileForm.elements['props[billing_post_code]'].blur();
    document.profileForm.elements['props[billing_post_code]'].focus();
    return false;

  // BILLING COUNTRY 
  //}
  //else if( document.profileForm.elements['props[billing_country]'].value == "" )
  //{
  //  alert("Please tell us your billing address country.");
  //  document.profileForm.elements['props[billing_post_code]'].blur();
  //  document.profileForm.elements['props[billing_post_code]'].focus();
  //  return false;
  //
  //}
  //else if( !cardNo.match ( reCard ) )
  //{
  //  alert ( cardNo );
  //  return false;
  //
  // CARD NAME 
  }
  else if( document.profileForm.elements['props[category]'].value != 'rep' && document.profileForm.elements['ignore_payment_details'].value == '0' )
  {
    if( document.profileForm.elements['props[card_name]'].value == "" )
    {
      //alert (document.profileForm.elements['props[category]'].value);
      alert("Please tell us the name that appears on your credit card.");
      document.profileForm.elements['props[card_name]'].blur();
      document.profileForm.elements['props[card_name]'].focus();
      return false;

    // CARD NUMBER 
    }
    else if( !cardNo.match ( reCard ) )
    {
      alert("Your card number should not have any spaces or other weird characters - just numbers please.");
      document.profileForm.elements['props[card_number]'].blur();
      document.profileForm.elements['props[card_number]'].focus();
      return false;
  
    // CARD NUMBER 
    }
    else if( document.profileForm.elements['props[card_number]'].value == "" )
    {
      alert("Please tell us your credit card number.");
      document.profileForm.elements['props[card_number]'].blur();
      document.profileForm.elements['props[card_number]'].focus();
      return false;
    }

  // SHIPPING STREET ADDRESS
  }

  if(
            document.profileForm.elements['props[shipping_street_address_1]'].value == "" &&
            document.profileForm.elements['props[shipping_street_address_2]'].value == "" &&
            document.profileForm.elements['props[shipping_street_address_3]'].value == ""
          )
  {
    alert("Please tell us your shipping street address.");
    document.profileForm.elements['props[shipping_street_address_1]'].blur();
    document.profileForm.elements['props[shipping_street_address_1]'].focus();
    return false;
  
  // SHIPPING SUBURB
  } 
  else if( document.profileForm.elements['props[shipping_suburb]'].value == "" )
  { 
    alert("Please tell us your shipping address suburb/town.");
    document.profileForm.elements['props[shipping_suburb]'].blur();
    document.profileForm.elements['props[shipping_suburb]'].focus();
    return false;

  // SHIPPING STATE
  }
  else if( document.profileForm.elements['props[shipping_state]'].value == "" )
  {
    alert("Please tell us your shipping state.");
    document.profileForm.elements['props[shipping_state]'].blur();
    document.profileForm.elements['props[shipping_state]'].focus();
    return false;

  // SHIPPING POST CODE
  }
  else if( document.profileForm.elements['props[shipping_post_code]'].value == "" )
  {
    alert("Please tell us your shipping address post code.");
    document.profileForm.elements['props[shipping_post_code]'].blur();
    document.profileForm.elements['props[shipping_post_code]'].focus();
    return false;

  // SHIPPING COUNTRY
  }
  else if( document.profileForm.elements['props[shipping_country]'].value == "" )
  {
    alert("Please tell us your shipping address country.");
    document.profileForm.elements['props[shipping_country]'].blur();
    document.profileForm.elements['props[shipping_country]'].focus();
    return false;
  }
}

var aCountries = new Array ( "Afghanistan", "Albania", "Algeria", "Andorra", "Angola", "Anguilla", "Antigua and Barbuda", "Argentina", "Armenia", "Ascension + St Helena", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia-Herzegovina", "Botswana", "Brazil", "British Indian Ocean Terr", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burma", "Burundi", "Cambodia", "Cameroon", "Canada", "Canary Is.", "Cape Verde", "Caroline Is.", "Cayman Is.", "Central African Rep.", "Chad", "Chile", "China", "Colombia", "Comoros", "Congo", "Congo, Dem Rep", "Cook Is.", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica", "Dominican Rep.", "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Falkland Is. (Malvinas)", "Faroe Is.", "Fiji", "Finland", "France", "French Guiana", "French Polynesia", "Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Hawaii", "Honduras", "Hong Kong, China", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Ivory Coast", "Jamaica", "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, Democratic  People's Rep. of (North)", "Korea, Rep. of (South)", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libyan Arab Jamahiriya", "Liechtenstein", "Lithuania", "Luxembourg", "Macao, China", "Macedonia (the former Yugoslav Republic of)", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Mariana Is.", "Marshall Islands", "Martinique", "Mauritania", "Mauritius", "Mexico", "Micronesia, Fed. States of", "Moldova", "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "Netherlands Antilles and Aruba", "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue (New Zealand)", "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn Is.", "Poland", "Portugal", "Puerto Rico", "Qatar", "Reunion", "Romania", "Russia", "Rwanda", "Ryukyu Is.", "Samoa", "Samoa, American", "San Marino", "Sao Tome & Principe", "Saudi Arabia", "Senegal", "Serbia and Montenegro", "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Is.", "Somalia", "South Africa", "Spain", "Sri Lanka", "St. Christopher & Nevis", "St. Lucia", "St. Pierre & Miquelon", "St. Vincent & the Grenadines", "Sudan", "Suriname", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "Togo", "Tokelau Is. (New Zealand)", "Tonga", "Trinidad & Tobago", "Tristan Da Cunha", "Tunisia", "Turkey", "Turkmenistan", "Turks & Caicos Is.", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "Uruguay", "USA", "Uzbekistan", "Vanuatu", "Vatican City State", "Venezuela", "Vietnam", "Virgin Is. (British)", "Virgin Is. (USA)", "Wallis and Futuna Is.", "Yemen Republic", "Zaire", "Zambia", "Zimbabwe" );

var ua        = navigator.userAgent.toLowerCase(); 
var is_pc_ie  = ( (ua.indexOf('msie') != -1 ) && ( ua.indexOf('win') != -1 ) && ( ua.indexOf('opera') == -1 ) && ( ua.indexOf('webtv') == -1 ) );

function setFlashVariables(movieid, flashquery){

        //return true;

        //alert("movieid ==" + movieid);

        //alert("setFlashVariables");

	var i,values;
	if(is_pc_ie){
		var chunk = flashquery.split("&");
		for(i in chunk){
                        //alert(chunk[i]);
			values = chunk[i].split("=");
                        //alert(values);
                        //alert(movieid);
                        //alert(document.movieid);
			document[movieid].SetVariable(values[0],values[1]);
        return false;
		}
	}else{
		var divcontainer = "flash_setvariables_"+movieid;

		if(!document.getElementById(divcontainer)){
			var divholder = document.createElement("div");
			divholder.id = divcontainer;
			document.body.appendChild(divholder);
		}else{

                  //alert(divcontainer + " HAS BEEN FOUND");

                }
		document.getElementById(divcontainer).innerHTML = "";
		var divinfo = "<embed src='/gateway.swf' FlashVars='lc="+movieid+"&fq="+escape(flashquery)+"' width='0' height='0' type='application/x-shockwave-flash'></embed>";
		document.getElementById(divcontainer).innerHTML = divinfo;
	}

        //alert(document.getElementById(divcontainer).innerHTML);

        //alert(document.getElementById(divcontainer).innerHTML);

        return false;
}

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
jsVersion = 1.1;
// JavaScript helper required to detect Flash Player PlugIn version information
function JSGetSwfVer(i){

	var descArray;
	var tempArrayMajor;
	var tempArrayMinor;
	var versionMajor;
	var versionMinor;
      	var versionRevision;
	var flashVer;

	// NS/Opera version >= 3 check for Flash plugin in plugin array
	if(navigator.plugins != null && navigator.plugins.length > 0){
		if(navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]){
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			descArray = flashDescription.split(" ");
			tempArrayMajor = descArray[2].split(".");
			versionMajor = tempArrayMajor[0];
			versionMinor = tempArrayMajor[1];
			if( descArray[3] != "" ){
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
      		versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
            flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
      	} else {
			flashVer = -1;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if(navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if(navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if(navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	// Can't detect in all other cases
	else {
		
		flashVer = -1;
	}
	return flashVer;
} 
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) 
{
	var ret;
	var versionStr;
	var versionArray;
	var versionMajor;
	var versionMinor;
	var versionRevision;
	var versionString;
	var versionNum;

 	var reqVer = parseFloat(reqMajorVer + "." + reqRevision);
   	// loop backwards through the versions until we find the newest version	
	for(var i=25;i>0;i--){	
		if(isIE && isWin && !isOpera){
			versionStr = VBGetSwfVer(i);
			//alert(versionStr);
		} else {
			versionStr = JSGetSwfVer(i);		
		}
		if(versionStr == -1 ){ 
			return false;
		} else if(versionStr != 0){
			if(isIE && isWin && !isOpera){
				tempArray         = versionStr.split(" ");
				tempString        = tempArray[1];
				versionArray      = tempString .split(",");				
			} else {
				versionArray      = versionStr.split(".");
			}
			versionMajor      = versionArray[0];
			versionMinor      = versionArray[1];
			versionRevision   = versionArray[2];
			
			versionString     = versionMajor + "." + versionRevision;   // 7.0r24 == 7.24
			versionNum        = parseFloat(versionString);
        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
			if( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ){
				return true;
			} else {
				return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );	
			}
		}
	}	

	return ret;
}

/**
/* A wrapper for document.getElementById() which doesn't work in older versions of IE
**/
function getElement(id)
{
    if(document.all)
    {
    return eval("document.all['" + id + "']");

    }
    else
    {
         return document.getElementById(id);
    }
}

function get_genres()
{
	//alert("get_next_image()");

	objRequester = initialise_request_object();		

	objRequester.onreadystatechange = requester_execute_get_genres;

	//alert(direction);
	objRequester.open("GET", '/ajax_genres.php'); //view is set in inc.header.tpl

	//objRequester.open("GET", "/ajax_next_image.php");
	objRequester.send(null);

	return true; 
}

function load_genres()
{
	if(objRequester.responseText.charAt(0) == "<")
	{
		var genreTD = getElement('genre-td');

		selectInnerHTML = '<select id="genre-select" name="genre" class="browse"><option value="all">all genres</option>';

		for(var i = 0; objRequester.responseXML.getElementsByTagName("genre")[i]; i++)
		{
			selectInnerHTML = selectInnerHTML + "<option>" + objRequester.responseXML.getElementsByTagName('genre')[i].childNodes[0].nodeValue + "</option>\n";
		}

		selectInnerHTML = selectInnerHTML + '</select>';

		//alert(selectInnerHTML);

		genreTD.innerHTML = selectInnerHTML;
	}
	return true;
}

function get_labels()
{
	//alert("get_next_image()");

	objRequester = initialise_request_object();		

	objRequester.onreadystatechange = requester_execute_get_labels;

	//alert(direction);

	objRequester.open("GET", '/ajax_labels.php'); //view is set in inc.header.tpl

	//objRequester.open("GET", "/ajax_next_image.php");
	objRequester.send(null);

	return true; 
}

function load_player(divID,host,vPlayTrack)
{
	var playerDiv = getElement(divID);
	//alert(divID);
	////alert(playerDiv);

	var innerFlash = '<object  id="sendmovie" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="584" height="58">' +
		'<param name="movie" value="/player.swf?vRemotingURL='+host+'&vPlayTrack='+vPlayTrack+'">' +
		'<param name="quality" value="high">' +
		'<param name="wmode" value="transparent">' +
		'<param name="FlashVars" value="movieid=sendmovie" />' +
		'<embed id="sendmovie" src="/player.swf?vRemotingURL='+host+'&vPlayTrack='+vPlayTrack+'" FlashVars="movieid=sendmovie" wmode="transparent" quality="high" pluginspage="https://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="584" height="58"></embed>' +
	'</object>';
	//alert(innerFlash);
	//alert(playerDiv.offsetTop);

	var topDiv = getElement('main_frame_div');
	//alert(topDiv);

	self.scrollTo(0,playerDiv.offsetTop + topDiv.offsetTop);

	playerDiv.innerHTML = innerFlash;
	return false;
}

function load_labels()
{
	if(objRequester.responseText.charAt(0) == "<")
	{
		var labelTD = getElement('label-td');

		//alert(labelTD);

		selectInnerHTML = '<select id="label-select" name="label" class="browse"><option value="all">all labels</option>';

		for(var i = 0; objRequester.responseXML.getElementsByTagName("label")[i]; i++)
		{
			selectInnerHTML = selectInnerHTML + "<option>" + objRequester.responseXML.getElementsByTagName('label')[i].childNodes[0].nodeValue + "</option>\n";
		}

		selectInnerHTML = selectInnerHTML + '</select>';

		//alert(selectInnerHTML);

		labelTD.innerHTML = selectInnerHTML;
	}
	return true;
}

function get_countries()
{
	//alert("get_next_image()");

	objRequester = initialise_request_object();		

	objRequester.onreadystatechange = requester_execute_get_countries;

	//alert(direction);

	objRequester.open("GET", '/ajax_countries.php'); //view is set in inc.header.tpl

	//objRequester.open("GET", "/ajax_next_image.php");
	objRequester.send(null);

	return true; 
}

function load_countries()
{
	if(objRequester.responseText.charAt(0) == "<")
	{
		var countryTD = getElement('country-td');

		selectInnerHTML = '<select id="country-select" name="country" class="browse">';

		for(var i = 0; objRequester.responseXML.getElementsByTagName("country")[i]; i++)
		{
			selectInnerHTML = selectInnerHTML + "<option>" + objRequester.responseXML.getElementsByTagName('country')[i].childNodes[0].nodeValue + "</option>\n";
		}

		selectInnerHTML = selectInnerHTML + '</select>';

		//alert(selectInnerHTML);

		countryTD.innerHTML = selectInnerHTML;
	}
	return true;
}

/**
/*	Sends GET data to the "serverScript" specified.
/*	Note: "globalAction" is globall declared below, just above
/* 	the "requester_execute_action" function. I'm using a global because 
/* 	I can't seem to pass the name of the function
/*	to "requester_execute_action" when it is the action of the 
/*	"onreadystatechange" event handler.
**/
function submit_get(serverScript,form,functionName)
{
	//alert("submit_get()");

	globalAction = functionName;

	if(form)
	{
		//	Get the form data into key value pairs
		form = form.elements //first get an array of all form elements.
	
		keyValuePairs = '';

		for(i=0;i<form.length;i++)
		{
			if(keyValuePairs!='')
			{
				keyValuePairs = keyValuePairs+'&';
			}
			var key = form[i].name;
			var val = form[i].value;

			keyValuePairs = keyValuePairs+key+'='+val;
		}
	}
	else
	{
			keyValuePairs = 'logout=1';
	}

	objRequester = initialise_request_object();		

	objRequester.onreadystatechange = requester_execute_action;

	objRequester.open("GET", "/"+serverScript+'?'+keyValuePairs);

	//objRequester.open("GET", "/ajax_next_image.php");
	objRequester.send(null);

	return false; 
}

/**
/*	This is the general execute action function that operates
/*	on the globlly declared "globalAction" var.
**/

var globalAction = '';

function requester_execute_action()
{
	/* If XMLHR object has finished retrieving the data */
	if(objRequester.readyState == 4)
	{
		/* If the data was retrieved successfully */
		if( objRequester.status == 200)
		{
			//alert("requester_execute_action(): objRequester.readyState == "+objRequester.readyState);
			eval(globalAction); // Defined above
		}
		/* I	E returns a status code of 0 on some occasions, so ignore this case */
		else if(objRequester.status != 0)
		{
			alert("There was an error while retrieving the URL: " + requester.statusText);
		}
	}
	return true;
}

function requester_execute_get_genres()
{
	/* If XMLHR object has finished retrieving the data */
	if(objRequester.readyState == 4)
	{
		/* If the data was retrieved successfully */
		if( objRequester.status == 200)
		{
			//alert("requester_execute_action(): objRequester.readyState == "+objRequester.readyState);
			load_genres();
		}
		/* I	E returns a status code of 0 on some occasions, so ignore this case */
		else if(objRequester.status != 0)
		{
			alert("There was an error while retrieving the URL");
		}
	}
	return true;
}

function requester_execute_get_labels()
{
	/* If XMLHR object has finished retrieving the data */
	if(objRequester.readyState == 4)
	{
		/* If the data was retrieved successfully */
		if( objRequester.status == 200)
		{
			//alert("requester_execute_action(): objRequester.readyState == "+objRequester.readyState);
			load_labels();
		}
		/* I	E returns a status code of 0 on some occasions, so ignore this case */
		else if(objRequester.status != 0)
		{
			alert("There was an error while retrieving the URL: " + requester.statusText);
		}
	}
	return true;
}

function requester_execute_get_countries()
{
	/* If XMLHR object has finished retrieving the data */
	if(objRequester.readyState == 4)
	{
		/* If the data was retrieved successfully */
		if( objRequester.status == 200)
		{
			//alert("requester_execute_action(): objRequester.readyState == "+objRequester.readyState);
			load_countries();
		}
		/* I	E returns a status code of 0 on some occasions, so ignore this case */
		else if(objRequester.status != 0)
		{
			alert("There was an error while retrieving the URL: " + requester.statusText);
		}
	}
	return true;
}

function initialise_request_object()
{

	/* Check for running connections */
 	if(objRequester != null && objRequester.readyState != 0 && objRequester.readyState != 4)
  	{
		objRequester.abort();
	}

	try
	{
 		var objRequester = new XMLHttpRequest();
 	}
 	catch (error)
 	{
  		try
   		{
      		var objRequester = new ActiveXObject("Microsoft.XMLHTTP");
	   	}
	    catch (error)
		{
		    var objRequester = false;
		}
	}

	return objRequester;
}

var ShipAddress1 = "";
var ShipAddress2 = "";
var ShipSuburb = "";
var ShipPostcode = "";
var ShipState = "";

function InitSaveVariables(form){
ShipAddress1 = getElement("ShipAddress1").value;
ShipAddress2 = getElement("ShipAddress2").value;
ShipSuburb = getElement("ShipSuburb").value;
ShipPostcode = getElement("ShipPostcode").value;
ShipState = getElement("ShipState").value;
}

function ShipToBillPerson(form){
if(form.copy.checked){
InitSaveVariables(form);
getElement("ShipAddress1").value = getElement("BillAddress1").value;
getElement("ShipAddress2").value = getElement("BillAddress2").value;
getElement("ShipSuburb").value = getElement("BillSuburb").value;
getElement("ShipPostcode").value = getElement("BillPostcode").value;
getElement("ShipState").value = getElement("BillState").value;
getElement("ShipCountry").selectedIndex = getElement("BillCountry").selectedIndex;
}
else {
getElement("ShipAddress1").value = ShipAddress1;
getElement("ShipAddress2").value = ShipAddress2;
getElement("ShipSuburb").value = ShipSuburb;
getElement("ShipPostcode").value = ShipPostcode;
getElement("ShipState").value = ShipState;
getElement("ShipCountry").selectedIndex = 0;
   }
}

var answerCount = 0; // Globally declared counter for validating based on number of fields filled in (below)
var countingFields = false;

function validate(f)
{

	var vFlag = true; //initalise vFlag 

	var form = f.elements //first get an array of all form elements.

//        var reFieldCount = /street/i; // A re to text for fields that need to be counted

	//the form elements that need validating have a div with an id name of 'fieldnameTip'.
	//so, to 'dynamically' find out which elements need validation, 'test' the existence
	//of a Div with the name 'fieldnameTip'. If the div exists, the form field needs validation. 
	for(i=0;i<form.length;i++)
	{
            var fieldName = form[i].name;
      
	    var re = /props\[|\]/g;

	    var baseFieldName = fieldName.replace(re, '');

            //alert(baseFieldName);

	    var tipDiv = getElement(baseFieldName+"Tip");

//            if(baseFieldName.match(reFieldCount))
//	    {
//		alert(baseFieldName+" is to be counted");
//                countingFields = true;
//
//		if(checkForValue(form[i],baseFieldName,tipDiv) == true)
//		{
//		    alert(baseFieldName+" has a value counted");
//    	            ++answerCount;
//                }
//                else
//                {
//		    //alert(baseFieldName+" does not have  a value counted");
//                }
//	    }
//	    else 
            if(tipDiv != null)
	    {
            	//alert("checking for value of "+baseFieldName);

		//div exists! so validate the element.
		if(checkForValue(form[i],baseFieldName,tipDiv) == false)
		{
		    vFlag = false;
            	    //alert("vFlag is false");
		}
	    }
	}

//	if(countingFields && !(answerCount >= 4))
//	{
//		        //alert("answerCount = "+answerCount);
//			vFlag = false;
//	}

// THIS GOES BELOW THE NEXT IF STATEMENT
//	else if(countingFields && !vFlag) // If the function is going to return true
//	{
//	    setTip("form-message2-div","block");
//		window.scrollTo(0,0);
//	}
	if(vFlag) // If the function is going to return true
	{
	    setTip("form-message-div","none");

	}
	else // If the function is going to return false
	{
	    setTip("form-message-div","block");
		window.scrollTo(0,0);
		//alert("vFalg is false");
	}

//        answerCount = 0; // Reset globally declared counter for validating based on number of fields filled in (below)

	return vFlag;
}

function checkForValue(field,baseFieldName,tipDiv)
{
        //alert("checkForValue()");

	var eFlag = true;

    // DEFINE THE RE AND StrING TO CHECK FOR A VALID EMAIL BELOW
    var reEmail = /^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/i;
    var email = field.value;

    // THE REGULAR EXPRESSION AND email ARE DEFINED AT THE START
    // OF THIS FUNCTION

    if((baseFieldName == 'email' || baseFieldName == 'user_email')  && !email.match(reEmail))
    {
	setTip((baseFieldName+"Tip"),"block");
	eFlag = false;
    }
    else if(baseFieldName == 'user_entry' && field.value == "")
    {
       setTip((baseFieldName+"Tip"),"block");
       eFlag = false;
    }
    else if(baseFieldName == 'user_entry' && field.value.match (/\S+/g).length > 25 )
    {
        setTip((baseFieldName+"Tip"),"block");
        eFlag = false;
    }
    else if(field.value != "")
    {
	if(tipDiv != null)
	{
	    setTip((baseFieldName+"Tip"),"none");
	}
    }
    else
    {
	if(tipDiv != null)
	{
	    setTip((baseFieldName+"Tip"),"block");
  	}
        //alert("field.value == ''");
	eFlag = false;
    }

    return eFlag;
}

function setTip(id,state)
{
	//alert("setTip checking "+id+" : "+getElement(id));
	getElement(id).style.display = state;		
}

function viewComp(id,host)
{
    if(id != 'nil')
        window.location = 'http://'+host+'/game_of_skill/'+id;
}
