function MoveOption(objSourceElement, objTargetElement)
{
	var aryTempSourceOptions = new Array();
	var x = 0;
	
	//looping through source element to find selected options
	for (var i = 0; i < objSourceElement.length; i++) {
		if (objSourceElement.options[i].selected) {
			//need to move this option to target element
			var intTargetLen = objTargetElement.length++;
			objTargetElement.options[intTargetLen].text = objSourceElement.options[i].text;
			objTargetElement.options[intTargetLen].value = objSourceElement.options[i].value;
		}
		else {
			//storing options that stay to recreate select element
			var objTempValues = new Object();
			objTempValues.text = objSourceElement.options[i].text;
			objTempValues.value = objSourceElement.options[i].value;
			aryTempSourceOptions[x] = objTempValues;
			x++;
		}
	}
	
	//resetting length of source
	objSourceElement.length = aryTempSourceOptions.length;
	//looping through temp array to recreate source select element
	for (var i = 0; i < aryTempSourceOptions.length; i++) {
		objSourceElement.options[i].text = aryTempSourceOptions[i].text;
		objSourceElement.options[i].value = aryTempSourceOptions[i].value;
		objSourceElement.options[i].selected = false;
	}
}

function selectAllListItems(objTargetElement){
	for(var i = 0; i < objTargetElement.length; i++){
		objTargetElement.options[i].selected = true;
	}
}

function setValue(id, value){
	document.getElementById(id).value = value;
}

function setSelectedToValue(selectID, value){
	var box = document.getElementById(selectID);
	
	for(var i = 0; i < box.options.length; i++){
		if(box.options[i].value == value){
			box.selectedIndex = i;
			return;
		}
	}
}

function checkRadioForValue(name, value){
	var radios = document.getElementsByName(name);
	
	for(var i = 0; i < radios.length; i++){
		if(radios[i].value == value){
			radios[i].checked = "checked";
			return;
		}
	}
}

function createDateControl(name, size, value, timeComp){
	document.write('<span><input type="text" name="' + name + '" size="' + size + '" value="' + value + '" /> ');
	document.write('<img style="cursor:pointer;" onclick="showCal(this.parentNode, ' + timeComp + ');" src="images/cal.gif" width="16" height="16" border="0" alt="Click Here to Pick up the date"></span>');
}

//this is a temp solution to create the date control without an ID.
function showCal(panel, timeComp){
	var field = panel.childNodes[0];
	
	var cal = new calendar3(field);
	cal.year_scroll = true;
	cal.time_comp = timeComp;
	
	cal.popup();
}

function update(id, type, value){
	switch(type){
		case "html":
			document.getElementById(id).innerHTML = unescape(value);
			break;
		case "value":
			document.getElementById(id).value = unescape(value);
			break;
	}
}

//this should only be called once, so re-enabling submit button here don't feel so awkward.
function updateNotice(message){
	document.getElementById('message').style.display = "block";
	
	update('message', 'html', message);
	colorFade('message','background','00FFFF','FFFFFF',40,30);
	
	//Re-enable submit button.
	var submitButton = document.getElementById('submitButton');
	
	if(submitButton != null){
		submitButton.disabled = false;
		submitButton.value = buttonText;
	}
}

function processForm(){
	document.getElementById('message').style.display = "none";
	disableSubmit(false);
	
	if(typeof(tinyMCE) != 'undefined')
		tinyMCE.triggerSave();
	
	new Ajax.Request('index.php', {
		parameters: $('form1').serialize(true),
		onSuccess: function(transport){
			//not sure what else to do for now.
			//alert("Success: " + transport.responseText);//for debugging.
			eval(transport.responseText);
			restoreButton();
		},
		onFailure: function(){
			update('message', 'html', 'Action failed. Please try again later.');
			//alert("Failed: " + transport.responseText);//for debugging.
		},
		onComplete: function(){
			/*submitButton.disabled = false;
			submitButton.value = text;*/
			//alert("Completed: " + transport.responseText);//for debugging.
		}
	});
}

//Called when getting menu details.
function performAction(action, methodType, values){
	document.getElementById('message').style.display = "none";
	
	var params = 'action=' + action + values;
	
	new Ajax.Request('index.php', {
		method: methodType,
		parameters: params,
		onSuccess: function(transport){
			//not sure what else to do for now.
			//alert(transport.responseText);//for debugging.
			eval(transport.responseText);
		},
		onFailure: function(){
			update('message', 'html', 'Action failed. Please try again later.');
		}
	});
}

function serialize(form) {
  if (!form || !form.elements) return;

  var serial = [], i, j, first;
  var add = function (name, value) {
    serial.push(encodeURIComponent(name) + '=' + encodeURIComponent(value));
  }

  var elems = form.elements;
  for (i = 0; i < elems.length; i += 1, first = false) {
    if (elems[i].name.length > 0) { /* don't include unnamed elements */
      switch (elems[i].type) {
        case 'select-one': first = true;
        case 'select-multiple':
          for (j = 0; j < elems[i].options.length; j += 1)
            if (elems[i].options[j].selected) {
              add(elems[i].name, elems[i].options[j].value);
              if (first) break; /* stop searching for select-one */
            }
          break;
        case 'checkbox':
        case 'radio': if (!elems[i].checked) break; /* else continue */
        default: add(elems[i].name, elems[i].value); break;
      }
    }
  }

  return serial.join('&');
}

function addComponent(id){
	var output = document.getElementById(id + "Output");
	var component = document.getElementById(id + "Template").cloneNode(true);
	
	component.setAttribute("id", "");
	component.style.display = "block";
	
	output.appendChild(component);
	
	return component;
}
function removeSelf(self){
	self.parentNode.removeChild(self);
}
function getChildrenByName(element, tagName, nameOfChildElement){
	var list = new Array();
	var nodeList = element.getElementsByTagName(tagName);
	
	for(var i = 0; i < nodeList.length; i++)
		if(nodeList[i].getAttribute("name") == nameOfChildElement)
			list[list.length] = nodeList[i];
	
	return list;
}
function setObjectSelectedToValue(box, value){
	for(var i = 0; i < box.options.length; i++){
		if(box.options[i].value == value){
			box.selectedIndex = i;
			return;
		}
	}
}
function checkObjectsRadioForValue(radios, value){
	for(var i = 0; i < radios.length; i++){
		if(radios[i].value == value){
			radios[i].checked = "checked";
			return;
		}
	}
}

var buttonText = "";
function disableSubmit(submitAfterDisable){
	//Temporarily disable submit button till end of processing.
	var submitButton = document.getElementById('submitButton');
	
	if(submitButton != null){
		submitButton.disabled = true;
		buttonText = submitButton.value;
		submitButton.value = "Processing...";
	}
	
	if(submitAfterDisable)
		document.getElementById("form1").submit();
}
function restoreButton(){
	var submitButton = document.getElementById('submitButton');
	
	if(submitButton != null){
		submitButton.disabled = false;
		submitButton.value = buttonText;
	}
}

function uploadDone(){ //Function will be called when iframe is loaded
	var ret = frames['upload_target'].document.getElementsByTagName("body")[0].innerHTML;
	if(ret == "") return;
	
	try{
		eval(ret);
	}catch(e){
		alert(ret);
	}
	restoreButton();
}

function fnStartInit(){
   if(uploadTarget.readyState=="complete")
	  uploadDone();
}