														
/**********************************************************
***********************************************************
*  Copyright 2004 (c) Aumediage S.P.R.L. All Rights Reserved.								*
*  This is a commercial software product, please visit												*
*  http://www.aumediage.net for more information. or send email to					*
*  aumediage@hotmail.com																						*
*  See http://www.aumediage.net for Commercial License Agreement				*
*  All Copyright statements must always remain in place in all files at all times	*
*		***** PLEASE NOTE: THIS IS NOT FREE SOFTWARE	*****						*
*				*****	IT MUST BE LICENSED FOR ALL USE	*****								*
*  HISTORY																												*
*	Name			Date							Action											Version			*
*	GdB				27/02/2001			Creation										1.00					*
*	GdB				27/02/2001			Added DateDiff & DateAdd			1.1					*
																																	*
************************************************************
***********************************************************/
function GetNewDateFromDB(__Date){
	var AryDate = __Date.split('-');
	if (AryDate.length >=2){
		return new Date(AryDate[2], ((AryDate[1]-1)||0), (AryDate[0]||1), (AryDate[3]||0), (AryDate[4]||0), (AryDate[5]||0))
	}
	else
		return null;
}
function getDateFormat(){
	var dFormat = readCookie('stgs', 'dFormat');
	if (!dFormat)
		saveCookie('stgs', g_dFormat, 'dFormat', 60, g_sDomain, '/')
	return dFormat || g_dFormat;
}
function IsDate(__dDate){
	return (__dDate && Date.parse(__dDate))?true:false;
}

function IsDateBigger(__dDate, __dDate2){
	return (Date.parse(__dDate) > Date.parse(__dDate2))?true:false;
}
function IsDateSameDay(__dDate, __dDate2){
	return ( formatCustomDate( __dDate , 'dd_mm_yyyy') == formatCustomDate(__dDate2 , 'dd_mm_yyyy'))?true:false;
}
/*******************************************************
Format a date in the format specified
*******************************************************/
function formatCustomDate(dDate, sDateFormat, bNeedHours){try{
	//alert(dDate)
	if (!dDate || !Date.parse(dDate))return '';
	sDateFormat	= (!sDateFormat)?getDateFormat():sDateFormat.toLowerCase();
	var dDateTemp	= dDate;
	var iTemp		= dDate.getHours();
	var iDayOfWeek	= (dDate.getDay() == 0)? 6 : dDate.getDay()-1;
	if (bNeedHours && ( sDateFormat.indexOf('hh')== -1) ){
		sDateFormat += ' hh:nn';
		//var oRegExp		= new RegExp ("(?:AM|PM)",'ig');
		//if (oRegExp.test(sDateFormat)){
		//	if (iTemp>12)
		//		iTemp = iTemp-12;
		//	var sTemp= (iTemp>12)? "PM" : "AM" ;
		//	sDateFormat	= sDateFormat.replace(oRegExp, sTemp);
		//}
	}
	sDateFormat		= sDateFormat.replace("dddd",	g_AryWeekDayName [iDayOfWeek].split('|')[0] );
	sDateFormat		= sDateFormat.replace("ddd",	g_AryWeekDayName [iDayOfWeek].split('|')[1] );
	sDateFormat		= sDateFormat.replace("dd",		addLeadingZero(dDate.getDate(), 2) );
	sDateFormat		= sDateFormat.replace("mmmm",	g_AryMonthName [dDate.getMonth()].split('|')[0] );
	sDateFormat		= sDateFormat.replace("mmm",	g_AryMonthName [dDate.getMonth()].split('|')[1] );
	sDateFormat		= sDateFormat.replace("mm",		dDateTemp.getMonth()+1 );
	sDateFormat		= sDateFormat.replace("yyyy",	dDateTemp.getFullYear() );
	sDateFormat		= sDateFormat.replace("yy",		dDateTemp.getFullYear().toString().substr(2) );
	sDateFormat		= sDateFormat.replace("hh",		addLeadingZero(iTemp, 2));
	sDateFormat		= sDateFormat.replace("nn",		addLeadingZero(dDate.getMinutes(), 2));
	sDateFormat		= sDateFormat.replace("ss",		addLeadingZero(dDate.getSeconds().toString(), 2));
	//alert('formatCustomDate')
	return sDateFormat;
}catch(e){handleClientError('formatCustomDate', e);}}
/*******************************************************
Allow to add interval to date
*******************************************************/
Date.prototype.Add = dateAdd;
function dateAdd(sType, iToAdd){
	switch(sType){
		case 'ms':	return dateAddMilliSecond(this, iToAdd);break;
		case 's':	return dateAddSecond(this, iToAdd);break;
		case 'n':	return dateAddMinut(this, iToAdd);break;
		case 'h':	return dateAddHour(this, iToAdd);break;
		case 'd':	return dateAddDay(this, iToAdd);break;
		case 'wd':	return dateAddWorkDay(this, iToAdd);break;
		case 'w':	return dateAddWeek(this, iToAdd);break;
		case 'm':	return dateAddMonth(this, iToAdd);break;
		case 'y':	return dateAddYear(this, iToAdd);break;
	}
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function doDateAdd(dDate, sType, iToAdd){
	return dDate.Add(sType, iToAdd);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function dateAddYear(dDate, iHowMuch){
	return  dateAddMonth(dDate,  iHowMuch*12);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function dateAddMonth(dDate, iHowMuch){try{
	var iDate = dDate.getDate();
	var dDate = new Date(dDate.getFullYear(),  dDate.getMonth()+iHowMuch, dDate.getDate(), dDate.getHours(), dDate.getMinutes(), dDate.getSeconds(), dDate.getMilliseconds());
	if (iDate > dDate.getDate())
		dDate = getLastDayOfPreviousMonth(dDate);
	return  dDate;
}catch(e){handleClientError('dateAddMonth', e);}}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function dateAddWeek(dDate, iHowMuch){
	return  dateAddDay(dDate,  iHowMuch*7);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function dateAddWorkDay(dDate, iHowMuch){
	if (iHowMuch == 0) return dDate;
	var iSpare			= iHowMuch % 5;
	var iCount			= parseInt(iHowMuch/5)*7;
	var iWeekDay		= getWeekDayOfMonth(dDate);	
	var bUp = (iHowMuch >= 0)? true : false;
	if (iWeekDay == 5 || iWeekDay == 6){
		if (bUp) {
			iCount += 7-iWeekDay;
			iWeekDay = 0;
		}
		else{
			iCount -= 4 - iWeekDay;
			iWeekDay = 4;
		}		
	}
	if (bUp && iWeekDay + iSpare >= 5 )
		iSpare = iSpare+2;
	else if (!bUp &&  iWeekDay + iSpare < 0)
		iSpare = iSpare-2;
	return  dateAddDay(dDate,  iCount+iSpare);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function dateAddDay(dDate, iHowMuch){
	return  dateAddHour(dDate,  iHowMuch*24);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function dateAddHour(dDate, iHowMuch){
	return  dateAddMinut(dDate,  iHowMuch*60);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function dateAddMinut(dDate, iHowMuch){
	return  dateAddSecond(dDate,  iHowMuch*60);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function dateAddSecond(dDate, iHowMuch){
	return  dateAddMilliSecond(dDate,  iHowMuch*1000);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function dateAddMilliSecond(dDate, iHowMuch){
	return new Date (Date.parse(dDate) + iHowMuch);
}
/********************************************************
*********************************************************
*********************************************************
ALLOW TO CALCULATE DIFFERENCE BETWEEN 2 DATES
*********************************************************
********************************************************/
function dateDiff(dDateStart, dDateEnd, sType){
	switch(sType){
		case 'ms':	return getDateDiffMilliSecond(dDateStart, dDateEnd);break;
		case 's':	return getDateDiffSecond(dDateStart, dDateEnd);break;
		case 'n':	return getDateDiffMinut(dDateStart, dDateEnd);break;
		case 'h':	return getDateDiffHour(dDateStart, dDateEnd);break;
		case 'd':	return getDateDiffDay(dDateStart, dDateEnd);break;
		case 'wd':	return getDateDiffWorkDay(dDateStart, dDateEnd);break;
		case 'w':	return getDateDiffWeek(dDateStart, dDateEnd);break;
		case 'm':	return getDateDiffMonth(dDateStart, dDateEnd);break;
		case 'y':	return getDateDiffYear(dDateStart, dDateEnd);break;
	}
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getDateDiffYear(dDateStart, dDateEnd){
	return  parseInt(getDateDiffMonth(dDateStart, dDateEnd)/12);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getDateDiffMonth(dDateStart, dDateEnd){
	var iStartDate			= getMilliSecondsSinceMonthStarted(dDateStart);
	var iEndDate			= getMilliSecondsSinceMonthStarted(dDateEnd);
	var bUp					= getDateDiffMilliSecond(dDateStart, dDateEnd) < 0 ? true:false;
	var iCount				= 0;
	var dTempStartDate;
	var iThisYearMonth	= 0	;
	if (dDateStart.getFullYear() != dDateEnd.getFullYear() ){
		dTempStartDate	= bUp ? getFirstDayOfYear(dDateStart.Add('y', 1)) : getLastDayOfYear(dDateStart.Add('y', -1));
		iThisYearMonth		= bUp ? dDateStart.getMonth() -11: dDateStart.getMonth();
		iCount					= (dTempStartDate.getFullYear()-dDateEnd.getFullYear())*12;
		dTempStartDate	= new Date(dDateEnd.getFullYear(), dTempStartDate.getMonth(), dTempStartDate.getDate(), dTempStartDate.getHours(), dTempStartDate.getMinutes(), dTempStartDate.getSeconds(), dTempStartDate.getMilliseconds());
		iSpare					= bUp ? dTempStartDate.getMonth() - dDateEnd.getMonth(): 11-dDateEnd.getMonth() ;
	}
	else{
		dTempStartDate	= dDateStart;
		iSpare					= bUp ? dTempStartDate.getMonth() - dDateEnd.getMonth()+1: dTempStartDate.getMonth() - dDateEnd.getMonth()-1;
	}
	var iStartHour			= getMilliSecondsSinceDayStarted(dDateStart);
	var iEndHour			= getMilliSecondsSinceDayStarted(dDateEnd);
	if (   (bUp && iStartDate <= iEndDate ) || (!bUp && iStartDate >= iEndDate ) || ( isLastDayOfMonth(dDateStart) && isLastDayOfMonth(dDateEnd) && (( (bUp && iStartHour <= iEndHour) ||  (!bUp && iStartHour >= iEndHour)  ) )   ) ){
		iSpare = bUp? iSpare-1:iSpare+1;
	}
	return (iThisYearMonth+iCount+iSpare);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getDateDiffWeek(dDateStart, dDateEnd){
	return parseInt( getDateDiffDay(dDateStart, dDateEnd)/7);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getDateDiffWorkDay(dDateStart, dDateEnd){
	var iDayCount =  getDateDiffDay(dDateStart, dDateEnd);
	if (iDayCount == 0) return 0;
	var iSpare			= iDayCount % 7;
	var iCount			= parseInt(iDayCount/7)*5;
	var iWeekDay		= getWeekDayOfMonth(dDateStart);	
	var bUp = (iDayCount < 0)? true : false;
	if (iWeekDay == 5 || iWeekDay == 6){
		if (bUp) {
			iCount -= 7-iWeekDay;
			iWeekDay = 0;
		}
		else{
			iCount += 4 - iWeekDay;
			iWeekDay = 4;
		}		
	}
	if (bUp && iWeekDay + iSpare >= 5 )
		iSpare = (iWeekDay + iSpare == 5) ? iSpare+1 : iSpare+2;
	else if (!bUp &&  iWeekDay + iSpare < 0)
		iSpare = (iWeekDay + iSpare == 6) ? iSpare-1 : iSpare-2;
	return  iCount+iSpare;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getDateDiffDay(dDateStart, dDateEnd){
	return parseInt( getDateDiffHour(dDateStart, dDateEnd)/24);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getDateDiffHour(dDateStart, dDateEnd){
	return parseInt( getDateDiffMinut(dDateStart, dDateEnd)/60);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getDateDiffMinut(dDateStart, dDateEnd){
	return parseInt( getDateDiffSecond(dDateStart, dDateEnd)/60);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getDateDiffSecond(dDateStart, dDateEnd){
	return parseInt( getDateDiffMilliSecond(dDateStart, dDateEnd)/1000);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getDateDiffMilliSecond(dDateStart, dDateEnd){
	return Date.parse(dDateStart) - Date.parse(dDateEnd);
}
/********************************************************
*********************************************************
*********************************************************
Get usefull days
*********************************************************
********************************************************/
function getMilliSecondsSinceDayStarted(dDate){
	var iTemp = dDate.getHours()*3600000;
	iTemp += dDate.getMinutes()*60000;
	iTemp += dDate.getSeconds()*1000;
	iTemp += dDate.getMilliseconds()*1000;
	return iTemp;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getMilliSecondsSinceMonthStarted(dDate){
	var iTemp = (dDate.getDate()-1)*86400000;
	iTemp += dDate.getHours()*3600000;
	iTemp += dDate.getMinutes()*60000;
	iTemp += dDate.getSeconds()*1000;
	iTemp += dDate.getMilliseconds()*1000;
	return iTemp;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getWeekDayOfMonth(dDate){
	return (dDate.getDay() < 1)? 6 : dDate.getDay() - 1 ;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getFirstDayOfMonth(dDate){
	return new Date(dDate.getFullYear(), dDate.getMonth(), 1, 12, 0);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getLastDayOfMonth(dDate, bRemoveHour){
	if (bRemoveHour){
		var dDate = dateAddDay(dateAddMonth(new Date(dDate.getFullYear(), dDate.getMonth()), 1), -1);
		return new Date(dDate.getFullYear(), dDate.getMonth(), dDate.getDate());
	}
	else
		return dateAddDay(dateAddMonth(new Date(dDate.getFullYear(), dDate.getMonth()), 1), -1);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function isLastDayOfMonth(dDate){
	var dDate			= new Date(dDate.getFullYear(), dDate.getMonth(), dDate.getDate() );
	return ( Date.parse(dDate) == Date.parse(getLastDayOfMonth(dDate, true)) ) ? true : false;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getFirstWeekDayOfMonth(dDate){
	return getWeekDayOfMonth(getFirstDayOfMonth(dDate));
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getLastWeekDayOfMonth(dDate){
	return getWeekDayOfMonth(getLastDayOfMonth(dDate));
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getFirstDayOfNextMonth(dDate){
	return getFirstDayOfMonth(dateAddMonth(dDate, +1));
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getFirstWeekDayOfNextMonth(dDate){
	return getWeekDayOfMonth(getFirstDayOfNextMonth(dDate));
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getLastDayOfPreviousMonth(dDate){
	return new Date(dDate.getFullYear(), dDate.getMonth(), 0);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getLastWeekDayOfPreviousMonth(dDate){
	return getWeekDayOfMonth(getLastDayOfPreviousMonth(dDate));
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getFirstDayOfYear(dDate){
	return new Date(dDate.getFullYear(), 0, 1);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getFirstWeekDayOfYear(dDate){
	return getWeekDayOfMonth(getFirstDayOfYear(dDate));
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getLastDayOfYear(dDate){
	return new Date(dDate.getFullYear(), 11, 31);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function getLastWeekDayOfYear(dDate){
	return getWeekDayOfMonth(getLastDayOfYear(dDate));
}
/********************************************************
*********************************************************
*********************************************************
write a clock on the site and update it.
*********************************************************
********************************************************/
function writeClock(sDateFormat, iUpdateDelay){
	document.write('<br><br><div id="showClock" style="width:200px;"></div>');
	updateClock(sDateFormat, iUpdateDelay);
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
function updateClock(sDateFormat, iUpdateDelay) {
	iUpdateDelay = iUpdateDelay || 1000;
	sDateFormat = sDateFormat || 'dddd dd mmmm yyyy hh:nn ss';
	var sBuffer = '';
	sBuffer		+= '<font  class="topLogo">';
	sBuffer		+= formatCustomDate(new Date(), sDateFormat);
	sBuffer		+= '</font>';
	writeLayer(showClock, sBuffer);
	setTimeout("updateClock(\""+sDateFormat+"\","+iUpdateDelay+")",iUpdateDelay); 
}
/**********************************************************
***********************************************************
*  Copyright 2004 (c) Aumediage S.P.R.L. All Rights Reserved.								*
*  This is a commercial software product, please visit												*
*  http://www.aumediage.net for more information. or send email to					*
*  aumediage@hotmail.com																						*
*  See http://www.aumediage.net for Commercial License Agreement				*
*  All Copyright statements must always remain in place in all files at all times	*
*		***** PLEASE NOTE: THIS IS NOT FREE SOFTWARE	*****						*
*				*****	IT MUST BE LICENSED FOR ALL USE	*****								*
*  HISTORY																												*
*	Name			Date							Action											Version			*
*	GdB				27/02/2001			Creation										1.00					*
*	GdB				27/02/2001			Added DateDiff & DateAdd			1.1					*
																																	*
************************************************************
***********************************************************/
