/** CLIENT: HERZOG & DE MEURON **/
/**        ALL CODE BY         **/
/**            [tm]            **/
/**      thomas-martin.ch      **/
/**            @2011           **/


/* decryp addresses*/
function dcmadr(nnnn){
    var a = "";
    for(i=0,m=nnnn.length;i < m;i++){
        if(i%3==0){
            a += String.fromCharCode(nnnn.substr(i, 3));
        }
    }
    location.href=(a);
}
/* hide a div */
function hideDiv(divid){
    $("#"+divid).fadeOut("fast");
}


/* search box */
function positionSearchBox(){
    var ww = $(window).width();
    var sw = $("#navigationContainer").width()+$("#searchform input").width()+40;
    if(ww>sw){
        $("#searchform").addClass('posRight');
    }else{
        var nw = sw-20;
        $("#searchform").removeClass('posRight').css("width", nw+"px");

    }
}
function removeDefault(formField, value){
    if(formField.value == value){
        formField.value = "";
    }
    formField.style.color = "#000";
}
function resetDefault(formField, value){
    if(formField.value == ""){
        formField.value = value;
        formField.style.color = "#888";
    }
}
function checkSearchBox(ff,st,eft){
    var t = ff.search.value;
    if(t == ''||t==st){
        alert(eft);
        ff.search.focus();
        ff.search.select();
        return false;
    }
}
function resetSearchInSession(){
    $.get(windowHandlingScriptPath+"?cmd=rs&ck="+new Date().getTime());
}

/* custom galeries */
var loadImage = "docroot/customdir/images/spinner.gif";
var imagesArray = new Array();
var titlesArray = new Array();
var copyrightsArray = new Array();
var galleryCurrent = new Array();
function prepareGalleryNavigation(gid,pid,si){
    $("#wi_"+pid).html((si+1)+" - "+imagesArray[gid].length);
    var galleryDiv =  $("#gid_"+gid);
    /* enable browsing if enough images are in array */
    if(imagesArray[gid].length>1){
        $(".galleryOutputNext",galleryDiv).click(function(){
            //make sure browsing only hapens if window is on top
            if(isTopWindow(pid)){
                $(this).parent().css("background-image", "url("+loadImage+")");
                var x = galleryCurrent[gid]*1;
                x++;
                if(x==imagesArray[gid].length){x=0;}
                /* persist image no to session for later retreival */
                if(windowHandlingScriptPath!=""){
                    $.get(windowHandlingScriptPath+"?cmd=ug&UUID="+pid+"&startImage="+(x+1)+"&ck="+new Date().getTime());
                }
                displayGalleryImageNo(pid, gid, x);
            }
        });
        $(".galleryOutputPrev",galleryDiv).click(function(){
            //make sure browsing only hapens if window is on top
            if(isTopWindow(pid)){
                $(this).parent().css("background-image", "url("+loadImage+")");
                var x = galleryCurrent[gid]*1;
                x--;
                if(x==-1){x=imagesArray[gid].length-1;}
                /* persist image no to session for later retreival */
                if(windowHandlingScriptPath!=""){
                    $.get(windowHandlingScriptPath+"?cmd=ug&UUID="+pid+"&startImage="+(x+1)+"&ck="+new Date().getTime());
                }
                displayGalleryImageNo(pid, gid, x);
            }
        });
    }
}
function resetGalleryPosition(pid,n){
    $.get(windowHandlingScriptPath+"?cmd=ug&UUID="+pid+"&startImage="+(n)+"&ck="+new Date().getTime());
}
/* switch gallery to given image no */
function displayGalleryImageNo(pid, gid, x){
    removeCreditLine();
    var gopt = $(".galleryOutput", $("#gid_"+gid));
    var titl = $("h4", gopt.parent());
    var img = new Image();
    $(img).load(function () {
        gopt.css("background-image", "url("+$(this).attr("src")+")");
        var titleString = titlesArray[gid][x];
        if(copyrightsArray[gid][x]!=''){
            titleString = "<a href='javascript:showCreditLine(\""+[gid]+"\",\""+[x]+"\",\"gid\")'>"+copyRightSign+" "+titleString+"</a>";
        }
        titl.html(titleString);
        galleryCurrent[gid] = x;
        $("#wi_"+pid).html((x+1)+" - "+imagesArray[gid].length);
    }).attr('src', imagesArray[gid][x]);
}
/* display credit line */
var copyRightSign = "&copy;";
function setCopyRightText(crt){
    copyRightSign = crt;
}
var currentCreditLineId = "";
function showCreditLine(gid, x, ctn){
    removeCreditLine();
    currentCreditLineId = "#"+ctn+"_"+gid;
    var ct = copyRightSign+" "+copyrightsArray[gid][x];
    var p = $("h4", $("#"+ctn+"_"+gid).parent());
    p.hide();
    $("<span class='creditLine'><h5 onclick='removeCreditLine()'>"+ct+"</h5></span>").appendTo(currentCreditLineId);
}
function removeCreditLine(){
    $("h4", $(currentCreditLineId).parent()).show();
    $(".creditLine", $(currentCreditLineId).parent()).remove();

}


/* projects slideshow */

var completeProjectsSlideShow = new Object();
var completeProjectsSlideShowProjectTitles = new Object();
var completeProjectsSlideShowImageTitles = new Object();
var completeProjectsSlideShowCopyRights = new Object();
var completeProjectsSlideShowProjectLinks = new Array();
var visibleProjectsSlideShowIds = new Array();
var projectSlideShowCurrentProject = "";
var projectsSlideShowCurrentImage = 0;
var countVisibleProjectSlideShowEntries = 0;
var projectsSlideShowWindow = "";
function setprojectsSlideShowWindow(w){
    projectsSlideShowWindow = w;
}
var projectsSlideShowWindowTitlePrefix = "SLIDESHOW";
function setProjectsSlideShowWindowTitlePrefix(w){
    projectsSlideShowWindowTitlePrefix = w;
}
var projectsSlideShowNoImagesTitle = "NO IMAGES FOUND";
function setProjectsSlideShowNoImagesTitle(w){
    projectsSlideShowNoImagesTitle = w;
}
var projectLinkText = "TEXT";
function setProjectLinkText(w){
    projectLinkText = w;
}
function resetProjectSlideShowStates(){
    projectsSlideShowCurrentImage = 0;
    projectSlideShowCurrentProject = "reset";
    $.get(windowHandlingScriptPath+"?cmd=udss&ssci="+projectsSlideShowCurrentImage+"&sscp="+projectSlideShowCurrentProject+"&ck="+new Date().getTime());
}
function initProjectsSlideShow(w){
    if(w){
        setprojectsSlideShowWindow(w);
        if(visibleProjectsInList!=null){
            updateProjectsSlideShowElements(visibleProjectsInList);
        }
    }
    if(projectSlideShowCurrentProject==""){
        projectSlideShowCurrentProject = "searching";
        $.get(windowHandlingScriptPath+"?cmd=gtss&ck="+new Date().getTime(), function(data){
            var myObject = eval('(' + data + ')');
            var ssci = (myObject['ssci']);
            var sscp = (myObject['sscp']);
            /* check if stored project is visible */
            if(currentProjectIdIndexInVisible(visibleProjectsSlideShowIds,sscp)>-1){
                projectSlideShowCurrentProject = sscp;
                projectsSlideShowCurrentImage = ssci*1;
            }else{
                projectSlideShowCurrentProject = getNextVisibleProjectInSlideShow();
            }
            countVisibleProjectSlideShowEntries = countProjectsSlideShowEntries();
            updateProjectsSlideShowDisplay();
        });
    }

    
}
function updateProjectsSlideShowDisplay(){
    prepareProjectsSlideShowNavigation();
    displayProjectsSlideShowImage();
}
function updateProjectsSlideShowElements(visibleListElements){
    if(projectsSlideShowWindow!=''){
        $(".galleryOutputPrev",projectsSlideShowWindow).remove();
        $(".galleryOutputNext",projectsSlideShowWindow).remove();
        visibleProjectsSlideShowIds = new Array();
        projectSlideShowCurrentProject = "";
        projectsSlideShowCurrentImage = 0;
        countVisibleProjectSlideShowEntries = 0;

        var c = visibleListElements.length;
        for(var i=0;i<c;i++){
            var visId = visibleListElements[i];
            for (tmpid in completeProjectsSlideShow){
                if(visId==tmpid){
                    visibleProjectsSlideShowIds.push(tmpid);
                    break;
                }
            }
        }
        initProjectsSlideShow();
    }
}

function prepareProjectsSlideShowNavigation(){
    /* enable browsing if enough images are in array */
    var prevDiv = $(".galleryOutputPrev",projectsSlideShowWindow);
    var nextDiv = $(".galleryOutputNext",projectsSlideShowWindow);
    var output = $(".galleryOutput",projectsSlideShowWindow);
    if(countVisibleProjectSlideShowEntries>1){
        if(nextDiv.length==0 && prevDiv.length==0){
            output.append('<div class="galleryOutputNext"></div>');
            output.append('<div class="galleryOutputPrev"></div>');
            prevDiv = $(".galleryOutputPrev",projectsSlideShowWindow);
            nextDiv = $(".galleryOutputNext",projectsSlideShowWindow);
            nextDiv.click(function(){navigateProjectsSlideShowImage(true)});
            prevDiv.click(function(){navigateProjectsSlideShowImage(false)});
        }
    }
}
function navigateProjectsSlideShowImage(forward){
    //make sure browsing only hapens if window is on top
    if(isTopWindow(projectsSlideShowWindow.attr("id"))){
        var output = $(".galleryOutput",projectsSlideShowWindow);
        output.css("background-image", "url("+loadImage+")");
        //show next
        if(forward){
            projectsSlideShowCurrentImage++;
            if(projectsSlideShowCurrentImage>=completeProjectsSlideShow[projectSlideShowCurrentProject].length){
                projectSlideShowCurrentProject = getNextVisibleProjectInSlideShow();
                projectsSlideShowCurrentImage = 0;
            }
        //show prev
        }else{
            projectsSlideShowCurrentImage--;
            if(projectsSlideShowCurrentImage<0){
                projectSlideShowCurrentProject = getPrevVisibleProjectInSlideShow();
                projectsSlideShowCurrentImage = completeProjectsSlideShow[projectSlideShowCurrentProject].length-1;
            }
        }

        persistProjectsSlideShowState();
        displayProjectsSlideShowImage();
    }
}
function persistProjectsSlideShowState(){
    /* persist image no to session for later retreival */
    if(windowHandlingScriptPath!=""){
        var ssci = projectsSlideShowCurrentImage;
        var sscp = projectSlideShowCurrentProject;
        $.get(windowHandlingScriptPath+"?cmd=udss&ssci="+ssci+"&sscp="+sscp+"&ck="+new Date().getTime());
    }
}
function getNextVisibleProjectInSlideShow(){
    var curId = projectSlideShowCurrentProject;
    var ind = currentProjectIdIndexInVisible(visibleProjectsSlideShowIds,curId);
    ind = ind+1;
    if(ind==visibleProjectsSlideShowIds.length){
        curId = visibleProjectsSlideShowIds[0];
    }else{
        curId = visibleProjectsSlideShowIds[ind];
    }
    return curId;
}
function getPrevVisibleProjectInSlideShow(){
    var curId = projectSlideShowCurrentProject;
    var ind = currentProjectIdIndexInVisible(visibleProjectsSlideShowIds,curId);
    ind = ind-1;
    if(ind<0){
        curId = visibleProjectsSlideShowIds[visibleProjectsSlideShowIds.length-1];
    }else{
        curId = visibleProjectsSlideShowIds[ind];
    }
    return curId;
}
function displayProjectsSlideShowImage(){
    var output = $(".galleryOutput",projectsSlideShowWindow);
    if(countVisibleProjectSlideShowEntries>0){
        var imgSrc = completeProjectsSlideShow[projectSlideShowCurrentProject][projectsSlideShowCurrentImage];
        var img = new Image();
        $(img).load(function () {
            output.css("background-image", "url("+$(this).attr("src")+")");
        }).attr('src', imgSrc);
    }else{
        output.css("background-image", "none");
    }
    displayProjectsSlideShowTitle();
    displayProjectsSlideShowCounter();
}

function displayProjectsSlideShowTitle(){
    removeProjectsSlideShowCreditLine();
    var titlDiv = $("h1", projectsSlideShowWindow);
    var imgTitlDiv = $("h4", projectsSlideShowWindow);
    if(countVisibleProjectSlideShowEntries>0){
        var titlStr =  projectsSlideShowWindowTitlePrefix+": "+completeProjectsSlideShowProjectTitles[projectSlideShowCurrentProject];
        var imgTitlStr =  completeProjectsSlideShowImageTitles[projectSlideShowCurrentProject][projectsSlideShowCurrentImage];
        var copyStr =  completeProjectsSlideShowCopyRights[projectSlideShowCurrentProject][projectsSlideShowCurrentImage];
        titlDiv.html(titlStr);
        if(copyStr){
            imgTitlStr = "<a href='javascript:showProjectsSlideShowCreditLine(\""+copyStr+"\")'>"+copyRightSign+" "+imgTitlStr+"</a>";
        }
        imgTitlDiv.html(imgTitlStr);
    }else{
        titlDiv.html(projectsSlideShowWindowTitlePrefix+": "+projectsSlideShowNoImagesTitle);
        imgTitlDiv.html("");
    }
}
function showProjectsSlideShowCreditLine(str){
    var titlDiv = $("h4", projectsSlideShowWindow);
    titlDiv.hide();
    var ct = copyRightSign+" "+str;
    $("<span class='creditLine'><h5 onclick='removeProjectsSlideShowCreditLine()'>"+ct+"</h5></span>").appendTo($(".galleryOutput", projectsSlideShowWindow).parent());

}

function removeProjectsSlideShowCreditLine(){
    var titlDiv = $("h4", projectsSlideShowWindow);
    var copyDiv = $(".creditLine", projectsSlideShowWindow);
    copyDiv.remove();
    titlDiv.show();

}

function countProjectsSlideShowEntries(){
    var countEntries = 0;
    var c = visibleProjectsSlideShowIds.length;
    for(var i=0;i<c;i++){
        if(completeProjectsSlideShow[visibleProjectsSlideShowIds[i]]){
            countEntries += completeProjectsSlideShow[visibleProjectsSlideShowIds[i]].length;
        }
    }
    return countEntries;
}
function displayProjectsSlideShowCounter(){
    if(countVisibleProjectSlideShowEntries>0){
        var currImgNo = projectsSlideShowCurrentImage+1;
        var currArrNo = currentProjectIdIndexInVisible(visibleProjectsSlideShowIds,projectSlideShowCurrentProject);
        if(currArrNo>0){
            for(var i=0;i<currArrNo;i++){
                currImgNo +=completeProjectsSlideShow[visibleProjectsSlideShowIds[i]].length;
            }
        }
        var projectHandle = '<a href="'+completeProjectsSlideShowProjectLinks[projectSlideShowCurrentProject]+'">'+projectLinkText+'</a> ';
        $(".windowLinks", projectsSlideShowWindow).html(projectHandle);
        $(".windowInfo", projectsSlideShowWindow).html(currImgNo+" - "+countVisibleProjectSlideShowEntries);
    }else{
        $(".windowLinks", projectsSlideShowWindow).html("");
        $(".windowInfo", projectsSlideShowWindow).html("");

    }
}
function currentProjectIdIndexInVisible(arr,ele){
    var c = arr.length;
    for(;c>=0;c--){
        if(arr[c]==ele){return c;}
    }
    return -1;
}




/* window/session handling */
var baseHandle = "";
function setBaseHandle(b){
    baseHandle = b;
    loadImage = baseHandle+"/"+loadImage;
}
var currentHandle = "";
function setCurrentHandle(c){
    currentHandle = c;
}
var searchHandle = "";
function setSearchHandle(s){
    searchHandle = s;
}
var windowHandlingScriptPath = "";
function setWindowHandlingScriptPath(p){
    windowHandlingScriptPath = p;
}
var defaultWindowTop = "";
var defaultWindowLeft = "";
var defaultWindowOffset = 10;
function setWindowDefaultOffset(wdo){
    defaultWindowOffset = wdo*1;
}
function addPageToSession(UUID, handle, top, left, zindex, windowClass, scrollTop){
    if(windowHandlingScriptPath!="" && UUID!=""){
        $.get(windowHandlingScriptPath+"?cmd=aw&UUID="+UUID+"&handle="+handle+"&top="+top+"&left="+left+"&zindex="+zindex+"&windowClass="+windowClass+"&scrollTop="+scrollTop+"&ck="+new Date().getTime());
    }
}
function updateWindowPosition(w){
    var u = w.attr("id");
    var t = w.css("top");//.replace(/[^0-9]/g, '');
    var l = w.css("left");//.replace(/[^0-9]/g, '');
    var z = w.css("zIndex");//.replace(/[^0-9]/g, '');
//    var s = $(".contentWrapper", w).scrollTop();//.replace(/[^0-9]/g, '');
//    var s = getScrollOffsetForJPaneScoll(w);
    var s = getScrollOffsetFortinyScoll(w);
    if(windowHandlingScriptPath!="" && u!=""){
        $.get(windowHandlingScriptPath+"?cmd=uw&UUID="+u+"&top="+t+"&left="+l+"&zindex="+z+"&scrollTop="+s+"&ck="+new Date().getTime());
        lastPersistedZindex = z;
        windowScrollTopValues[u]=s;
//        displayDebug("lastPersistedZindex: "+lastPersistedZindex)
//        displayDebug("lastZindex: "+lastZindex)
    }
}
var lastPersistedZindex = 0;
function updateWindowZindex(w){
    var u = w.attr("id");
    var z = w.css("z-index");
    if(windowHandlingScriptPath!="" && u!="" && lastPersistedZindex!=z){
        $.get(windowHandlingScriptPath+"?cmd=uz&UUID="+u+"&zindex="+z+"&ck="+new Date().getTime());
        lastPersistedZindex = z;
//        displayDebug("lastPersistedZindex: "+lastPersistedZindex)
//        displayDebug("lastZindex: "+lastZindex)
    }
}
function updateWindowScrollPosition(w){
    var u = w.attr("id");
//    var s = getScrollOffsetForJPaneScoll(w);
    var s = getScrollOffsetFortinyScoll(w);
    if(windowHandlingScriptPath!="" && u!=""){
        /* check if scroll position has changed since last update */
        if(windowScrollTopValues[u]==null || windowScrollTopValues[u]!=s){
            $.get(windowHandlingScriptPath+"?cmd=us&UUID="+u+"&scrollTop="+s+"&ck="+new Date().getTime());
            windowScrollTopValues[u]=s;
        }
    }
}
function updateParameterInforamtion(u, p){
    if(windowHandlingScriptPath!="" && u!=""){
        $.get(windowHandlingScriptPath+"?cmd=up&UUID="+u+"&paramValue="+p+"&ck="+new Date().getTime());
    }
}
function resetScrollTop(u){
    if(windowHandlingScriptPath!="" && u!=""){
        $.get(windowHandlingScriptPath+"?cmd=us&UUID="+u+"&scrollTop=0&ck="+new Date().getTime());
    }
}

/* place all windows from session on stage */
var windowObjects = null;
var windowKeys = new Array();
var windowScrollTopValues = new Array();
function placeWindowsFromSession(mainWindowUUID){
    var windowOffset = 0;
    $.get(windowHandlingScriptPath+"?cmd=gw&ck="+new Date().getTime(),function(data){
        var myObject = eval('(' + data + ')');
        var error = (myObject['error']);
        windowObjects = (myObject['windowMap']);
        var tmks = String(myObject['windowKeys']);
        windowKeys = tmks.split(",");
        var lastTop;
        var lastLeft;
        var l=0;
        var highestZIndex = 1;
        var highestTop = parseInt(defaultWindowTop.replace(/[^0-9]/g, ''),10);
        var highestLeft = parseInt(defaultWindowLeft.replace(/[^0-9]/g, ''),10);
        if(windowKeys){l = windowKeys.length;}
//        displayDebug("positioning #no windows: "+l)
        for(var i=0;i<l;i++){
            var tmpUUID = windowKeys[i];
            if(tmpUUID!=""&&tmpUUID!=mainWindowUUID){
                var handle = windowObjects[0][tmpUUID][0]+".html";
//                displayDebug("H: "+handle)
                var top = windowObjects[0][tmpUUID][1];
                var left = windowObjects[0][tmpUUID][2];
                var topInt = parseInt(top.replace(/[^0-9]/g, ''),10);
                var leftInt = parseInt(left.replace(/[^0-9]/g, ''),10);
                if(top == defaultWindowTop && left == defaultWindowLeft){
                    top = topInt+(windowOffset*1)+"px";
                    left = leftInt+(windowOffset*1)+"px";
                    lastTop = top;
                    lastLeft = left;
                    highestTop = topInt;
                    highestLeft = leftInt;
                    windowOffset += defaultWindowOffset;
                }else{
                    /* check if window is in default axis */
                    if(windowIsInDefaultAxis(topInt,leftInt)&&topInt>highestTop&&leftInt>highestLeft){
                        highestTop = topInt;
                        highestLeft = leftInt;
                        lastTop = top;
                        lastLeft = left;
                    }
                }
                var zIndex = parseInt(windowObjects[0][tmpUUID][3], 10);
                if(zIndex>highestZIndex){highestZIndex=zIndex;}
                var windowClass = windowObjects[0][tmpUUID][4];
                if(windowClass==""){windowClass="windowWrapper";}
                windowClass += " windowItem";
                var startImageNo = parseInt(windowObjects[0][tmpUUID][6],10);
                if(isNaN(startImageNo)){startImageNo = 1;}
                var storedParams = windowObjects[0][tmpUUID][7];

                var myStyle =  "top: "+top+"; left: "+left+"; z-index: "+zIndex+";";
                //var windowContent ='<div class="'+windowClass+'" style="'+myStyle+'" id="'+tmpUUID+'"><div class="windowCTRL"><a class="windowCloser" href="javascript:closeThisWindow(\''+tmpUUID+'\')">&nbsp;</a></div><div class="windowMETA"><h1>loading content</h1></div><div class="contentWrapper windowLoader"> <br /><br />' + tmpUUID +" <br /> <a href='"+handle+"'>"+handle+ '</a></div></div>';
                var windowContent ='<div class="'+windowClass+'" style="'+myStyle+'" id="'+tmpUUID+'"><div class="windowCTRL"><a class="windowCloser" href="javascript:closeThisWindow(\''+tmpUUID+'\')">&nbsp;</a></div><div class="windowMETA"><h1>loading content</h1></div><div class="contentWrapper windowLoader"></div></div>';
                $(windowContent).appendTo("#mainWrapper");
                $(".contentWrapper", $("#"+tmpUUID)).fadeTo(0,0.5);
                /* building param string - nocom avoids basehandling (see head.jsp) */
                var windowParams = "?nocom=true";
                if(startImageNo>1){windowParams += "&si="+startImageNo;}
                if(storedParams!=""){windowParams += "&"+storedParams;}
                //avoid cache on searchpage
                if(searchHandle==handle){windowParams += "&ck="+new Date().getTime();}
                //since jquery .load() in conjunction with a fragment removes <script> content (see: http://forum.jquery.com/topic/the-load-function-and-script-blocks ) we need to provide a custom solution
                $.get(handle+windowParams, function(data) {
//                $.get(handle+"?nocom=true&si="+startImageNo, function(data) {
                    /* chopping apart the returned html data and write it to window element */
                    var metaTagString = '<meta name="pageUUID" content="';
                    myUUID = data.substring(data.indexOf(metaTagString)+metaTagString.length);
                    myUUID = myUUID.substring(0, myUUID.indexOf('"'));
                    data = data.substring(data.indexOf('<div class="windowWrapperContent">'), data.indexOf('<!-- end windowWrapperContent -->'));
                    var w = $('#'+myUUID);
                    w.html(data);

                    /* add collapse expand functionality  */
                    var expandedIDs = windowObjects[0][myUUID][8];
                    addCollapseExpandFuncionality(expandedIDs,myUUID);

                    /* style scrollbars and check scroll position */
//                    $(".contentWrapper", w).fadeTo(0,0.5);
                    if(w.hasClass("windowWrapperText") || w.hasClass("windowWrapperProject")){
                        var x = $('.contentWrapper',w).tinyscrollbar(tinyScrollBarParams);
//                        $(".contentWrapper",w).jScrollPane(jScrollPaneParams);
                        var scrollTop = parseInt(windowObjects[0][myUUID][5],10);
                        if(scrollTop > 0){
                                x.tinyscrollbar_update(scrollTop);
//                            try{$(".contentWrapper",w)[0].scrollTo(scrollTop);}catch(pokemon){}
//                            try{$(".contentWrapper",w).data('jsp').scrollTo(0,scrollTop);}catch(pokemon){}
                            windowScrollTopValues[myUUID]=scrollTop;
                        }
                    }else if(w.hasClass("windowWrapperSuper")){
                        var scrollTop = parseInt(windowObjects[0][myUUID][5],10);
                        skinProjectDisplayScrollBar(scrollTop);
//                        if(scrollTop > 0){
////                            try{$(".projectList",w)[0].scrollTo(scrollTop);}catch(pokemon){}
////                            try{$(".projectList",w).data('jsp').scrollTo(0,scrollTop);}catch(pokemon){}
//                            try{$(".projectList",w).scrollTop(scrollTop);}catch(pokemon){}
//
//                        }
                    }

                    /* add classes to links for coloring */
                    decorateContentLinks(w);
                    addScrollListenerToLinks(w);
                });
            }
        }
        highestZIndex++;
        topZindex=highestZIndex;
        /* after all windows are placed order z indexes, enable draging and style links */
        repositionMainWindowAfterPlacingWindowsFromSession($("#"+mainWindowUUID),highestZIndex,highestTop,highestLeft);
//        orderZIdexes(mainWindowUUID);
        addDragingToWindows();
    });
}
function repositionMainWindowAfterPlacingWindowsFromSession(mainWindow,highestZIndex,highestTop,highestLeft){
    var mainTop = mainWindow.css("top");
    var mainLeft = mainWindow.css("left");
    var zIndex = mainWindow.css("zIndex");
//    displayDebug("mainTop "+mainTop)
//    displayDebug("mainLeft "+mainLeft)
//    windowOffset = calculateOffsetFromWindows(windowOffset,defaultWindowOffset,defaultWindowTop,defaultWindowLeft);
//    displayDebug("repos main window "+highestTop+(defaultWindowOffset*1));
    if(mainTop == defaultWindowTop && mainLeft == defaultWindowLeft){
//        displayDebug("repos main window ");
        mainTop = highestTop+(defaultWindowOffset*1)+"px";
        mainLeft = highestLeft+(defaultWindowOffset*1)+"px";
        mainWindow.css("top",mainTop);
        mainWindow.css("left",mainLeft);
    }
    if(highestZIndex>zIndex){mainWindow.css("zIndex",highestZIndex)}
    updateWindowPosition(mainWindow);

}
function windowIsInDefaultAxis(topInt, leftInt){
    var tdwt = parseInt(defaultWindowTop.replace(/[^0-9]/g, ''),10);
    var tdwl = parseInt(defaultWindowLeft.replace(/[^0-9]/g, ''),10);
    var ttop = (topInt-tdwt)%defaultWindowOffset;
    var tleft = (leftInt-tdwl)%defaultWindowOffset;
    return ttop==0&&tleft==0;
}


function calculateOffsetFromWindows(windowOffset,defaultWindowOffset,defaultWindowTop,defaultWindowLeft){
    var top = parseInt(defaultWindowTop)+defaultWindowOffset;
    var left = parseInt(defaultWindowLeft)+defaultWindowOffset;
    while(!compareOffSetOfVisibleWindows(top,left)){
        top+=defaultWindowOffset;
        left+=defaultWindowOffset;
        windowOffset += defaultWindowOffset;
    }
    return windowOffset;

}
function compareOffSetOfVisibleWindows(ctop, cleft){
//    displayDebug("ctop: "+ctop+" cleft: "+cleft);
    var r = true;
    $( ".windowItem:not(.focusedWindow)").each(function(){
        var top = parseInt($(this).css("top"));
        var left = parseInt($(this).css("left"));
//        displayDebug("top: "+top+" left: "+left +" c: "+(top==ctop && left==cleft));
        if(r && (top==ctop && left==cleft)){
            r = false
        }
    });
    return r;
}

function rearangeAllWindowsInOrder(){
    var windowOffset = parseInt(defaultWindowOffset);
    var top = parseInt(defaultWindowTop);
    var left = parseInt(defaultWindowLeft);
    var zIndex = 5;
    var mwID = "";
    $( ".windowItem" ).each(function( intIndex ){
        if($( this ).hasClass("focusedWindow")){
            mwID = $(this).attr("id");
            $( this ).css("top", defaultWindowTop);
            $( this ).css("left", ($(window).width()/2) - ($(this).width()/2)+"px");
        }else{
            $( this ).css("top", top+"px");
            $( this ).css("left", left+"px");
            $( this ).css("zIndex", zIndex++);
            top += windowOffset;
            left += windowOffset;
        }
    });
}


/* remove a single window */
function closeThisWindow(UUID){
    if(windowHandlingScriptPath!="" && UUID!=""){
        $.get(windowHandlingScriptPath+"?cmd=rm&UUID="+UUID+"&ck="+new Date().getTime(), function(){removeWindowFromBody(UUID)});
    }else{
        removeWindowFromBody(UUID);
    }
}
function removeWindowFromBody(UUID){
    $("#"+UUID).remove();
}
/* sort z index for all windows */
var topZindex = 0;
var lastZindex = 0;
function orderZIdexes(mainWindowUUID){

    $( ".windowItem" ).each(function( intIndex ){
        if($( this ).attr("id")!=mainWindowUUID){
            var tmp = parseInt($( this ).css("z-index"));
//            displayDebug($( this ).attr("id")+" z: "+tmp)
            if(lastZindex==0){
                lastZindex=tmp;
            }else{
                if(tmp<lastZindex){
                    tmp++;
//                    $( this ).css("z-index", tmp);
                    lastZindex = tmp;
                }
            }
            if(tmp>topZindex){topZindex=tmp;}
        }
        /* avoid safari cursors bug while dragging */
//        $(this)[0].onselectstart = function () { return false; };
    });
    topZindex =topZindex+1;
    var mainZindex = parseInt($("#"+mainWindowUUID).css("z-index"));
    if(topZindex>mainZindex){
        $("#"+mainWindowUUID).css("z-index", topZindex);
        updateWindowZindex($("#"+mainWindowUUID));
    }
}

/* get window on to top z-index and persist info to session */
function getWindowOnTop(theWindow){
//    displayDebug("zIndexOnTop: "+theWindow)

    if(theWindow.css("z-index")!=topZindex){
        $(".windowItem").removeClass("focusedWindow");
        theWindow.addClass("focusedWindow");
        theWindow.css("z-index", ++topZindex);
//        $(".contentWrapper", theWindow).fadeTo(0,1);
//        updateWindowPosition(theWindow);
        /* check scroll position on link mouseenter */
        $(".focusedWindow a").mouseenter(function(){
            updateFocusedWindowZindexScrollPosition();
        });
    }
    updateWindowZindex(theWindow);
}
function isTopWindow(wid){
    return $("#"+wid).css("z-index")==topZindex;
}

/* position the main window */

function positionMainWindow(UUID, handle, top, left, zindex, windowClass, scrollTop, disableScrollTop){
    defaultWindowTop = top;
    defaultWindowLeft = left;
    if(windowHandlingScriptPath!="" && UUID!=""){
        $.get(windowHandlingScriptPath+"?cmd=mw&UUID="+UUID+"&handle="+handle+"&top="+top+"&left="+left+"&zindex="+zindex+"&windowClass="+windowClass+"&scrollTop="+scrollTop+"&ck="+new Date().getTime(),function(data){
            var myObject = eval('(' + data + ')');
            var rtop = myObject['top'];
            var rleft = myObject['left'];
            if(rtop != top || rleft != left){
                $("#"+UUID).css("top", rtop);
                $("#"+UUID).css("left", rleft);
            }
            /* check search term */
            var queryWebsite = myObject['queryWebsite'];
            setSearchString(queryWebsite);

            var hasQueryParam = ($.getUrlVar("si")==undefined || $.getUrlVar("si")=='');
            if(hasQueryParam){disableScrollTop=true;}

            /* add collapse expand functionality */
            var expandedIDs = myObject['expandedIDs'];
            addCollapseExpandFuncionality(expandedIDs,UUID);

            /* add styled scrollbars if windowtype matches */
            var rstop = parseInt(myObject['scrollTop']);
            if(windowClass=="windowWrapperText" || windowClass=="windowWrapperProject"){
//                $(".contentWrapper").jScrollPane(jScrollPaneParams);
                var x = $('.contentWrapper').tinyscrollbar(tinyScrollBarParams);
                if(!disableScrollTop && rstop>0){
                    x.tinyscrollbar_update(rstop);
//                    $(".contentWrapper").data('jsp').scrollTo(0,rstop);
                    windowScrollTopValues[UUID]=rstop;

                }
            }else if(windowClass == "windowWrapperSuper"){
                skinProjectDisplayScrollBar(rstop);
//                if(rstop > 0){
////                    $(".projectList")[0].scrollTo(rstop);
////                    $(".projectList").data('jsp').scrollTo(0,rstop);
//                    $(".projectList").scrollTop(rstop);
//                }
            }
            /* check startImage no.  */
            if(windowClass=="windowWrapperImages"){
                if($.getUrlVar("si")==undefined || $.getUrlVar("si")==''){
                    var startImage = myObject['startImage'];
                    if(startImage>1){
                        var gid = $(".gallery", $("#"+UUID)).attr("id").substring(4);
                        displayGalleryImageNo(UUID, gid, (startImage*1)-1);
                    }
                }
            }
            decorateContentLinks($("#"+UUID));
            placeWindowsFromSession(UUID);
        });
    }
}

/* add collapse / expand functionality */
function addCollapseExpandFuncionality(openIds, windowID){
    $(".collapsed h3",$("#"+windowID)).click(function(){
        var UUID = $(this).closest('.windowItem').attr("id");
        var collapsID = $(this).parent().attr("id");
//        alert(UUID+" / "+collapsID);
//        alert("*"+$(this).html());
        var d = $(".txt-content", $(this).parent());
        var cmd = "ac";
        if(d.is(':visible')){
            $(".state",this).html("+");
            cmd = "rc";
        }else{
            $(".state",this).html("-");
        }
        $.get(windowHandlingScriptPath+"?cmd="+cmd+"&UUID="+UUID+"&collapsID="+collapsID+"&ck="+new Date().getTime(),function(data){});

        d.slideToggle(200,function(){skinWindowDisplayScrollBar()});
    }).each(function(){
        var id = $(this).parent().attr("id");
        var t = $(this).html();
        if(openIds.indexOf(id)>-1){
            t = "<span class='state'>-</span>"+t;
            $(this).html(t);
            $(".txt-content", $(this).parent()).show();
        }else{
            t = "<span class='state'>+</span>"+t;
            $(this).html(t)
        }
    });

}

/* start drag of windows */
function addDragingToWindows(){
    $(".windowItem").draggable({cursor: "move",containment: [20,40], scroll: true,handle: '.windowDragHandle'
        ,start: function() {
            /* make sure clicked window is on top */
            getWindowOnTop($(this));
        },drag: function() {
//            var t = $(this).css("top").replace(/[^0-9]/g, '');
        },stop: function() {
//            var t = $(this).css("top").replace(/[^0-9]/g, '');
//            if(t<40){$(this).css("top", "40px");}
            /* persist window position */
            updateWindowPosition($(this));
        }
    }).bind("click", function(e){
        /* make sure clicked windows are on top */
        $t = $(e.target);
        /* avoid updating window position if user clicks the close button */
        if(!$t.hasClass('windowCloser')){
            getWindowOnTop($(this));
        }
    });

    /* iphone & ipad handling */
//    $(".windowItem").touch({
//        animate: false,
//        sticky: false,
//        dragx: true,
//        dragy: true,
//        rotate: false,
//        resort: true,
//        scale: false
//    });
}


var startHandle = "";
function setStartHandle(sh){
    startHandle = sh;    
}
/* reset all windows */
function resetAllWindows(){
    if(startHandle!=""){
        window.location.href = startHandle;
    }
//    $.get(windowHandlingScriptPath+"?cmd=ca", function(){
//        window.location.reload();
//    });
}

/* change display of navigation from ul to select */
function reskinNavigation(){
    var newHTML = "";
    /* get a tags of main navigation */
    $('#navigationContainer ul.level1>li>a, #navigationContainer ul.level1>li>strong>a').each(function(idx, item) {
        newHTML += '<select onchange="navigateToURL(this.value)"><option value="'+$(this).attr("href")+'">'+$(this).text()+'</option>';
        /* find parent li element */
        var $myLI = $(this).parent();
        while($myLI.attr("tagName")!="LI"){$myLI = $myLI.parent();}
        $myLI.find("li>a,li>strong>a").each(function(sidx, sitem) {
            newHTML += '<option value="'+$(this).attr("href")+'"';
            //if($(this).attr("href")==currentHandle){newHTML += ' selected="selected"';}
            newHTML += '>'+$(this).text()+'</option>';
        });
        newHTML +='</select>';
    });
    $("#mainNavigationContainer").html(newHTML);
//    /* auto width on ie */
//    if ($.browser.msie && $.browser.version < 9) $('#navigationContainer select')
//    .bind('focus mouseover', function() { $(this).addClass('expand').removeClass('clicked'); })
//    .bind('click', function() { $(this).toggleClass('clicked'); })
//    .bind('mouseout', function() { if (!$(this).hasClass('clicked')) { $(this).removeClass('expand'); }})
//    .bind('blur', function() { $(this).removeClass('expand clicked'); });

}
function navigateToURL(l){
    window.location.href = l;
}
var searchString = "";
function setSearchString(ss){
    searchString = ss;
}
function decorateContentLinks(jqSel){
    var startpath = "http://"+window.location.hostname;
    $("a", jqSel).each(function(){
        var h = $(this).attr("href");
        if(((h.indexOf("/")==0 && (h.toLowerCase().match(/_ex\.pdf$/)==null))||h.indexOf("javascript")==0||h.indexOf("#")==0||h.indexOf(startpath)==0)){
            /* do nothing for internal link */
        }else{
            $(this).addClass("external");
        }
    });
    if(searchString!=undefined&&searchString!=""){
//        displayDebug(searchString);
//        var h =$(".windowWrapperContent",jqSel);
//        $(".contententry h3, .contententry .txt-content",h).each(function(){
//            displayDebug($(this).text());
//            displayDebug("---------------------------");
//           if($(this).text().indexOf(searchString)!=-1){
//               var t = $(this).html();
//
//               var rgxp = new RegExp(searchString, 'g');
//                var repl = '<span class="highlight">' + word + '</span>';
//    element.innerHTML = element.innerHTML.replace(rgxp, repl);
//
//               t.replace((new RegExp('('+searchString+')', 'gi')), '<span class="higlight">$1</span>');
//               $(this).html(t);
//           }
//        });

        $(".windowWrapperContent",jqSel).highlight(searchString);

    }
}
function addScrollListenerToLinks(jqSel){
    /* check scroll position on link mouseenter */
    $("a", jqSel).mouseenter(function(){
        updateWindowScrollPosition(jqSel);
    });
}


/* project */
var visibleProjectsInList = null;
var inlineSearchDefault = "";
function setInlineSearchDefault(t){
    inlineSearchDefault = t;
}
var selectedStates = new Array();
selectedStates['status'] = "";
selectedStates['location'] = "";
selectedStates['city'] = "";
selectedStates['use'] = "";

var fullCitySelectionList = "";
var cityToLocationMap = new Array();
function generateCityToLocationMap(){
    var fpl = fullProjectListWithAllElements.length;
    for(var i=0; i<fpl; i++){
        var l = fullProjectListWithAllElements[i][2];
        var c = fullProjectListWithAllElements[i][3];
        if(!cityToLocationMap.hasOwnProperty(l)){cityToLocationMap[l]=new Array();}
        cityToLocationMap[l].push(c);
    }
    fullCitySelectionList = $("select#citySelect").html();

}
function filterCitiesBasedOnLocation(loc){
    /* reset city dropdown */
    $("select#citySelect").html(fullCitySelectionList);
   /* check selected location*/
    if(loc.length>1){
        var cl = new Array();
        /* contry selection */
        if(loc.length>2){
			if(cityToLocationMap.hasOwnProperty(loc)){
				cl = cityToLocationMap[loc];
			}
		}else{
		/* region/continet selection */
            for (tmploc in cityToLocationMap){
                if(tmploc.indexOf(loc)==0){
                    cl = cl.concat(cityToLocationMap[tmploc]);
                }
            }
        }
        /* remove options from selection list */
        if(cl.length>0){
            var c = 0;
            $("select#citySelect option").each(function() {
                if(c++>0){
                    if(cl.indexOfItem($(this).attr("value"))==-1){
                        if(selectedStates['city'] == $(this).attr("value")){selectedStates['city']="";}
                        $(this).remove();
                    }
                }
            });
        }
    }
    if(selectedStates['city']!=''){$("select#citySelect option[value='"+selectedStates['city']+"']").attr("selected", "selected");}
}
function getStoredFilterStates(){
    $.get(windowHandlingScriptPath+"?cmd=gs&ck="+new Date().getTime(),function(data){
        var myObject = eval('(' + data + ')');
        var s = selectedStates['status'] = myObject['s'];
        var l = selectedStates['location'] = myObject['l'];
        var c = selectedStates['city'] = myObject['c'];
        var u = selectedStates['use'] = myObject['u'];
        if(s!=""){$("select#statusSelect option[value='"+s+"']").attr("selected", "selected");}
        if(c!=""){$("select#citySelect option[value='"+c+"']").attr("selected", "selected");}
        if(u!=""){$("select#useSelect option[value='"+u+"']").attr("selected", "selected");}
        if(l!=""){$("select#locationSelect option[value='"+l+"']").attr("selected", "selected");filterCitiesBasedOnLocation(l)}
        var inlineSearchTerm = myObject['inlineSearchTerm'];
        if(inlineSearchTerm!=""){$("#projectinlinesearch").val(inlineSearchTerm);}
        displayFilteredProjects();
    });
}
function resetProjectFilters(){
    resetProjectSlideShowStates();
    $("form.projectFilter").each(function() {
        this.reset();
    });
    selectedStates['status'] = "";
    selectedStates['location'] = "";
    selectedStates['city'] = "";
    selectedStates['use'] = "";
    $.get(windowHandlingScriptPath+"?cmd=sifl&st=&ck="+new Date().getTime());
    $("#projectinlinesearch").val(inlineSearchDefault);
    $("select#citySelect").html(fullCitySelectionList);
    $(".windowWrapperSuper").each(function(){
        var uid = $(this).attr("id");
        skinProjectDisplayScrollBar(0);
        resetScrollTop(uid);
    });

    filterProjects();
}
function filterProjects(sel){
    var v = $(sel).val();
    var n = $(sel).attr("name");
    if(n=='location'){
        filterCitiesBasedOnLocation(v);
    }
    selectedStates[n] = v;
    /* get all filter states */
    var s = selectedStates['status'];
    var l = selectedStates['location'];
    var c = selectedStates['city'];
    var u = selectedStates['use'];
    /* write states to session */
    $.get(windowHandlingScriptPath+"?cmd=ss&s="+s+"&l="+l+"&c="+c+"&u="+u+"&ck="+new Date().getTime());
    displayFilteredProjects();
}

function displayFilteredProjects(){
    var visibleListElements = new Array();
    /* get all filter states */
    var s = selectedStates['status'];
    var l = selectedStates['location'];
    var c = selectedStates['city'];
    var u = selectedStates['use'];
    /*  get inline search string */
    var searchString = jQuery.trim($("#projectinlinesearch").val()).toLowerCase();

    /* compare the full project list with selected filters */
    var fpl = fullProjectListWithAllElements.length;
    for(var i=0; i<fpl; i++){
        /* status */
        if(s!=""&&fullProjectListWithAllElements[i][1].indexOfItem(s)==-1){continue;}
        /* location */
        if(l!=""){
            if(l.length == 2){
                var cc = fullProjectListWithAllElements[i][2].substring(0,2);
                if(l!=cc){continue;}
            }else{
                if(l!=fullProjectListWithAllElements[i][2]){continue;}
            }
        }
        /* city */
        if(c!=""&&c!=fullProjectListWithAllElements[i][3]){continue;}
        /* use */
        if(u!=""){
            if(fullProjectListWithAllElements[i][4].indexOfItem(u)==-1){continue;}
//            if(u.length == 2){
//                if(fullProjectListWithAllElements[i][4].indexOfItemSubstring(u)==-1){continue;}
//            }else{
//                if(fullProjectListWithAllElements[i][4].indexOfItem(u)==-1){continue;}
//            }
        }
        /* add id of list element to array of visible elements */
        /* check inline search */
        var t = $(".projectInfo",$("#"+fullProjectListWithAllElements[i][0])).text().toLowerCase();
//        $("#debugPannel").html(t+"<br />"+$("#debugPannel").html());
//        document.title += searchString + (t!=inlineSearchDefault.toLowerCase() || t.indexOf(searchString)!=-1) + (t.indexOf(searchString)!=-1);
        var addMe = true;
        if(searchString!=inlineSearchDefault.toLowerCase() && t.indexOf(searchString)==-1){addMe = false;}
        if(addMe)visibleListElements.push(fullProjectListWithAllElements[i][0]);
    }


    if(visibleListElements.length==0){
        $(".emptyProjectListInfo").fadeIn();
    }else{
        $(".emptyProjectListInfo").fadeOut(0);        
    }
    /* hide and show list elements */
    $("ul.projectList li").hide();
    if(visibleListElements.length>0){
        var countVisibleElements = visibleListElements.length;
        for(var k = 0; k<countVisibleElements;k++){
            $("#"+visibleListElements[k]).show();
        }
    }
    visibleProjectsInList = visibleListElements;
    updateProjectsSlideShowElements(visibleProjectsInList);
    setTimeout('updateProjektDisplayScrollBar()', 200);
}
function inlineSearchProjectFilter(){
    var searchString = jQuery.trim($("#projectinlinesearch").val());
    displayFilteredProjects();
    /* write states to session */
    $.get(windowHandlingScriptPath+"?cmd=sifl&st="+searchString+"&ck="+new Date().getTime());

}

function skinProjectDisplayScrollBar(scrollTop){
    var x = $('#projectListWrapper').tinyscrollbar(tinyScrollBarParams);
    if(scrollTop && scrollTop>0){
        x.tinyscrollbar_update(scrollTop);
    }
}
function updateProjektDisplayScrollBar(){
    $('#projectListWrapper').tinyscrollbar_update('relative');
}
function skinWindowDisplayScrollBar(){
//    $(".contentWrapper", $(".focusedWindow")).jScrollPane(jScrollPaneParams);
//    $(".contentWrapper", $(".focusedWindow")).data('jsp').reinitialise();
    $(".contentWrapper", $(".focusedWindow")).tinyscrollbar_update('relative');
}
function moveScrollBarToPosition(pos){
    if(!pos)pos=0;
    $(".contentWrapper", $(".focusedWindow")).tinyscrollbar_update(pos);
}
//var jScrollPaneParams = {showArrows:false, scrollbarWidth:6, dragMaxHeight: 20};
var jScrollPaneParams = {showArrows:false, scrollbarWidth:6, verticalDragMinHeight: 20, verticalDragMaxHeight: 20, verticalGutter: 30};
var tinyScrollBarParams = { sizethumb: 20 };

/* executed when document is loaded */
$(document).ready(function(){
    reskinNavigation();
    $(window).mousedown(function(){
        updateFocusedWindowZindexScrollPosition();
    });
    /* check scroll position on link mouseenter */
    $(".focusedWindow a").mouseenter(function(){
        updateFocusedWindowZindexScrollPosition();
    });
    /* position searchbox */
    positionSearchBox();
    $(window).resize(function() {
        positionSearchBox();
    });
    /* statement functionality */
    statementFunctionalities();

});


/* helper methods */

function updateFocusedWindowZindexScrollPosition(){
    var fw = $(".focusedWindow");
    if(fw.length>0){
        /* update z index */
        updateWindowZindex(fw);
        /* update scrollTop */
        updateWindowScrollPosition(fw);
    }
    
}

function getScrollOffsetFortinyScoll(win){
    var r = 0;
    try{
        r = win.find(".overview").css("top");
        if(r.indexOf(".")!=-1){r=r.substring(0,r.indexOf("."));}
        r = r.replace(/[^0-9\.]/g, '');
    }catch(pokemon){}
    return r;
}
function getScrollOffsetForJPaneScoll(win){
    if(win.hasClass('windowWrapperSuper')){
        return $(".projectList", win).scrollTop();
    }
    var jqObj = $(".jspPane", win);
    var st = jqObj.css("top");
    st = parseInt(st);
    if(isNaN(st)){st=0;}
    if(st<0){st = st*-1;}
    return st;

}

/* statement */
function statementFunctionalities(){
    $(".textAndImage .caption span").click(function(){
        var sp = $(this);
        var t1 = sp.html();
        var t2 = sp.parent().attr("id");
        sp.html(t2);
        sp.parent().attr("id",t1);

    });
}



Array.prototype.shuffle = function( b ) {
 var i = this.length, j, t;
 while( i ) {
  j = Math.floor( ( i-- ) * Math.random() );
  t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
  this[i] = this[j];
  this[j] = t;
 }
 return this;
};

Array.prototype.indexOfItem = function( a ) {
    var p = -1;
    var l = this.length;
    for(var i=0;i<l;i++){
        if(this[i]==a){
            p = i;
            break;
        }
    }
    return p;
}
Array.prototype.indexOfItemSubstring = function( a ) {
    var p = -1;
    var l = this.length;
    for(var i=0;i<l;i++){
        if(this[i].substring(0,2)==a){
            p = i;
            break;
        }
    }
    return p;
}

function get_radio_value(formhandle){
    var r = "";
    for (var i=0; i < formhandle.length; i++){
        if (formhandle[i].checked){
            r = formhandle[i].value;
        }
    }
    return r;
}
$.extend({
  getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i].split('=');
      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});

function displayDebug(t){
    if(displayWindowDebug){
        $("#debugPannel").html(t+"<br/>"+$("#debugPannel").html());
    }
}

var displayWindowDebug = false;
