// ADMIN MISCELANIOUS FUNCTIONS 

//enable-disable CIC select
function switchEnabled(obj){

	var CICselect = document.getElementById('CIC');
	var CICsubmit = document.getElementById("submitCIC");
	
	//if checkbox is checked and selet is disabled...enable select ..else disable it
	if(obj.checked && CICselect.disabled){
		CICselect.disabled = false;
		CICsubmit.disabled = false;
	}else{
		CICselect.disabled = true;
		CICsubmit.disabled = true;
	}

}

//change the action for a form
function changeFormAction(formId,actionString){
	var form = document.getElementById(formId);
	//set new action for this form
	form.action = actionString;
}

var xmlHttpRequest;
/**
* Create and load the data using the XMLHttpRequest
*/
function loadXmlData(url, object,elementId)
{
	// create the object, careful to the MSFT/Other method
	if (window.XMLHttpRequest)
	{
		xmlHttpRequest = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}

	// executing the request, passing the targetted object
	xmlHttpRequest.open("GET", url, true);
	xmlHttpRequest.onreadystatechange = function () {processRequestChange(object,elementId)};
	xmlHttpRequest.send(null);
}

/**
* Handle the events of the XMLHttpRequest Object
*/
function processRequestChange(object,elementId)
{
	//alert('processRequestChange!');
	//alert('xmlHttpRequest.readyState: ' + xmlHttpRequest.readyState);
	if (xmlHttpRequest.readyState == 4)
	{
		//alert('xmlHttpRequest.status: ' + xmlHttpRequest.status)
 		if(xmlHttpRequest.status == 200)
		{
			//alert('object.id ' + object.id)
			if (object.id == elementId )
			{
				copySubelementsData(elementId);
    		}		
  		}
 		else
  		{
  			alert("Error loading page\n"+ xmlHttpRequest.status +":"+ xmlHttpRequest.statusText);
  		}
		
	  	// end of the request, change the status zone
	  	//document.getElementById("statusZone").innerHTML = ""
	}
	else
	{
	  	// Indicates that the client is *busy*
	  	//document.getElementById("statusZone").innerHTML = "<b style='color:red' >Loading...</b>"
	}
}

function show(element) {
  element.style.visibility = "visible";
  element.style.display='block';  
}

function hide(element) {
  element.style.visibility = "hidden";
  element.style.display='none';
}


function enable(element){
	
	if(element.disabled){
		element.disabled = false;
	}
}

function disable(element){
	if(!element.disabled){
		element.disabled = true;
	}
	
}
/**
* Load the Subcategory data in the select object
* (Could be done in a generic manner depending of the XML...)
*/
function loadSubelements(parent)
{
	
	var elementId='';
	if(parent == "country"){
		elementId = "city";
	}
	else{
		elementId = "";
	}
	//alert(elementId);

	var target = document.getElementById(elementId);	
	var elementList = document.getElementById(parent);	
		
	var loader = document.getElementById(elementId);
	
	//alert('Target name ' + target.name);
	enable(target);
	clearList(target);
	
	hide(target);
	insertTempDiv(target)
	//todo : getSubelements for data
	//alert("hidden!");
	loadXmlData( "../../common/ajax/loaddata.php?elementId=" + elementList .value + "&parent="+parent, target, elementId);

	//alert('XML loaded!')
	removeTempDiv(target)
		
	show(target);
	
}


/**
* Populate the list with the data from the request
* (Could be done in a generic manner depending of the XML...)
*/
function copySubelementsData(elementId)
{
	var list = document.getElementById(elementId);	
	//alert('List of subelement' + list)
	var items = xmlHttpRequest.responseXML.getElementsByTagName("row");
	var selected = xmlHttpRequest.responseXML.getElementsByTagName("selected");
	var contor;
	var isarray = false;
	var selectedId = new Array;
	
	
	if(selected.length == 1){	
		selectedId[0] = selected[0].firstChild.nodeValue;
	}
	else if(selected.length > 1){
		isarray = true;
		for(contor = 0; contor < selected.length; contor++ ){
			//alert(selected[0])
			selectedId[contor] = selected[contor].firstChild.nodeValue;
		}
	}
	else	
		selectedId[0] = -1;
	
	clearList(list);
	addElementToList(list, 0, "Select"  );
	if (items.length > 0)
	{
		
		for (var i=0; i<items.length; i++){
			var node = items[i];
			var subelementId = node.getElementsByTagName("subelementId")[0].firstChild.nodeValue;
		  
			if(!isarray){  
				    if(subelementId == selectedId){
					var select = 1;
				    }
				    else{
					var select = 0;
				    }
			  }else{
				var j;
				for(j = 0; j<= contor ; j++)
					if(subelementId == selectedId[j])
						var select = 1;
					else
						var select = 0;
			  }
		  
		    var subelementTitle = node.getElementsByTagName("subelementTitle")[0].firstChild.nodeValue;
		       
		    //alert(subelementId.attributes[selected])
		    
		    //alert('Add element ' + subelementTitle)
		    addElementToList(list, subelementId, subelementTitle,select);
		}
	}else{
		disable(list);
	 	addElementToList(list, 0, "Select" ,0 );	
	}
	
}

/**
* remove the content of the list
*/
function clearList(list)
{
	while (list.length > 0)
	{
	  list.remove(0);
	}
}

function selectAllList(list){
	//alert(list.name)

	for(var i = 0; i < list.childNodes.length ; i++){
		if(list.childNodes[i].value){
			list.childNodes[i].selected = true;
		}
	}
}

function insertTempDiv(trigger){
	var tempDiv = document.createElement('div');
	var parent = trigger.parentNode;
	var leftOffset = trigger.offsetLeft;
	var topOffset = trigger.offsetTop;
	var labelNode = document.createTextNode('loading ...');
	
	//alert(topOffset)
	//alert(leftOffset)
	tempDiv.id = 'tempDiv';
	
	//alert(parent.tagName)
	
	tempDiv.style.left = leftOffset + 'px';
	tempDiv.style.top = topOffset + 'px';
	tempDiv.style.width = 200 + 'px';
	tempDiv.style.textAlign = 'center';
	
	//alert(tempDiv.style.top)
	
	tempDiv.appendChild(labelNode);
	parent.appendChild(tempDiv);
	
	//alert('confirm')
	
}

function removeTempDiv(trigger){
	var parent = trigger.parentNode;
	var child = document.getElementById('tempDiv');
	
	if(child)
		parent.removeChild(child);
}
/**
* Add a new element to a selection list
*/
function addElementToList(list, value, label ,select)
{
	var option = document.createElement("option");
	option.value = value;
	
	if(option.value == 0 && list.multiple){
		option.onclick = function (){ selectAllList(list); };
		//alert(option.onselect)		
	}
	
	if(select){
		option.selected = true;
	}
	var labelNode = document.createTextNode(label);
	option.appendChild(labelNode);
	list.appendChild(option);
}

//global countryId
var countryId;
//get the selected index for "country" select object		
function setSelectedCountry(selectId){
	var select = document.getElementById(selectId);

	countryId = select.options[select.selectedIndex].value;
	//alert(countryId)
}

