function build_ajax_object(fetch_url,parameters,target_element, postProcess, tagType, preProcess)
{
	switch(preProcess)
	{
		case 1:
			break;
	}

        var xmlHttp;
        try
        {
                // Firefox, Opera 8.0+, Safari
                xmlHttp=new XMLHttpRequest();
        }
        catch (e)
        {
                // Internet Explorer
                try
                {
                        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e)
                {
                        try
                        {
                                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        catch (e)
                        {
                                alert("Your browser does not support AJAX!");
                                return false;
                        }
                }
        }

	try
	{
        xmlHttp.onreadystatechange=function()
        {
                if(xmlHttp.readyState==4)
                {
					 /* Check to see the type of data coming back */
            		var cType = xmlHttp.getResponseHeader("Content-Type");
		
            		if (cType == 'text/xml')
            		{
                		var xmlDoc = xmlHttp.responseXML;
						var rootNode=xmlDoc.getElementsByTagName('xml_content')[0];
						var children=rootNode.childNodes;

						for (i=0;i<children.length;i++)
						{
  							if (children[i].nodeType!=3)
							{
								try
								{
									if(children[i].nodeName == undefined)
										continue;

									if(children[i].childNodes[0] == undefined)
										continue;

									/* set the element */
									var element = children[i].nodeName;
	
									/* set the childValue */
									//var childValue = children[i].childNodes[0].nodeValue;
									var thisNode = children[i];//.childNodes[0];
									if(typeof(thisNode.textContent) != "undefined") childValue=thisNode.textContent;
									else childValue=thisNode.childNodes[0].nodeValue;
	
									if(element == 'action')
									 	var thisAction = childValue;
										
									/* make sure element is not null */
									if(document.getElementById(element) == null)
										continue;

									switch(tagType)
									{
										case 'value':
                       		 					document.getElementById(element).value=childValue;
										break;
										default:
                       						document.getElementById(element).innerHTML=childValue;
									}
								}
								catch(error)
								{
									alert('this error: ' + error);
								}
  							}
						} 
            		}
					else
					{
						try
						{
							switch(tagType)
							{
								case 'value':
                       				document.getElementById(target_element).value=xmlHttp.responseText;
									break;
								default:
                       				document.getElementById(target_element).innerHTML=xmlHttp.responseText;
							}
						}
						catch(error)
						{
						}
					}
					switch(thisAction)
					{
						case '1':
							document.getElementById('whoIsHere').style.display='inline';
							break;
						case '2':
							document.getElementById('whoIsHere').style.display='inline';
							changeFace();
							break;
						case '3':
							document.getElementById('whoIsHere').style.display='inline';
							changeFace();
							break;
						case '4':
							document.getElementById('whoIsHere').style.display='inline';
							 build_ajax_object('/scripts/php/ajax_call.php', '&id=8', '', '1');
							break;
						case '5':
							document.getElementById('msgHolder').style.display='none';
							top.msgWindow(Array(document.getElementById('msgHolder'), 150,200), document.getElementById('msgHolder').innerHTML, 'OK', '', '');

							parent.frames['wmShopFrame'].location.reload();

							break;
						case '6':
							document.getElementById('payPalForm').submit();
							break;
						case '7':
							document.getElementById('locDiv').style.top='0px';
							document.getElementById('locDiv').style.left='300px';
							break;
						case '8':
							document.getElementById('locDiv').style.top='125px';
							document.getElementById('locDiv').style.left='280px';
							break;
						case '9':
							document.getElementById('shopInv2').style.width=document.getElementById('setting').innerHTML;
							break;
						case '10':
							var str = document.getElementById('setting').innerHTML;
							parsedData = str.split("|-|");

							document.getElementById('convoBubble').style.top=parsedData[0]; 
							document.getElementById('convoBubble').style.left=parsedData[1]; 

							document.getElementById('convoBubble').style.visibility='visible';
							break;
					}

						/* perform the post process */
						switch(postProcess)
						{
							case '1':
								/* show event id if we have content */
								if(trim(document.getElementById('ww_event').innerHTML).length > 0)
								{
										document.getElementById('ww_event').style.display='inline';
										document.getElementById('ww_event').style.zIndex='400';
								}
								break;
							case '2':
							case 2:
								//check the cart and continue or fail
								finalCheck();
								break;
							case '3':
							case 3:
								var nonsenseDiv=document.getElementById('nonsenseDiv')
								if (nonsenseDiv != null)
								{
									var nonsenseValue=nonsenseDiv.innerHTML;
									if (nonsenseValue)
										window.location='/dazzle/complete.php?custom=' + nonsenseValue;
								}
								break;
							default:
						}
                }
        }
	}
	catch(err)
	{
		alert('error: ' + err);
	}


        xmlHttp.open("POST",fetch_url,true);
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", parameters.length);
        xmlHttp.setRequestHeader("Connection", "close");
        xmlHttp.send(parameters);
}

function trim(str, chars)
{
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars)
{
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars)
{
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
