$(function () {
	LW.DHTML.indexSlideShow.init();
	LW.DHTML.cycleBanner.init();
	LW.DHTML.slideshow.init();
});

LW.DHTML = LW.DHTML || {};

LW.DHTML = {
	_greyCount: 0,
	buildRow: function (input, columns) {
		var tr = $('<tr>');
		var td = $('<td>').css('width', '20px');
		input.id = input.id || input.name + '_' + input.value.replace(/\./g, '_');
		/* you can't dynamically change the 'name' attribute on an input in IE 6/7 */
		td.append($('<input type="radio" name="' + input.name + '" value="">').attr({ value: input.value, id: input.id }));
		tr.append(td);

		var th = $('<th>');
		if (input.label && input.label.indexOf('<img') != -1 && $.browser.msie && parseInt($.browser.version, 10) <= 7) {
			// IE + images + labels == fail
			th.html(input.label);
		}
		else {
			th.append($('<label>').attr('for', input.name + '_' + input.value).html(input.label));
		}
		tr.append(th);

		for (var i=0; i<columns.length;i++) {
			tr.append($('<td>').html(columns[i]));
		}
		return tr;
	},
	buildPricedRow: function (input, price, columns) {
		var tr = LW.DHTML.buildRow(input, columns);
		var td = $('<td>');
		LW.DHTML.TOOLTIP.price.insert(td, price);
		tr.append(td);
		return tr;
	},
	tabs: {
		_current: {},
		_callbacks: {},
		_registered: {},
		createGroup: function (groupName, callbacks) {
			if ($('div.tab_group[group=' + groupName + ']').size() == 0) {
				return false;
			}

			LW.DHTML.tabs._registered[groupName] = true;
			LW.DHTML.tabs._callbacks[groupName] = callbacks || {};
			$('div.tab_group[group=' + groupName + '] > div.tabs img.link, '
			 +'a.change_tab_link[group=' + groupName +']').click(function (event) {
				event.preventDefault();
				var tab = $(this);
				LW.DHTML.tabs.changeTab(tab.attr('group'), tab.attr('tab'));
				return false;
			});

			return true;
		},
		_getTabImage: function (groupName, tabName) {
			var img = $('img.link[group=' + groupName + '][tab=' + tabName + ']');
			return img;
		},
		_getTab: function (groupName, tabName) {
			var div = $('div.tab[group=' + groupName + '][tab=' + tabName + ']');
			return div;
		},
		changeTab: function (groupName, tabName, skipHash) {
			if ($('div.tab_group[group=' + groupName + ']').size() == 0) {
				return false;
			}

			var current = LW.DHTML.tabs._current[groupName];
			if (current && tabName != current) {
				var img = LW.DHTML.tabs._getTabImage(groupName, current);
				img.attr('src', img.attr('src').replace(/-up/, '-dn'));
			}

			var img = LW.DHTML.tabs._getTabImage(groupName, tabName);
			img.attr('src', img.attr('src').replace(/-dn/, '-up'));

			var tabs = $('div.tab_group[group=' + groupName + '] > div.tab');
			tabs.hide();
			var tab = LW.DHTML.tabs._getTab(groupName, tabName);
			tab.show();
			var hash = tab.attr('hash');
			if (! skipHash && hash) {
				location.hash = hash;
			}

			LW.DHTML.tabs._current[groupName] = tabName;
			if (LW.DHTML.tabs._callbacks[groupName][tabName]) {
				LW.DHTML.tabs._callbacks[groupName][tabName]();
			}
			LW.event.fireWhenReady('tab.load', groupName, tabName);

			return true;
		},
		loadFirst: function (groupName) {
			var first = $('div.tab_group[group=' + groupName + '] > div.tab').attr('tab');
			LW.DHTML.tabs.changeTab(groupName, first, true);
		},
		loadByLocation: function (groupName) {
			var hash   = location.hash.replace(/#/, '');
			if (hash) {
				if (hash.indexOf('/') != -1) {
					var parts = hash.split('/');
					var tab  = $('div[hash=' + parts[0] + ']');
					LW.DHTML.tabs.changeTab(tab.attr('group'), tab.attr('tab'));
				}
				var tab  = $('div[hash=' + hash + ']');
				LW.DHTML.tabs.changeTab(tab.attr('group'), tab.attr('tab'));
			}
			else {
				LW.DHTML.tabs.loadFirst(groupName);
			}
		},
		selected: function (groupName) {
			return LW.DHTML.tabs._current[groupName];
		},
		exists: function (groupName) {
			return (LW.DHTML.tabs._registered[groupName]) ? true : false;
		}
	},
	greyOut: function (speed) {
		if (LW.DHTML._greyCount == 0) {
			var height = $(document).height();
			$('#translucent').css({ opacity: 0.0, height: height + 'px' }).show().fadeTo(speed, 0.6);
		}
		LW.DHTML._greyCount++;
	},
	unGreyOut: function (speed) {
		LW.DHTML._greyCount--;
		if (LW.DHTML._greyCount == 0) {
			$('#translucent').fadeOut(speed);
		}
	},
	showPopup: function () {
		LW.vars = LW.vars || {};
		LW.DHTML.greyOut('slow');
		var l = arguments.length;
		for (var i=0; i<l; i++) {
			var selector  = arguments[i];
			var absPos    = LW.DHTML._popupY;
			var relPos    = absPos - $(window).scrollTop();
			var winHeight = $(window).height();

			if ((relPos + 200) > winHeight) {
				absPos -= 240;
			}

			// stop() is to stop any current animation and reset the object
			$(selector).stop(true, true);
			$(selector).css({ top: absPos + 'px' }).slideDown('slow');
		}
	},
	hidePopup: function () {
		LW.DHTML._greyCount--;
		if (LW.DHTML._greyCount == 0) {
			$('#translucent').fadeOut('slow');
		}
		var l = arguments.length;
		for (var i=0; i<l; i++) {
			var selector = arguments[i];
			$(selector).slideUp('slow');
		}
	},
	rollover: function () {
		var l = arguments.length;
		for (var i=0; i<l; i++) {
			var selector = arguments[i];
			$(selector).mouseover(function (event) {
				if (!$(this).hasClass('grayedout')) {
					this.src = this.src.replace(/\.png/, '-up.png');
				}
			}).mouseout(function (event) {
				if (!$(this).hasClass('grayedout')) {
					this.src = this.src.replace(/-up\.png/, '.png');
				}
			});
		}
	},
	_popupY: null,
	_mouseX: null,
	_mouseY: null,
	trackMouse: function () {
		LW.DHTML._popupY = 180;
		LW.DHTML._mouseX = 0;
		LW.DHTML._mouseY = 0;
		var l = arguments.length;
		for (var i=0; i<l; i++) {
			var selector = arguments[i];
			$(selector).mousemove(function (event) {

				LW.DHTML._popupY = (event.pageY > 280) ? event.pageY - 100 : 180;
				LW.DHTML._mouseX = event.pageX;
				LW.DHTML._mouseY = event.pageY;
			});
		}
	},
	popupLogin: function () {
		if (! LW.vars.ajaxLoginEnabled) {
			LW.vars.ajaxLoginEnabled = true;
			$('#login_form legend').html('Your session has expired.  Please log in again.');
			$('#login_form').submit(function (event) {
				$('#login_form input[type=submit]').attr({
					value: 'Logging In...',
					disabled: 'disabled'
				});
				var form = this;
				$.postJSON(LW.vars.managePath + '/api/login.json', {
					username: form.login_username.value,
					password: form.login_password.value
				}, function (response) {
					$('#login_form input[type=submit]').attr({
						value: 'Log In',
						disabled: ''
					});
					if (response.error) {
						LW.DHTML.popupError(response.error);
					}
					else {
						$('#login_form').get(0).reset();
						LW.event.fire('user.login');
						LW.DHTML.hidePopup('#login_box');
						LW.vars.loggedOut = false;

						var l = LW.JSON._redo.length;
						for (var i=0; i<l; i++) {
							var args = LW.JSON._redo[i];
							LW.JSON.load(args[0], args[1], args[2], args[3]);
						}
					}
				});
				event.preventDefault();
				return false;
			});
		}
		LW.vars.loggedOut = true;
		LW.DHTML.showPopup('#login_box');
	},
	_errors: [],
	_buildErrorMessage: function () {
		var ul = $('#error ul').empty().get(0);
		var l = LW.DHTML._errors.length;
		for (var i=0; i<l; i++) {
			var li = document.createElement('LI');
			li.innerHTML = LW.DHTML._errors[i];
			ul.appendChild(li);
		}
	},
	popupError: function () {
		LW.vars = LW.vars || {};
		if (LW.DHTML._errors.length == 0) {
			/* only pop up on the first error */
			LW.DHTML.greyOut('fast');
			var offset = LW.DHTML._popupY || ($(window).scrollTop() + (($(window).height() / 2) - 100));
			$('#error').css({ top: offset + 'px' }).show();
		}
		for (var i=0; i<arguments.length; i++) {
			var arg = arguments[i];
			if ($.isArray(arg)) {
				for (var j=0; j<arg.length; j++) {
					LW.DHTML._errors.push(arg[j]);
				}
			}
			else {
				LW.DHTML._errors.push(arg);
			}
		}
		LW.DHTML._buildErrorMessage();
	},
	hideError: function () {
		LW.DHTML._errors = [];
		LW.DHTML.hidePopup('#error');
	},
	popupMessage: function (message) {
		$('#notification_message').html(message);
		LW.DHTML.showPopup('#notification');
		setTimeout(function () {
			LW.DHTML.hidePopup('#notification');
		}, 3000);
	},
	popupConfirm: function (settings) {
		if (typeof(settings) != 'object') {
			var message = settings;
			settings = {
				message: message
			};
		}

		if (!settings.message) {
			settings.message = '';
		}
		if (!settings.cancel) {
			settings.cancel = 'Cancel';
		}
		if (!settings.confirm) {
			settings.confirm = 'Confirm';
		}
		if (!settings.title) {
			settings.title = 'Request Verification';
		}

		$('#verification h3').html(settings.title);
		$('#verification_message').html(settings.message);
		$('#verification_cancel span').html(settings.cancel);
		$('#verification_confirm span').html(settings.confirm);

		LW.DHTML.showPopup('#verification');
	},
	confirmationDialog: function () {
		return $('#verification');
	},
	getPrompt: function (key, domainStr) {
		var prompt = LW.vars.prompts[key];
		prompt = prompt.replace(/\[\[server\]\]/g, domainStr);
		return prompt;
	},
	getPromptX: function (name, vars) {
		var prompt = LW.vars.prompts[name];
		for (var key in vars) {
			prompt = prompt.replace(new RegExp('\\[\\[' + key + '\\]\\]', 'g'), vars[key]);
		}
		return prompt;
	},
	_toggleLoadingId: 1,
	toggleLoading: function (selection) {
		$(selection).each(function () {
			if ($(this).data('_loading_id')) {
				var loading_id = $(this).data('_loading_id');
				$('#_loading_' + loading_id).toggle();
				$(this).toggle();
			} else {
				var height   = $(this).height();
				var width    = $(this).width();
				var type     = ($(this).css('display') == 'inline')
				                    ?
								'span'
									:
								'div';

				var loading  = document.createElement(type);

				$(loading).attr("id", "_loading_" + LW.DHTML._toggleLoadingId);
				$(this).data("_loading_id", LW.DHTML._toggleLoadingId++);

				var zindex = $(this).css('z-index');

				if (zindex == 'auto') {
					zindex = 10;
				} else {
					zindex++;
				}

				var floatx = $(this).css('float');

				$(loading).css({
					'z-index':  zindex,
					'width':    '100%',
					'float':    floatx,
					'cursor':   'wait'
				});

				if (type == 'div') {
					$(loading).css({
						'text-align': 'center'
					});
				}

				if (width >= 200) {
					$(loading).html('<img src="' + LW.vars.icons.loadingLarge + '">');
				} else {
					$(loading).html('<img src="' + LW.vars.icons.loading + '">');
				}



				$(this).hide();
				$(this).after(loading);
				$(loading).show();

			}
		});
	},
	zoomIntoNotifications: function (selector) {
		var obj = $(selector);

		var orig    = obj.position();
		orig.width  = obj.width();
		orig.height = obj.height();

		var destination   = $('#leftstatus').position();
		destination.width = $('#leftstatus').width();

		var final_state = {
			top: destination.top + 70,
			left: destination.left,
			width: destination.width,
			height: '20px',
			opacity: 0
		};

		LW.DHTML._greyCount--;
		if (LW.DHTML._greyCount == 0) {
			$('#translucent').fadeOut(1000);
		}

		obj.animate(final_state, 1400, 'swing', function () {
			obj.css({
				width: 		orig.width,
				height: 	'auto',
				left:		orig.left,
				opacity: 	1
			});
			obj.hide();
		});
		LW.activity.addPendingAction();
	},
	showLoading: function () {
		var loading = '<img src="' + LW.vars.icons.loading + '">';
		var l = arguments.length;
		for (var i=0; i<l; i++) {
			if ($.isArray(arguments[i])) {
				for (var j=0; j<arguments[i].length; j++) {
					$(arguments[i][j]).html(loading);
				}
			}
			else {
				$(arguments[i]).html(loading);
			}
		}
	},
	newButton: function(text, type) {
		var div = $('<div>').addClass('button').addClass(type).text(text);
		LW.DHTML.buildButton(div);
		LW.DHTML.setButtonHover(div);
		return div;
	},
	buildButton: function (selector) {
		$(selector).each(function () {
			$(this).wrapInner('<span></span>');
			$(this).prepend('<div class="button-left"></div>');
			$(this).append('<div class="button-right"></div>');
		});
	},
	setButtonHover: function (selector) {
		if (!($.browser.msie && parseInt($.browser.version, 10) < 7)) {
			$(selector).hover(
				function () {
					if (!$(this).hasClass('grayedout')) {
						$(this).toggleClass('over');
					}
				},
				function () {
					if (!$(this).hasClass('grayedout')) {
						$(this).toggleClass('over');
					}
				}
			);
		}
	},
	truncateTextToWidth: function (selector, goal, options) {
		if (typeof options != 'object') {
			options = {};
		}

		var obj = $(selector);
		obj.wrapInner('<span></span>');
		obj = obj.find('span');

		obj.css({ display: 'inline-block'});

		var width = obj.width();

		while (width > goal) {
			var text = obj.text();

			if (options.tooltip) {
				LW.DHTML.TOOLTIP.add(selector, text);
				$(selector).removeClass('has_tooltip');
				options.tooltip = false;
			}

			obj.text(text.substr(0, text.length - 6) + '...');
			var newwidth = obj.width();

			if (newwidth == width) {
				// we aren't making any difference. bail to avoid infinte loop
				return;
			}
			width = newwidth;
		}
	},
	PRICING: {
		format: function (price, digits, pos) {
			if (price === null || price === undefined) {
				return null;
			}

			if (price.toString().indexOf('$') != -1) {
				/* already formatted */
				return price;
			}
			price  = parseFloat(price);
			pos    = pos || '';
			var sign = (price < 0) ? '-' : pos;
			return sign + '$' + Math.abs(price).toFixed(digits);
		}
	},
	toggleMaker : function(type) {
		return function (event) {
			$('#modify_' + type + '_info').toggle();
			$('#' + type + '_info').toggle();
			return false;
		};
	},
	resetMaker : function (type, eventClass) {
		var toggle = LW.DHTML.toggleMaker(type);
		var toFire = (eventClass) ? eventClass + '.load' : null;

		return function () {
			toggle();
			if (toFire) {
				LW.event.fireWhenReady(toFire);
			}
			return false;
		};
	},
	TOOLTIP: {
		price: {
			_build: function (hourly) {
				return '<b>' + LW.DHTML.PRICING.format(hourly, 5) + ' / hr</b>';
			},
			dropdown: function (selector, list) {
				var tooltips = [];
				var l = list.length;
				for (var i=0; i<l; i++) {
					tooltips[i] = LW.DHTML.TOOLTIP.price._build(list[i].hour);
				}
				$(selector).tooltip({
					delay: 100,
					bodyHandler: function () {
						return tooltips[this.selectedIndex];
					}
				});
				/* don't propagate mouseover events up to the select so it doesn't trigger the tooltip until they select something */
				$(selector + ' option').mouseover(function (e) {
					e.preventDefault();
					return false;
				});
			},
			insert: function (selector, price) {
				var el = $(selector);
				el.html(LW.DHTML.PRICING.format(price.month, 2) + ' / mo');

				if (price.hour) {
					el.addClass('has_tooltip').tooltip({
						delay: 100,
						bodyHandler: function () {
							return LW.DHTML.TOOLTIP.price._build(price.hour);
						}
					});
				}
				else {
					el.css({ 'white-space': 'nowrap' });
				}
			}
		},
		add: function (selector, content) {
			var obj = $(selector);

			if (obj.hasClass('has_tooltip')) {
				return;
			}

			obj.addClass('has_tooltip');
			obj.tooltip({
				delay: 100,
				showURL: false,
				bodyHandler: function () {
					return content;
				}
			});
		}
	}
};

LW.DHTML.indexSlideShow = LW.DHTML.indexSlideShow || {
	imgPath: LW.vars.imgPath + '/slide',
	init: function () {
		$('div.index_slide_show').each(function (event) {
			var ss = $(this);				
			ss.data('curIndex', 0);
			ss.data('length', ss.find('.slide').size());
			ss.data('isPaused', false);
			
			if (LW.IE) {
				var width  = ss.width();
				var height = ss.height();
				ss.find('img').each(function () {
					LW.IE.fixOnePng(this, width, height);
				});
			}
			
			LW.DHTML.indexSlideShow.startRotation(ss);
			LW.DHTML.indexSlideShow.addControls(ss);
		});
		
		$('div.index_slide_show .controls').delegate('.last-button', 'click', function (event) {
			event.preventDefault();
			var ss = $(this).closest('div.index_slide_show');
			LW.DHTML.indexSlideShow.pause(ss);
			LW.DHTML.indexSlideShow.prev(ss);
		});
		
		$('div.index_slide_show .controls').delegate('.next-button', 'click', function (event) {
			event.preventDefault();
			var ss = $(this).closest('div.index_slide_show');
			LW.DHTML.indexSlideShow.pause(ss);
			LW.DHTML.indexSlideShow.next(ss);
		});
		
		$('div.index_slide_show .controls').delegate('.main-button', 'click', function (event) {
			event.preventDefault();
			var self = $(this);
			var ss   = self.closest('div.index_slide_show');
			if (ss.data('isPaused')) {
				LW.DHTML.indexSlideShow.play(ss);
			}
			else {
				LW.DHTML.indexSlideShow.pause(ss);
			}
		});
		
	},
	startRotation: function (ss) {
		var slide = ss.find('.slide:first');
		slide.show();
		LW.DHTML.indexSlideShow.play(ss);
	},
	play: function (ss) {
		var main_button = ss.find('.main-button');
		main_button.src(LW.DHTML.indexSlideShow.imgPath + '/controls/slide-pause.png');
		ss.data('isPaused', false);
		
		var id = setInterval(function () {
			LW.DHTML.indexSlideShow.next(ss);
		}, 5000);
		
		ss.data('interval', id);
	},
	pause: function (ss) {
		clearInterval(ss.data('interval'));
		
		var main_button = ss.find('.main-button');
		main_button.src(LW.DHTML.indexSlideShow.imgPath + '/controls/slide-play.png');
		ss.data('isPaused', true);
	},
	next: function (ss) {
		var index  = ss.data('curIndex');
		var length = ss.data('length');
		index = ++index % ss.data('length')
		ss.data('curIndex', index);
		var next = ss.find('.slide').eq(index);
		
		ss.find('.slide:visible').fadeOut(350, function () {
			next.fadeIn(350);
		});
	},
	prev: function (ss) {
		var index  = ss.data('curIndex');
		var length = ss.data('length');
		index = --index % ss.data('length')
		ss.data('curIndex', index);
		var prev = ss.find('.slide').eq(index);
		
		ss.find('.slide:visible').fadeOut(350, function () {
			prev.fadeIn(350);
		});
	},
	addControls: function (ss) {
		var controls = $('<div>')
		controls.addClass('controls');
		
		var last = $('<img>').attr({
			src: LW.DHTML.indexSlideShow.imgPath + '/controls/slide-last.png'
		}).addClass('last-button');
		
		var next = $('<img>').attr({
			src: LW.DHTML.indexSlideShow.imgPath + '/controls/slide-next.png'
		}).addClass('next-button');
		
		var pause = $('<img>').attr({
			src: LW.DHTML.indexSlideShow.imgPath + '/controls/slide-pause.png'
		}).addClass('main-button');
		
		controls.append(last);
		controls.append(pause);
		controls.append(next);
		
		ss.append(controls);
		controls.show();
		
		if (LW.IE) {
			LW.IE.fixOnePng(last.get(0));
			LW.IE.fixOnePng(pause.get(0));
			LW.IE.fixOnePng(next.get(0));
		}
	}
};


LW.DHTML.slideshow = LW.DHTML.slideshow || {
	arrowLeft:  LW.vars.imgPath + '/slideshows/arrow-left.png',
	arrowRight: LW.vars.imgPath + '/slideshows/arrow-right.png',
	closeImg:   LW.vars.imgPath + '/slideshows/close.png',
	init: function () {
		$('.slideshowlink').click(function (event) {
			event.preventDefault();
			var name = $(this).attr('slideshow');
			LW.DHTML.slideshow.show(name);
			return false;
		});
		$('div.slideshow').each(function (event) {
			var ss = $(this);
			var width = parseInt($(this).attr('sswidth'));

			var header = ss.find('h3').clone();
			ss.find('h3').remove();


			ss.find('div').addClass('item').css({ width: width + 'px' });
			ss.wrapInner($('<div>').addClass('plane'));
			ss.wrapInner($('<div>').addClass('window'));

			ss.css({
				width: (width + 10) + 'px',
				marginLeft: (((width + 10)/ 2) * -1) + 'px'
			});

			ss.append(
				$('<img>').attr({
					src: LW.DHTML.slideshow.arrowRight
				}).addClass('control').addClass('right').click(function () {
					LW.DHTML.slideshow.moveLeft(ss);
				}).hide()
			);
			ss.prepend(
				header,
				$('<img>').attr({
					src: LW.DHTML.slideshow.arrowLeft
				}).addClass('control').addClass('left').click(function () {
					LW.DHTML.slideshow.moveRight(ss);
				}).hide(),
				$('<img>').attr({
					src: LW.DHTML.slideshow.closeImg
				}).addClass('close').addClass('control').click(function() {
					LW.DHTML.slideshow.hide(ss);
				}).hide()
			);

			if ($.browser.msie && parseInt($.browser.version) <= 7) {
				width -= 3;
			}

			ss.data('width', width + 3);
			ss.data('pos', 0);
			var length = ss.find('.item').size();
			ss.data('length', length);

			ss.find('.total').text(length);
			ss.find('.current').text(1);

			ss.wrapInner($('<div>').addClass('iefix'));
		});
	},
	show: function (name) {
		LW.DHTML.greyOut('slow');
		$('#' + name).fadeIn('slow', function () {
			var ss = $(this);
			var selector = (ss.data('length') > 1) ? '.control.right, .control.close' : '.control.close';

			ss.find(selector).fadeIn('slow');
		});
	},
	hide: function (ss) {
		ss.find('.control').fadeOut(25, function () {
			if ($(this).is('.close')) {
				LW.DHTML.unGreyOut('slow');
				ss.fadeOut('slow', function () {
					ss.find('.plane').css({ left: '5px' });
					ss.find('.current').text(1);
					ss.data('pos', 0);
				});
			}
		});
	},
	moveRight: function (ss) {
		var pos = ss.data('pos');

		if (pos == 0) {
			return;
		}

		var width = ss.data('width');
		var plane = ss.find('.plane');
		var left  = parseInt(plane.css('left').replace('px', ''));

		pos--;
		ss.data('pos', pos);

		plane.animate(
			{
				left: (left + width) + 'px'
			},
			'1000',
			'swing',
			function () {
				var cur = ss.data('pos');
				ss.find('.current').text(cur + 1);
				if (cur == 0) {
					ss.find('.control.left').fadeOut('slow');
				}
				if (cur < ss.data('length') - 1) {
					ss.find('.control.right').fadeIn('slow');
				}
			}
		);
	},
	moveLeft: function (ss) {
		if (ss.data('pos') + 1 == ss.data('length')) {
			return;
		}

		var width = ss.data('width');
		var plane = ss.find('.plane');
		var left  = parseInt(plane.css('left').replace('px', ''));

		var pos = ss.data('pos');
		pos++;
		ss.data('pos', pos);

		plane.animate(
			{
				left: (left - width) + 'px'
			},
			'1000',
			'swing',
			function () {
				ss.find('.current').text(pos + 1);
				if (pos == ss.data('length') - 1) {
					ss.find('.control.right').fadeOut('slow');
				}
				if (pos > 0) {
					ss.find('.control.left').fadeIn('slow');
				}
			}
		);
	}
};


LW.DHTML.cycleBanner = LW.DHTML.cycleBanner || {
	arrowLeft:  LW.vars.imgPath + '/cyclebanner/leftarrow.png',
	arrowRight: LW.vars.imgPath + '/cyclebanner/rightarrow.png',
	init: function () {
		$('.cyclebanner').each(function () {
			var banner = $(this);
			var show   = parseInt(banner.attr('show'));

			banner.wrapInner($('<div>').addClass('plane'))
			banner.wrapInner($('<div>').addClass('window'));
			
			banner.append($('<div>').addClass('corner_bg'));
			banner.append($('<div>').addClass('fader_bg'));
			
			var plane  = banner.find('.plane');
			var window = banner.find('.window');
			
			window.css({zIndex: 40});
			
			var width  = plane.innerWidth();
			var height = banner.height();
						
			var first = plane.find('.item').eq(0);
			
			var elwidth  = first.width();
			var elheight = first.height();
			
			
			var totalPadding = width - (show * elwidth);
			var padding      = totalPadding > 0 ? Math.ceil(totalPadding / (show - 1)) - (show * 2) : 0;
			var tmp = elwidth + padding;
			
			banner.data('offset', elwidth + padding);
			banner.data('pos', 0)
			
			var imgs = plane.find('.item');
			
			imgs.each(function (i) {
				$(this).css({
					marginRight: Math.floor(padding) + 'px'
				});
			});
			
			banner.data('size', imgs.size());
			
			banner.prepend(
				$('<img>').attr({
					src: LW.DHTML.cycleBanner.arrowLeft
				}).css({
					position: 'absolute',
					left: '-12px',
					top:  (height / 2 - 6) + 'px',
					cursor: 'pointer',
					zIndex: 50
				}).click(function () {
					var banner = $(this).closest('.cyclebanner');
					var plane  = banner.find('.plane');
					
					if (plane.is(':animated')) {
						return false;
					}
					
					var pos    = banner.data('pos');
					var size   = banner.data('size');
					var show   = parseInt(banner.attr('show'));
					var offset = banner.data('offset');
					var left   = parseInt(plane.css('left').replace('px', ''));
					
					window.css({zIndex: 0});
					
					if (pos == 0) {
						var img = plane.find('.item').eq(size - 1);
						var newImg = img.clone();
						plane.prepend(newImg);
						plane.css({ left: (left - offset) + 'px'});
						plane.animate(
							{
								left: (left) + 'px'	
							},
							'1500',
							'swing',
							function () {
								img.remove();
								window.css({zIndex: 40});
							}
						);
					}
					else {
						banner.data('pos', pos - 1)
						plane.animate(
							{
								left: (left + offset) + 'px'	
							},
							'1500',
							'swing',
							function () {
								window.css({zIndex: 40});
							}
						);
					}
					
					return false;
				})
			);
			
			
			banner.append(
				$('<img>').attr({
					src: LW.DHTML.cycleBanner.arrowRight
				}).css({
					position: 'absolute',
					right: '-12px',
					top:  (height / 2 - 6) + 'px',
					cursor: 'pointer',
					zIndex: 50
				}).click(function () {
					var banner = $(this).closest('.cyclebanner');
					var plane  = banner.find('.plane');
					
					if (plane.is(':animated')) {
						return false;
					}
					
					var pos    = banner.data('pos');
					var size   = banner.data('size');
					var show   = parseInt(banner.attr('show'));
					var offset = banner.data('offset');
					var left   = plane.css('left').replace('px', '');
					
					window.css({zIndex: 0});
					
					if (pos == size - show) {
						var img = plane.find('.item').eq(0);
						var newImg = img.clone();
						plane.append(newImg);
						plane.animate(
							{
								left: (left - offset) + 'px'	
							},
							'1500',
							'swing',
							function () {
								var left   = parseInt(plane.css('left').replace('px', '')) + offset;
								img.remove();
								plane.css({ left: left  + 'px'});
								window.css({zIndex: 40});
							}
						);
					}
					else {
						banner.data('pos', pos + 1)
						plane.animate(
							{
								left: (left - offset) + 'px'	
							},
							'1500',
							'swing',
							function () {
								window.css({zIndex: 40});
							}
						);
					}
					
					return false;
				})
			);
		});
	}
};

LW.DHTML.popupbox = LW.DHTML.popupbox || {
	closeImg:   LW.vars.imgs + '/slideshows/close.png',
	init: function () {
		$('.popupboxlink').click(function (event) {
			event.preventDefault();
			var name = $(this).attr('popupbox');
			LW.DHTML.popupbox.show(name);
			return false;
		});
		$('div.popupbox').each(function (event) {
			var pb = $(this);
			var width = parseInt(pb.attr('pbwidth'));
			var height = parseInt(pb.attr('pbheight'));

			pb.find('div.item').css({ width: width + 'px' });
			pb.wrapInner($('<div>').addClass('plane'));
			pb.wrapInner($('<div>').addClass('window'));

			pb.css({
				width: (width + 60) + 'px',
				marginLeft: (((width + 60)/ 2) * -1) + 'px'
			});

			pb.prepend(
				$('<img>')
					.attr({ src: LW.DHTML.slideshow.closeImg })
					.addClass('close')
					.addClass('control')
					.click(function() {
						LW.DHTML.popupbox.hide(pb);
				}).hide()
			);
			pb.wrapInner($('<div>').addClass('iefix'));
		});
	},
	show: function (name) {
		LW.DHTML.greyOut('slow');
		$('#' + name).slideDown('slow', function () {
			var pb = $(this);
			pb.find('.control.close').fadeIn('slow');
		});
	},
	hide: function (pb) {
		pb.find('.control').fadeOut(25, function () {
			if ($(this).is('.close')) {
				LW.DHTML.unGreyOut('slow');
				pb.slideUp('slow');
			}
		});
	}
};

