addToItineraryLinks = ['tour_details_itinerary_btn','tour_prices_itinerary_btn'];
itineraryBookLinks = ['tour_details_book_btn','tour_prices_book_btn'];

/**
 * Set Itinerary
 */
function SetItinerary(idtour, date, nice_date, tour, msgName, linkName)
{            
    Bookings[idtour] = [date, nice_date, tour];
    applyItineraryToLinks(false, idtour);

    var components = (arguments.length > 5) ? arguments[5] : '';
    if (date == false || idtour == false)
        return;
    
    sendAjaxMessage('Booking','set_Itinerary',{'components':components, 'idtour' : idtour,'name': tour, 'date': date});
    var messageEl = jQuery('#'+msgName);
    var linkEl = jQuery('#'+linkName);
    
    if (messageEl)
    {
        if (messageEl.html() != '' && messageEl.css('display') == 'none')
        {
            messageEl.css({display: 'inline'});
        }
        else
        {
            messageEl.append(
                jQuery('<a>')
                    .attr('href','booking')
                    .attr('title','')
                    .attr('class','itinBookLink')
                    .append(
                        jQuery('<span>').html('Tour added to itinerary. Book &raquo;')
                    ))
                    .css({display: 'inline'});
        }
    }        
    if (linkEl) linkEl.hide();
}

/**
 * Send browser to booking page
 */
function goToBooking()
{
  document.location = "/booking/";
}

/**
 * Return the IDs of the selected optional extras
 */
function GetSelectedComponents() 
{
    var values='';
    var checkboxes = jQuery("[name='components[]']");    
    for(var j = 0; j < checkboxes.length; j++) 
    {    
        if(checkboxes[j].is(':checked')) 
        {        
            if (values!='') values+=',';
            values += checkboxes[j].val();
        }
    }
    return values;
}
/**
 * Update the checked components session for the view tour page
 */
function UpdateCheckedComponents(idtour,checked) 
{
  sendAjaxMessage('PublicAjax','updateCheckedComponents',{'idtour':idtour,'checked':checked});
}
/**
 *
 */
function setTourCount(num) 
{
    var update = "";
    if (num == 1) update = num + ' TOUR';
    else update = num + ' TOURS';
    jQuery('#ItinTourCount').html(update);      
    var uri = parseUri(window.location);    
    if (num == 0 || uri.directory != '/')
    {
        jQuery('#btnMyItineraryButton').html('');
        jQuery('#btnMyItineraryButton')            
            .append(jQuery('<span>').html('View Shopping Cart &raquo;'));
            
        jQuery('#btnMyItineraryButton').live('click',function() {
           ShowMyItinerary(); 
        });
    }
    else
    {
        jQuery('#btnMyItineraryButton').html('');
        jQuery('#btnMyItineraryButton')
            .attr('onclick','document.location.href = "/booking/"; return false;')
            .append(jQuery('<span>').html('Checkout &raquo;'));
    }
}
/**
 * 
 */
function ShowMyItinerary() {
  //console.log('My Itin');  
  vars = {bookings:BookingsLI(false,true)}
  ShowActions(this,'MyItinerary',vars,false,true);
  x$(document).observe('click', HideItinerary);
  jQuery('#MyItinerary').show();
  jQuery('#SRA').hide();
}
/**
 * Hide Itinerary
 */
function HideItinerary(e) 
{
//  console.log(xEvent(e).eventElem().selectUp('div.my-itinerary-box').element());
  if(xEvent(e).eventElem().selectUp('div.my-itinerary-box')) {
    if(xEvent(e).eventElem().selectUp('a')) {
      var linkHref = xEvent(e).eventElem().selectUp('a').element().href;
      if(linkHref.match(/tour.[0-9]+/))
        return true;
    }
    return false;
  }
  jQuery('#MyItinerary').hide();
}


function addSetItineraryToLink(id,booking,idtour) 
{
    var btn = jQuery('#'+id);
    if (btn.length == 0) return false;
    //if(!x$(id).exists()) return false;
    var booking_link = '';
    
    if(booking)
        booking_link = "showLoading('Loading booking page...');document.location.href='/';";
    var html = btn.html().replace('Add More Tours','Add To Cart');    
    jQuery('#'+id)
        .attr('href','#')
        .attr('onclick',"SetItinerary("+idtour+",'0000-00-00','','"+TourNames[idtour]+"','ItineraryLink','',GetSelectedComponents());"+booking_link+" return false;")
        .html(html);   
}

function removeSetItineraryFromLink(id) 
{
    var btn = jQuery('#'+id);
    if (btn.length == 0) return false;
    var html = btn.html().replace('Add To Cart','Add More Tours')
    console.log(html);
    jQuery('#'+id)
        .attr('href','#')
        .attr('onclick',"showLoading('Loading booking page...'); document.location.href='/'; return false;")
        .html(html);
}

function applyItineraryToLinks(add,idtour) 
{
    for(var i=0;i<addToItineraryLinks.length;i++) 
    {    
        if (add)
        {
            addSetItineraryToLink(addToItineraryLinks[i],false,idtour);
        }      
        else
        {
            removeSetItineraryFromLink(addToItineraryLinks[i]);
        }
    }
    
    for(var i=0;i<itineraryBookLinks.length;i++) 
    {    
        if(add)
        {
            addSetItineraryToLink(itineraryBookLinks[i],true,idtour);
        }
        else
        {
            removeSetItineraryFromLink(itineraryBookLinks[i]);
        }
    }
}
/**
 *
 */
function removeTour(idtour) 
{
  delete( Bookings[idtour] );
  jQuery('#MyIBookings').html(BookingsLI(false, true));
  jQuery('#SRABookings').html(BookingsLI(15, true));
  //x$('MyIBookings').setValue(BookingsLI(false,true));
  //x$('SRABookings').setValue(BookingsLI(15,true));  
  sendAjaxMessage('Booking', 'delete_Itinerary', {'idtour':idtour},null,false);
  applyItineraryToLinks(true,idtour);
  jQuery('#SRA').hide();
  //x$('SRA').hide();
}

// parseUri 1.2.2
// (c) Steven Levithan <stevenlevithan.com>
// MIT License

function parseUri (str) {
	var	o   = parseUri.options,
		m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
		uri = {},
		i   = 14;

	while (i--) uri[o.key[i]] = m[i] || "";

	uri[o.q.name] = {};
	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
		if ($1) uri[o.q.name][$1] = $2;
	});

	return uri;
};

parseUri.options = {
	strictMode: false,
	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
	q:   {
		name:   "queryKey",
		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
	},
	parser: {
		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
	}
};
