function getSearchResults(){
	
	var srchContainer = $('cmSearchContainer');
	var srchRequest   = selfUrl+'?cmAction=getCompList&filters='+filters.join(';');
	searchFormHtml    = srchContainer.innerHTML;

	var myHTMLRequest = new Request.HTML({url:srchRequest, update:srchContainer});
	myHTMLRequest.addEvent('success', function (responseText, responseXML){
		filterMarkers();
	});
	myHTMLRequest.post($('cmSearchForm'));
	
	/*processForm('cmSearchForm', selfUrl+'?cmAction=getCompList&filters='+filters.join(';'), null, function(rAct){
		if (rAct.readyState == 4 && rAct.status == 200){	
			alert(rAct.responseText);		
			srchContainer.innerHTML = rAct.responseText;
		}
	});*/
}

function changeTab(tabElem){
		
	var quickTab = $('quickTab');
	var advanTab = $('advancedTab');
	var quickTabContent = $('quickTabContent');
	var advanTabContent = $('advancedTabContent');
	
	var tmpFilters = filters;
	filters = oldFilters;
	oldFilters = tmpFilters;
	
	var tmpSrchRes = cmSrchRes;
	cmSrchRes = oldSrchRes;
	oldSrchRes = tmpSrchRes;
	
	filterMarkers('refresh');
	
	if (advanTab.id == tabElem.id){
		advanTab.style.zIndex = 2;
		quickTab.style.zIndex = 1;
		
		advanTab.fade('in');
		quickTab.fade(0.5);
		
		advanTabContent.morph('.tabContentActive');
		quickTabContent.morph('.tabContentInactive');

	}
	else{
		advanTab.style.zIndex = 1;
		quickTab.style.zIndex = 2;
		
		advanTab.fade(0.5);
		quickTab.fade('in');
		
		advanTabContent.morph('.tabContentInactive');
		quickTabContent.morph('.tabContentActive');
	}		
}

function returnToSearchForm(){
	var srchContainer = $('cmSearchContainer');
	srchContainer.innerHTML = searchFormHtml;
}

function toggleLegendSel(imgElem, name, selInd, ext){
	var line = $(imgElem.parentNode);
	if (imgElem.src.indexOf(selInd) > 0){
		line.fade(0.5);
		imgElem.src = coreRel+'images/'+name+ext;
	}
	else{
		line.fade('in');
		imgElem.src = coreRel+'images/'+name+selInd+ext;		
	}
}

function getExtInfos(uid){
	var viewer = $('cmViewer');
	var loader = $('cmInfosLoader');
	var lActive = false;
	var delayed = setTimeout(function(){
		lActive = true;
		loader.morph('.gmActiveLoader');
	},1000);

	getInfos(selfUrl+'?cmAction=getFullInfos&uid='+uid, viewer, function(rAct){
		if (rAct.readyState == 4 && rAct.status == 200){
			clearTimeout(delayed);
			if (lActive)
				loader.morph('.gmInactiveLoader');
			if (viewer != null)
				viewer.innerHTML = rAct.responseText;
		}
	});
}

function selectComp(id, elem){
	
	if (curListElem != null)
		curListElem.className = "font";
	curListElem = elem;
	curListElem.className = "font itemSelected";
	
	for(var i = 0; i < markers.length; i++)
	if (markers[i].uid == id){
		
		//GEvent.trigger(markers[i], 'click', markers[i], markers[i].getPoint());
		
		var pt  = markers[i].getPoint();
		//centerOnPt(pt.lat(), pt.lng());
		//markers[i].openInfoWindowHtml(markers[i].myhtml);
		
		map.openInfoWindowHtml(pt, markers[i].myhtml);
		getExtInfos(id);
		
	}
}

function delComp(uid){
	
	var answer = confirm ("Êtes-vous sûr de vouloir supprimer cette industrie ?")
	if (answer)
	markers.each(function(marker){
		if (marker.uid == uid){
			map.removeOverlay(marker);
			map.closeInfoWindow();
			markers.erase(marker);
			getInfos(selfUrl+'?cmAction=delete&uid='+uid, null, function(rAct){
				if (rAct.readyState == 4 && rAct.status == 200)
					filterMarkers('refresh');
			});
			
			$('cmViewer').innerHTML = "";
			/*break;
			alert('hrel');*/
		}
	});
}

function addComp(){
	$('cmViewer').load(selfUrl+'?cmAction=getAddForm');	
}

function modComp(uid){
	
	/*getInfos(selfUrl+'?cmAction=getModForm&uid='+uid,null,function(rAct){
		if (rAct.readyState == 4 && rAct.status == 200)
			alert(rAct.responseText);
		
	});*/
	$('cmViewer').load(selfUrl+'?cmAction=getModForm&uid='+uid);
}

function updateComp(elem){
	//var lActive = false;
	
	if (saving == 'new'){
		/*var delayed = setTimeout(function(){
			lActive = true;
			$('gmMarkerLoader').morph('.gmActiveLoader');
		},1000);*/
		$('gmMarkerLoader').morph('.gmActiveLoader');
		
		getInfos(selfUrl+'?cmAction=getLastUid', null, function(rAct){
			if (rAct.readyState == 4 && rAct.status == 200){
				saving = rAct.responseText;
				updateComp(elem);	
				
				//clearTimeout(delayed);
				//if (lActive)
				$('gmMarkerLoader').morph('.gmInactiveLoader');
				
			}					
		});	

		//filterMarkers('refresh');	
	}
	else if (saving != false){		
			
		var muid = saving;
		
		getExtInfos(muid);
		
		/*var delayed = setTimeout(function(){
			lActive = true;
			$('gmMarkerLoader').morph('.gmActiveLoader');
		},1000);*/
		$('gmMarkerLoader').morph('.gmActiveLoader');
			
		var filters = [muid]
		reloadMarkersFromArr(filters, function(){
						
			markers.each(function(marker){
				if (marker.uid == muid){
					map.openInfoWindowHtml(marker.getPoint(), marker.myhtml);
				}
			});
			
			//clearTimeout(delayed);
			//if (lActive)
			$('gmMarkerLoader').morph('.gmInactiveLoader');
			filterMarkers('refresh');
			
		});
		
		saving = false;
		
	}
}

function saveComp(id){
	
	saving = id;

	var addModForm  = $('cmAddModForm');	
	addModForm.submit();
}

function loadCompMap(langue){
	/*var mapElem = $('map');

	//Positioner les loader	
	var markerLoader = $('gmMarkerLoader');
	markerLoader.style.left =  (mapElem.getSize().x/2) - (markerLoader.getSize().x/2) +"px";
	markerLoader.style.top =  (mapElem.getSize().y/2) - (markerLoader.getSize().y/2) +"px";

	var srchLoader = $('cmSearching');
	srchLoader.style.left =  (mapElem.getSize().x/2) - (srchLoader.getSize().x/2) +"px";
	srchLoader.style.top =  (mapElem.getSize().y/2) - (srchLoader.getSize().y/2) +"px";*/

	loadGMap(function(){
		if (useMarkMan)
			GEvent.addListener(markerMan, "changed", function(bounds, markerCount) {
				filterMarkers("refresh");
			});
		addAllMarkers(function(){
			if (chkClosest)
				getClosest(true);
		});
	});
}

function filterMarkers(data){
		
	//Si la variable est une string alors on traite le filtre de secteur
	if ($type(data) == "string"){
		
		if 	(data != "refresh"){
			var iconPath = data;
			var addFilter = true;
			
			//Verifier s'il faut supprimer le filtre
			for(var i=0; i < filters.length; i++)
			if (filters[i] == iconPath){
				filters.splice(i,1);
				addFilter = false;
				break;
			}
			
			//Ajouter le filtre si il n'existait pas deja
			if (addFilter)
				filters.push(iconPath);	
		}	
			
		//Telecharger la nouvelle liste
		var request;
		if ($type(cmSrchRes) == "array")
			request = selfUrl+'?cmAction=getCompList&filters='+filters.join(';')+'&srchRes='+cmSrchRes.join(';');
		else
			request = selfUrl+'?cmAction=getCompList&filters='+filters.join(';');

		getInfos(request, null, function(rAct){
			if (rAct.readyState == 4 && rAct.status == 200){
				var lists = $(document.body).getElements('div.cmList');
				lists.each(function(list){
					list.innerHTML = rAct.responseText;
				});
			}
		});
	}
	
	//Filtrer les markeurs selon la selection de la legende
	var hideMarker;	
	for(var i = 0; i < markers.length; i++){
		
		//Determiner s'il faut cacher ou afficher le marker
		hideMarker = false;
		for(var j = 0; j < filters.length; j++)
		if (markers[i].icon.indexOf( filters[j] ) > 0){
				hideMarker = true;
				break;
		}

		if (hideMarker){
			markers[i].hide();		
				
			if (selMarker != null && markers[i].uid == selMarker.uid){
				map.closeInfoWindow();
				map.removeOverlay(selMarker);
				selMarker = null;
			}
		}
		else
			markers[i].show();
	}

	//Si on a des resultats de recherche alors cacher les markeurs qui ne se retrouve pas dans la liste
	if ($type(cmSrchRes) == "array" && cmSrchRes.length > 0){
		
		markers.each(function(marker){
			if (cmSrchRes.contains(marker.uid) == false)
				marker.hide();
		});
		
	}
}

//DistMap
function printDirections(){

	if (closestAddr != null){
		reg = / /g;
		var from = closestAddr[1].replace(reg, '+');
		var to 	 = closestAddr[2].replace(reg, '+');
		window.open('http://maps.google.ca/maps?f=d&hl=fr&saddr='+from+'&daddr='+to+'&z=14&om=1&pw=2','name','status=no,menubar=no,directories=no');
	}
}

function switchPostal(e)
{ 
	var characterCode;
	
	if(e && e.which){ //if which property of event object is supported (NN4)
		e = e
		characterCode = e.which //character code is contained in NN4's which property
	}
	else if (typeof event != 'undefined'){
		e = event
		characterCode = e.keyCode //character code is contained in IE's keyCode property
	}
	
	if(characterCode == 32)
	{ 
		var elem = document.getElementById("fromPostal2");
		elem.focus();		
		
		return false; 
	}
	else
	{
		return true 
	}

}

function showDirections(toAddr,langue){

	var fromPostal = document.getElementById("fromPostal");
	var fromPostal2 = document.getElementById("fromPostal2");
		
	if (fromPostal.value.length == 3 && fromPostal2.value.length == 3){
		var fromAddr = fromPostal.value+fromPostal2.value;
		var directions = document.getElementById("gmDirections");	
		var printBtn = document.getElementById('printBtn');
		
		if (printBtn != null)
			printBtn.style.display = ""	;
			
		if (mapDirections != null)
			mapDirections.clear();
		else
			mapDirections = new GDirections(map, directions);
	
		mapDirections.load("from:"+fromAddr + " to:" + toAddr, {locale : langue});
		
	}
}

function getClosest(init){

if (typeof init == "undefined") init = false;
	//$('errorBox').innerHTML = "";	
	
	//Lire les adresses destinations
	if (init){
		var fromPostal = document.getElementById("fromPostal");
		var fromPostal2 = document.getElementById("fromPostal2");
		
		if (fromPostal.value.length == 3 && fromPostal2.value.length == 3){
		

				
				//Initialiser les variables
				listAddr = null;
				if (mapDirections != null)
					mapDirections.clear();
					
				/*var printBtn = document.getElementById('printBtn');
				printBtn.style.display = "none"	;*/
				mapDirections = null;
				closestAddr   = null;
				
				//Afficher le loading
				var loading = $('cmSearching');
				loading.style.display = "";
				//loading.morph('.gmActiveLoader');
	
				//processForm('cmSearchForm', selfUrl+'?cmAction=getAddresses', null, function(rAct){
				
				getInfos(location.href+'?cmAction=getAddresses', null, function(rAct){
					
					if (rAct.readyState == 4 && rAct.status == 200){
						
						listAddr = rAct.responseText.split('|');						
						listAddr.pop();
						
						/*listAddr.each(function(item){
							item = item.split(';');
						});*/
						
						listAddr.each(function(item, index){
							listAddr[index] = item.split(';');
						});
				
						if (listAddr.length == 0){
						//$('errorBox').innerHTML = "Aucune donn&eacute;e n'a &eacute;t&eacute; trouv&eacute; selon vos crit&egrave;res";
							//Cacher le loading
							var loading = $('cmSearching');
							loading.style.display = "none";
							//loading.morph('.gmInactiveLoader');
						}
						else
							getClosest();
					}
				});
			
		}
	}
	//Calculer la distance entre l'adresse client versus la premiere adresse du tableau de destinations
	else{
		var directions = document.getElementById("gmDirections");
		var elPostal = document.getElementById("fromPostal");
		var elPostal2 = document.getElementById("fromPostal2");
		var fromPostal = elPostal.value+elPostal2.value;
		
		curAddr = listAddr.shift();

		if (mapDirections != null)
			mapDirections.clear();
		else{
			mapDirections = new GDirections(map, directions);

			GEvent.addListener(mapDirections, "error", function() {
				alert(mapDirections.getStatus().toSource()+ 'Adresse en problème :'  + curAddr);
			});

			GEvent.addListener(mapDirections, "load", function() {
				
				if (closestAddr == null || closestAddr[0] > mapDirections.getDistance().meters){
					closestAddr = new Array();
					closestAddr[0] = mapDirections.getDistance().meters;
					closestAddr[1] = fromPostal;
					closestAddr[2] = curAddr[1];
					closestAddr[3] = curAddr[0];
				}

				//alert(listAddr.length);

				//Si il reste des addresse a calculer, relancer la fonction
				if (listAddr.length > 0)
				//if (listAddr.length > 31)
					getClosest();
				//Si l'addresse la plus proche à été trouvé, charger les itineraires
				else{
					//alert('adresse trouvee');
					GEvent.clearListeners(mapDirections, "load");
					mapDirections.clear();
					//mapDirections.load("from:"+closestAddr[1] + " to:" + closestAddr[2], {locale : "fr_CA", preserveViewport : true});
					
					
					//Cacher le loading
					var loading = $('cmSearching');
					loading.style.display = "none";
					//loading.morph('.gmInactiveLoader');
					
					/*var printBtn = document.getElementById('printBtn');
					if (printBtn != null)
						printBtn.style.display = ""	;*/
						
					for(var i = 0; i < markers.length; i++)
					if (markers[i].uid == closestAddr[3]){
				
						var pt  = markers[i].getPoint();
						map.openInfoWindowHtml(pt, markers[i].myhtml);
						//markers[i].openInfoWindowHtml(markers[i].myhtml);
						//centerOnPt(pt.lat()+0.001, pt.lng(), 14)
						//map.setCenter(pt, 14);
					}
				}

			});
		}
		
		mapDirections.load("from:"+fromPostal + " to:" + curAddr[1]);
	}
}