YAHOO.namespace("Squiz.DUT");
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
function eraseCookie(name) {
	createCookie(name,"",-1);
}
YAHOO.Squiz.DUT = {
	regionslookup: [],
	setregion: function(e) {
		var origin = YAHOO.util.Event.getTarget(e);
		if (origin.id) {
			console.log(origin.id)
			var regionstr = origin.id.replace('area-','');
			createCookie('DUTRegion',regionstr,7);
		}
		// YAHOO.util.Event.preventDefault(e);
	},
	tooltips: function(e) {
		var origin = YAHOO.util.Event.getTarget(e);
		if (origin.title) {
			var tiptext = origin.title.replace(/ \(/,"<br><br>");
			tiptext = tiptext.replace(/, /g,"<br>");
			tiptext = tiptext.replace(/\)/g,"<br>");
// deal with empty region list
			tiptext = tiptext.replace(/<br><br><br>/g,"<br>");
			var tooltip = new YAHOO.widget.Tooltip('tt-'+origin.id, { context:origin.id, text:tiptext, showdelay: 50, hidedelay: 100 } );
			origin.title = '';	
		}
		YAHOO.util.Event.preventDefault(e);
	},
	regionselector: function(e) {
		var selector;
		if (selector = document.getElementById('region-selection')) {
			var options = selector.getElementsByTagName('option');
			var regionsdata = [];
			for (var i=1,l=options.length;i<l;i++) {
				regionsdata.push(options[i].id);
				YAHOO.Squiz.DUT.regionslookup[options[i].id] = options[i].value;
			}
			selector.parentNode.removeChild(selector);
			var regionDS = new YAHOO.widget.DS_JSArray(regionsdata);
			var autoc = new YAHOO.widget.AutoComplete("region-input","region-container", regionDS);
			autoc.prehighlightClassName = "yui-ac-prehighlight";
			autoc.typeAhead = true;
			autoc.useShadow = true;
			autoc.forceSelection = true;
		}
	},
	gotoregion: function(e) {
		var inputfield;
		if (inputfield = document.getElementById('region-input')) {
			var region = YAHOO.Squiz.DUT.regionslookup[inputfield.value];
			console.log(region);
			if (region) {
				window.location.href='http://dut.clients.squiz.co.uk/?region-selection='+region;
			}	
		}
		YAHOO.util.Event.preventDefault(e);
	}
};
YAHOO.util.Event.addListener('map1','mouseover',YAHOO.Squiz.DUT.tooltips);
YAHOO.util.Event.addListener('map1','click',YAHOO.Squiz.DUT.setregion);
// YAHOO.util.Event.addListener(window,'load',YAHOO.Squiz.DUT.regionselector);
YAHOO.util.Event.onDOMReady(function(){
	
	var insertDate = function(type,args,obj) {
		var prefix = obj.prefix;
		var dateinput = document.getElementById(prefix+'_date');
		var date = args[0][0];
		var year = date[0], month = date[1], day = date[2];
		dateinput.value = day + "/" + month + "/" + year;
		//dateinput.value = year + "-" + month + "-" + day;
		obj.dialog.hide();
		/*
		var prefix = obj.id.replace('-cal_t','');
		var date = args[0][0];
		var year = date[0], month = date[1], day = date[2];
		var dateinput = document.getElementById(prefix+'_date');
		dateinput.value = day + "/" + month + "/" + year;
		*/
	};
	
	var calendars = [
		{"prefix":"from"},
		{"prefix":"to"}
	];
	
	// var calendarids = ['from','to'];
	
	var calendar, dialog;
	var datenow = new Date();
	var day = datenow.getDate();
	datenow.setDate(day+2);
	
	for (var i=0,l=calendars.length;i<l;i++) {
		
		calendar = new YAHOO.widget.Calendar(calendars[i].prefix+'-cal', {
			iframe: false,
			mindate: datenow
		});
		
		dialog = new YAHOO.widget.Dialog(calendars[i].prefix+'-container', {
			context:[calendars[i].prefix+'-date-show', "tl", "bl"],
			// buttons:[ {text:"Select", isDefault:true, handler: okHandler}, {text:"Cancel", handler: cancelHandler}],
			width:"16em",
			draggable:false,
			close:true
		});
		
		// console.log(calendarids[i]);
		
		calendar.render();
		dialog.render();
		
		// Using dialog.hide() instead of visible:false is a workaround for an IE6/7 container known issue with border-collapse:collapse.
		dialog.hide();
		
		calendar.renderEvent.subscribe(function() {
			// Tell Dialog it's contents have changed, Currently used by container for IE6/Safari2 to sync underlay size
			dialog.fireEvent("changeContent");
		});
		
		calendars[i].calendar = calendar;
		calendars[i].dialog = dialog;
		
		calendar.selectEvent.subscribe(insertDate,calendars[i],true);
		
		YAHOO.util.Event.on(calendars[i].prefix+'-date-show', "click", dialog.show, dialog, true);
		
	}
	
});
YAHOO.Squiz.DUT.showPeopleOptionsEvt = function(e,paxselect) {
	var evt = YAHOO.util.Event.getEvent(e);
	var target = YAHOO.util.Event.getTarget(evt);
	YAHOO.Squiz.DUT.showPeopleOptions(target,paxselect,true);
};
YAHOO.Squiz.DUT.roomlookup = {
	2:2,
	5:2,
	1:1,
	3:3,
	4:4
};
YAHOO.Squiz.DUT.showPeopleOptions = function(target,paxselect,isEvent) {
	var pax = YAHOO.Squiz.DUT.roomlookup[target.value];
	var paxstr;
	pax > 1 ? paxstr = pax + ' people' : paxstr = pax + ' person';
	var paxnode = document.createTextNode(' ('+paxstr+')');
	var spans = target.parentNode.getElementsByTagName('span');
	if (spans.length > 0) {
		spans[0].replaceChild(paxnode,spans[0].firstChild);
	} else {
		var paxspan = document.createElement('span');
		paxspan.appendChild(paxnode);
		target.parentNode.appendChild(paxspan);
	}
	if (isEvent === true) {
		YAHOO.Squiz.DUT.updatePeopleTotal();
	}
};
YAHOO.Squiz.DUT.updatePeopleTotal = function() {
	var parent = document.getElementById('room-req-div');
	var curropts = parent.getElementsByTagName('div');
	var pax = 0;
	for (var i=0,l=curropts.length;i<l;i++) {
		// console.log(curropts[i].style.display);
		if (curropts[i].style.display != 'none') {
			var sel = curropts[i].getElementsByTagName('select');
			if (sel[0].disabled !== true) {
				pax += YAHOO.Squiz.DUT.roomlookup[sel[0].value];
			}
		}
	}
	document.getElementById('total_people').innerHTML = pax;
};
YAHOO.Squiz.DUT.showRoomOptions = function(e) {
	var evt = YAHOO.util.Event.getEvent(e);
	var target = YAHOO.util.Event.getTarget(evt);
	var numrooms = target.value;
	var parent = document.getElementById('room-req-div');
	var curropts = parent.getElementsByTagName('div');
	var optsl = curropts.length
	var visibleopts = 0;
	for (var i=0;i<optsl;i++) {
		if (curropts[i].style.display == 'none') {
			break;
		}
		visibleopts++;
	}
	if (numrooms >= visibleopts) {
		if (numrooms > visibleopts) {
			var roomreq = curropts[0];
		}
		for (var i=0;i<numrooms;i++) {
			if (i<visibleopts) {
				var opt = curropts[i];
				var sel = opt.getElementsByTagName('select');
				for (var j=0;j<sel.length;j++) {
					if (sel[j].disabled) {
						YAHOO.Squiz.DUT.showPeopleOptions(sel[j]);
						sel[j].disabled = false;
					}					
				}
			} else {
				// console.log(i);
				var thisid = roomreq.id.replace('1',i+1);
				if (document.getElementById(thisid)) {
					var thisreq = document.getElementById(thisid);
					thisreq.style.display = '';
				} else {
					var thisreq = roomreq.cloneNode(true);
					var roomtext = document.createTextNode('Room '+(i+1)+' ');
					var hidden = document.createElement('input');
					hidden.type = 'hidden';
					hidden.setAttribute('name', 'room-type-'+(i+1)+'');
					hidden.setAttribute('id', 'room-type-'+(i+1)+'');
					
					thisreq.appendChild(hidden);
					thisreq.replaceChild(roomtext,thisreq.firstChild);
					thisreq.id = thisid;
					var sel = thisreq.getElementsByTagName('select');
					sel[0].id = (i+1);
					for (var j=0;j<sel.length;j++) {
						YAHOO.Squiz.DUT.showPeopleOptions(sel[j]);
					}
					parent.appendChild(thisreq);
					var parentId = 'room-req-'+(i+1)+'';
					
					if(document.getElementById(parentId)){
					    var hiddenParent = document.getElementById(parentId);
							var hiddenInputs = hiddenParent.getElementsByTagName('input');
							if(hiddenInputs[0].id=='room-type-1'){
									if(hiddenParent.removeChild(hiddenInputs[0])){
									  //don't know why but if I take the remove function out of the if statement
										//it stops working - ABurns 09/10/09
									}
							}																						 
							
					}
				}
			}
			if (typeof sel[0] == 'object') {
				var evts = YAHOO.util.Event.getListeners(sel[0],'change');
				if (evts === null) {
					YAHOO.util.Event.addListener(sel[0],'change',YAHOO.Squiz.DUT.showPeopleOptionsEvt,sel[1]);
				}
			}
		}
	} else {
		for (var i=optsl-1;i>=numrooms;i--) {
			if (i>numrooms-1) {
				if (i>0) {
					curropts[i].style.display = 'none';
				} else {
					var sel = curropts[i].getElementsByTagName('select');
					for (var j=0;j<sel.length;j++) {
						if (!sel[j].disabled) {
							var spans = sel[j].parentNode.getElementsByTagName('span');
							if (spans.length > 0) {
								var text = document.createTextNode('')
								spans[0].replaceChild(text,spans[0].firstChild);
							}
							sel[j].disabled = true;
						}					
					}
				}
			}
		}
	}
	YAHOO.Squiz.DUT.updatePeopleTotal();
};
YAHOO.Squiz.DUT.showRoomOptionsInit = function(e) {
	if (document.getElementById('pax-room-req-fieldset')) {
		var parent = document.getElementById('pax-room-req-fieldset');
		var legendtag = parent.getElementsByTagName('legend')[0];
		legendtag.innerHTML = 'STEP 2. Room Requirements';
		var div = parent.getElementsByTagName('div')[0];
		var roomopts = document.getElementById('roomopts');
		div.style.display = 'none';
		roomopts.style.display = 'block';
	}
};
YAHOO.util.Event.addListener('num-rooms','change',YAHOO.Squiz.DUT.showRoomOptions);
YAHOO.util.Event.onDOMReady(YAHOO.Squiz.DUT.showRoomOptionsInit);
