SV_Browser = Class.create();
SV_Browser.prototype = {
	
	initialize:function(){
	},
	
	getAgent:function(){
		return navigator.userAgent.toLowerCase();
	},	
	
	isMac:function(userAgent){
		var agent=userAgent||this.getAgent();
		return!!agent.match(/mac/i);
	},
	
	isWin:function(userAgent){
		var agent=userAgent||this.getAgent();
		return!!agent.match(/win/i);
	},
	
	isWin2k:function(userAgent){
		var agent=userAgent||this.getAgent();
		return this.isWin(agent)&&(agent.match(/nt\s*5/i));
	},
	
	isWinVista:function(userAgent){
		var agent=userAgent||this.getAgent();
		return this.isWin(agent)&&(agent.match(/nt\s*6/i));
	},	
	
	isWebKit:function(userAgent){
		var agent=userAgent||this.getAgent();
		return!!agent.match(/AppleWebKit/i);
	},
	
	isOpera:function(userAgent){
		var agent=userAgent||this.getAgent();
		return!!agent.match(/opera/i);
	},
	
	isIE:function(userAgent){
		var agent=userAgent||this.getAgent();
		return!!agent.match(/msie/i);
	},
	
	isIEStrict:function(userAgent){
		var agent=userAgent||this.getAgent();
		return agent.match(/msie/i)&&!this.isOpera(agent);
	},
	
	isFirefox:function(userAgent){
		var agent=userAgent||this.getAgent();
		return!!agent.match(/firefox/i);
	},
	
	isiPhone:function(userAgent){
		var agent=userAgent||this.getAgent();
		return!!agent.match(/iPhone/i);
	}
	
};
Features = Class.create();
Features.prototype = {
	front:null,
	back:null,
	features_header:null,
	features_data:null,
	data_container:null,
	points:[],
	browser:null,
	initialize:function(objects){
		this.front = $('front');
		this.back  = $('back');
		this.features_header = $('features_header');
		this.features_data   = $('features_data');
		this.frontmap		 = $('frontmap');
		this.backmap		 = $('backmap');
		this.data_container  = $('shown_data');
		this.hidden_container= $('hidden_data');
		this.SetPoints(objects);
		this.createPointsForArray(this.points);

	},
	
	SetPoints:function(objects){
		this.points = $A(objects);
	},
	
	createPointsForArray:function(points){
		var first = true;
		points.each(function(item){
		if(first == true){	
			if(item.side == 'front')
			{
				this.plotPoint(item, 'front');
			}else if(item.side == 'back'){
				this.plotPoint(item, 'back');
			}else{
				//Other options.... 
				this.createPointsForArray(item.data);
			}			
			//first = false;
		}
		}.bind(this));
	},
	plotPoint:function(rawPoint, where){
		if(rawPoint.x == 0 && rawPoint.y == 0){ return; } //Dont have coords yet. 
		var point = new Point(rawPoint);
		if(where == 'front'){
			point.drawPoint(this.frontmap);
			return;
		}
		point.drawPoint(this.backmap);
	},
	changeData:function(point){
		var timeout = setTimeout(function(){window.changing = false;}, 200);
		this.features_header.innerHTML  = point.dataObj.title;
		this.features_data.innerHTML 	= this.createHtmlForDataObj(point.dataObj);			
		new Effect.Fade($('directions'), {duration:.5});
		var randomnumber=Math.floor(Math.random()*2);
		new Effect.SlideDown(this.data_container, {duration:.1});			
		new Effect.Appear(this.data_container, {duration:.3});
	},
	
	createHtmlForDataObj:function(dataObj){
		var html = dataObj.data;
		if(dataObj.features){
			html += '<ul style="display:block;margin-top:10px;"><B>Features</B>';
			dataObj.features.each(function(item){
				html += '<li style="margin-left:20px;margin-top:5px;">'+item+'</li>';								
			});
			html += '</ul>';
		}
		return html;
	},
	
	getBrowser:function(){
		return this.browser;
	}
}

Point = Class.create();
Point.prototype = {
	x:0,
	y:0,
	img:null,
	img_src:'images/point.gif',
	area:null,
	size:10,
	dataObj:null,
	title:'',
	data:'',
	browser:null,
	initialize:function(dataObj){
		this.title   = dataObj.title;
		this.data	 = dataObj.data;
		this.dataObj = dataObj;
		this.browser = new SV_Browser();		
		this.initPoints(dataObj.x, dataObj.y);
	},
	
	initPoints:function(x, y){
		if(this.browser.isIE()){
			this.x = x+5;
			this.y = y+5;
			//alert("setting x:"+x+" and y:"+y);			
		}else{ 
			this.x = x+5;
			this.y = y+5;						
		}
		this.area = this.createArea();

	},
	createArea:function(){
		var area = document.createElement('area');
		if(this.browser.isIE()){
			area.shape  = 'circle';
			area.coords = this.x+','+this.y+','+this.size;
			//alert(this.x+','+this.y+','+this.size+','+this.size+"\nCoords are:"+area.coords);			
		}else{
			area.shape  = 'circle';
			area.coords = this.x+','+this.y+','+this.size;			
		}
		area.href   ='#';
		//area.style.backgroundColor = "#eeeeee";
		Element.addClassName(area, 'point');
		var mOver = function(point){
			window.features.changeData(point);	
		}
		area.onclick 	 = function(){ return false; }
		Event.observe(area, 'mouseover', function(){mOver(this)}.bind(this));
		area.onmouseout  = function(){
			$('shown_data').hide();
		}
		return area;
	},

	drawPoint:function(map){
		map.appendChild(this.area);
	},

	GetHtmlData:function(){
		
	}
	
}


