var menus={};

function add_image_overlays(){

	var imgs=$.id('main-content').getElementsByTagName('IMG');
	var b=document.getElementsByTagName('BODY');
	b=b[0];

	for(var i=0;i<imgs.length;i++)
		{
		var c=DomUtils.getAnyAttribute(imgs[i],'class');
		if(c!=null && c.indexOf('property-image')>-1)
			{
			var off=DomUtils.getTrueOffset(imgs[i]);
			
			var top=(off.t+imgs[i].offsetHeight)-38;
			var left=(off.l+imgs[i].offsetWidth)-28;

			ElementHandler.putAtEnd(
								b,
								{
								tag: 'IMG',
								src: 'http://www.tropicalconnections.co.uk/grfx/palm-tree-small.png',
								className: 'overlay',
								title: 'Tropical Connections',
								alt: 'Tropical Connections -- Propertyies for sale in Barbados',
								style: 'top:'+top+'px; left:'+left+'px;'
								}
								);
			}
		}
}

function show_hide_menu_m(){

	var obj=$.id(this._p);

	if(typeof obj._timeout!=undefined && obj._timeout!=false)
		{
		clearTimeout(obj._timeout);
		obj._timeout=false;
		}
	else
		obj._timeout=setTimeout('show_hide_menu("'+obj.id+'",true)',800);
}

function show_hide_menu(obj,now){

	//menus is meant to be global

	if(this.id)
		obj=this;
	else
		obj=$.id(obj);

	var menu_id=obj.innerHTML.replace(/ /g,'-')+'_top';
	menu_id=menu_id.toLowerCase();
	
	if(menu_id.indexOf('menu-')==-1)
		menu_id='menu-'+menu_id;

	if(now!=true)
		{
		for(layerId in menus)
			if(menus[layerId]!=obj.id)
				show_hide_menu(layerId,true);

		if($.id(menu_id))
			{
			if(!menus[obj.id])
				{
				menus[obj.id]=obj.id;
				$.id(menu_id)._p=obj.id;
			
				$.id(menu_id).style.left=(obj.offsetLeft+45)+'px';

				clearTimeout(obj._timeout);
			
				fader(menu_id,2.25,100,0,1);
				}
			else
				obj._timeout=setTimeout('show_hide_menu("'+obj.id+'",true)',800);				
			}
		}
	else
		{
		delete menus[obj.id];
		clearTimeout(obj._timeout);
		fader(menu_id,-2.25,0,100,1);
		}
}

function add_sub_menus(){

	var target=$.id('sub-menu-target');
	var menus=$.className('sub-menu','text-admin-text');

	for(var i=0;i<menus.length;i++)
		{
		var menu=menus[i].cloneNode(true);

		menu.id=menu.id+'_top';

		target.appendChild(menu);

		menu.removeChild(menu.getElementsByTagName('H2')[0]);
		$.id('text-admin-text').removeChild(menus[i]);
		}

	var main_menu_items=$.id('menu-main-menu').getElementsByTagName('A');

	for(i=0;i<(main_menu_items.length);i++)
		{
		EventUtils.addEventListener(main_menu_items[i],'mouseover',show_hide_menu);
		EventUtils.addEventListener(main_menu_items[i],'mouseout',show_hide_menu);

		var menu=main_menu_items[i].innerHTML.replace(/ /g,'-')+'_top';
		menu='menu-'+menu.toLowerCase();

		if($.id(menu))
			{
			EventUtils.addEventListener(menu,'mouseover',show_hide_menu_m);
			EventUtils.addEventListener(menu,'mouseout',show_hide_menu_m);
			}
		}
}

function deal_with_pngs(){

	if(BrowserDetect.browser=='Explorer' && BrowserDetect.version==6)
		{
		var imgs=document.getElementsByTagName('IMG');

		for(var i=0;i<imgs.length;i++)
			{
			var img=imgs[i];

			if(img.src.indexOf('.png')>-1)
				{			
				var cur=img.src;

				img.src='http://www.tropicalconnections.co.uk/grfx/s.gif';
				
				if(img.style.filter=='')
					img.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+cur+'")';
				}
			}			
		}
}

function add_roll(obj,text,heights,add_fade,add_link,set_cookie,start_hidden){

	obj=$.id(obj);

	var contents=obj.innerHTML;

	var children=DomUtils.getChildren(obj);
	var c=DomUtils.getAnyAttribute(children[0],'class');

	if(c=='inner')
		var inner=children[0];
	else
		{
		contents='<div id="'+obj.id+'-inner" class="inner">'+contents+'</div>';
		obj.innerHTML=contents;
		var inner=$.id(obj.id+'-inner');
		}

	obj._add_link=add_link;
	obj._text=text;

	var off_height=(typeof heights[2]!='undefined')?inner.offsetHeight+heights[2]:inner.offsetHeight;

	obj._natural_height=(heights[0]=='full')?off_height:heights[0];
	obj._hidden_height=heights[1];

	obj._set_cookie=set_cookie;
	obj._has_fade=add_fade;

	obj._hidden=start_hidden;

	var text=(obj._hidden)?text[0]:text[1];
	var fade_display=(obj._hidden)?'block':'none';
	
	var show_hide=(add_link)?'<a id="'+obj.id+'-show-hide-link" href="javascript:roll(\''+obj.id+'\')" class="show-hide" onclick="this.blur()">'+text+'</a>':'';

	var	fade=(add_fade)?'<div style="display:'+fade_display+'"><img id="'+obj.id+'-fade" src="http://www.tropicalconnections.co.uk/grfx/fade.png" class="show-hide-fade" alt="graphic element" title="" /></div>':'';
	
	contents+=show_hide+fade;

	obj.innerHTML=contents;

	if(obj._hidden)
		DomUtils.addClassName(obj.id+'-show-hide-link','on');
	else
		DomUtils.addClassName(obj.id+'-show-hide-link','off');

	if(obj._set_cookie)
		{
		var state=readCookie('roll-'+obj.id);

		if(state=='hidden')
			roll(obj);
		}
}

function roll(obj){

	obj=$.id(obj);

	if(typeof obj._hidden==null)
		obj._hidden=false;

	if(obj._hidden)
		{
		changeDim(obj.id,3,obj._natural_height,8,'px','visible');

		if(obj._add_link)
			{
			$.id(obj.id+'-show-hide-link').innerHTML=obj._text[1];

			DomUtils.removeClassName(obj.id+'-show-hide-link','on');
			DomUtils.addClassName(obj.id+'-show-hide-link','off');
			}

		if(obj._set_cookie)
			eraseCookie('roll-'+obj.id);

		if(obj._has_fade)
			$.id(obj.id+'-fade').style.display='none';

		obj._hidden=false;
		}
	else
		{
		obj._natural_height=obj.offsetHeight;

		obj.style.overflow='hidden';
		changeDim(obj.id,3,obj._hidden_height,8,'px','hidden');

		if(obj._add_link)
			{
			$.id(obj.id+'-show-hide-link').innerHTML=obj._text[0];

			DomUtils.removeClassName(obj.id+'-show-hide-link','off');
			DomUtils.addClassName(obj.id+'-show-hide-link','on');
			}

		if(obj._set_cookie)
			createCookie('roll-'+obj.id,'hidden',60);

		if(obj._has_fade)
			$.id(obj.id+'-fade').style.display='block';
		
		obj._hidden=true;
		}
}

function add_side_formatting(){
	
	var boxes=DomUtils.getChildren('side-boxes');

	for(var i=0;i<boxes.length;i++)
		{
		var box=boxes[i];
		
		if(box.id.indexOf('images')==-1)
			{
			DomUtils.addClassName(box,'box');

			var content=box.innerHTML;
			content='<div id="side-box-'+i+'-inner" class="inner">'+content+'</div>';
			
			content+='<div id="side-box-'+i+'-background" class="background"></div>';
			content+='<img src="http://www.tropicalconnections.co.uk/grfx/side-box-tl.png" class="corner" style="position: absolute; top:0px; left:0px" alt="graphic element" title="" />';
			content+='<img src="http://www.tropicalconnections.co.uk/grfx/side-box-br.png" class="corner" style="position: absolute; bottom:0px; right:0px" alt="graphic element" title="" />';
		
			box.innerHTML=content;

			if(BrowserDetect.browser=='Explorer' && BrowserDetect.version==6)
				{
				$.id('side-box-'+i+'-background').style.height=$.id('side-box-'+i+'-inner').offsetHeight+4;
				
				if(box.tagName=='FORM')
					{
					var w=$.id('side-box-'+i+'-background').offsetWidth;
					$.id('side-box-'+i+'-background').style.width=(w+4)+'px';
					var h=31;
					}
				else
					var h=35;
				}
			else
				var h=36;
		
			add_roll(box,['',''],['full',h],false,true,true,false);
			}
		}
}

function deal_with_search_form(){
/*
	var results=$.className('results');
	var no_results=$.className('no_results');

	if(results && !no_results)
		{
		var c=DomUtils.getChildren(results);
	
		if(c.length)
			{
			var form=$.id('Property-Search-Form');
	
			if(!form)
				form=$.id('Advanced-Property-Search-Form');
	
			form.style.height='15px';
			form.style.overflow='hidden';
	
			add_roll(form,['Show search form.','Hide search form.'],['full',15],false,true,false,true);
			}
		}*/
}

function deal_with_island_form(){

	var b=document.getElementsByTagName('BODY');
	b=b[0];

	var c=DomUtils.getAnyAttribute(b,'class');

	if(c.indexOf('island-description')>-1)
		{
		var form=$.id('form-island-enquiry-form');

		if(form)
			{

			var target=$.className('island-description');
	
			for(var i=0;i<target.length;i++)
				if(target[i].tagName=='DIV')
					{
					target=target[i];
					break;
					}
	
			ElementHandler.remove(form);
			target.parentNode.insertBefore(form,target);

			c=DomUtils.getAnyAttribute(form,'class');
	
			if(c.indexOf('intro')>-1)
				{
				form.style.height='15px';
				form.style.overflow='hidden';
		
				add_roll(form,['Click to enquire about property and services for this island','Hide form'],['full',15],false,true,false,true);
				}
			else
				{
				add_roll(form,['Click to enquire about property and services for this island','Hide form'],['full',15],false,true,false,false);
				}
			}
		}
}

function deal_with_property_form(form,property){

	var children=DomUtils.getChildren(property);

	for(var i=0;i<children.length;i++)
		{
		var c=DomUtils.getAnyAttribute(children[i],'class');
		if(c=='description')
			break;
		}

//	ElementHandler.remove(form);
//	property.insertBefore(form,children[1]);

	var c=DomUtils.getAnyAttribute(form,'class');

	if(c.indexOf('intro')>-1)
		{
		form.style.height='15px';
		form.style.overflow='hidden';

		add_roll(form,['Click to enquire about this property','Hide form'],['full',15],false,true,false,true);
		}
	else
		{
		add_roll(form,['Click to enquire about this property','Hide form'],['full',15],false,true,false,false);
		}
}

function deal_with_property(){

	var bod=document.getElementsByTagName('BODY');
	bod=bod[0];

	var property_found=false;

	if(bod.id.indexOf('page-property')==0)
		var properties=$.className('property');
	else
		var properties=false;

	if(properties!=false)
		{
		for(var i=0;i<properties.length;i++)
			{
			var property=properties[i];
			if(property.parentNode.id=='main-content')
				{
				property_found=true;
				break;
				}
			}
		}

	if(property_found)
		{
		/*
		var children=DomUtils.getChildren(property);

		for(var j=0;j<children.length;j++)
			{
			var child=children[j];
			var c=DomUtils.getAnyAttribute(child,'class');

			if(c=='description')
				{
				var h=child.offsetHeight;
				if(h>200)
					{
					child.style.height='200px';
					child.style.overflow='hidden';

					add_roll(child,['Read more','Hide description'],['full',200,15],true,true,false,true);
					}
				}
			}
		*/
		var items=$.id('main-content').getElementsByTagName('FORM');

		deal_with_property_form(items[0],property)
		}
}

function setup(){
	
	if(DomUtils.getViewXY().x<850)
		{
		$.id('main-content').style.marginLeft='4px';

		$.id('side-boxes').style.width='185px';
		$.id('side-boxes').style.marginTop='120px';
		$.id('side-boxes').style.marginLeft='5px';
		}

	add_sub_menus();
	add_side_formatting();
	deal_with_property();
	deal_with_island_form();
//	add_image_overlays();
	deal_with_pngs();
}

var dimensions=new Array('top','left','width','height','marginLeft','marginTop');

function animLS(lyr,dim,target,step,mode,overflow){

	obj=document.getElementById(lyr);

	real=obj.lsReal[dim];
	delta=Math.sqrt(Math.abs(target-real))*0.0125;

	step=obj.sig[dim]*10;

	new_dim=obj.lsReal[dim];
	obj.lsReal[dim]=real+(obj.step[dim]*step*delta);

	var d=dimensions[dim];

	if((new_dim>=target && obj.sig[dim]>0) || (new_dim<=target && obj.sig[dim]<0))
		{
		target=target+''+mode;
		obj.style[d]=target;
		clearInterval(obj.lsInterval[dim]);
		obj.lsInterval[dim]=0;

		if(overflow!='off')
			obj.style.overflow=overflow;
		return;
		}
	else
		{
		new_dim=new_dim+''+mode;
		obj.style[d]=new_dim;
		}
}

function changeDim(lyr,dim,target,step,mode,overflow){

	obj=$.id(lyr);

	if(obj.lsReal==null)
		{
		w_w=document.body.clientWidth;
		w_h=document.body.clientHeight;

		obj.step=new Array();
		obj.sig=new Array();
		obj.lsReal=new Array();
		obj.lsInterval=new Array();
		}

	if(obj.lsInterval[dim]!=0)
		{
		clearInterval(obj.lsInterval[dim]);
		obj.lsInterval[dim]=0;
		}

	switch(dim)
		{
		case 0:
			obj.lsReal[0]=(!parseInt(obj.offsetTop))?0:parseInt(obj.offsetTop);
			break;
		case 1:
			obj.lsReal[1]=(mode=='%')?((parseInt(obj.offsetLeft)/w_w)*100):parseInt(obj.offsetLeft);
			break;
		case 2:
			obj.lsReal[2]=(mode=='%')?((parseInt(obj.offsetWidth)/w_w)*100):parseInt(obj.offsetWidth);
			break;
		case 3:
			obj.lsReal[3]=(mode=='%')?((parseInt(obj.offsetHeight)/w_h)*100):parseInt(obj.offsetHeight);
			break;
		case 4:
			obj.lsReal[4]=parseInt(obj.style.marginLeft);
			break;
		case 5:
			obj.lsReal[5]=(!parseInt(obj.style.marginTop))?0:parseInt(obj.style.marginTop);
			break;
		}

	obj.step[dim]=step;
	obj.sig[dim]=((target-obj.lsReal[dim])>0)?1:-1;

	obj.lsInterval[dim]=setInterval("animLS('"+lyr+"',"+dim+","+target+","+step+",'"+mode+"','"+overflow+"')",30);
}

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,"null",-1);
}

function fade(obj,d,target,f){

	lyr=document.getElementById(obj);
	lyr.fade+=(d*20);

	if((d>0 && lyr.fade>=target) || (d<0 && lyr.fade<=target))
		{
		if(target>99)
			lyr.style.filter='';

		//lyr.fade=target*0.9999999;
		clearInterval(lyr.fade_on);
		lyr.fade_on=0;
		if(f==1 && d>0)
			{
			lyr.style.display='block';
			}
		}

	if(f>0)
		{
		if(lyr.fade<=0)
			lyr.style.display='none';
		else
			lyr.style.display='block';
		}

	lyr.style.opacity=lyr.fade/100;
	lyr.style.filter="progid:DXImageTransform.Microsoft.Alpha(Opacity="+lyr.fade+")";
}

function fader(lyr,d,target,init,f){
	obj=$.id(lyr);
	
	if(obj.fade_on==null)
		{			
		obj.fade_on=0;
		obj.fade=init;
		}

	if(obj.fade_on!=0)
		{
		clearInterval(obj.fade_on);
		obj.fade_on=0;
		}

	obj.fade_on=setInterval("fade('"+lyr+"',"+(d/2)+","+target+","+f+")",50);
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

BrowserDetect.init();

function nospam(a,b,c){
	if(!c)
		c='web site enquiry';

	window.location='mailto:'+b+'@'+a+'?subject='+c;
}

function form_submit(frm){
	$.id(frm).submit();
}

