var _3k_kalendar_dan_ms =   1000*60*60*24;

var _3k_kalendar_datum  =   new Date();
var _3k_kalendar_selected_datum   =   new Date();

var _3k_tmp_mjesec  =   0;
var _3k_tmp_godina  =   0;

var _3k_kalendar_base_url   =   '';

var _3k_kalendar_arr_mjeseci    =   new Array('siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac');
var _3k_kalendar_linear         =   false;
var _3k_kalendar_background_color   =   'black';
var _3k_kalendar_selected_class     =   'niktitanik_kalendar_zuto';

function _3k_kalendar_init(p_base_url, p_dan, p_mjesec, p_godina)
{
    _3k_kalendar_base_url   =   p_base_url;

    // spremi selektirani datum
    _3k_kalendar_selected_datum.setDate(p_dan);
    _3k_kalendar_selected_datum.setMonth(p_mjesec-1);
    _3k_kalendar_selected_datum.setFullYear(p_godina)


    // postavi datum na 01.p_mjesec.p_godina
    _3k_kalendar_datum.setDate(1);
    _3k_kalendar_datum.setMonth(p_mjesec - 1);
    _3k_kalendar_datum.setFullYear(p_godina);
    
    _3k_kalendar_refresh();
}

function _3k_kalendar_refresh()
{
    // u ovom trenutku _3k_kalendar_datum mora biti postavljen na 01.mjesec.godina

    // odredi dan u tjednu od kojeg pocinje
    //0 - nedjelja
    //1 - ponedjeljak

    dan_u_tjednu    =   _3k_kalendar_datum.getDay();
    
    // prebaci nedjelju na kraj
    if(dan_u_tjednu == 0){
        dan_u_tjednu = 7;
    }

    // ako ne treba preskakati pocetak ovisno
    // o danu u tjednu pocetka mjeseca
    if(_3k_kalendar_linear){
        dan_u_tjednu = 1;
    }


    // odredi prvi dan slijedeceg mjeseca
    _3k_tmp_mjesec  =   _3k_kalendar_datum.getMonth(); // + 1 maknuto jer je na kalendarima sijecanj imao 28 dana
    _3k_tmp_godina  =   _3k_kalendar_datum.getFullYear();

    _3k_kalendar_inc_mjesec();

    tmp_datum   =   new Date();
    tmp_datum.setDate(1);
    tmp_datum.setMonth(_3k_tmp_mjesec - 1);
    tmp_datum.setFullYear(_3k_tmp_godina);

    // razlika dana izmedu dva datuma je broj dana u mjesecu
    //dana_u_mjesecu  =   Math.ceil((tmp_datum.getTime() - _3k_kalendar_datum.getTime()) / _3k_kalendar_dan_ms);

    //dana_u_mjesecu = _3k_kalendar_dana_u_mjesecu( _3k_tmp_mjesec-1, _3k_tmp_godina );
    dana_u_mjesecu = _3k_kalendar_dana_u_mjesecu( _3k_tmp_mjesec, _3k_tmp_godina );

    // popuni kalendar

    // prvo popuni praznine
    for(_index = 1; _index < dan_u_tjednu; _index++){
        div =   document.getElementById('dan_' + _index);

        if(div){
            div.innerHTML   =   '&nbsp;';
        }
    }
    //alert('selected datum=' + _3k_kalendar_selected_datum.toString());
    //alert('index=' . _index);

    
    // postavi dane
    for(_index = 1; _index <= dana_u_mjesecu; _index++){
        div =   document.getElementById('dan_' + (_index + dan_u_tjednu - 1));

        tmp_datum.setHours(0); // ponoc
        tmp_datum.setMinutes(0);
        tmp_datum.setSeconds(0);
        tmp_datum.setDate(_index);
        tmp_datum.setMonth(_3k_kalendar_datum.getMonth());
        tmp_datum.setFullYear(_3k_kalendar_datum.getFullYear());

        tmp_ts  =   Math.ceil(tmp_datum.getTime() / 1000);
        
        if((_3k_kalendar_selected_datum.getDate() == _index) && (_3k_kalendar_selected_datum.getMonth()==_3k_kalendar_datum.getMonth()) && (_3k_kalendar_selected_datum.getFullYear()==_3k_kalendar_datum.getFullYear())){
            div.innerHTML   =   '<span class="' + _3k_kalendar_selected_class + '">' + _index + '</span>';
        } else {
            if(div){
                div.innerHTML   =   '<a href="' + _3k_kalendar_base_url + tmp_ts + '" class="link_background_' + _3k_kalendar_background_color + '">' + _index + '</a>';
                //alert(div.classname);
            }
        }
    }

    // pocisti ostatak
    for(_index = dan_u_tjednu + dana_u_mjesecu; _index <= 43; _index++){

        _div_id = 'dan_' + ( _index );

        div =   document.getElementById( _div_id );

        if(div){
            div.innerHTML   =   '&nbsp;';
        }
    }


    // postavi ime mjeseca
    div =   document.getElementById('kalendar_mjesec');

    if(div){
        div.innerHTML   =   _3k_kalendar_arr_mjeseci[_3k_kalendar_datum.getMonth()];
    }

    // postavi godinu
    div =   document.getElementById('kalendar_godina');

    if(div){
        div.innerHTML   =   _3k_kalendar_datum.getFullYear();
    }
}

function _3k_kalendar_next_mjesec()
{
    _3k_tmp_mjesec  =   _3k_kalendar_datum.getMonth() + 1;
    _3k_tmp_godina  =   _3k_kalendar_datum.getFullYear();

    _3k_kalendar_inc_mjesec();

    _3k_kalendar_datum.setDate(1);
    _3k_kalendar_datum.setMonth(_3k_tmp_mjesec - 1);
    _3k_kalendar_datum.setFullYear(_3k_tmp_godina);

    _3k_kalendar_refresh();
}

function _3k_kalendar_prev_mjesec()
{
    _3k_tmp_mjesec  =   _3k_kalendar_datum.getMonth() + 1;
    _3k_tmp_godina  =   _3k_kalendar_datum.getFullYear();

    _3k_kalendar_dec_mjesec();

    _3k_kalendar_datum.setDate(1);
    _3k_kalendar_datum.setMonth(_3k_tmp_mjesec - 1);
    _3k_kalendar_datum.setFullYear(_3k_tmp_godina);

    _3k_kalendar_refresh();

}

function _3k_kalendar_next_godina()
{
    _3k_kalendar_datum.setFullYear(_3k_kalendar_datum.getFullYear() + 1);

    _3k_kalendar_refresh();
}

function _3k_kalendar_prev_godina()
{
    _3k_kalendar_datum.setFullYear(_3k_kalendar_datum.getFullYear() - 1);

    _3k_kalendar_refresh();
}

//
// Privatne funkcije
//
function _3k_kalendar_inc_mjesec()
{
    _3k_tmp_mjesec++;
    if(_3k_tmp_mjesec>12){
        _3k_tmp_godina++;
        _3k_tmp_mjesec = 1;
    }
}

function _3k_kalendar_dec_mjesec()
{
    _3k_tmp_mjesec--;
    if(_3k_tmp_mjesec<1){
        _3k_tmp_godina--;
        _3k_tmp_mjesec = 12;
    }

}

function _3k_kalendar_dana_u_mjesecu( month, year ) {
    var m = [31,28,31,30,31,30,31,31,30,31,30,31];
    if (month != 2) return m[month - 1];
    if (year%4 != 0) return m[1];
    if (year%100 == 0 && year%400 != 0) return m[1];
    return m[1] + 1;
}