jQuery.fn.countdown = function(params) {
    var self = this;
    
    //Properties
    //----------------------------------------------            
    //set the time and day to work with
        
    self.display  = $(this);
    self.from     = parseInt(params.from);     
    self.target   = parseInt(params.target);       
    self.message  = params.message?params.message:"Completed";
    self.addZeros = params.addZeros?params.addZeros:false;
    
    //Events
    //----------------------------------------------
    self.onTick = params.onTick?params.onTick:function() { return true; };
    self.onFinish = params.onFinish?params.onFinish:function() { return true; };
    
    self.timer = 0;
    //Methods
    //----------------------------------------------   
    //Updates the text for the countdown timer
    self._tick = function() {
    	self.from = (parseInt(self.from)+1);
        var now = parseInt( self.target - self.from );
        
        if (now < 0 || isNaN(now)) {

            //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;        
        
        var day = (Math.floor(seconds/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
        var text = '';
        if(day==1) {
            text = text + " <em class=\"day\">1 day</em> ";    
        } else if (day>1) {
            text = text + " <em class=\"day\">" + day + " days</em> ";    
        }
        self.display.html(text + hrs+":"+min+":"+sec);
        
        self.timer = self.timer + 1000;
    };
        
    //Setup Routine
    //----------------------------------------------
    self._interval = window.setInterval(
        self._tick,
        params.interval?params.interval:1000
        );
        
    //run immediately by default
    if (!params.delayStart) { self._tick(); };

    //return itself
    return this;

};

self.parse_date = function (string) {  
    
    var parts = String(string).split(/[- :]/);

    return new Date(parts[0], parseInt ( parts[1].replace ( /^0/, '' ) -1 ), parts[2], parts[3], parts[4], parts[5], 0);
};

function _rgb2hex(rgb_string, r, g, b) { return ( (1 << 24) | (parseInt(r) << 16) | (parseInt(g) << 8) | parseInt(b) ).toString(16).substr(1); }

function RGBtoHEX(string)
{
   if(typeof string === 'string')
      string = string.replace(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/g, _rgb2hex);
   return string;
}

$().ready(function() {
	
	$('div.countdown .time span').each(function(n,element){
		var dtime = element.innerHTML.split(" &gt; ");
		
		$(element).countdown({target:dtime[0], from: dtime[1], addZeros:true});
	});
	
	if ( $('.color_set').length > 0 )
	{
		$('.color_set').live('click', function ( event )
		{
			var bg = RGBtoHEX ( $(event.currentTarget.childNodes[1]).css('background-color') );
			var fg = RGBtoHEX ( $(event.currentTarget.childNodes[3]).css('background-color') );
			
			$('input[name=baner\[background\]]').val( bg );
			$('input[name=baner\[background\]]').css('background-color', '#' + bg );
			$('input[name=baner\[foreground\]]').val( fg );
			$('input[name=baner\[foreground\]]').css('background-color', '#' + fg );
		});
	}
});


