function openColor(input)
{
	color = document.getElementById("assistantForm:" + input).value;
	url = "./colorwheel.jsp?color=" + escape(color) + "&id=" + escape("assistantForm:" + input) + "&divid=div" + input;  
	window.open(url,"colorPicker","directories=no,width=450,height=310,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no");
}

function setDivColor()
{
	color = document.getElementById("assistantForm:colorstart").value;
	document.getElementById('divcolorstart').style.backgroundColor="rgb(" + color + ")";
	color = document.getElementById("assistantForm:colorend").value;
	document.getElementById('divcolorend').style.backgroundColor="rgb(" + color + ")";
}

function applyCorners(arg,size,corners){
	var options = {
     tl: { radius: size },
	 tr: { radius: size },
	 bl: { radius: size },
	 br: { radius: size },
	 antiAlias: true,
	 autoPad: false
	};
	
	if(corners){
		if(! corners.tl)
			options.tl = false;
		if(! corners.tr)
			options.tr = false;
		if(! corners.bl)
			options.bl = false;
		if(! corners.br)
			options.br = false;
	}
	var cornersObj = new curvyCorners(options, $(arg));
	cornersObj.applyCornersToAll();
}

function initOverview()
{
	var overviewDiv = document.getElementById("overview");
	if (overviewDiv)
		document.getElementById("MapControlDiv_Map0").appendChild(overviewDiv);
}

function setCrimeGroup(idCrimeGroup)
{
	if (!idCrimeGroup)
		document.getElementById('crimeGroup').value='';
	else
		document.getElementById('crimeGroup').value=idCrimeGroup;
}

function setCrime(idCrime)
{
	if (!idCrime)
		document.getElementById('crime').value='';
	else
		document.getElementById('crime').value=idCrime;
}

function setCrimeCrimeGroupInit(idCrimeGroup,idCrime){
	if(idCrime == ''){
		setCrime(0);
	}else{
		setCrime(idCrime);
	}
	if(idCrimeGroup == ''){
		setCrimeGroup(0);
	}else{
		setCrimeGroup(idCrimeGroup);
	}
}

function signalSelectElem(elem,color){
	var prevElem = $$(".selCg");
	if(prevElem){
		clearGradients();
		for(var i = 0 ; i < prevElem.length ; i++){
			prevElem[i].className= "unselectedCg crimeGroup";
		}
	}
	elem.className="gradient " + color + " F0F5FA horizontal selCg crimeGroup";
	createGradient();
}



function signalBasicSelectElem(elem){
	var prevElem = $$(".selBasicCg");
	if(prevElem){
		for(var i = 0 ; i < prevElem.length ; i++){
			prevElem[i].toggleClassName("selBasicCg");
			//arrondis
			var children = Element.childElements(prevElem[i]);
			for(var j = 1 ; j < children.length ; j++){ //on veut garder 0
				prevElem[i].removeChild(children[j]);
			}
			prevElem[i].style.borderTopWidth="0px";
			prevElem[i].style.borderBottomWidth="0px";
			prevElem[i].setStyle({cursor: "pointer"});
			var cornersObj = new curvyCorners({
				tl: { radius: 10 },
				tr: { radius: 10 },
				bl: { radius: 10 },
				br: { radius: 10 },
				antiAlias: true,
				autoPad: false
			}, prevElem[i]);
			cornersObj.applyCornersToAll();
		}
	}
	
	$(elem).toggleClassName("selBasicCg");
	//arrondis
	var children = Element.childElements(elem);
	for(var j = 1 ; j < children.length ; j++){ //on veut garder 0
		elem.removeChild(children[j]);
	}
	elem.style.borderTopWidth="3px";
	elem.style.borderBottomWidth="3px";
	elem.setStyle({cursor: "pointer"});
	var cornersObj = new curvyCorners({
		tl: { radius: 10 },
		tr: { radius: 10 },
		bl: { radius: 10 },
		br: { radius: 10 },
		antiAlias: true,
		autoPad: false
	}, elem);
	cornersObj.applyCornersToAll();
}


function hasCrimeAncestor(elem,id){
   var elemParent = elem.parentNode;
	while(elemParent && elemParent.tagName == "DIV" && elemParent.id != "crimeList"){
		if(elemParent.id == id)
			return true;
		elemParent = elemParent.parentNode;
	}
	return false;
}

var outObjectId = undefined;
var timeOutObjectId = 0;

function signalBasicOutElement(ev,force){
	var prevElem = $$(".selBasicHoverCg");
	var relTarg = ev.relatedTarget || ev.fromElement;
	var tg = (window.event) ? ev.srcElement : ev.target;
	if(prevElem){
		for(var i = 0 ; i < prevElem.length ; i++){
			if(prevElem[i].hasClassName("selBasicHoverCg")) {
				if(relTarg != undefined && relTarg != null && !force && hasCrimeAncestor(relTarg,prevElem[i].id.replace("_Div",""))){
					continue;
				}
				
				outObjectId = prevElem[i].id;
				
				prevElem[i].toggleClassName("selBasicHoverCg");
				prevElem[i].setStyle({ background : prevElem[i].original_color });
								
				//arrondis
				var children = Element.childElements(prevElem[i]);
				for(var j = 1 ; j < children.length ; j++){ //on veut garder 0
					prevElem[i].removeChild(children[j]);
				}
				
				if( prevElem[i].hasClassName("selBasicCg")) {
					prevElem[i].style.borderTopWidth="3px";
					prevElem[i].style.borderBottomWidth="3px";
				}else{
					prevElem[i].style.borderTopWidth="0px";
					prevElem[i].style.borderBottomWidth="0px";
				}
								
				prevElem[i].setStyle({cursor: "pointer"});
				var cornersObj = new curvyCorners({
					tl: { radius: 10 },
					tr: { radius: 10 },
					bl: { radius: 10 },
					br: { radius: 10 },
					antiAlias: true,
					autoPad: false
				}, prevElem[i]);
				cornersObj.applyCornersToAll();
				
				timeOutObjectId = new Date().getTime();
			}
		}
	}
}

function signalBasicHoverElement(elem,ev){
	var relTarg = ev.relatedTarget || ev.fromElement;
	var tg = (window.event) ? ev.srcElement : ev.target;
	
	//events out of order : big hack
	if((tg.id != (elem.id + "_Div") && !hasCrimeAncestor(tg,elem.id)) || (outObjectId == elem.id && timeOutObjectId + 300 > new Date().getTime())){
		return;
	}
	
	signalBasicOutElement(ev,true);
	elem = $(elem);
	if(! elem.hasClassName("selBasicHoverCg")){
		elem.toggleClassName("selBasicHoverCg");
		elem.original_color = elem.original_color || elem.getStyle("background");
		elem.setStyle({ background : "#F0F5FA" });
		
		//arrondis
		var children = Element.childElements(elem);
		for(var j = 1 ; j < children.length ; j++){ //on veut garder 0
			elem.removeChild(children[j]);
		}
		
		if(elem.hasClassName("selBasicCg")) {
			elem.style.borderTopWidth="3px";
			elem.style.borderBottomWidth="3px";
		}else{
			elem.style.borderTopWidth="0px";
			elem.style.borderBottomWidth="0px";
		}
		
		elem.setStyle({cursor: "pointer"});
		var cornersObj = new curvyCorners({
			tl: { radius: 10 },
			tr: { radius: 10 },
			bl: { radius: 10 },
			br: { radius: 10 },
			antiAlias: true,
			autoPad: false
		}, elem);
		cornersObj.applyCornersToAll();
	}
}


function displayHide()
{
	var select = document.getElementById('period').value;

	if (select == 0)
	{
		document.getElementById('mois').style.display='block';
		document.getElementById('firstMois').style.display='none';
		document.getElementById('lastMois').style.display='none';
		document.getElementById('from').style.display='none';
		document.getElementById('to').style.display='none';
		document.getElementById('annee').style.display='none';
	}
	else if(select == 1)
	{
		document.getElementById('mois').style.display='none';
		document.getElementById('firstMois').style.display='block';
		document.getElementById('lastMois').style.display='block';
		document.getElementById('from').style.display='block';
		document.getElementById('to').style.display='block';
		document.getElementById('annee').style.display='none';
	} else if (select == 2)
	{
		document.getElementById('mois').style.display='none';
		document.getElementById('firstMois').style.display='none';
		document.getElementById('lastMois').style.display='none';
		document.getElementById('from').style.display='none';
		document.getElementById('to').style.display='none';
		document.getElementById('annee').style.display='block';
	}
}

function replaceDiv(id, sec)
{
	Effect.Appear(id,{ duration : sec});
}

function informationToolInit() {
  EsriControls.addPostBackTagHandler("information-cc", informationCCTagHandler);
}

function informationCCTagHandler(xml, eventSources) {
	var elem = $("mapInformationTip");
	var elemContent = $("mapInformationTipContent");
  	var x = xml.getElementsByTagName("xclick").item(0).firstChild.nodeValue;
  	var y = xml.getElementsByTagName("yclick").item(0).firstChild.nodeValue;
  	var mapPos = findPos($('MapGraphics_Map0_gc'));
  	elem.style.left =(mapPos[0] + parseInt(x) - 300)+ "px";
  	elem.style.top = (mapPos[1] + parseInt(y) ) + "px";
  	var infoTip =
  		"<div class='ifTitle'>" + xml.getElementsByTagName("zone").item(0).firstChild.nodeValue + "</div>" + 
  		"<div class='ifValue'><span class='ifField'>"+ xml.getElementsByTagName("crimeLabel").item(0).firstChild.nodeValue + "</span></div>" +
  		"<div class='ifValue'><span class='ifField'>"+ xml.getElementsByTagName("indLabel").item(0).firstChild.nodeValue + "</span> : " + xml.getElementsByTagName("indValue").item(0).firstChild.nodeValue + "</div>";
  	var fieldNames = xml.getElementsByTagName("fieldname");
  	var fieldValues = xml.getElementsByTagName("fieldvalue");
  	for(var i = 0; i < fieldNames.length; i++){
  		infoTip += 
  			"<div class='ifValue'><span class='ifField'>" + fieldNames.item(i).firstChild.nodeValue + "</span> : " + fieldValues.item(i).firstChild.nodeValue + "</div>";
   	}
   	elemContent.innerHTML = infoTip;
  	elem.style.visibility = "visible";		
}
  
function deleteSelectedElementValue(id){
	if($(id)){
 		Element.remove($(id));
 	}
}

function deleteInformationSelected(){
	deleteSelectedElementValue('selectedElementValueLbl');
  	deleteSelectedElementValue('selectedElementNameLbl');
}
  
  
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}

function changeMethod(){
  if($('assistantForm:classifyMethod').value == 3){
 	 $('assistantForm:class_count').disabled = true;
  }else{
	 $('assistantForm:class_count').disabled = false;
  }
}

function disableNormVariationCheck(){
	$('assistantForm:isNorm').disabled = true;
	$('assistantForm:isNorm').checked = false;
	$('assistantForm:isNormText').disabled = true;
	$('assistantForm:isVariation').disabled = true;
	$('assistantForm:isVariation').checked = false;
	$('assistantForm:isVariationText').disabled = true;
}

function changeNorm(s){
	if($('period').value == 0){
		disableNormVariationCheck();
	}else if($('period').value == 1){
		//norm
		var first = $('firstMois');
		var last = $('lastMois');
		var amF = first.value;
		var anneeF = amF.slice(0,4);
		var moisF = amF.slice(4);
		var amL = last.value;
		var anneeL = amL.slice(0,4);
		var moisL = amL.slice(4);
		
		disableNormVariationCheck();
				
		//selectmois
		if(s == first){
			var optionsL = last.options;
			if(last.value <= first.value){
				last.value = first.value;
				select_current[last.id] = last.selectedIndex; //pour restore
			}
			for(var i = optionsL.length - 1 ; i >= 0 ; i--){
				if(optionsL[i].value < first.value){
					optionsL[i].disabled = true;
				}else{
					optionsL[i].disabled = false;
				}
			}
			emulate(last);
		}else{
			restore(last);
			select_current[last.id] = last.selectedIndex;
		}
	}else if($('period').value == 2) {
		var annee = $('annee').value;
		$('assistantForm:isNorm').disabled = false;
		$('assistantForm:isNormText').disabled = false;
		if(annee != "1996"){
			$('assistantForm:isVariation').disabled = false;
			$('assistantForm:isVariationText').disabled = false;
		} else {
			$('assistantForm:isVariation').checked = false;
			$('assistantForm:isVariation').disabled = true;
			$('assistantForm:isVariationText').disabled = true;
			
		}
	}
}

select_current = new Object();

function restore(e) {
 if (e.options[e.selectedIndex].disabled) {
	 e.selectedIndex = window.select_current[e.id];
  }
}

function emulate(e) {
 for (var i=0, option; option = e.options[i]; i++) {
	if (option.disabled) {
   		option.style.color = "graytext";
   	}else {
   		option.style.color = "menutext";
   }
 }
}

function handleZoom(index) {
	if(index == 0)
		return;
	var map = EsriControls.maps["Map0"];
	
	if (map != null)
	{
	    map.showLoading();
	    var params = "zoomOn=zoomOn&doContinuousPan=doContinuousPan&resizeMap=resizeMap&source="
		    + map.mapSources[map.mapSourceNames[0]].type + "&formId=" + map.formId + "&mapId=" + map.id + "&width=" + map.width + "&height="
		    + map.height + "&" + EsriUtils.buildRequestParams(map.formId);
	    var xh = EsriUtils.sendAjaxRequest(EsriUtils.getServerUrl(map.formId), params, false, function()
	    	{ EsriControls.processPostBack(xh); });
    }
}

function handleSearch(e){
	var keynum;
	var keychar;
	var numcheck;

	if(window.event) // IE
  	{
  		keynum = e.keyCode;
  	}else if(e.which) // Netscape/Firefox/Opera
 	{
  		keynum = e.which;
 	}
 	keychar = String.fromCharCode(keynum);
 	if (keychar == "\r") {
 		$('frmMap:searchButton').click();
 	}
 	e.cancelBubble = true;
}


function setupPing(pingInterval) {
	// Maintain the AGS session
	var ping = function() {
		new Ajax.Request(
				"ping", 
				{
					method: 'get', 
					parameters: "ts=" + (new Date()).getTime()
				});
		setTimeout(ping, pingInterval);
	};
	setTimeout(ping, pingInterval);
}

