////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
var lastScroll = 0;
var scrollInterval = 100;
var scrollFrame = 15; // time to register multiple keys, fe up+left
var scrollTimeout = false;
var scrollTimes = new Array();
scrollTimes["up"] = 0;
scrollTimes["down"] = 0;
scrollTimes["left"] = 0;
scrollTimes["right"] = 0;

function handleKeyDown(e) {
    var currTime = new Date().getTime();
    var keycode = e.keyCode;
    var doTimeout = true;
    var param = {};// {'easing':'elasout'};
    switch(keycode) {
        case 38: // up
            doPageScroll("up");
            break;
        case 40: // down       
            doPageScroll("down");
            break;             
        case 37: // left       
            doPageScroll("left");
            break;             
        case 39: // right
            doPageScroll("right");
            break;
        default: 
            doTimeout = false;
    }
    return !doTimeout;
}
////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
function doPageScroll(direction){
    // first we have to find the nearest object (rectangle collusion)
    var bl = $(document).scrollLeft();
    var bt = $(document).scrollTop();
    var current_item = null;
    var current_item_dist = null;
    var current_item_index = 0;
    $('.grid-item').each(function(e){
       if(current_item == null){
           current_item = this;
           var deltaX = bl - $(this).offset().left;
           var deltaY = bt - $(this).offset().top;           
           current_item_dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
       }else{
           var deltaX = $(this).offset().left - bl;
           var deltaY = $(this).offset().top - bt;
           var dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
           if(dist < current_item_dist){
               current_item = this;
               current_item_dist = dist;
               current_item_index = e;
           }
       }
    });
    
    if(direction == "up"){        
        var above_item_dist = null;
        var above_item_index = current_item_index;
        var bl = $(current_item).offset().left;
        var bt = $(current_item).offset().top - 1000;    
        $('.grid-item').each(function(e){
           var deltaX = $(this).offset().left - bl;
           var deltaY = $(this).offset().top - bt;
           var dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
           if(above_item_dist == null || dist < above_item_dist){
               above_item_dist = dist;
               above_item_index = e;
           }
        });
        if(current_item_index != above_item_index) {
            scrollToGrid('.grid-item:eq('+above_item_index+')', 400);
        }
    }
    else if(direction == "down"){
        var below_item_dist = null;
        var below_item_index = current_item_index;
        var bl = $(current_item).offset().left;
        var bt = $(current_item).offset().top + 1000;    
        $('.grid-item').each(function(e){
           var deltaX = $(this).offset().left - bl;
           var deltaY = $(this).offset().top - bt;
           var dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
           if(below_item_dist == null || dist < below_item_dist){
               below_item_dist = dist;
               below_item_index = e;
           }
        });
        if(current_item_index != below_item_index) {
            scrollToGrid('.grid-item:eq('+below_item_index+')', 400);
        }
    }
    else if(direction == "left"){
        var left_item_dist = null;    
        var left_item_index = current_item_index;
        var bl = $(current_item).offset().left - 1250;
        var bt = $(current_item).offset().top;     
        //console.log("current_item_dist: " + current_item_dist + ", current_item_index: " + current_item_index); 
        $('.grid-item').each(function(e){
           var index = e;
           var deltaX = $(this).offset().left - bl;
           var deltaY = $(this).offset().top - bt;
           var dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
           //console.log("index: " + index + ", bl: " + bl + ", bt: "+ bt + ", deltaX: "+ deltaX + ", deltaY: "+ deltaY + ", dist: "+ dist);
           if(left_item_dist == null || dist < left_item_dist){
               left_item_dist = dist;
               left_item_index = index;
           }
        });
        //console.log("currIndex: " + current_item_index + ", left_item_index: "+ left_item_index);
        if(current_item_index != left_item_index) {
            scrollToGrid('.grid-item:eq('+left_item_index+')', 400);
        }
        // var ind = current_item_index - 1;
        // if(ind < 0) ind = 0;
        // scrollToGrid('.grid-item:eq('+ind+')', 500); 
    }
    else if(direction == "right") {
        var right_item_dist = null;    
        var right_item_index = current_item_index;
        var bl = $(current_item).offset().left + 1250;
        var bt = $(current_item).offset().top;     
        $('.grid-item').each(function(e){
           var index = e;
           var deltaX = $(this).offset().left - bl;
           var deltaY = $(this).offset().top - bt;
           var dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
           if(right_item_dist == null || dist < right_item_dist){
               right_item_dist = dist;
               right_item_index = index;
           }
        });
        if(current_item_index != right_item_index) {
            scrollToGrid('.grid-item:eq('+right_item_index+')', 400);
        }
        // var ind = current_item_index + 1;
        // scrollToGrid('.grid-item:eq('+ind+')', 500);
    }
}
////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
function startvideo(id, file) {
    $(id).flowplayer(
        getBaseURL() + 'flowplayer-3.1.5.swf', file);
}
////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
function stopAllPlayers() {
    $f("*").each(function() {
        this.stop();
    });   
}
////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
function closeAllPlayers() {
    $f("*").each(function() {
        this.close();
    });
}
////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
function scrollToGridDesktop(target, dur) {
    // stop all playing videos :)
    stopAllPlayers();
    
    if($(target).hasClass('grid-item') == true) {
        var newx = $(target).offset().left;
        var newy = $(target).offset().top;
    } else {
        var newx = $(target).parent('.grid-item').offset().left;
        var newy = $(target).parent('.grid-item').offset().top; 
    }
    //offset based on screen width
    var sw = $(window).width();
    var sh = $(window).height();
    var gridwidth = 1024;     // assume these dimensions
    var gridheight = 630;
    if (sw > gridwidth) {
        newx -= ((sw - gridwidth) / 2);
    }
    if (sh > gridheight) {
        newy -= ((sh - gridheight) / 2);
    }
    var tarpos = {'left' : newx, 'top' : newy };
    if(movementEnabled == false) {
        //$.scrollLeft(newx).scrollRight(newy);
        $.scrollTo(tarpos, 0, {'queue': false});
    }else{
        $.scrollTo(tarpos, dur, {'queue': true, 'axis': 'yx'});
    }
    return false;
}
function scrollToGrid(target, dur) {
    scrollToGridDesktop(target, dur);
}
////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
$(document).ready(function() {
    // add keyboard navigation
    $(this).keydown(handleKeyDown);
    
    // load thumb images all at once instead of lazy load
    var bgurl = "";
    $(".smallthumb").each(function(index, Element){
        bgurl = $(this).attr("bgurl");
        if(bgurl != undefined) {
            $(this).css("background-image", "url(\"" + bgurl + "\")");
        }
    });
});
////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\