		function saveItinerary(){
			var params = serializeItinerary();
			var url = imgroot + '/itinerary/ajax_saveitinerarydays.cfm';
			$.ajax({
				   type: "get",
				   url: url,
				   data: params,
				   success: function(response){
					   return false;
				   },
				   failure: function(response){
					   alert('Unable to save itinerary');
				   }
				}
			);			
		}

		function removeFromItin(type,id){
			var params = new Object();
			params.type = type;
			params.recid = id;
			var url = imgroot + '/itinerary/ajaxremoveitin.cfm';
			$.ajax({
				   type: "post",
				   url: url,
				   data: params,
				   success: function(response){
					$('.draglist').each(
						function(index,itm){
							$(itm).find('li.itinitem').each(
								function(index,itm){
									var thisid = $(itm).find('input[name=id]')[0].value;
									var thistype = $(itm).find('input[name=type]')[0].value;
									if(id == thisid && type == thistype){
										itm.parentNode.removeChild(itm);
										return;
									}
								}
							)
						}
					);

				   },
				   failure: function(response){
					   alert('Unable to save itinerary');
				   }
				}
			);
		}

		function serializeItinerary(){
			var alldays = $('.droplist');
			var params = new Object();
			for (var i = 0; i < alldays.length; i++){
				var idlist = '';
				var day = alldays[i];
				var listings = $(day).find('input[name=key]').map(function(indx,itm){return itm.value}).each(function(indx,itm){idlist = idlist + ',' + itm});
				if(idlist.indexOf(',') == 0)
					idlist = idlist.substr(1,idlist.length);
				params['day' + (i + 1)] = idlist;
			}
			return params;
		}
		
		function updateCounts(){
			var alldays = $('.itinerarycolumnRight .listingsWrapper').each(
				function(indx,itm){
					$(itm).find('.numStops').text($(itm).find('input[name=key]').length);
			   }
			);
		}
		
		function removeFromDay(type,id,linkobject){
			var listElement = linkobject.parentNode.parentNode.parentNode;			
			var listContainer = listElement.parentNode;
			listContainer.removeChild(listElement);
			updateCounts();
			saveItinerary();
			return false;
		}
		
		function getImg(display){
			if(nightTime){
				if ($(display).find('img')[0].src.indexOf('arrow-grey1.gif') > 0)
					imgsrc = imgroot + '/includes/images/shell/arrow-grey1-dwn.gif';
				else
					imgsrc = imgroot + '/includes/images/shell/arrow-grey1.gif';
			}else{					
				if ($(display).find('img')[0].src.indexOf('arrow-blue1.gif') > 0)
					imgsrc = imgroot + '/includes/images/shell/arrow-blue1-dwn.gif';
				else
					imgsrc = imgroot + '/includes/images/shell/arrow-blue1.gif';
			}
			
			return imgsrc;
		}
		
		
		function displayDayListings (display) {
			
			
			imgsrc = getImg(display);
			$(display).find('img')[0].src = imgsrc;
			
			$(display.parentNode.parentNode.parentNode).children(".itincatitems").slideToggle();
			return false;			
		}
		
		
		function displayListings (display) {
			
			imgsrc = getImg(display);
			$(display).find('img')[0].src = imgsrc;
			$(display.parentNode.parentNode).children(".itincatitems").slideToggle();
			return false;			
		}
		
		function displayListingDetail (display) {
			imgsrc = getImg(display);
			$(display).find('img')[0].src = imgsrc;
			$(display).parents(".l-itinLists").children(".listing-details").slideToggle();
			return true;			
		}

	(function() {
	
	var Dom = YAHOO.util.Dom;
	var Event = YAHOO.util.Event;
	var DDM = YAHOO.util.DragDropMgr;
	var dropcount = 0;
	//////////////////////////////////////////////////////////////////////////////
	// example app
	//////////////////////////////////////////////////////////////////////////////
	TripBuilderApp = {
		init: function() {
			<!---Get List of distinct categories--->
			this.categories = window['categories'];
			this.numdays = window['numdays'];
	
			/*Initialize Listings*/
	
			$('.draglist').each(
				function(index,itm){
					new YAHOO.util.DDTarget(itm);
					$(itm).find('li.itinitem').each(
						function(index,itm){
							new TripBuilderApp.DDList(itm);
						}
					)
				}
			);

			/*Initialize Days*/		
			for (var i = 0; i < this.numdays; i++){
				new YAHOO.util.DDTarget('daydrop_' + i);
				var elems = Dom.getElementsByClassName('itinitem','li','daydrop_' + i);
				for (var j = 0; j < elems.length; j++){
					new TripBuilderApp.DDList(elems[j]);
				}
			}	
			Event.on("switchButton", "click", this.switchStyles);
		},
	
		showOrder: function() {
			var parseList = function(ul, title) {
				var items = ul.getElementsByTagName("li");
				var out = title + ": ";
				for (i=0;i<items.length;i=i+1) {
					out += items[i].id + " ";
				}
				return out;
			};
	
			var ul1=Dom.get("ul1"), ul2=Dom.get("ul2");
			alert(parseList(ul1, "List 1") + "\n" + parseList(ul2, "List 2"));
	
		},
	
		switchStyles: function() {
			Dom.get("ul1").className = "draglist_alt";
			Dom.get("ul2").className = "draglist_alt";
		}
	};
	
	//////////////////////////////////////////////////////////////////////////////
	// custom drag and drop implementation
	//////////////////////////////////////////////////////////////////////////////
	
	TripBuilderApp.DDList = function(id, sGroup, config) {
		TripBuilderApp.DDList.superclass.constructor.call(this, id, sGroup, config);
		this.logger = this.logger || YAHOO;
		var el = this.getDragEl();
		var handle = Dom.getElementsByClassName('dragHandle',null,this.getEl());
		if(handle.length > 0){
			//this.setHandleElId(Dom.generateId(handle[0]));
		}
		
		Dom.setStyle(el, "opacity", 0.67); // The proxy is slightly transparent
	
		this.goingUp = false;
		this.lastY = 0;
	};
	
	YAHOO.extend(TripBuilderApp.DDList, YAHOO.util.DDProxy, {
		startDrag: function(x, y) {
			this.logger.log(this.id + " startDrag");
			// make the proxy look like the source element
			var dragEl = this.getDragEl();
			var clickEl = this.getEl();
			Dom.setStyle(this.getEl(), "opacity", 0.10);
			var li = document.createElement('LI');
			li.id = 'tmpli';
			li.innerHTML = 'Insert Here';
			li.style.borderBottom = 'dashed 1px #EEE';
			if(nightTime){
				li.style.backgroundColor = '#cccccc';
			}else{
				li.style.backgroundColor = '#5da1d0';
			}
			li.style.lineHeight = '32px';
			li.style.color = '#FFF';
			this.tmpli = li;
			this.tmpli.style.lineHeight = this.tmpli.style.height = (clickEl.scrollHeight + 'px');
			this.tmpli.style.textAlign = 'center';
			this.tmpli.style.fontWeight = 'bold';
	
			dragEl.innerHTML = clickEl.innerHTML;
	
			Dom.setStyle(dragEl, "color", Dom.getStyle(clickEl, "color"));
			Dom.setStyle(dragEl, "backgroundColor", Dom.getStyle(clickEl, "backgroundColor"));
			Dom.setStyle(dragEl, "border", "2px solid gray");
		},
	
		endDrag: function(e) {
		},
	
		onDragDrop: function(e, id) {
			var destEl = Dom.get(id);
			var destDD = DDM.getDDById(id);
			var clickEl = this.getEl();
			var dstParent = destEl.parentNode;
			var srcParent = clickEl.parentNode;
			var clone = null;
			var clone = $(clickEl).clone()[0];
			Dom.setStyle(clone, "opacity", 1.00);		
			clone.id = new Date().getTime();
	
			var p = this.tmpli.parentNode;
			idSrcParent = srcParent.id;
			//alert(idSrcParent.substring(0,idSrcParent.indexOf('_')));
			//alert("p = " + p);
			//alert(clickEl.id);
			if(idSrcParent.substring(0,idSrcParent.indexOf('_')) == 'daydrop'){
				/*p.removeChild(clickEl);
				p.insertBefore(clickEl,this.tmpli);
				p.removeChild(this.tmpli);*/
				srcParent.removeChild(clickEl);
				p.insertBefore(clone,this.tmpli);
				p.removeChild(this.tmpli);
				new TripBuilderApp.DDList(clone);
			}else if(p){
				p.insertBefore(clone,this.tmpli);
				p.removeChild(this.tmpli);
				new TripBuilderApp.DDList(clone);
			}
			Dom.setStyle(this.getEl(), "opacity", 1.00);
			DDM.refreshCache();
			updateCounts();
			saveItinerary();
	
		},
	
		onDrag: function(e) {
			// Keep track of the direction of the drag for use during onDragOver
			var y = Event.getPageY(e);
	
			if (y < this.lastY) {
				this.goingUp = true;
			} else if (y > this.lastY) {
				this.goingUp = false;
			}
	
			this.lastY = y;
		},	
		onDragOut: function(e,id){
			if(this.tmpli.parentNode == Dom.get(id)){
				this.tmpli.parentNode.removeChild(this.tmpli);
			}
			Event.stopPropagation(e);
		},
	
		onDragOver: function(e, id) {
			var srcEl = this.getEl();
			var destEl = Dom.get(id);
			var dragEl = this.getDragEl();
			//If we're hovering over a droppable list item
			if (destEl.nodeName.toLowerCase() == "li" && !Dom.hasClass(destEl,'listSpacer') && !Dom.hasClass(destEl.parentNode,'draglist')) {
				var orig_p = srcEl.parentNode;
				var p = destEl.parentNode;
				if (this.goingUp) {
					p.insertBefore(this.tmpli, destEl); // insert above
				} else {
					p.insertBefore(this.tmpli, destEl.nextSibling); // insert below
				}
				DDM.refreshCache();
				Event.preventDefault(e);
				Event.stopPropagation(e);			
			}
			//Else if hovering over an empty list
			else{
				if (destEl.nodeName.toLowerCase() == "ul" && !Dom.hasClass(destEl,'draglist')) {
					if(Dom.getElementsByClassName('itinitem','li',destEl).length == 0){
						destEl.appendChild(this.tmpli);
						DDM.refreshCache();					
					}
				}
			}
		},
		onInvalidDrop: function(e, id){
			Dom.setStyle(this.getEl(), "opacity", 1.00);		
			var p = this.tmpli.parentNode;
			if(p){
				p.removeChild(this.tmpli);
			}
		}
	
	});
	
	Event.onDOMReady(TripBuilderApp.init, TripBuilderApp, true);
	
	})();

	var logit = function(txt,nobr){
		var logdiv = YAHOO.util.Dom.get('logdiv');
		if(logdiv){
			logdiv.innerHTML += txt + (!nobr ? '<br>' : '');
			logdiv.scrollTop = logdiv.scrollHeight;
		}
	}