/* static XML files */

// feed path
var feedURL = "feeds/";
// feed extension (e.g. .xml or .ajax)
var feedExt = ".page";
// cameras url
var camerasXML = "xml/cameras_sample.xml";
// categories url
var categoriesXML = "xml/categories_sample.xml";
// About images url
var photoAboutXML = "xml/photos_sample_about.xml"

/* initial feed URLs */

// images feed url
var feedImages = "feeds/flickr.page";
// videos feed url
var feedVideos = "feeds/youtube.page";

/* Settings */

// Default filter settings
var cameraSetting = "1"; // 'all' for all cameras, else camera id
var categorySetting = ""; // empty for all categories, else category id
var languageSetting = ""; // empty for all languages, else locale
// facebook api key
var api_key = '6a64c39939e68c940a8b9da3d38ba670';


var api_key = '6a64c39939e68c940a8b9da3d38ba670'; 
var channel_path = 'xd_receiver.htm'; 
var ian_date_format = 'dd/MM/yyyy'; 


/* DO NOT EDIT BELOW THIS LINE */

// XML data used in different functions
var cameraData;
var categoryData;
var xmlData;
var imgCarouselData = "";
var imgCarouselId;
var videoCarouselData = "";
var videoCarouselId;

var totalSets;
var currentSet;
var totalPhotos;

// configurations
var page = 1;
var thread;
var videoId;

// jCarousel data
var jc;
var lock = false;

var cache = [];
var initial = true;

var jsURL = location.href;

function _pageTracker (type) {
    this.type = type;
    this._trackEvent = function(a,b,c) {
       _gaq.push(['_trackEvent', a, b, c]);
    };
}

var pageTracker = new _pageTracker();


$(document).ready(function(){

    $('.ian_fadeIn').css("visibility", "hidden");
    $('.ian_img').addClass("ian_loading");
    if ($("#ian_meta_download").length > 0) 
        $('.ian_img').removeClass("ian_loading");
    $("#ian_mycarousel ul li").remove();
    
    $(".addthis_button").mouseenter(function(){
        $(this).removeClass('ian_pause');
        $('#ian_mycarousel').stopTime('slideShow');
        $(this).attr("addthis:url", location.href);
        setTimeout(handleAddThis, 200);
    });
    
    // init deeplinking for image gallery
    if ($("#ian_gallery").length > 0) {
        $.address.init(function(event){
            var imageId = (event.value == '/') ? 'Home' : event.pathNames[0].substr(0, 1) + event.pathNames[0].substr(1);
            $.ajax({
                type: "GET",
                async: false,
                url: photoAboutXML,
                success: function(data){
                    xmlData = data;
                }
            });
            gallery_initGallery(imageId);
        }).externalChange(function(event){
            var imageId = (event.value == '/') ? 'Home' : event.pathNames[0].substr(0, 1) + event.pathNames[0].substr(1);
            gallery_displayImage(imageId);
        });
    }
    // bind deeplinking to gallery images on click
    $(".ian_boximg").live("click", function(e){
        var imageId = $(this).attr("id");
        gallery_displayImage(imageId);
        $(this).addClass('ian_active');
        $.address.value(imageId);
    });
    
    
    // init deeplinking for image carousel
    if ($("#ian_mycarousel").length > 0) {
    
        $.address.init(function(event){
            imgCarouselId = (event.value == '/') ? 'Home' : event.pathNames[0].substr(0, 1) + event.pathNames[0].substr(1);
            feedImages += "?set=1&id=" + imgCarouselId;
            $('#ian_mycarousel').jcarousel({
                itemLoadCallback: ian_mycarousel_itemLoadCallback,
                itemFirstInCallback: ian_mycarousel_scrollCallback,
                animation: 'slow',
                scroll: 11,
                visible: 11
            });
        }).externalChange(function(event){
            imgCarouselId = (event.value == '/') ? 'Home' : event.pathNames[0].substr(0, 1) + event.pathNames[0].substr(1);
            if (imgCarouselId != 'Home') {
                jc.scroll(Math.floor($("#" + imgCarouselId).parent().attr("jcarouselindex") / 11) * 11 + 1, true);
                $("#" + imgCarouselId).click();
            }
            else {
                jc.scroll(1, true);
                $(".jcarousel-list").find("li:first a").click();
            }
        });
    }
    
    
    // init deeplinking for video carousel
    if ($("#ian_myvideocarousel").length > 0) {
    
        $.address.init(function(event){
            videoCarouselId = (event.value == '/') ? 'Home' : event.pathNames[0].substr(0, 1) + event.pathNames[0].substr(1);
            feedVideos += "?id=" + videoCarouselId;
            $('#ian_myvideocarousel').jcarousel({
                itemLoadCallback: ian_myvideocarousel_itemLoadCallback,
                itemFirstInCallback: ian_myvideocarousel_scrollCallback,
                animation: 'slow',
                scroll: 5,
                visible: 5
            });
        }).externalChange(function(event){
            videoCarouselId = (event.value == '/') ? 'Home' : event.pathNames[0].substr(0, 1) + event.pathNames[0].substr(1);
            if (videoCarouselId != 'Home') {
                jc.scroll(Math.floor($("#" + videoCarouselId).parent().attr("jcarouselindex") / 5) * 5 + 1, true);
                $("#" + videoCarouselId).click();
            }
            else {
                jc.scroll(1, true);
                $(".jcarousel-list").find("li:first a").click();
            }
        });
    }
    
    $('.ian_teaser').equalHeights(180);
    $('.ian_teaser_internal').click(function(){
        document.location.href = $(this).children('a').attr('href');
    });
    // external link dialog  for clickable areas
    $('.ian_area_opendialog').live("click", function(event){
        event.preventDefault();
        pageTracker._trackEvent('General', 'Open Media Source', $(this).attr('title'));
        var title = $(this).attr('title');
        var href = $(this).children('span').children('p').children('a').attr('href');
        if (!href) {
            href = $('.ian_promotarget').attr('href');
        }
		$.openDOMWindow({
            borderSize: '0',
            overlayColor: '#414e5c',
            overlayOpacity: '85',
            width: 305,
            height: 120,
            windowSourceID: '#ian_dialog'
        });
        $('.ian_dialogtitle').text(title);
        $('.ian_dialoglink').attr('href', href);
        $('#DOMWindow').addClass('ian_dialog_external');
        $('#DOMWindow').corners("5px transparent");
    });
    
    $('.ian_network').equalHeights(60);
    
    // external link dialog
    $('.ian_opendialog').live("click", function(event){
        event.preventDefault();
        if ($(this).hasClass("ian_from")) {
            pageTracker._trackEvent('General', 'Open Owner Profile', $(this).text());
        };
        if ($(this).hasClass("ian_foundon")) {
            pageTracker._trackEvent('General', 'Open Media Source', $(this).attr("title"));
        };
        if ($(this).attr('href')) {
            var title = $(this).attr('title');
            var href = $(this).attr('href');
        }
        else {
            if ($(this).children('a').attr('href')) {
                var title = $(this).children('a').attr('title');
                var href = $(this).children('a').attr('href');
            }
        }
        $.openDOMWindow({
            borderSize: '0',
            overlayColor: '#414e5c',
            overlayOpacity: '85',
            width: 305,
            height: 120,
            windowSourceID: '#ian_dialog'
        });
        $('.ian_dialogtitle').text(title);
        $('.ian_dialoglink').attr('href', href);
        $('#DOMWindow').addClass('ian_dialog_external');
        $('#DOMWindow').corners("5px transparent");
    });
    
    
    $('.ian_closedialog').click(function(){
        $.closeDOMWindow();
    });
    $('.ian_dialoglink').click(function(){
        $.closeDOMWindow();
    });
    // report layer dialog
    $('.ian_openreport').click(function(event){
        event.preventDefault();
        $.openDOMWindow({
            borderSize: '0',
            overlayColor: '#414e5c',
            overlayOpacity: '85',
            width: 305,
            height: 470,
            windowSourceID: '#ian_dialog_report'
        });
        $('#DOMWindow').addClass('ian_dialog_report');
        $('#DOMWindow').corners("5px transparent");
        // set hidden fields and report info in layer
        var thumb = $('.ian_active a div').css('background-image');
        var title = $('.ian_metadata h2').text();
        var user = $('p .ian_from').text();
        $('input.ian_report_title').attr('value', title);
        $('input.ian_report_user').attr('value', user);
        $('h2.ian_report_title').text(title);
        $('strong.ian_report_user').html(user);
        $('.ian_report_thumb').css('background-image', thumb);
    });
    
    // popup "coming soon"
    $('.ian_openhint').live("click", function(event){
        event.preventDefault();
        pageTracker._trackEvent('General', 'Making Of', $(this).text());
        if ($(this).attr('href')) {
			var title = $(this).attr('title');
			var href = $(this).attr('href');
		}
		else {
			if ($(this).children('a').attr('href')) {
				var title = $(this).children('a').attr('title');
				var href = $(this).children('a').attr('href');
			}
		}
        $.openDOMWindow({
            borderSize: '0',
            overlayColor: '#414e5c',
            overlayOpacity: '85',
            width: 305,
			height: 120,
            windowSourceID: '#ian_dialog_hint'
        });
        $('.ian_dialogtitle').text(title);
        $('.ian_dialoglink').attr('href', href);
        $('#DOMWindow').addClass('ian_dialog_external');
	    if (($.browser.mozilla && $.browser.version.substr(0, 3) == "1.9") || ($.browser.safari)) {
			$('#DOMWindow').corners("5px transparent");
		}
    });
    
    $(".ian_dropdown li").hover(function(){
        $("ul", this).fadeIn("fast");
    });
    
    // toggle effect dropdown menu
    $.fn.hoverClass = function(c){
        return this.each(function(){
            $(this).hover(function(){
                $(this).addClass(c);
            }, function(){
                $(this).removeClass(c);
            });
        });
    };
    
    if (document.all) {
        $(".ian_dropdown li").hoverClass("sfHover");
    }
    
    $("#ian_videoVolume").hover(function(){
        $(this).toggleClass("ian_active").toggleClass("ian_inactive");
    }, function(){
        $(this).toggleClass("ian_active").toggleClass("ian_inactive");
    });
    
    $('#ian_playpause').click(function(){
        if ($(this).hasClass('ian_pause')) {
            $(this).removeClass('ian_pause');
            $('#ian_mycarousel').stopTime('slideShow');
            pageTracker._trackEvent('Photos', 'Pause Slideshow', '');
        }
        else {
            pageTracker._trackEvent('Photos', 'Start Slideshow', '');
            $(this).addClass('ian_pause');
            $('#ian_mycarousel').everyTime(3000, 'slideShow', function(){
                if ($('#ian_mycarousel .ian_active').children('a').parent().attr('jcarouselindex') % 11 == 0) {
                    var set = parseInt($('#ian_mycarousel .ian_active').children('a').parent().attr('jcarouselindex')) + 1;
                    jc.scroll(set, true);
					if (!lock) {
						if (parseInt(currentSet) < parseInt(totalSets)) {
							var nextSet = parseInt(currentSet) + 1;
                            cameraSetting = nextSet;
                            jQuery.get("feeds/flickr.page?set=" + nextSet + "&category=" + categorySetting, function(data){
                                addNextSet(data);
                            });
                        }
                        lock = true;
                    }
                }
                if ($('#ian_mycarousel .ian_active').next().children('a').length == 0) {
                    $('#ian_playpause').removeClass('ian_pause');
                    $('#ian_mycarousel').stopTime('slideShow');
                }
                else {
                    $('#ian_mycarousel .ian_active').next().children('a').trigger("click");
                    
                }
            });
        }
        return false;
    });
    
    $("#ian_wrap *").not("#ian_magnifyer").mouseover(function(){
        $("#ian_magnifyer").hide();
        $("#ian_wrap").css("cursor", "auto");
        $("#ian_wrap").unbind("click", fullWindowMode);
    }).mouseout(function(){
        $("#ian_magnifyer").show();
        if ($("#ian_magnifyer").length > 0) {
            $("#ian_wrap").css("cursor", "pointer");
            $("#ian_wrap").bind("click", fullWindowMode);
        }
    });
    if ($("#ian_magnifyer").length > 0) {
        $("#ian_wrap").css("cursor", "pointer");
        $("#ian_wrap").bind("click", fullWindowMode);
    }
    
    // mouseover gallery thumbs
    $("#ian_gallery .ian_boximg").live("mouseover", function(event){
        if (!$(this).hasClass('ian_active')) 
            $(this).children('img').attr('src', "/resources/ian/images/images_thumb_rollover.png");         
            
    });
    $("#ian_gallery .ian_boximg").live("mouseout", function(event){
        if (!$(this).hasClass('ian_active')) 
            $(this).children('img').attr('src', "/resources/ian/images/images_thumb_corners.png");
    });
    
    // mouseover carousel thumbs
    $("#ian_mycarousel .jcarousel-item img").live("mouseover", function(event){
        if (!$(this).parent().parent().parent().hasClass('ian_active')) {
            $(this).attr('src', "/resources/ian/images/images_thumb_rollover.png");
        }
    });
    $("#ian_mycarousel .jcarousel-item img").live("mouseout", function(event){
        if (!$(this).parent().parent().parent().hasClass('ian_active')) 
            $(this).attr('src', "/resources/ian/images/images_thumb_corners.png");
    });
    // mouseover video carousel thumbs
    $("#ian_myvideocarousel .jcarousel-item img").live("mouseover", function(event){
        if (!$(this).parent().parent().parent().hasClass('ian_active')) {
            $(this).attr('src', "/resources/ian/images/videos_thumb_rollover.png");
        }
    });
    $("#ian_myvideocarousel .jcarousel-item img").live("mouseout", function(event){
        if (!$(this).parent().parent().parent().hasClass('ian_active')) 
            $(this).attr('src', "/resources/ian/images/videos_thumb_corners.png");
    });
    
    
    
    $("#ian_magnifyer").click(function(event){
        event.preventDefault();
    });
    
    // mouseover gallery thumbs
    $("#ian_gallery .ian_boximg").live("mouseover", function(event){
        if (!$(this).hasClass('ian_active')) 
            $(this).children('img').attr('src', "/resources/ian/images/images_thumb_rollover.png");
    });
    $("#ian_gallery .ian_boximg").live("mouseout", function(event){
        if (!$(this).hasClass('ian_active')) 
            $(this).children('img').attr('src', "/resources/ian/images/images_thumb_corners.png");
    });
    
    // mouseover carousel thumbs
    $("#ian_mycarousel .jcarousel-item img").live("mouseover", function(event){
        if (!$(this).parent().parent().parent().hasClass('ian_active')) {
            $(this).attr('src', "/resources/ian/images/images_thumb_rollover.png");
        }
    });
    $("#ian_mycarousel .jcarousel-item img").live("mouseout", function(event){
        if (!$(this).parent().parent().parent().hasClass('ian_active')) 
            $(this).attr('src', "/resources/ian/images/images_thumb_corners.png");
    });
    // mouseover video carousel thumbs
    $("#ian_myvideocarousel .jcarousel-item img").live("mouseover", function(event){
        if (!$(this).parent().parent().parent().hasClass('ian_active')) {
            $(this).attr('src', "/resources/ian/images/videos_thumb_rollover.png");
        }
    });
    $("#ian_myvideocarousel .jcarousel-item img").live("mouseout", function(event){
        if (!$(this).parent().parent().parent().hasClass('ian_active')) 
            $(this).attr('src', "/resources/ian/images/videos_thumb_corners.png");
    });
    
    $("#ian_magnifyer").click(function(event){
        event.preventDefault();
    });
    
    initFilter();
    
    createCorners();
    
    $('#ian_showfilter').mouseover(function(){
        $(this).css("background", "none").css("background-color", "#333");
        $(this).children('a').css("color", "#fff").css("background", "#333 url(/resources/ian/images/arrowUpWhite.png) no-repeat scroll 0 5px");
    }).mouseout(function(){
        if (!$(this).hasClass("ian_filtered")) {
            $(this).css("background", "transparent url(/resources/ian/images/showFilterButton.png) repeat-x scroll 0 0");
            $(this).children('a').css("color", "#333");
            $(this).children('a').css("background", "transparent url(/resources/ian/images/arrows.png) no-repeat scroll 0 5px");
        }
        else {
            $(this).css("background", "none").css("background-color", "#FFEE7F");
            $(this).children('a').css("color", "#333").css("background", "transparent url(/resources/ian/images/arrows.png) no-repeat scroll 0 5px");
        }
    });
    
    if ($("#ian_meta_download").length > 0) 
        showLayers();
});

function handleLayers(){
    mouseStop();
    $('#ian_content').mouseenter(function(e){
        if ($(e.relatedTarget).attr("id", id) != "at15s" && $(e.relatedTarget).attr("id", id) != "at_hover") {
            $('.ian_wrap-toggle-vis').hide();
            $('.ian_wrap-toggle-vis').css("visibility", "visible");
            $('.ian_wrap-toggle-vis').fadeIn('fast', function(){
                $(this).show();
            });
        }
    }).mouseleave(function(e){
        if ($(e.relatedTarget).attr("id", id) != "at15s_head") 
            $('.ian_wrap-toggle-vis').fadeOut('fast', hideElement);
    }).mousemove(function(e){
        $("#ian_content").stopTime('hideLayers');
        if ($('.ian_wrap-toggle-vis').css("visibility") == "hidden") 
            showElement($('.ian_wrap-toggle-vis'));
        $('.ian_wrap-toggle-vis').fadeIn("fast", function(){
            $(this).show();
        });
        $("#ian_content").everyTime(3000, 'hideLayers', mouseStop);
    });
}

function stopHandleLayers(){
    $('#ian_content').unbind('mouseenter');
    $('#ian_content').unbind('mouseleave');
    $('#ian_content').unbind('mousemove');
}

function handleAddThis(){
    $(".at_item span").each(function(){
        if ($(this).text() == "Facebook") {
            $(this).click(function(){
                facebookConnect();
                return false;
            });
        }
    });
}

function facebookConnect(){
    var thumb = $(".jcarousel-item.ian_active a div").css('backgroundImage').replace(/^url|[\(\)]/g, '');
    var url = location.href;
    var channel_path = 'xd_receiver.htm';
    FB_RequireFeatures(["Connect"], function(){
    
        FB.Facebook.init(api_key, channel_path);
        var attachment = {
            'media': [{
                'type': 'image',
                'src': thumb,
                'href': location.href
            }]
        };
        var actionLinks = [{
            "text": "I AM NIKON",
            "href": jsURL
        }];
        
        FB.Connect.get_status().waitUntilReady(function(status){
            FB.Connect.streamPublish("", attachment, actionLinks);
        });
        
    });
}

function hideElement(){
    $(this).css("visibility", "hidden").show();
}

function showElement(elem){
    elem.hide().css("visibility", "visible");
}

function ian_mycarousel_scrollCallback(carousel, instance, index, state){
    lock = false;
    if (state == "next") {
        $("#ian_currentSet").text((page + 1));
        page = page + 1;
        
    }
    if (state == "prev") {
        $("#ian_currentSet").text((page - 1));
        page = page - 1;
    }
}

function ian_myvideocarousel_scrollCallback(carousel, instance, index, state){
    lock = false;
    if (state == "next") {
        $("#ian_currentSet").text((page + 1));
        page = page + 1;
        
    }
    if (state == "prev") {
        $("#ian_currentSet").text((page - 1));
        page = page - 1;
    }
}

function initFilter(){
    loadCameras(camerasXML);
    loadCategories(categoriesXML);
    
    $("#ian_showfilter").click(function(){
        if ($("#ian_magnifyer").length > 0) {
            pageTracker._trackEvent('Photos', 'Open Filter', '');
        }
        if ($(".ian_videoControl").length > 0) {
            pageTracker._trackEvent('Videos', 'Open Filter', '');
            if (ytplayer) {
                pauseVideo();
            }
        }
        $("#ian_imagefilter").fadeIn('fast');
        stopHandleLayers();
        if ($('#ian_playpause').hasClass('ian_pause')) {
            $('#ian_playpause').click();
        }
        filterBySettings();
        return false;
    });
    $("#ian_allcameras").click(function(){
        $(this).addClass("ian_active");
        $("#ian_selectcamera").removeClass("ian_active");
        $(".ian_camera").removeClass("ian_active");
        $(".ian_camera .ian_active").remove();
        $("#ian_layerInactive").show();
        filterBySettings();
        return false;
    });
    $("#ian_selectcamera").click(function(){
        $(this).addClass("ian_active");
        $("#ian_allcameras").removeClass("ian_active");
        $("#ian_layerInactive").hide();
        $(".ian_camera:first").addClass("ian_active");
        $(".ian_camera:first").append("<div class='ian_active'></div>");
        filterBySettings();
        return false;
    });
    $(".ian_camera").mouseenter(function(){
        $(this).append("<div class='ian_hover'></div>");
    }).mouseleave(function(){
        $(this).children(".ian_hover").remove();
    });
    $(".ian_filterlanguages a").click(function(){
        $(".ian_filterlanguages a").removeClass("ian_active");
        $(this).addClass("ian_active");
        filterBySettings();
        return false;
    });
    $("#ian_filterapply").click(function(){
        handleLayers();
        var camera = mapCameras($("#ian_cameraswrapper .ian_camera.ian_active").children("p").text());
        var category = mapCategories($("#ian_categorywrapper .ian_category a:not(.ian_inactive)"));
        var language = $(".ian_filterlanguages .ian_filterchoice .ian_active").attr("title");
        $("#ian_imagefilter").fadeOut("fast");
        imgCarouselId = 'Home';
        jc.reset();
        if ($("#ian_magnifyer").length > 0) {
            pageTracker._trackEvent('Photo', 'Apply Filter', camera + ',' + category);
        }
        if ($(".ian_videoControl").length > 0) {
            pageTracker._trackEvent('Video', 'Apply Filter', camera + ',' + category + ',' + language);
        }
        $("#ian_showfilter").addClass("ian_filtered");
        $("#ian_showfilter").css("background", "none").css("background-color", "#FFEE7F");
        $("#ian_showfilter").children('a').css("color", "#333").css("background", "transparent url(/resources/ian/images/arrows.png) no-repeat scroll 0 5px");
        return false;
    });
    $("#ian_filtercancel").click(function(){
        handleLayers();
        $("#ian_imagefilter").fadeOut("fast");
        if ($("#ian_magnifyer").length > 0) {
            pageTracker._trackEvent('Photo', 'Cancel Filter', '');
        }
        if ($(".ian_videoControl").length > 0) {
            pageTracker._trackEvent('Videos', 'Cancel Filter', '');
            if (ytplayer) {
                playVideo();
            }
        }
        return false;
    });
}

function filterBySettings(){
    var camera = mapCameras($("#ian_cameraswrapper .ian_camera.ian_active").children("p").text());
    var category = mapCategories($("#ian_categorywrapper .ian_category a:not(.ian_inactive)"));
    var language = $(".ian_filterlanguages .ian_filterchoice .ian_active").attr("title");
    
    // filtering
    if (language != undefined) {
        feedVideos=feedVideos.replace(/\?.*/gi,'');
        feedVideos += "?set=" + 1 + category + "&language=" + language;
        jQuery.get(feedVideos, function(data){
            $(".ian_filterrelative span").text($(data).find("video").length);
        });
        $(".ian_filterrelative").ajaxError(function(event, request, settings){
            $(this).hide();
        });
        $(".ian_filterrelative").ajaxSuccess(function(evt, request, settings){
            $(this).show();
        });
    }
    else {
        feedImages=feedImages.replace(/\?.*/gi,'');
        feedImages += "?set=" + 1 + category + camera;
        jQuery.get(feedImages, function(data){
            $(".ian_filterrelative span").text($(data).find("photo").length);
        });
        $(".ian_filterrelative").ajaxError(function(event, request, settings){
            $(this).hide();
        });
        $(".ian_filterrelative").ajaxSuccess(function(evt, request, settings){
            $(this).show();
        });
    }
}

function addNextSet(data){
    currentSet = $(data).find('photos').attr('setId');
    $(data).find("photo").each(function(index){
        var photo = $(this);
        var thumb = photo.attr("thumbUrl");
        var image = photo.attr("imageUrl");
        addElementsToCarousel(jc, thumb, image, index + (currentSet * 11) - 11, photo);
    });
    // preloading large images after loading all thumbnails
    var imageUrls = new Array();
    $(data).find("photo").each(function(index){
        var image = $(this).attr("imageUrl");
        imageUrls.push([$(this).attr("id"), image]);
    });
    jQuery.preLoadImages(imageUrls);
    for (var i = 1; i <= 11; i++) {
        jc.add(i + (currentSet * 11), "");
    }
}

function scrollToNextSet(){
    $(".jcarousel-next").click(function(){
        if (!lock) {
            if (parseInt(currentSet) < parseInt(totalSets)) {
                var nextSet = parseInt(currentSet) + 1;
                cameraSetting = nextSet;
                jQuery.get("feeds/flickr.page?set=" + nextSet + "&category=" + categorySetting, function(data){
                    addNextSet(data);
                });
            }
            lock = true;
        }
    });
}

function addNextVideoSet(data){
    currentSet = $(data).find('videos').attr('setId');
    $(data).find("video").each(function(index){
        var video = $(this);
        var thumb = video.attr("thumbUrl");
        var url = video.attr("id");
        addVideoElementsToCarousel(jc, thumb, url, index + (currentSet * 5) - 5, video);
    });
    for (var i = 1; i <= 5; i++) {
        jc.add(i + (currentSet * 5), "");
    }
}

function scrollToNextVideoSet(){
    $(".jcarousel-next").click(function(){
        if (!lock) {
            if (parseInt(currentSet) < parseInt(totalSets)) {
                var nextSet = parseInt(currentSet) + 1;
                cameraSetting = nextSet;
                jQuery.get("feeds/youtube.page?set=" + nextSet + "&category=" + categorySetting + "&language=" + languageSetting, function(data){
                    addNextVideoSet(data);
                });
            }
            lock = true;
        }
    });
}

function mapCameras(cam){
    var result = "";
    $(cameraData).find("camera").each(function(){
        if ($(this).attr("label") == cam) 
            result = "&camera="+$(this).attr("id");
    });
    return result;
}

function mapCategories(cat){
    var result = "";
    $(categoryData).find("category").each(function(){
        var current = $(this);
        cat.each(function(){
            if (current.attr("label") == $(this).text()) 
                result += "&category=" + current.attr("id");
        });
    });
    return result.substring(0, result.length - 1);
}

function loadCameras(camXML){
    $.ajax({
        type: "GET",
        async: false,
        url: camXML,
        success: function(data){
            cameraData = data;
        }
    });
    $(cameraData).find("camera").each(function(index){
        var camera = $("<div></div>");
        $(camera).addClass("ian_camera");
        $(camera).append("<img src=" + $(this).find('productImage').text() + " />");
        $(camera).append("<p>" + $(this).attr("label") + "</p>");
        if (index >= 8) {
            camera.hide();
        }
        $("#ian_cameraswrapper").append($(camera));
        $(camera).click(function(){
            $(".ian_camera").removeClass('ian_active');
            $(".ian_camera .ian_active").remove();
            $(this).addClass('ian_active');
            $(this).append("<div class='ian_active'></div>");
            filterBySettings();
        });
    });
    var camerasTotal = $("#ian_cameraswrapper .ian_camera").length;
    var cameraSets = Math.ceil(camerasTotal / 8);
    var camerasCurrent = 1;
    var pageString = $("#ian_filterpagination span").text();
    if (camerasTotal > 8) {
        $("#ian_filterpagination").show();
        var pagination = $.sprintf($("#ian_filterpagination span").text(), camerasCurrent, cameraSets);
        $("#ian_filterpagination span").text(pagination);
    }
    $(".ian_pageleft").css("top", -999);
    $(".ian_pageright").click(function(){
        if (camerasCurrent < cameraSets) {
            camerasCurrent++;
            $("#ian_filterpagination span").text(pageString);
            var newString = $.sprintf($("#ian_filterpagination span").text(), camerasCurrent, cameraSets);
            $("#ian_filterpagination span").text(newString);
            $(".ian_pageleft").css("top", 0);
            $("#ian_cameraswrapper .ian_camera").each(function(index){
                if (index < (camerasCurrent * 8 - 8)) {
                    $(this).hide();
                }
                else 
                    if (index >= camerasCurrent * 8) {
                        $(this).hide();
                    }
                    else {
                        $(this).show();
                    }
            });
            if (camerasCurrent == cameraSets) 
                $(this).css("top", -999);
        }
    });
    $(".ian_pageleft").click(function(){
        if (camerasCurrent > 0) {
            camerasCurrent--;
            $("#ian_filterpagination span").text(pageString);
            var newString = $.sprintf($("#ian_filterpagination span").text(), camerasCurrent, cameraSets);
            $("#ian_filterpagination span").text(newString);
            $(".ian_pageright").css("top", 0);
            $("#ian_cameraswrapper .ian_camera").each(function(index){
                if (index < (camerasCurrent * 8 - 8)) {
                    $(this).hide();
                }
                else 
                    if (index >= camerasCurrent * 8) {
                        $(this).hide();
                    }
                    else {
                        $(this).show();
                    }
            });
            if (camerasCurrent == 1) 
                $(this).css("top", -999);
        }
    });
    
}

function loadCategories(catXML){
    $.ajax({
        type: "GET",
        async: false,
        url: catXML,
        success: function(data){
            categoryData = data;
        }
    });
    $(categoryData).find("category").each(function(){
        var category = $("<div></div>");
        $(category).addClass("ian_category");
        if ($("#ian_categorywrapper").hasClass("ian_videofilter")) {
            $(category).append("<img src=" + $(this).find('activeImage').text() + " width='18' />");
        }
        else {
            $(category).append("<img src=" + $(this).find('activeImage').text() + " />");
        }
        $(category).append("<a href='#'>" + $(this).attr("label") + "</a>");
        $("#ian_categorywrapper").append($(category));
        $(category).click(function(){
            if ($(this).children('a').hasClass('ian_inactive')) {
                $(this).children('img').attr('src', $(categoryData).find("category[label=" + $(this).children('a').text() + "]").find('activeImage').text());
                $(this).children('a').removeClass('ian_inactive');
                filterBySettings();
            }
            else {
                $(this).children('img').attr('src', $(categoryData).find("category[label=" + $(this).children('a').text() + "]").find('inactiveImage').text());
                $(this).children('a').addClass('ian_inactive');
                filterBySettings();
            }
            return false;
        });
    });
}


// display thumbnails from xml file for wallpaper gallery 
function gallery_initGallery(imageId){
    // create thumbnail links
    $(xmlData).find("image").each(function(){
        var img = new Image();
        img.src = $(this).find("imageUrl").text();
        $("#ian_gallery").append('<div id="' + $(this).attr("id") + '" class="ian_boximg" style="background-image: url(' + $(this).find("thumbUrl").text() + ');"><img src="/resources/ian/images/images_thumb_corners.png" alt="" /></div>');
    });
    // set width of container div to align thumbnails centered
    var num = $(xmlData).find("image").length;
    $('#ian_gallery').width(num * 66);
}

// show next image and hide previous image
function gallery_displayImage(imageId){
    $('.ian_boximg').removeClass('ian_active');
    $('.ian_boximg img').attr("src", "/resources/ian/images/images_thumb_corners.png");
    if (imageId == 'Home') {
        imageId = $(xmlData).find("image:first").attr("id");
    }
    var image = $(xmlData).find("image[id=" + imageId + "]");
    var imageUrl = image.find("imageUrl").text();
    $('.ian_img img').hide().attr('src', imageUrl).fadeIn('slow');
    
    var activeImage = new Image();
    activeImage.src = imageUrl;
    $(activeImage).css("height", "100%");
    $(activeImage).css("width", "auto");
    $(activeImage).css("margin", "auto");
    $('.ian_img').append($(activeImage));
    $(activeImage).fadeIn('slow');
    $("#" + imageId).addClass('ian_active');
    $("#" + imageId + " img").attr("src", "/resources/ian/images/images_thumb_active.png");
    
    // create dropdown list w/ download links for wallpapers
    $("#ian_dropdown ul li").remove();
    var resource = $(xmlData).find("image[id=" + imageId + "]").find("resources").children();
    resource.each(function(){
        var linkObj = $('<li><a href="' + $(this).attr("url") + '" target="_blank">' + $(this).attr("description") + '</a></li>');
        $("#ian_dropdown ul").append(linkObj);
        var info = this;
        $(linkObj).click(function(){
            pageTracker._trackEvent('About Print', 'Download', $(info).attr("url") + ',' + $(info).attr("description"));
        });
    });
}

function mouseStop(){
    if ($("#ian_imagefilter").is(":hidden") || $("#ian_imagefilter").length == 0) {
        $('.ian_wrap-toggle-vis:visible').fadeOut("fast", hideElement);
        $('#tiptip_holder:visible').fadeOut("fast");
    }
}

function addElementsToCarousel(carousel, thumb, image, index, photo){
    var info = {
        id: photo.attr("id"),
        title: photo.attr("title"),
        user: photo.attr("user"),
        displayname: photo.attr('displayname'),
        cameraType: photo.attr("cameraType"),
        country: photo.attr('country'),
        date: transformDate(photo.attr("date")),
        source: photo.attr('source'),
        promotarget: photo.attr('promotarget'),
        promoimgsource: photo.attr('promoimgsource'),
        promoname: photo.attr('promoname'),
        promotext: photo.find('promo').text()
    }
    carousel.add(index + 1, ian_mycarousel_getItemHTML(thumb, image, index + 1, info));
    
    $(".ian_thumbnailtip").tipTip({
        maxWidth: "170px",
        edgeOffset: 17,
        fadeIn: 400
    });
}

function addVideoElementsToCarousel(carousel, thumb, movieId, index, video){
    var info = {
        id: video.attr("id"),
        title: video.attr("title"),
        user: video.attr("user"),
        cameraType: $(cameraData).find("camera[id=" + video.attr("cameraType") + "]").attr("label"),
        country: video.attr('country'),
        date: transformDate(video.attr("date")),
        source: video.attr('source'),
        promotarget: video.attr('promotarget'),
        promoimgsource: video.attr('promoimgsource'),
        promoname: video.attr('promoname'),
        promotext: video.find('promo').text()
    }
    carousel.add(index + 1, ian_myvideocarousel_getItemHTML(thumb, movieId, index + 1, info));
    $(".ian_thumbnailtip").tipTip({
        maxWidth: "170px",
        edgeOffset: 17,
        fadeIn: 400
    });
}


function ian_mycarousel_itemLoadCallback(carousel, state){
    jc = carousel;
    if (state != 'init') 
        return;
    jQuery.get(feedImages, function(data){
        ian_mycarousel_itemAddCallback(carousel, carousel.first, carousel.last, data);
    });
}

function ian_myvideocarousel_itemLoadCallback(carousel, state){
    jc = carousel;
    if (state != 'init') 
        return;
    jQuery.get(feedVideos, function(data){
        ian_myvideocarousel_itemAddCallback(carousel, carousel.first, carousel.last, data);
    });
}

// intelligent preloading mechanism
(function($){
    $.preLoadImages = function(){
        var args_len = arguments[0].length;
        for (var i = args_len; i--;) {
            var cacheImage = document.createElement('img');
            cacheImage.src = arguments[0][i][1];
            cache[arguments[0][i][0]] = cacheImage;
        }
    }
})(jQuery)

// pagination image carousel
function ian_mycarousel_itemAddCallback(carousel, first, last, data){
    imgCarouselData = data;
    
    totalSets = $(imgCarouselData).find('photos').attr('pages');
    currentSet = $(imgCarouselData).find('photos').attr('setId');
    totalPhotos = $(imgCarouselData).find('photos').attr('total');
    
    $("#ian_currentSet").text(currentSet);
    $("#ian_totalSets").text(totalSets);
    
    carousel.size(totalSets * 11);
    
    $(".ian_pagination").prepend($('.jcarousel-prev'));
    $(".ian_pagination").append($('.jcarousel-next'));
    scrollToNextSet();
    
    var imageUrls = new Array();
    
    $(imgCarouselData).find("photo").each(function(index){
        var photo = $(this);
        var thumb = photo.attr("thumbUrl");
        var image = photo.attr("imageUrl");
        imageUrls.push([photo.attr("id"), image]);
        addElementsToCarousel(carousel, thumb, image, index, photo);
    });
    
    jQuery.preLoadImages(imageUrls);
    
    if (imgCarouselId == 'Home') {
        imgCarouselId = $(imgCarouselData).find("photo:first").attr("id");
    }
    
    $('.ian_img img').remove();
    var imageId = $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr("id");
    ian_mycarousel_append_image(imageId);
    
    $('.jcarousel-item').removeClass('ian_active');
    $('.jcarousel-item img').attr("src", "/resources/ian/images/images_thumb_corners.png");
    $(".jcarousel-list > li a[id=" + imgCarouselId + "]").parent().addClass('ian_active');
    $(".jcarousel-list > li a[id=" + imgCarouselId + "] img").attr("src", "/resources/ian/images/images_thumb_active.png");
    var infoCurrent = {
        id: imgCarouselId,
        title: $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr("title"),
        user: $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr("user"),
        displayname: $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr("displayname"),
        cameraType: $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr("cameraType"),
        country: $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr("country"),
        date: transformDate($(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr("date")),
        source: $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr('source'),
        promotarget: $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr('promotarget'),
        promoimgsource: $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr('promoimgsource'),
        promoname: $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").attr('promoname'),
        promotext: $(imgCarouselData).find("photo[id=" + imgCarouselId + "]").find('promo').text()
    }
    prepareInfobox(infoCurrent);
    cameraSetting = 2;
    if (totalSets > 1) 
        jQuery.get("feeds/flickr.page?set=" + 2 + "&category=" + categorySetting, function(data){
            addNextSet(data)
        });
    
}

function ian_myvideocarousel_itemAddCallback(carousel, first, last, data){
    videoCarouselData = data;
    
    totalSets = $(videoCarouselData).find('videos').attr('pages');
    currentSet = $(videoCarouselData).find('videos').attr('setId');
    totalVideos = $(videoCarouselData).find('videos').attr('total');
    
    $("#ian_currentSet").text(currentSet);
    $("#ian_totalSets").text(totalSets);
    
    carousel.size(totalSets * 5);
    
    $(".ian_pagination").prepend($('.jcarousel-prev'));
    $(".ian_pagination").append($('.jcarousel-next'));
    scrollToNextVideoSet();
    
    $(videoCarouselData).find("video").each(function(index){
        var video = $(this);
        var thumb = video.attr("thumbUrl");
        var movie = video.attr("id");
        addVideoElementsToCarousel(carousel, thumb, movie, index, video);
    });
    
    if (imgCarouselId == 'Home') {
        imgCarouselId = $(videoCarouselData).find("video:first").attr("id");
    }
    var cameraId = $(videoCarouselData).find("video:first").attr("cameraType");
    var infoFirst = {
        id: $(videoCarouselData).find("video:first").attr("id"),
        title: $(videoCarouselData).find("video:first").attr("title"),
        user: $(videoCarouselData).find("video:first").attr("user"),
        cameraType: $(cameraData).find("camera[id=" + cameraId + "]").attr("label"),
        country: $(videoCarouselData).find("video:first").attr("country"),
        date: transformDate($(videoCarouselData).find("video:first").attr("date")),
        source: $(videoCarouselData).find("video:first").attr('source'),
        promotarget: $(videoCarouselData).find("video:first").attr('promotarget'),
        promoimgsource: $(videoCarouselData).find("video:first").attr('promoimgsource'),
        promoname: $(videoCarouselData).find("video:first").attr('promoname'),
        promotext: $(videoCarouselData).find("video:first").find('promo').text()
    }
    prepareInfobox(infoFirst);
    $('.jcarousel-list > li:first').addClass('ian_active');
    $('.jcarousel-list > li:first img').attr("src", "/resources/ian/images/videos_thumb_active.png");
    videoId = $(videoCarouselData).find("video:first").attr("id");
    loadPlayer();
    
    cameraSetting = 2;
    if (totalSets > 1) 
        jQuery.get("feeds/youtube.page?set=" + 2 + "&category=" + categorySetting + "&language=" + languageSetting, function(data){
            addNextVideoSet(data);
        });
}

function ian_mycarousel_getItemHTML(thumbUrl, imageUrl, imageId, imageInfo){
    var imageLink = $('<a href="#" id="' + imageInfo.id + '"></a>');
    $(imageLink).css("position", "relative");
    $(imageLink).css("width", 60);
    $(imageLink).css("height", 60);
    $(imageLink).bind("click", function(e){
        if (!$(this).parent().hasClass('ian_active')) {
            $('.ian_img img').remove();
            ian_mycarousel_append_image(imageInfo.id);
            $('.jcarousel-item').removeClass('ian_active');
            $('.jcarousel-item img').attr("src", "/resources/ian/images/images_thumb_corners.png");
            $(this).parent().addClass('ian_active');
            $("#" + imageInfo.id + " div img").attr("src", "/resources/ian/images/images_thumb_active.png");
            $.address.value(imageInfo.id);
            prepareInfobox(imageInfo);
            pageTracker._trackEvent('Photos', 'View', imageInfo.title);
        }
        return false;
    });
    var titletext = $.sprintf($('#ian_thumbnailtip').html(), imageInfo.title, imageInfo.displayname, imageInfo.date, imageInfo.cameraType);
    var wrapper = $('<div class="ian_thumbnailtip" title="' + titletext + '"><img src="/resources/ian/images/videos_thumb_corners.png" alt="" /></div>');
    $(wrapper).css("width", 60);
    $(wrapper).css("height", 60);
    $(wrapper).css("background", "#fff url('" + thumbUrl + "') no-repeat 0 0");
    $(imageLink).append($(wrapper));
    return $(imageLink);
}

function ian_myvideocarousel_getItemHTML(thumbUrl, movie, imageId, movieInfo){
    var movieLink = $('<a href="#" id="' + movieInfo.id + '"></a>');
    $(movieLink).css("position", "relative");
    $(movieLink).bind("click", function(e){
        if (!$(this).parent().hasClass('ian_active')) {
            videoId = movie;
            loadVideo();
            $('.jcarousel-item').removeClass('ian_active');
            $('.jcarousel-item img').attr("src", "/resources/ian/images/videos_thumb_corners.png");
            $(this).parent().addClass('ian_active');
            $("#" + movieInfo.id + " div img").attr("src", "/resources/ian/images/videos_thumb_active.png");
            $.address.value(movieInfo.id);
            prepareInfobox(movieInfo);
            pageTracker._trackEvent('Videos', 'View', movieInfo.title);
        }
        return false;
    });
    
    var titletext = $.sprintf($('#ian_thumbnailtip').html(), movieInfo.title, movieInfo.user, movieInfo.date, movieInfo.cameraType);
    var wrapper = $('<div class="ian_thumbnailtip" title="' + titletext + '"><img src="/resources/ian/images/videos_thumb_corners.png" alt="" /></div>');
    $(wrapper).css("width", 110);
    $(wrapper).css("height", 60);
    $(wrapper).css("background", "#fff url('" + thumbUrl + "') no-repeat 0 0");
    $(movieLink).append($(wrapper));
    return $(movieLink);
}

function ian_mycarousel_append_image(imageId){
    var img = new Image();
    img.src = cache[imageId].src;
    if (($.browser.mozilla && $.browser.version.substr(0, 3) == "1.9") || ($.browser.safari)) {
        $(img).load(function(){
            $(img).css('display', 'none');
            $(img).hide().css("height", "100%").css("width", "auto").css("margin", "auto");
            $('.ian_img').removeClass('ian_loading').append(img);
            $(img).fadeIn('slow', showLayers).attr('id', 'ian_activeImage');
        });
    }
    else {
        $(img).css('display', 'none');
        $(img).hide().css("height", "100%").css("width", "auto").css("margin", "auto");
        $('.ian_img').removeClass('ian_loading').append(img);
        $(img).fadeIn('slow', showLayers).attr('id', 'ian_activeImage');
    }
}

function slideshow(){
    $('#ian_playpause').click();
}

function showLayers(){
    if (initial) {
        $('.ian_wrap-toggle-vis').css("visibility", "visible").hide().fadeIn();
        setTimeout(slideshow, 1);
        setTimeout(handleLayers, 1500);
        initial = false;
    }
}

// generate infobox from xml / substitute placeholders in html
function prepareInfobox(imageInfo){
    var sourcename = imageInfo.source.toLowerCase();
    var fromhref;
    var fromname;
    var foundonhref;
    switch (sourcename) {
        case 'youtube':
            fromhref = 'http://www.youtube.com/user/' + imageInfo.user;
            fromname = imageInfo.user;
            foundonhref = 'http://www.youtube.com/watch?v=' + imageInfo.id;
            break;
        /*      case 'facebook':
         fromhref = 'http://www.facebook.com/' + imageInfo.user + '/';
         fromname = imageInfo.user;
         foundonhref = 'http://www.facebook.com/';
         break;
         */
        default:
            fromhref = 'http://www.flickr.com/photos/' + imageInfo.user + '/';
            fromname = imageInfo.displayname;
            foundonhref = fromhref + imageInfo.id + '/';
    }
    var metadata = $.sprintf($('.ian_metadata span.ian_sample').html(), fromname, fromhref, fromname, imageInfo.date, imageInfo.country, imageInfo.cameraType, imageInfo.source, foundonhref);
    $('.ian_metadata p').html(metadata);
    $('.ian_metadata h2').text(imageInfo.title);
    $('#ian_promotarget').attr('href', imageInfo.promotarget);
    $('#ian_promoimgsource').attr('src', imageInfo.promoimgsource);
    $('.ian_promoname').text(imageInfo.promoname);
    $('.ian_promotext').html(imageInfo.promotext);
    
}

function fullWindowMode(){
    if (!$("#ian_magnifyer").hasClass("ian_active")) {
        $("#ian_magnifyer").toggleClass("ian_inactive").toggleClass("ian_active").css("left", ($(window).width() - $("#ian_magnifyer").width()) / 2).css("top", ($(window).height() - $("#ian_magnifyer").height()) / 2);
        $(".ian_img").width($(window).width()).height($(window).height());
        $("#ian_picturebox").css("left", ($(window).width() - $("#ian_picturebox").width()) / 2).css("bottom", 70);
        arrangeLayers();
        mouseStop();
    }
    else {
        $("#ian_magnifyer").toggleClass("ian_active").toggleClass("ian_inactive");
        $(".ian_img").css("width", 960).css("height", 540).css("margin", 0);
        $("#ian_picturebox").css("left", 40).css("bottom", 10);
        resetLayers();
    }
}

function fullVideoWindowMode(){
    if (ytplayer) {
        if (!$("#ian_videoFull").hasClass("ian_active")) {
            $("#ian_videoFull").addClass("ian_active");
            $("#ian_playercontrols").css("left", ($(window).width() - $("#ian_playercontrols").width()) / 2).css("bottom", 70);
            arrangeLayers();
        }
        else {
            $("#ian_videoFull").removeClass("ian_active");
            $("#ian_playercontrols").css("left", 40).css("bottom", 10);
            resetLayers();
        }
    }
}

function arrangeLayers(){
    window.scrollTo(0, 0);
    $("#ian_content").width($(window).width()).height($(window).height()).css("margin-left", -$("#ian_content").offset().left).css("margin-top", -$("#ian_content").offset().top);
    $("#ian_wrap").width($(window).width()).height($(window).height());
    $("#ian_addthis").hide();
    $(".jcarousel-skin-ie7").css("left", ($(window).width() - $(".jcarousel-skin-ie7").width()) / 2).css("bottom", 60);
    $("#ian_imagefilter").css("left", $(".jcarousel-skin-ie7").css("left")).css("bottom", 60);
    $("#ian_showfilter").css("left", ($(window).width() - $(".jcarousel-skin-ie7").width()) / 2).css("margin-left", 635).css("bottom", 159);
    var pageWidth = $(document.body).width();
    var pageHeight = $(document.body).height();
    $("body").prepend("<div id='ian_disableLayer' style='position:absolute; top:0; left:0; width:" + pageWidth + "px; height:" + pageHeight + "px; background-color:#333333;'></div>");
    pageTracker._trackEvent('General', 'Open full window mode', '');
}

function resetLayers(){
    $("#ian_content").css("width", 960).css("height", 540).css("margin", 0);
    $("#ian_wrap").css("width", 960).css("height", 480).css("margin", 0);
    $("#ian_addthis").show();
    $(".jcarousel-skin-ie7").css("left", 40).css("bottom", 0);
    $("#ian_imagefilter").css("left", 40).css("bottom", 0);
    $("#ian_showfilter").css("left", 675).css("margin-left", 0).css("bottom", 99);
    $("#ian_disableLayer").remove();
    pageTracker._trackEvent('General', 'Close full window mode', '');
}

function updateHTML(elmId, value){
    document.getElementById(elmId).innerHTML = value;
}

function onPlayerError(errorCode){
    alert("An error occured of type:" + errorCode);
}

function onPlayerStateChange(newState){
    if (newState == 0) {
        $("#ian_videoPlayPause").toggleClass("ian_videoPlay").toggleClass("ian_videoPause");
        pageTracker._trackEvent('Videos', 'Stopped at end', videoId);
        if ($("#ian_playercontrols").length > 0) {
            var ian_to_overview_href = $('.ian_to_overview').attr('href');
            window.location.href = ian_to_overview_href;
        }
    }
}

function updatePlayerInfo(){
    if (ytplayer && ytplayer.getDuration) {
        updateTimebar();
        updateHTML("ian_videoDuration", formatTime(ytplayer.getDuration()));
        updateHTML("ian_videoCurrentTime", formatTime(ytplayer.getCurrentTime()));
    }
}

function formatTime(seconds){
    if (seconds >= 0) {
        if (Math.round(seconds % 60) < 10) {
            return Math.floor(seconds / 60) + ":0" + Math.round(seconds % 60);
        }
        else {
            return Math.floor(seconds / 60) + ":" + Math.round(seconds % 60);
        }
    }
    else {
        return 0 + ":0" + 0;
    }
    return;
}

function updateTimebar(){
    var all = ytplayer.getDuration();
    var part = ytplayer.getCurrentTime();
    var percent = getPercent(all, part);
    var timebarWidth = $("#ian_timebar").width();
    $("#ian_status").css("width", percent * (timebarWidth / 100) + "px");
}

function getPercent(all, part){
    return (all > 0) ? (100 / all) * part : 0;
}


function setVideoVolume(){
    var volume = parseInt(document.getElementById("volumeSetting").value);
    if (isNaN(volume) || volume < 0 || volume > 100) {
        alert("Please enter a valid volume between 0 and 100.");
    }
    else 
        if (ytplayer) {
            ytplayer.setVolume(volume);
        }
}

function playVideo(){
    if (ytplayer) {
        ytplayer.playVideo();
    }
}

function pauseVideo(){
    if (ytplayer) {
        ytplayer.pauseVideo();
    }
}

function muteVideo(){
    if (ytplayer) {
        ytplayer.mute();
    }
}

function unMuteVideo(){
    if (ytplayer) {
        ytplayer.unMute();
    }
}

function onYouTubePlayerReady(playerId){
    ytplayer = document.getElementById("ian_flash");
    setInterval(updatePlayerInfo, 250);
    updatePlayerInfo();
    showLayers();
    ytplayer.cueVideoById(videoId);
    ytplayer.setPlaybackQuality("large");
    ytplayer.addEventListener("onError", "onPlayerError");
    ytplayer.addEventListener("onStateChange", "onPlayerStateChange");
    $("#ian_videoFull").click(function(event){
        event.preventDefault();
        fullVideoWindowMode();
    });
    $("#ian_videoPlayPause").click(function(){
        if ($(this).hasClass("ian_videoPlay")) 
            playVideo();
        if ($(this).hasClass("ian_videoPause")) 
            pauseVideo();
        $(this).toggleClass("ian_videoPlay").toggleClass("ian_videoPause");
    });
    $("#ian_videoVolume").click(function(e){
        var offset = $(this).offset();
        var y = e.pageY - (offset.top);
        $("#ian_videoVolumeAmount").css("height", -y + 46);
        if (ytplayer) {
            ytplayer.setVolume(Math.floor((-y + 43) / 0.43));
        }
    });
    
    $("#ian_timebar").click(function(e){
        var offset = $(this).offset();
        var x = e.pageX - (offset.left);
        var relativePos = x / $(this).width();
        if (ytplayer) {
            ytplayer.seekTo(relativePos * ytplayer.getDuration(), true);
        }
    });
}

function loadPlayer(){
    var params = {
        scale: "showAll",
        allowScriptAccess: "always",
        wmode: "opaque"
    };
    var atts = {
        id: "ian_flash"
    };
    swfobject.embedSWF("http://www.youtube.com/apiplayer?" +
    "&enablejsapi=1&playerapiid=player1", "ian_flash", "100%", "100%", "8", null, null, params, atts);
}

// loads the selected video into the player
function loadVideo(){
    if (ytplayer) {
        ytplayer.loadVideoById(videoId);
        pageTracker._trackEvent('Videos', 'Play', videoId);
    }
}

// transform xml's datetime format (yyyy-mm-dd) into string (dd/mm/yyyy)
function transformDate(datetime){
    var date = new Date();
    if (datetime) {
        var arrDate = datetime.split('-');
        date.setYear(arrDate[0]);
        date.setMonth(arrDate[1]);
        date.setDate(arrDate[2]);
    }
    date = $.format.date(date, ian_date_format);
    return date;
}

// create rounded corners in browsers using css3 (fallback for other browsers)
function createCorners(){
    if (($.browser.mozilla && $.browser.version.substr(0, 3) == "1.9") || ($.browser.safari)) {
        $('.ian_img').corners("5px");
        $('#ian_content').corners("5px");
        $('.ian_teaser').corners("5px");
        $('.ian_dialogtitle').corners("3px transparent");
        $('.ian_dialoglink').corners("3px transparent");
        $('.ian_report_thumb').corners("3px transparent");
        $('.ian_jcarousel-clip').corners("5px");
        $('#ian_tabs .ian_first').corners("top-left bottom-left 5px");
        $('#ian_tabs .ian_last').corners("top-right bottom-right 5px");
        $('#ian_meta').corners("5px transparent");
        $('#ian_meta_download').corners("5px transparent");
        $('.ian_to_overview').corners("3px transparent");
        $('.ian_download').corners("3px transparent");
        $('#ian_dropdown').corners("3px transparent");
        $('.ian_dropdown ul').corners("3px transparent");
        $('#ian_welcome').corners("5px transparent");
        $('#ian_picturebox').corners("5px transparent");
        $('#ian_mycarousel').corners("5px transparent");
        $('.jcarousel-skin-ie7').corners("5px transparent");
        $('#ian_playercontrols').corners("5px");
        $('#ian_videoVolume').corners("3px");
        $('#ian_videoVolumeSlider').corners("2px");
        $('#at15s').corners("5px transparent");
        $('#ian_showfilter').corners("top 3px transparent");
        $('#ian_imagefilter').corners("4px");
        $('.ian_filterchoice a').corners("3px");
        $('.ian_camera').corners("4px");
        $('#ian_filterapply').corners("5px");
        $('.ian_splashcountry').corners("5px");
    }
    else {
        roundcorners($("#ian_tabs"));
        roundcorners($("#ian_content"));
        roundcorners($(".ian_teaser"));
        roundcorners($(".ian_thumbnailtip"));
    }
}

function topleft(){
    var topleft = $(document.createElement('div'));
    $(topleft).width(4).height(4).css("background", "transparent url('/resources/ian/images/cornerTL.png') no-repeat 0 0").css("position", "absolute").css("left", 0).css("top", 0);
    return $(topleft);
}

function topright(){
    var topright = $(document.createElement('div'));
    $(topright).width(4).height(4).css("background", "transparent url('/resources/ian/images/cornerTR.png') no-repeat 0 0").css("position", "absolute").css("right", 0).css("top", 0);
    return $(topright);
}

function bottomleft(){
    var bottomleft = $(document.createElement('div'));
    $(bottomleft).width(4).height(4).css("background", "transparent url('/resources/ian/images/cornerBL.png') no-repeat 0 0").css("position", "absolute").css("left", 0).css("bottom", 0);
    return $(bottomleft);
}

function bottomright(){
    var bottomright = $(document.createElement('div'));
    $(bottomright).width(4).height(4).css("background", "transparent url('/resources/ian/images/cornerBR.png') no-repeat 0 0").css("position", "absolute").css("right", 0).css("bottom", 0);
    return $(bottomright);
}

function roundcorners(elem, pos){
    if (pos == undefined) {
        $(elem).append(topleft());
        $(elem).append(topright());
        $(elem).append(bottomleft());
        $(elem).append(bottomright());
    }
    else {
        var positions = pos.split(" ");
        if ($.inArray("tl", positions) != -1) 
            $(elem).append(topleft());
        if ($.inArray("tr", positions) != -1) 
            $(elem).append(topright());
        if ($.inArray("bl", positions) != -1) 
            $(elem).append(bottomleft());
        if ($.inArray("br", positions) != -1) 
            $(elem).append(bottomright());
    }
    
}

