if(!Array.prototype.without)
{
    Array.prototype.without = function() {
        var result = [], i = 0, length = this.length, length_ = arguments.length;
        while (i < length) {
            var I = this[i++], k = length_;
            while (k-- && arguments[k] !== I);
            if (k < 0) result[result.length] = I;
        }
        return result;
    };
}

if(!Array.prototype.remove)
{
    Array.prototype.remove = function(from, to) {
        this.splice(from, !to || 1 - from + to +
            ((to < 0 || -1) && !(to < 0 ^ from > -1)) * this.length);
        return this.length;
    };
}

var times = 0;
var timeoutId;
var countdown = function(timeLeft, idSpan){
   var Remains = timeLeft - times;
   var RemainsFullDays=(parseInt(Remains/(24*3600)));
   var RemainsFullHours=(parseInt(Remains/3600-RemainsFullDays*24));
   var RemainsMinutes=(parseInt(Remains/60-(RemainsFullDays*24+RemainsFullHours)*60));
   var RemainsSec=Remains-((RemainsFullDays*24+RemainsFullHours)*60+RemainsMinutes)*60;

   var txt = '';
   if ( RemainsFullDays*1 > 0 )
      txt += '<span>' + RemainsFullDays + '' + numeral_d(RemainsFullDays) + '</span>';
   if ( RemainsFullDays*1 + RemainsFullHours*1 > 0 ) {
      if(RemainsFullHours<10){
		RemainsFullHours = '0'+RemainsFullHours;
	  }
      txt += '<span>' + RemainsFullHours + '' + numeral_h(RemainsFullHours) + '</span>';
   }  else {
      txt += '<span>' + '00' + '' + numeral_h(RemainsFullHours) + '</span>';;
   }
   if ( RemainsFullDays*1 + RemainsFullHours*1 + RemainsMinutes*1 > 0 ) {
      if(RemainsMinutes<10){
		RemainsMinutes = '0'+RemainsMinutes;
	  }
      txt += '<span>' + RemainsMinutes + '' + numeral_m(RemainsMinutes) + '</span>';
   }  else {
      txt += '<span>' + '00' + '' + numeral_m(RemainsMinutes) + '</span>';
   }
   if ( RemainsFullDays*1 + RemainsFullHours*1 + RemainsMinutes*1 + RemainsSec*1 > 0 ){
      if(RemainsSec<10){
		RemainsSec = '0'+RemainsSec;
	  }  
      txt += '<span>' + RemainsSec + '' + numeral_s(RemainsSec) + '</span>';
   } 
   $('#' + idSpan).html(txt);

   if( Remains < 1 ){
      $('#div_' + idSpan).hide();
      if (timeoutId) clearTimeout(timeoutId);
   }else{
      timeoutId = setTimeout(timer, 1000);
   }
   ++times;
};

var countdownList = function() {
	this.itmList = new Array();
	this.timer = null;
}

countdownList.prototype.addItem = function ( timeLeft, idSpan) {
	this.itmList.push({elapsed: timeLeft, oId: idSpan});
}

countdownList.prototype.doCount = function(mode) {
	mode = mode || 'default';

	for(var i=this.itmList.length-1; i>=0; i--) {
		--this.itmList[i].elapsed;
		if (mode == 'odnk') {
			this.renderOdnk(this.itmList[i].elapsed, this.itmList[i].oId);
		} else {
			this.render(this.itmList[i].elapsed, this.itmList[i].oId);		
		}
		if(this.itmList[i].elapsed<=0) {
			this.itmList.remove(i, i);
		}
	}
	if(this.itmList.length>0) {
		var timerFunction = (function(objectToRefer){return function(){objectToRefer.doCount(mode);};})(this);
		this.timer = setTimeout(timerFunction, 1000);
	} else {
		clearTimeout(this.timer);
	}
}

countdownList.prototype.render = function (timeLeft, idSpan) {
	var txt = '';
	if(timeLeft>0) {
		var RemainsFullDays=(parseInt(timeLeft/(24*3600)));
		var RemainsFullHours=(parseInt(timeLeft/3600-RemainsFullDays*24));
		var RemainsMinutes=(parseInt(timeLeft/60-(RemainsFullDays*24+RemainsFullHours)*60));
		var RemainsSec=timeLeft-((RemainsFullDays*24+RemainsFullHours)*60+RemainsMinutes)*60;

		if ( RemainsFullDays*1 > 0 )
		  txt += RemainsFullDays + '' + numeral_d(RemainsFullDays) ;
		if ( RemainsFullDays*1 + RemainsFullHours*1 > 0 ) {
		  if(RemainsFullHours<10){
			RemainsFullHours = '0'+RemainsFullHours;
		  }
		  txt += RemainsFullHours + '' + numeral_h(RemainsFullHours) ;
		}  else {
		  txt += '00' + '' + numeral_h(RemainsFullHours) ;;
		}
		if ( RemainsFullDays*1 + RemainsFullHours*1 + RemainsMinutes*1 > 0 ) {
		  if(RemainsMinutes<10){
			RemainsMinutes = '0'+RemainsMinutes;
		  }
		  txt += RemainsMinutes + '' + numeral_m(RemainsMinutes) ;
		}  else {
		  txt += '00' + '' + numeral_m(RemainsMinutes) ;
		}
		if ( RemainsFullDays*1 + RemainsFullHours*1 + RemainsMinutes*1 + RemainsSec*1 > 0 ){
		  if(RemainsSec<10){
			RemainsSec = '0'+RemainsSec;
		  }  
		  txt += RemainsSec + '' + numeral_s(RemainsSec) ;
		} 
	} else {
		txt = 'Уже завершено';
	}
	$('#' + idSpan).html(txt);
}

countdownList.prototype.renderOdnk = function (timeLeft, idSpan) {
	var txt = '';
	if(timeLeft>0) {
		var RemainsFullHours=(parseInt(timeLeft/3600));
		var RemainsMinutes=(parseInt(timeLeft/60-RemainsFullHours*60));
		var RemainsSec=timeLeft-(RemainsFullHours*60+RemainsMinutes)*60;
		  
		if ( RemainsFullHours*1 > 0 ) {
		  if(RemainsFullHours<10){
			RemainsFullHours = '0'+RemainsFullHours;
		  }
		  txt += RemainsFullHours + '' + numeral_h(RemainsFullHours) ;
		}  else {
		  txt += '00' + '' + numeral_h(RemainsFullHours) ;;
		}
		if ( RemainsFullHours*1 + RemainsMinutes*1 > 0 ) {
		  if(RemainsMinutes<10){
			RemainsMinutes = '0'+RemainsMinutes;
		  }
		  txt += RemainsMinutes + '' + numeral_m(RemainsMinutes) ;
		}  else {
		  txt += '00' + '' + numeral_m(RemainsMinutes) ;
		}
		if ( RemainsFullHours*1 + RemainsMinutes*1 + RemainsSec*1 > 0 ){
		  if(RemainsSec<10){
			RemainsSec = '0'+RemainsSec;
		  }  
		  txt += RemainsSec + '' + numeral_s(RemainsSec) ;
		} 
	} else {
		txt = 'Уже завершено';
	}
	$('#' + idSpan).html(txt);
}

function likeFunctionsInitOdnk(like) {
	like.live('mouseover', function(){
		var index = $(this).parent().find(".like").index(this);
		$(this).parent().find(".like:lt("+(index+1)+")").removeClass("bad").addClass("good");
	});

	like.live('mouseout', function(){
		$(this).parent().find(".like").removeClass("good").addClass("bad");
	});

	like.live('click', function(){
		var elemLikes = $(this).parent();
		
		elemLikes.addClass("voted");
		var like_grade = elemLikes.find(".like").index(this) + 1;
		var deal_id = parseInt(elemLikes.find("span.dealId").text());
		//alert(deal_id);

		$.ajax({
			type: 'POST',
			url: '/odnk/list/',
			data: 'action=add&grade='+like_grade+'&deal_offer_id='+deal_id,
			dataType: 'json',
			success: function(data){
				elemLikes.css('display', 'none');
				var rating = parseInt(elemLikes.parent().find('.voteResult strong').text());
				if (!rating) {
					elemLikes.parent().find('.voteResult strong').text(like_grade);
				}
				elemLikes.parent().find('.voteResult').css('display', 'block');
			}
		});
	});
}
