/**
 * General function
 */

function adjustOverlay(dataSource, itemId) {
	if(typeof size_Array != "undefined" && (dataSource.eq(itemId - 1).attr("rel"))=="") {
		imageWidth = size_Array[itemId-1][0];
		imageHeight = size_Array[itemId-1][1];
		carWidth = $("#zoomInOverlayerTech").width();
		if (imageWidth>=602) {
			$("#overlayerTech").css("width",(imageWidth + carWidth)+25);
			$("#overlayerTech").css("margin-left", -(imageWidth + carWidth)/2);
		} else {
			$("#overlayerTech").css("width","736px");
			$("#overlayerTech").css("margin-left","-368px");
		}
		if (imageHeight>=600) {
			$("#overlayerTech .inner").css("height",imageHeight+10);
		}
	}
	}

function AddEventsOnCarouselItems(carousel, dataSource, state, urlType, syncCarousel, jCarouselItems, jDestImage)
{
	for (var i = carousel.first; i <= carousel.last; i++) {
		var currentItem = jCarouselItems.eq(i - 1);

		currentItem.unbind();

		currentItem.click(function() {
		    var itemId = $($(this).parent("li")).attr("jcarouselindex");
		    var image = GetImageUrl(itemId, urlType, dataSource);
			
			/* QUGY */
			adjustOverlay(dataSource, itemId);

			
		    AddImage(image, jDestImage);
		    if (syncCarousel != null) {
		        AddImage(GetImageUrl(itemId, syncCarousel[1], dataSource), syncCarousel[0]);
		    }
		});
    }
}

function CreateCarouselItems(carousel, dataSource, state, urlType){
	for (var i = carousel.first; i <= carousel.last; i++) {
        // Create an object from 
        var item = $(GetItemHTML(i, urlType, dataSource)).get(0);
        carousel.add(i, item);
    }
}

function AddImage(imageUrl, jDest)
{
    var rand = Math.floor(Math.random() * 100001);
    if (imageUrl == undefined) imageUrl = "";
	imageUrl = (imageUrl.indexOf("?") == -1) ? imageUrl + "?cache=" + rand : imageUrl + "&cache=" + rand;
	
	var img = new Image();
  	$(img).load(function () {
		jDest.empty();
		jDest.append('<img src="' + imageUrl + '" />');
	}).attr('src', imageUrl)
}

function GetItemHTML(itemId, urlType, dataSource)
{
	var image = GetImageUrl(itemId , urlType, dataSource);
    return '<a href="javascript:void(0)"><img src=" ' + image + ' " border="0" alt="" /></a>';
};

 
function GetImageUrl(itemId, urlType, dataSource){
	switch (urlType){
		case 1: // Image Overlay
			return $(dataSource.eq(itemId - 1)).attr("rel").split("|")[1];
		case 2: // Thumbnail Overlay
			return $(dataSource.eq(itemId - 1)).attr("rel").split("|")[0];
		case 3:
			return $(dataSource.eq(itemId - 1)).attr("href");
		case 4: 
			return $($($(dataSource.eq(itemId - 1))).find("img")).attr("src");
	}
}




/**
 * Behaviors
 */
 
//Overlay Events 
function Overlay_itemLoadCallback_onBeforeAnimation(carousel, state)
{


    CreateCarouselItems(carousel
						, $("#data li a")
						, state
						, 1);
};

function Overlay_itemLoadCallback_onAfterAnimation(carousel, state)
{
    var syncItems = new Array($("#thumbnailImg td"), 4);
	AddEventsOnCarouselItems(carousel
							 , $("#data li a")
							 , state
							 , 2
							 , syncItems
							 , $("#zoomInOverlayer a")
							 , $("#hightDefImg td"));
}

function Overlay_initCallback(carousel) 
{
    if (jQuery('#zoomInOverlayer img').length == 0) {
        var firstImageUrl = GetImageUrl(1, 2, $("#data li a"));
        AddImage(firstImageUrl, $("#hightDefImg td"));
    }
}


//Carousel Events
function Carousel_itemLoadCallback_onBeforeAnimation(carousel, state)
{

	CreateCarouselItems(carousel
						, $("#data li a")
						, state
						, 3);
}

function Carousel_itemLoadCallback_onAfterAnimation(carousel, state)
{
    var syncItems = new Array($("#hightDefImg td"), 2);
    
 	AddEventsOnCarouselItems(carousel
							 , $("#data li a")
							 , state
							 , 4
							 , syncItems
							 , $("#zoomIn a")
 							 , $("#thumbnailImg td"));
}

function Carousel_initCallback(carousel)
{
	var firstImageUrl = GetImageUrl(1, 4, $("#data li a"));
	AddImage(firstImageUrl ,$("#thumbnailImg td"));
}


//Carousel Technical Schema
function TechnicalSchema_initCallback(carousel)
{
	var firstImageUrl = GetImageUrl(1, 4, jQuery("#technicalSchemaData li a"));
	AddImage(firstImageUrl, jQuery("#hightDefImgTech td"));
	/* QUGY */
	adjustOverlay($("#technicalSchemaData li a"), 1);
}

function TechnicalSchema_itemLoadCallback_onBeforeAnimation(carousel, state)
{
	
	CreateCarouselItems(carousel
						, $("#technicalSchemaData li a")
						, state
						, 3);
}

function TechnicalSchema_itemLoadCallback_onAfterAnimation(carousel, state)
{
    var firstImageUrl = GetImageUrl(1, 2, $("#technicalSchemaData li a"));
    AddImage(firstImageUrl, $("#schemaHightDef td"));
    
 	AddEventsOnCarouselItems(carousel
							 , $("#technicalSchemaData li a")
							 , state
							 , 4
							 , null
							 , $("#zoomInOverlayerTech a")
 							 , $("#hightDefImgTech td"));
}

