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__              = [];
var __SLIDESHOW_WAITINGLOAD__         = false;
jQuery(function($){
	if ($.browser.msie) {
		$("#featureItemA01MainImage img").each(function(index, node){
			var src = $(node).attr("src");
			if (src.indexOf(".png") != -1) {
				$(node).attr("src", "./slideshow/images/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);
		
		var isSet = false;
		var setSlideShow = function () {
			if ( isSet ) return;
			isSet = true;
			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="./slideshow/images/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="./slideshow/images/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();
			});
		}
		var imageCount = 0;
		$.each(__SLIDESHOW_IMAGES__, function(index, conf){
			var list = $('<li></li>');
			var image = $('<img src="' + sanitize(conf.image) + '" alt="' + sanitize(conf.alt || '') + '" />');
			if ( __SLIDESHOW_WAITINGLOAD__  ) {
				image.bind('load',function(){
					imageCount++;
					if ( imageCount < __SLIDESHOW_IMAGES__.length) return;
					setSlideShow();
				});
			}
			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);
		});
		if ( !__SLIDESHOW_WAITINGLOAD__ ) {
			setSlideShow();
		}

	}, 0);
});

