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 KEYWORD_ERROR = "Saisi mots cl&eacute;s incorrect";
var TYPE_DOCUMENT_EMPTY = "Veuillez s&eacute;l&eacute;ctionner au moins un fonds documentaire.";


var emptyInput = null;
var errorInput = 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;
	checkBulletB = document.getElementById("advs40").checked;
	checkEtudB = document.getElementById("advs10").checked;
	checkJolyB = document.getElementById("advs30").checked;

	myForm.checkBulletins.value = checkBullet;
	myForm.checkEtudes.value = checkEtud;
	myForm.checkFormules.value = checkFormul;
	myForm.checkJolynews.value = checkJoly;
	myForm.checkBulletinsB.value = checkBulletB;
	myForm.checkEtudesB.value = checkEtudB;
	myForm.checkJolynewsB.value = checkJolyB;

	try {
		if(errorInputDate) errorInputDate.style.border = "";
		emptyInput.style.borderColor = "";
	}
	catch(ex) {
	}

	var ok = (checkBullet || checkEtud || checkFormul || checkJoly || checkBulletB || checkEtudB || checkJolyB); 

	// 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 || checkBulletB;
	if(checkBullet || checkBulletB) {
		if(document.getElementById("radio1").checked) {
			if(document.getElementById("radio1J0").value == 'JJ') document.getElementById("radio1J0").value = '';
			if(document.getElementById("radio1M0").value == 'MM') document.getElementById("radio1M0").value = '';
			if(document.getElementById("radio1A0").value == 'AAAA') document.getElementById("radio1A0").value = '';
			if(document.getElementById("radio1J1").value == 'JJ') document.getElementById("radio1J1").value = '';
			if(document.getElementById("radio1M1").value == 'MM') document.getElementById("radio1M1").value = '';
			if(document.getElementById("radio1A1").value == 'AAAA') document.getElementById("radio1A1").value = '';
			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){
			if(document.getElementById("radio1J2").value == 'JJ') document.getElementById("radio1J2").value = '';
			if(document.getElementById("radio1M2").value == 'MM') document.getElementById("radio1M2").value = '';
			if(document.getElementById("radio1A2").value == 'AAAA') document.getElementById("radio1A2").value = '';
			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 = "" ;
		}		
		// ON CONTROLE LA SAISIE DES CRIETERES SUR LES BULLETINS
		var dateError = false;
		
		if(document.getElementById("radio1").checked) {
			dateError = !isFormatBefofeCheck(myForm.date0.value);
			if(verifyDateContains('0')){
				continueCheckError = false;
				if(!dateError){
					dateError = !checkDateTo(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 = !checkDateTo(myForm.date0.value);
			if(verifyDateContains('2')){
				continueCheckError = false;
				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";
			continueCheckError = false;
			return false;
		}
		ok =  verifyReferences();
	}
	
	if(ok && !verifyCriteresBulletin() && continueCheckError) {
		var bool = false;
		var notAutoriz = 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(!notAutoriz){
				notAutoriz = !verifFullText(trim(myInput.value));
				if(notAutoriz) errorInput = myInput;
			}
		}
		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;
		}
		if (notAutoriz){
			var msgBox = document.getElementById('msgDetailsError');
			var idPopupError = "popupError";			
			msgBox.innerHTML = KEYWORD_ERROR;
			$.blockUI({ message: $('#' + idPopupError), css: { width: 'auto' } });			
			errorInput.style.borderColor = "red";			
			return false;
		}
		return true;
	}
}
function setToFormatDateJJMMAAAA(dateStr){
	var jjmmaaaa = dateStr;
	var tabDate = dateStr.split("/");
	if(tabDate.length > 2){
		if(tabDate[0].length == 1) jjmmaaaa = '0'+tabDate[0];
		else jjmmaaaa = tabDate[0];
		if(tabDate[1].length == 1) jjmmaaaa = jjmmaaaa + '/0'+tabDate[1];
		else jjmmaaaa = jjmmaaaa + '/' + tabDate[1];
		
		jjmmaaaa = jjmmaaaa + '/' + tabDate[2];
	}
	return jjmmaaaa;
}

function isFormatBefofeCheck(dateStr){
	dateStr = setToFormatDateJJMMAAAA(dateStr);
	var tabDate = dateStr.split("/");
	var leng =  trim(tabDate[0]).toString().length + trim(tabDate[1]).toString().length + trim(tabDate[2]).toString().length;
	var leng1 =  trim(tabDate[0]).toString().length + trim(tabDate[1]).toString().length;
	var leng2 =  trim(tabDate[0]).toString().length;
	if(leng == 4 && leng1 == 0 && leng2 == 0){	
		var annnee = Number(tabDate[0]);
		if(annnee == Number.NaN) return false;
		return true;
	}
	else if(leng == 6 && leng2 == 0){	
		var mois = Number(tabDate[0]);
		if(mois == Number.NaN) return false;
		var annnee = Number(tabDate[1]);
		if(annnee == Number.NaN) return false;
		return true;
	}
	else if(leng == 8){
		return checkIfDate(dateStr);
	}
	else if(leng <= 7){
		return false;
	}
	return true;	
}
function checkDateTo(dateStrTo){
	var tabDateTo = dateStrTo.split("/");
	if(trim(dateStrTo).toString().length == 2){
		return true;	
	}
	return isFormatBefofeCheck(dateStrTo);
}

function verifFullText(valueTxt){
	var theLength = valueTxt.length;
	if(theLength == 2){
		if(valueTxt.charAt(0) == '"' && valueTxt.charAt(1) == '"')
			return false;
	}
	return true;
}
function resetCritereBulletin(){
	if(document.getElementById("advs4").checked || document.getElementById("advs40").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) == "" || !verifFullText(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 );
			}
			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';
}

function onCheckBourseSoc(url){
	var eltSociete = document.getElementById('fondSocCheck');
	var eltBourse = document.getElementById('fondBoursCheck');
	
	if(eltSociete) {
		url = url + '&checkSociete='+eltSociete.checked;
	}
	else url = url + '&checkSociete=false';
	
	if(eltBourse) {
		url = url + '&checkBourse='+eltBourse.checked;
	}
	else url = url + '&checkBourse=false';
	
	var fondSoc = 'false';
	if((eltSociete && eltSociete.checked) && (!eltBourse || !eltBourse.checked)){
		fondSoc = 'true';
	}
	url = url  + '&fondSociete=' + fondSoc;
	window.location.href = url;
}
