if(typeof(PIA)=="undefined") PIA={}
if(!PIA.Modules) PIA.Modules={};
if(!PIA.Modules.Timer) PIA.Modules.Timer=function(holder, control, settings){	
	this.init(holder, control,settings);
};

PIA.Modules.Timer.prototype = {
	init: function(holder,control,settings){
		if(!holder) throw "PIA.Modules.Timer: I need control holder";
		if(!control) throw "PIA.Modules.Timer: I need control";
		if(!settings.targetDate) throw "PIA.Modules.Timer: I need target date";
		this.holder = holder;
		this.control = control;
		this.delay = settings.delay || 990;
		
		this.leadingZero = settings.leadingZero || false;
		this.displayFormat = settings.displayFormat || "{D}/{H}/{M}/{S}";
		this.finishMessage = settings.finishMessage || "";
		PIA.Modules.Timer.Render(this, Math.floor(((new Date(settings.targetDate))-(new Date())).valueOf()/1000));
	}
};

PIA.Modules.Timer.Render = function(obj, secs){
	if(secs<-86400)
	{
		obj.holder.style.display="none";
		return;
	}
	else if(secs<0) {
	
		if(obj.finishMessage && obj.finishMessage=="")
			obj.control.innerHTML = obj.displayFormat.replace(/{D}/g, 0).replace(/{H}/g, 0).replace(/{M}/g, 0).replace(/{S}/g, 0);
		else
			obj.control.innerHTML=obj.finishMessage;
	//	alert(obj.finishMessage);
		clearTimeout(obj.interval);
		return;
	}
	var displayStr = obj.displayFormat.replace(/{D}/g, PIA.Modules.Timer.Calculate(obj,secs,86400,100000));
	displayStr = displayStr.replace(/{H}/g, PIA.Modules.Timer.Calculate(obj,secs,3600,24));
	displayStr = displayStr.replace(/{M}/g, PIA.Modules.Timer.Calculate(obj,secs,60,60));
	displayStr = displayStr.replace(/{S}/g, PIA.Modules.Timer.Calculate(obj,secs,1,60));
	obj.control.innerHTML = displayStr;
	
	obj.interval = setTimeout(function(){PIA.Modules.Timer.Render(obj, --secs);}, obj.delay);
};

PIA.Modules.Timer.Calculate = function(obj, secs, num1, num2) {
	s = ((Math.floor(secs/num1))%num2).toString();
	if (obj.leadingZero && s.length<2) s = "0" + s;
	return s;
};


