var errorMess1;
var errorMess3;
var errorMess4;
var errorMess5;
var errorMess6;
var errorMess7;
var errorMess8;
var errorMess9;
var yearFormat;

function verifyDataValidity (lang) {
	if (lang == 'fr') {
		errorMess1 = "Veuillez introduire un entier entre 1 et 12 pour le mois";
		errorMess2 = "Veuillez choisir une premi\u00e8re date coh\u00e9rente";
		errorMess3 = "Veuillez verifier la date";
		errorMess4 = "Veuillez verifier l'ann\u00e9e";
		errorMess5 = "Veuillez verifier le format du prix #.##";
		errorMess6 = "Veuillez verifier que le premier prix soit inf\u00e9rieur au second";
		errorMess7 = "Veuillez saisir tout les champs pour l'option choisie";
		errorMess8 = "Veuillez choisir une deuxi\u00e8me date coh\u00e9rente";
		errorMess9 = "Veuillez verifier que la premi\u00e8re date soit inf\u00e9rieure \u00e0 la seconde";
		yearFormat = "AAAA";
	} else {
		errorMess1 = "Please choose an integer between 1 and 12 for the month";
		errorMess2 = "Please check the first date";
		errorMess3 = "Please check the date field";
		errorMess4 = "Please verify the year";
		errorMess5 = "Please verify the price";
		errorMess6 = "Please make sure that the first price is lower than the second";
		errorMess7 = "Please fill in each field for your option";
		errorMess8 = "Please check the second date";
		errorMess9 = "Please make sure that the first date is before the second one";
		yearFormat = "YYYY";
	}
	var entriesOK = true;
	var radioObj = document.forms['onEnterSubmitAdvanced'].elements['parution'];
	for (i=0;i<3;i++){
		if (radioObj[i].checked) entriesOK = verifyDateFields(i, lang);						
	}
	if (entriesOK) {	
		radioObj = document.forms['onEnterSubmitAdvanced'].elements['price'];
		for (i=0;i<3;i++) 
			if (radioObj[i].checked) entriesOK = verifyPriceFields(i);
		return entriesOK;
	}
	return false;
}
function verifyDateFields (radioCase, language) {
	if (radioCase==0) {
 		if (!verifyDates(language)) {
			return false;
		}
	} else {
		if (radioCase==1) {
			intermed = verifyDate( language, document.getElementById('monthParutionOption2').value, document.getElementById('yearParutionOption2').value );
			if (intermed%3 == 0 ) {
				if (intermed == 3 ) {
					alert(getMessage(language, 3));
				}
				else if (intermed == 0){
					alert(getMessage(language, 3));
				}
				return false;
			} else {
				if (intermed == 1 ) {
					return true;
				} else {
					if (intermed == 4 ) {
						document.getElementById('monthParutionOption2').value = "01";
						return true;
					}
				}
			}
		} else {
		 	// the case where i equals 2
			intermed = verifyDate( language, document.getElementById('monthParutionOption3').value, document.getElementById('yearParutionOption3').value );
			
			if (intermed%3 == 0 ) {
				if (intermed == 3 ) {
					alert("ici");
					alert(getMessage(language, 3));
				}
				else if (intermed == 0){
					alert('ici');
					alert(getMessage(language, 3));
				}
				return false;
			} else {
				if (intermed == 1 ) {
					return true;
				} else {
					if (intermed == 4 ) {
						document.getElementById('monthParutionOption3').value = "12";
						return true;
					}
				}
			}
		}
	}
	return true;
}								
function verifyDates(language) {
	month1 = document.getElementById('month1ParutionOption1').value;
	month2 = document.getElementById('month2ParutionOption1').value;
	year1 = document.getElementById('year1ParutionOption1').value;
	year2 = document.getElementById('year2ParutionOption1').value;
	codeResult1 = verifyDate (language, month1, year1);
	codeResult2 = verifyDate (language, month2, year2);
	if ( (codeResult1%3) == 0 && (codeResult2%3) != 0) {
		if (codeResult1 == 0 && codeResult2 != 0){
			alert(getMessage(language, 2));
			return false;
		}
		//if (codeResult2 == 0 && codeResult != 0){
		//	alert('deuxieme date fausse');
		//}
		//if (codeResult1 == 0 && codeResult2 == 0){
		//	alert('2 dates sont fausses');
		//}
		alert(getMessage(language, 3));
		return false;;
	} else {
		if (codeResult1 == 1){
			if (codeResult2 == 1) {
				return true;
			} else {
				alert(getMessage(language, 7));
				return false;
			}
		} else {
			if (codeResult1 == 4 ) {
				document.getElementById('month1ParutionOption1').value = "01";
				month1 = "01";
			}
			if (codeResult2 == 4 ) {
				document.getElementById('month2ParutionOption1').value = "12";
				month2 = "12";
			} else {
				
				if (codeResult2 != 2 || codeResult1 != 2) {
					if (codeResult1 == 0 && codeResult2 == 0){
						alert(getMessage(language, 3));
						return false;
					}
					else if (codeResult1 == 0){
						alert(getMessage(language, 2));
						return false;
					}
					else{
						alert(getMessage(language, 8));
						return false;
					}
				} else {
					if (year1.length > year2.length) {
						alert(getMessage(language, 9));
						return false;
					} else {
						if ((year1.length == year2.length) && ( year1 > year2 )) {
							alert(getMessage(language, 9));
							return false;
						} else {
							if ( ( year1 == year2 ) && ( month1 > month2 ) ) {
								alert(getMessage(language, 9));
								return false;
							}
						}	
					}	
				}
			}
		}
	}
	return true;
}
function verifyDate(language, month, year) {
	if ( (month == "MM") || (month == "") ) {
		if ( (year == yearFormat) || (year == "") ) {
			return 1;
		} else {
			if (verifyYear(year)) {
				return 4;
			}
		}
	} else {
		if (verifyMonth(month) && verifyYear(language, year)) {
			time = new Date();
			floatYear = parseFloat(year);
			floatToday = parseFloat(time.getYear());
			if (floatYear == floatToday) {
				if (month <= time.getMonth() + 1) {
					return 2;
				} else {
					return 3;
				}
			} else {
				return 2;
			}
		}
	}
	return 0;
}
function verifyMonth(month) {
	
	if (month.substring(0,1) == '0') {
		if ((month.substring(1) <= '0')||(month.substring(1) > '9') ){
			alert(errorMess1);
			return false;
		}
	} else {
		if (month.substring(0,1) == '1') {
			if (month.length != 1 ) 
			if ((month.substring(1) < '0')||(month.substring(1) > '2') ){
				//alert(errorMess1);
				return false;
			}
		} else {
			if (month.length != 1 ) {
				//alert(errorMess1);
				return false;
			} else {
				if ((month.substring(0,1) < '1')||(month.substring(0,1) > '9') ){
					//alert(errorMess1);
					return false;
				}
			}
		}
	}
	return true;
}
function verifyYear(language, year) {
	if (year.length==0) {
		//alert(getMessage(language, 4));
		return false;
	}
	for (iVY=0;iVY<year.length;iVY++)
		if ( ( year.substring(iVY,iVY+1) < '0' ) ||  ( year.substring(iVY,iVY+1) > '9' ) ) {
			//alert(getMessage(language, 4));
			return false;
		}
	floatYear = parseFloat(year);
	time = new Date();
	floatToday = parseFloat( (time.getYear() < 1000) ? time.getYear() + 1900 : time.getYear() );
	if (floatYear > floatToday) {
		//alert(getMessage(language, 4));
		return false;
	}
	return true;	
}
function verifyPriceFields (radioCase){
	if (radioCase==0) {
		if (document.getElementById('price1Option1').value.length>0) {
			if (document.getElementById('price2Option1').value.length == 0)
				{
					//alert(errorMess7);
					return false;
				}
		} else {
			if (document.getElementById('price2Option1').value.length>0) {
				//alert(errorMess7);
				return false;
			}
		}
 		if ( !verifyNumberField(document.getElementById('price1Option1')) ) {
			return false;
		} else {
			if ( !verifyNumberField(document.getElementById('price2Option1')) ) {
				return false;
			} else {
				float1 = parseFloat(document.getElementById('price1Option1').value);
				float2 = parseFloat(document.getElementById('price2Option1').value);
				
				if (float1 > float2) {
					//alert(errorMess6);
					return false;
				}
			}
		}
	} else {
		if (radioCase==1) {
			if ( !verifyNumberField(document.getElementById('priceOption2')) ) {
				return false;
			}
	 	} else {
		 	// the case where i equals 2
	 		if ( !verifyNumberField(document.getElementById('priceOption3')) ) {
				return false;
			}
	 	}
	}
	return true;
}
function verifyNumberField(field){
				 		
 	var priceFormat = field.value.match(/^[0-9]*((\.|,)\d{1,2})?$/);

	if (priceFormat) {
		field.value = field.value.replace(/,/,".");
		return true;
	}
	//alert(errorMess5);
	return false;
}
function verifyRightOption1() {
	if (document.getElementById('submitSelectedOption').price1Filter.value.length>0) {
		if (document.getElementById('submitSelectedOption').price2Filter.value.length == 0)
			{
				//alert(errorMess7);
				return false;
			}
	} else {
		if (document.getElementById('submitSelectedOption').price2Filter.value.length>0) {
			//alert(errorMess7);
			return false;
		}
	}
	if ( !verifyNumberField(document.getElementById('submitSelectedOption').price1Filter) ) {
		return false;
	} else {
		if ( !verifyNumberField(document.getElementById('submitSelectedOption').price2Filter) ) {
			return false;
		} else {
			float1 = parseFloat(document.getElementById('submitSelectedOption').price1Filter.value);
			float2 = parseFloat(document.getElementById('submitSelectedOption').price2Filter.value);
			
			if (float1 > float2) {
				//alert(errorMess6);
				return false;
			}
		}
	}
	document.getElementById('submitSelectedOption').priceFilter2.value='';
	document.getElementById('submitSelectedOption').priceFilter3.value='';
	return true;
}
function verifyRightDates(language) {
	month1 = document.getElementById('submitDateOption').d1MonthFilter.value;
	month2 = document.getElementById('submitDateOption').d2MonthFilter.value;
	year1 = document.getElementById('submitDateOption').d1YearFilter.value;
	year2 = document.getElementById('submitDateOption').d2YearFilter.value;

	codeResult1 = verifyDate (language, month1, year1);
	codeResult2 = verifyDate (language, month2, year2);

	if ( (codeResult1%3) == 0) {
		if ( codeResult1 == 3) {
			alert(getMessage(language, 2));
			return false;
		}
		if ( codeResult1 == 0 && codeResult2 == 0){
			alert(getMessage(language, 3));
			return false;
		}
		else if ( codeResult1 == 0){
			alert(getMessage(language, 2));
			return false;
		}
		else{
			alert(getMessage(language, 8));
			return false;
		}
		return false;
	} else {
		if (codeResult1 == 1){
			if (codeResult2 == 1) {
				return true;
			} else {
				alert(getMessage(language, 7));
				return false;
			}
		} else {
			if (codeResult1 == 4) {
				document.getElementById('submitDateOption').d1MonthFilter.value = "01";
				month1 = "01";
			}
			if (codeResult2 == 4 ) {
				document.getElementById('submitDateOption').d2MonthFilter.value = "12";
				month2 = "12";
			} else {
				if (codeResult2 != 2) {
					alert(getMessage(language, 8));
					return false;
				} else {
					if (year1.length > year2.length) {
						alert(getMessage(language, 9));
						return false;
					} else {
						if ((year1.length == year2.length) && ( year1 > year2 )) {
							alert(getMessage(language, 9));
							return false;
						} else {
							if ( ( year1 == year2 ) && ( month1 > month2 ) ) {
								alert(getMessage(language, 9));
								return false;
							}
						}
					}	
				}	
			}
		}
	}
	document.getElementById('submitDateOption').dMonthFilter2.value = "";
	document.getElementById('submitDateOption').dMonthFilter3.value = "";
	document.getElementById('submitDateOption').dYearFilter2.value = "";
	document.getElementById('submitDateOption').dYearFilter3.value = "";
	return true;
}

function getMessage(language, msgId) {
	
	var message = '';
	
	if (language == 'fr'){
		switch (msgId){
			case 1:
				message = "Veuillez introduire un entier entre 1 et 12 pour le mois";
				break;
			case 2:
				message = "Veuillez choisir une premi\u00e8re date coh\u00e9rente";
				break;
			case 3:
				message = "Veuillez verifier la date";
				break;
			case 4:
				message = "Veuillez verifier l''ann\u00e9e";
				break;
			case 5:
				message = "Veuillez verifier le format du prix";
				break;
			case 6:
				message = "Veuillez verifier que le premier prix soit inf\u00e9rieur au second";
				break;
			case 7:
				message = "Veuillez saisir tout les champs pour l''option choisie";
				break;
			case 8:
				message = "Veuillez choisir une deuxi\u00e8me date coh\u00e9rente";
				break;
			case 9:
				message = "Veuillez verifier que la premi\u00e8re date soit inf\u00e9rieure \u00e0 la seconde";
				break;
		}
	}
	else{
		switch (msgId){
			case 1:
				message = "Please choose an integer between 1 and 12 for the month";
				break;
			case 2:
				message = "Please check the first date";
				break;
			case 3:
				message = "Please check the date field";
				break;
			case 4:
				message = "Please verify the year";
				break;
			case 5:
				message = "Please verify the price";
				break;
			case 6:
				message = "Please make sure that the first price is lower than the second";
				break;
			case 7:
				message = "Please fill in each field for your option";
				break;
			case 8:
				message = "Please check the second date";
				break;
			case 9:
				message = "Please make sure that the first date is before the second one";
				break;
		}
	}
	return message;
}
function verifyRightDates2(language) {
	month = document.getElementById('submitDateOption').dMonthFilter2.value;
	year = document.getElementById('submitDateOption').dYearFilter2.value;
	codeResult = verifyDate (language, month, year);
	if ( codeResult == 4 ) {
		document.getElementById('submitDateOption').d1MonthFilter.value = "";
		document.getElementById('submitDateOption').d2MonthFilter.value = "";
		document.getElementById('submitDateOption').dMonthFilter2.value = "01";
		document.getElementById('submitDateOption').dMonthFilter3.value = "";
		document.getElementById('submitDateOption').d1YearFilter.value = "";
		document.getElementById('submitDateOption').d2YearFilter.value = "";
		document.getElementById('submitDateOption').dYearFilter3.value = "";
		return true;
	}
	if ( codeResult == 2 ) {
		document.getElementById('submitDateOption').d1MonthFilter.value = "";
		document.getElementById('submitDateOption').d2MonthFilter.value = "";
		document.getElementById('submitDateOption').dMonthFilter3.value = "";
		document.getElementById('submitDateOption').d1YearFilter.value = "";
		document.getElementById('submitDateOption').d2YearFilter.value = "";
		document.getElementById('submitDateOption').dYearFilter3.value = "";
		return true;
	} else {
		alert(getMessage(language, 3));
		return false;
	}
	return true;
}
function verifyRightDates3(language) {
	month = document.getElementById('submitDateOption').dMonthFilter3.value;
	year = document.getElementById('submitDateOption').dYearFilter3.value;
	codeResult = verifyDate (language, month, year);
	if ( codeResult == 4 ) {
		document.getElementById('submitDateOption').d1MonthFilter.value = "";
		document.getElementById('submitDateOption').d2MonthFilter.value = "";
		document.getElementById('submitDateOption').dMonthFilter2.value = "";
		document.getElementById('submitDateOption').dMonthFilter3.value = "12";
		document.getElementById('submitDateOption').d1YearFilter.value = "";
		document.getElementById('submitDateOption').d2YearFilter.value = "";
		document.getElementById('submitDateOption').dYearFilter2.value = "";
		return true;
	}
	if ( codeResult == 2 ) {
		document.getElementById('submitDateOption').d1MonthFilter.value = "";
		document.getElementById('submitDateOption').d2MonthFilter.value = "";
		document.getElementById('submitDateOption').dMonthFilter2.value = "";
		document.getElementById('submitDateOption').d1YearFilter.value = "";
		document.getElementById('submitDateOption').d2YearFilter.value = "";
		document.getElementById('submitDateOption').dYearFilter2.value = "";
		return true;
	} else {
		alert(getMessage(language, 3));
		return false;
	}
	return true;
}
