/*********************************************************************
*** (C) Antonio Olmedo Soler,2002-2003 (All rights reserved)       ***
*** Don't make any changes without reporting to oks@ok-systems.com ***
**********************************************************************
*** File: fu_date.js                                               ***
*** Project_: Virtual Office                                       ***
*** Language: JavaScript                                           ***
*** Description: Library of general functions                      ***
*********************************************************************/


//==============================================================================
// DATE CONSTANTS
//==============================================================================

var MONTHS				=new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var MONTHS_LONG		=new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var WEEKDAYS			=new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
var WEEKDAYS_LONG		=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
//--- support to other languages
//- Spanish
var MONTHS_ES			=new Array('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic');
var MONTHS_ES_LONG	=new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
var WEEKDAYS_ES		=new Array('D','L','M','X','J','V','S');
var WEEKDAYS_ES_LONG	=new Array('Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado');
//- German
var MONTHS_DE			=new Array('Jan','Feb','Mrz','Apr','Mai','Jun','Jul','Aug','Sep','Oct','Nov','Dez');
var MONTHS_DE_LONG	=new Array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
var WEEKDAYS_DE		=new Array('So','Mo','Di','Mi','Do','Fr','Sa');
var WEEKDAYS_DE_LONG	=new Array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
//- French
var MONTHS_FR			=new Array('Janv','Fevr','Mars','Avr','Mai','Juin','Juil','Août','Sept','Oct','Nov','Déc');
var MONTHS_FR_LONG	=new Array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
var WEEKDAYS_FR		=new Array('Dim','Lun','Mar','Mer','Jeu','Ven','Sam');
var WEEKDAYS_FR_LONG	=new Array('Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi');
//- Portugues
var MONTHS_PT			=new Array('Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez');
var MONTHS_PT_LONG	=new Array('Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro');
var WEEKDAYS_PT		=new Array('Seg','Ter','Qua','Qui','Sex','Sab','Dom');
var WEEKDAYS_PT_LONG	=new Array('Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado','Domingo');
//- Catalan
var MONTHS_CAT			=new Array('Gen','Feb','Mar','Abr','Mai','Jun','Jul','Ago','Set','Oct','Nov','Des');
var MONTHS_CAT_LONG	=new Array('Gener','Febrer','Març','Abril','Maig','Juny','Juliol','Agost','Setembre','Octubre','Novembre','Desembre');
var WEEKDAYS_CAT		=new Array('Dg','Dl','Dt','Dc','Dj','Dv','Ds');
var WEEKDAYS_CAT_LONG=new Array('Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte');
//- Week days
var MONDAY=1; var TUESDAY=2; var WEDNESDAY=3; var THURSDAY=4; var FRIDAY=5; var SATURDAY=6; var SUNDAY=0;
//- Months
var JAN=0; var FEB=1; var MAR=2; var APR=3; var MAY=4;  var JUN=5;
var JUL=6; var AUG=7; var SEP=8; var OCT=9; var NOV=10; var DEC=11;
//-
var DATE_DELIMITER='-';
var TIME_DELIMITER=':';
var DATE_LANGUAGE='ES';
var DATE_LANGUAGE_SERVER='ES';

//==================================================
// DATA TYPE VALIDATION FUNCTIONS
//==================================================

//--------------------
//- Created_: 04-Apr-2001, Antonio Olmedo Soler
//- Modified: 02-Nov-2001, Antonio Olmedo Soler
//- Syntax__: Date_IsValid (cDate)
//- Returns_: a Boolean (is a valid date ?)
//- Description: 
//--------------------
function Date_IsValid(cDate) {
	//alert('Date_IsValid('+cDate+')\n'+Date_Parse(cDate));
   //--- NaN is never equal to itself.
   //return (Date.parse(cDate)==Date.parse(cDate));
   //--- Alternative method to validate date
   return !isNaN(Date_Parse(cDate));
}

//--------------------
//- Created_: 22-Nov-2000, Antonio Olmedo Soler
//- Modified: 04-Jun-2001, Antonio Olmedo Soler
//- Syntax__: WeekDay_IsWeekend (nDay)
//- Returns_: a Boolean (true if day is 0 or 6, Saturday or Sunday)
//- Description: 
//--------------------
function WeekDay_IsWeekend (nDay) {
	switch (nDay) {
	case SUNDAY: case SATURDAY:	return true; break;
	default: 							return false;
	}
}

//--------------------
//- Created_: 05-Jun-2001, Antonio Olmedo Soler
//- Modified: 05-Jun-2001, Antonio Olmedo Soler
//- Syntax__: Date_IsWeekend (dDate)
//- Returns_: a Boolean (true if day is 0 or 6, Saturday or Sunday)
//- Description: 
//--------------------
function Date_IsWeekend(dDate) {
	switch (dDate.getDay()) {
	case SUNDAY: case SATURDAY:	return true; break;
	default: 							return false;
	}
}


//==================================================
// FORMATTING FUNCTIONS
//==================================================

//--------------------
//- Created_: 24-Aug-2000, Antonio Olmedo Soler
//- Modified: 18-Apr-2005, Antonio Olmedo Soler
//- Syntax__: Date_FormatDate(cDate,[bShowTime=true],[bShowDate=true],[bShowWeekDay=false],[cLanguage=DATE_LANGUAGE])
//- Returns_: a String
//- Description: 
//--------------------
function Date_FormatDate (cDate) {
	//·Debug_Function('Date_FormatDate',null,arguments);
	//---
	try {
		if (cDate=='' || cDate==null) return '';
		//var dDate=new Date(cDate);
		var dDate=Date_Parse(cDate);
		//Debug('Date_FormatDate',cDate+'->'+dDate);
		if (isNaN(dDate)) return cDate;
		//--- Optional arguments
		var bShowTime		=true;
		var bShowDate		=true;
		var bShowWeekDay	=false;
		var cLanguage		=DATE_LANGUAGE;
		if (arguments.length>1) bShowTime=arguments[1];
		if (arguments.length>2) bShowDate=arguments[2];
		if (arguments.length>3) bShowWeekDay=arguments[3];
		if (arguments.length>4) if (arguments[4]) cLanguage=arguments[4];
				//---
		var cOut='';
		if (bShowDate) {
			var nDay=dDate.getDate();				// Day of the month
			var nMonth=dDate.getMonth();			// Month number
			var nYear=dDate.getFullYear();		// Year number
			//-
			switch (cLanguage) {
			case 'ES':	cOut+=nDay+DATE_DELIMITER+MONTHS_ES[nMonth]+DATE_DELIMITER+nYear; break;
			case 'DE':	cOut+=nDay+DATE_DELIMITER+MONTHS_DE[nMonth]+DATE_DELIMITER+nYear; break;
			case 'FR':	cOut+=nDay+DATE_DELIMITER+MONTHS_FR[nMonth]+DATE_DELIMITER+nYear; break;
			case 'PT':	cOut+=nDay+DATE_DELIMITER+MONTHS_PT[nMonth]+DATE_DELIMITER+nYear; break;
			case 'CT':	cOut+=nDay+DATE_DELIMITER+MONTHS_CAT[nMonth]+DATE_DELIMITER+nYear; break;
			default:		cOut+=nDay+DATE_DELIMITER+MONTHS[nMonth]+DATE_DELIMITER+nYear;
			}
		}
		if (bShowTime) {
			if (bShowDate) cOut+=' ';
			var nHours=dDate.getHours();			// Hour
			var nMinutes=dDate.getMinutes();		// Minutes
			cOut+=(nHours<10?'0':'')+nHours+':';
			cOut+=(nMinutes<10?'0':'')+nMinutes;
		}
		if (bShowWeekDay) {
			//Debug(dDate,dDate.getDay());
			cOut+=' '+WeekDay_LongName(dDate.getDay());
		}
	} catch(oError) { Debug_Function('Date_FormatDate',oError,arguments); }
	return cOut;
}

//--------------------
//- Created_: 26-Aug-2000, Antonio Olmedo Soler
//- Modified: 09-Jan-2002, Antonio Olmedo Soler
//- Syntax__: Date_FormatSQL (cDate,[bShowTime=true])
//- Returns_: a String
//- Description: Return a date in a format acceptable with a database SQL statement: #mm-dd-yyyy#
//  NOTE: This function doesn't parse textual strings (like "1-Jul-2000"). Only for database values !
//--------------------
function Date_FormatSQL (cDate) {
	//·DebugFunction('Date_FormatSQL',arguments);
	//--- Validate date argument
	//var dDate=new Date(cDate);
	var dDate=Date_Parse(cDate);
	if (isNaN(dDate)) return 'Null';
	//--- Optional arguments
	var bShowTime=true;
	if (arguments.length>1) bShowTime=arguments[1];
	//----
	var nDay=dDate.getDate();				// Day of the month
	var nMonth=dDate.getMonth()+1;		// Month number
	var nYear=dDate.getFullYear();		// Year number
	var cOut='#'+nMonth+'-'+nDay+'-'+nYear;
	if (bShowTime) {
		var nHours=dDate.getHours();		// Hour
		var nMinutes=dDate.getMinutes();	// Minutes
		cOut+=' ';
		cOut+=(nHours<10?'0':'')+nHours+':';
		cOut+=(nMinutes<10?'0':'')+nMinutes;
	}
	cOut+='#';
	//---
	return cOut;
}

//--------------------
//- Created_: 31-May-2001, Antonio Olmedo Soler
//- Modified: 31-May-2001, Antonio Olmedo Soler
//- Syntax: Date_URLString()
//- Description: Build a string based on the current time, to add to URLs that need to be forced to load 
//--------------------
function Date_URLString () {
	var dDate=new Date();
	return ''+dDate.getDate()+dDate.getHours()+dDate.getMinutes()+dDate.getSeconds()+dDate.getMilliseconds();
}

//--------------------
//- Created_: 16-Mar-1999, Antonio Olmedo Soler
//- Modified: 19-Oct-2001, Antonio Olmedo Soler
//- Syntax__: Month_LongName(nMonth)
//- Returns_: a String (full name of the month)
//--------------------
function Month_LongName (nMonth) {
	try {	return MONTHS_LONG[nMonth]; } catch (oError) { DebugFunction('Month_LongName',arguments,oError); return '[?]'; }
}

//--------------------
//- Created_: 16-Mar-1999, Antonio Olmedo Soler
//- Modified: 19-Oct-2001, Antonio Olmedo Soler
//- Syntax__: Month_ShortName(nMonth)
//- Returns_: a String (short name of the month: first 3 letters)
//--------------------
function Month_ShortName (nMonth) {
	try {	return MONTHS[nMonth]; } catch (oError) { DebugFunction('Month_ShortName',arguments,oError); return '[?]'; }
}

//--------------------
//- Created_: 06-Jun-2001, Antonio Olmedo Soler
//- Modified: 10-Jul-2004, Antonio Olmedo Soler
//- Syntax__: Month_Number(cMonthName)
//- Returns_: a number (Index of the month)
//--------------------
function Month_Number (cMonthName) {
	//DebugFunction('Month_Number',arguments,null);
	//alert(cMonthName+' > '+typeof(cMonthName)+' > '+!isNaN(cMonthName)+' > '+(parseInt(cMonthName,10)-1))
	if (typeof(cMonthName)=='number') return cMonthName-1;
	if (!isNaN(cMonthName)) return parseInt(cMonthName,10)-1;
	if (cMonthName=='' || cMonthName==null) return -1;
	if (isNaN(cMonthName)) {
		cMonthName=cMonthName.toString().toLowerCase();
		for (i in MONTHS)				{ if (MONTHS[i].toLowerCase()==cMonthName)		return i; }
		for (i in MONTHS_LONG)		{ if (MONTHS_LONG[i].toLowerCase()==cMonthName)	return i; }
		//--- In case that the user typed the month name in a different language....
		for (i in MONTHS_ES)			{ if (MONTHS_ES[i].toLowerCase()==cMonthName)		return i; }
		for (i in MONTHS_ES_LONG)	{ if (MONTHS_ES_LONG[i].toLowerCase()==cMonthName)	return i; }	
		for (i in MONTHS_DE)			{ if (MONTHS_DE[i].toLowerCase()==cMonthName)		return i; }
		for (i in MONTHS_DE_LONG)	{ if (MONTHS_DE_LONG[i].toLowerCase()==cMonthName)	return i; }	
		for (i in MONTHS_FR)			{ if (MONTHS_FR[i].toLowerCase()==cMonthName)		return i; }
		for (i in MONTHS_FR_LONG)	{ if (MONTHS_FR_LONG[i].toLowerCase()==cMonthName)	return i; }	
		for (i in MONTHS_CAT)		{ if (MONTHS_CAT[i].toLowerCase()==cMonthName)		return i; }
		for (i in MONTHS_CAT_LONG)	{ if (MONTHS_CAT_LONG[i].toLowerCase()==cMonthName)return i; }	
		for (i in MONTHS_PT)			{ if (MONTHS_PT[i].toLowerCase()==cMonthName)		return i; }
		for (i in MONTHS_PT_LONG)	{ if (MONTHS_PT_LONG[i].toLowerCase()==cMonthName)	return i; }	
	}
	return parseInt(cMonthName,10);
}

//--------------------
//- Created_: 16-Mar-1999, Antonio Olmedo Soler
//- Modified: 19-Oct-2001, Antonio Olmedo Soler
//- Syntax__: WeekDay_LongName(nDay)
//- Returns_: a String (full name of the week day)
//--------------------
function WeekDay_LongName (nDay) {
	try {	return WEEKDAYS_LONG[nDay]; } catch (oError) { DebugFunction('WeekDay_LongName',arguments,oError); return '[?]'; }
}

//--------------------
//- Created_: 16-Mar-1999, Antonio Olmedo Soler
//- Modified: 19-Oct-2001, Antonio Olmedo Soler
//- Syntax__: WeekDay_ShortName(nDay)
//- Returns_: a String (full name of the week day)
//--------------------
function WeekDay_ShortName (nDay) {
	try {	return WEEKDAYS[nDay]; } catch (oError) { DebugFunction('WeekDay_ShortName',arguments,oError); return '[?]'; }
}


//==============================================================================
// DATE CALCULATION FUNCTIONS
//==============================================================================

//--------------------
//- Created_: 29-May-2001, Antonio Olmedo Soler
//- Modified: 22-Oct-2002, Antonio Olmedo Soler
//- Syntax__: Date_Parse(cDate)
//- Returns_: a Date
//- Description: Performs a safe parsing of date, solving the problems with standard JS functions 
//--- Allows passing short-date strings (d-Mmm-yyyy hh:nnn), UTC strings, date objects, etc.
//--- NOTE: This function is under development !!!
//--------------------
function Date_Parse(cDate) {
	//Debug_Function('Date_Parse',null,arguments);
	//---
	try {
		if (cDate==null || cDate=='') return '';
		//---
		var dDate=cDate;
		switch (typeof(cDate)) {
		case 'date':
			dDate=new Date(cDate);
			break;
		case 'object':
			if (cDate.constructor) {
				if (cDate.constructor.toString().indexOf('function Date() {')!=1) {
					Debug_Function('Date_Parse',null,arguments,'Wrong value type !');
					//return cDate;
				}
			}
			break;
		case 'number': //- Number of miliseconds since 1-Jan-1970
			dDate=new Date(cDate);
			break;
		case 'string':
			var aDate=dDate.split(' ');
			var aDatePart=aDate[0].split(DATE_DELIMITER);
			nMonth=Month_Number(aDatePart[1]);
			if (nMonth>=0) {
				nMonth++;
				dDate=nMonth+DATE_DELIMITER+aDatePart[0]+DATE_DELIMITER+aDatePart[2]+(aDate.length==1?'':' '+aDate[1]);
				dDate=new Date(dDate);
			}
			break;
		default:
			
		}
	} catch (oError) { Debug_Function('Date_Parse',oError,arguments);}
	//---
	return dDate;
}

//--------------------
//- Created_: 25-Oct-2000, Antonio Olmedo Soler
//- Modified: 25-Oct-2000, Antonio Olmedo Soler
//- Syntax__: Date_DiffDays(cDate1,cDate2)
//- Returns_: a Number (number of days)
//- Description: 
//--------------------
function Date_DiffDays(cDate1,cDate2) {
	var dDate1=Date.parse(cDate1);
	var dDate2=Date.parse(cDate2);
	var nDifference=dDate2-dDate1;
	//var dDate1=new Date(cDate1);
	//var dDate2=new Date(cDate2);
	//var nUTC1=Date.UTC(dDate1.getYear(),dDate1.getMonth(),dDate1.getDate(),0,0,0);
	//var nUTC2=Date.UTC(dDate2.getYear(),dDate2.getMonth(),dDate2.getDate(),0,0,0);
	//var nDifference = nUTC1-nUTC2;
	return nDifference/1000/60/60/24;
}

//--------------------
//- Created_: 25-Oct-2000, Antonio Olmedo Soler
//- Modified: 18-Mar-2001, Antonio Olmedo Soler
//- Syntax__: Date_Add(cPeriod,nAmount,cDate)
//- Returns_: a Date object
//- Description: 
//--------------------
function Date_Add(cPeriod,nAmount,cDate) {
	//Debug_Function('Date_Add',null,arguments,Date_Parse(cDate));
	//var dDate=new Date(cDate);
	//var dDate=Date.parse(cDate);
	var dDate=Date_Parse(cDate);
	dDate=dDate.valueOf();
	//alert('Date_Add\n'+arguments+'\ndDate='+dDate);
	//---
	switch (cPeriod) {
	case 'n':	dDate=new Date(dDate+((1000*60)*nAmount));			break;	// Minutes
	case 'h':	dDate=new Date(dDate+((1000*60*60)*nAmount));		break;	// Hours
	case 'd':	dDate=new Date(dDate+((1000*60*60*24)*nAmount));	break;	// Days
	case 'w':	dDate=new Date(dDate+((1000*60*60*24*7)*nAmount));	break;	// Weeks
	case 'm':	// Months
		//dDate=new Date(dDate+(nFactor*nAmount));				
		// Months require more complex calculation: depend on number of days per month, and consider leap years.
		var nYear=dDate.getYear();
		if (nAmount>12) {
			nYear+=parseInt(nAmount/12);
			nAmount=nAmount%12;
		}
		//-
		var aMonthDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		if (nYear%400==0 || (nYear%4==0 && nYear%100!=0)) aMonthDays[1]++;
		alert('aMonthDays='+aMonthDays);
		//-
		var nDay=dDate.getDate();
		var nMonth=dDate.getMonth()+nAmount;
		if (nDay>aMonthDays[nMonth]) nDay=aMonthDays[nMonth];
		dDate=new Date(nYear,nMonth,nDay,dDate.getHours(),dDate.getMinutes(),dDate.getSeconds());
		break;
	case 'y':	//dDate=new Date(cDate);
					dDate=new Date(dDate.getYear()+nAmount,dDate.getMonth(),dDate.getDate(),dDate.getHours(),dDate.getMinutes(),0);
					break;	// Years
	//default:	return dDate;
	}
	return dDate;
}

//--------------------
//- Created_: 25-Oct-2000, Antonio Olmedo Soler
//- Modified: 04-Apr-2001, Antonio Olmedo Soler
//- Syntax__: Date_Validate(cDate,[cMin],[cMax])
//- Returns_: a String (error message or empty string)
//- Description: Check if the date is valid and matches the range
//--------------------
function Date_Validate (cDate) {
	if (!cDate) return '';
	//--- Optional arguments
	var cMin='';
	var cMax='';
	if (arguments.length>1) if (arguments[1]) cMin=arguments[1];
	if (arguments.length>2) if (arguments[2]) cMax=arguments[2];
	//---	
	var cError='';
	var dDate=Date_Parse(cDate);
	//--- Check if it's a valid date!
	if (isNaN(dDate)) {	
		cError='The value that you entered ('+cDate+') is not a valid date.\n';
		cError+='\nDates must be given in the following formats:';
		cError+='\n"d-mmm-yyyy" (example: "1-Jan-2000")';
		cError+='\n"d-mmm-yyyy hh:nn" (example: "1-Jan-2000 12:00")';
	}
	//--- Check if the date is greater than the Minimum
	if (cMin) {
		var dMin=Date_Parse(cMin);
		if (Date_DiffDays(dMin,dDate)<0) 
			cError='The date must be greater than '+cMin+'\n(You selected '+cDate+')';
	}
	//--- Check if the date is smaller than the Maximum
	if (cMax) {
		var dMax=Date_Parse(cMax);
		if (Date_DiffDays(dDate,dMax)<0) 
			cError='The date must be smaller than '+cMax+'\n(You selected '+cDate+')';
	}
	//---
	return cError;	
}

//--------------------
//- Created_: 26-Mar-2002, Antonio Olmedo Soler
//- Modified: 26-Mar-2002, Antonio Olmedo Soler
//- Syntax__: Date_ValidatePeriodFields (oStart,oEnd,[nMinDays=0])
//- Returns_: a Boolean (are Dates valid?)
//- Description: Check if the date is valid and matches the range
//--------------------
function Date_ValidatePeriodFields (oStart,oEnd) {
	var cError='';
	//--- Optional arguments
	var nMinDays=null;
	if (arguments.length>2) if (arguments[2]) nMinDays=arguments[2];
	//---
	var cStart=oStart.value;
	if (cStart) {
		if (cError=Date_Validate(cStart)) {
			alert(cError);
			oStart.focus();
			return false;
		}
	} 
	//---
	var cEnd=oEnd.value;
	if (cEnd) {
		if (cError=Date_Validate(cEnd)) {
			alert(cError);		
			oEnd.focus();
			return false;
		}
	} 
	//---
	if (cStart && cEnd) {
		var nDiff=Date_DiffDays(Date_Parse(cStart),Date_Parse(cEnd));
		if (nDiff<0) {
			cError='The End date cannot be smaller than the Start date !';
		} else if (nMinDays!=null) {
			if (nDiff<nMinDays) cError='The difference between Start and End must be at least '+nMinDays+' days';
		}
		if (cError) {
			alert(cError);
			oEnd.focus();
			return false;
		}
	}
	return true;
}

//==================================================
// TIME CONVERSION FUNCTIONS
//==================================================

//--------------------
//- Modified: 09-Apr-1999, Antonio Olmedo Soler
//- Description: 
//--------------------
function Mins2Time(nTime) {
	if (isNaN(nTime)) return '';
	if (nTime<=0) return '';
	//---
	var nHours=0;
	var nMins=0;
	//---
	nHours=parseInt(nTime/60);
	nMins=parseInt(nTime%60);
	if (nMins<10)
		return nHours+':0'+nMins;
	else
		return nHours+':'+nMins;
}

//--------------------
//- Modified: 09-Apr-1999, Antonio Olmedo Soler
//- Description: 
//--------------------
function Hours2Time(nTime) {
	if (isNaN(nTime)) return '';
	return Mins2Time(eval(nTime)*60);
}

//--------------------
//- Modified: 09-Apr-1999, Antonio Olmedo Soler
//- Description: 
//--------------------
function Time2Mins(cTime) {
	var nPos,nHours,nMins;
	//---
	nPos=cTime.indexOf(':');
	if (nPos>0) {
		//alert(cTime+'\nPos: '+nPos+'\nHour: '+cTime.substring(0,nPos)+'\nMins: '+cTime.substring(nPos+1,cTime.length));
		nHours=parseFloat(cTime.substring(0,nPos));
		nMins=parseFloat(cTime.substring(nPos+1,cTime.length));
		//alert('Hours:'+nHours+'\nMins: '+nMins);
		return (nHours*60)+nMins;
	} else {
		if (isNaN(cTime)) 
			return '';
		else
			return parseFloat(cTime);
	}
}

//--------------------
//- Modified: 09-Apr-1999, Antonio Olmedo Soler
//- Description: 
//--------------------
function Time2Hours(cTime) {
	var nHours=Time2Mins(cTime);
	if (isNaN(nHours)) return false;
	return FormatNumber(nHours/60,2);
}


//==================================================


