/**
* JavaScript part for sending the tell-a-friend-data within an moodalbox layer
*/


// ----------------------------------------
// Wrapper function for constructing a request object.
//	Parameters:
//		reqType: The HTTP request type, such as GET or POST.
//		url: The URL of the server program.
//		asynch: Whether to send the request asynchronously or not.
// ---------------------------------------- 

function httpRequest(reqType,url,asynch,respHandle) {

	// Mozilla-based browsers
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		request = new ActiveXObject("Msxml2.XMLHTTP");
		if (!request) {
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

 	// Request could still be null if neither ActiveXObject
	//   initialization succeeded
	if (request) {
		// If the reqType param is POST, then the fifth arg is the POSTed data
		if (reqType.toLowerCase() != "post") {
			initReq(reqType, url, asynch, respHandle);
		} else {
			// The POSTed data
			var args = arguments[4];
			if (args != null && args.length > 0) {
				initReq(reqType, url, asynch, respHandle, args);
			}
		}
	} else {
		alert("Your browser does not permit the use of all " +
			"of this application's features!");
	}
}

// ----------------------------------------
// Initialize a request object that is already constructed
// ---------------------------------------- 
function initReq(reqType, url, bool, respHandle) {
	try {
		// Specify the function that will handle the HTTP response
		request.onreadystatechange = respHandle;
		request.open(reqType, url, bool);
		// If the reqType param is POST, then the
		//   fifth argument to the function is the POSTed data
		if (reqType.toLowerCase() == "post") {
			// Set the Content-Type header for a POST request
			request.setRequestHeader("Content-Type", "application/x-ww-form-urlencoded; charset=UTF-8");
			request.send(arguments[4]);
		} else {
			request.send(null);
		}
	} catch (errv) {
		alert("The application cannot contact the server at the moment. " +
			"Please try again in a few seconds.\n" +
			"Error detail: " + errv.message);
	}
}

/**
* Create string of post parameters (tell a friend)
*
* @return	String	POST string
*/
function createTAFPostParam()
{
	postString = "";
	var cForm = document.getElementById("tellafriend");
	var numElements = cForm.elements.length;
	for (var i = 0; i < numElements; i++)
	{
		if (i < numElements - 1)
		{
			postString += cForm.elements[i].name + "=" + encodeURIComponent(cForm.elements[i].value) + "&";
		} else
		{
			postString += cForm.elements[i].name + "=" + encodeURIComponent(cForm.elements[i].value);
		}
	}

	return postString;
}

/**
* Send tell a friend data form
*/
function sendTAF() 
{
	responseHandle = handleResponse;
	postString = createTAFPostParam();
	var tafDestURL = "index.php?id=weiterempfehlen&type=4&" + postString;
	httpRequest("POST", tafDestURL, true, responseHandle, postString);
}

/**
* AJAX Response handler
*/
function handleResponse() 
{
	if (request.readyState == 4) 
	{
			if (request.status == 200)
			{
				MOOdalBox.contents.setHTML(request.responseText);
			} else
			{
				MOOdalBox.contents.setHTML('<div id="form_tellafriend" class="form_tellafriend"><div class="form_error">Es ist ein Problem bei der Kommunikation mit dem Server aufgetreten.<br />Bitte probiere es später nocheinmal.</div></div>');
			}
	}
}


