var fibd, fida, floorid = 1;
var col1 = '#405219';
var col2 = '#98AF98';
var col3 = '#366367';
var lastclicked = 'none';
var standback = 1;

Effect.BlindUpFromRight = function(element) {
  element = $(element);
  element.makeClipping();
  return new Effect.Scale(element, 0,
    Object.extend({ scaleContent: false,
      scaleY: false,
      restoreAfterFinish: true,
      afterFinishInternal: function(effect) {
        effect.element.hide();
        effect.element.undoClipping();
      }
    }, arguments[1] || {})
  );
}

Effect.BlindDownFromRight = function(element) {
  element = $(element);
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, 100, Object.extend({
    scaleContent: false,
    scaleY: false,
    scaleFrom: 0,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) {
      effect.element.makeClipping();
      effect.element.setStyle({width: '0px'});
      effect.element.show();
    },
    afterFinishInternal: function(effect) {
      effect.element.undoClipping();
    }
  }, arguments[1] || {}));
}

//Modification to apply @Effect->PAIRS, add the follow element, to enable Effect.toggle support:
//'blindr': ['BlindDownFromRight','BlindUpFromRight']
function _open(){
	new Effect.BlindUpFromRight('left');
	new Effect.BlindUpFromRight('right', {afterFinish:function(){
			labels(1);$('doorframe').style.display = 'none';
			standback = 0;
			$('downlink').style.backgroundImage = 'url(/images/lightdown0.gif)';
			$('uplink').style.backgroundImage = 'url(/images/lightup0.gif)';
		}
	}); // after doors open, re-display room labels and hide doorframe (gets in the way)
}
function changeFloor(fid){
	if(standback == 0){ // only do this if the doors arent opening/closing, otherwise they get jammed
		labels(0); // hide labels, prevents them sitting above doors when closing
		standback = 1; // lock the door
		$('doorframe').style.display = ''; // need to reshow the doorframe prior to opening doors
		new Effect.BlindDownFromRight('left'); // close door
		new Effect.BlindDownFromRight('right', {afterFinish:function(){ _change(fid);}}); // after door has closed, change floor
		$('roomimg').style.backgroundImage = 'url(/uploads/floors/' + fid + '_1sq.jpg)'; // change floor images, other floor images are preloaded via onDomReady event, see below.
		$('layoutimg').style.backgroundImage = 'url(/uploads/floors/' + fid + '_2sq.jpg)';
		$('layoutimg').innerHTML = '';
		if(fid > floorid) $('uplink').style.backgroundImage = 'url(/images/aniup.gif)';
		if(fid < floorid) $('downlink').style.backgroundImage = 'url(/images/anidown.gif)';
		floorid = fid;
	}
}

function upDownEvent(evt){
	var clicked = Event.element(evt);
	var mv = true;
	var newfloorid = parseInt(floorid);
	if(clicked.id == 'uplink' && floorid == 4) mv = false;
	if(clicked.id == 'downlink' && floorid == 0) mv = false;
	if(mv){
		if(clicked.id == 'uplink' || clicked.id == 'uplinkimg'){
			newfloorid = newfloorid == 4 ? 4 : newfloorid + 1;
			newfloorid = newfloorid == 2 ? 3 : newfloorid;
		}else{
			newfloorid = newfloorid == 0 ? 0 : newfloorid - 1;
			newfloorid = newfloorid == 2 ? 1 : newfloorid;
		}
		changeFloor(newfloorid);
	}
	Event.stop(evt);
}

function doHighlightEvent(evt){
	var clicked = Event.element(evt);
	var arr;
	arr = clicked.id.split('_');
	if(arr.length == 0) arr = clicked.id.split(':');
	doHighlight(arr[0], arr[1]);
}

function labels(x){
	$$('div.room_label').each(
		function(label){
			var display = x == 1 ? '' : 'none';
			label.style.display = display;
		}
	);	
}

function highlight(f, fid){
	floorid = f;
	lastclicked = fid;
	fidb = $(fid + 'b') ? fid + 'b' : false;//fid.substring(0,fid.length-1) + 'b';
	fida = $(fid + 'a') ? fid + 'a' : false;
	$$('div.floorplan_img').each(
		function(x){
			if(x.id != fid && x.id != fidb && x.id != fida){
				new Effect.Highlight(x.id, {startcolor:col1, endcolor:col2, restorecolor:col2, duration: 1.0});
			}
		}
	);
	if($(fid))  new Effect.Highlight(fid, {startcolor:col1, endcolor:col3, restorecolor:col3, duration: 1.0});
	if($(fida)) new Effect.Highlight(fida, {startcolor:col1, endcolor:col3, restorecolor:col3, duration: 1.0});
	if($(fidb)) new Effect.Highlight(fidb, {startcolor:col1, endcolor:col3, restorecolor:col3, duration: 1.0});
	//col1 = col2;
	getRoomDetails(fid);
}

function doHighlight(f, fid){
	fidb = $(fid + 'b') ? fid + 'b' : false;
	fida = $(fid + 'a') ? fid + 'a' : false;
	if(lastclicked == 'none'){
		highlight(f, fid);
	}else{
		resetHighlight(f, fid);
		if(fid != lastclicked && fida != lastclicked && fidb != lastclicked){
			setTimeout('highlight(\'' + f + '\',\'' + fid + '\');',1000);
		}else{
			lastclicked = 'none';	
		}
	}
}

function linkClickEvent(evt){
	var clicked = Event.element(evt);
	arr = clicked.id.split('_');
	doHighlight(floorid, arr[1]);
}

function resetHighlight(f,fid){
	$$('div.floorplan_img').each(
		function(x){
			fid = x.id;
			fid = fid.replace('a', '');
			fid = fid.replace('b', '');
			fidb = $(fid + 'b') ? fid + 'b' : false;
			fida = $(fid + 'a') ? fid + 'a' : false;
			if(fid == lastclicked||fida == lastclicked||fidb == lastclicked){
				new Effect.Highlight(x.id, {startcolor:'#366367', endcolor:'#405219', restorecolor:'#405219', duration: 1.0});
			}else{
				new Effect.Highlight(x.id, {startcolor:'#E4EFD1', endcolor:'#405219', restorecolor:'#405219', duration: 1.0});
			}
		}
	);
}

function changeFloorEvent(evt){
	changeFloor(Event.element(evt).rel);
	Event.stop(evt);
	
	return false;
}

function _change(fid){
	var debug = 0;
	floorid = fid;
	var aj = new Ajax.Updater('floorplan_container', '/rooms/layouts/' + fid, {
		method: 'post',
		parameters: 'aj=1',
		onComplete: function(e){
			if(debug == 1) alert(e.responseText);
			$$('a.liftlink').each(
				function(a){
					a.className = a.className.replace(' livefloor', '');
					a.style.fontWeight = 'normal';
					a.style.color = '#77979A';
				}
			);
			$('lift' + fid).style.fontWeight = 'bold';
			$('lift' + fid).style.color = '#ffffff';
			getFloorDetails(fid);
			setTimeout("_open();", 300);
			$('floornum').src = '/images/floorplans/num' + fid + '.gif';
			$('roomclick').style.display = fid == 4 ? 'none' : '';
			new Effect.Appear('floorplan_container',{duration: 1.0});
			return true;
		},
		asynchronous:true, 
		evalScripts:true
	});
}

function getFloorDetails(fid){
	var arr;
	var aj = new Ajax.Updater('floorplan_desc', '/floors/desc/' + fid, {
		method: 'post',
		parameters: 'aj=1',
		onComplete: function(e){
			if(debug == 1) alert(e.responseText);
			new Effect.Appear('floorplan_desc');
			getRoomList(fid);
			return true;
		}
	});
}

function getRoomList(fid){
	var arr;
	var aj = new Ajax.Updater('roomlist', '/rooms/roomlist/' + fid, {
		method: 'post',
		onComplete: function(e){
			if(debug == 1) alert(e.responseText);
			new Effect.Appear('roomlist');
			init();
			return true;
		}
	});
}

function getRoomDetails(rid){
	var arr;
	$$('td.roomcell').each(function(td){td.style.fontWeight = 'normal';});
	$$('#roomrow_' + rid + ' td').each(function(td){td.style.fontWeight = 'bold';});
	
	var aj = new Ajax.Updater('floorplan_desc', '/rooms/desc/' + rid, {
		method: 'post',
		parameters: 'aj=1',
		onComplete: function(e){
			if(debug == 1) alert(e.responseText);
			new Effect.Appear('floorplan_desc');
			return true;
		}
	});
	getRoomLayouts(rid);
	$('roomimg').style.display = 'none';
	if (typeof(timeout) != "undefined") { clearTimeout(timeout); }
	startUpdater('roomimg', '/rooms/slideshow/' + rid, 20);
}

function getRoomLayouts(rid){
	$('layoutimg').style.background = 'none';
	var aj = new Ajax.Updater('layoutimg', '/rooms/getlayouts/' + rid, {
		method: 'post',
		parameters: 'aj=1',
		onComplete: function(e){
			if(debug == 1) alert(e.responseText);
			new Effect.Appear('layoutimg');
			return true;
		}
	});
}

function init() {
	pic1= new Image(100,25); 
	pic1.src="/images/door.gif";
	boxcols.each(resetBoxes); // loop through boxes and reset them
	$('homemenu_3').style.color = '#ffffff'; // set active text nav item
	$('homebox_3').style.backgroundColor = '#7EB365'; // set active box
	
	$$('div.floorplan_img').each(
		function(e){
			Event.observe(e.id, 'click', doHighlightEvent, false);
		}
	);
	$$('a.liftlink').each(
		function(e){
			Event.observe(e.id, 'click', changeFloorEvent, false);
		}
	);
	$$('a.liftlight').each(
		function(e){
			Event.observe(e.id, 'click', upDownEvent, false);
		}
	);
	$$('tr.roomrow').each(
		function(e){
			Event.observe(e.id, 'click', linkClickEvent, false);
		}
	);
}

function doPreloads(){
	var floors = [0,1,3,4];
	var pics = [1,2];
	floors.each(
		function(x){
			pics.each(
				function(y){
					eval('var pic' + y + x + ' = new Image();pic' + y + x + '.src = \'/uploads/floors/' + x + '_sq' + y + '.gif\';');
				}
			);
		}
	);
}

//Event.onDOMReady(doPreloads);  
Event.observe(window, 'load', init, false);
