/**
 * Create url parameters from form values
 * 
 * @param form_id Form id
 * @returns {String} url parameters
 */
function getRequestAttribute(form_id) {
	var form = document.getElementById(form_id);
	var attribute = "";
	var select_fields = form.getElementsByTagName("select");
	// Select-Felder
	for ( var i = 0; i < select_fields.length; i++) {
		attribute = attribute
				+ "&"
				+ select_fields[i].name
				+ "="
				+ select_fields[i].options[select_fields[i].options.selectedIndex].value;
	}
	// Input-Felder
	var input_fields = form.getElementsByTagName("input");
	for ( var i = 0; i < input_fields.length; i++) {
		if (input_fields[i].type == "checkbox") {
			if (input_fields[i].checked == true) {
				attribute = attribute + "&" + input_fields[i].name + "="
						+ input_fields[i].value;
			}
		} else {
			attribute = attribute + "&" + input_fields[i].name + "="
					+ input_fields[i].value;
		}
	}
	return attribute;
}

/**
 * Generates a ajax request from form data
 * 
 * @param url The url of the request
 * @param form_id Form id
 * @param processReq Callback function
 * @returns void
 */
function genAjaxFormSubmit(url, form_id, processReq) {
	var attribute = getRequestAttribute(form_id);
	// alert(attribute);
	// window.open(url+attribute,"","");
	sendAjaxRequest(url + attribute, processReq);
}

/**
 * Send a ajax request
 * 
 * @param url The url for the request
 * @param processReq Callback function
 * @returns void
 */
function sendAjaxRequest(url, processRequest, div) {
	replaceDiv = div;
	request = createXMLHttpRequest();
	request.onreadystatechange = processRequest;
	request.open("GET", url, true);
	request.send(null);
}

/**
 * Wrapper for creating a XML ajax http request
 * 
 * @returns {Request} XMLHttpRequest-Object
 */
function createXMLHttpRequest() {
	return AJAXcreateXMLHttpRequest();
}


/**
 * Creates a XML ajax http request
 * 
 * @returns {Request} XMLHttpRequest-Object
 */
function AJAXcreateXMLHttpRequest() {
	var request;
	try {
		request = new XMLHttpRequest();
	} catch (e) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = null;
				alert("kein Ajax Request");
			}
		}
	}
	return request;
}


/**
 * Process ajax cart request
 * 
 * @returns void
 */
function processAjaxRequestCart() {
	if (request.readyState == 4 && request.status == 200) {
		if(replaceDiv == 'shopping_cart') {
			document.getElementById('shopping_cart').innerHTML = request.responseText;
		}
		else {
			document.getElementById("ds_id_" + replaceDiv).innerHTML = request.responseText;
		}
	} else if (request.readyState == 4) {
		alert("Request Fail:" + request.statustext + " " + request.status);
	}
}


