////////////*******************HELPERS*************************///////////
M = {};

M.display = {
	offers : function(data, targetElement){
  	var graphArray = []
		for (var i = 0, l = data.length; i < l; i++) {
			graphArray.push(M.helper.graphableOffer(data[i]));
		}

			var options = {
				
				xaxis: {
            mode: "time",
            minTickSize: [1, "day"],
            min: (new Date(data[0][0])).getTime() - 86400000,
            max: (new Date(data[data.length-1][0])).getTime() + 86400000
        }
  		};
  	
		$.plot($(targetElement), [graphArray], options);
	}
};


M.helper = {

	graphableOffer : function(m) {
		var d = new Date(m[0]);
  	return [d.getTime(), m[1], m];
	},
	
	date : {
		format : function(d, options){
			var result = formatMonth(d)+" "+d.getDate()+", "+takeYear(d)
			if ( options && options.includeTime ){
				// January 31, 2007 at 7:23pm
				return result+" at "+formatTime(d);
			} else if (options && options.small) {
				return ( d.getMonth()+1 )+"/"+d.getDate()+"/"+d.getYear()+" "+formatTime(d);
			}
			else {
				// January 31, 2007
				return result;
			}
		},
		
		fromSecs : function(s, options){
			var d = new Date();
  		d.setTime(s);
  		return M.helper.date.format(d, options);
		}
	}
}

function graphableOffer(o, runningCount) {
		var d = new Date(o[0]);
  	return [d.getTime(), runningCount, o];
	}



function takeYear(theDate)
{
	x = theDate.getYear();
	var y = x % 100;
	y += (y < 38) ? 2000 : 1900;
	return y;
}

function leadingZero(nr)
{
	if (nr < 10) nr = "0" + nr;
	return nr;
}

function formatMonth(t) {
	var Months = ["January", "February", "March", "April", "May", "June", "July", "August","September","October", "November","December"];
	return Months[t.getMonth()];
}

function formatTime(t){
	var Hours = t.getHours();
	var ampm = "am";
	if (Hours == 0) Hours = 12;
	if (Hours > 11)
		ampm = "pm";
	if (Hours > 12)
		Hours -= 12;
	
	return Hours+":"+leadingZero(t.getMinutes())+ampm
}