/*
 * jCountdown
 * Creates a countdown timer from a jQuery object. Allows you to format
 * the way the time is displayed.
 *
 * $(<selector>).countdown({params});
 */

jQuery.fn.countdown = function(params) {
    var self = this;
	
    //Properties
    //----------------------------------------------
    self.display = $(this);
    self.message = params.message?params.message:"It's Here!!";
    self.addZeros = params.addZeros?params.addZeros:false;
	//self.start_date_time = new Date(params.start_date_time); 
	//self.end_date_time = new Date(params.end_date_time);
	
    //Events
    //----------------------------------------------
    self.onTick = params.onTick?params.onTick:function() { return true; };
    self.onFinish = params.onFinish?params.onFinish:function() { return true; };
	
    //Methods
    //----------------------------------------------   
    //Updates the text for the countdown timer
	//var now = self.end_date_time - self.start_date_time;
	var now = params.time_in_seconds;
	
	var time_over = params.totaltime - params.time_in_seconds;
	
    self._tick = function() {
		now = now-1;
		
		//make sure success hasn't been reached
        if (now.valueOf() < 0) {
			//clear the interval and run the event
            window.clearInterval(self._interval);
            if (!self.onFinish(self.display)) { return; }
            
            //display the finish message
            self.display.html(self.message);
            return;
        };
        
        //update the values
        //var seconds = now.valueOf()/1000;   
		var seconds = now.valueOf();
        var day = (Math.floor(seconds/86400))%86400;
        var hrs = (Math.floor(seconds/3600))%24;
        var min = (Math.floor(seconds/60))%60;
        var sec = (Math.floor(seconds/1))%60;
        
        //run the event if needed
        if (!self.onTick(self.display,day,hrs,min,sec)) { return; }; 
        
        //check for zeros
        if (self.addZeros) {
            hrs = (hrs+"").length<2?"0"+hrs:hrs;
            min = (min+"").length<2?"0"+min:min;
            sec = (sec+"").length<2?"0"+sec:sec;
        };
        //display the new time
		
		$("#day").text(day);
		$("#hour").text(hrs);
		$("#minute").text(min);
		$("#second").text(sec);
		/*self.display.html(
            "<div><b>"+day+"</b> day(s) </div>"+
            "<div><b>"+hrs+"</b> hour(s) </div>"+
            "<div><b>"+min+"</b> minute(s) </div>"+
            "<div><b>"+sec+"</b> second(s) </div>"
        );*/
		time_over = time_over + 1;
		if(params.totaltime > 0){
			var progress = (time_over * 100)/params.totaltime;
			if(progress <= 100){
				$("#progressbar").progressbar("option", "value", progress);
			}
		}
	};
    
    //Setup Routine
    //----------------------------------------------
    self._interval = window.setInterval(
        self._tick,
        params.interval?params.interval:1000
        );
    
    //run immediately by default
    //if (!params.delayStart) { self.update(); };
	
    //return itself
    return this;
};

