Current File : /home/caballoscriollos/www/espanol/encuesta/graphs/sourcecode/codebase/fidate.as
/*
* FusionCharts Free v2
* http://www.fusioncharts.com/free
*
* Copyright (c) 2009 InfoSoft Global (P) Ltd.
* Dual licensed under the MIT (X11) and GNU GPL licenses.
* http://www.fusioncharts.com/free/license
*
* MIT License: http://www.opensource.org/licenses/mit-license.php
* GPL License: http://www.gnu.org/copyleft/gpl.html
*
* Date: 2009-08-21
*/
//--------------------------------------------------------------------------------
/*
FIDate represents a very basic date class. In this date class, months are indexed from 1-12 instead of 0-11 (as in Flash).
*/
function FIDate(date, dateFormat) {
var tempArr = new Array();
tempArr = date.split("/");
switch (dateFormat.toUpperCase()) {
case "DD/MM/YYYY" :
case "DD,MM,YYYY" :
case "DD-MM-YYYY" :
case "D/M/Y" :
dd = tempArr[0];
mm = tempArr[1];
yyyy = tempArr[2];
break;
case "MM/DD/YYYY" :
case "MM,DD,YYYY" :
case "MM-DD-YYYY" :
case "M/D/Y" :
dd = tempArr[1];
mm = tempArr[0];
yyyy = tempArr[2];
break;
case "YYYY/MM/DD" :
case "YYYY-MM-DD" :
case "YYYY,MM,DD" :
case "Y/M/D" :
dd = tempArr[2];
mm = tempArr[1];
yyyy = tempArr[0];
break;
case "YYYY/DD/MM" :
case "YYYY-DD-MM" :
case "YYYY,DD,MM" :
case "Y/D/M" :
dd = tempArr[1];
mm = tempArr[2];
yyyy = tempArr[0];
break;
}
//Convert to numbers
yyyy = Number(yyyy);
mm = Number(mm);
dd = Number(dd);
//If any of them is non number-set our defaults
if (isNan(yyyy)==true){
yyyy=2000;
}
if (isNan(mm)==true){
mm=1;
}
if (isNan(dd)==true){
dd=1;
}
//Check for number of digits in yyyy
var n = yyyy, numDigits = 0;
while (n != 0) {
numDigits++;
n = Math.round(n/10);
}
//if it is less than 3 then add 2000 or 1900
if (numDigits<=2) {
var d = new Date();
var now = d.getUTCFullYear();
//add 2000 if 2 digit is less than current 2 digits of the year
if ((yyyy+Number(2000))<=Number(now)) {
yyyy = yyyy+Number(2000);
} else {
yyyy = yyyy+Number(1900);
}
}
//Conditional checks
//Month cannot be greater than 12
if (mm>12) {
mm = 12;
}
//Date cannot be greater than 31
if (dd>31) {
dd = 31;
}
//End Conditional Checks
//Date function
this.yyyy = yyyy;
this.mm = mm;
this.dd = dd;
}
FIDate.prototype.getYear = function() {
//This method returns the year of the date
return this.yyyy;
};
FIDate.prototype.getMonth = function() {
//This method returns the month
return this.mm;
};
FIDate.prototype.getDate = function() {
//This method returns the date
return this.dd;
};
function dateDiff(startDate, endDate) {
//This function returns the difference between two dates in days
var sDate = startDate;
var eDate = endDate;
//Number of days in each month
var daysInMonths = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var startMonthDays, endMonthDays, yearDiff, monthDiffDays;
monthDiffDays = 0;
//For days falling in the same month
if (sDate.getMonth() != eDate.getMonth()) {
startMonthDays = daysInMonths[sDate.getMonth()]-sDate.getDate()+1;
endMonthDays = eDate.getDate();
} else {
//If they belong to same year too
if (sDate.getYear() == eDate.getYear()) {
//Just calculate the diff in days
startMonthDays = eDate.getDate()-sDate.getDate()+1;
endMonthDays = 0;
} else {
//Normal calculations
startMonthDays = daysInMonths[sDate.getMonth()]-sDate.getDate()+1;
endMonthDays = eDate.getDate();
}
}
//Now, get the difference in months/years
yearDiff = eDate.getYear()-sDate.getYear();
for (var i = (sDate.getMonth()+1); i<=(((yearDiff*12)+eDate.getMonth())-1); i++) {
var monthIndex = (i%12 == 0) ? (12) : (i%12);
monthDiffDays = monthDiffDays+daysInMonths[monthIndex];
//Exception for leap year
leapYearIndex = sDate.getYear()+int(i/12);
if ((monthIndex == 2) && (((leapYearIndex%4 == 0) && (leapYearIndex%100 != 0)) || (leapYearIndex%400 == 0))) {
monthDiffDays = monthDiffDays+1;
}
}
//Return value
return startMonthDays+monthDiffDays+endMonthDays;
}
Mr. DellatioNx196 GaLers xh3LL Backd00r 1.0, Coded By Mr. DellatioNx196 - Bogor BlackHat