/** Script du login page **/
var today = new Date();
var day   = today.getDate();
var month = today.getMonth();
var year  = y2k(today.getYear());
var data, Date;
var inputValue = new Array;

function getFormName() {
	var aFormName;
	aFormName = document.forms[0].name;
	//alert(aFormName);
	return 	aFormName;
}

function addnDay(n) {
	var date = new Date();
	var milliseconds = Date.UTC(y2k(date.getYear()),date.getMonth(),date.getDate());
	milliseconds += (86400000 * n);
		  
	date = new Date(milliseconds);
	var month = date.getMonth() + 1;
	var day = date.getDate();
	var year = date.getYear();

	res = day + "/" + month + "/" + year;
		  
	return res;
}


function printDateAddingDay(aDate, n){
	
	var date = transform(aDate, '5');
	var milliseconds = Date.UTC(y2k(date.getYear()),date.getMonth(),date.getDate());
	milliseconds += (86400000 * n);
		  
	date = new Date(milliseconds);
	var month = date.getMonth() + 1;
	var day = date.getDate();
	var year = date.getYear();
	
	res = day + "/" + month + "/" + year;
	var myDate = formatter(res);				 					
	document.write(myDate);				  																
}


function y2k(number)    { return (number < 1000) ? number + 1900 : number; }

function padout(number) { return (number < 10) ? '0' + number : number; }

function restart() {
     var aFormName = getFormName();
     var theDate;

     if (aFormName == "valid")
     	theDate = document.forms[0].elements["Transaction.echeanceDateS"];
     else 
     	theDate = document.forms[0].elements["Protection.date_echeance"];

    theDate.value = '' + padout(day) + '/' + padout(month - 0 + 1) + '/' + year;
    mywindow.close();
    testDate(theDate);
}

function newWindow(formName,inputName,path) {
			  
    mywindow=open(path,'myname','resizable=no,width=300,height=250');
    mywindow.location.href = path;
    			
    if (mywindow.opener == null) mywindow.opener = self;	
    	this.data = formName;
    	//this.date = data.elements[inputName];
}




// constructeur objet entete
// attributs: style, imgDroite, imgGauche
function entete(style_, select) {
 this.style=style_;
 if (select==true) {
  this.imgGauche="images/TopLeftBlue.gif";
  this.imgDroite="images/TopRightBlue.gif";
 } else {
  this.imgGauche="images/TopLeftBlack.gif";
  this.imgDroite="images/TopRightBlack.gif";
 }
}


// generation des entetes
function creerEntete(n, s) {
    list = new Array;
    for (i=0; i<n; i++) {
	if (i==s) {
	    list[i] = new entete("PANEL", true);
	}
	else {
	    list[i] = new entete("PANELU", false);
	}
    }  
    return list;
}


function printNote(note){
	if(note == '12'){
		document.write("R");
	}else if(note == '10'){
		document.write("NR");
	}else if(note == '11'){
		document.write("X");
	}else{
	    var len = parseInt(note);
		for(var i=0; i < len; i++){					 					
			document.write("@");
		}
	}				  																
}

// Afficher la date du jour
function dateOfDay() {
	var date = new Date()
	var d = date.getDate();
	var day = (d < 10) ? '0' + d : d;
	var m = date.getMonth() + 1;
	var month = (m < 10) ? '0' + m : m;
	var yy = date.getYear();
	var year = (yy < 1000) ? yy + 1900 : yy

	return ""+ day + "/" + month + "/" + year;
}
			
//Mise a jour periode
function majPeriode(input){
	var p = parseInt(input.value);
	if (p < 60 ) {
		input.value = "60";
	} else if (p > 180 ) {
		input.value = "180";
	}
	//inputValue[input.name]=input.value;
	var aFormName = getFormName();
	var aForm = document.forms[0];
	if (aFormName == "valid")
		majDateOfDay(aForm.elements['Transaction.beginOfProtectionDate'], aForm.elements['Transaction.endOfProtectionDate'], input)
	else
		majDateOfDay(aForm.elements['Protection.date_debut_protect'], aForm.elements['Protection.date_fin_protec'], input)
}

// Mise a jour de la date du jour
function majDateOfDay(input1, input2, input3){
	var aFormName = getFormName();
		
	if (aFormName == "valid") {
		var period = parseInt(input3.value);
		
		if (period >= 60 && period <= 180) {
			input1.blur();
			input2.blur();
			input1.value = dateOfDay();
			var end = addnDay(period);
			input2.value = dateToString(end);
		}
		else {
			input1.value = "";
			input2.value = "";
		}
	}
	else
	{
		input2.blur();		  		
		var period = parseInt(input3.value);
		//alert("input1: " + input1.value + " - input2: " + input2.value + " - input3: " + input3.value);
		if (period >= 60 && period <= 180) {
			period = period + 1;
			var beginDate = transform(input1.value, '5');
			var myBeginDate = addnProrogDay(period, beginDate);	
			input2.value = dateToString(myBeginDate);
		}
		else {
			input2.value = "";
		}
	}
}

// Ajouter n jours sur la date courante
function addnDay(n) {
	var date = new Date();
	var milliseconds = Date.UTC(y2k(date.getYear()),date.getMonth(),date.getDate());
	milliseconds += (86400000 * n);
			  
	date = new Date(milliseconds);
			  
	return date;
}

//Formatter une date
function dateToString(date) {
	var d  = date.getDate();
	var day = (d < 10) ? '0' + d : d;
	var m = date.getMonth() + 1;
	var month = (m < 10) ? '0' + m : m;
	var yy = date.getYear();
	var year = (yy < 1000) ? yy + 1900 : yy;
				
	return ""+ day + "/" + month + "/" + year;
}

//Verificateur de date
function makeArray()    {
    this[0] = makeArray.arguments.length;
    for (i = 0; i<makeArray.arguments.length; i++)
        this[i+1] = makeArray.arguments[i];
}

var daysofmonth   = new makeArray( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysofmonthLY = new makeArray( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function LeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}

function ValidDate(day,month,year) {
  if(day != 0 && month > 0 && month < 13){
    if ( (LeapYear(year) && (day > daysofmonthLY[month])) ||
         (!LeapYear(year) && (day > daysofmonth[month])) ){
        return false;
    }else{
        	return true;
    }
  }else{
  	return false;
  }
}

function testDate(input) {
	var day = getDay(input.value);
	var month = getMonth(input.value);
	var year = getYear(input.value);
	var aFormName = getFormName();
	
	if (input.value.length > 2) {
	
		if ( !ValidDate(day,month,year) ) {
	        	input.value = "";
	        	alert('Please enter a valid date');
	    	}
		else {
		   if(aFormName == "valid"){
		    	var dueDate = transform(input.value, '5');
		    	var startDate = transform(document.valid.elements['Transaction.beginOfProtectionDate'].value, '5');
		    	var period = document.valid.elements['Transaction.protection_period'].value;
		    	period = parseInt(period) * 24 * 60 * 60 * 1000;
		    	var total = startDate.getTime() + period - dueDate.getTime();
		    	var jour30 = 30 * 24 * 60 * 60 * 1000;
		    	if ( (dueDate.getTime() - startDate.getTime() < 0) || (total - jour30 < 0) ) {
		        	alert('Please enter a valid date');
				input.value = "";
		        }
		   }
		   else{
		   	var dueDate = transform(input.value, '5');
		    	var startDate = transform(document.validProrog.elements['Protection.date_debut_protect'].value, '5');
		    	var period = document.validProrog.elements['Protection.protection_period'].value;
		    	period = parseInt(period) * 24 * 60 * 60 * 1000;
		    	var total = startDate.getTime() + period - dueDate.getTime();
		    	var jour30 = 30 * 24 * 60 * 60 * 1000;
		    	if ( (dueDate.getTime() - startDate.getTime() < 0) || (total - jour30 < 0) ) {
		        	alert('Please enter a valid date');
				input.value = "";
		        }
		   }
		}
	
	}
    	
}


function getDay(dateString) {		
	return parseInt(dateString.substring(0,2));
}

function getMonth(dateString) {

	return dateString.substring(3,4)=='0'? parseInt(dateString.substring(4,5)) : parseInt(dateString.substring(3,5)) ;
}

function getYear(dateString) {
			
	return parseInt(dateString.substring(6,10));
}


function transform(dateString, dateType) {		
	if (dateType == '1')
		return new Date(dateString.substring(0,4),
			            dateString.substring(4,6)-1,
			            dateString.substring(6,8));
	else if (dateType == '2')
		return new Date(dateString.substring(0,2),
			            dateString.substring(2,4)-1,
			            dateString.substring(4,6));
	else if (dateType == '3')
		return new Date(dateString.substring(6,10),
			            dateString.substring(3,5)-1,
			            dateString.substring(0,2));
	else if (dateType == '4')
		return new Date(dateString.substring(6,8),
			            dateString.substring(3,5)-1,
			            dateString.substring(0,2));
	else if (dateType == '5')
		return new Date(dateString.substring(6,10),
			            dateString.substring(3,5)-1,
			            dateString.substring(0,2));
	else return null;
}


function formatter(aDate) {
	var slash1 = aDate.indexOf("/");
	var slash2 = aDate.lastIndexOf("/");
	
	var jour = aDate.substring(0,slash1);
	if(jour.length != 2)
		jour = '0'+jour;
		
	var mois = aDate.substring(slash1+1,slash2);
	if(mois.length != 2)
		mois = '0'+mois;
		
	var annee = aDate.substring(slash2+1,aDate.length);
	
	//alert(jour+"/"+mois+"/"+annee);
	
	return jour+"/"+mois+"/"+annee;
}


function addnProrogDay(n, date) {
	var milliseconds = Date.UTC(y2k(date.getYear()),date.getMonth(),date.getDate());
	milliseconds += (86400000 * n);
			  
	date = new Date(milliseconds);
			  
	return date;
}	

function testMontant(montant, input, msg){
	var amount = parseInt(montant);
	if(amount < input.value){
		alert(msg);
		input.value = '';
	}
}
