/* (C) 2009 AVOway.com */

function createBookmark(title,url){
	url=location.href;
	if (window.sidebar) // firefox
		window.sidebar.addPanel(title, url, "");
	else if(window.opera && window.print){ // opera
		var elem = document.createElement('a');
		elem.setAttribute('href',url);
		elem.setAttribute('title',title);
		elem.setAttribute('rel','sidebar');
		elem.click();
	} 
	else if(document.all) {// ie
		window.external.AddFavorite(url, title);
	}
}
function jHide(id) {document.getElementById(id).style.display='none';}
function jShow(id) {document.getElementById(id).style.display='block';}
function clientRectWidth() {return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;}
function clientRectHeight() {return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;}
function getLightboxAttribute(w,h) {return '{handler: "iframe", size: {x: 720, y: '+String(clientRectHeight()-40)+'}}';}

if (typeof jQuery != 'undefined') {  
	jQuery(document).ready(function(){jQuery('.lightbox-link').each(function(){jQuery(this).attr('rel', getLightboxAttribute(100,100));});});
}  

var isDefined = function(obj)
{
    return (typeof(window[obj]) == "undefined") ?  false: true;
}

var AVO = function ($) {
	//The AVO object requires jQuery to work
	
	if (!$) {
		return;
	}
	
	var obj = {};
	obj.getNewDates = function (value, currentDate) {
			var outStartDate = new Date();
			var outEndDate = new Date();
			switch (value) {
				case "sevendays" : (function () {
										outStartDate = currentDate.subtractDays(7);
										outEndDate = currentDate.clone();
									})(); break;
				case "lastmonth" : (function () {
										outStartDate.setDate(1); 
										outStartDate = outStartDate.subtractMonths(1);
										outEndDate = currentDate.clone();
										outEndDate = outEndDate.subtractMonths(1);
										outEndDate.setDate(outEndDate.getLastDayOfMonth());
									})(); break;	
				case "currentmonth" : (function () {
										outStartDate.setDate(1); 
										outEndDate = currentDate.clone();
										outEndDate.setDate(outEndDate.getLastDayOfMonth());
									})(); break;									

								
			}
			return [outStartDate, outEndDate];	
	};
	
	obj.zeroPad = function(num,count) {
		var numZeropad = num + '';
		while(numZeropad.length < count) {
			numZeropad = "0" + numZeropad;
		}
		return numZeropad;
	};
	
	obj.ApplyCheckList = function (els, listClass) {
		els.click(function (ev) {
			ev.preventDefault();		
			var $this = $(this);
			var bx = $this.parent().parent().find("." + listClass);
			bx.find(":checkbox").attr("checked",  $this.attr("class").indexOf('uncheck') < 0);
		});
	};
	
	obj.dateFiltering = function(start, end, filter) {
		var attrToSet = "disabled";
		var startEndInputs = start.add(end);
		startEndInputs
			.attr(attrToSet, true)
			.change(function(){
				console.log('s');
			});
		filter.change(function () {
			var val = $(this).find(":selected").val();
			var newDates = AVO.getNewDates(val, new Date());
			start.val(newDates[0].getFormatted());
			end.val(newDates[1].getFormatted());
			if (val !== "custom") {
				start.attr(attrToSet, true);
				end.attr(attrToSet, true);
			} else {
				start.removeAttr(attrToSet);
				end.removeAttr(attrToSet);
			}
		});
	};
	
	return obj;
}(typeof(jQuery) !== "undefined" ? jQuery : null);

Date.prototype.clone = function() {
	return new Date(this.getTime());
}
Date.prototype.subtractDays = function (days) {
	var newDate = this.clone();
	newDate.setTime(newDate.getTime() - days * 86400000 );
	return newDate;
};
Date.prototype.subtractMonths = function (months) {
	var newDate = this.clone();
	newDate.setMonth(newDate.getMonth() - months );
	return newDate;
};
Date.prototype.getFormatted = function () {
	var year = this.getFullYear() + "";
	year = year.substring(2);
	year = AVO.zeroPad(year,2);
	return AVO.zeroPad(this.getDate(), 2) + "." + AVO.zeroPad((this.getMonth() + 1), 2) + "." + year; 
};

Date.prototype.getLastDayOfMonth = function () {
	return (new Date((new Date(this.getYear(), this.getMonth() + 1, 1)) - 1)).getDate();
};

