
var vText;
var errorMessage;
var errorMessageS;
var errorMessageB;
var errorMessageR;
var errorMessageT;
var errorMessageA;
var errorMessageContact;


function progressBarHide() {
	alertForm.style.display='block'; 
	progressBar.style.display='none'; 
}

function progressBarShow() {
	alertForm.style.display='none'; 
	progressBar.style.display='block'; 
}

function checkSB() {

	clearErrorMessages();
	checkFields('S'); 
	checkFields('B');
	checkTels();
	checkEmail('');

	errorMessage = errorMessageS;
	if (document.AddNewSB.depsB.value!='') { 
		 errorMessage = errorMessage + errorMessageB;
	}
	errorMessage = errorMessage + errorMessageContact;
	
	if (errorMessage=='') { 
     	document.forms[1].submit();	
    } else {
		alert(errorMessage);
	}

}

function checkBS() {

	clearErrorMessages();
	checkFields('B'); 
	checkFields('S');
	checkTels();
	checkEmail('');

	errorMessage = errorMessageB;
	if (document.AddNewBS.depsS.value!='') { 
		 errorMessage = errorMessage + errorMessageS;
	}
	errorMessage = errorMessage + errorMessageContact;
	
	if (errorMessage=='') { 
     	document.forms[1].submit();	
    } else {
		alert(errorMessage);
	}
	
}


function checkR() {

	clearErrorMessages();
	checkFields('R'); 
	checkTels();
	checkEmail('');
	errorMessage = errorMessageR + errorMessageContact;
	if (errorMessage=='') { 
     	document.forms[1].submit();	
    } else {
		alert(errorMessage);
	}
	
}

function checkT() {

	clearErrorMessages();
	checkFields('T'); 
	checkTels();
	checkEmail('');
	errorMessage = errorMessageT + errorMessageContact;
	if (errorMessage=='') { 
     	document.forms[1].submit();	
    } else {
		alert(errorMessage);
	}
	
}

function checkSBRT() {

	clearErrorMessages();
	checkFields('S'); 
	checkFields('B'); 
	checkFields('R'); 
	checkTels();
	checkEmail('yes');


	if (document.EditSBRT.depsS.value!='') { 
		 errorMessage = errorMessage + errorMessageS;
	}
	if (document.EditSBRT.depsB.value!='') { 
		 errorMessage = errorMessage + errorMessageB;
	}
	if (document.EditSBRT.depsR.value!='') { 
		 errorMessage = errorMessage + errorMessageR;
	}
	errorMessage = errorMessage + errorMessageContact;
	
	if (errorMessage=='') { 
	   	document.forms[0].submit();		
	} else {
		alert(errorMessage);
	}
	
}

function checkAnnonces() {

	document.forms[0].pageNum.value = 1;

	checkFields('A', 'true'); 
	if (errorMessage=='') { 
	   	document.forms[0].submit();		
	} else {
		alert(errorMessage);
	}
	
}


function clearErrorMessages() {

	errorMessage = "";
	errorMessageS = "";
	errorMessageB = "";
	errorMessageR = "";
	errorMessageT = "";
	errorMessageA = "";
	errorMessageContact = "";

}

function checkFields(pDataType) 
{ 
	errorMessage = "";

	checkDeps(pDataType);
	checkTowns(pDataType);
	if (pDataType != "A") {   //don;t check this for the search screen
		checkTypes(pDataType);
	}
	checkPrice(pDataType);
	if (pDataType != "A") {   //don;t check this for the search screen
		checkDesc(pDataType);
	}
		
	checkRooms(pDataType);
	checkSurface(pDataType);

	if ((errorMessage != "") && (pDataType == "S")) {
		errorMessageS = "\nVENDEUR\n" + errorMessage;
	}
	if ((errorMessage != "") && (pDataType == "B")) {
		errorMessageB = "\nACHETEUR\n" + errorMessage;
	}
	if ((errorMessage != "") && (pDataType == "R")) {
		errorMessageR = "\nBAILLEUR\n" + errorMessage;
	}
	if ((errorMessage != "") && (pDataType == "T")) {
		errorMessageT = "\nLOCATAIRE\n" + errorMessage;
	}
	if ((errorMessage != "") && (pDataType == "A")) {
		errorMessageA = errorMessage;
	}

		
}

function checkEmail(pLoggedIn) {

	errorMessage = "";

	var vEmailElement = document.getElementById("emailAlert");
	vEmail = vEmailElement.value;
	vEmail = trim(removeAllWhiteSpaces(vEmail));
	document.getElementById("emailAlert").value = vEmail
	
	if (vEmail == "") {
		errorMessageContact = errorMessageContact + "\nL\'adresse email: Veuillez saisir une adresse email.\n";
	} else if (isEmailValid(vEmail) == false) {
		errorMessageContact = errorMessageContact + "\nL\'adresse email: Le format n\'est pas valide.\n";
	}
	
}

function checkTels() {

	var vTelFixElement = document.getElementById("telFix");
	vTelFix = vTelFixElement.value;
	vTelFix = trim(removeAllNonNumerics(vTelFix));
	document.getElementById("telFix").value = vTelFix;
	
	var vTelPortElement = document.getElementById("telPort");
	vTelPort = vTelPortElement.value;
	vTelPort = trim(removeAllNonNumerics(vTelPort));
	document.getElementById("telPort").value = vTelPort;
}


function checkDeps(pDataType) 
{ 

	var vDepsElement = document.getElementById("deps" + pDataType);
	vDeps = vDepsElement.value;
	vDeps = trim(removeNonNumerics(vDeps));
	vDeps = trim(removeAllWhiteSpaces(vDeps));
	document.getElementById("deps" + pDataType).value = vDeps;

	if (vDeps == "") {
		errorMessage = errorMessage + "Départment : Veuillez saisir un département.\n";
 	} else if (checkDepIntegrity(vDeps) == false) {
		errorMessage = errorMessage + "Départment : Le département n\'est pas valide.\n"; 
	}
	
}

function checkTowns(pDataType) 
{ 
	var vTownsElement = document.getElementById("towns" + pDataType);
	vTowns = vTownsElement.value;
	vTowns = vTowns.toUpperCase();
	vTowns = replaceAccents(vTowns);
	vTowns = replaceNonAlphaNumerics(vTowns);
	vTowns = removeMultipleWhiteSpaces(vTowns);
	vTowns = trim(vTowns);
	document.getElementById("towns" + pDataType).value = vTowns;

	if (vTowns.length > 250) {
		errorMessage = errorMessage + 'Ville(s) : Vous dépassez le maximum de 250 caractères. Réduisez le nombre de caractères et essayez à nouveau.\n';
	} else {
		//Town contains numbers (i.e. postcodes) ?
		//First remove PARIS(01-20), MARSEILLE(01-16), LYON(01-09)
		vTowns = vTowns.replace(/PARIS(0[1-9]|1[0-9]|20)+/gim, '');
		vTowns = vTowns.replace(/MARSEILLE(0[1-9]|1[0-6])+/gim, '');
		vTowns = vTowns.replace(/LYON(0[1-9])+/gim, '');
		if (hasNumbers(vTowns) == true) {
			errorMessage = errorMessage + 'Ville(s) : n\'utilisez que des villes, les chiffres ne sont pas permis, sauf les arrondissements comme PARIS01, MARSEILLE16, LYON09 etc.';
		}
	}

	if ( ( pDataType=="S" ) || ( pDataType=="R" ) ) {
		if ( vTowns == "" ) {
			errorMessage = errorMessage + 'Ville : Veuillez saisir la ville.\n';
		}	
	}	
}


function checkTypes(pDataType) 
{ 
	var counter = 1;
	var typeOK = false;
	var vType = ""
	for (counter = 1; counter <= 5; counter++) {
		if (document.getElementById("type" + pDataType + counter).checked) { 
			vType = vType + " " + document.getElementById("type" + pDataType + counter).value;
			typeOK = true; 
		}
	}
	if (typeOK == false) {
		errorMessage = errorMessage + 'Type: Veuillez sélectionner au moins un type.\n';
	} else {
		vType = trim(vType);
	}

	return errorMessage;

}
	
function checkRooms(pDataType) 
{ 
	
	if ( (pDataType== "S") || (pDataType== "R") ) {

		var vRoomsElement = document.getElementById("rooms" + pDataType);
		vRooms = vRoomsElement.value;
		vRooms = trim(removeAllWhiteSpaces(vRooms))
		document.getElementById("rooms" + pDataType).value = vRooms;
		
		if (onlyNumbers(vRooms) == false) {
			document.getElementById("rooms" + pDataType).value = '';
		}
	
	} else {
	
		var vRoomsMinElement = document.getElementById("roomsMin" + pDataType);
		var vRoomsMaxElement = document.getElementById("roomsMax" + pDataType);
		vRoomsMin = vRoomsMinElement.value;
		vRoomsMax = vRoomsMaxElement.value;
		vRoomsMin = trim(removeAllWhiteSpaces(vRoomsMin))
		vRoomsMax = trim(removeAllWhiteSpaces(vRoomsMax))
		document.getElementById("roomsMin" + pDataType).value = vRoomsMin;
		document.getElementById("roomsMax" + pDataType).value = vRoomsMax;
		
		if (onlyNumbers(vRoomsMin) == false) {
			document.getElementById("roomsMin" + pDataType).value = '';
		}
		if (onlyNumbers(vRoomsMax) == false) {
			document.getElementById("roomsMax" + pDataType).value = '';
		}
		if (parseInt(vRoomsMin) > parseInt(vRoomsMax)){
			errorMessage = errorMessage + 'Pièce(s): Min pièce(s) > Max pièce(s).\n';
		}

	} 
}
		
function checkSurface(pDataType) 
{ 

	if ( (pDataType== "S") || (pDataType== "R") ) {

		var vSurfaceElement = document.getElementById("surface" + pDataType);
		vSurface = vSurfaceElement.value;
		vSurface = trim(removeNonNumerics(vSurface));
		vSurface = trim(removeAllWhiteSpaces(vSurface))
		document.getElementById("surface" + pDataType).value = vSurface;
		
		if (onlyNumbers(vSurface) == false) {
			errorMessage = errorMessage + 'Surface: la surface n\'est pas numérique.\n';
		}

	} else {
	
		var vSurfaceMinElement = document.getElementById("surfaceMin" + pDataType);
		var vSurfaceMaxElement = document.getElementById("surfaceMax" + pDataType);
		vSurfaceMin = vSurfaceMinElement.value;
		vSurfaceMax = vSurfaceMaxElement.value;
		vSurfaceMin = trim(removeNonNumerics(vSurfaceMin));
		vSurfaceMax = trim(removeNonNumerics(vSurfaceMax));
		vSurfaceMin = trim(removeAllWhiteSpaces(vSurfaceMin))
		vSurfaceMax = trim(removeAllWhiteSpaces(vSurfaceMax))
		document.getElementById("surfaceMin" + pDataType).value = vSurfaceMin;
		document.getElementById("surfaceMax" + pDataType).value = vSurfaceMax;

	
		if (onlyNumbers(vSurfaceMin) == false) {
			document.getElementById("surfaceMin" + pDataType).value = '';
		}
		if (onlyNumbers(vSurfaceMax) == false) {
			document.getElementById("surfaceMax" + pDataType).value = '';
		}
		if (parseInt(vSurfaceMin) > parseInt(vSurfaceMax)) {
			errorMessage = errorMessage + 'Surface: Min surface > Max surface.\n';
		}

	}
	
}


function checkPrice(pDataType) 
{ 

	if ( (pDataType== "S") || (pDataType== "R") ) {

		var vPriceElement = document.getElementById("price" + pDataType);
		vPrice = vPriceElement.value;
		vPrice = trim(removeNonNumerics(vPrice));
		vPrice = trim(removeAllWhiteSpaces(vPrice))
		document.getElementById("price" + pDataType).value = vPrice;
			
		if (onlyNumbers(vPrice) == false) {
			document.getElementById("price" + pDataType).value = '';
		}

	} else {
	
		var vPriceMinElement = document.getElementById("priceMin" + pDataType);
		var vPriceMaxElement = document.getElementById("priceMax" + pDataType);
		vPriceMin = vPriceMinElement.value;
		vPriceMax = vPriceMaxElement.value;
		vPriceMin = trim(removeNonNumerics(vPriceMin));
		vPriceMax = trim(removeNonNumerics(vPriceMax));
		vPriceMin = trim(removeAllWhiteSpaces(vPriceMin))
		vPriceMax = trim(removeAllWhiteSpaces(vPriceMax))
		document.getElementById("priceMin" + pDataType).value = vPriceMin;
		document.getElementById("priceMax" + pDataType).value = vPriceMax;

		if (onlyNumbers(vPriceMin) == false) {
			document.getElementById("priceMin" + pDataType).value = '';
		}
		if (onlyNumbers(vPriceMax) == false) {
			document.getElementById("priceMax" + pDataType).value = '';
		}
		if (parseInt(vPriceMin) > parseInt(vPriceMax)) {
			errorMessage = errorMessage + 'Prix: Min prix > Max prix.\n';
		}

	}
}


function checkDesc(pDataType) 
{ 

	var vDescElement = document.getElementById("desc" + pDataType);
	vDesc = vDescElement.value;
	vDesc = trim(removeMultipleWhiteSpaces(vDesc));
	document.getElementById("desc" + pDataType).value = vDesc;

	if (vDesc.length > 1500) {
		errorMessage = errorMessage + 'Description : Vous dépassez le maximum de 1500 caractères. Réduisez le nombre de caractères et essayez à nouveau.\n';
	} 

}	



//********************************************************************
// Selection
//********************************************************************

function setAdd(pId) 
{ 

	//alert(pId);
	var maxReached = false;
	
    if (!window.ActiveXObject) {
    	xmlHttpReq = new XMLHttpRequest();  
   	} else {
    	xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
	}

	var strURL = "HttpReq_SelectionAdd.asp"
	var params = "recID=" + pId 
	//alert ("params" + params);
    xmlHttpReq.open('POST',strURL,true);
    xmlHttpReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xmlHttpReq.onreadystatechange = function() 
    {
        if (xmlHttpReq.readyState == 4) { //ready state 4 means its complete.
            answer = xmlHttpReq.responseText;
            //alert(answer);
            if (answer == "MAXREACHED") {
				alert("Vous dépassez le maximum de 200 annonces dans la sélection. Afin de continuer réduisez le nombre d\'annonces dans votre sélection.\n");
            } else {
				pID = document.getElementById("SelectText" + pId);
				pID.style.display = "none";
				pID = document.getElementById("SelectTextSelected" + pId);
				pID.style.display = "block";
				pID = document.getElementById("SelectImage" + pId);
				pID.style.display = "none";
            }
		}
	}
   	xmlHttpReq.send(params);

}



//remove annonce from the cookie and/or search list
function setRemove(pId) 
{ 

	var answer = confirm ("Voulez-vous vraiment désélectionner cette annonce ?")
	if (answer) {

		//reduce the count
		pID = document.getElementById("recordCount");
		newNum = parseInt(pID.value)-1
		document.getElementById("recordCount").value = newNum;
		pID = document.getElementById("recordCountDisplay");
		pID.innerHTML = "<b>" + String(newNum) + " annonce(s)</b>";


	    if (!window.ActiveXObject) {
	    	xmlHttpReq = new XMLHttpRequest();  
	   	} else {
	    	xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
		}

		var strURL = "HttpReq_SelectionDelete.asp"
		var params = "recID=" + pId
		//alert ("params" + params);
	    xmlHttpReq.open('POST',strURL,true);
	    xmlHttpReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	    xmlHttpReq.onreadystatechange = function() 
	    {
	        if (xmlHttpReq.readyState == 4) { //ready state 4 means its complete.
	            answer = xmlHttpReq.responseText;

				pID = document.getElementById("RemoveRow" + pId);
				pID.innerHTML = "<b>Désélectionné de la Sélection</b>";
				pID = document.getElementById("FirstRow" + pId);
				pID.style.display = "none";
				pID = document.getElementById("SecondRow" + pId);
				pID.style.display = "none";
				pID = document.getElementById("ThirdRow" + pId);
				pID.style.display = "none";

			}
		}
	   	xmlHttpReq.send(params);
		
	}			

}


//********************************************************************
// Payments
//********************************************************************

function setPayments() 
{
	
  	var vID = document.payment.payment_lastID.value;
	
    if (!window.ActiveXObject) {
    	xmlHttpReq = new XMLHttpRequest();  
   	} else {
    	xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
	}

	var strURL = "HttpReq_Payment.asp"
	var params = "ID=" + vID;
	//alert ("params" + params);
    xmlHttpReq.open('POST',strURL,true);
    xmlHttpReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xmlHttpReq.onreadystatechange = function() 
    {
        if (xmlHttpReq.readyState == 4) { //ready state 4 means its complete.
			//vPayButton = document.getElementById("payButton")
			//vPayButton.style.display = "block";							
		}
	}
   	xmlHttpReq.send(params);
	document.forms[0].submit();
}


//********************************************************************
// Send to a Friend
//********************************************************************


function checkSendToFriend() {

	errorMessage = "";

	var vYourName = document.getElementById("yourName");
	vName = vYourName.value;
	vName = trim(removeMultipleWhiteSpaces(vName));
	document.getElementById("yourName").value = vName;

	if (vName == "") {
		errorMessage = errorMessage + "Votre nom: Veuillez saisir votre nom.\n";
	}

	var vEmailFriend = document.getElementById("emailFriend");
	vEmail = vEmailFriend.value;
	vEmail = trim(removeAllWhiteSpaces(vEmail));
	document.getElementById("emailFriend").value = vEmail;
	
	if (vEmail == "") {
		errorMessage = errorMessage + "L\'adresse email: Veuillez saisir une adresse email.\n";
	} else if (isEmailValid(vEmail) == false) {
		errorMessage = errorMessage + "L\'adresse email: Le format n\'est pas valide.\n";
	}

	var vYourMessage = document.getElementById("yourMessage");
	vMessage = vYourMessage.value;
	vMessage = trim(removeMultipleWhiteSpaces(vMessage));
	document.getElementById("yourMessage").value = vMessage;

	if (vMessage == "") {
		errorMessage = errorMessage + "Message: Veuillez saisir votre message.\n";
	}

	if (errorMessage != "") {
		alert(errorMessage);
	} else {
		document.forms[0].submit();
	}

}

function checkSendToFriends() {

	errorMessage = "";

	var vYourName = document.getElementById("yourName");
	vName = vYourName.value;
	vName = trim(removeMultipleWhiteSpaces(vName));
	document.getElementById("yourName").value = vName;

	if (vName == "") {
		errorMessage = errorMessage + "Votre nom: Veuillez saisir votre nom.\n";
	}

	var vEmailFriend = document.getElementById("emailFriend");
	vEmail = vEmailFriend.value;
	vEmail = trim(removeMultipleWhiteSpaces(vEmail));
	vEmail = vEmail.replace(/[^A-Z0-9-@%._]+/gmi, ' ');
	vEmail = trim(removeMultipleWhiteSpaces(vEmail));
	document.getElementById("emailFriend").value = vEmail;
	
	if (vEmail == "") {
		errorMessage = errorMessage + "L\'adresse email: Veuillez saisir une adresse email.\n";
	} else {

		//check all the emails are valid	
		var emailArray  = vEmail.split(" ")
		
		if (emailArray.length < 101) {

			for (i = 0; i < emailArray.length; i++) 
			{ 
			  //alert("checking " + vEmail);
			  if (isEmailValid(emailArray[i]) == false) {
			     errorMessage = errorMessage + "Le format de l\'adresse email " + emailArray[i] + " n\'est pas valide.\n";
			  }
			}

		} else {
			errorMessage = errorMessage + "L\'adresse email: Vous avez dépassé le maximum de 100 emails.\n";
		}	
	}

	var vYourMessage = document.getElementById("yourMessage");
	vMessage = vYourMessage.value;
	vMessage = trim(removeMultipleWhiteSpaces(vMessage));
	document.getElementById("yourMessage").value = vMessage;

	if (vMessage == "") {
		errorMessage = errorMessage + "Message: Veuillez saisir votre message.\n";
	}

	if (errorMessage != "") {
		alert(errorMessage);
	} else {
		document.forms[0].submit();
	}

}


//********************************************************************
// Common Functions
//********************************************************************

function logoutCheck() 
{
	var answer = confirm ("Voulez-vous vraiment vous déconnecter ?")
	if (answer) {
		window.location='clearCookie.asp';
	}
}

//trim
function trim(vText)
{
	vText = vText.replace(/^\s+/g, '').replace(/\s+$/g, '');
	return vText;
}

//set multiple white spaces as a single white space
function removeMultipleWhiteSpaces(vText)
{
	vText = vText.replace(/\s+/g, ' ');
	return vText;
}

//set multiple white spaces as a single white space
function removeAllWhiteSpaces(vText)
{
	vText = vText.replace(/\s+/g, '');
	return vText;
}

//set multiple alphanumerics as a single white space
function removeNonNumerics(vText)
{
	vText = vText.replace(/\D+/g, ' ');
	return vText;
}

//remove all alphanumerics
function removeAllNonNumerics(vText)
{
	vText = vText.replace(/\D+/g, '');
	return vText;
}

function replaceAccents(vText)
{

	vText = vText.replace(/É/g, "E");
	vText = vText.replace(/È/g, "E");
	vText = vText.replace(/Ê/g, "E");
	vText = vText.replace(/Ë/g, "E");

	vText = vText.replace(/Ó/g, "O");
	vText = vText.replace(/Ò/g, "O");
	vText = vText.replace(/Ô/g, "O");
	vText = vText.replace(/Ö/g, "O");

	vText = vText.replace(/Á/g, "A");
	vText = vText.replace(/À/g, "A");
	vText = vText.replace(/Â/g, "A");
	vText = vText.replace(/Ä/g, "A");

	vText = vText.replace(/Ú/g, "U");
	vText = vText.replace(/Ù/g, "U");
	vText = vText.replace(/Û/g, "U");
	vText = vText.replace(/Ü/g, "U");

	vText = vText.replace(/Í/g, "I");
	vText = vText.replace(/Ì/g, "I");
	vText = vText.replace(/Î/g, "I");
	vText = vText.replace(/Ï/g, "I");

	vText = vText.replace(/Ç/g, "C");

	return vText;
}

//set multiple alphanumerics as a single white space
function replaceNonAlphaNumerics(vText)
{
	vText = vText.replace(/\W+/gmi, ' ');
	return vText;
}


//Are there ANY numbers in the text string
function hasNumbers(vText)
{
	if (vText.match(/[0-9]+/gim)) {
   		return true;
   	} else {
   		return false;
   	}
}

//Are there ONLY numbers in the text string
function onlyNumbers(vText)
{
	if (vText.match(/\D+/gim)) {
   		return false;
   	} else {
   		return true;
   	}
}

//Departments must be in format 90 89 78 etc
function checkDepIntegrity(vText)
{
	//if (vText.match(/^(0[1-9]|[1-8][0-9]|9[0-5])(\s(0[1-9]|[1-8][0-9]|9[0-5]))*$/)) {
 	if (vText.match(/^(0[1-9](\d\d\d)?|[1-8][0-9](\d\d\d)?|9[0-5](\d\d\d)?|97[1-6](\d\d)?|98[4678](\d\d)?)$/)) {
  		return true;
   	} else {
   		return false;
   	}
}

//are there illigal chars in the text string
function isEmailValid(vText)
{
	if (vText.match(/[A-Z0-9._%-]+@[A-Z0-9._%-]+/gi)) {
   		return true;
   	} else {
		return false;
   	}
}

//Disable the enter key
function stopRKey(evt) {
	if (document.Alertes) {
		//alert("OK");
		var evt = (evt) ? evt : ((event) ? event : null);
		var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
	}
}

//global form event identifiers
document.onkeypress = stopRKey;
		
