FORMAT_DATE_FR = "dmy"
FORMAT_DATE_US = "mdy";
FORMAT_DATE_INT = 'yyyy-MM-ddT00:00:00';

function parseDateTime(stDate)
{

	if( stDate == '' ) return null;

	var index1 = stDate.indexOf("-");
	var stYear = stDate.substr(0, index1);

	//var index2 = stDate.lastIndexOf("-");
	//var stMonth = stDate.substring(index1+1, index2);
	stDate = stDate.substring(index1+1, stDate.length);
	var index2 = stDate.indexOf("-");
	var stMonth = stDate.substring(0, index2);

	var index3 = stDate.indexOf("T");
	var stDay = stDate.substring(index2+1, index3);

	var index4 = stDate.indexOf(":");
	var stHour = stDate.substring(index3+1, index4);
	var index5 = stDate.lastIndexOf(":");
	var stMinute = stDate.substring(index4+1, index5);
	var index6 = stDate.lastIndexOf(".");
	if( index6 == -1 ) index6 = stDate.length;
	var stSecond = stDate.substring(index5+1, index6);

	var d = new Date();
	d.setUTCDate(stDay);
	d.setUTCFullYear(stYear,(Number(stMonth) - 1),stDay);
	d.setUTCMonth((Number(stMonth) - 1));
	d.setUTCDate(stDay);
	//
	d.setUTCHours(stHour);
	d.setUTCMinutes(stMinute);
	d.setUTCSeconds(stSecond);

	//return d.toLocaleString();

	return d;
}

function parseShortDateTimeFR(stDate)
{
	if( stDate == '' || stDate == null ) return '';
	var index1 = stDate.indexOf("/");
	var stDay = stDate.substr(0, index1);
	var index2 = stDate.lastIndexOf("/");
	var stMonth = stDate.substring(index1+1, index2);
	var stYear = stDate.substring(index2+1,stDate.length);

	var d = new Date();
	d.setDate(stDay);
	d.setMonth(stMonth-1);
	d.setYear(stYear);

	return d;
}

function formatDateToString(oDate,format)
{
	if( oDate == null ) return '';
	
	switch(format)
	{
		case FORMAT_DATE_FR:
			return oDate.getDate() + "/" + (oDate.getMonth()+1) + "/" + oDate.getFullYear();
		case FORMAT_DATE_US:
			return (oDate.getMonth()+1) + "/" + oDate.getDate() + "/" + oDate.getFullYear();
		default: return '';
	}
}

function DateConvert(val, format)
{
    	function GetFullYear(year)
    	{
        	return (year + parseInt(val.century)) - ((year < val.cutoffyear) ? 0 : 100);
    	}
    	
    	var num, cleanInput, m, exp;
	var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})\\s*$");
	
	m = val.match(yearFirstExp);
	
	var day, month, year;
	if (m != null && (m[2].length == 2 || m[2].length == 4 || format == "ymd")) 
	{
	    day = m[6];
	    month = m[5];
	    year = (m[2].length == 4 ) ? m[2] : GetFullYear(parseInt(m[3], 10))
	}
	else 
	{
	    if (format == "ymd") return null;		

	    var yearLastExp = new RegExp("^\\s*(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))\\s*$");
	    m = val.match(yearLastExp);
	    if (m == null) 
	        return null;

	    if (format == "mdy") 
	    {
	        day = m[3];
	        month = m[1];
	    }
	    else {
	    	
	        day = m[1];
	        month = m[3];
	    }
	    year = (m[5].length == 4 ) ? m[5] : (m[6].length == 2 ) ? Number('19' + m[6]) : GetFullYear(parseInt(m[6], 10))
	}
	month -= 1;
	var dt = new Date(year, month, day);
	return (typeof(dt) == "object" && year == dt.getFullYear() && month == dt.getMonth() && day == dt.getDate()) ? dt : null;
    
}


function GetUTCDate(oDate)
{	
	var str;
	if( oDate == null) return oDate;

	var strMonth;
	if(oDate.getUTCMonth()+1<10) strMonth = "0" + (oDate.getUTCMonth()+1);
	else strMonth = oDate.getUTCMonth()+1;

	var strDate;
	if(oDate.getUTCDate()<10) strDate = "0" + (oDate.getUTCDate());
	else strDate = oDate.getUTCDate();

	var strHours;
	if(oDate.getUTCHours()<10) strHours = "0" + oDate.getUTCHours();
	else strHours = oDate.getUTCHours();
	
	var strMinutes;
	if(oDate.getUTCMinutes()<10) strMinutes = "0" + oDate.getUTCMinutes();
	else strMinutes = oDate.getUTCMinutes();

	var strSeconds;
	if(oDate.getUTCSeconds()<10) strSeconds = "0" + oDate.getUTCSeconds();
	else strSeconds = oDate.getUTCSeconds();
	
	var strMilliseconds;
	if(oDate.getUTCMilliseconds()<10) strMilliseconds = "0" + oDate.getUTCMilliseconds();
	else strMilliseconds = oDate.getUTCMilliseconds();
		
	str = oDate.getUTCFullYear() + "-" + strMonth + "-" + strDate + "T" + strHours + ":" + strMinutes + ":" + strSeconds + "." + strMilliseconds;
	return str;
}


function GetUTCSmallDate(oDate)
{
	var str;
	if( oDate == null) return oDate;
	
	var strMonth;
	if(oDate.getUTCMonth()+1<10) strMonth = "0" + (oDate.getUTCMonth()+1);
	else strMonth = oDate.getUTCMonth()+1;

	var strDate;
	if(oDate.getUTCDate()<10) strDate = "0" + (oDate.getUTCDate());
	else strDate = oDate.getUTCDate();

	str = oDate.getUTCFullYear() + "-" + strMonth + "-" + strDate;
	return str;
}


function DisplayCalendar(dt,format)
{
	var oDate;
	
	
	if( dt != '' )
	{
		if (format) oDate = getDateFromFormat(dt,format);
		else oDate = parseShortDateTimeFR(dt);
	}
	else
		oDate = new Date();

	oDate = showModalDialog( "Calendar.asp", oDate,"dialogWidth:225px; dialogHeight:225px; Scroll: No; help:No; resizable:No; status:No;" );
	
	if( oDate != null ) 
		oDate = new Date(oDate);
		
	return oDate;
		
}

function DisplayCalendarAndTime(dt,format)
{
	var oDate;
	
	if( typeof(dt) != 'object' ) {
		if( dt != '' )
		{
			if (format) oDate = getDateFromFormat(dt,format);
			else oDate = parseShortDateTimeFR(dt);
		}
		else
			oDate = new Date();
	}
	else {
		oDate = dt;
	}
	 

	oDate = showModalDialog( "Calendar.asp?time=1", oDate,"dialogWidth:225px; dialogHeight:450px; Scroll: No; help:No; resizable:No; status:No;" );
	
	if( oDate != null ) 
		oDate = new Date(oDate);
		
	return oDate;
		
}

function DisplayCalendarEx(btnName, fieldName, fieldUTCName, sFormat)
{
		var vTopPos = 0;
		var vLeftPos = 0;
		var vScreenWidth;
		var vScreenHeight;
		var vPopupWidth = 112;
		var vPopupHeight = 185;
		var oDate;
		var vButtonFld = document.getElementById(btnName);
		var vFieldFld = document.getElementById(fieldName);
		var vFieldUTCFld = document.getElementById(fieldUTCName);
		
		vScreenWidth = screen.availWidth;
		vScreenHeight = screen.availHeight;
		vTopPos = vButtonFld.offsetTop - document.body.scrollTop + window.screenTop;
		vLeftPos = vButtonFld.offsetLeft - document.body.scrollLeft + window.screenLeft;
		vParent = vButtonFld.offsetParent;

		    while (vParent != null) {
		       vTopPos = vTopPos + vParent.offsetTop;
		       vLeftPos = vLeftPos + vParent.offsetLeft;
		       vParent = vParent.offsetParent;
		    }
		    
		    vTopPos = vTopPos - 75;
		    vLeftPos = vLeftPos + 0;
		    if (vLeftPos + vPopupWidth > vScreenWidth)
		       vLeftPos = vScreenWidth - vPopupWidth;
		    if (vTopPos + vPopupHeight > vScreenHeight)
		       vTopPos = vScreenHeight - vPopupHeight;

		  var vDateParam = '';
		  
		if( vFieldUTCFld.value != '' )
			oDate = parseDateTime(vFieldUTCFld.value);
		else
			oDate = new Date();

		oDate = showModalDialog("Calendar.asp" ,oDate ,'dialogTop:' + vTopPos + ';dialogLeft:' + vLeftPos + ';dialogWidth:' + vPopupWidth + 'px; dialogHeight:' + vPopupHeight + 'px; Scroll: No; help:No; resizable:No; status:No;');		  
		if( oDate != null ) 
		{
			oDate = new Date(oDate);		  
			if (sFormat) vFieldFld.value = formatDate(oDate,sFormat);
			else vFieldFld.value = oDate.toString();
			vFieldUTCFld.value = GetUTCDate(oDate);
		}
	
}

	/*-----------------------------*/
	/* SQLV - Passe Champs Date    */
	/*-----------------------------*/	
	
	function fnCalendar (myName) {
		var iDate;
		var dt;
		var sFormat;
		iDate=document.getElementById (myName);
		sFormat = iDate.DateFormat;
		dt=iDate.value;
		dt=DisplayCalendar(dt,sFormat);
		if (dt) iDate.value=formatDate(dt,sFormat);
		else iDate.value='';

	}
	
	
var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x){return(x<0||x>9?"":"0")+x}
function isDate(val,format){var date=getDateFromFormat(val,format);if(date==0){return false;}return true;}
function compareDates(date1,dateformat1,date2,dateformat2){var d1=getDateFromFormat(date1,dateformat1);var d2=getDateFromFormat(date2,dateformat2);if(d1==0 || d2==0){return -1;}else if(d1 > d2){return 1;}return 0;}
function formatDate(date,format){format=format+"";var result="";var i_format=0;var c="";var token="";var y=date.getYear()+"";var M=date.getMonth()+1;var d=date.getDate();var E=date.getDay();var H=date.getHours();var m=date.getMinutes();var s=date.getSeconds();var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;var value=new Object();if(y.length < 4){y=""+(y-0+1900);}value["y"]=""+y;value["yyyy"]=y;value["yy"]=y.substring(2,4);value["M"]=M;value["MM"]=LZ(M);value["MMM"]=MONTH_NAMES[M-1];value["NNN"]=MONTH_NAMES[M+11];value["d"]=d;value["dd"]=LZ(d);value["E"]=DAY_NAMES[E+7];value["EE"]=DAY_NAMES[E];value["H"]=H;value["HH"]=LZ(H);if(H==0){value["h"]=12;}else if(H>12){value["h"]=H-12;}else{value["h"]=H;}value["hh"]=LZ(value["h"]);if(H>11){value["K"]=H-12;}else{value["K"]=H;}value["k"]=H+1;value["KK"]=LZ(value["K"]);value["kk"]=LZ(value["k"]);if(H > 11){value["a"]="PM";}else{value["a"]="AM";}value["m"]=m;value["mm"]=LZ(m);value["s"]=s;value["ss"]=LZ(s);while(i_format < format.length){c=format.charAt(i_format);token="";while((format.charAt(i_format)==c) &&(i_format < format.length)){token += format.charAt(i_format++);}if(value[token] != null){result=result + value[token];}else{result=result + token;}}return result;}
function _isInteger(val){var digits="1234567890";for(var i=0;i < val.length;i++){if(digits.indexOf(val.charAt(i))==-1){return false;}}return true;}
function _getInt(str,i,minlength,maxlength){for(var x=maxlength;x>=minlength;x--){var token=str.substring(i,i+x);if(token.length < minlength){return null;}if(_isInteger(token)){return token;}}return null;}
function getDateFromFormat(val,format){val=val+"";format=format+"";var i_val=0;var i_format=0;var c="";var token="";var token2="";var x,y;var now=new Date();var year=now.getYear();var month=now.getMonth()+1;var date=1;var hh=now.getHours();var mm=now.getMinutes();var ss=now.getSeconds();var ampm="";while(i_format < format.length){c=format.charAt(i_format);token="";while((format.charAt(i_format)==c) &&(i_format < format.length)){token += format.charAt(i_format++);}if(token=="yyyy" || token=="yy" || token=="y"){if(token=="yyyy"){x=4;y=4;}if(token=="yy"){x=2;y=2;}if(token=="y"){x=2;y=4;}year=_getInt(val,i_val,x,y);if(year==null){return 0;}i_val += year.length;if(year.length==2){if(year > 70){year=1900+(year-0);}else{year=2000+(year-0);}}}else if(token=="MMM"||token=="NNN"){month=0;for(var i=0;i<MONTH_NAMES.length;i++){var month_name=MONTH_NAMES[i];if(val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()){if(token=="MMM"||(token=="NNN"&&i>11)){month=i+1;if(month>12){month -= 12;}i_val += month_name.length;break;}}}if((month < 1)||(month>12)){return 0;}}else if(token=="EE"||token=="E"){for(var i=0;i<DAY_NAMES.length;i++){var day_name=DAY_NAMES[i];if(val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()){i_val += day_name.length;break;}}}else if(token=="MM"||token=="M"){month=_getInt(val,i_val,token.length,2);if(month==null||(month<1)||(month>12)){return 0;}i_val+=month.length;}else if(token=="dd"||token=="d"){date=_getInt(val,i_val,token.length,2);if(date==null||(date<1)||(date>31)){return 0;}i_val+=date.length;}else if(token=="hh"||token=="h"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<1)||(hh>12)){return 0;}i_val+=hh.length;}else if(token=="HH"||token=="H"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<0)||(hh>23)){return 0;}i_val+=hh.length;}else if(token=="KK"||token=="K"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<0)||(hh>11)){return 0;}i_val+=hh.length;}else if(token=="kk"||token=="k"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<1)||(hh>24)){return 0;}i_val+=hh.length;hh--;}else if(token=="mm"||token=="m"){mm=_getInt(val,i_val,token.length,2);if(mm==null||(mm<0)||(mm>59)){return 0;}i_val+=mm.length;}else if(token=="ss"||token=="s"){ss=_getInt(val,i_val,token.length,2);if(ss==null||(ss<0)||(ss>59)){return 0;}i_val+=ss.length;}else if(token=="a"){if(val.substring(i_val,i_val+2).toLowerCase()=="am"){ampm="AM";}else if(val.substring(i_val,i_val+2).toLowerCase()=="pm"){ampm="PM";}else{return 0;}i_val+=2;}else{if(val.substring(i_val,i_val+token.length)!=token){return 0;}else{i_val+=token.length;}}}if(i_val != val.length){return 0;}if(month==2){if( ((year%4==0)&&(year%100 != 0) ) ||(year%400==0) ){if(date > 29){return 0;}}else{if(date > 28){return 0;}}}if((month==4)||(month==6)||(month==9)||(month==11)){if(date > 30){return 0;}}if(hh<12 && ampm=="PM"){hh=hh-0+12;}else if(hh>11 && ampm=="AM"){hh-=12;}var newdate=new Date(year,month-1,date,hh,mm,ss);return newdate;}
function parseDate(val){var preferEuro=(arguments.length==2)?arguments[1]:false;generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');dateFirst =new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');var d=null;for(var i=0;i<checkList.length;i++){var l=window[checkList[i]];for(var j=0;j<l.length;j++){d=getDateFromFormat(val,l[j]);if(d!=0){return new Date(d);}}}return null;}
function changeDateFormat(val,format1,format2){return formatDate(getDateFromFormat(val,format1),format2)}

Date.prototype.add = function (sInterval, iNum){
  var dTemp = this;
  if (!sInterval || iNum == 0) return dTemp;
  switch (sInterval.toLowerCase()){
    case "ms":
      dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum);
      break;
    case "s":
      dTemp.setSeconds(dTemp.getSeconds() + iNum);
      break;
    case "mi":
      dTemp.setMinutes(dTemp.getMinutes() + iNum);
      break;
    case "h":
      dTemp.setHours(dTemp.getHours() + iNum);
      break;
    case "d":
      dTemp.setDate(dTemp.getDate() + iNum);
      break;
    case "mo":
      dTemp.setMonth(dTemp.getMonth() + iNum);
      break;
    case "y":
      dTemp.setFullYear(dTemp.getFullYear() + iNum);
      break;
  }
  return dTemp;
}



