/*  
*   Javascript-Bibliothek für Referenzen
*   Erstellt: Michael Moser 
*   Letzte Änderung: Mai 2009
*   Copyright by Leitner Hubert KG
*/

var timer;
var timer_enable = true;
var timer_isrunning;
var timer_reset = false;
var timer_counter = -1;
var timer_duration = 5;
var timer_text_lock;
var timer_stoppeTimer = "Stoppe Timer";
var timer_starteTimer = "Starte Timer";
var timer_CountdownText = "Weiter in ";

var L = 0;
var labelDiashowEinschalten = "Diashow einschalten";
var labelDiashowAusschalten = "Diashow ausschalten";
var labelDiashowLoading = "Loading... ";
var labelDiashowAngehalten = "Diashow angehalten";
var labelDiashowWeiter1 = "N&auml;chstes Projekt in ";
var labelDiashowWeiter2 = "s";
var labelDiashowNoJson = "";
var labelImage = "Bild" ;
var labelImageWeiter = "Nächstes Bild";
var labelImageVorher = "Vorheriges Bild";
var labelReferenzWeiter = "Nächste Referenz";
var labelReferenzVorher = "Vorherige Referenz";



var intCurrentMargin = 0;
var intScrollDirection = 0; // 0 nicht scrollen, 1 rechts scrollen, 2 links scrollen
var timerScroll;
var intScrollSpeedNormal = 5;
var intScrollSpeedFast = 10;
var intScrollSpeed = intScrollSpeedNormal;

var json;
var singleview_currentuid = 1;



function onLoad()
{
    reference_doRequest();
}

function setLanguage(language_uid)
{
    switch (language_uid)
    {
        case 1: // Italienisch
        {
            labelDiashowEinschalten = "Accendere slide show";
            labelDiashowAusschalten = "Spegnere slide show";
            labelDiashowLoading = "Caricamento in corso... ";
            labelDiashowAngehalten = "Slide show si è fermato";
            labelDiashowWeiter1 = "Prossima referenza in ";
            labelDiashowWeiter2 = "s";
            labelDiashowNoJson = "Scarica non è finita...";
            labelImage = "Immagine" ;
            labelImageWeiter = "Successiva immagine";
            labelImageVorher = "Precedente immagine";
            labelReferenzWeiter = "Successiva referenza";
            labelReferenzVorher = "Precedente referenza";
            L = 1;
            break;
        }
        case 2: // Englisch
        {
            labelDiashowEinschalten = "Enable slide show";
            labelDiashowAusschalten = "Disable slide show";
            labelDiashowLoading = "Loading... ";
            labelDiashowAngehalten = "Slide show stopped";
            labelDiashowWeiter1 = "Next Reference in ";
            labelDiashowWeiter2 = "s";
            labelDiashowNoJson = "Loading in progress...";
            labelImage = "Image" ;
            labelImageWeiter = "Next image";
            labelImageVorher = "Previous image";
            labelReferenzWeiter = "Next reference";
            labelReferenzVorher = "Previous reference";
            L = 2;
            break;
        }
        default: // Deutsch
        {
            labelDiashowEinschalten = "Diashow einschalten";
            labelDiashowAusschalten = "Diashow ausschalten";
            labelDiashowLoading = "Loading... ";
            labelDiashowAngehalten = "Diashow angehalten";
            labelDiashowWeiter1 = "N&auml;chstes Projekt in ";
            labelDiashowWeiter2 = "s";
            labelDiashowNoJson = "Laden ist noch nciht abgeschlossen";
            labelImage = "Bild" ;
            labelImageWeiter = "Nächstes Bild";
            labelImageVorher = "Vorheriges Bild";
            labelReferenzWeiter = "Nächste Referenz";
            labelReferenzVorher = "Vorherige Referenz";
            L = 0;
            break;
        }
    }
}

// Diese Funktion wird nur einmal ausgeführt, und das wenn die Seite geladen wird. 
function timer_start()
{
    // Kontrollieren ob der Timer vom Benutzer ausgeschaltet wurde oder ob der Timer bereits läuft
    if (timer_enable)
    {
        // Zeit des Timers auf die vorgegebene Wartezeit ändern. 
        timer_counter = timer_duration;
        clearInterval(timer); // Wenn der Timer noch laufen sollte
        if (json)
        {
            timer = setInterval('timer_tick();', 1000);
        }
    }
    timer_button_startstop_text(); // Setzt den Text des Links
}

// Diese Funktion wird alle Sekunden ausgeführt, wenn der Timer aktiv ist, nicht deaktiviert wurde und keine Reset vorliegt (Reset = Benutzer fährt über den Bereich)
function timer_tick()
{
    if (timer_enable == true & timer_reset == false)
    {
        timer_counter = timer_counter - 1; 
        if (timer_counter < 0)        
        {
            if (singleview_currentuid != 0)
            {
                if (json.items[singleview_currentuid].uid_next != 0)
                {
                    SingleView(json.items[singleview_currentuid].uid_next);
                } else {
                    SingleView(json.items.uid_first);
                }
            }
            //clearInterval(timer);
            timer_counter = timer_duration;
        }
    }
    timer_button_startstop_text();
}

// Start Reset (Jemand ist über den Referenzen-Bereeich gefahren.)
function timer_reset_over()
{    
     timer_reset=true;
     clearInterval (timer);
     timer_button_startstop_text();
}
function timer_reset_out()
{
    if (timer_reset == true)
    {
        timer_reset = false;
        timer_counter = timer_duration;
        clearInterval(timer); // Wenn der Timer noch laufen sollte
        if (json)
        {
            timer = setInterval('timer_tick();', 1000);
        }
    }
    timer_button_startstop_text();
}

function timer_button_startstop ()
{
    if (timer_enable == false)
    {
        timer_enable = true;
        timer_counter = timer_duration;
        clearInterval(timer); // Wenn der Timer noch laufen sollte
        if (json)
        {
            timer = setInterval('timer_tick();', 1000);
        }
    }
    else
    {
        timer_enable = false;
        clearInterval(timer);
    }
    timer_button_startstop_text();
}

function timer_button_startstop_over ()
{
    timer_text_lock = 'over';
    timer_button_startstop_text();
}
function timer_button_startstop_out ()
{
    timer_text_lock = "";
    timer_button_startstop_text();
}

function timer_button_startstop_text()
{
    var timer_text = ""
    if (!(json))
    {
        timer_text = labelDiashowNoJson;
    }
    if (timer_enable == false)
    {
        timer_text = labelDiashowEinschalten;
    }
    else if (timer_text_lock == "over")
    {
        timer_text = labelDiashowAusschalten;
    } 
    else if (timer_counter < 0)
    {
        timer_text = labelDiashowLoading;
    }
    else if (timer_reset == true)
    {
        timer_text = labelDiashowAngehalten;
    }
    else
    {
        timer_text = labelDiashowWeiter1 + timer_counter + labelDiashowWeiter2  ;
    }
    document.getElementById('reference_timer_startstop').innerHTML = timer_text;
}
function image_goto(uid)
{
}
function image_click()
{
}






function scrollbarInit()
{
    
}
function scrollLeftOnmouseover()
{
    timerScroll = setInterval('scroll()',40);
    intScrollDirection = 2;
}
function scrollRightOnmouseover()
{
    timerScroll = setInterval('scroll()',40);
    intScrollDirection = 1;
}
function scrollOnmouseout()
{
    clearInterval(timerScroll);
}
function scrollOnmousedown()
{
    intScrollSpeed = intScrollSpeedFast;
}
function scrollOnmouseup()
{
    intScrollSpeed = intScrollSpeedNormal;
}


function scroll()
{
    if (intScrollDirection == 1) // rechts scrollen
    {
        var elScrollbarCenter = $('reference-scrollbar-center');
        var elScrollbarItems = $('reference-scrollbar-items');
        var intScrollbarCenterWidth = elScrollbarCenter.getWidth();
        var intScrollbarItemsWidth = elScrollbarItems.getWidth();
        var intMinMargin =  intScrollbarCenterWidth  - intScrollbarItemsWidth ;
        intCurrentMargin = intCurrentMargin - intScrollSpeed;
        if (intCurrentMargin < intMinMargin)    
        {
            intCurrentMargin = intMinMargin; 
            clearInterval(timerScroll);
            intScrollDirection = 0;
        }
    }
    else if (intScrollDirection == 2) // links scrollen
    {
        var intMinMargin =  0 ;
        intCurrentMargin = intCurrentMargin + intScrollSpeed;
        if (intCurrentMargin > intMinMargin)    
        {
            intCurrentMargin = intMinMargin; 
            clearInterval(timerScroll);

            intScrollDirection = 0;
        }
    }
    else
    {
        clearInterval(timerScroll);
    }
    $('reference-scrollbar-items').setStyle('margin-left:'+intCurrentMargin+'px;');

}




function reference_doRequest() {
    //$('tx-lsreferences_listviewitems').innerHTML = '<div style="text-align:center;" ><img class="loading" alt="0loading..." src="/typo3conf/ext/lsreference/pi1/loading.gif" /></div>';

	var ajaxRequest;
    ajaxRequest = new Ajax.Request('/typo3conf/ext/lhreference/pi1/ajax.php', {
        method: 'get',
        parameters: {
            L: L
        },

        //requestHeaders: {Accept: 'application/json'},
        onSuccess: function(transport) {
            json = transport.responseText.evalJSON();
            scrollbarInit();
            generateListView();
            timer_start();
        }
		
    });

}

function generateListView() 
{
    var uid = json.items.uid_first;
    var items = "<table><tr>";
    while (uid != 0)
    {
        items += "<td>"
            + "<a href=\"Javascript:SingleView(" + uid +");\">"
            + "<img src=\"" + json.items[uid].bild_listview + "\" alt=\"" + json.items[uid].projekt + "\" title=\"" + json.items[uid].projekt + "\" /><br />"
            + "<span>" + json.items[uid].projekt + "</span>"
            + "</a>"
            + "</td>";
        uid = json.items[uid].uid_next;
    }
    items += "</tr></table>";
    document.getElementById('reference-scrollbar-items').innerHTML = items;
    SingleView(json.items.uid_first);
}
function SingleView(uid) 
{
    singleview_currentuid = uid;
    $('reference-projekt').innerHTML = json.items[uid].projekt;
    $('reference-header').innerHTML = json.items[uid].projekt; 
    $('reference-architekt').innerHTML = json.items[uid].architekt;
    $('reference-jahr').innerHTML = json.items[uid].jahr;
    $('reference-ort').innerHTML = json.items[uid].ort;
    $('reference-kategorien').innerHTML = json.items[uid].kategorien;
    $('reference-beschreibung').innerHTML = json.items[uid].text;
    
    // Zurück-Button
    var link_previous = "";
    if (json.items[uid].uid_previous > 0) {
        var previous_uid = json.items[uid].uid_previous;
        var previous_projekt = json.items[previous_uid].projekt;
        link_previous = "<a href=\"Javascript:SingleView(" + previous_uid + ")\" >" + labelReferenzVorher + " (" + previous_projekt + ")</a>";
    } else {
        link_previous = "&nbsp;";
    }
    $('reference-browser-left').innerHTML = link_previous;
    
    // Weiter-Button
    var link_next = "";
    if (json.items[uid].uid_next > 0) {
        var next_uid = json.items[uid].uid_next;
        var next_projekt = json.items[next_uid].projekt;
        link_back = "<a href=\"Javascript:SingleView(" + next_uid + ")\" >" + labelReferenzWeiter + " (" + next_projekt + ")</a>";
    } else {
        link_back = "&nbsp;";
    }
    $('reference-browser-right').innerHTML = link_back;
    
    SingleViewImage (1);
        
    

    //new Effect.Highlight($('reference-header'), { startcolor: '#ffff99', endcolor: '#ffffff' });     

}
function SingleViewImage(image_uid)
{
    if (!(image_uid > 0 && image_uid <= json.items[singleview_currentuid].bilder_singleview.count))
    {
        image_uid = 1;
    }
    
    var elImage = $('reference-image-image');
    var elBrowserLeft = $('reference-image-browser-left');
    var elBrowserRight = $('reference-image-browser-right');
    var elBrowserCenter = $('reference-image-browser-center');
    
    elImage.src = json.items[singleview_currentuid].bilder_singleview[image_uid];
    elImage.alt = json.items[singleview_currentuid].projekt;
    elImage.title = json.items[singleview_currentuid].projekt;
    
    if (image_uid < 2)
    {
        elBrowserLeft.innerHTML = "";
    }
    else
    {
        elBrowserLeft.innerHTML = "<a href=\"Javascript:SingleViewImage(" + (image_uid - 1) + ")\" >" + labelImageVorher + "</a>";
    }
    
    if (image_uid  >= json.items[singleview_currentuid].bilder_singleview.count)
    {
        elBrowserRight.innerHTML = "";
    }
    else
    {
        elBrowserRight.innerHTML = "<a href=\"Javascript:SingleViewImage(" + (image_uid + 1) + ")\" >" + labelImageWeiter + " </a>";
    }
    
    elBrowserCenter.innerHTML = labelImage + " " + image_uid + " / " + json.items[singleview_currentuid].bilder_singleview.count;
    
}
