/**
 * jqScroller - Vertical Scroller for gasPrice using jQuery
 * Author: Basile Laderchi
 *
 * Version: 1.1.0
 * Date: 2008/02/24
 * Release Notes:
 *   changed number parsing of jQuery.query to "false"
 *   added fixNumberValues to fix only needed value
 *
 * Version: 1.0.1
 * Date: 2008/02/23
 * Release Notes:
 *   updated jQuery from v1.2.6 to v1.3.2
 *   updated jQuery.Query from v2.0.1 to v2.1.2
 *
 * Version: 1.0.0
 * Date: 2008/12/15
 * Release Notes:
 *   Original Release
 *
 **/
(function($) {
	$.fn.Scroller = $.fn.scroller = function(userOptions) {
		initScroller = function(el) {
			stopScroller(el);
			el.options = $.fn.Scroller.defaults;
			el.userOptions = $.extend({}, $.fn.Scroller.userDefaults, userOptions);
			el.getOptions = {};
			fixNumberValues(el.userOptions, "nomosId");
			fixNumberValues(el.userOptions, "cityId");
			fixNumberValues(el.userOptions, "gasId");
			fixNumberValues(el.userOptions, "speed");
			if (el.userOptions.nomosId != 0) el.getOptions.idnomos = el.userOptions.nomosId;
			if (el.userOptions.cityId != 0) el.getOptions.idcity = el.userOptions.cityId;
			if (el.userOptions.gasId != 0) el.getOptions.idgas = el.userOptions.gasId;
			scrollerHeader = $(el.options.scrollerHeader).appendTo(el);
			scrollerContainer = $(el.options.scrollerContainer).appendTo(el)
				.css({"background-color": el.userOptions.scrollerBackcolor})
				.hover(function() {pauseScroller(el);}, function() {resumeScroller(el);});
			scrollerFooter = $(el.options.scrollerFooter).appendTo(el);
			el.options.scrollerHeight = el.height() - scrollerHeader.outerHeight() - scrollerFooter.outerHeight();
			if (!$.browser.msie)
				el.options.scrollerHeight -= scrollerContainer.outerHeight();
			scrollerContainer.css({"height": el.options.scrollerHeight});
			el.pause = false;
			el.css({"background-color": el.userOptions.scrollerTitleBackcolor, "color": el.userOptions.scrollerTitleColor});
			el.find("a").css({"color": el.userOptions.scrollerTitleColor});
			el.content = $('<div id="scroller-content"/>').appendTo(scrollerContainer);
			el.content.css({"top": el.options.scrollerHeight});
			$.get(el.options.scrollerDataURI, el.getOptions, function(data) {
				el.content.html(data);
				startScroller(el);
			});
		};
		startScroller = function(el) {
			el.scrollFunction = setInterval(function() { doScroll(el) }, 100)
		};
		stopScroller = function(el) {
			clearInterval(el.scrollFunction);
		};
		doScroll = function(el) {
			if (el.pause) return;
			var scrollerTop = parseInt(el.content.css("top"));
			if (scrollerTop >= el.content.height() * (-1)) {
				el.content.css("top", scrollerTop - el.userOptions.speed);
			} else {
				el.content.css("top", el.options.scrollerHeight);
			}
		};
		pauseScroller = function(el) {
			el.pause = true;
		};
		resumeScroller = function(el) {
			el.pause = false;
		};
		fixNumberValues = function(el, val) {
			// code from jQuery.Query
			if (/^[+-]?[0-9]+\.[0-9]*$/.test(el[val])) // simple float regex
				el[val] = parseFloat(el[val]);
			else if (/^[+-]?[0-9]+$/.test(el[val])) // simple int regex
				el[val] = parseInt(el[val], 10);
		};
		this.each(
			function() {
				initScroller($(this));
			}
		);
		return this;
	};

	$.fn.Scroller.defaults = {
		scrollerHeader : '<div id="scroller-header">' +
			'<span class="title">gasprice.gr</span><br>η φθηνότερη βενζίνη<br>' +
			'<form action="http://www.gasprice.gr/main/searchkeyresults.asp" method="POST" target="_blank">' +
			'<input type="text" name="keyword">' +
			'<input type="submit" value="Αναζήτηση">' +
			'</form>' +
			'</div>',
		scrollerContainer : '<div id="scroller-container"></div>',
		scrollerFooter : '<div id="scroller-footer"><a href="http://www.gasprice.gr/" target="_blank">περισσότερα...</a></div>',
		scrollerDataURI : 'gasscroll.asp'
	};

	$.fn.Scroller.userDefaults = {
		speed : 3,
		scrollerTitleBackcolor : 'e3f885',
		scrollerTitleColor : '000',
		scrollerBackcolor : 'f4f4f4',
		nomosId : 0,
		cityId : 0,
		gasId : 0
	};
})(jQuery);
