//
// Extend the Date object
//
Date.prototype.getOrdinal = function()
{
    var map = {1:'st',21:'st',31:'st',2:'nd',22:'nd',3: 'rd',23:'rd'};
    return map[this.getDate()] != null ? map[this.getDate()] : 'th';
}

Date.prototype.getMonthString = function()
{
    return ['January','February','March','April','May','June','July','August','September','October','November','December'][this.getMonth()];
}

Date.prototype.getDayString = function()
{
    return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][this.getDay()];
}


function toggleElement(element_id)
{
    var element = document.getElementById(element_id);
    if (element) {
        if (element.style.display == "" || element.style.display == "none") {
            element.style.display = "block";
        } else {
            element.style.display = "none";
        }
    }
}

function hideElement(element_id)
{
    var element = document.getElementById(element_id);
    if (element) {
        element.style.display = "none";
    }
}

function showElement(element_id)
{
    var element = document.getElementById(element_id);
    if (element) {
        element.style.display = "block";
    }
}

function is_numeric(value)
{
    if ((isNaN(value)) || (value.length == 0)) {
        return false;
    } else {
        return true;
    }
}

function getWindowHeight()
{
    var windowHeight=0;
    if (typeof(window.innerHeight)=='number') {
        windowHeight=window.innerHeight;
    } else {
        if (document.documentElement && document.documentElement.clientHeight) {
            windowHeight = document.documentElement.clientHeight;
        } else {
            if (document.body&&document.body.clientHeight) {
                windowHeight=document.body.clientHeight;
            }
        }
    }

    return windowHeight;
}

function getScrollHeight()
{
    var scrollHeight=0;
    if (typeof(window.scrollHeight)=='number') {
        scrollHeight=window.scrollHeight;
    } else {
        if (document.documentElement && document.documentElement.scrollHeight) {
            scrollHeight = document.documentElement.scrollHeight;
        } else {
            if (document.body&&document.body.scrollHeight) {
                scrollHeight=document.body.scrollHeight;
            }
        }
    }

    return scrollHeight;
}

function cal_init()
{
    cal_departing = new CalendarBlock('calendar_departing',8,2007);
    cal_returning = new CalendarBlock('calendar_returning',8,2007);
    cal_departing.fillSelectDays(8, 2007);
    cal_returning.fillSelectDays(8, 2007);
}

function keyPressIsNumber(e)
{

    if(window.event){
        keynum = e.keyCode
    } else if(e.which) {
        keynum = e.which
    }

    if(
        (keynum >= 48 && keynum <= 57) || // numbers
        (keynum == 63234 || keynum == 63235) || // arrow keys
        (keynum == 63272 || keynum == 8) || // delete and backspace
        (keynum == 9) // tab
    ){

        return true;

    } else {

        return false;

    }

}

function number_format(number, decimals, decimal_sign, thousands_sign)
{
    number = Math.round(number * Math.pow(10, decimals)) / Math.pow(10, decimals);
    e = number + '';
    f = e.split('.');
    if (!f[0]) {
        f[0] = '0';
    }
    if (!f[1]) {
        f[1] = '';
    }
    if (f[1].length < decimals) {
        g = f[1];
        for (i=f[1].length + 1; i <= decimals; i++) {
            g += '0';
        }
    f[1] = g;
    }
    if(thousands_sign != '' && f[0].length > 3) {
        h = f[0];
        f[0] = '';
        for(j = 3; j < h.length; j+=3) {
            i = h.slice(h.length - j, h.length - j + 3);
            f[0] = thousands_sign + i +  f[0] + '';
        }
        j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
        f[0] = j + f[0];
    }
    decimal_sign = (decimals <= 0) ? '' : decimal_sign;
    return f[0] + decimal_sign + f[1];
}

function homepageCalendarInit()
{
    var date_now = new Date();
    cal_departing = new CalendarBlock('calendar_departing',date_now.getMonth(),date_now.getFullYear());
    // fill the days dropdown (this should prob be server side instead of onload)
    cal_departing.fillSelectDays(date_now.getMonth(), date_now.getFullYear());

    cal_returning = new CalendarBlock('calendar_returning',date_now.getMonth(),date_now.getFullYear());
    // fill the days dropdown (this should prob be server side instead of onload)
    cal_returning.fillSelectDays(date_now.getMonth(), date_now.getFullYear());
}

function simpleCalendarCheck()
{
    var returning_elem = document.getElementById('from_returning');

    if (returning_elem) {
        if (returning_elem.checked == true) {
            if (cal_returning.getCurrentDate() < cal_departing.getCurrentDate()) {
                alert('Your return date is earlier than your departure date!');
                return false;
            }
        }
    }

    return true;

}
