/**
 * Called when a catalog checkbox is checked or unchecked
 */
function handleCheckBoxLayers (catalogContext, targetContext, checkboxName, checked) {
	// Get the server url and the layer name from checkbox name
	var checkboxNameArray = checkboxName.split("|");
	var serverUrl = checkboxNameArray[0];
	var layerName = checkboxNameArray[1];

    // Get the layer nodes
	var catalogLayerNode = catalogContext.doc.selectSingleNode("wmc:ViewContext/wmc:LayerList/wmc:Layer[wmc:Server/wmc:OnlineResource/@xlink:href='" + serverUrl + "' and wmc:Name='" + layerName + "']");
	var layerNode = targetContext.doc.selectSingleNode("wmc:ViewContext/wmc:LayerList/wmc:Layer[wmc:Server/wmc:OnlineResource/@xlink:href='" + serverUrl + "' and wmc:Name='" + layerName + "']");
    
    // Process the event
	if (checked) {
		if (!layerNode) {
			addCatalogLayer(catalogContext, targetContext, catalogLayerNode);
		}
	} else {
		if (layerNode) {
			// Get the layer id
			var layerId = layerNode.selectSingleNode("@id").value;
		
			// Delete the layer
			targetContext.setParam('deleteLayer',layerId);

			// Notify the server
			notifyLayerDeletion(layerId);
		}
	}
}

/**
 * Called when an OGC catalog checkbox is checked or unchecked
 */
function handleCheckBoxLayersOgc (ogcContext, targetContext, checkboxName, checked) {
	// Get the server url and the layer name from checkbox name
	var checkboxNameArray = checkboxName.split("|");
	var serverUrl = checkboxNameArray[0];
	var layerName = checkboxNameArray[1];

    // Get the layer node
	var ogcLayerNode = ogcContext.doc.selectSingleNode("wmc:ViewContext/wmc:LayerList/wmc:Layer[wmc:Server/wmc:OnlineResource/@xlink:href='" + serverUrl + "' and wmc:Name='" + layerName + "']");
	var layerNode = targetContext.doc.selectSingleNode("wmc:ViewContext/wmc:LayerList/wmc:Layer[wmc:Server/wmc:OnlineResource/@xlink:href='" + serverUrl + "' and wmc:Name='" + layerName + "']");

    if (checked) {
		if (!layerNode) {
			addExternalLayer(targetContext, ogcLayerNode);
		}
	} else {
		if (layerNode) {
			// Get the layer id
			var layerId = layerNode.selectSingleNode("@id").value;

			// Delete the layer
			targetContext.setParam('deleteLayer',layerId);

			// Notify the server
			notifyLayerDeletion(layerId);
		}
	}
}	

/**
 * Called when a Geocatalog checkbox is checked or unchecked
 */
function handleCheckBoxLayersGeocatalog (originContext, targetContext, checkboxName, checked) {
	// Get the server url and the layer name from checkbox name
	var checkboxNameArray = checkboxName.split("|");
	var serverUrl = checkboxNameArray[0];
	var layerName = checkboxNameArray[1];

    // Get the layer node
	var geocatalogLayerNode = originContext.doc.selectSingleNode("wmc:ViewContext/wmc:LayerList/wmc:Layer[wmc:Server/wmc:OnlineResource/@xlink:href='" + serverUrl + "' and wmc:Name='" + layerName + "']");
	var layerNode = targetContext.doc.selectSingleNode("wmc:ViewContext/wmc:LayerList/wmc:Layer[wmc:Server/wmc:OnlineResource/@xlink:href='" + serverUrl + "' and wmc:Name='" + layerName + "']");

	if (checked) {
		if (!layerNode) {
			addGeocatalogLayer(targetContext, geocatalogLayerNode);
		}
	} else {
		if (layerNode) {
			// Get the layer id
			var layerId = layerNode.selectSingleNode("@id").value;

			// Delete the layer
			targetContext.setParam('deleteLayer',layerId);

			// Notify the server
			notifyLayerDeletion(layerId);
		}
	}
}

/**
 * process to check chekbox at loading page for each layer show.
 */			
function updateCheckedBoxLayers(){
	var checkBox=document.getElementsByTagName("input");
	for (i=0;i<checkBox.length;i++){
		if(checkBox[i].className == "treeCheckBox"){
			// Get the server url and the layer name
			var checkboxNameArray = checkBox[i].name.split("|");
			var serverUrl = checkboxNameArray[0];
			var layerName = checkboxNameArray[1];
            if (config.objects.mainMap.doc.selectSingleNode("wmc:ViewContext/wmc:LayerList/wmc:Layer[wmc:Server/wmc:OnlineResource/@xlink:href='" + serverUrl + "' and wmc:Name='" + layerName + "']")) {
				checkBox[i].checked='checked';
			} else {
				checkBox[i].checked='';
			}
		}
	}
}	
