function LoketOrder(button, contextPath) {
	var orderButton = null;
	var ids = null;
	
	this.setOrderButton = setOrderButton;
	this.getOrderButton = getOrderButton;
	this.getIds = getIds;
	this.setIds = setIds;
	this.contextPath = contextPath;
	
	this.order = order;
	this.enableOrderButton = enableOrderButton;
	this.disableOrderButton = disableOrderButton;
	
	this.layerName = null;
	this.setLayerName = setLayerName;
	this.getLayerName = getLayerName;
	this.createParameter = createParameter;
    this.getFeatureProperty = getFeatureProperty;
	
	/*Constructor / Init*/
	this.setOrderButton(button);
		
	function setOrderButton(bt) {
		if(!bt){
			throw "No button was specified."
		}
		orderButton = bt;
	}
	
	function getOrderButton() {
		return orderButton;
	}
	
	function getIds() {
		return ids;
	}
	
	function setIds(idSet) {
		ids = idSet;
		if(!ids || ids == "") {
			disableOrderButton();
		} else {
			enableOrderButton();
		}
	}
	
	function setLayerName(name) {
		layerName = name;
	}

	function getLayerName() {
		return layerName;
	}

	function getFeatureProperty() {
		var layer = getLayerName();
		if (layer && layer != "") {
			var mapFunction = new MapFunction(layer);
			var prop = mapFunction.findInDinoExtract("property");
			if (prop) return prop;
		}
		return "NOPROPERTY";
	}
	
	function order() {
		var layer = getLayerName();
		if (!layer) {
			alert("No layer was selected.");
			return;
		} else{
			if (!getIds() || getIds() == "") {
				alert("Nothing to order / Niets te bestellen.");
				return;
			}
			var mapFunction = new MapFunction(layer);
			
			var url = mapFunction.findInDinoExtract("url");
			if(url) {
				var selectionType = mapFunction.findInDinoExtract("selectionType");
				var dataType = mapFunction.findInDinoExtract("dataType");
				var subDataType = mapFunction.findInDinoExtract("subDataType");
				var form = document.createElement('form');
				document.body.appendChild(form);
				form.setAttribute("method", "post");
                form.setAttribute("action", this.contextPath + url);
                //form.setAttribute("target", "_blank");
				
				if(!selectionType) {
					var hField = createParameter("request_selection_type", "%");
					form.appendChild(hField);
				} else {
					var hField = createParameter("request_selection_type", "" + selectionType);
					form.appendChild(hField);
				}
				
				if(!dataType) {
					throw "No datatype was specified in the functions.xml";
				} else {
					var hField = createParameter("request_datatype", "" + dataType);
					form.appendChild(hField);
					if(subDataType) {
						var hField2 = createParameter("request_datasubtype", "" + subDataType);
						form.appendChild(hField2);
					}
				}				
				var hField = createParameter("query_nitgNumber", "" + getIds());
				form.appendChild(hField);
				
				form.submit();
			} else {
				alert("No url was found to perform extraction.");
			}
		}
	}
	
	/*Creates a parameter for a post request as hidden input field*/
	function createParameter(name, value){
		var hField = document.createElement("INPUT");
		hField.type = "hidden";
		hField.name = name;
		hField.value = value;
		return hField;
	}
	
	function enableOrderButton() {
		var bt = getOrderButton();
		bt.disabled = false;
	}
	
	function disableOrderButton() {
		var bt = getOrderButton();
		bt.disabled = true;
	}
}
