/* =========================================================
TI Networks
http://www.tinetworks.co.uk
========================================================= */
(function ($) {
    $.fn.panorama = function (options) {
        this.each(function () {
            var settings = {
                speed: 100000,
                direction: 'left',
                control_display: 'no',
                start_position: 0,
                auto_start: true,
                mode_360: true,
                loop_180: true,
				showReloader: false
            };
			
			
            if (options) $.extend(settings, options);
            var elemWidth = parseInt($(this).attr('width'));
            var elemHeight = parseInt($(this).attr('height'));
            var alt = $(this).attr('alt');
            var stop = false;
            if (isNaN(elemWidth) || isNaN(elemHeight)) 
			
				{
                	var img = new Image();
                	img.src = $(this).attr('src');
                	if (isNaN(elemWidth)) elemWidth = img.width;
                	if (isNaN(elemHeight)) elemHeight = img.height
            	}
				
            var currentElement = this;
			
            $(this).css('position', 'relative').css('margin', '0').css('padding', '0').css('border', 'none').wrap("<div class='panorama-container'></div>");
			
            if (settings.mode_360) $(this).clone().insertAfter(this);
            panoramaContainer = $(this).parent();
			
			
			panoramaContainer.wrap("<div class='panorama-viewport'></div>").parent().css('width', settings.viewport_width + 'px');
		
		
		
		
            panoramaViewport = panoramaContainer.parent();
            panoramaViewport.bind('click', function () {
               
			    if (!stop) {
                    $(panoramaContainer).stop();
                    stop = true
                } else {
                    panorama_animate(panoramaContainer, elemWidth, settings);
                    stop = false
                }
            });
			
			
            $(this).parent().css('margin-left', '-' + settings.start_position + 'px');
            if (settings.auto_start) panorama_animate(panoramaContainer, elemWidth, settings)
        });
		
		
        function panorama_animate(element, elemWidth, settings) {
            currentPosition = 0 - parseInt($(element).css('margin-left'));
           
		   
		    if (settings.direction == 'right') {
                $(element).animate({
                    marginLeft: 0
                },
                ((settings.speed / elemWidth) * (currentPosition)), 'linear', function () {
                    if (settings.mode_360) {
                        $(element).css('marginLeft', '-' + (parseInt(parseInt(elemWidth)) + 'px'));
                        panorama_animate(element, elemWidth, settings)
                    } else if (settings.loop_180) {
                        settings.direction = 'left';
                        panorama_animate(element, elemWidth, settings)
                    }
                })
            } else {
                var rightlimit;
                if (settings.mode_360) rightlimit = elemWidth;
                else rightlimit = elemWidth - settings.viewport_width;
                $(element).animate({
                    marginLeft: -rightlimit
                },
                ((settings.speed / rightlimit) * (rightlimit - currentPosition)), 'linear', function () {
                    if (settings.mode_360) {
                        $(element).css('margin-left', 0);
                        panorama_animate(element, elemWidth, settings)
                    } else if (settings.loop_180) {
                        settings.direction = 'right';
                        panorama_animate(element, elemWidth, settings)
                    }
                })
            }
        }
    }



})(jQuery);

function xClientWidth(){
  var v=0,d=document,w=window;
  if((!d.compatMode || d.compatMode == 'CSS1Compat') && !w.opera && d.documentElement && d.documentElement.clientWidth)
    {v=d.documentElement.clientWidth;}
  else if(d.body && d.body.clientWidth)
    {v=d.body.clientWidth;}
  else if(xDef(w.innerWidth,w.innerHeight,d.height)) {
    v=w.innerWidth;
    if(d.height>w.innerHeight) v-=16;
  }
  return v;
}


