// JavaScript Document
/* --- GLOBAL VARS & DEFAULTS --- */
var img_preview_conf = new Array();
//parametr okreslający czy za polową ma się odbyć wyświetlanie
    img_preview_conf['halfFlip'] = true;
    
    img_preview_conf['horizontalMargin'] = 5;
    img_preview_conf['flippedHorizontalMargin'] = -4;
    img_preview_conf['LoaderVerticalOffset'] = 0;
    img_preview_conf['VerticalOffset'] = 42;
//predkość odtwarzania
    img_preview_conf['AnimationDelay'] = 0.8; //acceleration

    img_preview_conf['PointerSrcLeft'] = SZABLON_URL + "/images/icons/img-arrow-left.gif";
    img_preview_conf['PointerSrcRight'] = SZABLON_URL + "/images/icons/img-arrow-right.gif";
    img_preview_conf['PointerWidth'] = 5;
    img_preview_conf['PointerHeight'] = 9;
    img_preview_conf['PointerHorizontalOffset'] = 1;
    img_preview_conf['PointerVerticalOffset'] = 0;


var img_preview;
var img_preview_contents;
var img_preview_arrow;
var img_preview_loader;

var img_previewBodyScrollTop;
var img_previewBrowserHeight;
var img_previewOrientation;
var img_previewFixedX;
var img_preview_timeout_id;
var img_previewBrowserBorderOffset;
var img_preview_el;
var img_preview_el_ref;

var img_preview_id;
var img_preview_delay_timeout_id;
var img_preview_flag            = true;
var img_previewIsImageLoaded    = false;

var img_preview_buffer          = new Object();

var img_preview_el_dim    = new Array();
var img_preview_dim       = new Array();
var img_preview_contents_dim  = new Array();


/*--- FUNCTIONS --- */

function img_preview_show_no_ajax( element, picture, title, desc ){
    if( img_preview_delay_timeout_id > 0 )
        clearTimeout(img_preview_delay_timeout_id);

    img_preview_buffer[0] = {
      'picture' : picture,
      'title' : title,
      'desc' : desc
    };
    
    img_preview_show( element, 0 );
}

function img_preview_show( element, id ){
    if( img_preview_delay_timeout_id )
      clearTimeout(img_preview_delay_timeout_id);

    img_preview_el = element;
    img_preview_id = id;

    // browser border offset
    if( navigator.appVersion.search("MSIE 6") != -1 || navigator.appVersion.search("MSIE 7") != -1 )
        img_previewBrowserBorderOffset = 0;
    else
        img_previewBrowserBorderOffset = 2;

    // flags and settings
    img_preview_flag = true;

    img_previewIsImageLoaded = false;

    // main elements
    if( !img_preview ){
        img_preview = document.getElementById('img_preview');
        img_preview_arrow = document.getElementById('img_preview_arrow');
        
        img_preview_loader = img_preview.getElementsByTagName('IMG').item(0);
        img_preview_contents = img_preview.getElementsByTagName('DIV').item(0);
    }

    // set  default position
    img_preview.style.top  = '0px';
    img_preview.style.left = '0px';
    //zeby była szerokosc i wysokość elementu
    img_preview.style.display = 'block'; 

    // body scroll
    img_previewBodyScrollTop = document.body.scrollTop;
    if ( img_previewBodyScrollTop == 0 ){
        if (window.pageYOffset)
            img_previewBodyScrollTop = window.pageYOffset;
        else if( window.scrollY )
            img_previewBodyScrollTop = window.scrollY;
        else
            img_previewBodyScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
    }

    // browser window height
    if( window.innerHeight )
        img_previewBrowserHeight = window.innerHeight;
    else
        img_previewBrowserHeight = document.body.clientHeight;

    
    get_dimensions( element, img_preview_el_dim );
    get_dimensions( img_preview, img_preview_dim );

    // convert base y dimension if no ajax
    //tego nie rozumiem
    //if( id == 0 ){
    //    img_preview_el_dim['y'] = img_preview_el_dim['y'] + 115;
    //}

    //alert(img_preview_el_dim['x'] + ", " + img_preview.offsetTop + ", " +img_preview_el_dim['width'] + ", " +img_preview_el_dim['height']);

    // calculate orientation,
    if(img_preview_conf['halfFlip'] == true){
        //jesli środek lezy za polową to wyswietl element z prawj strony
        if ( (img_preview_el_dim['x'] + (img_preview_el_dim['width'] / 2) ) > (document.body.offsetWidth / 2) )
            img_previewOrientation = 0;
        else
            img_previewOrientation = 1;
    }else{
        if ( (img_preview_el_dim['x'] + img_preview_el_dim['width'] + img_preview.offsetWidth + img_preview_conf['horizontalMargin']) > document.body.offsetWidth )
            img_previewOrientation = 0;
        else
            img_previewOrientation = 1;
    }

    // calculate dimensions, position and show  loader

    // calculate x
    if(img_previewOrientation > 0 ){
        img_preview_dim['x'] = img_preview_el_dim['x'] + img_preview_el_dim['width'] + img_preview_conf['horizontalMargin'];
    }else{
        img_preview_dim['x'] = img_preview_el_dim['x'] - img_preview_dim['width'] - img_preview_conf['horizontalMargin'] + img_preview_conf['flippedHorizontalMargin'];
    }

    // calculate y
    if( img_preview_el_dim['y'] + img_preview_conf['LoaderVerticalOffset'] + img_preview_dim['height'] > img_previewBodyScrollTop + img_previewBrowserHeight)
        img_preview_dim['y'] = img_previewBodyScrollTop + img_previewBrowserHeight - img_preview_dim['height'];
    else
        img_preview_dim['y'] = img_preview_el_dim['y'] + img_preview_conf['LoaderVerticalOffset'];

    if( img_preview_dim['y'] < img_previewBodyScrollTop )
        img_preview_dim['y'] = img_previewBodyScrollTop;

    // move  pointer
    if( img_previewOrientation > 0){
        img_preview_arrow.src = img_preview_conf['PointerSrcLeft'];
        img_preview_arrow.style.left = (img_preview_dim['x'] - img_preview_conf['PointerWidth'] + img_preview_conf['PointerHorizontalOffset']) + "px";
    }else{
        img_preview_arrow.src = img_preview_conf['PointerSrcRight'];
        img_preview_arrow.style.left = (img_preview_dim['x'] + img_preview_dim['width'] - img_preview_conf['PointerHorizontalOffset']) + "px";
    }

    if( img_preview_el_dim['y'] +
            img_preview_conf['PointerHeight'] +
                img_preview_conf['PointerVerticalOffset'] > img_previewBodyScrollTop + img_previewBrowserHeight){
                
     img_preview_arrow.style.top = (img_previewBodyScrollTop + img_previewBrowserHeight - img_preview_conf['PointerHeight']) + "px";
     
    }else if ( img_preview_el_dim['y'] + img_preview_conf['PointerVerticalOffset'] < img_previewBodyScrollTop){
        img_preview_arrow.style.top = img_previewBodyScrollTop + "px";
    }else{
        img_preview_arrow.style.top = (img_preview_el_dim['y'] + (img_preview_el_dim['height'] / 2) - (img_preview_conf['PointerHeight'] / 2) + img_preview_conf['PointerVerticalOffset']) + "px";
    }

    // move 
    img_preview.style.left = img_preview_dim['x'] + 'px';
    img_preview.style.top = img_preview_dim['y'] + 'px';

    // show  loader and pointer
    img_preview.style.visibility       = 'visible';
    img_preview_arrow.style.visibility = 'visible';
    img_preview_arrow.style.display = 'block';

    // get content (AJAX)
    img_preview_el_ref = element;
    img_preview_delay_timeout_id = setTimeout("img_preview_get_content("+id+")", 400);

}

function img_preview_show_continue(){
    if( img_preview_flag == false ) {
        img_preview_hide();
    }

    get_dimensions( img_preview_contents, img_preview_contents_dim );

    //nie wiem po co to ale to chyba jakby cos poszło nie tak
    if ( img_preview_contents_dim['height'] < 52 ){
        img_preview_hide();
        img_preview_show( img_preview_el, img_preview_id);
        //setTimeout("img_preview_show( "+img_preview_el+", "+img_preview_id+" )", 100);
        return false;
    }

    // calculate  dimensions and offset

    // calculate x
    if( img_previewOrientation > 0 ){
        img_preview_contents_dim['x'] = img_preview_el_dim['x'] + img_preview_el_dim['width'] + img_preview_conf['horizontalMargin'];
    }else{
        img_preview_contents_dim['x'] = img_preview_el_dim['x'] - img_preview_contents_dim['width'] - img_preview_conf['horizontalMargin'] + img_preview_conf['flippedHorizontalMargin'];
    }

    // calculate y
    if( img_preview_el_dim['y'] + img_preview_conf['VerticalOffset'] > img_previewBodyScrollTop + img_previewBrowserHeight)
        img_preview_contents_dim['y'] = img_previewBodyScrollTop + img_previewBrowserHeight - img_preview_contents_dim['height'];
    else
        img_preview_contents_dim['y'] = img_preview_el_dim['y'] + img_preview_conf['VerticalOffset'] - img_preview_contents_dim['height'];

    if (img_preview_contents_dim['y'] < img_previewBodyScrollTop)
        img_preview_contents_dim['y'] = img_previewBodyScrollTop;

    // hide subcontainer and start animate 
    //img_preview_contents.style.display = "none";
    
    img_preview_start_animate();

}

function img_preview_start_animate(){
    if( img_preview_flag == false ){
        img_preview_hide();
    }
    
    // calculate  fixed x
    if (img_previewOrientation > 0){
        img_previewFixedX = img_preview_contents_dim['x'];
    }else{
        img_previewFixedX = img_preview_contents_dim['x'] + img_preview_contents_dim['width'];
    }

    //ukrywam obrazek - loader
    img_preview_loader.style.visibility = "hidden";
    
    // animate
    img_preview_animation();
}

function img_preview_animation(){
    if( img_preview_flag == false ) {
        img_preview_hide();
    } // ---------------  ***

    var x, y, width, height;

    // height
    height = parseInt( img_preview_contents_dim['height'] -  Math.floor((img_preview_contents_dim['height'] - img_preview.offsetHeight) * img_preview_conf['AnimationDelay']));

    // width
    width = parseInt( img_preview_contents_dim['width'] -  Math.floor((img_preview_contents_dim['width'] - img_preview.offsetWidth) * img_preview_conf['AnimationDelay']) );

    // y
    y = parseInt(img_preview_contents_dim['y'] - Math.floor((img_preview_contents_dim['y'] - img_preview.offsetTop) * img_preview_conf['AnimationDelay'] ));

    // x
    if(img_previewOrientation > 0){
        x = img_previewFixedX;
    }else{
        x = img_previewFixedX - width - img_previewBrowserBorderOffset;
    }

    img_preview.style.left = x + "px";
    img_preview.style.top = y + "px";
    img_preview.style.width = width + "px";
    img_preview.style.height = height + "px";

    if( height < img_preview_contents_dim['height'] ){
        img_preview_timeout_id = setTimeout("img_preview_animation()", 30);
        
    }else{
        img_preview.style.left = (img_preview_contents_dim['x'] - ((img_previewOrientation > 0)?0:img_previewBrowserBorderOffset))+ "px";
        img_preview.style.top = img_preview_contents_dim['y'] + "px";
        img_preview.style.width = img_preview_contents_dim['width'] + "px";
        img_preview.style.height = img_preview_contents_dim['height'] + "px";
    
        //img_preview_contents.style.display  = "block";
        img_preview_contents.style.visibility = "visible";

        if(document.all){
            img_preview_contents.style.filter = "alpha(opacity=" + parseInt(0.1 * 100) + ")";
            img_preview_trans_inc_ie( 0.1, 0.1 );
        }else{
            img_preview_contents.style.opacity = 0.1;
            img_preview_trans_inc( 0.1, 0.1);
        }
    }
}

function img_preview_trans_inc_ie( last, step ){
    if(img_preview_flag == false) {
        img_preview_hide();
        return;
    } // ---------------  ***
    
    last += step;

    if( last >= 1 ){
        last = 1;
        img_preview_contents.style.filter = "alpha(opacity=" + parseInt(last * 100) + ")";
    }else{
        img_preview_contents.style.filter = "alpha(opacity=" + parseInt(last * 100) + ")";
        img_preview_timeout_id = setTimeout( function(){ img_preview_trans_inc_ie( last , step ); }, 60 );
    }
}


function img_preview_trans_inc( last, step ){
    if(img_preview_flag == false) {
        img_preview_hide();
        return;
    } // ---------------  ***
    
    last += step;
    
    if(last >= 1){
        img_preview_contents.style.opacity = last;
    }else{
        img_preview_contents.style.opacity = last;
        img_preview_timeout_id = setTimeout( function(){ img_preview_trans_inc(last , step); }, 60 );
    }

}

function img_preview_hide(){
    if(img_preview_delay_timeout_id) clearTimeout(img_preview_delay_timeout_id);
    clearTimeout(img_preview_timeout_id);
    
    
    img_preview_flag = false;
    img_preview.style.visibility = "hidden";
    img_preview.style.display = "none";
    img_preview.style.top = "0px";
    img_preview.style.left = "0px";
    
    // set  loader default dimensions
    if( img_preview_dim['width'] ){
        img_preview.style.width = (img_preview_dim['width'] - 2) + "px"; // border
        img_preview.style.height = (img_preview_dim['height'] - 2) + "px"; // border
    }

    img_preview_arrow.style.visibility = "hidden";
    img_preview_arrow.style.top = "0px";
    img_preview_arrow.style.left = "0px";
    
    img_preview_contents.style.visibility = "hidden";
    img_preview_loader.style.visibility = "visible";

    
    img_preview_dim['x'] = img_preview_dim['y'] = img_preview_dim['width'] = img_preview_dim['height'] = 0;
    //img_preview_dim['x'] = img_preview_dim['y'] = img_preview_dim['width'] = img_preview_dim['height'] = 0;
    img_preview_el_dim['x'] = img_preview_el_dim['y'] = img_preview_el_dim['width'] = img_preview_el_dim['height'] = 0;
}

//function img_preview_get_content( element, id ){
function img_preview_get_content( id ){
    element = img_preview_el_ref;

    if( img_preview_flag == false ) {
        img_preview_hide();
    } 
    
    img_preview_contents.style.display = "block";

    var tempData = new Array();

    // AJAX or BUFFER
    if ( id > 0 ){
        if( img_preview_buffer[id] ){
            tempData = img_preview_buffer[id];
        }else{
            connect_server();
        }
    }else{
        tempData = img_preview_buffer[0];
    }
    
    
    var html_str = '';
    if( tempData['title'] != '' ){
        html_str += '<h2>' + tempData['title'] + '</h2>';
    }
    
    if( tempData['desc'] != '' ){
        html_str += '<div>'+tempData['desc']+'</div>';
    }
    
    if( tempData['picture'] == "" ){
        img_preview_contents.innerHTML =  html_str ;
        img_preview_show_continue();
    } else {
        html_str += "<img src=\"" +tempData['picture']+ "\" onload=\"img_preview_show_continue()\" class=\"img_preview_image\" id=\"img_preview_img\">";
        img_preview_contents.innerHTML = html_str ;
    }
}

