/*
 * Franklin David Lancaster, 2009
 *
 */

//var aoTest = new Array({'title':'Library', 'link': '#', 'children': [{'title':'Sub Menu 1', 'link': '#', 'children': [{'title':'Sub Sub 1', 'link': '#', 'children': [{'title':'Sub Sub 1', 'link': '#'}]}, {'title':'Sub Sub 2', 'link': '#'}]}, {'title':'Sub Menu 1', 'link': '#'}]});

// Here for now
//var projectMain = new Element('div', {'styles': {'width':1089, 'margin':'0 auto', 'height':'auto !important', 'height':'100%', 'min-height':'100%', 'position':'relative'}});
	
	
/////////////////////////////////////

var header2 = new Class({
	Implements: [Options, Events],
	options:{
		width: '100%',
		height: 101,
		itemWidth:140, 
		itemHeight:20,
		textSize:12,
		background: '#CCC',	
		logo: '/images/core/luminar_logo_wl.png',
		defaultColor: '#333',
		highlightColor: '#0079c2'
	},
	
	initialize: function(parent, options){
	
		var self=this;
		
		this.setOptions(options);
		(!parent) ? this.parent = $(document.body) : this.parent = parent;
	
		this.topBar = new Element('div', {'id':'top_bar', 'styles':
			{'width':this.options.width, 'height':this.options.height, 'margin':'10px 0 0 0', 'background':'#fff no-repeat 330px bottom', 'border-bottom':'1px solid #CCC'}});
		this.topBarContainer = new Element('div', {'id':'top_bar_nav_container', 'styles':{'width':'100%', 'margin':'0 auto', 'height':'100%'}});
		this.mainLogo = new Element('div', {'id':'main_logo', 'styles':{'width':220, 'height':'100%', 'float':'left', 'text-align':'right', 'padding':'0'}});
		this.logoBack = new Element('div', {'styles':{ 'background':'none', 'margin':'5px 5px'}});
		this.logo = new Asset.image(this.options.logo, {onload: function(){
			self.logoBack.setStyles({'width': self.logo.getProperty('width').toInt(), 'height':self.logo.getProperty('height').toInt()}); 
			self.logoBack.grab(self.logo);
		}});
		//263
		this.navContainer = new Element('div', {'id':'nav_container', 'styles':
			{'width':530, 'height':20, 'float':'right', 'background':'#fff', 'position':'relative', 'left':-47, 'top':70, 'font-size': 10, 'overflow':'hidden'}});
		this.menuList = new Element('ul', {'styles':{'padding':'0 10px', 'margin':0, 'text-align':'right'}});
		
		this.langNavContiner = new Element('div', {'id':'lang_container', 'styles':
			{'width':250, 'height':20, 'float':'right', 'background':'#fff', 'position':'relative', 'left':483, 'top':10, 'font-size': 9, 'overflow':'hidden'}});
		this.langList = new Element('ul', {'styles':{'padding':'0 10px', 'margin':0, 'text-align':'right'}});
		
		this.mainLogo.grab(this.logoBack);
		this.navContainer.grab(this.menuList);
		this.langNavContiner.grab(this.langList);
		this.topBarContainer.adopt([this.mainLogo, this.navContainer, this.langNavContiner]);
		this.topBar.grab(this.topBarContainer);
		this.parent.grab(this.topBar);
	},
	
	loadLanguages: function(oaLangs){
		
		var self = this;
		
		this.langItem = []; //container element
		this.langLink = []; //option elementFromPoint
		this.languages = oaLangs;
	
		oaLangs.each(function(item,i){
		
			this.langItem[i] = new Element('li', {'styles':
				{'display':'inline', 'border-left':'1px solid ' + this.options.defaultColor, 'border-right':'1px solid ' + this.options.defaultColor}});
				
			this.langLink[i] = new Element('a', {'id':item.id, 'href':'#', 'class':'main_nav', 'text':item.language});	
			this.langLink[i].addEvent('click', function(el){ self.changeLanguage(el.target.getProperty('id').toInt()); return false; }); //fire the onchange event
		
			this.langItem[i].grab(this.langLink[i]);
			this.langList.grab(this.langItem[i]);
		
		}, this);
	
	
	},
	
	setLanguage: function(langID){
	
		this.languages.each(function(item,i){ if(item.id == langID) langIndex = i; });
	
		if(this.currentLanguage) this.currentLanguage.setStyles({'color': this.options.defaultColor});
		this.currentLanguage = this.langLink[langIndex];
		this.langLink[langIndex].setStyles({'color': this.options.highlightColor});
	
	},
	
	changeMenu: function(sections, languageID){
	
		var self = this;
		this.clearMenu();
		this.menuItem = []; //container element
		this.menuLink = []; //option elementFromPoint
		
		sections.each(function(item, index){
	
			this.menuItem[index] = new Element('li', {'styles':
				{'display':'inline', 'border-left':'1px solid ' + this.options.defaultColor, 'border-right':'1px solid ' + this.options.defaultColor, 'text-transform':'uppercase'}});	
			this.menuLink[index] = new Element('a', {'href':'#', 'class':'main_nav', 'text':item});	
			this.menuLink[index].addEvent('click', function(){ self.changeSection(index); return false; }); //fire the onchange event
		
			this.menuItem[index].grab(this.menuLink[index]);
			this.menuList.grab(this.menuItem[index]);
		
		}, this);
		
		this.setLanguage(languageID);
	
	},

	highlight: function(sectionID){
		
		if(this.currentSection) this.currentSection.setStyles({'color': this.options.defaultColor});
		this.currentSection = this.menuLink[sectionID];
		this.menuLink[sectionID].setStyles({'color': this.options.highlightColor});
	
	},
	
	changeLanguage: function(id){
		this.fireEvent('changeLanguage', id);
	},
	
	changeSection: function(i){
        this.fireEvent('changeSection', i);
	},
	
	clearMenu: function(){
		this.menuList.empty();
	}
	
});
/*
function header(options){

		var defaults = {
		container: $(document.body),
		width: '100%',
		height: 101,
		itemWidth:140, 
		itemHeight:20,
		textSize:12,
		background: '#CCC',	
		logo: '/images/core/luminar_logo_wl.png',
		defaultColor: '#333',
		highlightColor: '#0079c2'
		};
	if(!options) var options = defaults;
	if(!options.width) options.width=defaults.width;
	if(!options.height) options.height=defaults.height;
	if(!options.itemWidth) options.itemWidth=defaults.itemWidth;
	if(!options.itemHeight) options.itemHeight=defaults.itemHeight;
	if(!options.container) options.container=defaults.container;
	if(!options.textSize) options.textSize=defaults.textSize;
	if(!options.background) options.background=defaults.background;
	if(!options.logo) options.logo=defaults.logo;
	if(!options.defaultColor) options.defaultColor=defaults.defaultColor;
	if(!options.highlightColor) options.highlightColor=defaults.highlightColor;


	var topBar = new Element('div', {'id':'top_bar', 'styles':
		{'width':options.width, 'height':options.height, 'margin':'10px 0 0 0', 'background':'#fff no-repeat 330px bottom', 'border-bottom':'1px solid #CCC'}});
	var topBarContainer = new Element('div', {'id':'top_bar_nav_container', 'styles':{'width':'100%', 'margin':'0 auto', 'height':'100%'}});
	var mainLogo = new Element('div', {'id':'main_logo', 'styles':{'width':220, 'height':'100%', 'float':'left', 'text-align':'right', 'padding':'0'}});
	var logo = new Asset.image(options.logo, {onload: function(){
		logoBack.setStyles({'width': logo.getProperty('width').toInt(), 'height':logo.getProperty('height').toInt()}); 
		
		logoBack.grab(logo);
	}});


	var logoBack = new Element('div', {'styles':{ 'background':'none', 'margin':'5px 5px'}});
	var navContainer = new Element('div', {'id':'nav_container', 'styles':
		{'width':500, 'height':20, 'float':'left', 'background':'#fff', 'position':'relative', 'left':263, 'top':70, 'font-size': 10, 'overflow':'hidden'}});
	var menuList = new Element('ul', {'styles':{'padding':'0 10px', 'margin':0, 'text-align':'right'}});

	var menuItem = []; //container element
	var menuLink = []; //option elementFromPoint
	
	var me = this;
	
	this.currentSection;
	
	this.highlight = function(sectionID){
	
		if(me.currentSection) me.currentSection.setStyles({'color': options.defaultColor});
		me.currentSection = menuLink[sectionID];
		menuLink[sectionID].setStyles({'color': options.highlightColor});
	};
	
	this.init = function(parent) {
		
		
	sections.each(function(item, index){
	
		menuItem[index] = new Element('li', {'styles':{'display':'inline', 'border-left':'1px solid ' + options.defaultColor, 'border-right':'1px solid ' + options.defaultColor, 'text-transform':'uppercase'}});
		menuLink[index] = new Element('a', {'href':'#' + item.root, 'class':'main_nav', 'text':item.name});	
		menuLink[index].addEvent('click', function(){ PageManager.changeSection(index); });
		
		menuItem[index].grab(menuLink[index]);
		menuList.grab(menuItem[index]);
		
	});
	
	mainLogo.grab(logoBack);
	navContainer.grab(menuList);
	topBarContainer.adopt([mainLogo, navContainer]);
	topBar.grab(topBarContainer);
	options.parent.grab(topBar);
	
	}


}
	
*/

var sideBar2 = new Class({
	Implements: [Options, Events],
	options:{
		width: 220,
		height: '100%',
		itemWidth:130, 
		itemHeight:18,
		textSize:12,
		background: '#FFF',	
		displayLevel: 1,
		accordion: false, 
		defaultColor: '#333',
		highlightColor: '#0079c2',
		indent:10
	},
	
	initialize: function(options){
	
		var self=this;
		
		this.setOptions(options);
		this.element = new Element('div', {'styles' : {'width':this.options.width, 'height':this.options.height, 'float':'left', 'background':this.options.background}});
	
		//this.currentItem;
		this.subLists = [];
		this.menuItems = [];
	
		this.leftColumnMask = new Element('div', {'styles' : {'height':this.options.height, 'float':'left', 'padding-left': 0}});
	
		this.element.grab(this.leftColumnMask);
		
		this.build();
	
	},
	
	build: function(){
	
		this.adam = new Element('ul', {'id': 'sideNav', 'class':'tree', 'styles' : { 
			'font-family':'Myriad Web Pro Condensed, sans-serif', 
			'font-size':9, 
			'color':this.options.defaultColor, 
			'padding-left': this.options.indent, 
			'list-style':'none', 
			'margin': '20px 0'
		}});
		
		this.subLists.push(this.adam);
		this.element.grab(this.adam);
	
	},

	toElement: function(){
    	return this.element;
    },
    
    loadMenu: function(menuData){
    	
    	var me = this;
    	this.menuData = menuData;
    	me.removeMenu();		   			
   		me.addChildren(menuData, 0);
    	me.changeItem(menuData[0].id);
    	
    },
    
    getCurrentObject: function(){
    	
    	var children = [];
    	this.currentItem.getParent('li').retrieve('children').each(function(el){ children.push(el.id); });
    	
    	return {
    		'id': this.currentItem.getParent('li').getProperty('id').toInt(),
    		'children': children
    		}
    
    },
    
    changeItem: function(itemId, selectedItem){
    
    	
    	if(!selectedItem) var selectedItem = this.adam.getElement('#'+ itemId).getElement('a');
    	
		if($type(selectedItem) == 'element'){
			if($type(this.currentItem) != false) this.currentItem.setStyles({'color': this.options.defaultColor});
			this.currentItem = selectedItem;
			this.currentItem.setStyles({'color': this.options.highlightColor});
			this.fireEvent('change', [itemId, selectedItem.retrieve('view')]);			
		}
		else alert('This item could not be found, please try again later. If you think this is a fault then please email webmaster@luminar-finance.com');
    },
    
    addChildren: function(items, level, parentList){
    
    	if(!parentList) var parentList = this.adam;
		
		var me= this;
		var link = [];
		var sideNavStyle = {'background':'#fff', 'width':this.options.itemWidth, 'margin':'4px 0 13px 0',
							'text-transform':'uppercase', 'font': '10px "Myriad Pro Regular", sans-serif', 'padding': '0 2px', 'line-height':'90%'};
		
		items.each(function(item, index){
		
			var subList = new Element('ul', {'styles' : { 'font-family':'Myriad Web Pro Condensed, sans-serif', 'font-size':9, 'color':this.options.defaultColor, 'padding-left': this.options.indent, 'list-style':'none', 'margin': '20px 0'} });
		
			var li = new Element('li', {'id':item.id, 'styles': sideNavStyle});
			link[index] = new Element('a', {'href': '#' + item.itemName, 'class': 'side_nav', 'html': item.itemName, 'styles': {'height':'100%'}});
			link[index].store('view', item.view.toInt());
			link[index].addEvent('click', function(el){ me.changeItem(item.id, el.target); });
		
			
			me.subLists.push(subList);
			
			li.adopt([link[index], subList]);
			parentList.adopt([li]);
			
			li.store('children', item.children);
			
			if($type(item.children) == 'array') { if(level < this.options.displayLevel) me.addChildren(item.children, level+1, subList); }
		
			//if($type(me.accordion[level]) === false) this.accordion[level] = new Fx.Accordion($splat(con[index]), $splat(subList), {display: null, alwaysHide: false});
			//else this.accordion[level].addSection(con[index], subList);
		},this);
    
    },
    
    removeMenu: function(){
    	this.adam.empty();
    }
    
});

/*

function sideBar(options){

	var defaults = {
		container: $(document.body),
		width: 220,
		height: '100%',
		itemWidth:130, 
		itemHeight:18,
		textSize:12,
		background: '#FFF',	
		displayLevel: 1,
		defaultColor: '#333',
		highlightColor: '#0079c2',
		indent:10
		};
	if(!options) var options = defaults;
	if(!options.width) options.width=defaults.width;
	if(!options.height) options.height=defaults.height;
	if(!options.itemWidth) options.itemWidth=defaults.itemWidth;
	if(!options.itemHeight) options.itemHeight=defaults.itemHeight;
	if(!options.container) options.container=defaults.container;
	if(!options.textSize) options.textSize=defaults.textSize;
	if(!options.background) options.background=defaults.background;
	if(!options.displayLevel) options.displayLevel=defaults.displayLevel;
	if(!options.defaultColor) options.defaultColor=defaults.defaultColor;
	if(!options.highlightColor) options.highlightColor=defaults.highlightColor;
	if(!options.indent) options.indent=defaults.indent;

	var styles = {}
	
	var me = this;
	
	this.currentSection = options.initSection;
	this.currentItem;
	this.menuItems = [];
	
	this.onload = function(){};
	
	var sideNavSubList = [];
	
	this.leftColumn = new Element('div', {'styles' : {'width':options.width, 'height':options.height, 'float':'left', 'background':options.background}});
	this.leftColumnMask = new Element('div', {'styles' : {'height':options.height, 'float':'left', 'padding-left': 0}});
	
	this.init = function(){
	
		me.leftColumn.grab(me.leftColumnMask);
		options.container.grab(me.leftColumn);
	
	};
	
	this.loadMenu = function(projectId){
		
		var jsonRequest = new Request.JSON({url: me.currentSection.res, noCache:true, method:'get', onSuccess: function(menuObject){
			me.removeMenu();		   			
   			me.addChildren(menuObject, 0);
   			me.onload();
   		}}).send({'id': projectId});
   		
	};
	
	
	this.changeItem = function(itemId){
		
		var selectedItem;
		
		me.menuItems.each(function(item, i){
			if(item.data.id == itemId) selectedItem = me.menuItems[i];
		});
	
		if($type(selectedItem) == 'object'){
			if($type(me.currentItem) != false) me.currentItem.el.setStyles({'color': options.defaultColor});
			me.currentItem = selectedItem;
			me.currentItem.el.setStyles({'color': options.highlightColor});
		
			options.manager.displayItem(me.currentItem.data.id, me.currentItem.data.view.toInt());
		}
		else alert('This item could not be found, please try again later. If you think this is a fault then please email webmaster@luminar-finance.com');
					
	};

	
	this.addChildren = function(items, level, parent){
	
		if(!parent) var parent = me.leftColumnMask;
	
		var sideNavSubList = new Element('ul', {'styles' : { 'font-family':'Myriad Web Pro Condensed, sans-serif', 'font-size':9, 'color':options.defaultColor, 'padding-left': options.indent, 'list-style':'none', 'margin': '20px 0'} });
		
		
		var con = []; //container element
		var opt = []; //option element
		var sideNavStyle = {'background':'#fff', 'width':options.itemWidth, 'margin':'4px 0 13px 0',
							'text-transform':'uppercase', 'font': '10px "Myriad Pro Regular", sans-serif', 'padding': '0 2px', 'line-height':'90%'};
		
		items.each(function(item, index){
		
			con[index] = new Element('li', {'id':item.id, 'styles': sideNavStyle});
			opt[index] = new Element('a', {'href': '#' + me.currentSection.root, 'class': 'side_nav', 'html': item.itemName, 'styles': {'height':'100%'}});
			opt[index].addEvent('click', function(){ me.changeItem(item.id); });
		
			con[index].grab(opt[index]);
			sideNavSubList.grab(con[index]);
			
			me.menuItems.push({data:item, el:opt[index]});
			
			if($type(item.children) == 'array') { if(level < options.displayLevel){ me.addChildren(item.children, level+1, sideNavSubList); }}
		
		});
			
		parent.grab(sideNavSubList);
		
	};
		
	this.removeMenu = function(){
	
		me.leftColumnMask.empty();
		me.menuItems.empty();
		
	};
	
}
*/
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//View states used in the Library section
/*

January 2010 - update this to be a proper view class that takes data given to it by the controller (pageManager)


*/

var menuSubItems2 = new Class({
	Implements: [Options, Events],
	options:{
		width: 400,
		height: 120,
		thumbnail: false,
		maxItemSize: {width:170, height:50},
		urlLimit: 30,
		externalLinks: false,
		requestURL: "/library/library.php"
	},
	
	initialize: function(parent, options){
	
		var self=this;
		this.setOptions(options);
	
		this.column = new Element('div', {'styles' : {'width': 600, 'float':'left'}} );
		this.columnText = new Element('div', {'styles' : {'padding': 20, 'margin': 0}} );
	
		this.header = new Element('div', {'styles' : {'border-bottom': '1px solid #CCC', 'margin': 0, 'background':'#fff'}});
	
		this.columnText.grab(this.header);
		this.column.grab(this.columnText);
		parent.grab(this.column);
	
		this.elements = [];	

		
	},
	
	createHeader: function(data){
	
		var self = this;

		if($type(data) == 'array') data = data[0];
		
		var container = new Element('div', {'styles':{'width':this.options.width}});
		var linkTitle = new Element('a', {'href':data.link, 'text':data.itemName, 'target': '_blank', 'styles' : 
			{'font': '14px "Myriad Pro Regular", sans-serif', 'color':'#fff', 'margin-top':0, 'width':'100%', 'display':'block', 'background':'#ccc'}});
		var link = new Element('a', {'href':data.link, 'text':trimString(data.link, this.options.urlLimit), 'target': '_blank', 'styles' : 
			{'font': '9px/1.5 "Myriad Pro Regular", sans-serif', 'color':'#cccccc',  'width':'100%', 'float':'left' }});
		var thumbDiv = new Element('div', {'styles':{'width':'100%', 'border':'none', 'margin-bottom':10, 'text-align':'right'}});
		var thumbLink = new Element('a', {'href':data.link, 'target': '_blank'});
		
		container.adopt([linkTitle, link]);
		this.header.grab(container);
		
		if(this.options.headerText) { var taster = new Element('p', {'text':data.text, 'styles' :{}}); container.grab(taster); }
		
		if($type(data.thumbnail) != false) {
		
				var thumbnail = new Asset.image(data.thumbnail, {onload: function(){
			
				var width = thumbnail.getStyle('width').toInt();
				var height = thumbnail.getStyle('height').toInt();
				if(width > self.options.maxItemSize.width){ 
					height=((self.options.maxItemSize.width/width)*thumbnail.getStyle('height').toInt()).toInt();
					width=self.options.maxItemSize.width; 
				}
				if(height > self.options.maxItemSize.height){ 
					width=((self.options.maxItemSize.height/height)*thumbnail.getStyle('width').toInt()).toInt();
					height=self.options.maxItemSize.height;
				}
			
				thumbnail.setStyles({'width': width, 'height':height, 'border':'none'}); 
		}});
		
			thumbLink.grab(thumbnail);
			thumbDiv.grab(thumbLink);
			container.grab(thumbDiv);
		}		
		
	},
	
	subLink: function(data){
	
		var self = this;
	
		var subLinkStyles = {
			itemContainer: {'display':'block', 'float':'left', 'margin-top':10, 'width':this.options.width,'height': this.options.height, 
							'overflow':'hidden', 'border': '1px solid #CCC', 'padding':0, 'background':'#fff'}
			
		};
	
		if($type(data) == 'array') data = data[0];
		
		var dummy = new Element('div');
		
		var itemContainer = new Element('a', {'href':'#', 'styles': 
			{'display':'block', 'float':'left', 'margin-top':10, 'width':this.options.width,'height':this.options.height, 'overflow':'hidden', 'border': '1px solid #CCC', 'padding':0, 'background':'#fff'}});		
		
		var itemPadding = new Element('div', {'styles': {'padding':5}});
		
		var header = new Element('div', {'styles': {'display':'block', 'width':'100%'}});
		var headerLeft = new Element('div', {'styles': {'width':'50%', 'margin':0, 'float':'left'}});
		var headerRight = new Element('div', {'styles': {'width':'50%', 'text-align':'right','float':'left'}});
		
		var stretcher = new Element('div', {'styles': {'clear':'both'}});
		
		var eLink = new Element('a', {'href':'#', 'text':trimString(data.link, this.options.urlLimit), 'styles': 
			{'font': '9px/1.5 "Myriad Pro Regular", sans-serif', 'color':'#cccccc', 'display':'block', 'margin-bottom':10, 'width':210}});		
		var eTitle = new Element('a', {'href':'#' , 'text':data.itemName, 'styles': {'width':210, 'display':'block'}});
		
		headerLeft.adopt([eTitle, eLink]);
		header.adopt([headerLeft, headerRight, stretcher]);
		itemPadding.grab(header);
		itemContainer.grab(itemPadding);
		this.columnText.grab(itemContainer);
		
		if(this.options.thumbnail){
			
			var thumbDiv = new Element('a', {'href':'#', 'styles':{}});
			
			var eThumb = new Asset.image(data.thumbnail, {onload: function(){
			
				var width = eThumb.getStyle('width').toInt();
				var height = eThumb.getStyle('height').toInt();
				if(width > self.options.maxItemSize.width){ 
					height=((self.options.maxItemSize.width/width)*eThumb.getStyle('height').toInt()).toInt();
					width=self.options.maxItemSize.width; 
				}
				if(height > self.options.maxItemSize.height){ 
					width=((self.options.maxItemSize.height/height)*eThumb.getStyle('width').toInt()).toInt();
					height=self.options.maxItemSize.height;
				}
			
				eThumb.setStyles({'width': width, 'height':height, 'border':'none'}); }});

			thumbDiv.grab(eThumb);
			headerRight.grab(thumbDiv); 
		}
		else {
			headerLeft.setStyle('width','100%');
			eTitle.setStyle('width','100%'); 
			headerRight.destroy();
		}
		
		if(this.options.description){
			var eDescription = new Element('p', {'html':data.text, 'styles': {'clear':'both', 'color':'#666'}});
			itemPadding.grab(eDescription);
		}
		
		if(!this.options.externalLinks){
			if($type(itemContainer) == 'element') itemContainer.addEvent('click', function(){ self.changeItem(data.id); return false;});
			if($type(eTitle) == 'element') eTitle.addEvent('click', function(){ self.changeItem(data.id); return false;});
			if($type(thumbDiv) == 'element') thumbDiv.addEvent('click', function(){ self.changeItem(data.id); return false;});
			if($type(eLink) == 'element') eLink.destroy();
		}
		if (this.options.externalLinks && data.link != ''){
			if($type(itemContainer) == 'element') itemContainer.setProperties({'href': data.link, 'target':'_blank'});
			if($type(eTitle) == 'element') eTitle.setProperties({'href': data.link, 'target':'_blank'});
			if($type(thumbDiv) == 'element') thumbDiv.setProperties({'href': data.link, 'target':'_blank'});
			if($type(eLink) == 'element') eLink.setProperties({'href': data.link, 'target':'_blank'});
		}
		
	
	},
	
	changeItem: function(itemId){
	
		this.fireEvent('change', [itemId]);
	
	},
	
	clear: function(){
	
		this.column.destroy();
	
	}

});

/*

function menuSubItems(item, options){

	if(!options) var options = {};
	if(!options.width) options.width=400;
	if(!options.height) options.height=120;
	if(!options.thumbnail) options.thumbnail = false;
	if(!options.maxItemSize) options.maxItemSize = {width:170, height:50};
	if(!options.urlLimit) options.urlLimit = 30;
	if(!options.externalLinks) options.externalLinks = false;

	var me = this;
	
	var column = new Element('div', {'styles' : {'width': 600, 'float':'left'}} );
	var columnText = new Element('div', {'styles' : {'padding': 20, 'margin': 0}} );
	
	var header = new Element('div', {'styles' : {'border-bottom': '1px solid #CCC', 'margin': 0, 'background':'#fff'}});
	
	columnText.grab(header);
	column.grab(columnText);
	options.parent.grab(column);

	this.onComplete = function(){};
	
	this.elements = [];
	
	var requestURL = "/library/library.php";
	
	this.init = function(){
	
	console.log(item);
		
		me.grabItems(item, me.createHeader);
		me.grabItems(item.children, me.subLink);
	
		
	};

	this.grabItems = function(items, callback){
	
		if($type(items) == 'array') {
	
			items.each(function(item){
				var jsonRequest = new Request.JSON({url: requestURL, onSuccess: function(result){ callback(result); }}).get({'id': item});
   			});
   		}
   		else var jsonRequest = new Request.JSON({url: requestURL, onSuccess: function(result){ callback(result); }}).get({'id': items.id});
   
	
	};
	
	this.createHeader = function(data){

		if($type(data) == 'array') data = data[0];
		
		var container = new Element('div', {'styles':{'width':options.width}});
		var linkTitle = new Element('a', {'href':data.link, 'text':data.itemName, 'target': '_blank', 'styles' : 
			{'font': '14px "Myriad Pro Regular", sans-serif', 'color':'#fff', 'margin-top':0, 'width':'100%', 'display':'block', 'background':'#ccc'}});
		var link = new Element('a', {'href':data.link, 'text':trimString(data.link, options.urlLimit), 'target': '_blank', 'styles' : 
			{'font': '9px/1.5 "Myriad Pro Regular", sans-serif', 'color':'#cccccc',  'width':'100%', 'float':'left' }});
		var thumbDiv = new Element('div', {'styles':{'width':'100%', 'border':'none', 'margin-bottom':10, 'text-align':'right'}});
		var thumbLink = new Element('a', {'href':data.link, 'target': '_blank'});
		
		container.adopt([linkTitle, link]);
		header.grab(container);
		
		if(options.headerText) { var taster = new Element('p', {'text':data.text, 'styles' :{}}); container.grab(taster); }
		
		if($type(data.thumbnail) != false) {
		
				var thumbnail = new Asset.image(data.thumbnail, {onload: function(){
			
				var width = thumbnail.getStyle('width').toInt();
				var height = thumbnail.getStyle('height').toInt();
				if(width > options.maxItemSize.width){ 
					height=((options.maxItemSize.width/width)*thumbnail.getStyle('height').toInt()).toInt();
					width=options.maxItemSize.width; 
				}
				if(height > options.maxItemSize.height){ 
					width=((options.maxItemSize.height/height)*thumbnail.getStyle('width').toInt()).toInt();
					height=options.maxItemSize.height;
				}
			
				thumbnail.setStyles({'width': width, 'height':height, 'border':'none'}); 
		}});
		
			thumbLink.grab(thumbnail);
			thumbDiv.grab(thumbLink);
			container.grab(thumbDiv);
		}		
		
	}
	
	this.subLink = function(data){
	
		var subLinkStyles = {
			itemContainer: {'display':'block', 'float':'left', 'margin-top':10, 'width':options.width,'height':options.height, 
							'overflow':'hidden', 'border': '1px solid #CCC', 'padding':0, 'background':'#fff'}
			
		};
	
		if($type(data) == 'array') data = data[0];
		
		var dummy = new Element('div');
		
		var itemContainer = new Element('a', {'href':'#/library/' + data.itemName, 'styles': 
			{'display':'block', 'float':'left', 'margin-top':10, 'width':options.width,'height':options.height, 'overflow':'hidden', 'border': '1px solid #CCC', 'padding':0, 'background':'#fff'}});		
		
		var itemPadding = new Element('div', {'styles': {'padding':5}});
		
		var header = new Element('div', {'styles': {'display':'block', 'width':'100%'}});
		var headerLeft = new Element('div', {'styles': {'width':'50%', 'margin':0, 'float':'left'}});
		var headerRight = new Element('div', {'styles': {'width':'50%', 'text-align':'right','float':'left'}});
		
		var stretcher = new Element('div', {'styles': {'clear':'both'}});
		
		var eLink = new Element('a', {'href':'#/library/' + data.itemName, 'text':trimString(data.link, options.urlLimit), 'styles': 
			{'font': '9px/1.5 "Myriad Pro Regular", sans-serif', 'color':'#cccccc', 'display':'block', 'margin-bottom':10, 'width':210}});		
		var eTitle = new Element('a', {'href':'#/library/' + data.itemName, 'text':data.itemName, 'styles': {'width':210, 'display':'block'}});
		
		headerLeft.adopt([eTitle, eLink]);
		header.adopt([headerLeft, headerRight, stretcher]);
		itemPadding.grab(header);
		itemContainer.grab(itemPadding);
		columnText.grab(itemContainer);
		
		if(options.thumbnail){
			
			var thumbDiv = new Element('a', {'href':'#/library/' + data.itemName, 'styles':{}});
			
			var eThumb = new Asset.image(data.thumbnail, {onload: function(){
			
				var width = eThumb.getStyle('width').toInt();
				var height = eThumb.getStyle('height').toInt();
				if(width > options.maxItemSize.width){ 
					height=((options.maxItemSize.width/width)*eThumb.getStyle('height').toInt()).toInt();
					width=options.maxItemSize.width; 
				}
				if(height > options.maxItemSize.height){ 
					width=((options.maxItemSize.height/height)*eThumb.getStyle('width').toInt()).toInt();
					height=options.maxItemSize.height;
				}
			
				eThumb.setStyles({'width': width, 'height':height, 'border':'none'}); }});

			thumbDiv.grab(eThumb);
			headerRight.grab(thumbDiv); 
		}
		else {
			headerLeft.setStyle('width','100%');
			eTitle.setStyle('width','100%'); 
			headerRight.destroy();
		}
		
		if(options.description){
			var eDescription = new Element('p', {'html':data.text, 'styles': {'clear':'both', 'color':'#666'}});
			itemPadding.grab(eDescription);
		}
		
		if(!options.externalLinks){
			if($type(itemContainer) == 'element') itemContainer.addEvent('click', function(){ PageManager.SideNav.changeItem(data.id); });
			if($type(eTitle) == 'element') eTitle.addEvent('click', function(){ PageManager.SideNav.changeItem(data.id); });
			if($type(thumbDiv) == 'element') thumbDiv.addEvent('click', function(){ PageManager.SideNav.changeItem(data.id); });
			if($type(eLink) == 'element') eLink.destroy();
		}
		if (options.externalLinks && data.link != ''){
			if($type(itemContainer) == 'element') itemContainer.setProperties({'href': data.link, 'target':'_blank'});
			if($type(eTitle) == 'element') eTitle.setProperties({'href': data.link, 'target':'_blank'});
			if($type(thumbDiv) == 'element') thumbDiv.setProperties({'href': data.link, 'target':'_blank'});
			if($type(eLink) == 'element') eLink.setProperties({'href': data.link, 'target':'_blank'});
		}
		
	
	};
	
	this.clear = function(){
	
		column.destroy();
	
	};

}



*/

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


var projectViewer2 = new Class({
	Implements: [Options, Events],
	options:{
		
	},
	
	initialize: function(parent, options){
		
		this.setOptions(options);
	
		this.mainColumn = new Element('div', {'styles' : {'width': 400, 'float':'left', 'overflow':'hidden'}} );
		this.mainColumnText = new Element('div', {'styles' : {'padding': '10px 20px', 'margin': 0, 'font-family':'Myriad Pro Regular, sans-serif'}} );
	
		this.rightColumn = new Element('div', {'styles': {'width':400, 'height': '100%', 'float': 'left'}});
		this.rightColumnContent = new Element('div', {'styles' : {'padding': '23px 20px', 'margin': 0}} );
		
		this.bulletin = new Element('div', {'styles' : {'padding': '10px 20px', 'margin': 0, 'font-family':'Myriad Pro Regular, sans-serif'}});
	
		
		this.viewer = new slideViewer2(this.rightColumnContent, {controls:false, loop:true});
	
		this.currentProject;  
	
		this.mainColumn.grab(this.mainColumnText);
		this.rightColumn.adopt([this.rightColumnContent, this.bulletin]);
		parent.adopt([this.mainColumn, this.rightColumn]);
		
		this.viewer.addEvent('movieLoaded', function(movieObject){ 
			new Fx.Scroll(parent).toTop();
		});
		
		
		
	},
	
	display: function(projectData){
	
		var self = this;
	
		if($type(projectData) == 'array') projectData = projectData[0];
		this.viewer.loadImages(projectData.images);
		
		this.mainColumnText.set('html', projectData.text);
		
		this.bulletin.set('html', projectData.bulletin);
		
		$$('a.luminarVideo').each(function(item){
			item.addEvent('click', function(){ self.viewer.loadMovie(item.href); return false;});
		
		});
	},
	
	clear: function(){
	
		clearInterval(this.viewer.intervalHandle);
	
		this.mainColumn.destroy();
		this.rightColumn.destroy();
	
	}	
	
});

/*
function projectViewer(prefs){
	
	var me = this;
	
	this.currentSection = prefs.section;
	
	var requestURL = me.currentSection.res;
	
	//var sideNavStyle = {'background':'#FFF', 'width':100, 'height':18, 'margin':'5px 0', 'text-transform':'uppercase', 'vertical-align':'middle', 'font': '10px/1.5 "Myriad Pro Regular"', 'padding': '0 2px' };
	
	//var projectMain = new Element('div', {'styles': {'width':1000, 'margin':'0 auto', 'height':'auto !important', 'height':'100%', 'min-height':'100%', 'position':'relative'}});
	//var leftColumn = new Element('div', {'styles' : {'width':210, 'height':800, 'min-height':'100%', 'float':'left', 'background':'url(/images/core/vertical_bars.png) repeat'}});
	//var sideNavigationList = new Element('ul', { 'styles' : { 'font-family':'Myriad Web Pro Condensed', 'font-size':9, 'color':'#6aacce', 'padding-left': 20, 'list-style':'none'} });
	//var sideNavEl = new Element('li', { 'styles': sideNavStyle, 'text': 'Projects' });
	//var sideNavSubList = new Element('ul', {'styles' : {'list-style':'inherit', 'padding': 'inherit', 'margin':'0 3px'} });
	var mainColumn = new Element('div', {'styles' : {'width': 400, 'float':'left', 'overflow':'hidden'}} );
	var mainColumnText = new Element('div', {'styles' : {'padding': '10px 20px', 'margin': 0, 'font-family':'Myriad Pro Regular, sans-serif'}} );
	
	var rightColumn = new Element('div', {'styles': {'width':400, 'height': '100%', 'float': 'left'}});
	var rightColumnContent = new Element('div', {'styles' : {'padding': '23px 20px', 'margin': 0}} );
	
		
	var viewer = new slideViewer(rightColumnContent, {controls:false, loop:true});
	
	this.currentProject;  
	
	this.init = function(){

		mainColumn.grab(mainColumnText);
		rightColumn.grab(rightColumnContent);
		prefs.parent.adopt([mainColumn, rightColumn]);
		
		me.load(prefs.first, me.display);
		
		viewer.initialize();
		
		
	};

	this.load = function(projectId, callback){
		
		var jsonRequest = new Request.JSON({url: requestURL, onSuccess: function(project){
   			callback(project);
   		}}).get({'id': projectId});
		
		
	};
	
	this.display = function(projectData){
	
		viewer.loadImages(projectData[0].images);
		
		//send request to the load
		mainColumnText.set('html', projectData[0].text);
		//if(mainColumnText.getElement('h2')) mainColumnText.getElement('h2').setStyles({color:'#000'});
		
		
	};
	
	this.clear = function(){
	
		//kill the slideshow
		clearInterval(viewer.intervalHandle);
	
		mainColumn.destroy();
		rightColumn.destroy();
	
	}
};

*/

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function pageView(prefs){

//function used to display the item as a series of pages.

	var me = this;
	
	var mainColumn = new Element('div', {'styles' : {'width': 740, 'height': '100%', 'float':'left'}} );
	var mainColumnFrame = new Element('div', {'styles' : {'padding': '20px', 'margin': 0}} );
	var thumbColumn = new Element('div', {'styles' : {'width': 100, 'height': '100%', 'float':'left', 'margin':'20px 0'}} );
	
	var slideWidth = 700;
	var thumbWidth = 100;
	
	if(!prefs.firstPage) prefs.firstPage = 0;
	
	this.currentPage;
	this.loadedPages;
	this.loadedThumbnails;
	this.document;
	
	this.init = function(asDocument){
	
		//set up the initial page layout
		mainColumn.grab(mainColumnFrame);
		//here for now
		projectMain.adopt([mainColumn, thumbColumn]);
		
		me.document = asDocument;
		
		me.loadImages(me.document.thumbs, me.displayThumbs);
		
		me.displayPage(prefs.firstPage);
	
	};
	
	this.displayPage = function(page){
	
		if($type(page) == 'array' && (page[0].src)) {
			
			var newHeight = ((slideWidth / page[0].width)*page[0].height).toInt();
			
			page[0].setStyles({width:slideWidth, height:newHeight});
			
			mainColumnFrame.empty();
			mainColumnFrame.grab(page[0]);
		
		}
		else if($type(page) == 'number') me.loadImages(me.document.pages[page], me.displayPage);	
		
	
	};
	
	this.displayThumbs = function(thumbs){
	
		//check type
		//add an anchor parent tag to change the URL
		
		thumbs.each(function(item, index){
		
			var newHeight = ((thumbWidth / item.width)*item.height).toInt();
			item.setStyles({width:thumbWidth, height:newHeight});
			
			item.addEvent('click', function(){ me.displayPage(index); });

			
		
		});
		
		
		
		
		thumbColumn.adopt(thumbs);
	
	};
	
	
	this.loadImages = function(asSource, callback) {
	
		var aoTemp = new Asset.images(asSource, {
		
			onProgress: function(counter, index) {
			
				//me.slides[index].setStyles({height:300, width:400});
				//imageHolder.set('styles' , {'width' : imageHolder.getStyle('width').toInt() + me.slides[index].getStyle('width').toInt() }); 
			},
			onComplete: function(){
			
				//imageHolder.adopt(me.slides);
				//me.showSlide(me.currentSlide);
				callback(aoTemp);
			}
		});
		
	
	
	};

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function linkView(options){

	if(!options) var options = {};
	if(!options.width) options.width=400;
	if(!options.height) options.height=120;
	if(!options.thumbnail) options.thumbnail = true;
	if(!options.maxItemSize) options.maxItemSize = {width:170, height:50};

	var me = this;
	var requestURL = options.pageManager.currentSection.res;	
	
	var column = new Element('div', {'styles' : {'width': 400, 'height': '100%', 'float':'left'}} );
	var columnText = new Element('div', {'styles' : {'padding': 20, 'margin': 0}} );
	
	column.grab(columnText);
	options.parent.grab(column);
	
	this.init = function(){ me.loadData(options.first);};
	
	this.display = function(result){
	
		var data = result[0];
		
		//truncate link to max of 30 chars...
		
		var thumbnail = new Asset.image(data.thumbnail, {onload: function(){
			
				var width = thumbnail.getStyle('width').toInt();
				var height = thumbnail.getStyle('height').toInt();
				if(width > options.maxItemSize.width){ 
					height=((options.maxItemSize.width/width)*thumbnail.getStyle('height').toInt()).toInt();
					width=options.maxItemSize.width; 
				}
				if(height > options.maxItemSize.height){ 
					width=((options.maxItemSize.height/height)*thumbnail.getStyle('width').toInt()).toInt();
					height=options.maxItemSize.height;
				}
			
				thumbnail.setStyles({'width': width, 'height':height, 'border':'none'}); 
		}});
		
		
	
		var linkTitle = new Element('a', {'href':data.link, 'text':data.itemName, 'target': '_blank', 'styles' : {'font': '12px/1 "Myriad Pro Semibold", sans-serif', 'color':'#0079c2', 'float':'left', 'margin-top':10, 'width':'100%'}});
		var link = new Element('a', {'href':data.link, 'text':data.link, 'target': '_blank', 'styles' : {'font': '9px/1.5 "Myriad Pro Regular", sans-serif', 'color':'#cccccc',  'width':'100%', 'float':'left' }});
		var taster = new Element('p', {'text':data.text, 'styles' :{}});
		
		columnText.adopt([thumbnail, linkTitle, link, taster]);
		
		
	
	
	
	};
	
	this.loadData = function(id){
	
		var jsonRequest = new Request.JSON({url: requestURL, onSuccess: function(result){
   			me.display(result);
   		}}).get({'id': id});
	
	};
	
	this.clear = function(){
	
		column.destroy();
	
	}


}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


function rssView(options){

	if(!options) var options = {};
	if(!options.width) options.width=400;
	if(!options.height) options.height=120;
	if(!options.thumbnail) options.thumbnail = false;
	if(!options.maxItemSize) options.maxItemSize = {width:170, height:50};

	var me = this;
	
	this.currentSection = options.section;
	
	var requestURL = me.currentSection.res;

	var column = new Element('div', {'styles' : {'width': 440, 'height': '100%', 'float':'left'}} );
	var columnText = new Element('div', {'styles' : {'padding': 20, 'margin': 0}} );
	
	var header = new Element('div', {'styles' : {'border-bottom': '1px solid #CCC', 'margin': 0}});
	
	columnText.grab(header);
	column.grab(columnText);
	options.parent.grab(column);
	
	if(typeof(DOMParser) == 'undefined') { DOMParser = function(){}; DOMParser.prototype.parseFromString = function(str, contentType) {
	if(typeof(ActiveXObject) != 'undefined') { var xmldata = new ActiveXObject('Msxml2.DOMDocument'); xmldata.async = false; xmldata.loadXML(str); return xmldata; }}}

	this.init = function(){	me.loadData(options.item, 0);};
	
	this.loadData = function(projectId, sectionId){
		
		var jsonRequest = new Request.JSON({url: requestURL, onSuccess: function(result){
   			me.loadFeed(result[0].link);
   		}}).get({'id': projectId, 'section': sectionId});
	};
	
	
	this.loadFeed = function(uri){
	
	var myRequest = new Request({url:'/lib/php/transport.php', onSuccess: function(result){

		var xmlobject = (new DOMParser()).parseFromString(result, "text/xml");
		
		var mainTitle = xmlobject.getElementsByTagName('title')[0].childNodes[0].nodeValue;
		//var mainURL = xmlobject.getElementsByTagName('link')[0].childNodes[0].nodeValue;
		var mainURL = uri;
		var mainImage = xmlobject.getElementsByTagName('image')[0].getElementsByTagName('url')[0].childNodes[0].nodeValue;
			
		var container = new Element('div', {'styles':{'width':options.width}});
		var linkTitle = new Element('a', {'href':mainURL, 'text':mainTitle, 'target': '_blank', 'styles' : 
			{'font': '14px "Myriad Pro Regular", sans-serif', 'color':'#fff', 'margin-top':10, 'width':'100%', 'display':'block', 'background':'#ccc'}});
		var link = new Element('a', {'href':mainURL, 'text':mainURL, 'target': '_blank', 'styles' : 
			{'font': '9px/1.5 "Myriad Pro Regular", sans-serif', 'color':'#cccccc',  'width':'100%', 'float':'left' }});
			
		var imageHolder = new Element('div', {'styles':{'text-align':'right'}});	
		var eImage = new Element('img', {'src': mainImage, 'styles':{}});
		var eTitle = new Element('a', {'href':'', 'text':mainTitle, 'target': '_blank', 'styles': 
			{'font': '14px "Myriad Pro Regular", sans-serif', 'color':'#fff', 'margin-top':10, 'width':'100%', 'display':'block', 'background':'#ccc'}});
			
			imageHolder.grab(eImage);
			container.adopt([linkTitle, link, imageHolder]);
			header.grab(container);
			
			//AND NOW FOR THE BENEFIT OF INTERNET EXPLORER...
			for(var i=0; xmlobject.getElementsByTagName('item')[i]; i++){
			
				var item = xmlobject.getElementsByTagName('item')[i];
				var title = item.getElementsByTagName('title')[0].childNodes[0].nodeValue;
				var link = item.getElementsByTagName('link')[0].childNodes[0].nodeValue;
				var description = item.getElementsByTagName('description')[0].childNodes[0].nodeValue;
				var pubDate = item.getElementsByTagName('pubDate')[0].childNodes[0].nodeValue;
				
				var itemDiv = new Element('div', {'styles': 
					{'display':'block', 'float':'left', 'margin-top':10, 'width':options.width,'height':options.height, 'overflow':'hidden', 'border': '1px solid #CCC', 'padding':0}});
				var itemPadding = new Element('div', {'styles': {'padding':5}});
				itemDiv.grab(itemPadding);

				
				var eTitle = new Element('a', {'href':link, 'text':title, 'target': '_blank', 'styles': {'margin-top':10, 'display':'block'}});
				var ePubDate = new Element('p', {'text':pubDate, 'styles': {'font': '9px/1.5 "Myriad Pro Regular", sans-serif', 'color':'#cccccc', 'margin':0}});
				var eDescription = new Element('p', {'html':description, 'styles': {'clear':'both'}});
				//var ePubDate = new Element('p', {'text':pubDate, 'styles': {'clear':'both', 'font': '9px/1.5 "Myriad Pro Regular"'}});
				
				itemPadding.adopt([eTitle, ePubDate, eDescription]);
				columnText.grab(itemDiv);
			
			}			
			
		}}).get({'action':uri});

	};
	
	this.clear = function(){
	
		if(column) column.destroy();
	};


}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var mapView2 = new Class({
	Implements: [Options, Events],
	options:{
		width: '100%',
		height: 101,
		itemWidth:140, 
		itemHeight:20,
		textSize:12,
		background: '#CCC',	
		logo: '/images/core/luminar_logo_wl.png',
		defaultColor: '#333',
		highlightColor: '#0079c2'
	},
	
	initialize: function(parent, options){
		var self=this;
		this.setOptions(options);
		
		this.container = new Element('div', { 'styles' : { 'font-family':'Myriad Web Pro Condensed, sans-serif', 'font-size':10} });
		this.viewWindow = new Element('div', { 'styles' : { 'width':400, 'height':300, 'border': '2px #0079c2 solid', 'overflow': 'hidden', 'position':'relative' } });
		this.captionBar = new Element('div', { 'styles' : { 'width':400, 'margin': '5px 0', 'border-top': '1px #CCC solid',  'border-bottom': '1px #CCC solid', 'padding': '2px', 'float' : 'left', 'vertical-align' : 'middle'} });
		this.caption = new Element('div', {'styles' : {'width':340, 'height':14, 'float' : 'left'} });
	
		this.mainColumn = new Element('div', {'styles' : {'width': 400, 'height': '100%', 'float':'left'}} );
		this.mainColumnText = new Element('div', {'styles' : {'padding': '10px 20px', 'margin': 0}} );
	
		this.rightColumn = new Element('div', {'styles': {'width':434, 'height': '100%', 'float': 'left'}});  
		this.rightColumnContent = new Element('div', {'styles' : {'padding': '23px 20px', 'margin': 0}} );
		
		this.container.adopt([this.viewWindow, this.captionBar]);
		this.rightColumn.grab(this.rightColumnContent);
		this.rightColumnContent.grab(this.container);
		this.captionBar.adopt([this.caption]);
		
		this.mainColumn.grab(this.mainColumnText);
		
		parent.adopt([this.mainColumn, this.rightColumn]);
	},
	
	display:function(data){
	
		var geocoder = new GClientGeocoder();
		var map = new GMap2(this.viewWindow);
		var address = "Quai du Mont-Blanc 5, 1201 Geneva, Switzerland"; //take address from database

		geocoder.getLatLng(address, function(point){
			if (!point) { alert(address + " not found");} 
			else {
				map.setCenter(point, 15);
				map.setUIToDefault();
      			var marker = new GMarker(point);
      			map.addOverlay(marker);
      			map.hideControls();
			}

		});
		
		this.mainColumnText.set('html', data[0].text);
		
	},
	
	clear: function(){
	
		this.mainColumn.destroy();
		this.rightColumn.destroy();

	}
});

/*
function mapView(prefs){
	
	var me = this;	
	var requestURL = prefs.section.res;
	
	var container = new Element('div', { 'styles' : { 'font-family':'Myriad Web Pro Condensed, sans-serif', 'font-size':10} });
	var viewWindow = new Element('div', { 'styles' : { 'width':400, 'height':300, 'border': '2px #0079c2 solid', 'overflow': 'hidden', 'position':'relative' } });
	var captionBar = new Element('div', { 'styles' : { 'width':400, 'margin': '5px 0', 'border-top': '1px #CCC solid',  'border-bottom': '1px #CCC solid', 'padding': '2px', 'float' : 'left', 'vertical-align' : 'middle'} });
	var caption = new Element('div', {'styles' : {'width':340, 'height':14, 'float' : 'left'} });
	
	var mainColumn = new Element('div', {'styles' : {'width': 400, 'height': '100%', 'float':'left'}} );
	var mainColumnText = new Element('div', {'styles' : {'padding': '10px 20px', 'margin': 0}} );
	
	var rightColumn = new Element('div', {'styles': {'width':434, 'height': '100%', 'float': 'left'}});  
	var rightColumnContent = new Element('div', {'styles' : {'padding': '23px 20px', 'margin': 0}} );
	
	this.currentSection = prefs.section;
	this.currentProject;
	
	this.init = function(){
	
		container.adopt([viewWindow, captionBar]);
		rightColumn.grab(rightColumnContent);
		rightColumnContent.grab(container);
		captionBar.adopt([caption]);
		
		mainColumn.grab(mainColumnText);
		
		prefs.parent.adopt([mainColumn, rightColumn]);
		//prefs.parent.grab(projectMain);
				
		//request the first piece - specified by the project constructor
		me.load(prefs.first, me.display);
		//me.load(0, me.displaySideMenu);
		
		//viewer.initialize();
		
		
	};

	this.load = function(projectId, callback){
		
		var jsonRequest = new Request.JSON({url: requestURL, onSuccess: function(project){
   			callback(project);
   		}}).get({'id': projectId});
		
		
	};
	
	this.display = function(projectData){

		var geocoder = new GClientGeocoder();
		var map = new GMap2(viewWindow);
		var address = "Quai du Mont-Blanc 5, 1201 Geneva, Switzerland"; //take address from database

		geocoder.getLatLng(address, function(point){
		if (!point) { alert(address + " not found");} 
		else {
      
			map.setCenter(point, 15);
			map.setUIToDefault();
      		var marker = new GMarker(point);
      		map.addOverlay(marker);
      		//map.removeControl(mapTypeControl);
      		map.hideControls();
		}

	});
		
		
		// fade transition - why not?
		//me.currentProject
		
		//load the slides into the viewer
		//viewer.loadImages(projectData[0].images);
		
		//send request to the load
		mainColumnText.set('html', projectData[0].text);
		//if(mainColumnText.getElement('h2')) mainColumnText.getElement('h2').setStyles({color:'#000'});
		
		
	};
	
	this.clear = function(){
	
		mainColumn.destroy();
		rightColumn.destroy();
	
	}
};
*/
function trimString(str, limit){

	if(!limit) var limit = 30;

	var bits, i;
	if($type(str) != 'string') return '';
	
	bits = str.split('');
	if (bits.length > limit) {
		for (i = bits.length - 1; i > -1; --i) {
			if (i > limit) {
				bits.length = i;
			}
			else if (' ' === bits[i]) {
				bits.length = i;
				break;
			}
		}
		bits.push('...');
	}
	return bits.join('');

}

