﻿// ZEUS JavaScript File - requires date.js plugin!

var z_DateSelected = false;
var z_DateDefault = "";
var z_lastStartDate = -1;
var z_READY = 0;
jQuery(document).ready(function()
{
/*
    var td = new Date();
    var SD = td.addDays(1).asString('dd/mm/yyyy');
    //var ED = td.addYears(1).asString('dd/mm/yyyy');
    var ED = "01/01/2012";
    z_DateDefault = jQuery('#ddzDate').text();
    jQuery('#ddzDate')
	    .datePicker({createButton:false,showYearNavigation:false,closeOnSelect:true,startDate:SD,endDate:ED,rememberViewedMonth:false})
	    .bind(
		    'click',
		    function()
		    {
			    jQuery(this).dpDisplay();
			    this.blur();
			    window.focus();         // To get around IE6 issue!
			    return false;
		    }
	    )
	    .bind(
		    'dateSelected',
		    function(e, selectedDate, $td)
		    {
			    this.blur();
		        try {
		            var sDate = new Date(selectedDate)
			        var displayD = sDate.asString('DDDD, dd mmmm yyyy');
			        var valueD = sDate.asString('dd/mm/yyyy');
			        jQuery(this).html("");
                    jQuery("<option value='"+valueD+"'>"+displayD+"</option>").appendTo(this);
                    z_DateSelected = true;
                    zeus_ticketupdate();
			    }
			    catch (e) {}
		    }
	    );
    jQuery('#CalendarPicker').bind(
        'click', function() {
            jQuery('#ddzDate').click();
            return false;
        }
    );
    jQuery('#CalendarPicker img').attr({alt: jQuery.dpText["TEXT_CHOOSE_DATE"], title: jQuery.dpText["TEXT_CHOOSE_DATE"]});
*/    
    z_READY = 1;
    zeus_venueupdate();

});

function zeus_submitbookingform() {
    var ddv = document.getElementById('ddzVenue');
    var ddt = document.getElementById('ddzTicket');
    if (ddt == null || ddv == null) return;

    var url = z_baseURL+"?storeId="+z_storeids[ddv.value];
    
    // What day of week selected?
/*    var theBookingDate = Date.fromString(document.getElementById('ddzDate').value, "dd/mm/yyyy");
    var booking_date = Date.fromString(document.getElementById('ddzDate').value, "dd/mm/yyyy");
    var booking_dow = Date.fromString(document.getElementById('ddzDate').value, "dd/mm/yyyy").getDay();
    booking_date = booking_date.asString('dd-mm-yyyy');
*/

    // process the ticket type to get product id and PLU's 
    var idx = ddv.value;
    var tdx = ddt.value;
//    var productid = "";
	var categoryid = z_products[idx][tdx].Products[0].Category;
    var productid = z_products[idx][tdx].Products[0].ID;
    var productoptions = new String(","+z_products[idx][tdx].Options+",");
    var PLU = "";
    var vtc = 1;
/*    
    try {
        // loop each (if any) sub products and check date ranges if existant...
        for (x=0;x<z_products[idx][tdx].Products.length;x++) 
        {
            // is there a date range on this subproduct?
            if (z_products[idx][tdx].Products[x].sDate!=null && z_products[idx][tdx].Products[x].eDate != null) {
                var sD = Date.fromString(z_products[idx][tdx].Products[x].sDate, "dd/mm/yyyy");
                var eD = Date.fromString(z_products[idx][tdx].Products[x].eDate, "dd/mm/yyyy");
                var days = new String(z_products[idx][tdx].Products[x].Days);
                // Is booking date within this range and specified days?
                if (theBookingDate >= sD && theBookingDate <= eD && days.indexOf(","+booking_dow+",") >= 0) 
                {
                    // yes
                    // get product id
                    productid = z_products[idx][tdx].Products[x].ID;
                    // Is it a "combined" ticket list...?
                    if (z_products[idx][tdx].Combined == true) 
                    {
                        // yes - just get the selected combined type...
                        var sID = jQuery("#ddzCombined").val();
                        // ... and create the PLU list
                        PLU = PLU + "&visitorType_"+vtc+"="+z_products[idx][tdx].Products[x].Types[sID]+"_1";
                        vtc++;
                        // we're done...
                        break;
                    } else {
                        // No
                        // Create the PLU list
                        for (var i in z_products[idx][tdx].Products[x].Types) 
                        {
                            // Get number selected of each type...
                            var nm = jQuery("#ddz"+i).val();
                            if (nm > 0) 
                            {
                                // Add to list
                                PLU = PLU + "&visitorType_"+vtc+"="+z_products[idx][tdx].Products[x].Types[i]+"_"+nm;
                                vtc++;
                            }
                        }
                    }
                }
            }
        }
        // did we find our product id in date range...?
        if (productid == "") {
            // No - Loop each (if existing) sub products...
            for (x=0;x<z_products[idx][tdx].Products.length;x++) 
            {
                // ignore any date range items now (as already checked for)
                if (z_products[idx][tdx].Products[x].sDate!=null && z_products[idx][tdx].Products[x].eDate != null) continue;
                // Get the days this product exists for...
                var days = new String(z_products[idx][tdx].Products[x].Days);
                // ... is this a match for our selected date?
                if (days.indexOf(","+booking_dow+",") < 0) continue;
                // Got our matching sub product...
                // get product id
                productid = z_products[idx][tdx].Products[x].ID;
                // Is it a "combined" ticket list...?
                if (z_products[idx][tdx].Combined == true) 
                {
                    // yes - just get the selected combined type...
                    var sID = jQuery("#ddzCombined").val();
                    // ... and create the PLU list
                    PLU = PLU + "&visitorType_"+vtc+"="+z_products[idx][tdx].Products[x].Types[sID]+"_1";
                    vtc++;
                    // we're done...
                    break;
                } else {
                    // No
                    // Create the PLU list
                    for (var i in z_products[idx][tdx].Products[x].Types) 
                    {
                        // Get number selected of each type...
                        var nm = jQuery("#ddz"+i).val();
                        if (nm > 0) 
                        {
                            // Add to list
                            PLU = PLU + "&visitorType_"+vtc+"="+z_products[idx][tdx].Products[x].Types[i]+"_"+nm;
                            vtc++;
                        }
                    }
                }
            }    
        }
    }
    catch (e) {}
*/        
    
    // setup full url...
//    if (productoptions.indexOf(",nodate_goall,") < 0 || z_DateSelected == true) {
		if (categoryid != "") url = url + "&categoryId="+categoryid;
        if (productid != "") url = url + "&productId="+productid;
        // check options for "nodate" - means if no date selected dont send default date...
//        if (productoptions.indexOf(",nodate,") < 0 || z_DateSelected == true)
//            url = url + "&visitDate="+booking_date;
//        url = url + PLU;
        url = url + "&langId="+z_langid;
//    }
    
    // GO..... 
    if (z_EXTERNALMODE) {       
        var op = window.open(url, "zeus", "");
        op.focus();
    } else {
        document.location.href=url;
    }
}

function zeus_venueupdate() {

    var ddv = document.getElementById('ddzVenue');
    var ddt = document.getElementById('ddzTicket');
    if (ddt == null || ddv == null) return;
    // get selected venue...
    var idx = ddv.value;

    // clear list
    ddt.length = 0;
    
    // populate this venues tickets...
	for (i=0;i<z_products[idx].length;i++) {
		ddt.options[i]=new Option(z_products[idx][i].Name,i);
    }

    // Get start date offset for this venue    
/*    var td = new Date();
    var SD = td.addDays(z_startdate[idx]).asString('dd/mm/yyyy');
    jQuery('#ddzDate').dpSetStartDate(SD);

    if (z_READY == 1 && z_lastStartDate != z_startdate[idx]) 
    {
        var SD2 = td.addDays(1).asString('dd/mm/yyyy');
        jQuery('#ddzDate').html("");
        jQuery("<option value='"+SD2+"'>"+z_DateDefault+"</option>").appendTo('#ddzDate');
        z_lastStartDate = z_startdate[idx];
    }
*/    
    
    zeus_ticketupdate();
}

function zeus_ticketupdate() {
    var ddv = document.getElementById('ddzVenue');
    var ddt = document.getElementById('ddzTicket');
    if (ddt == null || ddv == null) return;
    // get selected venue...
    var idx = ddv.value;
    // get selected ticket...
    var tdx = ddt.value;
    // get selected date...
//    var booking_date = Date.fromString(document.getElementById('ddzDate').value, "dd/mm/yyyy");
//    var booking_dow = Date.fromString(document.getElementById('ddzDate').value, "dd/mm/yyyy").getDay();
    
    // Hide all ticket types first...
    jQuery('.zeus_labels').hide();
    
/*    try {
        // Is it a "combined" ticket list...?
        if (z_products[idx][tdx].Combined == true) {
            var tT = "";
            // Combined types...
            for (x=0;x<z_products[idx][tdx].Products.length;x++) {
                for (var i in z_products[idx][tdx].Products[x].Types) {
                    // Add this type to the combined drop down
                    var lbText = z_tickettypes[i][idx];
                    tT = tT+"<option value='"+i+"'>"+lbText+"</option>";
                }
            }
            // Show combined list
            jQuery("#ddzCombined").html(tT);
            jQuery("#div_ddzCombined").show();
        } else {
            // Single types...
            // check for date range items first...
            var dr = 0;
            for (x=0;x<z_products[idx][tdx].Products.length;x++) {
               // date range product?
               if (z_products[idx][tdx].Products[x].sDate!=null && z_products[idx][tdx].Products[x].eDate != null)
               {
                    var sD = Date.fromString(z_products[idx][tdx].Products[x].sDate, "dd/mm/yyyy");
                    var eD = Date.fromString(z_products[idx][tdx].Products[x].eDate, "dd/mm/yyyy");
                    var days = new String(z_products[idx][tdx].Products[x].Days);
                    // Is booking date within this range and specified days?
                    if (booking_date >= sD && booking_date <= eD && days.indexOf(","+booking_dow+",") >= 0) 
                    {
                       for (var i in z_products[idx][tdx].Products[x].Types) {
                            // Get label text...
                            var lbText = z_tickettypes[i][idx];
                            // ... update the label
                            jQuery("#div_ddz"+i+" .zeus_label").html(lbText);
                            jQuery("#div_ddz"+i).show();
                        }
                        dr = 1;
                        break;
                    }
               }
            }
            // date range items set?
            if (dr == 0) {
                // Now set labels text and show types for selected ticket
                for (x=0;x<z_products[idx][tdx].Products.length;x++) {
                   // Get the days this product exists for...
                   var days = new String(z_products[idx][tdx].Products[x].Days);
                   // ... is this a match for our selected date?
                   if (days.indexOf(","+booking_dow+",") < 0) continue;
                   for (var i in z_products[idx][tdx].Products[x].Types) {
                        // Get label text...
                        var lbText = z_tickettypes[i][idx];
                        // ... update the label
                        jQuery("#div_ddz"+i+" .zeus_label").html(lbText);
                        jQuery("#div_ddz"+i).show();
                    }
                }
            }
        }
    }
    catch (e) {}
*/
}


