﻿// Description      jcarousel control script,  get data via WCF Service
//
// Source:  http://sorgalla.com/projects/jcarousel/
//
// changes:
// #T06765/29.08.2011/bap Performance, Daten bei scrollen hinzufügen (+ 2 sec)
// #T06765/12.05.2011/wma Performance improvement
// #T06765/24.03.2011/bap inital release

var master_data;
//var data;
var c_top;
var s_top;
var c_bottom;
var s_bottom;

// jcarousel configuration for top galery
jQuery(document).ready(function () {
    jQuery('#objcarouseltop').jcarousel({
        scroll: 2, wrap: 'last', //auto: 2,
        initCallback: objcarousel_initCallback,
        itemVisibleOutCallback: { onBeforeAnimation: objcarousel_itemVisibleOutCallback }
    });
});

// jcarousel configuration for bottom galery
jQuery(document).ready(function () {
    jQuery('#objcarouselbottom').jcarousel({
        scroll: 2, wrap: 'last',
        initCallback: objcarousel_initCallback,
        itemVisibleOutCallback: { onBeforeAnimation: objcarousel_itemVisibleOutCallback }
    });
});

function objcarousel_initCallback(carousel, state) {
    if (carousel.container.context.id == 'objcarouseltop')
    {
        c_top = carousel;
        s_top = state;
        if (s_top == 'init') InitCallService();
    }
    else
    {
        c_bottom = carousel;
        s_bottom = state;
        if (s_bottom == 'init') InitCallService();
    }
}

function InitCallService() {
    if (!master_data)
    {
        var service = new karriere.karriereService();
        service.GetImageData(onSuccess, onFailure, null);
    }
    else
    {
        c_top.size(master_data.length);
        if (s_top == 'init') LoadData(c_top, 0, 8)
        c_bottom.size(master_data.length);
        if (s_bottom == 'init') LoadData(c_bottom, 0, 8);
    }
}

function onSuccess(result) {
    master_data = result;

    c_top.size(master_data.length);
    c_bottom.size(master_data.length);

    if (s_top == 'init') LoadData(c_top, 0, 8);
    if (s_bottom == 'init') LoadData(c_bottom, 0, 8);
}

function LoadData(carousel, start, end) {
    var e = end;
    if (e > master_data.length)
        e = master_data.length - 1;

    for (i = start; i < e; i++)
    {
        carousel.add(i + 1, objcarousel_getItemHTML(master_data[i].Url, master_data[i].Path, master_data[i].Name));
    }
}

function objcarousel_itemVisibleOutCallback(carousel, item, index, state) {
    if (state == 'prev' && carousel.first < 0)
        return;
    if (index != carousel.first - carousel.options.scroll)
        return;

    var c = carousel;
    var i = item;
    var idx = index;
    var s = state;
    LoadData(carousel, c.last, c.last + 8);
}

// Item html creation helper.
function objcarousel_getItemHTML(url, path, name) {
    return '<a class="jcarousel-link" href="' + url + '" title="' + name + '"><span class="center"><img class="jcarousel-img" src="' + path + '" alt="' + name + '" /></span></a>';
};

function onFailure(error) {
    var obj = error.get_message();
}

//function CallService(carousel) {
//    var service = new karriere.karriereService();
//    if (carousel.container.context.id == 'objcarouseltop')
//    {
//        service.GetImageData(onSuccessTop, onFailure, null);
//    }
//    else
//    {
//        service.GetImageData(onSuccessBottom, onFailure, null);
//    }
//}

//function objcarouseltop_itemLoadCallback(carousel, state) {
//   //c_top = carousel;
//    s_top = state;
//    if (s_top != 'init')
//        return;
//   // call the wcf service
//   //debugger;
//   if (s_top == 'init') CallService(carousel);

//   // Pause autoscrolling if the user moves with the cursor over the clip.
//   carousel.clip.hover(function () {
//      carousel.stopAuto();
//   }, function () {
//      carousel.startAuto();
//   });
//};


//function objcarouselbottom_itemLoadCallback(carousel, state) {
//   c_bottom = carousel;
//   s_bottom = state;
//   // call the wcf service
//   if (s_bottom == 'init') CallService(carousel);
//};

//function onSuccessTop(result) {
//    var obj = result;
//    //debugger;
//   if (s_top != 'init') return;
//   objcarousel_itemAddCallback(c_top, c_top.first, c_top.last, obj);
//}

//function onSuccessBottom(result) {
//   var obj = result;
//   if (s_bottom != 'init') return;
//   objcarousel_itemAddCallback(c_bottom, c_bottom.first, c_bottom.last, obj);
//}

//function objcarousel_itemAddCallback(carousel, first, last, data) {
//   // Simply add all items at once and set the size accordingly.
//   var items = data;
//   //for (i = 0; i < items.length; i++) {
//   for (i = 0; i < 10; i++)
//   {
//      carousel.add(i + 1, objcarousel_getItemHTML(items[i].Url, items[i].Path, items[i].Name));
//   }
//   carousel.size(items.length);
//}


