﻿var ctx, siteUrl, listName, listItemsCollection, list, timerInterval, itemEnumerator, viewEnumerator, listView, viewCollection,viewXml;

function SetInitSettings(url, name, timer,view) {
    siteUrl = url;
    listName = name;
    listView = view;
    timerInterval = parseInt(timer);
}


function getWebProperties() {

    ctx = new SP.ClientContext(siteUrl);
    list = ctx.get_web().get_lists().getByTitle(listName);
    viewCollection = list.get_views();
    ctx.load(list);
    ctx.load(viewCollection);
    ctx.executeQueryAsync(Function.createDelegate(this, this.onLoadSuccess),
            Function.createDelegate(this, this.onFail));
}
function onLoadSuccess(sender, args) {
    viewEnumerator = viewCollection.getEnumerator();
    while (viewEnumerator.moveNext()) {
        var view = viewEnumerator.get_current();
        if (listView == view.get_title()) {
            viewXml = view.get_viewQuery();
        }
    }

    var camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml("<View><Query>" + viewXml + "</Query></View>");
    listItemsCollection = list.getItems(camlQuery);
    ctx.load(listItemsCollection, 'Include(ContentType,File)');
    ctx.executeQueryAsync(Function.createDelegate(this, this.onListSuccess),
            Function.createDelegate(this, this.onFail));

}
function onFail(sender, args) {
    //alert('failed to get list. Error:' + args.get_message());
}

function onListSuccess(sender, args) {
    itemEnumerator = listItemsCollection.getEnumerator();
    itemEnumerator.moveNext();
    setInterval(SetImage, (timerInterval * 1000));
}

function SetImage() {

    if (!itemEnumerator.moveNext()) {
        itemEnumerator.reset();
        itemEnumerator.moveNext();
    }

    var listItem = itemEnumerator.get_current();
    var contentType = listItem.get_contentType();
    var file = listItem.get_file();

    // if animation is wanted remove comment from this block
    /*$("#ShownImage").animate({ opacity: 0.0 }, 900, function () { $('#ShownImage').attr("src", file.get_serverRelativeUrl()) });
    $("#ShownImage").animate({ opacity: 1 }, 900); */
    
    $('#ShownImage').effect('transfer', { to: "#ShownImage", className: "ui-effects-transfer" }, 900, function () { $('#ShownImage').attr("src", file.get_serverRelativeUrl()); $('#ShownImage').attr("title",  file.get_title())  });    
}
