function buildAjax(fetch_url,parameters,target_element, postProcess, tagType, preProcess)
{
	switch(preProcess)
	{
		case 1:
			gebid('infoDiv').innerHTML='';
			break;
		case 2:
			gebid('contactInfoDiv').innerHTML='<img id="thisContactUsLoader" class="ajax-loader" alt="Sending ..." src="/images/ajax-loader.gif"/>';
			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')
									{
									 	if(theseActions)
										{
											theseActions = theseActions + ',' + childValue;
										}
										else
										{
									 		var theseActions = 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)
						{
						}
					}

					// set thisAction to an array
					if(theseActions)
					{
						thisAction = theseActions.split(",");
					}

					/* loop through actions */
					for(i in thisAction)
					{
						switch(thisAction[i])
						{
							case 1:
							case '1':
								gebid('contactInfoDiv').style.color='red';
								break;
							case 2:
							case '2':
								gebid('contactInfoDiv').style.color='green';
								gebid('yourName').value='';
								gebid('yourEmail').value='';
								gebid('yourSubject').value='';
								gebid('yourMessage').value='';
								break;
							case 3:
							case '3':
								gebid('newsLetterDiv').style.color='green';
								gebid('newsLetterEmail').value='Enter your email address';
								break;
							case 4:
							case '4':
								gebid('newsLetterDiv').style.color='red';
								break;
							case 5:
							case '5':
								gebid('searchAhead').style.display='block';
								break;
							case 6:
							case '6':
								gebid('tagName').value='';
								gebid('tagSearchAhead').style.display='none';
								break;
							case 7:
							case '7':
								gebid('tagSearchAhead').style.display='block';
								break;

							default:
							}
						}

						/* perform the post process */
						switch(postProcess)
						{
							case 1:
							case '1':
								break;
							default:
								break;
						}

					var thisAction = null;
                }
        }
	}
	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"), "");
}

function hideDiv(elementId)
{
	try
	{
		if(document.getElementById(elementId))
		{
			document.getElementById(elementId).style.display='none';
		}
	}
	catch(err)
	{
	}

	return;
}

function clearDiv(elementId)
{
	try
	{
		if(document.getElementById(elementId))
		{
			document.getElementById(elementId).innerHTML='';
		}
	}
	catch(err)
	{
	}

	return;
}

function setInnerHtml(divId, html)
{
	try
	{
		document.getElementById(divId).innerHTML=html;
	}
	catch(err)
	{
	}
}

function gebid(id)
{
    return document.getElementById(id);
}

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"), "");
}

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

