/*
 * jQuery sevEnAjaxRequest plugin
 *
 * Copyright (c) 2010 Grzegorz Adamczyk (Artseven.pl)
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Handle Ajax requests from sevenEngine2 CMS system
 */

(function($)
{
	$.fn.sevEnAjaxRequest = function(__options) {

	var _defaults = {
		destElement		:	'main',
		reInitCallback	:	function() {},
		loaderImg		:	'_images/site/ajax-loader.gif',
		loaderHolderId	:	'ajax-loader',
		isLoadingClass	:	'ajax-loading'
	};

	var _options = $.extend(_defaults, __options);

	var _cacheImage = document.createElement('img');
	_cacheImage.src = _options.loaderImg;

	/************************************************************* */

	$().sevEnAjaxRequest.handleAjaxRequestHistory = function(__hash, __params)
	{
		if(__hash)
		{
			$().sevEnAjaxRequest._ajaxLoaderToogle(true, __params);

			__hash = __hash.replace(/^.*#/, '');

			$.post(__hash, {
					ajax_request : 'true'
				}, function(data){
					$().sevEnAjaxRequest._processAjaxRequest(data, _options.destElement);
				}, 'html'
			);
		}
	}

	$().sevEnAjaxRequest._handleAjaxRequest = function()
	{
		var _rev = $(this).attr('rev');

		$().sevEnAjaxRequest._ajaxLoaderToogle(true, _rev);

		dhtmlHistory.add($(this).attr('href'), _rev);

		$.post($(this).attr('href'), {
				ajax_request : 'true'
			}, function(data){
				$().sevEnAjaxRequest._processAjaxRequest(data, _rev);
			}, 'html'
		);

		return false;
	}

	// przetwarzanie zaladowanie nowej zawartosci strony
	$().sevEnAjaxRequest._processAjaxRequest = function(__data, __destElement)
	{
		$('#' + __destElement).html(__data);

		Cufon.refresh();
		_options.reInitCallback();

		$().sevEnAjaxRequest._ajaxLoaderToogle(false, __destElement);
	}

	// ustawienie stanu elementow podczas ladowania nowej zawartosci kontenera
	$().sevEnAjaxRequest._ajaxLoaderToogle = function(__state, __destElement)
	{
		if (__state) {
			$('#' + _options.loaderHolderId).show();
			$('body').addClass(_options.isLoadingClass);

			$('#' + __destElement).fadeTo(200, 0.5);
		}

		else {
			$('#' + _options.loaderHolderId).hide();
			$('body').removeClass(_options.isLoadingClass);

			$('#' + __destElement).fadeTo(200, 1);
		}
	}

	/************************************************************* */

    return this.each(function() {

		$(this).unbind('click');
		$(this).click($().sevEnAjaxRequest._handleAjaxRequest);
    });
 };
})(jQuery);

/*
 * jQuery sevEnMouseScroller plugin
 *
 * Copyright (c) 2010 Grzegorz Adamczyk (Artseven.pl)
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * perform `mousemove` scrolling content
 */

(function($)
{
	$.fn.sevEnMouseScroller = function(__options) {

	var _defaults = {
		direction		:	'hor',
		hoverSpeed		:	200
	};

	var _options = $.extend(_defaults, __options);

	/************************************************************* */

    return this.each(function() {

		var div = $('div.scroll-photo', this);
		var ul = $('ul.scroll-photo', this);
	
		var divHeight = div.height();
		var divWidth = div.width();
		
		div.css( {overflow: 'hidden'} );
		
		var lastLi = ul.find('li:last-child');

		switch (_options.direction)
		{
			case 'hor':
				div.mousemove(function(e){
					var ulWidth = lastLi[0].offsetLeft + lastLi.outerWidth();

					var left = (e.pageX - div.offset().left) * (ulWidth-divWidth) / divWidth;
					div.scrollLeft(left);
				});
				break;
				
			case 'ver':
				div.mousemove(function(e){
					var ulHeight = lastLi[0].offsetTop + lastLi.outerHeight();	
					var top = (e.pageY - div.offset().top) * (ulHeight-divHeight) / divHeight;

					div.scrollTop(top);
				});
				break;
		}
		
		$('li img', ul).css({'opacity' : '0.5'});

		$('li', ul).hover(
			function () {
				var $this = $(this);
				$this.find('img').stop().animate({'opacity' : '1.0'}, _options.hoverSpeed);
			},
			function () {
				var $this = $(this);
				$this.find('img').stop().animate({'opacity' : '0.5'}, _options.hoverSpeed);
			}
		);
    });
 };
})(jQuery);
