/* (c) 03/2007 Nathana�l Mariani pour PMP CONCEPT */
//	
//	Date
//
//	Implémente des fonctions utiles pour la gestion des dates


// formate une date selon le format passé en paramètre
Date.prototype.toString = function(strFormat, TimeZoneOffset)
{
	if(strFormat==undefined)
		return this.toLocaleString();
	
	// on crée un objet date temporaire
	var tmpDate = new Date();
	
	// si le fuseau horaire n'est pas défini ou si ce n'est pas un nombre entier, on prend le fuseau par défaut (celui du navigateur)
	var offset = (typeof TimeZoneOffset == 'undefned' || parseInt(TimeZoneOffset) != TimeZoneOffset) ? 0 : this.getTimezoneOffset() - TimeZoneOffset;
	
	tmpDate.setTime(this.getTime() + offset * 60 * 1000);
	
	
	var maskArray = new Array();
	maskArray['d'] = tmpDate.getDate() < 10 ? "0" + tmpDate.getDate() : tmpDate.getDate();
	maskArray['m'] = (tmpDate.getMonth() + 1) < 10 ? "0" + (tmpDate.getMonth() + 1) : (tmpDate.getMonth() + 1);
	maskArray['Y'] = tmpDate.getFullYear();
	maskArray['y'] = tmpDate.getYear();
	maskArray['H'] = tmpDate.getHours() < 10 ? "0" + tmpDate.getHours() : tmpDate.getHours();
	maskArray['i'] = tmpDate.getMinutes() < 10 ? "0" + tmpDate.getMinutes() : tmpDate.getMinutes();
	maskArray['s'] = tmpDate.getSeconds() < 10 ? "0" + tmpDate.getSeconds() : tmpDate.getSeconds();
	
	var strDate = strFormat;
	
	for(var mask in maskArray)
		strDate = strDate.replace(mask, maskArray[mask]);
	
	return strDate;
}


// définit une date à partir d'une chaine de caractère de type DateTime (2007-03-27 11:36:00)
Date.prototype.fromDateTime = function(strDateTime, gmt)
{
	if(strDateTime==undefined)
		return new Date();
	
	var expression = /([0-9]{4})-([0-9]{2})-([0-9]{2})\s([0-9]{2}):([0-9]{2}):([0-9]{2})/;
	expression.exec(strDateTime);
	
	// on récupère les valeurs annee, mois, jour, heure, minute, seconde en supprimant les 0 éventuels en début de chaine
	/*var y = (RegExp.$1.replace(/^0/, ""));
	var m = (RegExp.$2.replace(/^0/, ""));
	var d = (RegExp.$3.replace(/^0/, ""));
	var h = (RegExp.$4.replace(/^0/, ""));
	var m = (RegExp.$5.replace(/^0/, ""));
	var s = (RegExp.$6.replace(/^0/, ""));
	*/
	
	var tmpDate = new Date(RegExp.$1, (RegExp.$2-1), RegExp.$3, RegExp.$4, RegExp.$5, RegExp.$6);
	//alert(strDateTime + " / " + RegExp.$1 + ", " + (RegExp.$2-1) + ", " + RegExp.$3 + ", " + RegExp.$4 + ", " + RegExp.$5 + ", " + RegExp.$6);
	//alert(tmpDate.toString());
	
	if( typeof gmt == 'boolean' && gmt==true )
		tmpDate.setGMTTime(tmpDate.getTime());
	
	return tmpDate;
}


// définit une date à partir d'une chaine de caractère de type DateTime (2007-03-27 11:36:00)
Date.prototype.setGMTTime = function(time)
{
	if( typeof time == 'undefned' || parseInt(time) != time )
		return;
	
	this.setTime( time - this.getTimezoneOffset() * 60 * 1000 );
}

