// JavaScript Document

// *************************************
// for submitting a form
// this will automatically identify the fields inside the form and get it's values
function submitForm(form, action, resultContainer, loaderDisplay, iconOnly, autoHideMsg) {
	var xmlhttp;
	var rForm = document.forms[form];
	var isError = false;
	var parameters = '&';
	
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
	  xmlhttp=new XMLHttpRequest();
	} else {// code for IE6, IE5
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
		
	xmlhttp.onreadystatechange=function() {
	  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
		
		// date updated: 2011/07/29 mel
		if (resultContainer) {
			document.getElementById(resultContainer).innerHTML = xmlhttp.responseText;
		}
		
		if (loaderDisplay && document.getElementById(loaderDisplay)) {document.getElementById(loaderDisplay).innerHTML = '';}
		if (modalStatus == true) closeWindow();
		if (autoHideMsg) hideMessage();
		if (multiFucsStat) runMultiQs(funcsArr, funcsMet);
	  } else {
		if (loaderDisplay) {
		  if (iconOnly == true) {
			document.getElementById(loaderDisplay).innerHTML = '<img src="images/template/ajax_loader.gif">';
		  } else {
		    if (document.getElementById(loaderDisplay)) 
				document.getElementById(loaderDisplay).innerHTML = '<center><div class="loader" style="width: 100px;"><img src="images/template/ajax_loader.gif" align="left"><span class="loaderText">Processing...</span></div></center>';
		  }
		} else {
		  document.getElementById(resultContainer).innerHTML = '<center><div class="loader"><img src="images/template/ajax_loader.gif" align="left"><span class="loaderText">Loading...</span></div></center>';
		}
	  }
	}


	for (x = 0; x < rForm.elements.length; x++) {
	  var type = rForm.elements[x].type;
	  var name = rForm.elements[x].name;
	  var disabled = rForm.elements[x].disabled;
	  var value = '';
	  	  
	  switch (type) {
		case 'text': // text inputs
		  value = encodeURIComponent(rForm.elements[x].value);
		  if (!disabled) { 
    	    if (x > 0) {parameters += '&';}
		  	parameters += name + '=' + value;
		  }
		  break;
		  
		case 'hidden': // hidden inputs
		  value = encodeURIComponent(rForm.elements[x].value)
		  if (!disabled) { 
    	    if (x > 0) {parameters += '&';}
		    parameters += name + '=' + value;
		  }
		  break;
		  
		case 'textarea':  // textarea inputs
		  value = encodeURIComponent(rForm.elements[x].value)
		  if (!disabled) { 
    	    if (x > 0) {parameters += '&';}
		    parameters += name + '=' + value;
		  }
		  break;
				
		// select single selection  
		case 'select-one': // select/pulldown menu inputs
		  var sIndex = rForm.elements[x].selectedIndex;
		  value = encodeURIComponent(rForm.elements[x].options[sIndex].value);
		  if (!disabled) { 
    	    if (x > 0) {parameters += '&';}
		    parameters += name + '=' + value;
		  }
		  break;
		
		// select multiple selection
		case 'select-multiple': // select/pulldown menu inputs
		  var sIndex = rForm.elements[x].selectedIndex;
		  var sArray = new Array();
		  
		  if (!disabled) {
			  for (var i = 0; i < rForm.elements[x].options.length; i++) {
				  if (rForm.elements[x].options[i].selected) {
					  parameters += '&';
					  parameters += name + '[]=' + rForm.elements[x].options[i].value;					  
				  }
			  }
		  }
		  break;
		  
		case 'checkbox':
		  if (!disabled && rForm.elements[x].checked) {
			value = encodeURIComponent(rForm.elements[x].value);
    	    if (x > 0) {parameters += '&';}
		    parameters += name + '=' + value;
		  }
		  break;
		 
		case 'radio':
		  if (!disabled && rForm.elements[x].checked) {
			value = encodeURIComponent(rForm.elements[x].value);
    	    if (x > 0) {parameters += '&';}
		    parameters += name + '=' + value;
		  }
		  break;
		case 'file':
		  value = encodeURIComponent(rForm.elements[x].value)
		  break;
	  }

	}
		
	xmlhttp.open("POST", action,true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.send(parameters);
}



// used for pagination only
// executed on second page
var curPage = 3;

function submitRequest(obj, resultContainer, query) {
	var resultContainer = document.getElementById(resultContainer);
	var xmlhttp;
	
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
	  xmlhttp=new XMLHttpRequest();
	} else {// code for IE6, IE5
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	xmlhttp.onreadystatechange=function() {
	  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
		var newDiv = document.createElement('div');
		newDiv.innerHTML = xmlhttp.responseText;
		
		resultContainer.appendChild(newDiv);
		
	//	alert (total_pages + ' ' + (curPage++));
	   //var tmp = document.createElement("DIV");
	   //tmp.innerHTML = xmlhttp.responseText;
	   //alert (tmp.textContent||tmp.innerText);
	
		if (curPage++ > total_pages) {
			obj.style.display = 'none';
		}
		
		var nQuery = buildAction(query);
		obj.innerHTML = 'View More...';
		obj.onclick = function(){submitRequest(this, 'p2', nQuery)}
		
	  } else {
		obj.innerHTML = '<center><div class="loader"><img src="images/template/ajax_loader_turq.gif" align="left"><span class="loaderText">Loading...</span></div></center>';
	  }
	}
	
	xmlhttp.open("GET",query,true);
	xmlhttp.send();
}


function buildAction(query) {
	//alert ('Hello World');
	var url = query;
	var urlChunks = (url.substring(url.lastIndexOf('/')+1)).split('?');
	
	var scriptName = urlChunks[0] + '?';			// holds the script name
	var params = urlChunks[1].split('&');   // explode the url parameter
	var paramChunks;
	var qName, qValue;
	
	for (x = 0; x < params.length; x++) {
		paramChunks = params[x].split('=');
		
		if (paramChunks[0] == 'page') {
			scriptName += paramChunks[0] + '=' + (parseInt(paramChunks[1])+1);
		} else {
			scriptName += paramChunks[0] + '=' + paramChunks[1];
		}
		
		
		if (x < (params.length - 1)) scriptName += '&';
	}

	return scriptName;
}


// make action on checkbox click
function checkInputState(obj, tAction, fAction, script, resultContainer, popup, iconOnly) {
	if (obj.checked) {
		var action = script + '&action=' + tAction;
	} else {
		var action = script + '&action=' + fAction;
	}

	loadQuery(resultContainer, action, false, popup, iconOnly);
}


// date added: 2011/07/29
// validate form inputs if empty
function validateInputs(form, inputs_array, action){	
	var form = document.forms[form];
	
	if (inputs_array instanceof Array) {
		alert ('Array');
		for (var x = 0; x < inputs_array.length; x++) {
			if (form.elements[inputs_array[x]].value == "") {
				return false;
				alert ('hello World');
			} else {
				alert ('hello World');
				return action;
			}
			
		}
	} else {
		if (form.elements[inputs_array].value) {
			return false;
		} else {
			return action;
		}
	}
	
}


// date added 2011/08/24 mel
// this will run several queries
var runQueryArr = 0;
var funcsArr = '';
var funcsMet = '';
var multiFucsStat = false;

function runMultiQs(funcs, method) {	
	funcsArr = funcs;
	funcsMet = method;
	
	var qArr = funcs;
	var el;
	var query;
	//alert (runQueryArr + ' = ' + qArr.length + '<=' + (runQueryArr + 1));
	
	if (method != 'function') {
		if (qArr.constructor == Array && qArr.length > (runQueryArr)) {
			query = qArr[runQueryArr][0];
			el = qArr[runQueryArr][1];
		}
	} else {
		multiFucsStat = true;
	}

	if (method == 'function') {
		//alert(qArr[runQueryArr]);
		eval(qArr[runQueryArr]) // this will run/read the string as a function
	} else {
		runQuery(query, el);
	}
	
	if (qArr.length <= (runQueryArr + 1) ) {
		runQueryArr = 0;
		funcsArr = '';
		funcsMet = '';
		multiFucsStat = false;
		//alert ('Status: ' + multiFucsStat);
		
		return false;
	}

	runQueryArr++;
	if (method != 'function') runMultiQs(funcs, method);
}


function runQuery(query, e) {
	var econ = document.getElementById(e);
	//alert (query + ' | ' + e);
	var xmlhttp;
	
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
	  xmlhttp=new XMLHttpRequest();
	} else {// code for IE6, IE5
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	xmlhttp.onreadystatechange=function() {
	  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
		if (econ) {
			econ.innerHTML = xmlhttp.responseText;
		} else {
			if (econ = document.getElementById('resultContainer')) {
				econ.innerHTML = xmlhttp.responseText;
			} else {
				alert (xmlhttp.responseText);
			}
		}
		
		if (modalStatus == true) closeWindow();
		hideMessage();
		if (multiFucsStat) runMultiQs(funcsArr, funcsMet);
	  }
	}
	
	xmlhttp.open("GET",query,true);
	xmlhttp.send();
	
}

// date added: 2011/08/05 mel
// for creating new input "file"
function newUploadeFile(container, query) {
	var container = document.getElementById(container);
	var content = document.createElement('li');
	content.className = 'defaultLI';
	content.innerHTML = '<iframe id="upload_target" class="frameUpload fontSet12" scrolling="no" frameborder="0" src="' + query + '" marginheight="3px" marginwidth="3px"></iframe>';	
		
	container.appendChild(content);
}

function autoValidate(e, url, hideLoader) {
	var hideLoader = hideLoader;

	if (typeof e != 'object') {
		var e = document.getElementById(e);
		var eid = e.name;
	} else {
		var eid = e.name;
	}
	
	var query = url + '&' + eid + '=' + e.value;
	var parent = eid + 'validator';
	
	loadQuery(parent, query, false, false, true, hideLoader);
}
