﻿var absPath = "http://rsvp.cellarpass.com/cellarpass/";
var absPathSecure = "https://rsvp.cellarpass.com/cellarpass/"; 

var MonthNames = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
var today = new Date();
//var vcp_wineryId = 0;
var vcp_date = new Date();
var vcp_Guests = 1;
var offsettime = 0;
//var vcp_divId = "";
var cp_YPos = 0;
loadjscssfile(absPath + "Widget/SSWidget.css", "css", "");
loadjscssfile(absPath + "Widget/colorbox.css", "css", "");
loadjscssfile(absPath + "Widget/jquery-1.3.2.min.js", "js", "utf-8");
loadjscssfile(absPath + "Widget/wz_tooltip.js", "js", "utf-8");
loadjscssfile(absPath + "Widget/jquery.colorbox.js", "js", "utf-8");

ShowWidget();
timer = setTimeout("CreateWidget()", 5000);
var timer1 = setInterval("RefreshCPTime()", 60000);

function RefreshCPTime() {
    try {
        today = new Date();
        today.setMinutes(today.getMinutes() + offsettime);
        $("#CPConsumerReservationcurrentdt").html("Today is " + formatDate(today,1));
    }
    catch (e) { 
    
    }
    //setTimeout("RefreshCPTime()", 10000);
}
function formatDate(dt, showtime) {
    var date = dt;
    var format = "MMM dd hh:mm t"; //"MMM dd yyyy hh:mm t"
    if (showtime == 0) {
        format = "MMM dd";
    }
    format = format.replace("MMM", MonthNames[date.getMonth()]);
    format = format.replace("yyyy", date.getFullYear());
    format = format.replace("dd", date.getDate().toString());

    var hours = date.getHours();
    if (format.indexOf("t") > -1) {
        if (hours > 11)
            format = format.replace("t", "PM")
        else
            format = format.replace("t", "AM")
    }

    if (hours > 12) hours -= 12;
    if (hours == 0) hours = 12;
    format = format.replace("hh", hours.toString()); 

    if (format.indexOf("mm") > -1) {
        var smin = date.getMinutes().toString()
        if (smin.length == 1) { smin = "0" + smin; }
        format = format.replace("mm", smin); 
    }
    if (format.indexOf("ss") > -1)
        format = format.replace("ss", date.getSeconds().toString()); 

    return format;
}

function loadjscssfile(filename, filetype, charset) {
    if (filetype == "js") { //if filename is a external JavaScript file
        var fileref = document.createElement('script')
        fileref.setAttribute("type", "text/javascript")
        fileref.setAttribute("src", filename)
        if (charset != "")
            fileref.setAttribute("charset", charset);
    }
    else if (filetype == "css") { //if filename is an external CSS file
        var fileref = document.createElement("link")
        fileref.setAttribute("rel", "stylesheet")
        fileref.setAttribute("type", "text/css")
        fileref.setAttribute("href", filename)
    }
    if (typeof fileref != "undefined")
        document.getElementsByTagName("head")[0].appendChild(fileref)
}

function changeGuestcnt(g) {
    vcp_Guests = g.value;
}
function changeMonth(v) {
    vcp_date.setMonth(v.value);
}
function changeYear(v) {
    vcp_date.setFullYear(v.value);
}
function changeDay(v) {
    vcp_date.setDate(v.value);
}
function createGuests() {
    var slGuest = "";
    slGuest += "<select id='cpGuestCnt' onChange='changeGuestcnt(this)'>";
    for (var i = 1; i < 20; i++) {
        guestSelected = ((vcp_Guests != 0) && (vcp_Guests == i)) ? ' selected' : '';
        slGuest += "<option value='" + i + "'" + guestSelected + ">" + i + "</option>";
    }
    slGuest += "</select>";
    return slGuest;
}
function createDate() {
    var slDate = "";
    slDate += "<select id='cpdtMonth' onChange='changeMonth(this)'>";
    for (var i = 0; i <= 11; i++) {
        guestSelected = (vcp_date.getMonth() == i) ? ' selected' : '';
        slDate += "<option value='" + i + "'" + guestSelected + ">" + MonthNames[i] + "</option>";
    }
    slDate += "</select>";
    slDate += "<select id='cpdtDay' onChange='changeDay(this)'>";
    for (var i = 1; i < 32; i++) {
        guestSelected = (vcp_date.getDate() == i) ? ' selected' : '';
        slDate += "<option value='" + i + "'" + guestSelected + ">" + i + "</option>";
    }
    slDate += "</select>";
    slDate += "<select id='cpdtYear' onChange='changeYear(this)'>";
    for (var i = today.getFullYear(); i < today.getFullYear() + 2; i++) {
        guestSelected = (vcp_date.getFullYear() == i) ? ' selected' : '';
        slDate += "<option value='" + i + "'" + guestSelected + ">" + i + "</option>";
    }
    slDate += "</select>";
    return slDate;
}

function ShowWidget() {
    try
    {
        var opVal = ""
        today = new Date();
        opVal += "<span id='CPConsumerReservationcurrentdt'>Today is " + formatDate(today,0) + "</span><br/>";
        opVal += "<span id='CPConsumerReservationFilter'>";
        opVal += "<b>Date:</b>" + createDate() + "&nbsp;&nbsp;";
        opVal += "<b>Guests</b>" + createGuests() + "&nbsp;&nbsp;";
        opVal += "<a href='javascript:CreateWidget();'><img src='http://www.cellarpass.com/images/content/Themes/Cellar_Pass_BU/buttons/go.gif' alt='Go' border='0'/></a>";
        opVal += "</span><br/>";
        opVal += "<table cellspacing='0' rules='none' border='1' style='width:100%;border-collapse:collapse;'>";
        opVal += "<tr class='CPConsumerReservationHeader'><td colspan='2'>Available Tours and Tastings</td></tr>";
        opVal += "<tr><td colspan='2' align='center'><img src='http://www.cellarpass.com/images/loading.gif' align='middle' border='0'/> Loading Events.......</td></tr>";
        opVal += "</table>"
        opVal += "<div id='divCPPoweredBy' style='float:right;'>powered by<br><a href='http://www.cellarpass.com' target='_blank'><img src='http://www.cellarpass.com/images/content/cp_poweredby.gif' alt='' border='0'/></a></div><br>"
        document.getElementById(vcp_divId).innerHTML = opVal; // + vcp_divId  "divCPrsvp"
    }
    catch (e) {
    }
};

function CreateWidget() {
    var vdate = (vcp_date.getMonth() + 1) + "/" + vcp_date.getDate() + "/" + vcp_date.getFullYear()

    $.ajax({
        url: absPath + "WSWidget.asmx/GetEventSchedule",
        data: { wineryId: "'" + vcp_wineryId + "'", eventDate: "'" + vdate + "'", guestsCount: "'" + vcp_Guests + "'" },
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        success: function(msg) {
            var data = eval("(" + msg.d + ")");
            var opVal = ""
            today = new Date();
            if (parseInt(data.dtW[0].Active)==1)
            {
                offsettime = parseInt(data.dtW[0].OffSetTime);
                offsettime += today.getTimezoneOffset();
                today.setMinutes(today.getMinutes() + offsettime);
                opVal += "<span id='CPConsumerReservationcurrentdt'>Today is " + formatDate(today, 1) + "</span><br/>";
                opVal += "<span id='CPConsumerReservationFilter'>";
                opVal += "<b>Date:</b>" + createDate() + "&nbsp;&nbsp;";
                opVal += "<b>Guests</b>" + createGuests() + "&nbsp;&nbsp;";
                opVal += "<a href='javascript:CreateWidget();'><img src='http://www.cellarpass.com/images/content/Themes/Cellar_Pass_BU/buttons/go.gif' alt='Go' border='0'/></a>";
                opVal += "</span><br/>";
                opVal += "<table cellspacing='0' rules='none' border='1' style='width:100%;border-collapse:collapse;'>";
                opVal += "<tr class='CPConsumerReservationHeader'><td colspan='2'>Available Tours and Tastings</td></tr>";
                var i = 0;
                jQuery.each(data.dtE, function(rec) {
                    if (this.id == -1) {
                        opVal += "<tr class='CPConsumerReservationItemStyle' colspan='2'><td>";
                        opVal += "<span id='CPspnNoEvent'>Sorry, no events found. Please try modifying your search and then click go button.</span>";
                        opVal += "</td></tr>";
                    }
                    else {
                        opVal += "<tr class='" + (parseInt(i / 2) * 2 == i ? "CPConsumerReservationItemStyle" : "CPConsumerReservationAlternateItemStyle") + "'><td>";
                        opVal += "<span id='CPspnEventTypeName'>" + getEventTooltipString(this.EventTypeName, this.EventDescription, this.FeeToolTip, this.Duration, this.EventTimings, this.LeadTimes) + "</span><br>";
                        opVal += "<span id='CPspnEventFee'>" + this.Fee + "</span>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;";
                        opVal += "<span id='CPspnEventDuration'>" + this.Duration + "</span>";
                        opVal += "</td><td>" + this.EventTimings + "</td>";
                        opVal += "</tr>";
                    }
                    i = i + 1;
                });
                opVal += "</table>"
                opVal += "<div id='divCPPoweredBy' style='float:right;'>powered by<br><a href='http://www.cellarpass.com' target='_blank'><img src='http://www.cellarpass.com/images/content/cp_poweredby.gif' alt='' border='0'/></a></div><br>"
            }
            jQuery("#" + vcp_divId).html(opVal);
        },
        error: function(msg) {
            alert(msg.d);
        }

    });
};

function getEventTooltipString(eventName, eventDisc, feeToolTip, duration, eventTimings, leadTimes) {
    var sValue = "";
    sValue = "<div class='CPresrvationEventToolTip'>";
    sValue += "<div class='CPresrvationEventToolTipTitle'>";
    sValue += eventName;
    sValue += "</div><div class='CPresrvationEventToolTipDesc'>";
    sValue += eventDisc;
    sValue += "</div><div class='CPresrvationEventToolTipFee'>";
    sValue += "<b>Fee:</b>&nbsp;" + feeToolTip;
    sValue += "<br><b>Duration:</b>&nbsp;"  + duration;
    sValue += "<br><b>Lead Time:</b>&nbsp;Requires " + leadTimes + " Notice";
    
    sValue += "</div><div class='CPresrvationEventToolTipTime'>";
    sValue += "<b>Availability:</b>&nbsp;<br>" + eventTimings;
    sValue += "</div><div class='CPresrvationEventToolTipSelectNote'>";
    sValue += "(Select time to book reservation)";
    sValue += "</div></div>";

    sValue = replaceAll(sValue, "'", "SINGLEQUOTE");
    sValue = replaceAll(sValue, "SINGLEQUOTE", "\\'");

    sValue = "<a href='' onclick='return false' style='text-decoration:none' onmouseover=\"Tip('" + sValue + "', " + setTipProperties() + ")\">" + eventName + "</a>";
    return sValue;
}

function replaceAll(sValue, sOld, sNew) {
    var str = sValue;
    var pos = str.indexOf(sOld);
    while (pos > -1) {
        str = str.replace(sOld, sNew);
        pos += sNew.length-sOld.length+1;
        pos = str.indexOf(sOld,pos);
    }
    return (str);
}

function setTipProperties()
{
        return "CLICKCLOSE, true, CLOSEBTN, true, CLICKSTICKY, true, FOLLOWMOUSE, false, WIDTH, -600, BGCOLOR, '#ffffff', TITLEBGCOLOR, '#EAEAEA', BORDERCOLOR, '#DBDBDB', FADEIN, 500, FADEOUT, 500";
}

function BookSeatsAvailable(EventID, SeatsAvailable) {
    cp_YPos = ss_getCurrentYPos();
    var SeatsRequested = vcp_Guests;
    if (parseInt(SeatsAvailable, 10) < parseInt(SeatsRequested, 10)) {
        alert("There are only " + SeatsAvailable + " available for selected event. Please change no. of guests");
        return false;
    }
    else {
        var vUrl = absPathSecure + "rsvp_register_widget.aspx";
        vUrl += "?EID=" + EventID + "&Guests=" + vcp_Guests + "&WID=" + vcp_wineryId

        try { 
            $.fn.colorbox({ href: vUrl, width: "80%", height: "90%", iframe: true,
                onComplete: function() {window.scrollTo(0, cp_YPos); }
            }); 
        }
        catch (e) {
            var wnd = window.open(vUrl, "Bookingwindow", "status=1,toolbar=0,width=800,height=600,resizable=0,scrollbars=1");
        }
    }
}

function ss_getCurrentYPos() {
    if (document.body && document.body.scrollTop)
        return document.body.scrollTop;
    if (document.documentElement && document.documentElement.scrollTop)
        return document.documentElement.scrollTop;
    if (window.pageYOffset)
        return window.pageYOffset;
    return 0;
}