// JScript source code
var curDate=new Date();
var DayName=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var strSplitter = '/';
var oneMinute=1000*60;

var intervalObject=new Object();
intervalObject["yyyy"]={units:1000*60*60*24*365,measure:"year"};
intervalObject["m"]={units:1000*60*60*24*30,measure:"month"};
intervalObject["d"]={units:1000*60*60*24,measure:"day"};
intervalObject["Q"]={units:intervalObject["m"].units*3,measure:"quarter"};
intervalObject["H"]={units:oneMinute*60,measure:"hour"};
intervalObject["N"]={units:oneMinute,measure:"minute"};
intervalObject["S"]={units:1000,measure:"second"};

function DateDiff(interval,date1,date2){
	this.interval=interval;
	this.date1=date1;
	this.date2=date2;
	this.calculate=calculate;
	this.calculate();
}

Date.prototype.DateDiff=DateDiff;

function calculate(){
	var paramDate1=new String(this.date1);
	splitDate1=paramDate1.split(strSplitter);
	paramDateYear1=splitDate1[0];
	paramDateMonth1=splitDate1[1]-1;
	paramDateDay1=splitDate1[2];
	if(paramDateMonth1>12){
		showAlert("Invalid Month!");
		return false;
	}
	if(paramDateDay1>31){
		showAlert("Invalid Day!");
		return false;
	}	
	
	var paramDate2=new String(this.date2);
	splitDate2=paramDate2.split(strSplitter);
	paramDateYear2=splitDate2[0];
	paramDateMonth2=splitDate2[1]-1;
	paramDateDay2=splitDate2[2];
	if(paramDateMonth2>12){
		showAlert("Invalid Month!");
		return false;
	}
	if(paramDateDay2>31){
		showAlert("Invalid Day!");
		return false;
	}	
			
	var paramDate1Object=new Date(paramDateYear1,paramDateMonth1,paramDateDay1);
	paramDate1Object.setHours(0);
	paramDate1Object.setMinutes(0);
	paramDate1Object.setSeconds(0);
	//paramDate1Object.getTimezoneOffset() * oneMinute;
	var paramDate1ObjectTime=paramDate1Object.getTime();		
	
	var paramDate2Object=new Date(paramDateYear2,paramDateMonth2,paramDateDay2);
	paramDate2Object.setHours(0);
	paramDate2Object.setMinutes(0);
	paramDate2Object.setSeconds(0);
	var paramDate2ObjectTime=paramDate2Object.getTime();
	
	if(paramDate2Object>paramDate1Object){
		DSTAdjust=(paramDate2Object.getTimezoneOffset() - paramDate1Object.getTimezoneOffset()) * oneMinute;			
	}
	else{
		DSTAdjust=(paramDate1Object.getTimezoneOffset() - paramDate2Object.getTimezoneOffset()) * oneMinute;
	}
	
	if(typeof intervalObject[this.interval]!="undefined"){
		if(typeof intervalObject[this.interval].units=="undefined"){
			showAlert("Interval is invalid!");
			return false;
		}			
		var diff=Math.abs(paramDate2ObjectTime-paramDate1ObjectTime) - DSTAdjust;
		var timeDiff=Math.floor(diff/intervalObject[this.interval].units);
		if(timeDiff>1){
			var rname=intervalObject[this.interval].measure + "s";
		}
		else{
			var rname=intervalObject[this.interval].measure;
		}			
		this.difference=parseInt(timeDiff);
	}
	else{
		this.difference="Wrong format of interval!";		
	}	
}

