// $Id: my.js 2 2010-03-04 20:42:51Z mysz $
function name (val, names) {
    var sval = val.toString ();
    var last = sval.substring (sval.length-1);
    if (val == 1) {
        return sval + " " + names[0];
    }
    else if (val > 10 && val < 20) {
        return sval + " " + names[2];
    }
    else if (last == 1) {
        return sval + " " + names[2];
    }
    else if (last >= 2 && last <= 4) {
        return sval + " " + names[1];
    }
    else {
        return sval + " " + names[2];
    }
}

function count () {
    var diff    = (FREE_DATE - new Date ()) / 1000;
    var ret     = new Array ();

    var days    = parseInt (diff / 86400);
    if (days > 0) {
        ret.push (name (days, ["dzień", "dni", "dni"]));
    }

    diff %= 86400;
    var hours = parseInt (diff / 3600);
    if (hours > 0) {
        ret.push (name (hours, ["godzina", "godziny", "godzin"]));
    }

    diff %= 3600;
    var minutes = parseInt (diff / 60);
    if (minutes > 0) {
        ret.push (name (minutes, ["minuta", "minuty", "minut"]));
    }

    diff %= 60;
    var seconds = parseInt (diff);
    if (seconds > 0) {
        ret.push (name (seconds, ["sekunda", "sekundy", "sekund"]) + "!");
    }

    var cnt     = $('#content');
    var data    = ret.join (", ");
    var doc     = $(window);

    cnt.html (
        "Do następnego dnia wolnego zostało jeszcze tylko:<br />" +
        "<strong>" + data + "</strong>" +
        "<p id='name' title='" + TYPES[TYPE] + "'>" + NAME + "</p>"
    )
    document.title = "Do następnego dnia wolnego zostało jeszcze tylko: " + data;

    cnt.css ({
        left: (doc.width () - cnt.width ()) / 2,
        top: (doc.height () - cnt.height ()) / 2
    });
}

function set_options__action (url, cookie) {
    $.getJSON (url, function (data) {
        TYPE = data['type'];
        FREE_DATE = new Date (data['year'], data['month'], data['day']);
        NAME = data['name'];
        count ();
        $.setCookie ('skip', cookie.join ('|'), {
            duration: 365
        });
    });
}

function parse_qs (querystring) {
    var queryparams = {};
    var queryparts, queryitem;

    queryparts = querystring.split ('&');
    for (var i=0; i<queryparts.length; ++i) {
        queryitem = queryparts[i].split ('=', 2);
        if (queryitem[0].toLowerCase () != 'skip_saturdays' && queryitem[0].toLowerCase () != 'skip_sundays') {
            if (!(queryitem[0] in queryparams)) {
                queryparams[queryitem[0]] = new Array ();
            }
            queryparams[queryitem[0]].push (queryitem[1]);
        }
    }

    return queryparams;
}

function create_qs (url, params) {
    var qs = new Array ();
    for (var k in params) {
        for (var i=0; i<params[k].length; ++i) {
            qs.push (k + '=' + params[k][i]);
        }
    }
    url += (url.indexOf ('?') < 0) ? '?' : '&';
    return url + qs.join ('&');
}

function set_options () {
    var params = parse_qs (window.location.search.substring (1));
    var url = '/?xhr=1';

    $('#no-saturdays').click (function () {
        var cookie = new Array ();
        if ('skip_saturdays' in params) {
            delete (params['skip_saturdays']);
            $(this).html ('nie licz sobót');
        }
        else {
            params['skip_saturdays'] = [1];
            $(this).html ('licz soboty');
        }

        set_options__action (create_qs (url, params), cookie);
    });

    $('#no-sundays').click (function () {
        var cookie = new Array ();
        if ('skip_sundays' in params) {
            delete (params['skip_sundays']);
            $(this).html ('nie licz niedziel');
        }
        else {
            params['skip_sundays'] = [1];
            $(this).html ('licz niedziele');
        }

        set_options__action (create_qs (url, params), cookie);
    });
}

