/** CONSTANTS **/

$J = jQuery.noConflict();

/** VARIABLES **/

var imageGalleryState = new Object();


/**
 * changing zoom level onthefly
 * @param   string          zoom level
 */
function changeZoomLevel(zoomLevel){
    var ZOOM_LINKS_ID_BASE = 'headerZoomLink_';
    var ZOOM_LINKS_ID_PARAM = new Array('small', 'normal', 'big');

    if(typeof(document.getElementById('zoomCSS')) == 'undefined')
        return;
    
    // resetting css path
    document.getElementById('zoomCSS').href = './files/system/css/'+zoomLevel+'.css';

    // marking active zoom link
    for(var i=0 ; i<ZOOM_LINKS_ID_PARAM.length ; i++){
        document.getElementById(ZOOM_LINKS_ID_BASE + ZOOM_LINKS_ID_PARAM[i]).className = '';
    }
    
    document.getElementById(ZOOM_LINKS_ID_BASE + zoomLevel).className = 'headerZoomLinkActive';
    
    // fire ajax query to save level in session
    $J.get('', {
        level: zoomLevel
    });
}

/**
 * initiates and creates the gallery
 * 
 * @param parentColumn - important for getting the width of the parental column [used as jQuery-Selector!]
 * @param images - selector for image elements
 * @param sliceID - for multi-gallery support per page
 * @param imagesInContainer - how many images are shown per container 
 * @return VOID
 */
function imageGalleryCreateContainers(parentColumn, images, sliceID, imagesInContainer)
{
    //imageGalleryImageSelector = images;
    var numImg = $J(images).length;
    var imgArr = $J(images);
    var pageCount = Math.ceil(numImg / imagesInContainer);
    var pWidth = $J(parentColumn).width()+'px';
    var tmp = "";
    var addIntoElement = '#imageSlider_'+sliceID;
    
    if(imagesInContainer == -1)
        imagesInContainer = numImg;
        
    count = 0;

    // creating all necessary containers
    for(var i=1; i<=numImg; i+=imagesInContainer)
    {
        // create container
        $J(addIntoElement).append('<div class="imageGalleryContainer" id="imageGalleryContainer_'+sliceID+'_'+count+'">'+"\n"+'</div>');
        tmp = $J(addIntoElement+" #imageGalleryContainer_"+sliceID+'_'+count);

        // add styles to container
        tmp.css('width', pWidth );
        
        // appending all images to accordant containers
        for(var k=0; k<imagesInContainer; k++)
        {
            $J(addIntoElement+" #imageGalleryContainer_"+sliceID+'_'+count).append(imgArr[(i-1)+k]);
        }
        
        count++;
    }
    
    imageGalleryState['slice_'+sliceID] = new Object();
    imageGalleryState['slice_'+sliceID].currentContainer = 0;
    imageGalleryState['slice_'+sliceID].countContainers = count;
    var containerWidth = $J('#imageGalleryContainer_'+sliceID+'_0').outerWidth();

    // modify parent slider box
    $J(addIntoElement).css('width', (pageCount * containerWidth)+'px');

    // add next/previous buttons to wrapper
    tmp = $J('#imageWrapper_'+sliceID);
    
    var buttonWrapper = '<div class="imageGalleryButtonWrapper">\n';
    buttonWrapper += '<div class="imageGalleryNextButton" id="next_'+sliceID+'">nächste Seite</div>\n';
    buttonWrapper += '<div class="imageGalleryPrevButton" id="prev_'+sliceID+'">vorherige Seite</div>\n';
    buttonWrapper += '</div>\n\n';    
    
    tmp.append(buttonWrapper);
    
    $J("#next_"+sliceID).click(function(){
        imageGalleryNEXT(sliceID);
    });
    
    $J("#prev_"+sliceID).click(function(){
        imageGalleryPREV(sliceID);
    });
    
    $J("#prev_"+sliceID).css("display", "none");
}

/**
 * functionality for NEXT-Button
 * @return VOID
 */
function imageGalleryNEXT(sliceID)
{
    var containerWidth = $J('#imageGalleryContainer_'+sliceID+'_0').outerWidth();
    var targetMarginLeft = parseInt($J("#imageSlider_"+sliceID).css("margin-left")) - containerWidth;

    $J('#imageGalleryContainer_'+sliceID+'_'+imageGalleryState['slice_' + sliceID].currentContainer).css("opacity", 0.3);
    $J('#imageGalleryContainer_'+sliceID+'_'+(imageGalleryState['slice_' + sliceID].currentContainer + 1)).css("opacity", 1.0);
    
    imageGalleryState['slice_'+sliceID].currentContainer++;

    $J("#imageSlider_"+sliceID).animate({ "margin-left": targetMarginLeft }, 300, function(){
        if((imageGalleryState['slice_' + sliceID].countContainers - 1) == imageGalleryState['slice_' + sliceID].currentContainer)
        {
            $J("#next_"+sliceID).css("display", "none");
        }
        else
        {
            $J("#next_"+sliceID).css("display", "block");
            $J("#prev_"+sliceID).css("display", "block");
        }
    });
}

/**
 * functionality for PREV-Button
 * @return VOID
 */
function imageGalleryPREV(sliceID)
{
    var containerWidth = $J('#imageGalleryContainer_'+sliceID+'_0').outerWidth();
    var targetMarginLeft = parseInt($J("#imageSlider_"+sliceID).css("margin-left")) + containerWidth;
    
    $J('#imageGalleryContainer_'+sliceID+'_'+imageGalleryState['slice_' + sliceID].currentContainer).css("opacity", 0.3);
    $J('#imageGalleryContainer_'+sliceID+'_'+(imageGalleryState['slice_' + sliceID].currentContainer - 1)).css("opacity", 1.0);
    
    imageGalleryState['slice_'+sliceID].currentContainer--;
        
    $J("#imageSlider_"+sliceID).animate({ "margin-left": targetMarginLeft }, 300, function(){
        if(imageGalleryState['slice_' + sliceID].currentContainer == 0)
        {
            $J("#prev_"+sliceID).css("display", "none");
        }
        else
        {
            $J("#next_"+sliceID).css("display", "block");
            $J("#prev_"+sliceID).css("display", "block");
        }
    });
}

var calendarObjects = new Array();

function fopenCalendar(targetId, inputId, refDateInput, setSensitiveDate)
{
    if(!calendarObjects[targetId])
    {
        // init calendar
       
        calendarObjects[targetId] = new dhtmlxCalendarObject(targetId,
                                        false,
                                        {
                                            isYearEditable: true,
                                            isMonthEditable: true,
                                            isWinHeader: true,
                                            headerButtons: "XT",
                                            isWinDrag: false,
                                            yearsRange: (
                                                (typeof(setSensitiveDate) == 'undefined' || setSensitiveDate != false) ?
                                                [new Date().getFullYear(), new Date().getFullYear()+5] :
                                                [1950, new Date().getFullYear()]
                                            ),
                                            headerText: ''
                                        });
        calendarObjects[targetId].setDateFormat("%d.%m.%Y");
        calendarObjects[targetId].loadUserLanguage("de");
        calendarObjects[targetId].setOnClickHandler(function(){
            document.getElementById(inputId).value = this.getFormatedDate();
            this.hide();
        });
        
        // set sensitive range to now until 2 years in future
        var today = new Date();
        
        if(typeof(setSensitiveDate) == 'undefined' || setSensitiveDate != false)
        {
            calendarObjects[targetId].setSensitive(today, new Date(today.getFullYear() + 2, 11, 31));
        }
        
        calendarObjects[targetId].draw();
        
        if(typeof(refDateInput) != 'undefined' && refDateInput != '' && document.getElementById(refDateInput).value != '')
            calendarObjects[targetId].setDate(document.getElementById(refDateInput).value);
    }
    
    calendarObjects[targetId].show();
}

