	var loadworkingtext="<div id=\"loading-pb\" style=\" background: url(/images/basketloader.gif) no-repeat center; height: 100px; width:170px;\"></div>"
	var loadworkingtextMini="<div id=\"loading-pb\" style=\" background: url(/images/basketloader-mini.gif) no-repeat center; height: 25px; width:25px;\"></div>"

//Function to create an XMLHttp Object.
	function getxmlhttp (){
		var xmlhttp = false;
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		}
		if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
			xmlhttp = new XMLHttpRequest();
		}
		return xmlhttp;
	}

	function getxmlhttpb(){
		var xmlhttpb = false;
		try {
			xmlhttpb = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttpb = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttpb = false;
			}
		}
		if (!xmlhttpb && typeof XMLHttpRequest != 'undefined') {
			xmlhttpb = new XMLHttpRequest();
		}
		return xmlhttpb;
	}
	
	//Function to process PAGE GRABBING
	function loadurl(serverPage, objID, mce) {
		xmlhttp = getxmlhttp ();
		var obj = document.getElementById(objID);
		xmlhttp.open("GET", serverPage);
		xmlhttp.onreadystatechange = function() {
		// open takes in the HTTP method and url.  
		document.getElementById(objID).innerHTML=loadstatustext
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
				obj.innerHTML = xmlhttp.responseText;
			if (mce == 'Y') {
			TinyMCE.idCounter = 0;
			tinyMCE.execCommand('mceAddControl', false, 'txtContent');	
			}
			}
		}
		xmlhttp.send(null);
	}

	//Function to process FORM POSTS
	function processform (serverPage, objID, getOrPost, str,productidb){
		//Get an XMLHttpRequest object for use.
		xmlhttp = getxmlhttp ();
		if (getOrPost == "get"){
			xmlhttp.open("GET", serverPage);
			xmlhttp.onreadystatechange = function() {
				document.getElementById(objID).innerHTML=loadworkingtext
				if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
					obj.innerHTML = xmlhttp.responseText;
				}
			}
			xmlhttp.send(null);
			//submitformb(document.getElementById('addbasketajax_'+ productidb + ''),'/inbasket.php?product_id='+ productidb + '','basketadd'+ productidb + '');new Effect.Appear(document.getElementById('basketadd'+ productidb + ''));

		} else {
			xmlhttp.open("POST", serverPage, true);
			xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
			//xmlhttp.setRequestHeader("Content-Type","multipart/form-data");
			xmlhttp.onreadystatechange = function() {
				document.getElementById(objID).innerHTML=loadworkingtext
				if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
					obj.innerHTML = xmlhttp.responseText	
				}
			}
			xmlhttp.send(str);
			submitformb(document.getElementById('addbasketajax_'+ productidb + ''),'/inbasket.php?product_id='+ productidb + '','basketadd'+ productidb + '');new Effect.Appear(document.getElementById('basketadd'+ productidb + ''));

		}
	}

	function processformb (serverPageb, objIDb, getOrPost, strb){
		//Get an XMLHttpRequest object for use.
		xmlhttpb = getxmlhttpb();
		if (getOrPost == "get"){
			xmlhttpb.open("GET", serverPageb);
			xmlhttpb.onreadystatechange = function() {
				document.getElementById(objIDb).innerHTML=loadworkingtextMini
				if (xmlhttpb.readyState == 4 && xmlhttpb.status == 200) {
					objb.innerHTML = xmlhttpb.responseText;
				}
			}
			xmlhttpb.send(null);
		} else {
			xmlhttpb.open("POST", serverPageb, true);
			xmlhttpb.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
			xmlhttpb.onreadystatechange = function() {
				document.getElementById(objIDb).innerHTML=loadworkingtextMini
				if (xmlhttpb.readyState == 4 && xmlhttpb.status == 200) {
					objb.innerHTML = xmlhttpb.responseText	
				}
			}
			xmlhttpb.send(strb);
		}
	}


//Functions to submit a form.
	function getformvalues (fobj, valfunc){
		var str = "";
		aok = true;
		var val;
		for(var i = 0; i < fobj.elements.length; i++){
			
			if(valfunc) {
				if (aok == true){
					val = valfunc (fobj.elements[i].value,fobj.elements[i].name); 
					if (val == false){
						aok = false;
					}
				}
			}
            		if (fobj.elements[i].type == "checkbox") {
               			if (fobj.elements[i].checked) {
                  			str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
               			} else {
                  			str += fobj.elements[i].name + "=&";
               			} 

			} else if (fobj.elements[i].tagName == "SELECT") {
            			var sel = fobj.elements[i];
            			str += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
		
            		} else {
				str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
			}
		}
		return str;
	}

	function getformvaluesb(fobjb, valfuncb){
		var strb = "";
		aokb = true;
		var valb;
		for(var i = 0; i < fobjb.elements.length; i++){
			if(valfuncb) {
				if (aokb == true){
					valb = valfuncb (fobjb.elements[i].value,fobjb.elements[i].name); 
					if (valb == false){
						aokb = false;
					}
				}
			}
            		if (fobjb.elements[i].type == "checkbox") {
               			if (fobjb.elements[i].checked) {
                  			strb += fobjb.elements[i].name + "=" + escape(fobjb.elements[i].value) + "&";
               			} else {
                  			strb += fobjb.elements[i].name + "=&";
               			} 
			} else if (fobjb.elements[i].tagName == "SELECT") {
            			var sel = fobjb.elements[i];
            			strb += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
            		} else {
				strb += fobjb.elements[i].name + "=" + escape(fobjb.elements[i].value) + "&";

			}
		}
		return strb;
	}

	function submitformb (theformb, serverPageb, objIDb, valfuncb){
		var file = serverPageb;
		var strb = getformvaluesb(theformb,valfuncb);
		//If the validation is ok.
		if (aokb == true){
			objb = document.getElementById(objIDb);
			processformb (serverPageb, objIDb, "post", strb);
		}
	}	
	
	function submitform (theform, serverPage, objID, valfunc,productidb){
		var file = serverPage;
		var str = getformvalues(theform,valfunc);
		//If the validation is ok.
		if (aok == true){
			obj = document.getElementById(objID);
			processform (serverPage, objID, "post", str, ''+ productidb +'');
		}
	}
	
	//Function to set a loading status.
	function weWorking(theObj) {
		obj = document.getElementById(theObj);
		if (obj){
			obj.innerHTML = loadworkingtext
		}
	}


function em_validator(theForm,productid) {

if (theForm.gc_msg.value=="" || theForm.gc_msg.value=="") {
    alert("Please enter a value for the \"Message for recipient\" field.");
    theForm.gc_msg.focus();
    return (false);
  }
  
   if ((theForm.gc_msg.value.length > 255)){
    alert("Please shorten your message to 255 chars");
    theForm.gc_msg.focus();
    return false;
  }

  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ0123456789'-,.!?() \n";
  var checkStr = theForm.gc_msg.value;
  var allValid = true;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  if (!allValid)
  {
    alert("Please enter only letters, digits, spaces, and \" '-,.!? \" characters in the \"Message for Recipient\" field.");
    theForm.gc_msg.focus();
    return (false);
  }

 if (theForm.gc_email.value=="")
  {
    alert("Please enter a value for the \"Recipient Email\" field.");
    theForm.gc_email.focus();
    return (false);
  }

  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ0123456789-_@.";
  var checkStr = theForm.gc_email.value;
  var allValid = true;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  if (!allValid)
  {
    alert("Please enter only letter, digit and \" @ . \" characters in the \"Email\" field.");
    theForm.gc_email.focus();
    return (false);

  }

  if ((theForm.gc_email.value.length < 6)|| (theForm.gc_email.value.indexOf('@') == -1)||
(theForm.gc_email.value.indexOf('.') == -1)||
    ((theForm.gc_email.value.indexOf('@')+1) == theForm.gc_email.value.length)||
((theForm.gc_email.value.indexOf('.')+1) ==theForm.gc_email.value.length)){
    alert("Please enter a valid email address");
    theForm.gc_email.focus();
    return false;
  }


  if (theForm.conf_gc_email.value == "")
  {
    alert("Please verify the recipient email address in the \"Confirm Recipient Email\" field.");
    theForm.conf_gc_email.focus();
    return (false);
  }

  if (theForm.gc_email.value!=theForm.conf_gc_email.value)
  {
    alert("The email addresses do not match, please check them.");
    theForm.gc_email.focus();
    return (false);
  }

  submitform(document.getElementById('addbasketajax_pm'+ productid + ''),'/bin/addtobasket-jax.php?product_id='+ productid + '&ajax=y','basketTabi','',''+ productid + '');
  new Effect.Appear(document.getElementById('basketTabi'));
  //submitformb(document.getElementById('addbasketajax_'+ productid + ''),'/inbasket.php?product_id='+ productid + '','basketadd'+ productid + '');
  //new Effect.Appear(document.getElementById('basketadd'+ productid + ''));

  return (true);

}

