/**
 * GalleryCarousel
 */
function GalleryCarousel (element,loader) {
	this.time = 4000;
	this.borders = 3;
	this.view = element;
	this.loader = loader;
	this.images = $(this.view).find("img");
	this.show = 0;
	this.count = this.images.length;
	this.loaderStats = 0;

	this.reposition = function () {
		var sideWidth = ($(window).width() - 960) / 2;
		$("#carousel-mask-left").width(sideWidth);
		$("#carousel-mask-right").width(sideWidth);
		var center = $(window).width() / 2;
		var imgPos = $(this.images[this.show]).offset().left;
		var imgWidth = $(this.images[this.show]).width();
		return (center -imgPos - (imgWidth / 2));
	}
	
	this.start = function (force) {
		if (++this.loaderStats == this.count || force === true) {
			var box = this;
			var img = false;
			$(this.view).parent().append('<div id="carousel-mask-left"></div><div id="carousel-mask-right"></div>');
			for (i = box.count - 1; i >= box.count - box.borders && i >= 0; i--) {
				img = $(this.images)[i];
				$(this.view).prepend($(img).clone(true));
			}
			for (i = 0; i < box.borders && i < box.count; i++) {
				img = $(this.images)[i];
				$(this.view).append($(img).clone(true));
			}
			$(this.view).fadeIn("normal", function () {	$(box.loader).hide(); });
			$(this.view).css('left', this.reposition()+'px');
			$(window).resize( function () { $(box.view).css('left', $(this.view).offset().left + box.reposition()+'px'); });

			setTimeout("this.slide()", this.time);
		}
	}
	
	this.slide = function () {
		var old = $(this.view).offset().left;
		if (this.show == (this.count-1)) {
			var box = this;
			var center = $(window).width() / 2;
			var imgPos = $(this.images[this.show]).offset().left + $(this.images[this.show]).width();
			this.show = 0;
			var imgWidth = $(this.images[this.show]).width();
			$(this.view).animate({left: old + (center -imgPos - (imgWidth / 2)) + 'px'}, 
				500, 
				function () {
					$(box.view).css('left', $(box.view).offset().left + box.reposition()+'px');
				});
		}
		else {
			this.show++;
			$(this.view).animate({left: old + this.reposition() + 'px'}, 500);
		}
		setTimeout("this.slide()", this.time);
	}

	if (this.count > 0) {
		var box = this;
		if ($.browser.msie && jQuery.browser.version < 9) {
			box.start(true);
		}
		else {
			$(this.images).load( function () {
				box.start(false);
			});
		}
	}
}

function Slider (element) {
	this.slider = element+"js";
	this.grid = 1;
	this.activeFrame = -1;
	this.frames = Array();
	this.min = parseInt($(element).attr('min'));
	this.max = parseInt($(element).attr('max'));

	var slide = this;
	$(element).after('<div id="' + this.slider.substr(1) + '" class="slider"><span class="min"></span><span class="current"></span><span class="max"></span></div>');
	$(element).hide();

	if ($(element).attr('step') != "") this.grid = (($(this.slider).width() - $(this.slider+" .current").width()) / (this.max - this.min)) * $(element).attr('step');
//	$(this.slider+" .min").text(this.min);
	$(this.slider+" .current").text($(element).val());
//	$(this.slider+" .max").text(this.max);

	$(this.slider+" .current").draggable({axis: "x", containment: this.slider, drag: function() {slide.move()}, cursor: "move"});
	$(this.slider).click( function (e) {slide.click(e)} );

	this.move = function () {
		var pos = Math.round(($(this.slider+" .current").position().left) / this.grid) + this.min;
		if (pos >= this.min && pos <= this.max) {
			$(this.slider+" .current").text(pos);
			$(element).val(pos);
			this.setFrame(pos);
		}
	}

	this.click = function (e) {
		var width = $(slide.slider + " .current").width();
		var pos = e.pageX - $(this.slider).offset().left - Math.round(width / 2);
		if (pos < $(slide.slider).width()) {
			if (pos < 0) pos = 0;
			else if (pos > ($(slide.slider).width() - width) ) pos = $(slide.slider).width() - width;
			$(slide.slider + " .current").css('left', pos);
			slide.move();
		}
	}

	this.set = function (value) {
		var pos = Math.round((value - this.min) * this.grid);
		$(this.slider+" .current").css('left', pos);
		this.setFrame(value);
	}

	this.addFrame = function (min, max) {
		this.frames.push(Array(min,max));
		this.setFrame($(element).val());
	}

	this.setFrame = function (value) {
		for (var i = 0; i < this.frames.length; i++) {
			if (this.frames[i][0] <= value && value <= this.frames[i][1]) {
				if (slide.activeFrame != i) {
					$(".size-group").removeClass('select');
					$(".size-group").eq(i).addClass('select');
					slide.activeFrame = i;
				}
				break;
			}
		}
	}
	this.set($(element).val());
}

function magnifyingGlass (element) {
	this.view = element;
	this.viewImage = $(element).find("img");
	this.viewHeight = $(this.view).height();
	this.viewWidth = $(this.view).width();
	this.viewX = $(this.view).offset().left;
	this.viewY = $(this.view).offset().top;
	this.glass = "#magnify-glass";
	this.glassBack = "#magnify-background";
	this.glassBorders = 30;
	this.glassHeight = 0;
	this.glassWidth = 0;
	this.image = new Image();
	
	this.load = function (src) {
		var box = this;
		$(box.image).load(function () {
			box.glassHeight = $(box.viewImage).height() * ( $(box.image).attr('height') / $(box.viewImage).height()) + box.glassBorders;
			box.glassWidth = $(box.viewImage).width() * ( $(box.image).attr('width') / $(box.viewImage).width()) + box.glassBorders;
			$(box.view).parent().append('<div id="'+box.glassBack.substr(1)+'"><div id="'+box.glass.substr(1)+'"></div></div>');
			$(box.viewImage).mousedown( function (e) {box.show(e);});
			//$(box.glass).mouseout( function () {box.hide();});
			$(box.glass).mousemove( function (e) {box.move(e);});
			$(box.glass).mousedown( function () {/* $(box.glass).css('background-image','none'); */box.hide();});
			$(box.glass)
				.height( box.glassHeight )
				.width( box.glassWidth );
		}).attr('src', src);
	}
	
	this.show = function (e) {
		this.viewX = $(this.view).offset().left;
		this.viewY = $(this.view).offset().top;
		$(this.glassBack).stop(true,true);
		$(this.glass).css('background-image','url("' + $(this.image).attr('src') + '")');
		this.move(e);
		$(this.glassBack).fadeIn(500);
		if ($("#submenu").lenght != 0) {
			$("#submenu").stop(true,true);
			$("#submenu").fadeOut(500);
		}
	}
	
	this.hide = function () {
		var box = this;
		$(this.glassBack).stop(true,true);
		$(this.glassBack).fadeOut(500, function () {
			$(box.glass).css('background-image','none');
		});
		if ($("#submenu").lenght != 0) {
			$("#submenu").stop(true,true);
			$("#submenu").fadeIn(500);
		}
	}
	
	this.move = function (e) {
		var newX = 0;
		var newY = 0;
		newX = (this.viewX - e.pageX) * ((this.glassWidth - this.viewWidth) / this.viewWidth) + this.viewX;
		newY = (this.viewY - e.pageY) * ((this.glassHeight - this.viewHeight) / this.viewHeight);
		$(this.glass).css('left',newX+'px');
		$(this.glass).css('top',newY+'px');
	}

	var src = $(this.view).find("img").attr('src');
	if (src !== undefined || src != '') this.load(src.replace('/bm_', '/'));
}

function ajaxLoad (link, element) {
	var retState = true;
	var urlRequest = $(link).attr('href') + '&ajax=true';
	$.ajax({
		type: "GET",
		dataType: "xml",
		async: false,
		url: urlRequest,
		success: function (xhtml) {
			var title = $(xhtml).find('title').text();
			if (title != "") document.title = title;
			$(element).html($(xhtml).find('xhtml').text());
			retState = false;
		}
	});
	return retState;
}

function homeLinks () {
	$(".home-box").each( function () {
		var link = $(this).find("h2 a").attr("href");
		$(this).find("img").wrap('<a href="' + link + '" />');
	});
}

$(document).ready( function () {
	var time = 200;
	var timeDown = 300;
	var effect = "linear";
	$("#menu-box li[class!=select]").hover(
		function () {
			$(this).stop(true,false);
			$(this).find("span.sleft").stop(true,false);
			$(this).find("span.sright").stop(true,false);

			$(this).addClass("select");
			$(this).css('backgroundPosition','0 26px');
			$(this).find("span.sleft").css('backgroundPosition','0 26px');
			$(this).find("span.sright").css('backgroundPosition','-5px 26px');
			$(this).animate({ backgroundPosition: '0 0' }, time, effect);
			$(this).find("span.sleft").animate({ backgroundPosition: '0 0' }, time, effect);
			$(this).find("span.sright").animate({ backgroundPosition: '-5px 0' }, time, effect);
			
		},
		function () {
			$(this).stop(true,false);
			$(this).find("span.sleft").stop(true,false);
			$(this).find("span.sright").stop(true,false);
			$(this).animate({ backgroundPosition: '0 26px' }, timeDown, effect, function () {
				$(this).removeClass("select");
			});
			$(this).find("span.sleft").animate({ backgroundPosition: '0 26px' }, timeDown, effect);
			$(this).find("span.sright").animate({ backgroundPosition: '-5px 26px' }, timeDown, effect);
		}
	);
});
