/** \file kalendarz.js
 *  \brief plik zawiera definicje klasy kalendarz
 *  \author Kamil Filipczyk
 *  \version 1.0
 *  \date 20-01-2009
 */

/** \class kalendarz
 *  \brief klasa odpowiedzialna za renderowanie i logike kalendarza
 *  \author Kamil Filipczyk
 *  \version 1.0
 *  \date 20-01-2009
 */
kalendarz =
{
    rysuj : function( identyfikator )
    {
        kalendarz.rysuj_okno_i_zmienne( identyfikator, 'nie' ) ;
    },

    rysuj_z_czasem : function( identyfikator )
    {
        kalendarz.rysuj_okno_i_zmienne( identyfikator, 'tak' ) ;
    },
    
    rysuj_okno_i_zmienne : function( identyfikator, z_czasem )
    {
        var html = new String( "" ) ;

        html += '<div przeciagaj="nie" id="'+identyfikator+'_okno_kalendarza"></div>' ;
        html += '<div przeciagaj="nie" id="'+identyfikator+'_dane" style="display:none">' ;
        html += '<input przeciagaj="nie" value="" type="text" id="'+identyfikator+'_rok" style="display:none"> ' ;
        html += '<input przeciagaj="nie" value="" type="text" id="'+identyfikator+'_miesiac" style="display:none"> ' ;
        html += '<input przeciagaj="nie" value="" type="text" id="'+identyfikator+'_dzien" style="display:none"> ' ;
        html += '<input przeciagaj="nie" value="" type="text" id="'+identyfikator+'_godzina" style="display:none"> ' ;
        html += '<input przeciagaj="nie" value="" type="text" id="'+identyfikator+'_minuta" style="display:none"> ' ;
        html += '<input przeciagaj="nie" value="" type="text" id="'+identyfikator+'_sekunda" style="display:none"> ' ;
        html += '<input przeciagaj="nie" value="'+z_czasem+'" type="text" id="'+identyfikator+'_czas" style="display:none"> ' ;
        
        html += '</div>' ;
        $( identyfikator+'_okno' ).innerHTML = html ;

        // aktualizuje pole
        if( $F( identyfikator ) != '' &&  $F( identyfikator ).substr( 0, 1 ) != 'Z' )
        {
            if( z_czasem == 'tak' ) 
            { 
                var data_str = $F( identyfikator ) ;
                var data_str2 = data_str.split( ' ' ) ;
                var data = data_str2[ 0 ].split( '-' ) ;
                
                var czas= "00:00:00" ;
                if( data_str2[ 1 ] != undefined )  czas = data_str2[ 1 ].split( ':' ) ;
              
                $( identyfikator+'_rok' ).value = data[ 0 ] ;
                $( identyfikator+'_miesiac' ).value =parseInt( kalendarz.popraw_miesiac( data[ 1 ] ) )-1 ;
                $( identyfikator+'_dzien'  ).value = kalendarz.popraw_napis(  data[ 2 ] ) ;
                $( identyfikator+'_godzina' ).value = kalendarz.popraw_napis(  czas[ 0 ] ) ;
                $( identyfikator+'_minuta' ).value = kalendarz.popraw_napis(  czas[ 1 ] ) ;
                $( identyfikator+'_sekunda' ).value = kalendarz.popraw_napis(  czas[ 2 ] ) ;
            }
            else
            {
                data_str = $F( identyfikator ) ;
                data = data_str.split( '-' ) ;
                $( identyfikator+'_rok' ).value = data[ 0 ] ;
                $( identyfikator+'_miesiac' ).value =  value =parseInt( kalendarz.popraw_miesiac( data[ 1 ] ) )-1 ;
                $( identyfikator+'_dzien'  ).value =  kalendarz.popraw_napis( data[ 2 ] ) ;
            }
        }
        
        kalendarz.rysuj_kalendarz( identyfikator ) ;
        
        $( identyfikator+'_okno' ).show() ;
    },

    rysuj_kalendarz : function ( identyfikator )
    {
        var html = new String( "" ) ;
        var data = new Date() ;
        var aktualny_rok = data.getFullYear() ;
        var aktualny_miesiac = data.getMonth() ;
        var aktualny_dzien = data.getDate() ;
        var aktualna_godzina = data.getHours() ;
        var aktualna_minuta = data.getMinutes() ;
        var aktualna_sekunda = data.getSeconds() ;

        var rok = $F( identyfikator+'_rok' ) ;
        var miesiac = $F( identyfikator+'_miesiac' ) ;
        var dzien = $F( identyfikator+'_dzien' ) ;
        var godzina = $F( identyfikator+'_godzina' ) ;
        var minuta = $F( identyfikator+'_minuta' ) ;
        var sekunda = $F( identyfikator+'_sekunda' ) ;
        var czas = $F( identyfikator+'_czas' ) ;

        if( rok.replace(/ /g, '') == ""  ) rok = aktualny_rok ;
        if( miesiac.replace(/ /g, '') == ""  ) miesiac = aktualny_miesiac ;
        if( dzien.replace(/ /g, '') == ""  ) dzien = aktualny_dzien ;
        if( godzina.replace(/ /g, '') == ""  ) godzina = aktualna_godzina ;
        if( minuta.replace(/ /g, '') == ""  ) minuta = aktualna_minuta ;
        if( sekunda.replace(/ /g, '') == ""  ) sekunda = aktualna_sekunda ;

        rok = parseInt( rok ) ;
        miesiac = parseInt( miesiac ) ;
        dzien = parseInt( dzien ) ;

        $( identyfikator+'_rok' ).value = rok ;
        $( identyfikator+'_miesiac' ).value = miesiac ;
        $( identyfikator+'_dzien'  ).value = dzien ;

        html += '<div class="tab_kalendarz" style="cursor:default;width:220px;position:absolute">' ;
        html += '<table cellspacing="1" cellpadding="1"  width="100%"><td przeciagaj="nie" class="wypukle" width="16"><a  przeciagaj="nie" href="javascript:zero()" onclick="kalendarz.wyczysc_date( \''+identyfikator+'\' )"><img title="Wyszczyść pole daty" przeciagaj="nie" src="gfx/usun_sz.png" border="0"></a></td><td   przeciagaj="nie"  class="wypukle"  align="center" ><b>Kalendarz</b></td><td   przeciagaj="nie"  class="wypukle"  width="16"><a  przeciagaj="nie" href="javascript:zero()" onclick="$( \''+identyfikator+'_okno\' ).style.display=\'none\'"><img  title="Zamknij okno kalendarza" przeciagaj="nie" src="gfx/usun.png" border="0"></a></td></tr></table>' ;

        // rysuje rok
        html += '<table cellspacing="1" cellpadding="1"   width="100%"><tr><td przeciagaj="nie" class="wypukle" width="16"><a  przeciagaj="nie"  href="javascript:kalendarz.odejmij_rok( \''+identyfikator+'\', '+rok+' );"><img  przeciagaj="nie" title="Odejmij rok"  src="gfx/odejmij.png" border="0"></a></td><td   przeciagaj="nie"  class="wypukle"  align="center" >Rok: <b>'+rok+'</b></td><td   przeciagaj="nie"  class="wypukle"  width="16"><a  przeciagaj="nie" href="javascript:kalendarz.dodaj_rok( \''+identyfikator+'\', '+rok+' );"><img  przeciagaj="nie" title="Dodaj rok" src="gfx/dodaj.png" border="0"></a></td></tr></table>' ;

        //rysuj miesiac
        html += '<table  cellspacing="1" cellpadding="1"  width="100%"><tr><td  przeciagaj="nie"  class="wypukle" width="16"><a  przeciagaj="nie" href="javascript:kalendarz.odejmij_miesiac( \''+identyfikator+'\', '+miesiac+' );"><img  przeciagaj="nie" title="Odejmij miesiąc"  src="gfx/odejmij.png" border="0"></a></td><td  przeciagaj="nie"  class="wypukle"  align="center" >Miesi\u0105c: <b>'+kalendarz.podaj_miesiac( miesiac )+'</b></td><td  przeciagaj="nie"  class="wypukle"  width="16"><a  przeciagaj="nie"  href="javascript:kalendarz.dodaj_miesiac( \''+identyfikator+'\', '+miesiac+' );"><img title="Dodaj miesiąc" przeciagaj="nie"  src="gfx/dodaj.png" border="0"></a></td></tr></table>' ;

        // rysuje dni miesiaca
        var dzien_tygdnia  = new Date( rok, miesiac, 1 ).getDay() ;
        if( dzien_tygdnia == 0 ) dzien_tygdnia = 7 ;

        html += '<table  cellspacing="1" cellpadding="1"  width="100%"  ><tr><td   przeciagaj="nie"  class="wypukle" >pon</td><td  przeciagaj="nie"  class="wypukle" >wto</td><td   przeciagaj="nie"  class="wypukle" >śro</td><td  przeciagaj="nie"  class="wypukle" >czw</td><td   przeciagaj="nie" class="wypukle" >pią</td><td   przeciagaj="nie" style="background-color:rgb( 255, 240, 240 )" class="wypukle" >sob</td><td  przeciagaj="nie"  style="background-color:rgb( 255, 230, 230 )" class="wypukle"  >nie</td></tr>' ;

        var rysowac_dni = false ;
        var ilosc_dni = kalendarz.podaj_ilosc_dni( rok, miesiac+1 ) ;

        for( i = 1 ; i <= ilosc_dni ;)
        {
            html += '<tr>' ;
            for( j = 1 ; j < 8 ; j++ )
            {
                if( i > ilosc_dni ) rysowac_dni = false ;
                if( rysowac_dni == false &&  i <= ilosc_dni )
                {
                    if( dzien_tygdnia == j ) rysowac_dni = true ;
                }

                if( rysowac_dni == false )
                {
                    if( j == 6 ) html += '<td   przeciagaj="nie"  style="background-color:rgb( 255, 240, 240 )" align="center"> &nbsp </td>' ;
                    else if( j == 7 ) html += '<td  przeciagaj="nie"  style="background-color:rgb( 255, 230, 230 )" align="center">  &nbsp  </td>' ;
                    else html += '<td  przeciagaj="nie"  > &nbsp </td>' ;
                }
                else
                {
                    if( rok == aktualny_rok && miesiac == aktualny_miesiac && dzien == ( i ) )
                        html += '<td  przeciagaj="nie" class="wypukle" style="background-color:rgb( 200, 0, 0 ); color: rgb(255,255,255)" align="center"><a  przeciagaj="nie" href="javascript:kalendarz.wybierz_date( \''+identyfikator+'\', '+i+' )" style="display:block" class="bialy2">'+i+'</a></td>' ;
                    else if( j == 6 ) html += '<td  przeciagaj="nie" class="wypukle" style="background-color:rgb( 255, 240, 240 )" align="center"><a  przeciagaj="nie" href="javascript:kalendarz.wybierz_date( \''+identyfikator+'\', '+i+' )" style="display:block" class="czarny">'+i+'</a></td>' ;
                    else if( j == 7 ) html += '<td  przeciagaj="nie" class="wypukle" style="background-color:rgb( 255, 230, 230 )" align="center"><a  przeciagaj="nie" href="javascript:kalendarz.wybierz_date( \''+identyfikator+'\', '+i+' )" style="display:block" class="czarny">'+i+'</a></td>' ;
                    else html += '<td  przeciagaj="nie" class="wypukle" align="center"><a  przeciagaj="nie" href="javascript:kalendarz.wybierz_date( \''+identyfikator+'\', '+i+' )" style="display:block" class="czarny">'+i+'</a></td>' ;
                    i++ ;
                }
            }
            html += '</tr>' ;
        }
        html += '</table>' ;

	
        if( czas == 'tak' )
        {
            html += '<table  cellspacing="1" cellpadding="1"   przeciagaj="nie"  width="100%"><tr><td class="wypukle" align="center">' ;
            html += ' godzina: <select przeciagaj="nie" class="wklesle_stronicowanie" id="'+identyfikator+'_godzina">' ;
            for( var g = 0 ; g < 25 ; g++ )
            {
                html += '<option ' ;
                if( godzina == g ) html += ' selected ' ;
                html += ' przeciagaj="nie">'+g+'</option>' ;
            }
            html += '</select>' ;
            html += ' : <select przeciagaj="nie" class="wklesle_stronicowanie" id="'+identyfikator+'_minuta">' ;
            for( var m = 0 ; m < 60 ; m++ )
            {
                html += '<option ' ;
                if( minuta == m ) html += ' selected ' ;
                html += ' przeciagaj="nie">'+m+'</option>' ;
            }
            html += '</select>' ;
            html += ' : <select przeciagaj="nie" class="wklesle_stronicowanie" id="'+identyfikator+'_sekunda">' ;
            for( var s = 0 ; s < 60 ; s++ )
            {
                html += '<option ' ;
                if( sekunda == s ) html += ' selected ' ;
                html += ' przeciagaj="nie">'+s+'</option>' ;
            }
            html += '</select>' ;
            html +='</td></tr></table>' ;

            //biezaca data
            html += '<table   cellspacing="1" cellpadding="1"  przeciagaj="nie"  width="100%"><tr><td   przeciagaj="nie"  class="wypukle"  align="center" ><a   przeciagaj="nie"  href="javascript:kalendarz.ustaw_biezaca( \''+identyfikator+'\' )" style="display:block" class="czarny" align="center" ><b  przeciagaj="nie" > Ustaw bie\u017caca date i czas </b></a></td></tr></table>' ;
            html += '<table   cellspacing="1" cellpadding="1"  przeciagaj="nie"  width="100%"><tr><td   przeciagaj="nie"  class="wypukle"  align="center" ><a   przeciagaj="nie"  href="javascript:kalendarz.ustaw_zmienna_date_i_czas( \''+identyfikator+'\' )" style="display:block" class="czarny" align="center" >Zmienna bieżącej daty i czas</a></td></tr></table>' ;
        }
        else //biezaca data
        {
            html += '<table   cellspacing="1" cellpadding="1"  przeciagaj="nie"  width="100%"><tr><td   przeciagaj="nie"  class="wypukle"  align="center" ><a   przeciagaj="nie"  href="javascript:kalendarz.ustaw_biezaca( \''+identyfikator+'\' )" style="display:block" class="czarny" align="center" ><b  przeciagaj="nie" > Ustaw bie\u017caca date </b></a></td></tr></table>' ;
            html += '<table   cellspacing="1" cellpadding="1"  przeciagaj="nie"  width="100%"><tr><td   przeciagaj="nie"  class="wypukle"  align="center" ><a   przeciagaj="nie"  href="javascript:kalendarz.ustaw_zmienna_date( \''+identyfikator+'\' )" style="display:block" class="czarny" align="center" >Zmienna bieżącej daty</a></td></tr></table>' ;    
        }

        html += ' </td></tr></table></div>' ;
        $( identyfikator+'_okno_kalendarza' ).innerHTML = html ;
    },

    wybierz_date: function( identyfikator, i )
    {
        var rok = $F( identyfikator+'_rok' ) ;
        var miesiac = kalendarz.popraw_miesiac(  parseInt( $F( identyfikator+'_miesiac' ) )+1 ) ;
        var dzien = kalendarz.popraw_dzien( i ) ;
        var godzina = kalendarz.popraw_dzien( $F( identyfikator+'_godzina' ) ) ;
        var minuta =  kalendarz.popraw_dzien( $F( identyfikator+'_minuta' ) ) ;
        var sekunda =  kalendarz.popraw_dzien( $F( identyfikator+'_sekunda' ) ) ;
        var czas = $F( identyfikator+'_czas' ) ;

        if( czas == 'tak' ) $( identyfikator ).value = rok+'-'+miesiac+'-'+dzien+' '+godzina+':'+minuta+':'+sekunda ;
        else $( identyfikator ).value = rok+'-'+miesiac+'-'+dzien ;
        $( identyfikator+'_okno' ).style.display = "none" ;
    },
    
    wyczysc_date: function( identyfikator )
    {
        $( identyfikator ).value = '' ;
        $( identyfikator+'_okno' ).style.display = "none" ;
    },

    odejmij_rok: function( identyfikator, rok )
    {
        rok-- ;
        $( identyfikator+'_rok' ).value = rok ;
        kalendarz.rysuj_kalendarz( identyfikator ) ;
    }, 

    dodaj_rok: function( identyfikator, rok )
    {
        rok++ ;
        $( identyfikator+'_rok' ).value = rok ;
        kalendarz.rysuj_kalendarz( identyfikator ) ;
    }, 

    dodaj_miesiac: function( identyfikator, miesiac )
    {
        miesiac++ ;
        if( miesiac > 11 ) miesiac = 0 ;
        $( identyfikator+'_miesiac' ).value = miesiac ;
        kalendarz.rysuj_kalendarz( identyfikator ) ;
    }, 

    odejmij_miesiac: function( identyfikator, miesiac )
    {
        miesiac-- ;
        if( miesiac < 0 ) miesiac = 11 ;
        $( identyfikator+'_miesiac' ).value = miesiac ;
        kalendarz.rysuj_kalendarz( identyfikator ) ;
    },

    ustaw_biezaca : function( identyfikator )
    {
        var data = new Date() ;

        $( identyfikator+'_rok' ).value =  data.getFullYear() ;
        $( identyfikator+'_miesiac' ).value =  data.getMonth() ;
        $( identyfikator+'_dzien' ).value =  data.getDate() ;

        $( identyfikator+'_godzina' ).value = data.getHours() ;
        $( identyfikator+'_minuta' ).value = data.getMinutes() ;
        $( identyfikator+'_sekunda' ).value = data.getSeconds() ;

        kalendarz.rysuj_kalendarz( identyfikator ) ;
    }, 

    ustaw_zmienna_date_i_czas : function( identyfikator )
    {
        var godzina = kalendarz.popraw_dzien( $F( identyfikator+'_godzina' ) ) ;
        var minuta =  kalendarz.popraw_dzien( $F( identyfikator+'_minuta' ) ) ;
        var sekunda =  kalendarz.popraw_dzien( $F( identyfikator+'_sekunda' ) ) ;

        $( identyfikator ).value = 'Zmienna data '+godzina+':'+minuta+':'+sekunda ;
        $( identyfikator+'_okno' ).style.display = "none" ;
    },
    
    ustaw_zmienna_date : function( identyfikator )
    {
        $( identyfikator ).value = 'Zmienna data ' ;
        $( identyfikator+'_okno' ).style.display = "none" ;
    },

    podaj_miesiac :function( i )
    {
        switch( i )
        {
            case 0 :
                return "stycze\u0144" ;
            case 1 :
                return "luty" ;
            case 2 :
                return "marzec" ;
            case 3 :
                return "kwiecie\u0144" ;
            case 4 :
                return "maj" ;
            case 5 :
                return "czerwiec" ;
            case 6 :
                return "lipiec" ;
            case 7 :
                return "sierpie\u0144" ;
            case 8 :
                return "wrzesie\u0144" ;
            case 9 :
                return "pa\u017adziernik" ;
            case 10 :
                return "listopad" ;
            case 11 :
                return "grudzie\u0144" ;
        }
    },
    

    podaj_ilosc_dni: function ( rok, miesiac )
    {
        var ilosc_dni = 0 ;

        switch( parseInt( miesiac ) )
        {
            case 1 :
                ilosc_dni = 31 ;
                break ;
            case 2 :
                ilosc_dni = 28 ;
                break ;
            case 3 :
                ilosc_dni = 31 ;
                break ;
            case 4 :
                ilosc_dni = 30 ;
                break ;
            case 5 :
                ilosc_dni = 31 ;
                break ;
            case 6 :
                ilosc_dni = 30 ;
                break ;
            case 7 :
                ilosc_dni = 31 ;
                break ;
            case 8 :
                ilosc_dni = 31 ;
                break ;
            case 9 :
                ilosc_dni = 30 ;
                break ;
            case 10 :
                ilosc_dni = 31 ;
                break ;
            case 11 :
                ilosc_dni = 30 ;
                break ;
            case 12 :
                ilosc_dni = 31 ;
                break ;
        }
        if (((rok % 4 == 0) && (rok % 100 != 0)) || (rok % 400 == 0))
        {
            if( miesiac == 2 ) ilosc_dni = 29 ;
        }

        return ilosc_dni ;
    },

    popraw_miesiac: function( miesiac )
    {
        miesiac = parseInt( miesiac ) ;
        if( miesiac == 0 ) miesiac = '00' ;
        if( miesiac == 1 ) miesiac = '01' ;
        if( miesiac == 2 ) miesiac = '02' ;
        if( miesiac == 3 ) miesiac = '03' ;
        if( miesiac == 4 ) miesiac = '04' ;
        if( miesiac == 5 ) miesiac = '05' ;
        if( miesiac == 6 ) miesiac = '06' ;
        if( miesiac == 7 ) miesiac = '07' ;
        if( miesiac == 8 ) miesiac = '08' ;
        if( miesiac == 9 ) miesiac = '09' ;

        return miesiac ;
    },

    popraw_dzien : function( dzien )
    {
        dzien = parseInt( dzien ) ;
        if( dzien == 0 ) dzien = '00' ;
        if( dzien == 1 ) dzien = '01' ;
        if( dzien == 2 ) dzien = '02' ;
        if( dzien == 3 ) dzien = '03' ;
        if( dzien == 4 ) dzien = '04' ;
        if( dzien == 5 ) dzien = '05' ;
        if( dzien == 6 ) dzien = '06' ;
        if( dzien == 7 ) dzien = '07' ;
        if( dzien == 8 ) dzien = '08' ;
        if( dzien == 9 ) dzien = '09' ;

        return dzien ;
    },
    
    popraw_napis : function( dzien )
    {
        dzien = parseInt( dzien ) ;
        if( dzien == '00' ) dzien = 0 ;
        if( dzien == '01' ) dzien = 1 ;
        if( dzien == '02' ) dzien = 2 ;
        if( dzien == '03' ) dzien = 3 ;
        if( dzien == '04' ) dzien = 4 ;
        if( dzien == '05' ) dzien = 5 ;
        if( dzien == '06' ) dzien = 6 ;
        if( dzien == '07' ) dzien = 7 ;
        if( dzien == '08' ) dzien = 8 ;
        if( dzien == '09' ) dzien = 9 ;

        return dzien ;
    }
}

function zero() {} 
