/**
 * Funkce spouštěná po načtení stránek
 */
function init()
{
    $(document).pngFix( {blankgif:'images/clear.gif'} );
    
    $(".withShadow").textShadow();

    $(".ddLangSelect").msDropDown();

    $('a.target_blank').click(function() {
        window.open(this.href);
		return false;
	});
	
	$('a.lightbox').lightBox();
        
    loadCalendar();

    initPassInputs();


    // zjištění, zda jednotlivé instance NicerSelectors (inicializace na smarty/templates/_main.tpl) nejsou zavedené, pokud ne -> zavést
     if ( !NicerSelectorSmall )
     {
         NicerSelectorSmall = new NicerSelectors('smallNSelector', {
             west: 'styledSboxL',
             middle: 'styledSboxMid',
             east: 'styledSboxR'
         } );
     }
     if ( !NicerSelectorBig )
     {
         NicerSelectorBig = new NicerSelectors('bigNSelector', {
            west: 'styledSboxBigL',
            middle: 'styledSboxBigMid',
            east: 'styledSboxBigR'
        });
     }
     if ( !NicerSelectorCategory )
     {
         NicerSelectorCategory = new NicerSelectors('bigHotelDetailCatSelector', {
            west: 'stylesSboxRatingL',
            middle: 'stylesSboxRatingMid',
            east: 'stylesSboxRatingR'
        }, {
            attachClassName: true
        });
     }
     if ( !NicerSelectorReservation )
     {
         NicerSelectorReservation = new NicerSelectors('fitReservationSelector', {
            west: 'stylesSboxReservationL',
            middle: 'stylesSboxReservationMid',
            east: 'stylesSboxReservationR'
        }, {
            attachClassName: true
        });
     }


    // Nastavení kalendáře

    var minDate = new Date();
    //minDate     = new Date( minDate.getTime() + 1000*60*60*24 ); // +1 day


    $( ".textBoxShortWithCalendar input" ).datepicker({
        showOn: "button",
        buttonImage: "images/calendar.gif",
        buttonImageOnly: true,
        minDate: minDate
    });
    $( ".textBoxShortWithCalendarSmall input" ).datepicker({
        showOn: "button",
        buttonImage: "images/calendar_small.png",
        buttonImageOnly: true,
        minDate: minDate
    });

    $( '#loginForm .submitButton').mouseover( function() {
        $( '#loginForm .withSubmit .jNiceInputInner').addClass('hover');
    });
    $( '#loginForm .submitButton').mouseout( function() {
        $( '#loginForm .withSubmit .jNiceInputInner.hover').removeClass('hover');
    });

	$( '#loginForm .submitButton').attr( 'title', dict['Přihlásit'] );

    attachHoverEffect( getAllClassElements( null, 'buttonHover' ) );

}

function initial_blocks(where)
{

    // zjištění, zda jednotlivé instance NicerSelectors (inicializace na smarty/templates/_main.tpl) nejsou zavedené, pokud ne -> zavést, pokud ano -> pouze update
    if ( !NicerSelectorBig )
    {
        NicerSelectorBig = new NicerSelectors('bigNSelector', {
            west: 'styledSboxBigL',
            middle: 'styledSboxBigMid',
            east: 'styledSboxBigR'
        });
    }
    else
    {
         NicerSelectorBig.update();
    }

    if ( !NicerBigSelector )
    {
        NicerBigSelector = new NicerSelectors( 'bigSelector', {
            west: 'bigSelectorL',
            middle: 'bigSelectorMid',
            east: 'bigSelectorR'
        } );
    }
    else
    {
        NicerBigSelector.update();
    }

    if ( !NicerSelectorCategory )
    {
        NicerSelectorCategory = new NicerSelectors('bigHotelDetailCatSelector', {
            west: 'stylesSboxRatingL',
            middle: 'stylesSboxRatingMid',
            east: 'stylesSboxRatingR'
        }, {
            attachClassName: true
        });
    }
    else
    {
        NicerSelectorCategory.update();
    }

    if ( !NicerSelectorReservation )
    {
        NicerSelectorReservation = new NicerSelectors('fitReservationSelector', {
            west: 'stylesSboxReservationL',
            middle: 'stylesSboxReservationMid',
            east: 'stylesSboxReservationR'
        }, {
            attachClassName: true
        });
    }
    else
    {
        NicerSelectorReservation.update();
    }

    

    

    $(where + ' .toggleIcon').click(function() {
        var superer = this;

        var blockId         = $(this).attr('rel');
        var sourceLinkObj   = $(this);

        if ( blockId.length>0 )
        {
            $('#'+blockId).slideToggle('slow', function(){

                if ( sourceLinkObj.hasClass('icon_minus') )
                {
                    sourceLinkObj.removeClass('icon_minus');
                    sourceLinkObj.addClass('icon_plus');

                    var els = getAllClassElements( superer.parentNode, 'iconMessage' );
                    if ( els )
                    {
                        els[0].innerHTML = dict['zobrazit'];
                    }

                    $('.hodnoceniContent').show();
                }
                else
                {
                    sourceLinkObj.addClass('icon_minus');
                    sourceLinkObj.removeClass('icon_plus');
                    var els = getAllClassElements( superer.parentNode, 'iconMessage' );
                    if ( els )
                    {
                        els[0].innerHTML = dict['skrýt'];
                    }

                    if ( blockId=='hotelDetailRatingAddContent' )
                    {
                        var mainContent = $('#hotelDetailContentId');
                        var subContent  = $('#'+blockId);

                        if ( mainContent && subContent )
                        {
                            if ( $(mainContent).height()<$(subContent).height() )
                            {
								$(mainContent).height( $(subContent).height()+50 );
                            }
                            else
                            {
                                $(mainContent).height( $(mainContent).height() );
                            }
                        }

                        $('.hodnoceniContent').hide();
                    }
                }
				
				var mainContent = $('#hotelDetailContentId');
				var subContent  = $('#hotelDetailContentId div:first-child');
				var mainContent2= $('#contentMiddle');

				if ( mainContent && subContent && mainContent2 )
				{
					var mainContentHeight = $(mainContent).height();

					if ( $(mainContent).height()<$(subContent).height() )
					{
						$(mainContent).height( $(subContent).height() );
					}
					else
					{
						$(mainContent).height( $(mainContent).height() );
					}

					var h1 =  $(mainContent2).height();
					var h2 =  $(mainContent).height();
					var h3 =  mainContentHeight;
					
					$(mainContent2).height( h1+h2-h3 ); 
				}
				
		
            });
        }

        return false;
    });

    if ( isSet( document.getElementById('recenzeFotogalerieList') ) )
    {
        document.getElementById('recenzeFotogalerieList').onclick = function(){
            return false;
        };
    }
    




    
}

function initPassInputs()
{
    try{
        $('.passInput').attr('type', 'text');
    }
    catch (e)
    {
    }
}

/**
 * Smaže hodnotu inputu pokud je stejná jako defaultní hodnota
 * @param obj
 * @param value
 * @param password - udává, zda se jedná o prvek typu password
 */
function deleteValueIfTheSame( obj, value, password )
{
    if ( obj.value==value )
    {
        obj.value   = '';

        if ( isSet( password ) && password )
        {
            try
            {
                obj.type = "password";
            }
            catch (e)
            {
            }
        }
    }
}

function loadCalendar()
{
	var minDate = new Date();
    //minDate     = new Date( minDate.getTime() + 1000*60*60*24 ); // +1 day

    $( "input.hasDPicker" ).datepicker({
        showOn: "button",
        buttonImage: "images/calendar_small.png",
        buttonImageOnly: true,
        minDate: minDate
    });

}

function setMojeHotely(hotelId, refreshList)
{
    if ( null == refreshList || !refreshList )
    {
        $('#detailContentAddToFavourites'+'_'+hotelId).load('ajax.php?modul=moje_hotely&hotel_id='+hotelId);
    }
    else
    {
        $('#detailContentAddToFavourites'+'_'+hotelId).load('ajax.php?modul=moje_hotely&hotel_id='+hotelId, function(){
            zobraz_hotely();
        });
    }
}

function printPage()
{
    window.print();
}


/**
 * Odešle formulář předaný v parametru pomocí AJAX volání na server
 * @param form
 */
function sendFormUniverzal( form, modul, funcSuccess )
{
    var id = form.id;

    var preloader = new Preloader( 'detailHoteluSendPreloader' )
    preloader.show();

    var messageBoxId          = 'message_box_'+id;
    var errorBoxId            = 'error_box_'+id;

    $('#'+messageBoxId).slideUp('slow');
    $('#'+errorBoxId).slideUp('slow');

    $.post(
        "ajax.php?modul="+modul+"&action="+id,
        $(form).serialize(),
        function(data){
            var errorMessage = data.error_message;
            var stdMessage = data.std_message;
            var result = data.result;

            preloader.hide();

            if ( result=='ok' )
            {
                if ( funcSuccess )
                {
                    eval(funcSuccess);
                }
                
                js_alert(stdMessage);
            }
            else
            {
                js_alert(errorMessage);
            }
       },
        "json"
   );
}

/**
 * Vyresetuje nastavení formuláře pro detailní vyhledávání
 */
function resetDetailFiltr(goToVypisHotelu)
{
    var form = document.getElementById('hotelyDetailSearch_id');

    if ( form )
    {
        form.reset();
        
        form.action += '&resetFiltr=yes';
		
		if ( goToVypisHotelu )
		{
			form.action += '&goToVypisHotelu=yes';
		}
		
        form.submit();
    }

    return false;
}

function getHotelsReview( hotelId, from, selCat )
{
    $('#hotelDetailContentId').load('ajax.php?modul=detail_hotelu&hotel_id='+hotelId+'&page_name=hodnoceni&from='+from+'&selected_cat='+selCat);
}

function getHotelsReservations( hotelId, from )
{
    $('#seznamRezervaciSelectorOutputId').load('ajax.php?modul=admin_hotely&action=get_hotel_reservations&hotel_id='+hotelId+'&from='+from, function(){$( '.jNiceAjax' ).jNice();});
}

function getHotelsHodnoceni( hotelId, from )
{
    $('#seznamRezervaciSelectorOutputId').load('ajax.php?modul=admin_hotely&action=get_hotel_hodnoceni&hotel_id='+hotelId+'&from='+from, function(){$( '.jNiceAjax' ).jNice();});
}

function clearSeznamHodnoceniFiltr( formId )
{
    var i;
    var formEl = document.getElementById( formId );
    var inpChildren = formEl.getElementsByTagName( 'input' );

    for ( i = 0; i < inpChildren.length; i++ )
    {
        if ( !isSet( inpChildren[i].type ) || inpChildren[i].type == 'text' )
        {
            inpChildren[i].value = '';
        }
    }

    var selChildren = formEl.getElementsByTagName( 'select' );

    for ( i = 0; i < selChildren.length; i++ )
    {
        selChildren[i].selectedIndex = 0;

        if ( NicerSelectorBig )
        {
            var actSelbox = NicerSelectorBig.getSelectorBySelectbox( selChildren[i] );

            if ( actSelbox )
            {
                actSelbox.updateValue();
            }
        }
    }
    if ( isElement( formEl ) && formEl.tagName.toLowerCase() == 'form' && isFunction( formEl.onsubmit ) )
    {
            formEl.onsubmit();
    }
    else
    {
        formEl.submit();
    }
}

function clearSeznamRezervaciFiltr( formId )
{
    var i;
    var formEl = document.getElementById( formId );
    var inpChildren = formEl.getElementsByTagName( 'input' );

    for ( i = 0; i < inpChildren.length; i++ )
    {
        if ( !isSet( inpChildren[i].type ) || inpChildren[i].type == 'text' )
        {
            inpChildren[i].value = '';
        }
    }

    var selChildren = formEl.getElementsByTagName( 'select' );

    for ( i = 0; i < selChildren.length; i++ )
    {
        selChildren[i].selectedIndex = 0;

        if ( NicerSelectorBig )
        {
            var actSelbox = NicerSelectorBig.getSelectorBySelectbox( selChildren[i] );

            if ( actSelbox )
            {
                actSelbox.updateValue();
            }
        }
    }
    if ( isElement( formEl ) && formEl.tagName.toLowerCase() == 'form' && isFunction( formEl.onsubmit ) )
    {
            formEl.onsubmit();
    }
    else
    {
        formEl.submit();
    }
}

function clearSuperSeznamaciRezervaciFiltr( formId )
{
    clearSeznamRezervaciFiltr( formId );
}


/* changeAjaxContent - změní obsah
 *
 * @author SomeBW
 * @param selectbox (<i>nepovinný parametr</i>) - selectbox ve tvaru {
 *      elementId: 'id elementu selectboxu',
 *      param: 'parametr odesílaný pomocí get s hodnotou value vybraného prvku',
 *      disabled: 'prvek selectboxu s neaktivním přepínáním'
 *  } 
 * @param outputId - id výstupního elementu
 * @param params - parametry ve tvaru {parametr1: 'hodnota1', parametr2: 'hodnota2', ...}
 * @param preloader (<i>nepovinný parametr</i>) - objekt Preloaderu
 *
 */
function changeAjaxContent( outputId, params, preloader, selectbox )
{
    if ( isSet( selectbox ) )
    {
        selectbox.element = document.getElementById( selectbox.elementId );

        var selectedValue = selectbox.element.options[selectbox.element.selectedIndex].value;
    }

    var disabledValue;
    
    try
    {
        disabledValue = selectbox.disabled;
    }
    catch(ee)
    {
        disabledValue = null;
    }

    if ( !isSet( disabledValue ) || ( isSet( disabledValue ) && isSet( selectedValue ) && selectedValue != disabledValue ) )
    {
        if ( isSet( preloader ) )
        {          
            preloader.show();
        }

        var urlParams = '';

        for ( var i in params )
        {
            if (urlParams == '')
            {
                urlParams = '?'+i+'='+params[i];
            }
            else
            {
                urlParams += '&'+i+'='+params[i];
            }
        }

        var selboxParam;

        try
        {
            selboxParam = selectbox.param;
        }
        catch( ee )
        {
            selboxParam = null;
        }


        if ( isSet( selectbox ) && isSet( selboxParam ) )
        {
            if (urlParams == '')
            {
                urlParams = '?'+selectbox.param+'='+selectedValue;
            }
            else
            {
                urlParams += '&'+selectbox.param+'='+selectedValue;
            }
        }

        $( '#'+outputId ).load( 'ajax.php'+urlParams, function(){

            $( '.jNiceAjax' ).jNice();
            
            if ( isSet( preloader ) )
            {
                preloader.hide();
            }
        } );
    }
}

/*  Preloader - objekt preloadru zobrazí nebo skryje ukazatele načítání
 *
 * @author SomeBW
 * @param preloaderId - id elementu preloaderu
 * @param elementId - id elementu ke skrytí (nepovinný parametr)
 */
function Preloader( preloaderId, elementId )
{
    if ( !isSet( elementId ) )
    {
        elementId = false;
    }

    this.show = function()
    {
        if ( elementId != false )
        {
            $( '#'+elementId ).removeClass( 'displayed' );
            $( '#'+elementId ).addClass( 'hidden' );
        }

        $( '#'+preloaderId ).removeClass( 'hidden' );
        $( '#'+preloaderId ).addClass( 'displayed' );
    }

    this.hide = function()
    {
        if ( elementId != false )
        {
            $( '#'+elementId ).removeClass( 'hidden' );
            $( '#'+elementId ).addClass( 'displayed' );
        }

        $( '#'+preloaderId ).removeClass( 'displayed' );
        $( '#'+preloaderId ).addClass( 'hidden' );
    }

}

function attachHoverEffect( elements )
{
    var appliedItems = new Array;
    
    for (var i = 0; i < elements.length; i++ )
    {
        appliedItems[appliedItems.length] = new attachHoverToElement( elements[i] );
    }

    function attachHoverToElement( element )
    {
        var mainImage = {};
        mainImage.path = element.src;
        mainImage.name = mainImage.path.replace( new RegExp(/\.[A-Za-z0-9]+$/), '' );
        mainImage.extension = mainImage.path.replace( new RegExp( /^.*\.([A-Za-z0-9]+$)/), '$1' );

        element.onmouseover = function()
        {
            this.src = mainImage.name+'_hover.'+mainImage.extension;
        }

        element.onmouseout = function()
        {
            this.src = mainImage.path;
        }
    }
    
}


function mapaShowArea( areaNumber )
{
    if ( areaNumber < 8 )
    {
        document.getElementById( 'ma' ).style.backgroundPosition = "0px -"+( areaNumber * 193 )+"px";
    } 
    else
    {
        document.getElementById( 'ma' ).style.backgroundPosition = "-429px -"+( ( areaNumber - 7 ) * 193 )+"px";
    }
}

function WaitingFunctions()
{
	var functs = new Array();

	this.add = function( funct )
	{

	}

	this.run = function()
	{

	}
}


function delReservation( resId, elToRemove )
{
    if ( confirm( dict['Opravdu chcete zrušit vybranou rezervaci?'] ) )
    {
        $.post(
            "ajax.php?modul=delete_reservation",
            {reservation_id: resId},
            function( data )
            {
                var destArray;
                eval( 'destArray = '+data );

                try
                {
                    js_alert( destArray.message );

                    if ( destArray.status == 'ok' )
                    {
                        $( '#hotelReservation'+resId ).addClass( 'deleted' );
                        elToRemove.parentNode.removeChild( elToRemove );
                    }
                }
                catch ( e ){}
            }
        )
    }
}

/**
 * Zkontroluje jestil je datum ve správném formátu a jestli není v historii
 */
function checkValidDate( from, inputName )
{
	return true;
	
	/*
	if ( !from )
	{
		return false;
	}
	
	var valid	= true;
	var message = '';
	
	var value	= $(from).val();
	
	if ( value.length<=0 )
	{
		message = '';
		
		valid	= false;
	}
	else
	if ( !value.match(/[0-9]{1,2}[.]{1}[0-9]{1,2}[.]{1}[0-9]{4}/) )
	{
		message = 'Zadejte prosím '+inputName+' ve formátu \'dd.mm.yyyy\'';
		
		valid	= false;
	}
	else
	{
		var dateCurrent			= new Date();
		var dateInput			= false;
		
		var dateInputArr		= value.split('.');
		
		if ( dateInputArr.length==3 )
		{
			dateInput		= new Date(dateInputArr[2], dateInputArr[1]-1, dateInputArr[0]);
		}
		
		
		var dateCurrentClear	= new Date( dateCurrent.getFullYear(), dateCurrent.getMonth(), dateCurrent.getDate() );
		
		
		console.log(dateCurrent);
		console.log(dateInput);
		
		console.log(dateCurrentClear);
		
		if ( dateInput<dateCurrentClear )
		{
			message				= 'Datum v poli \''+inputName+'\' musí být menší než aktuální datum';
			
			valid				= false;
		}
	}
	
	if ( valid )
	{
		return true;
	}
	else
	{
		if ( message.length>0 )
		{
			//js_alert(message, from);
			js_alert(message);
		}
		
		return false;
	}
	*/	
	
}
