var core = new function() {

	var _this = this;

	this.settings = {
		language			: 'ru',
		
		calendarLink		: 'category/AJAXGetCalendar',
		voteLink			: 'category/AJAXGetVote',
		rateLink			: 'category/AJAXNewsPoll',
		searchLink			: 'category/search'
	}

	this.calendar = function(year, month) {
		$.get("/" + this.settings.language + "/" + this.settings.calendarLink + "/" + year + "/" + month, function(data) {
			$("#calendar").html(data);
		});
	}
	
	this.vote = function(newsId, rate) {
		$.get("/" + this.settings.language + "/" + this.settings.rateLink + "/" + newsId + "/" + rate, function(data) {
			var curRating = $(".current-rating").html();
			if (data > 0) {
				var ratesCount	= Math.round($("#rates_count").html());
				var voteWidth	= _this.voteGetWidth(data);
				$(".unit-rating").html('<li style="width: ' + voteWidth + 'px;" class="current-rating">' + voteWidth + '</li>');
				$("#rates_count").html(ratesCount+1);
			}
			else {
				$(".unit-rating").html('<li style="width: ' + curRating + 'px;" class="current-rating">' + curRating + '</li>');
			}
		});
	}
	
	this.doSearchRefresh = function(value) {
		if (value != "") {
			document.location.href = '/' + this.settings.language + '/' + this.settings.searchLink + '/' + value;
		}
	}

	this.doSearchHighlight = function(search) {
		var foundin = $('.search_box:contains(' + search + ')').each(function() {
			var temp = $(this).html().split(search);
			$(this).html(temp.join('<span style="background-color: yellow; color: red;">' + search + '</span>'));
		});
	}
	
	this.doSearch = function(search) {
		if (search.length >= 3) {
			this.doSearchHighlight(search);
			this.doSearchHighlight(search.toLowerCase());
			this.doSearchHighlight(search.toUpperCase());
			this.doSearchHighlight(search.slice(0,1).toUpperCase() + search.slice(1));
			this.doSearchHighlight(search.substring(0, search.length-1) + search.charAt(search.length-1).toUpperCase());
			this.doSearchHighlight(search.slice(0,1).toUpperCase() + search.substring(1, search.length-1) + search.charAt(search.length-1).toUpperCase());
		}
	}
	
	this.doVote = function(voteId) {
		var answerId = $("input[type=radio]:checked").val();
		if (voteId && answerId) {
			$.get("/" + this.settings.language + "/" + this.settings.voteLink + "/" + voteId + "/" + answerId, function(data) {
				$("#vote-layer").html(data);
			});
		}
	}
	
	// helpers
	
	this.voteGetWidth = function(avg) {
		var maxWidth = 85;
		var maxVote = 5;
		return Math.round((avg*maxWidth)/maxVote);
	}
	
	this.toggle = function(elem) {
		var selector = $(elem);
		if (selector.size() > 0) {
			if (selector.css("display") == "none") {
				selector.css("display", "block");
			}
			else {
				selector.css("display", "none");
			}
		}
	}
	
	this.addToFavourites = function(title, url) {
		if (window.sidebar) { // Mozilla Firefox Bookmark
			window.sidebar.addPanel(title, url,"");
		} 
		else if( window.external ) { // IE Favorite
			window.external.AddFavorite(url, title); 
		}
		else if(window.opera && window.print) { // Opera Hotlist
			return true; 
		}
	}
	
};

$(document).ready(function() {
	// search handlers
	$("#search_do").click(function() {
		var value = $("#search_text").val();
		core.doSearchRefresh(value);
	});
	$("#search_text").keypress(function(e){
		if(e.which == 13){
			core.doSearchRefresh($(this).val());
		}
	});
});
