/* IE6 flicker fix
-------------------------------------------------- */
try { document.execCommand("BackgroundImageCache", false, true); } catch (err) { }

/* Init */

$(document).ready(function() {
    $('.ihasahover').hover(function() { $(this).addClass('hover'); }, function() { $(this).removeClass('hover'); });
    // Add calendar functionality to input fields

    Date.format = 'dd/mm/yyyy';

    $('INPUT.wdate:not(INPUT.bookingdate)').each(function() {
        $(this).datePicker({ startDate: '01/01/2007' }).dpSetOffset(0, 24);
    });
    $('INPUT.bookingdate').each(function() {
        $(this).datePicker({ minDate: 0, maxDate: 365 }).dpSetOffset(0, 24);
    });


    $('DIV.quickbook INPUT.wdate').each(function() {
        $(this).dpSetPosition($.dpConst.POS_TOP, $.dpConst.POS_RIGHT).dpSetOffset($(this)[0].offsetHeight + 2, -4);
    });


});

/* Language dropdown */

function toggleLang(ref) {
    $('#languages').toggleClass('hidden');
    if (!$('#languages').hasClass('hidden')) {
        $(document).bind('mouseup', toggleLang);
        $('#currentlang').bind('mouseup', function() { return false; });
        $('#languages')[0].style.left = $(ref).offset().left + 'px';
        $('#languages')[0].style.top = $(ref).offset().top + ref.offsetHeight + 'px';
    } else {
        $(document).unbind('mouseup', toggleLang);
    }
}

/* Tabs switcher */

function showTab(ref, set) {
    $('#' + set + ' > LI > A').each(function(i, a) {
        $(a).removeClass('active');
        $($(a).attr('href')).addClass('hidden');
    });
    $(ref).addClass('active');
    $($(ref).attr('href')).fadeIn(500).removeClass('hidden').css({ display: '' });
    return false;
}

/**
* @author Alexander Farkas
*/

(function($) {
    $.extend($.fx.step, {
        backgroundPosition: function(fx) {
            if (fx.state == 0 && typeof fx.end == 'string') {
                var start = $.curCSS(fx.elem, 'backgroundPosition');
                start = toArray(start);
                fx.start = [start[0], start[2]];
                var end = toArray(fx.end);
                fx.end = [end[0], end[2]];
                fx.unit = [end[1], end[3]];
            }
            var nowPosX = [];
            nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
            nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];
            fx.elem.style.backgroundPosition = nowPosX[0] + ' ' + nowPosX[1];

            function toArray(strg) {
                strg = strg.replace(/left|top/g, '0px');
                strg = strg.replace(/right|bottom/g, '100%');
                strg = strg.replace(/(\d+)(\s|\)|$)/g, "$1px$2");
                var res = strg.match(/(\d+)(px|\%|em|pt)\s(\d+)(px|\%|em|pt)/);
                return [parseFloat(res[1]), res[2], parseFloat(res[3]), res[4]];
            }
        }
    });

})(jQuery);

/* Tooltip */

function showTooltip(ref, txt) {
    $('body').append('<div id="tooltip"><div id="tooltip-inner"></div></div>');
    $('#tooltip').bgiframe();
    $('#tooltip-inner')[0].innerHTML = txt;
    $('#tooltip')[0].style.top = $(ref).offset().top + 'px';
    $('#tooltip')[0].style.left = $(ref).offset().left + 'px';
    $('#tooltip').bind('mouseout', function tmp() {
        $('#tooltip').unbind('mouseout', tmp);
        $('#tooltip').remove();
        $('IFRAME.bgiframe').remove();
    });
}

function toggleDrop(r, t) {
    $(t).toggleClass('hidden');
    if (!$(t).hasClass('hidden')) {
        $(document).bind('mouseup', function temp01() { toggleDrop(r, t); });
        $(r).bind('mouseup', function() { return false; });
        $(t).css({ left: $(r).offset().left + 'px', top: $(r).offset().top + $(r)[0].offsetHeight + 'px' });
    } else {
        $(document).unbind('mouseup');
    }
}

function openHelp(url) {
    var str = ",height=600,innerHeight=600,width=800,innerWidth=800";
    if (window.screen) {
        var ah = screen.availHeight - 30;
        var aw = screen.availWidth - 10;

        var xc = (aw - 800) / 2;
        var yc = (ah - 600) / 2;

        str += ",left=" + xc + ",screenX=" + xc;
        str += ",top=" + yc + ",screenY=" + yc;
    }
    window.open(url, '', 'scrollbars=yes,menubar=no' + str + ',resizable=yes,toolbar=no,location=no,status=no');
    return false;
}

/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* $LastChangedDate: 2007-07-21 18:44:59 -0500 (Sat, 21 Jul 2007) $
* $Rev: 2446 $
*
* Version 2.1.1
*/

(function($) {
    $.fn.bgIframe = $.fn.bgiframe = function(s) {
        // This is only for IE6
        if ($.browser.msie && /6.0/.test(navigator.userAgent)) {
            s = $.extend({
                top: 'auto', // auto == .currentStyle.borderTopWidth
                left: 'auto', // auto == .currentStyle.borderLeftWidth
                width: 'auto', // auto == offsetWidth
                height: 'auto', // auto == offsetHeight
                opacity: true,
                src: 'javascript:false;'
            }, s || {});
            var prop = function(n) { return n && n.constructor == Number ? n + 'px' : n; },
		    html = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="' + s.src + '"' +
		               'style="display:block;position:absolute;z-index:-1;' +
			               (s.opacity !== false ? 'filter:Alpha(Opacity=\'0\');' : '') +
					       'top:' + (s.top == 'auto' ? 'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')' : prop(s.top)) + ';' +
					       'left:' + (s.left == 'auto' ? 'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')' : prop(s.left)) + ';' +
					       'width:' + (s.width == 'auto' ? 'expression(this.parentNode.offsetWidth+\'px\')' : prop(s.width)) + ';' +
					       'height:' + (s.height == 'auto' ? 'expression(this.parentNode.offsetHeight+\'px\')' : prop(s.height)) + ';' +
					'"/>';
            return this.each(function() {
                if ($('> iframe.bgiframe', this).length == 0)
                    this.insertBefore(document.createElement(html), this.firstChild);
            });
        }
        return this;
    };
})(jQuery);

/* Booking */

function SetDefaultBookingPeriod(checkInID, checkOutID, days) {
    var checkInDateCtl = $('#' + checkInID)[0];
    var checkOutDateCtl = $('#' + checkOutID)[0];

    //check if check-in date is after check-out date
    if (CompareDates(checkInDateCtl.value, checkOutDateCtl.value) == true) {
        checkOutDateCtl.value = ChangeDate(checkInDateCtl.value, days);
    }
}

function CompareDates(checkInString, checkOutString) {
    var checkInArr = checkInString.split('/');
    var checkOutArr = checkOutString.split('/');
    if (checkInArr.length == 3 && checkOutArr.length == 3) {
        try {
            var checkInDate = new Date(checkInArr[2], checkInArr[1], checkInArr[0]);
            var checkOutDate = new Date(checkOutArr[2], checkOutArr[1], checkOutArr[0]);
            if (checkInDate >= checkOutDate) return true;
        } catch (err) {
            return false;
        }
    } else if (checkInArr.length == 3 && checkOutArr.length == 1) {
        return true;
    }
}

function ChangeDate(checkInString, days) {
    var checkInDateArr = checkInString.split('/');
    if (checkInDateArr.length == 3) {
        try {
            var checkOutDate = new Date(checkInDateArr[2], checkInDateArr[1] - 1, checkInDateArr[0]);
            checkOutDate.setDate(checkOutDate.getDate() + days);
            var checkOutDay = checkOutDate.getDate();
            var checkOutMonth = checkOutDate.getMonth() + 1;
            var checkOutYear = checkOutDate.getFullYear();

            //check for proper month, year
            if (checkOutMonth == 0) {
                checkOutMonth = 12;
                checkOutYear -= 1;
            }
            if (checkOutDay < 10) checkOutDay = '0' + checkOutDay;
            if (checkOutMonth < 10) checkOutMonth = '0' + checkOutMonth;
            return checkOutDay + '/' + checkOutMonth + '/' + checkOutYear;
        } catch (err) {
            return '';
        }
    } else return '';
}

function ConfirmDeletion() {
    return confirm('Are you sure you wish to delete this record?');
}

function BookingReportRedirect(value, path) {
    javascript: openHelp(path + '?reportCode=' + value, 600, 800);
    return true;
}
