/**
 * STUDIO BOLSTER
 * javascripts
 * 
 */


// PAGE LOAD

	$(document).ready(function() {
		$.multiSlider.init({ item: 'images', width: 780, padding: 5, speed: 500 });
		$.overlayer.init();
	});



// FUNCTIES

	function showError(v) {
		$('#error').html(v).show("slow");
		return false;
	}
	
	function isEmail(v) {
		return /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(v);
	}



// MULTISLIDER

	$.extend({
		multiSlider: {
			init: function(opt) {
				this.saveOpt(opt);
				if(this.num > 1) {
					this.setPositions();
					this.addActions();
				}
			},
			setPositions: function() {
				this.ul.children('li').each(function(i) {
					$(this).width($.multiSlider.liw);
					$(this).css('left', (i*($.multiSlider.liw+$.multiSlider.padding)));
					$(this).attr('rel', i);
				});
			},
			addActions: function() {
				this.ul.children('li').hover(function() {
					var me = $(this).attr('rel');
					var x = 0;
					$.multiSlider.ul.children('li').each(function(i) {
						var w = (i == me) ? $.multiSlider.liwl : $.multiSlider.liws;
						$(this).stop().animate({ width: w, left: x }, $.multiSlider.speed);
						if(i == me) x += $.multiSlider.liwl+$.multiSlider.padding;
						else x += $.multiSlider.liws+$.multiSlider.padding;
					});
				}, function() {
					$.multiSlider.ul.children('li').each(function(i) {
						var w = $.multiSlider.liw;
						var l = i*($.multiSlider.liw+$.multiSlider.padding);
						$(this).stop().animate({ width: w, left: l }, $.multiSlider.speed);
					});
				});
			},
			saveOpt: function(opt) {
				this.ul = $('#'+opt.item);
				this.ulw = opt.width;
				this.num = this.ul.children('li').size();
				this.liw = Math.round(this.ulw / this.num);
				this.liws = Math.round(this.liw/2);
				this.liwl = this.ulw - (this.liws*(this.num-1));
				this.padding = opt.padding;
				this.speed = opt.speed;
			}
		}
	});



// OVERLAYER

	$.extend({
		overlayer: {
			init: function() {
				this.setup();
				this.addOverlayer();
				this.addActions();
			},
			addOverlayer: function() {
				
				// create html
					var html = '';
					html += '<div id="'+this.id+'" style="display:none;">';
					html += '<div id="'+this.bgid+'"></div>';
					html += '<div id="'+this.contentid+'" style="display:none;"><img src="../img/spacer.gif" alt="" /></div>';
					html += '<div id="'+this.btnClose+'" style="display:none;"><img src="../img/btn_close.png" alt="" /></div>';
					html += '<div id="'+this.btnL+'" style="display:none;"></div>';
					html += '<div id="'+this.btnR+'" style="display:none;"></div>';
					html += '<div id="'+this.loader+'"></div>';
					html += '</div>';
					$('body').append(html);
				
				// settings
					this.overlayer = $('#'+this.id);
					this.bg = $('#'+this.bgid);
					//this.bg.css('opacity', this.opacity);
					this.content = $('#'+this.contentid);
					this.btnClose = $('#'+this.btnClose);
					this.btnL = $('#'+this.btnL);
					this.btnR = $('#'+this.btnR);
					this.loader = $('#'+this.loader);
				
				// add events
					this.bg.click(function(evt) { $.overlayer.hideOverlayer(); });
					this.btnClose.click(function(evt) { $.overlayer.hideOverlayer(); });
					this.btnL.click(function(evt) { $.overlayer.goL(); });
					this.btnR.click(function(evt) { $.overlayer.goR(); });
				
			},
			addActions: function() {
				this.i.children('a').each(function(i) { $(this).attr('rel', i); });
				this.i.children('a').click(function(evt) {
					$.overlayer.imgUrl = $(this).attr('href');
					$.overlayer.curr = $(this).attr('rel');
					$.overlayer.showOverlayer();
					evt.preventDefault();
				});
			},
			showOverlayer: function() {
				$.overlayer.loader.css('top', $(document).scrollTop()+($(window).height()/2)).show();
				this.overlayer.css({'opacity': 0, 'display': 'block', 'height': this.h });
				this.overlayer.animate({ 'opacity': 1 }, this.showSpeed, function() {
					$.overlayer.loadImage();
				});
			},
			loadImage: function() {
				var img = new Image();
				img.onload = function() {
					$.overlayer.imgW = img.width;
					$.overlayer.imgH = img.height;
					$.overlayer.showOverlayerContent();
				}
				img.src = $.overlayer.imgUrl;
			},
			showOverlayerContent: function() {
				
				// show image
					$.overlayer.loader.hide();
					this.content.children('img').attr('src', $.overlayer.imgUrl);
					this.reposition();
				
				// show buttons
					$.overlayer.content.show();
					$.overlayer.btnClose.show();
					$.overlayer.btnR.show();
					$.overlayer.btnL.show();
					if($.overlayer.curr == 0) $.overlayer.btnL.hide();
					if($.overlayer.curr == $.overlayer.num-1) $.overlayer.btnR.hide();
				
			},
			hideOverlayer: function() {
				this.content.hide();
				this.btnClose.hide();
				this.btnR.hide();
				this.btnL.hide();
				this.overlayer.animate({ 'opacity': 0 }, this.showSpeed, function() {
					$.overlayer.overlayer.hide();
					$.overlayer.reposition();
				});
			},
			goL: function() {
				
				// get items
					var items = new Array();
					this.i.children('a').each(function() {
						items.push($(this).attr('href'));
					});
				
				// set current item
					$.overlayer.curr--;
					if($.overlayer.curr == 0) this.btnL.hide();
				
				// show current item
					$.overlayer.imgUrl = items[$.overlayer.curr];
					$.overlayer.loadImage();
				
			},
			goR: function() {
				
				// get items
					var items = new Array();
					this.i.children('a').each(function() {
						items.push($(this).attr('href'));
					});
				
				// set current item
					$.overlayer.curr++;
					if($.overlayer.curr >= items.length-1) this.btnR.hide();
				
				// show current item
					$.overlayer.imgUrl = items[$.overlayer.curr];
					$.overlayer.loadImage();
				
			},
			reposition: function() {
				
				// set vars
					var imgYC = Math.round(this.imgH / 2);
					var imgXC = Math.round(this.imgW / 2);
					var top = $(document).scrollTop() + Math.round($(window).height() / 2) - imgYC; if(top <= 30) top = 30;
					var left = Math.round($(window).width() / 2) - imgXC;
					var center = Math.round(left+(this.imgW/2));
				
				// reposition the assets
					this.content.css({ 'top': top, 'left': left });
					this.btnClose.css({ 'top': top-10, 'left': left-10 });
					this.btnL.css({ 'width': this.imgW/2, 'height': this.imgH, 'top': top, 'left': left });
					this.btnR.css({ 'width': this.imgW/2, 'height': this.imgH, 'top': top, 'left': center });
					this.bg.height($(document).height());
				
			},
			setup: function() {
				
				// id names
					this.id = 'overlayer';
					this.bgid = 'overlayer_bg';
					this.contentid = 'overlayer_content';
					this.btnClose = 'overlayer_close';
					this.btnL = 'overlayer_btnL';
					this.btnR = 'overlayer_btnR';
					this.loader = 'overlayer_loader';
				
				// settings
					this.showSpeed = 500;
					this.h = $(document).height();
					this.i = $('.zoom ul li');
					this.num = this.i.size();
					this.curr = 0;
					this.opacity = 1; //0.9;
				
			}
		}
	});



