var __SLIDESHOW_DELAY__               = 7000;
var __SLIDESHOW_INTERVAL__            = 7000;
var __SLIDESHOW_DURATION__            = 750;
var __SLIDESHOW_PANEL_DURATION__      = 400;
var __SLIDESHOW_PANEL_FIRST_DISPLAY__ = 3000;
var __SLIDESHOW_PANEL_ANIMATION__     = 200;
var __SLIDESHOW_PANEL_HIDE_DELAY__    = 400;
var __SLIDESHOW_IMAGES__              = [];
jQuery(function($){
	if ($.browser.msie) {
		$("#featureItemA01MainImage img").each(function(index, node){
			var src = $(node).attr("src");
			if (src.indexOf(".png") != -1) {
				$(node).attr("src", "/img/shared/bg_slide-controller_02.gif");
				node.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '",sizingMethod="image")';
			}
		});
	}

	setTimeout(function(){
		if (!__SLIDESHOW_IMAGES__.length) {
			return;
		}

		var mainImage      = $("#featureItemA01MainImage");
		if ($.browser.msie && $.browser.version < 7) {
			mainImage.parent().append('<div class="graphic"></div>');
		}

		var slideNode      = $('<ul id="featureItemA01Image" />');
		slideNode.appendTo(mainImage[0].parentNode);
		$.each(__SLIDESHOW_IMAGES__, function(index, conf){
			var list = $('<li></li>');
			var image = $('<img src="' + sanitize(conf.image) + '" alt="' + sanitize(conf.alt || '') + '" />');
			if (conf.link) {
				var link = $('<a href="' + sanitize(conf.link) + '" target="' + sanitize(conf.target || '') + '" />');
				link.append(image);
				list.append(link);
			} else {
				list.append(image);
			}
			list.appendTo(slideNode);
		});

		var controllerContainerNode = $([
			'<div id="featureItemA01Image-controller-panel">',
			($.browser.msie && $.browser.version < 7) ? '<div class="graphic"></div>' : '',
			'<ul id="featureItemA01Image-controller">',
			'<li class="slide-prev"><a href="#"><img src="/img/shared/btn_slide-prev_01.png" alt="prev" width="43" height="43" /></a></li>',
			'<li class="slide-container">',
			'<ul class="slide-items">',
			'</ul>',
			'</li>',
			'<li class="slide-next"><a href="#"><img src="/img/shared/btn_slide-next_01.png" alt="next" width="43" height="43" /></a></li>',
			'</ul>',
			'<!--/featureItemA01Image-controller-panel--></div>'
		].join(""));
		var controllerNode             = $("#featureItemA01Image-controller", controllerContainerNode);
		var controllerNodeItemListNode = $("ul.slide-items", controllerContainerNode);
		controllerContainerNode.appendTo(mainImage[0].parentNode);
		$.each(__SLIDESHOW_IMAGES__, function(index, conf){
			var list = $('<li></li>');
			if (conf.thumb) {
				var thumb = $('<img src="' + sanitize(conf.thumb) + '" alt="' + sanitize(conf.alt || '') + '" />');
				var link = $('<a href="' + sanitize(conf.link || '#') + '" target="' + sanitize(conf.target || '') + '"></a>');
				link.append(thumb);
				list.append(link);
			}
			list.appendTo(controllerNodeItemListNode);
		});

		if (slideNode[0] && controllerNode[0]) {
			var slideshow  = new Slideshow("slideIn", slideNode[0], __SLIDESHOW_DURATION__, __SLIDESHOW_INTERVAL__, false, true);
			var controller = new SlideshowController("scroll", controllerNode[0], slideshow, __SLIDESHOW_PANEL_DURATION__, __SLIDESHOW_INTERVAL__, true, true);
			controller.type = "";
			controller.select(-1);

			$("a", slideNode)
				.append('<span class="frame"></span>')
				.bind("mouseenter.slideshow", function() {
					$(this).addClass("pseudo-hover");
				})
				.bind("mouseleave.slideshow", function() {
					$(this).removeClass("pseudo-hover");
				});

			$("div.featureItemA01>div.image")
				.bind("mouseenter.slideshow", createDelegate(controller.stopRotation, controller))
				.bind("mouseleave.slideshow", createDelegate(controller.startRotation, controller));

			controllerNode.css("display", "block");
			controllerContainerNode
				.bind("mouseenter.slideshow", function() {
					if (controllerNode.data("timer")) {
						clearTimeout(controllerNode.data("timer"));
					}
					if (!controllerNode.data("active")) {
						var currentDisplay = controllerNode.css("display");
						controllerNode.css("display", "block");
						controller.node.scrollLeft = controller.scrollLeft;
						controllerNode.css("display", currentDisplay);
						controllerNode.data("active", true).slideDown(__SLIDESHOW_PANEL_ANIMATION__);
						$('div.graphic', controllerNode.parent()).slideDown(__SLIDESHOW_PANEL_ANIMATION__);
					}
				})
				.bind("mouseleave.slideshow", function() {
					if (controllerNode.data("timer")) {
						clearTimeout(controllerNode.data("timer"));
					}
					controllerNode.data(
						"timer",
						setTimeout(
							createDelegate(
								function(){
									this.slideUp(__SLIDESHOW_PANEL_ANIMATION__, function(){
										$(this).data("active", false);
									});
									$('div.graphic', controllerNode.parent()).slideUp(__SLIDESHOW_PANEL_ANIMATION__);
								},
								controllerNode
							),
							__SLIDESHOW_PANEL_HIDE_DELAY__
						)
					);
				});
			setTimeout(function(){
				if (!controllerNode.data("active")) {
					controllerNode.slideUp(__SLIDESHOW_PANEL_ANIMATION__);
					$('div.graphic', controllerNode.parent()).slideUp(__SLIDESHOW_PANEL_ANIMATION__);
				}
			}, __SLIDESHOW_PANEL_FIRST_DISPLAY__);
		}

		if (mainImage[0]) {
			mainImage.data("active", true);
			var mainImageHide = createDelegate(function(){
				if (this.data("active")) {
					this.data("active", false);
					this.fadeOut(__SLIDESHOW_DURATION__);
					if (controller.selectedIndex <= 0) {
						controller.select(0);
					}
				}
			}, mainImage);
			setTimeout(mainImageHide, __SLIDESHOW_DELAY__);
			slideshow.addEventListener("change", mainImageHide);
		}

		$(window).bind("unload.slideshow", function(){
			slideshow.dispose();
		});
	}, 0);
});
