// Namespace for FOTLD tickets functions
var TygitTicketsAttractionId = 0;
var TygitTicketsAppDomain = '';
var TygitTicketsLoaderImage = '';
var TygitTicketsBasketUrl = '';
var TygitTicketsAddToBasketUrl = '';
var TygitTicketsSaving = 0;
var TygitTicketsTotal = 0;
var TygitTicketsTotalQuantity = 0;
var TygitTicketsGroups = Array();
var TygitTicketsGeneralSelectionMessage;
var TygitTicketsMessages = Array();
var TygitTicketsLabels = Array();
var TygitTicketsBasket = false;


TygitTickets = {}

TygitTickets.setAttraction = function(attractionId) {
    TygitTicketsAttractionId = attractionId;
}

TygitTickets.setAppDomain = function(appDomain) {
    TygitTicketsAppDomain = appDomain;
}

TygitTickets.setBasketUrl = function(url) {
    TygitTicketsBasketUrl = url;
}

TygitTickets.setAddToBasketUrl = function(url) {
    TygitTicketsAddToBasketUrl = url;
}

TygitTickets.setLoaderImage = function(loaderImage) {
    TygitTicketsLoaderImage = '<img src="'+loaderImage+'" />';
}

TygitTickets.setGeneralSelectionMessage = function(message) {
    TygitTicketsGeneralSelectionMessage = message;
}

TygitTickets.setNoTicketsMessage = function(message) {
    TygitTicketsMessages["no-tickets"] = message;
}

TygitTickets.setLabels = function(labels) {
    TygitTicketsLabels = labels;
}

TygitTickets.start = function() {
    return false;
}

TygitTickets.init = function() {
    jQuery("#selectTicketGroup").html(TygitTicketsLoaderImage);
    TygitTickets.getGroupSelectModes();
    TygitTickets.getGroupSelectionMessages();
    TygitTickets.getGroups();
    TygitTickets.hasBasket();
}

TygitTickets.validateSelectTicketForm = function(){
    jQuery("#selectTicketValidation").removeClass('error');
    jQuery("#selectTicketValidation").html('');
    
    var checks = '';
    var checkResult = false;
    //alert(jQuery('.quantity'));
    jQuery('.quantity').each(function(){ 
        var quantity = parseInt(this.value);
        if(typeof quantity == 'number' && quantity > 0 && (quantity == parseFloat(this.value))) {
            if(checks.length > 0) {
                checks = checks + '||true';
            } else {
                checks = 'true';
            }   
        } else {
            if(checks.length > 0) {
                checks = checks + '||false';
            } else {
                checks = 'false';
            }
        }
     }); 
     
     if(checks.length > 0) {
        eval('checkResult = '+ checks);
     } else {
        return false;
     }
     if(!checkResult) {
        jQuery("#selectTicketValidation").html('Please enter a valid quantity');
        jQuery("#selectTicketValidation").addClass('error');
        return false;
     }  else {
        return true;
     }
}

TygitTickets.resetSelectTicket = function(){ 
    jQuery("#selectTicketSubGroup").removeClass("active"); 
    jQuery("#selectTicketSubGroup").html('');
    jQuery("#selectTicketSubGroup").hide();
    
    jQuery("#selectTicketDate").removeClass("active"); 
    jQuery("#selectTicketDate").html('');
    jQuery("#selectTicketDate").hide();
    
    jQuery("#selectTicketTime").removeClass("active");
    jQuery("#selectTicketTime").html('');
    jQuery("#selectTicketTime").hide();
    
    jQuery("#selectTicketTypes").removeClass("active");
    jQuery("#selectTicketTypes").html('');
    jQuery("#selectTicketTypes").hide();
    
    jQuery("#selectTicketValidation").removeClass('error');
    jQuery("#selectTicketValidation").html('');
    
    jQuery("#selectTicketGroup").addClass("active");
    document.getElementById('selectGroup').value = ''; 
    
    TygitTicketsSaving = 0;
    TygitTicketsTotal = 0;
    TygitTicketsTotalQuantity = 0;    

}

TygitTickets.getTicketTypes = function(){   
    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/ticket-types/attractionId/"+TygitTicketsAttractionId+"?jsoncallback=?",
    function(data){
      var htmlStr = '';
      var tableStr = '';
      var ticketTypeIds = '';
      var flag = true;
      jQuery.each(data, function(i,item){
        tableStr = tableStr +  '<tr class="'+(flag?'tyg-it-even':'tyg-it-odd')+'"><td>'+item.description+'</td><td>'+item.quantityAvailable+'</td><td>'+item.maxAllocationPerVisitor+'</td><td class="price-col">'+(item.discount?'<del>'+'&pound;'+FixedPointNumber.to(item.price+item.discount)+'</del> ':'')+'&pound;'+FixedPointNumber.to(item.price)+'</td><td class="qty-col"><input type="button" class="disabled" id="decrease-quantity'+item.id+'" value="-" onclick="TygitTickets.decreaseQuantity(\'quantity'+item.id+'\');TygitTickets.decreaseTotal('+item.price+','+item.discount+');" disabled /> <input type="text" name="quantity'+item.id+'" id="quantity'+item.id+'" value="0" size="2" class="quantity" readonly /><input type="button" value="+" id="increase-quantity'+item.id+'" onclick="TygitTickets.increaseQuantity(\'quantity'+item.id+'\');TygitTickets.increaseTotal('+item.price+','+item.discount+');" /></td></tr>';
        if(ticketTypeIds.length > 0) {
            ticketTypeIds = ticketTypeIds + "," + item.id;
        } else {
            ticketTypeIds = item.id;
        } 
        flag = !flag;
      });
      htmlStr = '<form onsubmit="return TygitTickets.validateSelectTicketForm()" id="add-to-basket'+TygitTicketsAttractionId+'" action="'+TygitTicketsAppDomain+TygitTicketsAddToBasketUrl+'" method="get" target="_blank">';
      htmlStr = htmlStr + '<div class="tickets-container"><table class="list" cellspacing="0"><thead><tr><th>'+TygitTicketsLabels["description"]+'</th><th>'+TygitTicketsLabels["quantityAvailable"]+'</th><th>'+TygitTicketsLabels["maxAllocationPerVisitor"]+'</th><th class="price-col">'+TygitTicketsLabels["price"]+'</th><th class="qty-col">'+TygitTicketsLabels["quantity"]+'</th></tr></thead><tbody>' + tableStr + '</tbody></table></div>';
      htmlStr = htmlStr + '<input type="hidden" name="ticketTypeIds" value="' + ticketTypeIds + '" /><input type="hidden" name="attractionId" value="' + TygitTicketsAttractionId + '" /><div class="saving-container" id="fotld-saving-container"></div><div class="total-container" id="fotld-total-container">'+TygitTicketsLabels["total"]+' &pound;0.00</div><div class="message-container">' + TygitTicketsGeneralSelectionMessage + '</div><div class="button-container"><input type="submit" class="submit-button-disabled" id="fotld-order-button" value="' + TygitTicketsLabels["submit"] + '" disabled /><button type="button" onclick="TygitTickets.resetSelectTicket();">' + TygitTicketsLabels["reset"] + '</button>'+(TygitTicketsBasket?'<button type="button" onclick="TygitTickets.gotoBasket();">' + TygitTicketsLabels["basket"] + '</button>':'')+'<div class="clear"></div></div></form>';
      jQuery("#selectTicketTypes").html(htmlStr);
    });    
}
TygitTickets.getGroupSelectModes = function(){ 

    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/attraction-ticket-group-select-modes/attractionId/"+TygitTicketsAttractionId+"?jsoncallback=?",
    function(data){
      TygitTicketsGroups = data;
    });    
}

TygitTickets.getGroupSelectionMessages = function(){ 
    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/attraction-ticket-group-selection-messages/attractionId/"+TygitTicketsAttractionId+"?jsoncallback=?",
    function(data){
      TygitTicketsMessages = data;
    });    
}

TygitTickets.getGroupSelectionLabels = function(){ 

    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/attraction-ticket-group-selection-labels/attractionId/"+TygitTicketsAttractionId+"?jsoncallback=?",
    function(data){
      TygitTicketsLabels = data;
    });    
}

TygitTickets.hasBasket = function(){ 

    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/has-basket?jsoncallback=?",
    function(data){
      TygitTicketsBasket = data;
    });    
}
    
TygitTickets.getGroups = function(){ 

    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/ticket-type-groups/attractionId/"+TygitTicketsAttractionId+"?jsoncallback=?",
    function(data){
      htmlStr = '';
      jQuery.each(data, function(i,item){
        htmlStr = htmlStr + '<option value="'+item+'">'+item+'</option>';
      });
      if(htmlStr != '') {
	      htmlStr = '<label for="selectGroup">' + TygitTicketsLabels["selectGroup"] + '</label><select name="group" id="selectGroup" onchange="TygitTickets.groupSelected();"><option value="">Please Select..</option>' + htmlStr + '</select>';
	      jQuery("#selectTicketGroup").html(htmlStr);
	      jQuery("#selectTicketGroup").addClass("active");
      } else {
        jQuery("#selectTicketGroup").html(TygitTicketsMessages["no-tickets"]);
      }
    });    
}

TygitTickets.groupSelected = function(){ 
    
    jQuery("#selectTicketGroup").removeClass("active");
    
    jQuery("#selectTicketSubGroup").removeClass("active"); 
    jQuery("#selectTicketSubGroup").html('');
    jQuery("#selectTicketSubGroup").hide();
    
    jQuery("#selectTicketDate").removeClass("active"); 
    jQuery("#selectTicketDate").html('');
    jQuery("#selectTicketDate").hide();
    
    jQuery("#selectTicketTime").removeClass("active");
    jQuery("#selectTicketTime").html('');
    jQuery("#selectTicketTime").hide();
    
    jQuery("#selectTicketTypes").removeClass("active");
    jQuery("#selectTicketTypes").html('');
    jQuery("#selectTicketTypes").hide();
    
    jQuery("#selectTicketValidation").removeClass('error');
    jQuery("#selectTicketValidation").html('');
    
    var group = document.getElementById('selectGroup').value;
    //alert(group);
    
    if(group) {
        switch(TygitTicketsGroups[group]) {
            case 'ticket-type':
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupTicketTypes(group);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                break;
                
            case 'sub-group-ticket-type':
            case 'sub-group-date-ticket-type':
            case 'sub-group-date-time-ticket-type':
                jQuery("#selectTicketSubGroup").html(TygitTicketsLoaderImage);
                TygitTickets.getSubGroups(group); 
                jQuery("#selectTicketSubGroup").addClass("active");
                jQuery("#selectTicketSubGroup").show(); 
                break;
                
            case 'date-ticket-type':
            case 'date-time-ticket-type':
                jQuery("#selectTicketDate").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupDates(group,''); 
                jQuery("#selectTicketDate").addClass("active");
                jQuery("#selectTicketDate").show(); 
                break;
        }
    } else {
        jQuery("#selectTicketGroup").addClass("active");       
    }
}

TygitTickets.getGroupTicketTypes = function(group){   
    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/group-ticket-types/attractionId/"+TygitTicketsAttractionId+"/group/"+group+"?jsoncallback=?",
    function(data){
      var htmlStr = '';
      var tableStr = '';
      var ticketTypeIds = '';
      var flag = true;
      var lastTimeAdvertised = '';
      jQuery.each(data, function(i,item){
        if(lastTimeAdvertised != item.timeAdvertised) {
            tableStr = tableStr + '<tr><td colspan="5">&nbsp;</td></tr>';
            tableStr = tableStr + '<tr><td><strong>Time:&nbsp;'+(item.timeAdvertised?date('g.ia',strtotime(date('Y-m-d')+" "+item.timeAdvertised)):"")+'</strong></td><td colspan="4"></td>&nbsp;</tr>';
            flag = true;
        }
        
        tableStr = tableStr + '<tr class="'+(flag?'tyg-it-even':'tyg-it-odd')+'"><td>'+item.description+'</td><td>'+item.quantityAvailable+'</td><td>'+item.maxAllocationPerVisitor+'</td><td class="price-col">'+(item.discount?'<del>'+'&pound;'+FixedPointNumber.to(item.price+item.discount)+'</del> ':'')+'&pound;'+FixedPointNumber.to(item.price)+'</td><td class="qty-col"><input type="button" class="disabled" id="decrease-quantity'+item.id+'" value="-" onclick="TygitTickets.decreaseQuantity(\'quantity'+item.id+'\');TygitTickets.decreaseTotal('+item.price+','+item.discount+');" disabled /> <input type="text" name="quantity'+item.id+'" id="quantity'+item.id+'" value="0" size="2" class="quantity" readonly /><input type="button" value="+" id="increase-quantity'+item.id+'" onclick="TygitTickets.increaseQuantity(\'quantity'+item.id+'\');TygitTickets.increaseTotal('+item.price+','+item.discount+');" /></td></tr>';
        if(ticketTypeIds.length > 0) {
            ticketTypeIds = ticketTypeIds + "," + item.id;
        } else {
            ticketTypeIds = item.id;
        }
        flag = !flag;
        lastTimeAdvertised = item.timeAdvertised;
      });
      htmlStr = '<form onsubmit="return TygitTickets.validateSelectTicketForm()" id="add-to-basket'+TygitTicketsAttractionId+'" action="'+TygitTicketsAppDomain+TygitTicketsAddToBasketUrl+'" method="get" target="_blank">';
      htmlStr = htmlStr + '<div class="tickets-container"><table class="list" cellspacing="0"><thead><tr><th>'+TygitTicketsLabels["description"]+'</th><th>'+TygitTicketsLabels["quantityAvailable"]+'</th><th>'+TygitTicketsLabels["maxAllocationPerVisitor"]+'</th><th class="price-col">'+TygitTicketsLabels["price"]+'</th><th class="qty-col">'+TygitTicketsLabels["quantity"]+'</th></tr></thead><tbody>' + tableStr + '</tbody></table></div>';
      htmlStr = htmlStr + '<input type="hidden" name="ticketTypeIds" value="' + ticketTypeIds + '" /><input type="hidden" name="TygitTicketsAttractionId" value="' + TygitTicketsAttractionId + '" /><div class="saving-container" id="fotld-saving-container"></div><div class="total-container" id="fotld-total-container">'+TygitTicketsLabels["total"]+' &pound;0.00</div><div class="message-container">' + (TygitTicketsMessages[group]? TygitTicketsMessages[group]+"<br />":"") + TygitTicketsGeneralSelectionMessage + '</div><div class="button-container"><input type="submit" class="submit-button-disabled" id="fotld-order-button" value="' + TygitTicketsLabels["submit"] + '" disabled /><button type="button" onclick="TygitTickets.resetSelectTicket();">' + TygitTicketsLabels["reset"] + '</button>'+(TygitTicketsBasket?'<button type="button" onclick="TygitTickets.gotoBasket();">' + TygitTicketsLabels["basket"] + '</button>':'')+'<div class="clear"></div></div></form>';
      jQuery("#selectTicketTypes").html(htmlStr);
    });  
}  

TygitTickets.getSubGroups = function(group){  
    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/ticket-type-sub-groups/attractionId/"+TygitTicketsAttractionId+"/group/"+group+"?jsoncallback=?",
    function(data){
      var htmlStr = '';
      jQuery.each(data, function(i,item){
         htmlStr = htmlStr + '<option value="'+item+'">'+item+'</option>';
      });
      htmlStr = '<label for="selectSubGroup">' + TygitTicketsLabels["selectSubGroup"] + '</label><select name="subGroup" id="selectSubGroup" onchange="TygitTickets.subGroupSelected(\''+group+'\');"><option value="">Please Select..</option>' + htmlStr + '</select>';
      jQuery("#selectTicketSubGroup").html(htmlStr);
    }); 
} 

TygitTickets.subGroupSelected = function(group){ 
    
    jQuery("#selectTicketSubGroup").removeClass("active");
    
    jQuery("#selectTicketDate").removeClass("active"); 
    jQuery("#selectTicketDate").html('');
    jQuery("#selectTicketDate").hide();
    
    jQuery("#selectTicketTime").removeClass("active");
    jQuery("#selectTicketTime").html('');
    jQuery("#selectTicketTime").hide();
    
    jQuery("#selectTicketTypes").removeClass("active");
    jQuery("#selectTicketTypes").html('');
    jQuery("#selectTicketTypes").hide();
    
    jQuery("#selectTicketValidation").removeClass('error');
    jQuery("#selectTicketValidation").html('');
    
    var subGroup = document.getElementById('selectSubGroup').value;
    //alert(group);
    if(group) {
        switch(TygitTicketsGroups[group]) {
            case 'ticket-type':
                jQuery("#selectTicketSubGroup").removeClass("active"); 
                jQuery("#selectTicketSubGroup").html('');
                jQuery("#selectTicketSubGroup").hide();   
                
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupTicketTypes(group);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                break;
                
            case 'sub-group-ticket-type':
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getSubGroupTicketTypes(group,subGroup);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                break;
                
                
            case 'sub-group-date-ticket-type':
            case 'sub-group-date-time-ticket-type':
                var subGroup = document.getElementById('selectSubGroup').value; 
                jQuery("#selectTicketDate").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupDates(group, subGroup); 
                jQuery("#selectTicketDate").addClass("active");
                jQuery("#selectTicketDate").show(); 
                break;
                
            case 'date-ticket-type':
            case 'date-time-ticket-type':
                jQuery("#selectTicketSubGroup").removeClass("active"); 
                jQuery("#selectTicketSubGroup").html('');
                jQuery("#selectTicketSubGroup").hide(); 
                break; 
        }
    } else {
        jQuery("#selectTicketGroup").addClass("active");       
    }
} 

TygitTickets.getSubGroupTicketTypes = function(group,subGroup){   
    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/sub-group-ticket-types/attractionId/"+TygitTicketsAttractionId+"/group/"+group+"/subGroup/"+subGroup+"?jsoncallback=?",
    function(data){
      var htmlStr = '';
      var tableStr = '';
      var ticketTypeIds = '';
      var flag = true;
      var lastTimeAdvertised = '';
      jQuery.each(data, function(i,item){
        if(lastTimeAdvertised != item.timeAdvertised) {
            tableStr = tableStr + '<tr><td colspan="5">&nbsp;</td></tr>';
            tableStr = tableStr + '<tr><td><strong>Time:&nbsp;'+(item.timeAdvertised?date('g.ia',strtotime(date('Y-m-d')+" "+item.timeAdvertised)):"")+'</strong></td><td colspan="4"></td>&nbsp;</tr>';
            flag = true;
        }
        
        tableStr = tableStr + '<tr class="'+(flag?'tyg-it-even':'tyg-it-odd')+'"><td>'+item.description+'</td><td>'+item.quantityAvailable+'</td><td>'+item.maxAllocationPerVisitor+'</td><td class="price-col">'+(item.discount?'<del>'+'&pound;'+FixedPointNumber.to(item.price+item.discount)+'</del> ':'')+'&pound;'+FixedPointNumber.to(item.price)+'</td><td class="qty-col"><input type="button" class="disabled" id="decrease-quantity'+item.id+'" value="-" onclick="TygitTickets.decreaseQuantity(\'quantity'+item.id+'\');TygitTickets.decreaseTotal('+item.price+','+item.discount+');" disabled /> <input type="text" name="quantity'+item.id+'" id="quantity'+item.id+'" value="0" size="2" class="quantity" readonly /><input type="button" value="+" id="increase-quantity'+item.id+'" onclick="TygitTickets.increaseQuantity(\'quantity'+item.id+'\');TygitTickets.increaseTotal('+item.price+','+item.discount+');" /></td></tr>';
        if(ticketTypeIds.length > 0) {
            ticketTypeIds = ticketTypeIds + "," + item.id;
        } else {
            ticketTypeIds = item.id;
        }
        flag = !flag;
        lastTimeAdvertised = item.timeAdvertised;
      });
      htmlStr = '<form onsubmit="return TygitTickets.validateSelectTicketForm()" id="add-to-basket'+TygitTicketsAttractionId+'" action="'+TygitTicketsAppDomain+TygitTicketsAddToBasketUrl+'" method="get" target="_blank">';
      htmlStr = htmlStr + '<div class="tickets-container"><table class="list" cellspacing="0"><thead><tr><th>'+TygitTicketsLabels["description"]+'</th><th>'+TygitTicketsLabels["quantityAvailable"]+'</th><th>'+TygitTicketsLabels["maxAllocationPerVisitor"]+'</th><th class="price-col">'+TygitTicketsLabels["price"]+'</th><th class="qty-col">'+TygitTicketsLabels["quantity"]+'</th></tr></thead><tbody>' + tableStr + '</tbody></table></div>';
      htmlStr = htmlStr + '<input type="hidden" name="ticketTypeIds" value="' + ticketTypeIds + '" /><input type="hidden" name="TygitTicketsAttractionId" value="' + TygitTicketsAttractionId + '" /><div class="saving-container" id="fotld-saving-container"></div><div class="total-container" id="fotld-total-container">'+TygitTicketsLabels["total"]+' &pound;0.00</div><div class="message-container">' + (TygitTicketsMessages[group]? TygitTicketsMessages[group]+"<br />":"") + TygitTicketsGeneralSelectionMessage + '</div><div class="button-container"><input type="submit" class="submit-button-disabled" id="fotld-order-button" value="' + TygitTicketsLabels["submit"] + '" disabled /><button type="button" onclick="TygitTickets.resetSelectTicket();">' + TygitTicketsLabels["reset"] + '</button>'+(TygitTicketsBasket?'<button type="button" onclick="TygitTickets.gotoBasket();">' + TygitTicketsLabels["basket"] + '</button>':'')+'<div class="clear"></div></div></form>';
      jQuery("#selectTicketTypes").html(htmlStr);
    });  
} 
    
TygitTickets.getGroupDates = function(group, subGroup){  
    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/group-valid-dates/attractionId/"+TygitTicketsAttractionId+"/group/"+group+(subGroup!=''?"/subGroup/"+subGroup:"")+"?jsoncallback=?",
    function(data){
      htmlStr = '';
      jQuery.each(data, function(i,item){
        if(item.soldOut) {
            htmlStr = htmlStr + '<option value="'+item.date+'" class="sold-out">'+item.friendlyDate+'</option>';
        } else {
            htmlStr = htmlStr + '<option value="'+item.date+'">'+item.friendlyDate+'</option>';
        }
      });
      htmlStr = '<label for="selectDate">' + TygitTicketsLabels["selectDate"] + '</label><select name="date" id="selectDate" onchange="TygitTickets.dateSelected(\''+group+'\');"><option value="">Please Select..</option>' + htmlStr + '</select>';
      jQuery("#selectTicketDate").html(htmlStr);
    }); 
} 
    
TygitTickets.dateSelected = function(group){   
    
    jQuery("#selectTicketDate").removeClass("active");
    
    jQuery("#selectTicketTime").removeClass("active");
    jQuery("#selectTicketTime").html('');
    jQuery("#selectTicketTime").hide();
    
    jQuery("#selectTicketTypes").removeClass("active");
    jQuery("#selectTicketTypes").html('');
    jQuery("#selectTicketTypes").hide();
    
    jQuery("#selectTicketValidation").removeClass('error');
    jQuery("#selectTicketValidation").html('');
    
    var date = document.getElementById('selectDate').value;
    //alert(date);
    if(date) {
    
        switch(TygitTicketsGroups[group]) {
            case 'ticket-type':
			    jQuery("#selectTicketSubGroup").removeClass("active"); 
			    jQuery("#selectTicketSubGroup").html('');
			    jQuery("#selectTicketSubGroup").hide(); 
			      
                jQuery("#selectTicketDate").removeClass("active"); 
                jQuery("#selectTicketDate").html('');
                jQuery("#selectTicketDate").hide();  
			             
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupTicketTypes(group);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                break;
                
                
            case 'sub-group-ticket-type':
                jQuery("#selectTicketDate").removeClass("active"); 
                jQuery("#selectTicketDate").html('');
                jQuery("#selectTicketDate").hide();  
                
                var subGroup = document.getElementById('selectSubGroup').value;
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getSubGroupTicketTypes(group, subGroup);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                break;
                
            case 'date-ticket-type':
                jQuery("#selectTicketSubGroup").removeClass("active"); 
                jQuery("#selectTicketSubGroup").html('');
                jQuery("#selectTicketSubGroup").hide(); 
                
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupDateTicketTypes(group, '', date);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                break;
                
            case 'sub-group-date-ticket-type':
                var subGroup = document.getElementById('selectSubGroup').value; 
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupDateTicketTypes(group, subGroup, date);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                //jQuery("#selectTicketTime").html(TygitTicketsLoaderImage);
                //jQuery("#selectTicketTime").addClass("active");
                //jQuery("#selectTicketTime").show();
                break;
                
           case 'sub-group-date-time-ticket-type':
                var subGroup = document.getElementById('selectSubGroup').value;
                jQuery("#selectTicketTime").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupDateTimes(group, subGroup,date); 
                jQuery("#selectTicketTime").addClass("active");
                jQuery("#selectTicketTime").show(); 
                break;
                
           case 'date-time-ticket-type':
                jQuery("#selectTicketTime").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupDateTimes(group, '',date); 
                jQuery("#selectTicketTime").addClass("active");
                jQuery("#selectTicketTime").show(); 
                break;
        }
    } else {
        jQuery("#selectTicketDate").addClass("active");
    }
}  
    
TygitTickets.getGroupDateTicketTypes = function(group, subGroup, selectedDate){     
    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/group-date-ticket-types/attractionId/"+TygitTicketsAttractionId+"/group/"+group+(subGroup!=''?"/subGroup/"+subGroup:"")+"/date/"+selectedDate+"?jsoncallback=?",
    function(data){
      var htmlStr = '';
      var tableStr = '';
      var ticketTypeIds = '';
      var flag = true;
      var lastTimeAdvertised = '';
      jQuery.each(data, function(i,item){
        if(lastTimeAdvertised != item.timeAdvertised) {
            tableStr = tableStr + '<tr><td colspan="6">&nbsp;</td></tr>';
            tableStr = tableStr + '<tr><td><strong>Tour&nbsp;Time:&nbsp;'+(item.timeAdvertised?date('g.ia',strtotime(date('Y-m-d')+" "+item.timeAdvertised)):"")+'</strong></td><td colspan="5"></td>&nbsp;</tr>';
            flag = true;
        }
        if(item.quantityAvailable == 'Unlimited' || item.quantityAvailable === ' ' || item.quantityAvailable > 0) {
            //<td>'+(item.timeAdvertised?date('g.ia',strtotime(date('Y-m-d')+" "+item.timeAdvertised)):"")+'</td>
            tableStr = tableStr + '<tr class="'+(flag?'tyg-it-even':'tyg-it-odd')+(lastTimeAdvertised != item.timeAdvertised?' new-time':'')+'"><td>'+item.description+'</td><td>'+date('g.ia',strtotime(date('Y-m-d')+" "+item.startTime))+'</td><td>'+item.quantityAvailable+'</td><td>'+item.maxAllocationPerVisitor+'</td><td class="price-col">'+(item.discount?'<del>'+'&pound;'+FixedPointNumber.to(item.price+item.discount)+'</del> ':'')+'&pound;'+FixedPointNumber.to(item.price)+'</td><td class="qty-col"><input type="button" class="disabled" id="decrease-quantity'+item.id+'" value="-" onclick="TygitTickets.decreaseQuantity(\'quantity'+item.id+'\');TygitTickets.decreaseTotal('+item.price+','+item.discount+');" disabled /> <input type="text" name="quantity'+item.id+'" id="quantity'+item.id+'" value="0" size="2" class="quantity" readonly /><input type="button" value="+" id="increase-quantity'+item.id+'" onclick="TygitTickets.increaseQuantity(\'quantity'+item.id+'\');TygitTickets.increaseTotal('+item.price+','+item.discount+');" /></td></tr>';
        } else {
            // <td>'+(item.timeAdvertised?date('g.ia',strtotime(date('Y-m-d')+" "+item.timeAdvertised)):"")+'</td>
            tableStr = tableStr + '<tr class="'+(flag?'tyg-it-even':'tyg-it-odd')+' sold-out"><td>'+item.description+'</td><td>'+date('g.ia',strtotime(date('Y-m-d')+" "+item.startTime))+'</td><td>'+item.quantityAvailable+'</td><td>'+item.maxAllocationPerVisitor+'</td><td class="price-col">'+(item.discount?'<del>'+'&pound;'+FixedPointNumber.to(item.price+item.discount)+'</del> ':'')+'&pound;'+FixedPointNumber.to(item.price)+'</td><td class="qty-col">Sold Out</td></tr>';
        }
        if(ticketTypeIds.length > 0) {
            ticketTypeIds = ticketTypeIds + "," + item.id;
        } else {
            ticketTypeIds = item.id;
        }
        flag = !flag;
        lastTimeAdvertised = item.timeAdvertised;
      });
      htmlStr = '<form onsubmit="return TygitTickets.validateSelectTicketForm()" id="add-to-basket'+TygitTicketsAttractionId+'" action="'+TygitTicketsAppDomain+TygitTicketsAddToBasketUrl+'" method="get" target="_blank">';
      //<th>'+TygitTicketsLabels["timeAdvertised"]+'</th>
      htmlStr = htmlStr + '<div class="tickets-container"><table class="list" cellspacing="0"><thead><tr><th>'+TygitTicketsLabels["description"]+'</th><th>'+TygitTicketsLabels["earliestEntry"]+'</th><th>'+TygitTicketsLabels["quantityAvailable"]+'</th><th>'+TygitTicketsLabels["maxAllocationPerVisitor"]+'</th><th class="price-col">'+TygitTicketsLabels["price"]+'</th><th class="qty-col">'+TygitTicketsLabels["quantity"]+'</th></tr></thead><tbody>' + tableStr + '</tbody></table></div>';
      htmlStr = htmlStr + '<input type="hidden" name="ticketTypeIds" value="' + ticketTypeIds + '" /><input type="hidden" name="attractionId" value="' + TygitTicketsAttractionId + '" /><div class="saving-container" id="fotld-saving-container"></div><div class="total-container" id="fotld-total-container">'+TygitTicketsLabels["total"]+' &pound;0.00</div><div class="message-container">' + (TygitTicketsMessages[group]? TygitTicketsMessages[group]+"<br />":"") + TygitTicketsGeneralSelectionMessage + '</div><div class="button-container"><input type="submit" class="submit-button-disabled" id="fotld-order-button" value="' + TygitTicketsLabels["submit"] + '" disabled /><button type="button" onclick="TygitTickets.resetSelectTicket();">' + TygitTicketsLabels["reset"] + '</button>'+(TygitTicketsBasket?'<button type="button" onclick="TygitTickets.gotoBasket();">' + TygitTicketsLabels["basket"] + '</button>':'')+'<div class="clear"></div></div></form>';
      jQuery("#selectTicketTypes").html(htmlStr);
    });    
}  
    
TygitTickets.getGroupDateTimes = function(group, subGroup, date){  
    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/group-date-times/attractionId/"+TygitTicketsAttractionId+"/group/"+group+(subGroup!=''?"/subGroup/"+subGroup:"")+"/date/"+date+"?jsoncallback=?",
    function(data){
      htmlStr = '';
      jQuery.each(data, function(i,item){
        htmlStr = htmlStr + '<option value="'+i+'">'+item+'</option>';
      });
      htmlStr = '<label for="selectTime">' + TygitTicketsLabels["selectTime"] + '</label><select name="times" id="selectTime" onchange="TygitTickets.timeSelected(\''+group+'\',\''+date+'\');"><option value="">Please Select..</option>' + htmlStr + '</select>';
      jQuery("#selectTicketTime").html(htmlStr);
    });    
}
    
TygitTickets.timeSelected = function(group,date){ 
    
    jQuery("#selectTicketTime").removeClass("active");
    
    jQuery("#selectTicketTypes").removeClass("active");
    jQuery("#selectTicketTypes").html('');
    jQuery("#selectTicketTypes").hide();
    
    jQuery("#selectTicketValidation").removeClass('error');
    jQuery("#selectTicketValidation").html('');
    
    var time = document.getElementById('selectTime').value;
    //alert(group);
    if(time) {
        switch(TygitTicketsGroups[group]) {
            case 'ticket-type':
                jQuery("#selectTicketSubGroup").removeClass("active"); 
                jQuery("#selectTicketSubGroup").html('');
                jQuery("#selectTicketSubGroup").hide(); 
                
                jQuery("#selectTicketDate").removeClass("active"); 
                jQuery("#selectTicketDate").html('');
                jQuery("#selectTicketDate").hide();  
    
			    jQuery("#selectTicketTime").removeClass("active");
			    jQuery("#selectTicketTime").html('');
			    jQuery("#selectTicketTime").hide(); 
                         
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupTicketTypes(group);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                break;
                
            case 'sub-group-ticket-type':
                jQuery("#selectTicketDate").removeClass("active"); 
                jQuery("#selectTicketDate").html('');
                jQuery("#selectTicketDate").hide();  
    
                jQuery("#selectTicketTime").removeClass("active");
                jQuery("#selectTicketTime").html('');
                jQuery("#selectTicketTime").hide(); 
                
                var subGroup = document.getElementById('selectSubGroup').value;
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getSubGroupTicketTypes(group,subGroup);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                break;
                
            case 'date-ticket-type':
                jQuery("#selectTicketSubGroup").removeClass("active"); 
                jQuery("#selectTicketSubGroup").html('');
                jQuery("#selectTicketSubGroup").hide(); 
                
                jQuery("#selectTicketTime").removeClass("active");
                jQuery("#selectTicketTime").html('');
                jQuery("#selectTicketTime").hide(); 
                
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupDateTicketTypes(group,'',date);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                
           case 'sub-group-date-ticket-type':
                var subGroup = document.getElementById('selectSubGroup').value;
                jQuery("#selectTicketTime").removeClass("active");
                jQuery("#selectTicketTime").html('');
                jQuery("#selectTicketTime").hide(); 
                
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupDateTicketTypes(group,subGroup,date);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                //jQuery("#selectTicketTime").html(TygitTicketsLoaderImage);
                //jQuery("#selectTicketTime").addClass("active");
                //jQuery("#selectTicketTime").show();
                break;
            
            case 'date-time-ticket-type':
                jQuery("#selectTicketSubGroup").removeClass("active"); 
                jQuery("#selectTicketSubGroup").html('');
                jQuery("#selectTicketSubGroup").hide(); 
                
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupDateTimeTicketTypes(group,'',date,time);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                break;
                
            case 'sub-group-date-time-ticket-type':
                var subGroup = document.getElementById('selectSubGroup').value;
                jQuery("#selectTicketTypes").html(TygitTicketsLoaderImage);
                TygitTickets.getGroupDateTimeTicketTypes(group,subGroup,date,time);
                jQuery("#selectTicketTypes").addClass("active");
                jQuery("#selectTicketTypes").show();
                break;
        }
    } else {
      jQuery("#selectTicketTime").addClass("active"); 
    }
} 
    
TygitTickets.getGroupDateTimeTicketTypes = function(group, subGroup, date, time){  
    jQuery.getJSON(TygitTicketsAppDomain+"/json-service/group-date-time-ticket-types/attractionId/"+TygitTicketsAttractionId+"/group/"+group+(subGroup!=''?"/subGroup/"+subGroup:"")+"/date/"+date+"/time/"+time+"?jsoncallback=?",
    function(data){
      var htmlStr = '';
      var tableStr = '';
      var ticketTypeIds = '';
      var flag = true;
      jQuery.each(data, function(i,item){
        tableStr = tableStr + '<tr class="'+(flag?'tyg-it-even':'tyg-it-odd')+'"><td>'+item.description+'</td><td>'+item.quantityAvailable+'</td><td>'+item.maxAllocationPerVisitor+'</td><td class="price-col">'+(item.discount?'<del>'+'&pound;'+FixedPointNumber.to(item.price+item.discount)+'</del> ':'')+'&pound;'+FixedPointNumber.to(item.price)+'</td><td class="qty-col"><input type="button" class="disabled" id="decrease-quantity'+item.id+'" value="-" onclick="TygitTickets.decreaseQuantity(\'quantity'+item.id+'\');TygitTickets.decreaseTotal('+item.price+','+item.discount+');" disabled /> <input type="text" name="quantity'+item.id+'" id="quantity'+item.id+'" value="0" size="2" class="quantity" readonly /><input type="button" value="+" id="increase-quantity'+item.id+'" onclick="TygitTickets.increaseQuantity(\'quantity'+item.id+'\');TygitTickets.increaseTotal('+item.price+','+item.discount+');" /></td></tr>';
        if(ticketTypeIds.length > 0) {
            ticketTypeIds = ticketTypeIds + "," + item.id;
        } else {
            ticketTypeIds = item.id;
        }
        flag = !flag;
      });
      htmlStr = '<form onsubmit="return TygitTickets.validateSelectTicketForm()" id="add-to-basket'+TygitTicketsAttractionId+'" action="'+TygitTicketsAppDomain+TygitTicketsAddToBasketUrl+'" method="get" target="_blank">';
      htmlStr = htmlStr + '<div class="tickets-container"><table class="list" cellspacing="0"><thead><tr><th>'+TygitTicketsLabels["description"]+'</th><th>'+TygitTicketsLabels["quantityAvailable"]+'</th><th>'+TygitTicketsLabels["maxAllocationPerVisitor"]+'</th><th class="price-col">'+TygitTicketsLabels["price"]+'</th><th class="qty-col">'+TygitTicketsLabels["quantity"]+'</th></tr></thead><tbody>' + tableStr + '</tbody></table></div>';
      htmlStr = htmlStr + '<input type="hidden" name="ticketTypeIds" value="' + ticketTypeIds + '" /><input type="hidden" name="attractionId" value="' + TygitTicketsAttractionId + '" /><div class="saving-container" id="fotld-saving-container"></div><div class="total-container" id="fotld-total-container">'+TygitTicketsLabels["total"]+' &pound;0.00</div><div class="message-container">' + (TygitTicketsMessages[group]? TygitTicketsMessages[group]+"<br />":"") + TygitTicketsGeneralSelectionMessage + '</div><div class="button-container"><input type="submit" class="submit-button-disabled" id="fotld-order-button" value="' + TygitTicketsLabels["submit"] + '" disabled /><button type="button" onclick="TygitTickets.resetSelectTicket();">' + TygitTicketsLabels["reset"] + '</button>'+(TygitTicketsBasket?'<button type="button" onclick="TygitTickets.gotoBasket();">' + TygitTicketsLabels["basket"] + '</button>':'')+'<div class="clear"></div></div></form>';
      jQuery("#selectTicketTypes").html(htmlStr);
    });  
}    
    
TygitTickets.increaseQuantity = function(id) {
    if(parseInt(document.getElementById(id).value) < 1) {
        document.getElementById('decrease-'+id).disabled = false;
        document.getElementById('decrease-'+id).className = '';
    }
    document.getElementById(id).value = parseInt(document.getElementById(id).value) + 1;
}

TygitTickets.decreaseQuantity = function(id) {
    if(parseInt(document.getElementById(id).value) > 0) {
        document.getElementById(id).value = parseInt(document.getElementById(id).value) - 1;
        if(parseInt(document.getElementById(id).value) < 1) {
            document.getElementById('decrease-'+id).disabled = true;
            document.getElementById('decrease-'+id).className = 'disabled';
        }        
    }
}

TygitTickets.increaseTotal = function(price, saving) {
    TygitTicketsTotalQuantity += 1;
    TygitTicketsTotal = TygitTicketsTotal + price;
    TygitTicketsSaving = TygitTicketsSaving + saving;
    TygitTickets.displayTotal();
}

TygitTickets.decreaseTotal = function(price, saving) {
    if(TygitTicketsTotalQuantity > 0) {
        TygitTicketsTotalQuantity -= 1;
    }
    if(TygitTicketsTotal > 0) {
        TygitTicketsTotal = TygitTicketsTotal - price; 
        TygitTicketsSaving = TygitTicketsSaving - saving;
        TygitTickets.displayTotal();     
    }
}

TygitTickets.displayTotal = function() {
    jQuery('#fotld-total-container').html(TygitTicketsLabels["total"]+' &pound;'+FixedPointNumber.to(TygitTicketsTotal));
    if(TygitTicketsSaving) {
        jQuery('#fotld-saving-container').html(TygitTicketsLabels["saving"]+' &pound;'+FixedPointNumber.to(TygitTicketsSaving));
    } else {
        jQuery('#fotld-saving-container').html('');
    }
    
    if(TygitTicketsTotal > 0 || TygitTicketsTotalQuantity > 0) {
        document.getElementById('fotld-order-button').className = 'submit-button';
        document.getElementById('fotld-order-button').disabled = false;
    } else {
        document.getElementById('fotld-order-button').className = 'submit-button-disabled';
        document.getElementById('fotld-order-button').disabled = true;
    }
    
}      

TygitTickets.gotoBasket = function() {
    window.location = TygitTicketsAppDomain+TygitTicketsBasketUrl;
}
