//Funktionen Showroom V1.0

/**
 * Showroom-Opener.
 *
 * @author emedia
 * @copyright 2008-01-25
 * @version 1.2
 * @param string c Kategorie
 * @param string r Rubrik
 * @param integer nr Id
 * @param integer mnr Medien-Id
 * @param string sortletter Buchstabe
 * @param string mode Modus
 * @param string ref Referer
 * @return string URL
 */
function openShowroom(c, r, nr, mnr, sortletter, mode, ref){
    var category, type, vollseitenTyp;
    var isSpecial = false;
    var newLoc = false;
    if(c== "pix")
    {
        category = "pics"
        vollseitenTyp = "fotoshow"
    }
    else
    {
        category = "trailer";
        vollseitenTyp = "trailer";
    }

    if(r == "filmbilder" || r == "filmtrailer")
    {
        type = "film";
        vollseitenPage = "kinofilm";
    }
    else if(r == "gamesbilder" || r == "gamestrailer")
    {
        type = "games"
        vollseitenPage = "game";
    }
    else if (r == "clip_specials" || r == "pix_specials")
    {
        type  = "specials"
        isSpecial = true;
    }
    else if(r == "filmstars_m")
    {
        type = "stars_male";
        vollseitenPage = "star";
    }
    else if(r == "filmstars_w")
    {
        type = "stars_female";
        vollseitenPage = "star";
    }
    else if(r == "musikier_m")
    {
        type = "musicians_male";
        vollseitenPage = "star";
    }
    else if(r == "musiker_w")
    {
        type = "musicians_female";
        vollseitenPage = "star";
    }
    else
    {
        type = "stars";
        vollseitenPage = "star";
    }


    if(nr > 0)
    {
        if(isSpecial == true)
        {
            newLoc = false;
        }
        else
        {
            newLoc = "/"+vollseitenPage+"/name/"+vollseitenTyp+"/"+nr+".html";
        }
    }
    location.href=newLoc;

    return false;
	if(setRubrik != "" && setClipid != "" && setCat != "") {

		r          = setRubrik;
		mnr        = setClipid;
		nr         = setCat;
		sortletter = setPg;
	}

    var url = "/showroom.php";
    if(c != "" && c != null) {

    	url += "?c="+c;
        if(r != "" && r != null) {

        	url += "&r=" + r;
            if(nr != "" && nr != null) {

            	url += "&nr=" + nr;
                if(mnr != "" && mnr != null) {

                	url += "&mnr=" + mnr;
                }
            }
        }

        if(sortletter) {

        	url += "&sortletter=" + sortletter
        }

        if(mode) {

        	url += "&mode=" + mode;
        }

        if(ref) {

        	url += "&ref=" + ref;
        }
    }
    return openShowroomURL(url);
}

/**
 * Showroom-Opener fuer E-Cards.
 *
 * @author emedia
 * @copyright 2007-04-25
 * @version 1.0
 * @param string token Token
 * @return string URL
 */
//function openShowroomEcard(token){
//
//    var url = "/showroom.php?ecard_token="+token;
//    return openShowroomURL(url);
//}

/**
 * Eigentlicher Showroom-Aufruf.
 *
 * @author emedia
 * @copyright 2007-04-25
 * @version 1.0
 * @param string url URL
 */
function openShowroomURL(url){

    location.href = "/showroom/";
	// var w = screen.width;
    // var h = screen.height;
//    var w = 1015;
//    var h = 750;
//    var params = "resizable=yes, status=no, toolbar=no, menubar=no, location=no, scrollbars=yes, width="+w+", height="+h+", top=0, left=0"
//    win = window.open(url, "showroom", params);
//    if(win) {
//
//    	win.focus();
//    }
}
still_open = true;

/**
 * FlashPlayer-Hack.
 */
var setRubrik = "";
var setClipid = "";

//showroom v2.0


/**
 * Anzeige der Vollseiten - hier wird onLoad ein Bild angezeigt und die Vorschau Version in der liste
 * highlighted - die Id, des highlighted Bildes, wird hier abgelegt, um es wieder zu resetten,
 * wenn ein anderen Bild ausgewählt wird
 */
var selectedSlotNr = 0;
var highlightPreviewClass = "showroomListItemFullInfo SRhighlightBG";
var defaultPreviewClass   = "showroomListItemFullInfo SRdefaultBG";

/**
 * hier werden alle Galeriebilder in form von ShowroomImageObject's abgelegt und durchnavigiert
 */
var imageArray = new Array();

/**
 * Der versatz, um den die Bilder im Bezug auf das imageArray verschoben sind
 * offset = 0 bedeutet, dass die Vorschaubilder von Beginn des Arrays an angezeigt werden
 * default =0
 *
 */
var currentPreviewOffset = 0;

/*
 * über diesen Offset wird das absetzen eines IVW pixels beim javascript-basierten durchschalten
 * der galerie gecheckt
 */
var lastPreviewOffset = 0;

/**
 * um diesen Wert wird der Offset erhöht/vermindert, wenn man die Pfeile an der Vorschau benutzt
 * die zahl ist um 1 kleiner als die anzahl der Vorschaubilder, dass man immer noch den Bezug zu den
 * zuletzt angezeigten bildern hat
 *
 */
var previewIncrement     = 9;

/**
 * Anzahl der Vorschau bilder
 */
var previewImageCount    = 10;

var listItemPrefix       = "srListItem_";
var linkPrefix           = "srListItemLink_";
var imagePrefix          = "srListItemImage_";

var preloadAniBig = new Image();
    preloadAniBig.src = "/showroom/pix/loadAnimBig.gif";

var preloadAniSmall = new Image();
    preloadAniSmall.src = "/showroom/pix/loadAnimSmall.gif";



///**
// * Video-Id setzen.
// *
// * @author emedia
// * @copyright 2007-10-01
// * @version 1.0
// * @param string rubrik Rubrik
// * @param integer clipid Clip-Id
// * @param string cat Kategorie
// * @param string pg Seite
// */
//function setCurrentVideo(rubrik, clipid, cat, pg) {
//
//	setRubrik = rubrik;
//	setClipid = clipid;
//	setCat    = cat;
//	setPg     = pg;
//}


/**
 * Object zur haltung der relevanten Daten eines Bildes.
 *
 * Diese Objekte werden innerhalb des Arrays 'imageArray' vorgehalten - über dieses wird navigiert
 * @param smSrc   Pfad auf das Vorschaubild
 * @param smMarg  TopMargin für die Vorschau
 * @param bgSrc   Pfad Für das Stage-Image
 * @param bgMarg  TopMargin des Stage-Images
 */
function ShowroomImageObject(smSrc, smMarg, bgSrc, subTitle, credits, bgMarg)
{
    this.subTitle    = subTitle;
    this.credits     = credits;
    this.smallSource = smSrc;
    this.smallMargin = smMarg;
    this.bigSource   = bgSrc;
    this.bigMargin   = bgMarg;
}

/**
 * zeigt ein Vorschaubild groß an, setzt den TopMargin neu und highlighted die VorschauVersion
 *
 * @author emedia
 * @copyright 2008-07-22
 * @version 1.0
 //* @param source    - big image source path
 //* @param topmargin - big image topMargin
 * @param slotNr        - preview image li-id nur noch die id, position im imageArray - hier können alle daten ermittelt werden
 */
//function showStageImage(source, topmargin, slotNr)
function showStageImage(slotNr)
{
//    alert("showroomImage_"+currentPreviewOffset+"_"+slotNr+"\n" + "showroomImage_"+lastPreviewOffset+"_"+selectedSlotNr);
    setIvwPixel("showroomImage_"+currentPreviewOffset+"_"+slotNr, "showroomImage_"+lastPreviewOffset+"_"+selectedSlotNr);
    setKinodePixel("showroomImage_"+currentPreviewOffset+"_"+slotNr, "showroomImage_"+lastPreviewOffset+"_"+selectedSlotNr);

    var img = document.getElementById("displayImage");
    var subTitleTag = document.getElementById("imageSubTitle");
    var imgPosTag   = document.getElementById("imagePosition");
    img.src = preloadAniBig.src;
    img.style.marginTop = "120px";
    //aktuelles Image aus dem Array ermitteln
    var offset = slotNr + currentPreviewOffset;
    if(offset >= imageArray.length)
    {
        offset = offset - imageArray.length;
    }


    var srImgObj = imageArray[offset];
    var bigMargin = srImgObj.bigMargin;
    var bigSource = srImgObj.bigSource;

    imgPosTag.innerHTML = ((offset + 1) +" / "+imageArray.length);

    if( srImgObj.credits != "" ) {

    	creditsTag = " (&copy;" + srImgObj.credits + ")";
    } else {

    	creditsTag = "";
    }
    subTitleTag.innerHTML = srImgObj.subTitle+"&nbsp;" + creditsTag;

    //<img> zum daten zuweisen

    var loadImg = new Image();
    loadImg.src = bigSource;

    loadImg.onLoad = assignImageToId("displayImage", loadImg, srImgObj.bigMargin);

    setPreviewSlotDefault(selectedSlotNr);
    //neue Vorschau highlight
    setPreviewSlotHighlighted(slotNr)
    //neue id setzen

    setSelectedSlotNr(slotNr);
    lastPreviewOffset = currentPreviewOffset;
}

/**
 *
 *
 *
 */
function assignImageToId(id, loadedImg, marg)
{
    var img = document.getElementById(id);
    img.style.marginTop = marg+"px";
    img.src = loadedImg.src;
}

/**
 * setzen der Selected Image Id
 */
function setSelectedSlotNr(nr)
{
    selectedSlotNr = nr;
}

/**
 * setzt das Preview Bild für die Übergebene Bildnummer (nicht Objekt ID !) auf default zurück
 * sprich hintergrund auf weiß - nicht mehr highlighted...
 *
 * @param imgNr - Integer: laufende Nummer der Vorschaubilder
 */
function setPreviewSlotDefault(imgNr)
{
    setClassForId(defaultPreviewClass, listItemPrefix + "" + imgNr);
}

/**
 * setzt das Preview Bild für die Übergebene Bildnummer (nicht Objekt ID !) highlighted
 *
 * @param imgNr - Integer: laufende Nummer der Vorschaubilder
 */
function setPreviewSlotHighlighted(imgNr)
{
    selectedSlotNr = imgNr;
    setClassForId(highlightPreviewClass, listItemPrefix + "" + imgNr);
}


function setSRHighlightedClass(str)
{
    highlightPreviewClass = str;
}

/**
 *
 *
 * @param class - css class Name
 * @param id    - object id
 */
function setClassForId(cls, id)
{
    var obj = document.getElementById(id);
    obj.setAttribute("class", cls);
    /* IE ... */
    obj.setAttribute("className", cls);
}

function nextPreviewPage()
{
    if(imageArray.length > 10)
    {
        setPreviewSlotDefault(selectedSlotNr);
        scrollForwardPreview(previewIncrement);
        if(selectedSlotNr == 9)
        {
            setPreviewSlotHighlighted(0);
        }
    }
}

function previousPreviewPage()
{
    if(imageArray.length > 10)
    {
        setPreviewSlotDefault(selectedSlotNr);
        scrollBackPreview(previewIncrement);
        if(selectedSlotNr == 0)
        {
            setPreviewSlotHighlighted(9);
        }
    }
}

function scrollBackPreview(diff)
{
    showPreviewLoadingAnimations();
    lastPreviewOffset   = currentPreviewOffset;
    currentPreviewOffset = parseInt(currentPreviewOffset) - parseInt(diff);
    if(currentPreviewOffset < 0)
    {
        currentPreviewOffset = imageArray.length + currentPreviewOffset;
    }
    reloadPreviewImagesForOffset();
}

/**
 * nächste Vorschauleiste anzeigen -
 * dies geschieht durch verschieben des Offsets.
 * sollte der offset am Ende des Arrays angekommen sein, so wird er auf den Anfang umgerechnet
 *
 */
function scrollForwardPreview(diff)
{
    showPreviewLoadingAnimations();
    lastPreviewOffset   = currentPreviewOffset;
    currentPreviewOffset = parseInt(currentPreviewOffset) + parseInt(diff);
    if(currentPreviewOffset>=imageArray.length)
    {
        currentPreviewOffset = diff - (currentPreviewOffset - imageArray.length);
    }
    reloadPreviewImagesForOffset();
}

function reloadPreviewImagesForOffset()
{
    //alert("currentOffset: "+ currentPreviewOffset + "["+imageArray.length+"]");
    var st  = currentPreviewOffset;
    //var end = parseInt(currentPreviewOffset) + parseInt(previewImageCount);

    var j = st;
    for(i = 0; i < previewImageCount; i++)
    {
        if(j >= imageArray.length)
        {
            j = 0;
        }
        var img    = document.getElementById(imagePrefix+""+i);
        var newImg = imageArray[j];
        img.style.marginTop = newImg.smallMargin+"px";
        img.src = newImg.smallSource;

        j++;
    }
}

/**
 * laden des nächsten Showroom bildes
 *
 * sollte die vorschau dazu um eine postition weiter gescrollt werden, ermittelt das diese funktion auch
 * für den fall, dass die Galerie weniger bilder als standard = 10 enthält wird zum
 * ersten Bild gesprungen
 */
function nextShowroomImage()
{
    //Highlight resetten
    setPreviewSlotDefault(selectedSlotNr);
    var maxSlots = imageArray.length - 1;

    //spezielles Handling für weniger Vorschaubilder als gewünscht
    if(selectedSlotNr >= maxSlots)
    {
        showStageImage(0);
    }
    else if(selectedSlotNr >= 9)
    {
        scrollForwardPreview(1);
        showStageImage(selectedSlotNr);
    }
    else
    {
        var nextSlot = parseInt(selectedSlotNr) + 1;
        showStageImage(nextSlot);
    }
}

/**
 * laden des vorherigen Showroom bildes
 * sollte die vorschau dazu um eine postition zurück gescrollt werden, ermittelt das diese funktion auch
 * für den fall, dass die Galerie weniger bilder als standard = 10 enthält wird zum
 * letzten gesprungen
 */

function previousShowroomImage()
{
    setPreviewSlotDefault(selectedSlotNr);
    var maxSlots = imageArray.length - 1;
    //spezielles Handling, wenn weniger bilder angezeigt werden, als es sein soll
    // dann wird die Vorschau nicht geshuffelt und nur die bilder/highlight geschalten
    if(maxSlots <= previewImageCount && selectedSlotNr == 0)
    {
        showStageImage(maxSlots);
    }
    else if(selectedSlotNr > 0)
    {
        var prevSlot = parseInt(selectedSlotNr) - 1;
        showStageImage(prevSlot);
    }
    else
    {
        scrollBackPreview(1);
        showStageImage(selectedSlotNr);
    }
}

function showPreviewLoadingAnimations()
{
    for (i = 0; i < previewImageCount; i ++)
    {
        var img = document.getElementById(imagePrefix + "" + i);
        img.style.marginTop = "30px";
        img.src = preloadAniSmall.src;
    }
}

Showroom = {
    searchField: 'mediasearch_input',
    resultDiv  : 'mediasearch_results',
    performSearch: function()
    {
        this.showSearchResultLayer();
        var res = document.getElementById(this.resultDiv);
        res.innerHTML = "";
        params = {mode: "search", searchstring: document.getElementById(this.searchField).value};
        this.search(params, this.resultDiv);
        var divi = document.createElement("div");
        divi.setAttribute("style", "height: 60px;");
        var img = document.createElement("img");
        img.setAttribute("src", "/showroom/pix/loadAnimBig.gif");
        img.setAttribute("style", "margin-left: 85px;");

        divi.appendChild(img);
        divi.appendChild(document.createElement("br"));
        divi.appendChild(document.createTextNode("..."));
        res.appendChild(divi);
    },

    searchDetails: function(searchstring, db)
    {
        var res = document.getElementById(this.resultDiv);
        res.innerHTML = "";

        params = {mode: "searchdetails", db: db, searchstring: searchstring};
        this.search(params, this.resultDiv);
        var img = document.createElement("img");
        img.setAttribute("src", "/showroom/pix/loadAnimBig.gif");
        img.setAttribute("style", "margin-left: 85px;");

        res.appendChild(img);

        this.showSearchResultLayer();
    },

    search: function(params, target)
    {
        postPath = "/showroom/ajax/search.php";

        new Ajax.Request(postPath,
                        {
                            method:'post',
                            parameters: params,
                            onSuccess: function(transport)
                            {
                                var content = transport.responseText;
                                if(target)
                                {

                                    elem = document.getElementById(target)
                                    elem.innerHTML = "";
//                                    elem.innerHTML = content;
                                    node = document.createElement("div");
                                    node.setAttribute("style", "height: 50px");
                                    node.innerHTML = content;
                                    elem.appendChild(node);
                                    elem.height = 150+"px";
                                    elem.innerHTML = content;
                                }
                            },
                            onFailure: function()
                            {
                                if(target)
                                {
                                    elem = document.getElementById(target)
                                    elem.innerHTML = "Fehler beim Laden";
                                }
                            }
                        }
                    );
    },

    switchBoxContent: function(boxid, params)
    {
        postPath = "/showroom/ajax/switchbox.php";
        //loadAnimation setzen
        document.getElementById(boxid+"_image").src = "/showroom/pix/loadAnimBig.gif";
        params.boxid = boxid;
        new Ajax.Request(postPath,
                        {
                            method:'post',
                            parameters: params,
                            onSuccess: function(transport)
                            {
                                var content = transport.responseText;
//                                alert(content);
                                if(boxid)
                                {
                                    obj = eval("(" + content+ ")");

                                    img = document.getElementById(obj.boxid+"_image");
                                    link = document.getElementById(obj.boxid+"_link");
                                    imglink = document.getElementById(obj.boxid+"_imglink");
                                    imglink.href = obj.url;
                                    link.href = obj.url;
                                    link.innerHTML = obj.title;
                                    img.src = obj.imgSrc;
                                    //alert(obj.title);
                                }
                            },
                            onFailure: function()
                            {
                                if(boxid)
                                {
                                    elem = document.getElementById(boxid)
                                    elem.innerHTML = "Fehler beim Laden";
                                }
                            }
                        }
                    );
    },

    showSearchResultLayer: function()
    {
        var elem = document.getElementById(this.resultDiv);
        elem.style.display    = "block";
        elem.style.visibility = "visible";
    }
}