var http_request = false;
function makeRequest(url, parameters) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
	 http_request = new XMLHttpRequest();
	 if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	 }
  } else if (window.ActiveXObject) { // IE
	 try {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
		try {
		   http_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	 }
  }
  if (!http_request) {
	 alert('Failed to create XMLHTTP instance, unsupported browser. Sorry for the inconvenience!');
	 return false;
  }
  http_request.onreadystatechange = alertContents;
  http_request.open('GET', url + parameters, true);
  http_request.send(null);
}

function alertContents() {
  if (http_request.readyState == 4) {
	  //result = http_request.responseText;
		//alert(result);
	 if (http_request.status == 200) {
		//alert(http_request.responseText);
		document.getElementById('status_sendingRequest').style.display = 'none';            
		document.getElementById('status_sendingFinished').style.display = 'block';            
		//location.hash = 'status_sendingFinished';
	 } else {
		alert('There was a problem with the request. Please send an email manually. We aplogize for the inconvenience.'+http_request.status+' '+http_request.responseText);
	 }
  }
}

/*
// submit all variable values in form to a script, as a GET string.
*/
function getFormVars(form, script, validated) {
	if (validated == false) { return;}
	document.getElementById('status_sendingRequest').style.display = 'block';
	document.getElementById('submit').style.display = 'none';            
	var getstr = "?";
	var val;
	objects = form.getElementsByTagName("INPUT");
	for (i=0; i<objects.length; i++) {
		var val = encodeURIComponent(objects[i].value);
		if (objects[i].type == "text") {
		   getstr += objects[i].name + "=" + val + "&";
		}
		if (objects[i].type == "hidden") {
		   getstr += objects[i].name + "=" + val + "&";
		}
		if (objects[i].type == "checkbox") {
		   if (objects[i].checked) {
			  getstr += objects[i].name + "=" + val + "&";
		   } else {
			  getstr += objects[i].name + "=&";
		   }
		}
		if (objects[i].type == "radio") {
		   if (objects[i].checked) {
			  getstr += objects[i].name + "=" + val + "&";
		   }
		}
	}
	objects = form.getElementsByTagName("SELECT");
	for (i=0; i<objects.length; i++) {
		var sel = objects[i];
		getstr += sel.name + "=" + escape(sel.options[sel.selectedIndex].value) + "&";
	}
	objects = form.getElementsByTagName("TEXTAREA");
	for (i=0; i<objects.length; i++) {
		var sel = objects[i];
		getstr += sel.name + "=" + escape(sel.value) + "&";
	}
	makeRequest(script, getstr);
}

function validateValuesSimple(form) {
	document.getElementById('status_InputError_EmptyFields').style.display = 'none';
	elements = form.getElementsByTagName("INPUT");
	var valid = true;
	for (j=0; j<elements.length; j++) {
		if (elements[j].value == '') {
			document.getElementById('status_InputError_EmptyFields').style.display = 'block';
			//alert('input '+elements[j].name);
			valid = false;
		}
	}
	elements = form.getElementsByTagName("TEXTAREA");
	for (j=0; j<elements.length; j++) {
		if (elements[j].value == '') {
			document.getElementById('status_InputError_EmptyFields').style.display = 'block';
			//alert('textarea '+elements[j].name);
			valid = false;
		}
	}
	return valid;
}

function validateValues(form) {
	// get settings for value checkings from hidden form element
	var checkV = Array();
	var checkV_rawVal = String(form.elements["CheckValues"].value);
	checkV_pair = checkV_rawVal.split(";");
	for (i=0;i<checkV_pair.length; i++) {
		checkV_splitPair = checkV_pair[i].split(":");
		checkV[checkV_splitPair[0]] = checkV_splitPair[1];
	}
	document.getElementById('status_InputError_EmptyFields').style.display = 'none';
	var valid = true;
	elements = form.getElementsByTagName("INPUT");
	if (!_validateElements(elements, checkV)) valid = false;
	elements = form.getElementsByTagName("TEXTAREA");
	if (!_validateElements(elements, checkV)) valid = false;
	elements = form.getElementsByTagName("SELECT");
	if (!_validateElements(elements, checkV)) valid = false;
	return valid;
}

function _validateElements(elements, checkV) {
	var valid = true;
	for (j=0; j<elements.length; j++) {
		if (elements[j].type == "submit") continue;
		switch (checkV[String(elements[j].name)]) {
			case "no" :
			break; 
			case "notEmpty" : 
				if (elements[j].value == '' ) {
					valid = false;
					document.getElementById('status_InputError_EmptyFields').style.display = 'block';
					elements[j].style.border = "1px solid red";
				} else elements[j].style.border = "1px solid #CCCCCC";
			break;
			case "notEmptyNotDefault" : 
				if (elements[j].value == '' || elements[j].value == elements[j].defaultValue) {
					valid = false;
					document.getElementById('status_InputError_EmptyFields').style.display = 'block';
					elements[j].style.border = "1px solid red";
				} else elements[j].style.border = "1px solid #CCCCCC";
			break;
			default : 
				if (elements[j].value == '' ) {
					valid = false;
					document.getElementById('status_InputError_EmptyFields').style.display = 'block';
					elements[j].style.border = "1px solid red";
				} else elements[j].style.border = "1px solid #CCCCCC";
			break;
		}
	}
	return valid;
}

function _markInvalid(element) {
	//if (element.type != "select") element.style.border = "1px solid red";
}

/////////////// FILE UPLOAD HANDLING /////////////////
function transferOk(real_name, dest_name, dest_dir) {
	document.getElementById('real_name').value = real_name;
	document.getElementById('dest_name').value = dest_name;
	document.getElementById('dest_dir').value = dest_dir;
	
	document.getElementById('status_fileUploaded').innerHTML = real_name+'<br/><br/>';
	displayStatus('done');
}

function transferFailed(message) {
	alert (message);
	displayStatus('reset');
	
}

function displayStatus(status) {
	switch (status) {
		case 'uploading': 
			document.getElementById('status_fileUploading').style.display = 'block';
			document.getElementById('submit').disabled = true;
			break;
		case 'done': 
			/*document.getElementById('status_fileUploading').style.display = 'none';
			document.getElementById('submitFile').disabled = true;
			document.getElementById('browseFile').disabled = true;*/
			document.getElementById('submit').disabled = false;
			document.getElementById('uploadForm').style.display = 'none';
			document.getElementById('status_fileUploaded').style.display = 'block';
			break;
		case 'reset': 
			document.getElementById('status_fileUploading').style.display = 'none';
			document.getElementById('submit').disabled = false;
			break;
	}
}
////////////////////// END FILE UPLOAD HANDLING ///////////////////