
/* *************************************************
FILENAME:     mapSearch.js
AUTHOR:       André von Wartburg
CREATED:      20. 05. 2010
COPYRIGHT:    rawi-geo. Alle Rechte vorbehalten.
DESCRIPTION:	search functionality (GET/SET/CHECK data)
 
************************************************** */

// Get base url
var this_url = document.location.href;
var xend = this_url.lastIndexOf("/") + 1;
var base_url = this_url.substring(0, xend);

var ajax = [];

function ajax_do(the_url) {
	var jsel = document.createElement('SCRIPT');
	jsel.type = 'text/javascript';
	jsel.src = the_url;
	document.body.appendChild(jsel);
}
		
// switch search dialog
function changeSearch(searchChoice) {
	if (searchChoice !== "init") {
		var cp = dijit.byId("search");
		cp.attr("onDownloadEnd", function () {
			// CUSTOM: INSERT STARTUP-BEHAVIOUR FOR SEARCHES HERE.
			switch (searchChoice) {
				case "adr": getElement('ADR_ORT'); break;
				case "gem": getElement('GEM_GEM'); break;
				case "gvl": getElement('GVL_ORT'); break;
				case "lawis": getLAWIS_GEM(); break;
				case "prz": getPRZ_ORT(); break;
				case "sdr": getSDR_ORT(); break;
				case "svo": getElement('SVO_NAM');; break;
				case "gef": getElement('GEF_NAM'); break;
				case "lmp": getElement('LMP_GEM'); break;
				case "bod": getElement('BOD_NAM'); break;
			}	
		});
		cp.attr("href", "../../src/inc/module_search_" + searchChoice + ".php");
		dojo.byId("searchWarning").style.display = "none";
	}
	else {
		dijit.byId("search").setContent("");
		dojo.byId("searchWarning").style.display = "none";
	}
}

// query validation
function validateQuery(searchId) {
	switch(searchId) {
		
		case "adr":
			if (dojo.byId("sADR_NUM").value == "") {
				dojo.byId("searchWarning").style.display = "block";
				dojo.byId("searchWarning").innerHTML = "Bitte wählen sie eine vollständige Adresse."
			}
			else {
				dojo.byId("searchWarning").style.display = "none";
				executeQueryTask(searchId);
			}
		break;
		
		case "gem":			
			if (dojo.byId("sGEM_GEM").value == "init") {
				dojo.byId("searchWarning").style.display = "block";
				dojo.byId("searchWarning").innerHTML = "Bitte wählen sie eine Gemeinde.";
			}
			else {
				dojo.byId("searchWarning").style.display = "none";
				executeQueryTask(searchId);
			}
		break;
		
		case "gvl":			
			if (dojo.byId("sGVL_ORT").value == "init") {
				dojo.byId("searchWarning").style.display = "block";
				dojo.byId("searchWarning").innerHTML = "Bitte wählen sie eine Gemeinde.";
			}
			else { getGVL_CHECK(); }
		break;
		
		case "law":			
			if (dojo.byId("sLAWIS_OBJ").value == "") {
				dojo.byId("searchWarning").style.display = "block";
				dojo.byId("searchWarning").innerHTML = "Bitte wählen sie ein LAWIS-Objekt.";
			}
			else {
				dojo.byId("searchWarning").style.display = "none";
				executeQueryTask(searchId);
			}
		break;
  
		case "prz":			
			// client-side checks
			if ((dojo.byId("sPRZ_NUM").value == "") || (isNaN(dojo.byId("sPRZ_NUM").value)) || (dojo.byId("sPRZ_GBP").value == "") ) {
				if ( dojo.byId("sPRZ_GBP").value == "" ) {
					dojo.byId("searchWarning").innerHTML = "Bitte Ort wählen.";
				}
				if ( isNaN(dojo.byId("sPRZ_NUM").value) ) {
					dojo.byId("searchWarning").innerHTML = "Parzellennummer darf nur aus Zahlen bestehen.";
				}
				if ( (dojo.byId("sPRZ_NUM").value == "") && (dojo.byId("sPRZ_GBP").value != "" ) ) {
					dojo.byId("searchWarning").innerHTML = "Keine Parzellennummer gewählt.";
				}
				dojo.byId("searchWarning").style.display = "block";
			}
			else { getPRZ_CHECK(); }
		break;

		case "sdr":
			if (dojo.byId("sSDR_NUM").value == "") {
				dojo.byId("searchWarning").style.display = "block";
				dojo.byId("searchWarning").innerHTML = "Keine Parzellennummer gewählt."
			}
			else {
				dojo.byId("searchWarning").style.display = "none";
				executeQueryTask(searchId);
			}
		break;
		
		case "bac":			
			// client-side checks
			if (dojo.byId("sBAC_NUM").value == "" ) {
					dojo.byId("searchWarning").innerHTML = "Keine Bachnummer gewählt.";
				dojo.byId("searchWarning").style.display = "block";
			}
			else { getBAC_CHECK(); }
		break;
		
		case "svo":			
			if (dojo.byId("sSVO_NAM").value == "init") {
				dojo.byId("searchWarning").style.display = "block";
				dojo.byId("searchWarning").innerHTML = "Bitte Schutzverordnung wählen.";
			}
			else {
				dojo.byId("searchWarning").style.display = "none";
				executeQueryTask(searchId);
			}
		break;
		
		case "bod":			
			if (dojo.byId("sBOD_NAM").value == "init") {
				dojo.byId("searchWarning").style.display = "block";
				dojo.byId("searchWarning").innerHTML = "Bitte Bodenkarte wählen.";
			}
			else {
				dojo.byId("searchWarning").style.display = "none";
				executeQueryTask(searchId);
			}
		break;
		
		case "gef":			
			if (dojo.byId("sGEF_NAM").value == "init") {
				dojo.byId("searchWarning").style.display = "block";
				dojo.byId("searchWarning").innerHTML = "Bitte Gefahrenkarte wählen.";
			}
			else {
				dojo.byId("searchWarning").style.display = "none";
				executeQueryTask(searchId);
			}
		break;
		
		case "lmp":			
			if (dojo.byId("sLMP_NAM").value == "init") {
				dojo.byId("searchWarning").style.display = "block";
				dojo.byId("searchWarning").innerHTML = "Bitte Standort wählen.";
			}
			else {
				dojo.byId("searchWarning").style.display = "none";
				executeQueryTask(searchId);
			}
		break;
		
	}
}


/* ++++++++++++++++++++++
   GETTERS 
 +++++++++++++++++++++ */
 
var getBaseURL = "../../src/inc/getData.php";

// Standard     
function getElement(el) { 	    
	var index = ajax.length;
	var sEl = "s"+ el;
	ajax[index] = new sack();
	ajax[index].requestFile = getBaseURL + '?SWITCH=' + el;
	ajax[index].onCompletion = function(){ setElement(sEl, index) };	
	ajax[index].runAJAX();		
}

// ADR: Strassen
function getADR_STR(sel, type) {
	var adr_ort = sel.options[sel.selectedIndex].value;	  
    	
	document.getElementById('sADR_NUM').disabled = true;
	document.getElementById('sADR_NUM').innerHTML = ''; 	
	document.getElementById('sADR_STR').options.length = 0;	
     	
		document.getElementById('sADR_STR_lab').innerHTML = '<img src="http://www.geo.lu.ch/src/img/icon_activity.gif" alt="Daten werden geladen." />';
    		    		
		var index = ajax.length;
		ajax[index] = new sack();
		ajax[index].requestFile = getBaseURL + '?SWITCH=ADR_STR&ADR_ORT=' + adr_ort;
 		ajax[index].onCompletion = function(){ setADR_STR(index) };
		ajax[index].runAJAX();	
}

function getSDR_NUM(sel) {
	var sdr_gbp = sel.options[sel.selectedIndex].value;	  
    	
	//document.getElementById('sADR_NUM').disabled = true;
	//document.getElementById('sADR_NUM').innerHTML = ''; 	
	document.getElementById('sSDR_NUM').options.length = 0;	
     	
		document.getElementById('sSDR_NUM_lab').innerHTML = '<img src="http://www.geo.lu.ch/src/img/icon_activity.gif" alt="Daten werden geladen." />';
    		    		
		var index = ajax.length;
		ajax[index] = new sack();
		ajax[index].requestFile = getBaseURL + '?SWITCH=SDR_NUM&SDR_GBP=' + sdr_gbp;
 		ajax[index].onCompletion = function(){ setSDR_NUM(index)};
		ajax[index].runAJAX();	
}
    
// ADR: Hausnummern
function getADR_NUM(sel) {
	var adr_str = sel.options[sel.selectedIndex].value; 	
 
	document.getElementById('sADR_NUM').options.length = 0;
	if(adr_str.length>0){
		document.getElementById('sADR_NUM_lab').innerHTML = '<img src="http://www.geo.lu.ch/src/img/icon_activity.gif" alt="Daten werden geladen." />';

		var index = ajax.length;
		ajax[index] = new sack();
		ajax[index].requestFile = getBaseURL + '?SWITCH=ADR_NUM&ADR_STR=' + adr_str;
		ajax[index].onCompletion = function(){ setADR_NUM(index) };	
		ajax[index].runAJAX();		
	}
	else {
		document.getElementById('sADR_NUM').disabled = true;
		document.getElementById('sADR_NUM').innerHTML = '';
	}
}

// LAWIS: Gemeinden
function getLAWIS_GEM(sel) { 	
	//document.getElementById('sLAWIS_OBJ').disabled = true;
	//document.getElementById('sLAWIS_OBJ').innerHTML = '';
	var lawis_typ = sel.options[sel.selectedIndex].value;
    	 	  
	document.getElementById('sLAWIS_GEM').options.length = 0;	
	if(lawis_typ.length>0){								
	var index = ajax.length;
		ajax[index] = new sack();
		//ajax[index].requestFile = getBaseURL + '?SWITCH=LAWIS_GEM&LAWIS_LIMIT=YES&LAWIS_TYP=' + lawis_typ;	
		ajax[index].requestFile = getBaseURL + '?SWITCH=LAWIS_GEM&LAWIS_LIMIT=NO&LAWIS_TYP=' + lawis_typ;	
		ajax[index].onCompletion = function(){ setLAWIS_GEM(index) };							
		ajax[index].runAJAX();
	}
	else {
		document.getElementById('sLAWIS_GEM').disabled = true;
		document.getElementById('sLAWIS_GEM').value = '';
		document.getElementById('sLAWIS_OBJ').disabled = true;
		document.getElementById('sLAWIS_OBJ').innerHTML = '';
	}			
}

// LAWIS: Objekte
function getLAWIS_OBJ(sel) {
	var lawis_bfs = sel.options[sel.selectedIndex].value; 	  
	var lawis_typ = document.getElementById('sLAWIS_TYP').value;
	document.getElementById('sLAWIS_OBJ').options.length = 0;

	if(lawis_bfs.length>0){	
		//document.getElementById('sLAWIS_OBJ').innerHTML = '<img src="../../resource/img/icon_activity.gif" alt="Daten werden geladen." />';
		
		var index = ajax.length;
		ajax[index] = new sack();
		ajax[index].requestFile = '../../src/inc/getData.php?SWITCH=LAWIS_OBJ&LAWIS_TYP=' + lawis_typ + '&LAWIS_BFS=' + lawis_bfs;
		ajax[index].onCompletion = function(){ setLAWIS_OBJ(index) };	
		ajax[index].runAJAX();		
	}
	else {
		document.getElementById('sLAWIS_OBJ').disabled = true;
		document.getElementById('sLAWIS_OBJ').innerHTML = '';
	}
}
       
// PRZ: Orte
function getPRZ_ORT() { 	  
	//document.getElementById('sPRZ_GBP').options.length = 0;									
	var index = ajax.length;
	ajax[index] = new sack();
	ajax[index].requestFile = getBaseURL +'?SWITCH=PRZ_ORT';	
	ajax[index].onCompletion = function(){ setElement('sPRZ_GBP', index) };							
	ajax[index].runAJAX();		
}

// SDR: Orte
function getSDR_ORT() { 	  
	var index = ajax.length;
	ajax[index] = new sack();
	ajax[index].requestFile = getBaseURL +'?SWITCH=SDR_ORT';	
	ajax[index].onCompletion = function(){ setElement('sSDR_GBP', index) };							
	ajax[index].runAJAX();		
}

// LMP: Standorte
function getLMP_NAM() {
	lmpGem = dojo.byId("sLMP_GEM").value; 
	document.getElementById('sLMP_NAM').options.length = 0;
	
	var index = ajax.length;
	ajax[index] = new sack();
	ajax[index].requestFile = getBaseURL +'?SWITCH=LMP_NAM&VAL=' + lmpGem;	
	ajax[index].onCompletion = function(){ setLMP_NAM(index) };							
	ajax[index].runAJAX();		
}


/* ++++++++++++++++++++++
   CHECKERS for AJAX AS-YOU-TYPE-INPUT  
 +++++++++++++++++++++ */

// PRZ: Validation   
function getPRZ_CHECK() {
	przToValidate = dojo.byId("sPRZ_NUM").value;
	gbpToValidate = dojo.byId("sPRZ_GBP").value; 
					
	var index = ajax.length;
	ajax[index] = new sack();
	ajax[index].requestFile = getBaseURL + '?SWITCH=PRZ_CHECK&GBP=' + gbpToValidate + '&PRZ=' + przToValidate;
	ajax[index].onCompletion = function(){ setPRZ_CHECK(index) };	
	ajax[index].runAJAX();	
}

// GVL: Validation   
function getGVL_CHECK() {
	gbpToValidate = dojo.byId("sGVL_ORT").value;
	numToValidate = dojo.byId("sGVL_NUM").value; 
					
	var index = ajax.length;
	ajax[index] = new sack();
	ajax[index].requestFile = getBaseURL + '?SWITCH=GVL_CHECK&GBP=' + gbpToValidate + '&NUM=' + numToValidate;
	ajax[index].onCompletion = function(){ setGVL_CHECK(index) };	
	ajax[index].runAJAX();	
}

// BAC: Validation   
function getBAC_CHECK() {
	numToValidate = dojo.byId("sBAC_NUM").value; 
					
	var index = ajax.length;
	ajax[index] = new sack();
	ajax[index].requestFile = getBaseURL + '?SWITCH=BAC_CHECK&NUM=' + numToValidate;
	ajax[index].onCompletion = function(){ setBAC_CHECK(index) };	
	ajax[index].runAJAX();	
}
	

/* ++++++++++++++++++++++
   SETTERS 
 +++++++++++++++++++++ */
 
function setADR_STR(index) {
	var obj = document.getElementById('sADR_STR');
	eval(ajax[index].response);	
	document.getElementById('sADR_STR').disabled = false;
	document.getElementById('sADR_STR_lab').innerHTML = 'Strasse';	
}
    
function setADR_NUM(index) {
	var obj = document.getElementById('sADR_NUM');
	eval(ajax[index].response);
	document.getElementById('sADR_NUM').disabled = false;	
	document.getElementById('sADR_NUM_lab').innerHTML = 'Hausnr.';	
}

function setSDR_NUM(index) {
	var obj = document.getElementById('sSDR_NUM');
	eval(ajax[index].response);	
	document.getElementById('sSDR_NUM').disabled = false;
	document.getElementById('sSDR_NUM_lab').innerHTML = 'Nummer';	
}
    
function setLAWIS_GEM(index) {
	var obj = document.getElementById('sLAWIS_GEM');
	eval(ajax[index].response);	
	document.getElementById('sLAWIS_GEM').disabled = false;
}

function setLAWIS_OBJ(index) {
	var obj = document.getElementById('sLAWIS_OBJ');
	eval(ajax[index].response);
	document.getElementById('sLAWIS_OBJ').disabled = false;	
}

function setLMP_NAM(index) {
	var obj = document.getElementById('sLMP_NAM');
	eval(ajax[index].response);
	document.getElementById('sLMP_NAM').disabled = false;	
}

function setElement(el, index) {
	var obj = document.getElementById(el);
	eval(ajax[index].response);	
}

// GVL: validation result for  as-you-type input
function setGVL_CHECK(index) {
	notice = "";
	eval(ajax[index].response);	
 	switch(notice) {
		case "TRUE":
			dojo.byId("searchWarning").style.display = "none";
			executeQueryTask('gvl');	
		break;
		case "FALSE":
			dojo.byId("searchWarning").innerHTML = "Der eingegebene Wert ist ungültig.";
			dojo.byId("searchWarning").style.display = "block";
 		break;
	}	
}

// PRZ: validation result for  as-you-type input
function setPRZ_CHECK(index) {
	notice = "";
	eval(ajax[index].response);	
 	switch(notice) {
		case "TRUE":
			dojo.byId("searchWarning").style.display = "none";
			executeQueryTask('prz');
			
			//populate print field w/ latest parcel
			//console.log(dojo.byId('sPRZ_GBP').value + "." + dojo.byId('sPRZ_NUM').value);
			dojo.byId("print_PRZ").value = dojo.byId('sPRZ_GBP').value + "." + dojo.byId('sPRZ_NUM').value;; 
		break;
		case "FALSE":
			dojo.byId("searchWarning").innerHTML = "Der eingegebene Wert ist ungültig.";
			dojo.byId("searchWarning").style.display = "block";
 		break;
	}	
}

// BAC: validation result for  as-you-type input
function setBAC_CHECK(index) {
	notice = "";
	eval(ajax[index].response);	
 	switch(notice) {
		case "TRUE":
			dojo.byId("searchWarning").style.display = "none";
			executeQueryTask('bac');
		break;
		case "FALSE":
			dojo.byId("searchWarning").innerHTML = "Der eingegebene Wert ist ungültig.";
			dojo.byId("searchWarning").style.display = "block";
 		break;
	}	
}

// RESETS
function resetPRZ() {
	if (document.getElementById('sPRZ_GBP').value == '') { 
		document.getElementById('sPRZ_NUM').disabled = true;
		document.getElementById('sPRZ_NUM').value = '';
	}
	else { 
		document.getElementById('sPRZ_NUM').disabled = false ;
		document.getElementById('sPRZ_NUM').value = 'Nummer eingeben ...';
	}
}
