var DATE_FORMAT_ERROR = "Erreur sur la date saisie : date invalide.";
var EMPTY_OR_TOO_SMALL_KEYWORD_ERROR = "Veuillez bien remplir le formulaire de recherche: mot cl&eacute; vide ou court";
var PREVIOUS_EMPTY_KEYWORD_ERROR = "Veuillez bien remplir le formulaire de recherche: de haut en bas";
var TYPE_DOCUMENT_EMPTY = "Veuillez s&eacute;l&eacute;ctionner au moins un fonds documentaire.";


var emptyInput = null;
var errorInputDate;
function submitSearch(formId) {
	var myForm = document.getElementById(formId);
	var presentKey = false;	
	var continueCheckError = true;
	
	checkBullet = document.getElementById("advs4").checked;
	checkEtud = document.getElementById("advs1").checked;
	checkFormul = document.getElementById("advs2").checked;
	checkJoly = document.getElementById("advs3").checked;

	myForm.checkBulletins.value = checkBullet;
	myForm.checkEtudes.value = checkEtud;
	myForm.checkFormules.value = checkFormul;
	myForm.checkJolynews.value = checkJoly;

	try {
		if(errorInputDate) errorInputDate.style.border = "";
		emptyInput.style.borderColor = "";
	}
	catch(ex) {
	}

	var ok = (checkBullet || checkEtud || checkFormul || checkJoly); 

	// SI ON A PAS CHOISI UN TYPE DE DOCUMENT ALORS ERREUR
	if(!ok)
	{
		var msgBox = document.getElementById('msgDetailsError');
		var idPopupError = "popupError";		
		msgBox.innerHTML = TYPE_DOCUMENT_EMPTY;
		$.blockUI({ message: $('#' + idPopupError), css: { width: 'auto' } });
		return false;
	}	
	
	// SI LES CRITERES SONT AFFICH�S ON VERIFIE SI TOUT EST OK
	var showAdvancedCriterias = checkBullet;
	if(showAdvancedCriterias) {
		if(document.getElementById("radio1").checked) {
			myForm.dateOperator.value = "between";
			myForm.date0.value = document.getElementById("radio1J0").value + "/" + document.getElementById("radio1M0").value + "/" + document.getElementById("radio1A0").value;
			myForm.date1.value = document.getElementById("radio1J1").value + "/" + document.getElementById("radio1M1").value + "/" + document.getElementById("radio1A1").value;
			
		}
		else if(document.getElementById("radio2").checked){
			var selectBox = document.getElementById("dateOperS");
			myForm.dateOperator.value = selectBox.options[selectBox.selectedIndex].value;
			myForm.date0.value = document.getElementById("radio1J2").value + "/" + document.getElementById("radio1M2").value + "/" + document.getElementById("radio1A2").value;
			myForm.date1.value = "" ;
		}else{
			
		}
		
		// ON CONTROLE LA SAISIE DES CRIETERES SUR LES BULLETINS
		var dateError = false;
		
		if(document.getElementById("radio1").checked) {
			dateError = !checkIfDate(myForm.date0.value);
			if(verifyDateContains('0')){
				if(!dateError){
					dateError = !checkIfDate(myForm.date1.value);
					if(dateError) {
						errorInputDate = document.getElementById("option1J_1");
					}
				}
				else{
					errorInputDate = document.getElementById("option1J");
				}
			}else{
				dateError = !dateError;
			}
		}
		else if(document.getElementById("radio2").checked) {
			dateError = !checkIfDate(myForm.date0.value);
			if(verifyDateContains('2')){
				if(dateError) {
					errorInputDate = document.getElementById("option2J");
				}
			}
			else{
				dateError = !dateError;
			}
		}
		if(dateError) {	
			var msgBox = document.getElementById('msgDetailsError');
			var idPopupError = "popupError";
			msgBox.innerHTML = DATE_FORMAT_ERROR;
			$.blockUI({ message: $('#' + idPopupError), css: { width: 'auto' } });
			errorInputDate.style.border = "1px solid red";
			return false;
		}else if(document.getElementById("radio1").checked || document.getElementById("radio2").checked){
			continueCheckError = false;
		}
		ok =  verifyReferences();
	}
	
	if(ok && !verifyCriteresBulletin()  && continueCheckError) {
		var bool = false;
		var emptyPreviousKey = false;
		
		for(var j = 1; j <= 4; j++) {
			var myInput = eval("myForm.keyword" + j);			
			try {
				myInput.style.borderColor = "";
			}
			catch(ex) {
			}
			
			if(trim(myInput.value).toString().length > 1) {				
				presentKey = true;
				if (emptyPreviousKey) bool = true;
			}
			else {
				if (!emptyPreviousKey) emptyInput = myInput;
				emptyPreviousKey = true;
			}			
		}
		if(!presentKey) {
			var msgBox = document.getElementById('msgDetailsError');
			var idPopupError = "popupError";
			msgBox.innerHTML = EMPTY_OR_TOO_SMALL_KEYWORD_ERROR;
			$.blockUI({ message: $('#' + idPopupError), css: { width: 'auto' } });
			emptyInput.style.borderColor = "red";
			return false;
		}
		if (bool){
			var msgBox = document.getElementById('msgDetailsError');
			var idPopupError = "popupError";			
			msgBox.innerHTML = PREVIOUS_EMPTY_KEYWORD_ERROR;
			$.blockUI({ message: $('#' + idPopupError), css: { width: 'auto' } });			
			emptyInput.style.borderColor = "red";			
			return false;
		}
		return true;
	}
}

function resetCritereBulletin(){
	if(document.getElementById("advs4").checked){}
	else{
		resetJurisprudenceForm();
	}
}


function verifyDateContains(index){
	radioJ = document.getElementById("radio1J"+index).value.replace(/^\s+/g,'').replace(/\s+$/g,'') ;  
	radioM = document.getElementById("radio1M"+index).value.replace(/^\s+/g,'').replace(/\s+$/g,'') ;  
	radioA = document.getElementById("radio1A"+index).value.replace(/^\s+/g,'').replace(/\s+$/g,'') ;  
	if((radioJ != 'JJ' && radioJ != '') || (radioM != 'MM' && radioM != '') || (radioA != 'AAAA' && radioA != ''))
		return true;
	return false;
}

function verifyCriteresBulletin(){
	numDecision = document.getElementById("numDecision").value.replace(/^\s+/g,'').replace(/\s+$/g,'');  
	partie = document.getElementById("partie").value.replace(/^\s+/g,'').replace(/\s+$/g,'');  
	referenceAnnee = document.getElementById("referenceAnnee").value.replace(/^\s+/g,'').replace(/\s+$/g,'');  
	referencePara = document.getElementById("referencePara").value.replace(/^\s+/g,'').replace(/\s+$/g,'');  
	referencePage = document.getElementById("referencePage").value.replace(/^\s+/g,'').replace(/\s+$/g,'');  
	auteur = document.getElementById("auteur").value.replace(/^\s+/g,'').replace(/\s+$/g,'');  
	juridictionSelect = document.getElementById("juridiction");
	laJuridiction = juridictionSelect.options[juridictionSelect.selectedIndex].value;
	
	if( numDecision != '' || partie != '' || referenceAnnee != '' || referencePara != '' || referencePage != '' || auteur != '' || laJuridiction != '' )
		return true;
	return false;
}

function verifyReferences(){
	if(verifyCriteresReference('referenceAnnee')){
		if(verifyCriteresReference('referencePara')){
			return verifyCriteresReference('referencePage');
		}
		else{
			return false;
		}
	}
	return false;
}
function verifyCriteresReference(ID){
	referenceInput = document.getElementById(ID);
	referenceInput.style.borderColor = "";
	var reference = referenceInput.value.replace(/^\s+/g,'').replace(/\s+$/g,'');  
	if(trim(reference) != ''){
		if(isNaN(reference)){
			messageReference(referenceInput);
			return false;
		}
	}
	return true;
	
}

function messageReference(referenceInput) {
	var msgBox = document.getElementById('msgDetailsError');
	var idPopupError = "popupError";			
	msgBox.innerHTML = 'R&eacute;f&eacute;rence incorrecte : utiliser des chiffres pour <br> ann&eacute;, page et paragraphe.';
	$.blockUI({ message: $('#' + idPopupError), css: { width: 'auto' } });			
	referenceInput.style.borderColor = "red";				
}


function verifyInput(formId) {
	var myForm = document.getElementById(formId);
	
	if(trim(myForm.critere.value) == "") {
		var msgBox = document.getElementById('msgDetailsE');
		var idPopupError = "popupE";		
		if(!msgBox) {
			msgBox = document.getElementById('msgDetailsError');
			idPopupError = "popupError";
		}		
		msgBox.innerHTML = "Veuillez renseigner votre recherche.";
		$.blockUI({ message: $('#' + idPopupError), css: { width: 'auto' } });		
		return false;
	}
	return true;
}

function verifyTocSelection(base, selection){

	var myArray = selection.split(", ");
	var tocLevel;
	var tocBox;
	for(i=0;i<myArray.length;i++){
		if(myArray[i].length>0){
			var levelArray = myArray[i].split("-");
			var myElement = document.getElementById(myArray[i]);
			if (levelArray.length==2) {//niveau 1
				//r�cup�rer l'id de l'�l�ment � s�lectionner
				tocLevel = myElement.getAttribute("tocLevel");
				tocBox = document.getElementById(tocLevel);
				tocBox.checked=true;
				propagateChildren( tocBox, 0, false );
				//propagateParent( tocBox, 0 );
			}
			/*else if (levelArray.length==3) {//niveau 2
				tocLevel = myElement.getAttribute("tocLevel");
				tocBox = document.getElementById(tocLevel);
				tocBox.checked=true;
				//ouvrir le parent
				shortId = tocLevel.substr(3, tocLevel.length-3);
				tab = shortId.split("N");
				var parentId = tocLevel.substr(0, tocLevel.length-tab[tab.length-1].length-1);
				var parentbox =  document.getElementById(parentId);
				var parentElt = document.getElementById(parentbox.value);
				joly_docs_view_display(parentElt);
				loadChild(base, myElement);
			}*/
			else if (levelArray.length==3) {//niveau feuille
				if (!myElement){
					parentId = levelArray[0]+"-"+levelArray[1];
					parentElt = document.getElementById(parentId);
					tocParentLevel = parentElt.getAttribute("tocLevel");
					tocParentBox = document.getElementById(tocParentLevel);
					//ouvrir le parent racine
					shortId = tocParentLevel.substr(3, tocParentLevel.length-3);
					tab = shortId.split("N");
					var rootId = tocParentLevel.substr(0, tocParentLevel.length-tab[tab.length-1].length-1);
					var rootbox =  document.getElementById(rootId);
					var rootElt = document.getElementById(rootbox.value);
					joly_docs_view_display(rootElt);
					//Load Children
	   				loadChild_restitue(base, parentElt, myArray[i]);
				}
				else{
					checkElement(myArray[i]);
				}
			}
		}
	}
}

function loadChild_restitue(base, obj, currentEltId) {
	myElement = document.getElementById(currentEltId);
	if (!myElement){
		var idToc = obj.getAttribute("tocId");
		var useCheckbox = obj.getAttribute("useCheckbox");
		var tocLevel = "INP";
		if (obj.getAttribute("tocLevel")){
			tocLevel = obj.getAttribute("tocLevel");
		}
		var parent = obj.parentNode;
		if(parent.getElementsByTagName("table").length > 0){
			joly_docs_view_display(obj);
			return;
		}
		if(idToc) {
			jQuery.post(base + "/document/tocChildren",{idToc:idToc, useCheckbox:useCheckbox, tocLevel:tocLevel},
				function(data, textStatus, response) {
					myElement = document.getElementById(currentEltId);
					if(!myElement){
						parent.innerHTML += data;
						joly_docs_view_display(parent.getElementsByTagName("a")[0]);
		   				currentElement = window.document.getElementById(tocLevel);
		   				if (currentElement){
			   				propagateChildren( currentElement, 0, false );
			   			}
		   				checkElement(currentEltId);
			   		}
			   		else{
		   				checkElement(currentEltId);
			   		}
		   		}
		   	);
			
		} 
	}
	else{
		//Selectionner l'element courant
		checkElement(currentEltId);
	}	
}

function checkElement(elementId){
	myElement = document.getElementById(elementId);
	if (myElement){
		tocLevel = myElement.getAttribute("tocLevel");
		tocBox = document.getElementById(tocLevel);
		tocBox.checked=true;	
	}
}

function showLargeToc() {	
	var header = document.getElementById('tocLargeHeader')
	header.style.display = 'block';
	var table_box = document.getElementById('table_box2');
	table_box.className = 'table_box_toc_large';
	// On a ici une lergeur fixe de 600 d�finie dans la CSS (pas besoin d'une grande largeur) et tous les navigateurs doivent avoir normalement au moins 600px de largeur dispo.
	// Par contre il faut la positioner au milieu
	// Pour la hauteur, on la calcule dynamiquement
	var h = document.documentElement.clientHeight;
	var w = document.documentElement.clientWidth;
	var startW = w - 600;
	if (startW > 0) startW = startW / 2 ;
	else startW = 0;
	
	// C'est la hauteur du corps qu'on calcule par la hauetur de tout la popup ; il faut donc ajouter le header pour ne pas trop d�caler vers le bas
	var sizeH = (h * 60) / 100;
	var startH = h - (sizeH + header.offsetHeight);
	if (startH > 0) startH = startH / 2 ;
	else startH = 0;	

	startW = startW + 'px';	
	sizeH = sizeH + 'px';
	startH = startH + 'px';
	
	
	$.blockUI({ message: $('#tocLarge'), css: { width: 'auto' , height : 'auto', top: startH , left : startW } });
	//Reglage de la hauteur en fonction du user
	table_box.style.height = sizeH;
}

function showSmallToc() {	
	closeDialog();
	setTimeout("private_reInitStyleForSmallToc();", 150);
}

function private_reInitStyleForSmallToc() {
	document.getElementById('tocLargeHeader').style.display = 'none';
	var table_box = document.getElementById('table_box2');
	// On supprime le reglage dynamique de la hauteur pour utiliser celui de la classe CSS
	table_box.removeAttribute("style");
	// On reviens a la classe css d origine
	table_box.className = 'table_box2';
}