var eDaabBox = new Class({
    options: {
    	'classX': 'white'
	},

	initialize: function(options) {
        this.setOptions(options);
        this.createBox();
		this.cols 	= 0;
		this.cells 	= 0;
		this.classX = this.options.classX;
    },
    createBox : function()
    {
		this.cols = 0;
		this.cells = 0;
        this.box = new Element('div');
        this.box.addClass('box');
        if (this.classX != null)
        	this.box.addClass(this.classX);
        this.legend = new Element('div');
        this.legend.addClass('legend');
        this.content = new Element('div');
        this.content.addClass('content');
		this.box.adopt(this.legend);
		this.box.adopt(this.content);
		this.contentObj = new Array();
		this.seperator = new Element('div')
			.setStyles({'height':'16px'})
			.addClass('clear');
	},
	setStyles: function(obj)
	{
		this.box.setStyles(obj);
	},
	setStyle: function(key, value)
	{
		this.box.setStyle(key, value);
	},
	addClassX: function(classX)
	{
		this.box.addClass(classX);
	},
	setPropertyX: function(attr, value)
	{
		this.box.setProperty(attr, value);
	},
	addToContent: function(el)
	{
		var self = this;
		if ($type(el) == 'array')
		{
			el.each(function(single)
			{
			//	alert ('test');
				//self.addToContent(single);
				self.contentObj.include(single);
			});
		}
		else
			this.contentObj.include(el);
	},
	addLegend: function(el)
	{
		this.legend.adopt(el);
	},

	setSeperator: function(el)
	{
		this.seperator = el;
	},
	getSeperator: function()
	{
		return this.seperator;
	},
	returnTrenner: function (val)
	{
		/*
		var trenner = new Element('div');
			trenner.setStyle('height', '16px');
			trenner.addClass('clear');
		*/
		var trenner = this.getSeperator().clone();
			trenner.setText(val);
		return trenner;
	},
	returnContent: function()
	{
		var parent = new Element('div');
		parent.setStyle('clear','both');
		parent.setStyle('float','left');
		parent.addClass('content');
		var self = this;
		this.contentObj.each(function(el)
		{
			var currSize 	= el.getSize().toInt();
			self.cells 		= (self.cells.toInt()  + currSize);
			if ((self.cells) > 6)
			{
				self.cols 	= self.cols+1;
				self.cells 	= currSize;
				//self.content.adopt(self.returnTrenner((fullSize + currSize)+'trenner'+self.cols +' / ' + self.cells));
				parent.adopt(self.returnTrenner(''));
			}
			parent.adopt(el.returnBox());
		});
		return parent;

	},
	returnInnerContent: function()
	{
		var self = this;
		var returnEl = new Array();
		this.contentObj.each(function(el)
		{
			if (el.size == null)
			{
				//console.log(el);
				var currSize = 1;
			}
			else
			{
				var currSize = el.getSize().toInt();
			}
			self.cells = (self.cells.toInt()  + currSize);
			if ((self.cells) > 6)
			{
				self.cols 	= self.cols+1;
				self.cells 	= currSize;
				el.setStyle('clear', 'both');
				//returnEl.include(self.returnTrenner(''));
			}
			returnEl.include(el.returnBox());
		});
		return returnEl;

	},
	returnBox : function()
	{
		var self = this;
		this.contentObj.each(function(el)
		{
			var currSize = el.getSize().toInt();
			var fullSize = self.cells.toInt();
			if ((fullSize + currSize) > 6)
			{
				self.cols = self.cols+1;
				self.cells = currSize;
				//self.content.adopt(self.returnTrenner((fullSize + currSize)+'trenner'+self.cols +' / ' + self.cells));
				self.content.adopt(self.returnTrenner(''));
			}
			else
			{
				self.cells = (fullSize  + currSize);
			}
			self.content.adopt(el.returnBox());
		});
		return this.box;
	}
});
eDaabBox.implement(new Options);

var eDaabInnerbox = new Class ({
	options: {
    	'size': 1
	},
	initialize: function(options) {
        this.setOptions(options);
        this.size = this.options.size;
        //return
		this.createBox();
       // error.log('location chooser ist geladen');
    },
    setProperty : function (key, value)
    {
    	this.box.setProperty(key, value);
	},
    setProperties : function (obj)
    {
    	this.box.setProperties(obj);
	},
    setId: function(id)
    {
    	this.box.setProperty('id', id);
	},
	addClass: function(className)
	{
		this.box.addClass(className);
	},
	removeClass: function(className)
	{
		this.box.removeClass(className);
	},
	setStyle: function(key, value)
	{
		this.box.setStyle(key, value);
	},
	setStyles: function(obj)
	{
		this.box.setStyles(obj);
	},
	createBox : function()
    {
        this.box = new Element('div');
        this.box.addClass('inner');
        this.box.addClass('size'+this.size+'_6');
        this.box.setStyle('paddingBottom', '2px');
        //return this.box;
	},
	add : function(el)
	{
		this.box.adopt(el);
	},
	getSize: function()
	{
		return this.size;
	},
	returnBox : function()
	{
		return this.box;
	}
});
eDaabInnerbox.implement(new Options);

var eDaabInnerBoxSmall = new Class({
	options: {
		type 	: 'standard',
		obj		: null
	},
	initialize: function(options) {
        this.setOptions(options);
		this.type	= this.options.type;
		this.obj	= this.options.obj;
	},
	returnBox: function()
	{
		var box = null;
		switch(this.type)
		{
			case 'headline':
				box = this.createBoxHeadline(this.obj);
			break;
			case 'empty':
				box = this.createBoxEmpty(this.obj);
			break;
			case 'contacts':
				box = this.createBoxContacts(this.obj);
			break;
			case 'gallery':
				box = this.createBoxGallery(this.obj);
			break;
			case 'pictureInner':
				box = this.createBoxPictureInner(this.obj);
			break;
			case 'user':
				box = this.createBoxUser(this.obj);
			break;
			case 'blogEntry':
			case 'blog':
			case 'news':
			case 'text':
			/*default:*/
				box = this.createBoxText(this.obj);
			break;
			case 'messageShort':
			/*default:*/
				box = this.createBoxMessageShort(this.obj);
			break;
		}
		return box;
	},

	/** function createBoxText needs:
	 * size
	 * title
	 * subtitle
	 * text
	 * link
	 *
	 **/
	createBoxHeadline: function(object)
	{
		var innerbox = new eDaabInnerbox({size: 6});
			innerbox.setStyle('padding', '0');
			innerbox.setStyle('margin', '0');
		var wrapper = new Element('h3');
			wrapper.setHTML(object.text);
			innerbox.add(wrapper);
		return innerbox;
	},
	/** function createBoxText needs:
	 * size
	 * title
	 * subtitle
	 * text
	 * link
	 *
	 **/
	createBoxEmpty: function(object)
	{
		var innerbox = new eDaabInnerbox({size: object.size});
		var wrapper = new Element('div');
			wrapper.setHTML('&nbsp;');
			innerbox.add(wrapper);
		return innerbox;
	},
	/** function createBoxText needs:
	 * pic
	 * title
	 * subtitle
	 * text
	 * link
	 *
	 **/
	createBoxText: function(object)
	{
		var innerbox = new eDaabInnerbox({size: 2});
		var head = new Element('dl');
			head.addClass('shortinfos');
			if (object.pic != null)
				head.adopt(new Element('dt').adopt(new Element('img', {'src':object.pic})));
			head.adopt(new Element('dd', {'class':'title'}).setHTML(object.title));
			head.adopt(new Element('dd', {'class':'text'}).setHTML(object.subtitle));
		var body = new Element('p').setHTML(object.text);
			foot = this.createButtonLink(object.link, 'more');
			innerbox.add(head);
			innerbox.add(body);
			innerbox.add(foot);
		return innerbox;
	},

	/** function createBoxMessageShort needs:
	 * pic
	 * title
	 * subtitle
	 * text
	 * link
	 *
	 **/
	createBoxMessageShort: function(object)
	{
		var innerbox = new eDaabInnerbox({size: 2});
		var head = new Element('dl');
			head.addClass('shortinfos');
			if (object.pic != null)
				head.adopt(new Element('dt').adopt(new Element('img', {'src':object.pic})));
			head.adopt(new Element('dd', {'class':'title'}).setHTML(object.title));
			head.adopt(new Element('dd', {'class':'text'}).setHTML(object.subtitle));
		var body = new Element('p').setHTML(object.text);
			innerbox.add(head);
			innerbox.add(body);
		return innerbox;
	},

	/** function createBoxUser needs:
	 * pic
	 * title
	 * link
	 *
	 **/
	createBoxUser: function(object)
	{
		var innerbox = new eDaabInnerbox({size: 2});
		var head = new Element('dl');
			head.addClass('shortinfos');
			if (object.pic != null)
				head.adopt(new Element('dt').adopt(new Element('img', {'src':object.pic})));
			head.adopt(new Element('dd', {'class':'title'}).setHTML(object.title));

			var linkX = this.createLink(object.link);
				linkX.setText('go to user');
			head.adopt(new Element('dd', {'class':'text'}).adopt(linkX));
			innerbox.add(head);
		return innerbox;
	},

	/** function createBoxContacts needs:
	 * pic.medium
	 * link
	 * tip
	 *
	 **/
	createBoxContacts: function(object)
	{
		var innerbox 	= new eDaabInnerbox({size: '1'});
			innerbox.setStyles({'margin-bottom': '12px', 'float': 'left'	});
	//	var tip 		= object.tip+'::'+object.owner+'<br />'+object.rank+' eRank<br />'+object.views+' views';
		var linkX = this.createLink(object.link);
			var img = new Element('img');
				img.setProperty('src', object.pic.medium);
				img.setProperty('vnfx', 'tip');
				img.setProperty('title', object.tip);
				img.setProperty('border', 'none');
				img.addClass('img');
			linkX.adopt(img);
			innerbox.add(linkX);
			innerbox.add(object.buttons);
		return innerbox;
	},
	/** function createBoxGallery needs:
	 * pic.medium
	 * link
	 * tip
	 *
	 **/
	createBoxGallery: function(object)
	{
		var innerbox 	= new eDaabInnerbox({size: '1'});
	//	var tip 		= object.tip+'::'+object.owner+'<br />'+object.rank+' eRank<br />'+object.views+' views';
		var linkX = this.createLink(object.link);
			var img = new Element('img');
				img.setProperty('src', object.pic.medium);
				img.setProperty('vnfx', 'tip');
				img.setProperty('title', object.tip);
				img.setProperty('border', 'none');
				img.addClass('img');
			linkX.adopt(img);
			innerbox.add(linkX);
		return innerbox;
	},

	/** function createBoxPictureInner needs:
	 * pic.medium
	 * link
	 * tip
	 *
	 **/
	createBoxPictureInner: function(object)
	{
		var innerbox 	= new eDaabInnerbox({size: '1'});
			innerbox.removeClass('inner');
			innerbox.removeClass('size1_6');
			innerbox.setStyles({'margin-bottom': '12px', 'float': 'left'	});
	//	var tip 		= object.tip+'::'+object.owner+'<br />'+object.rank+' eRank<br />'+object.views+' views';
		var linkX = this.createLink(object.link);
			var img = new Element('img');
				img.setProperty('src', object.pic.medium);
				img.setProperty('vnfx', 'tip');
				img.setProperty('title', object.tip);
				img.setProperty('border', 'none');
				img.setStyle('border', '1px solid #cecece');
				img.addClass('img');
			linkX.adopt(img);
			innerbox.add(linkX);
		return innerbox;
	},
	createLink: function(link, type)
	{
		if (type == null)
			type = 'replace';
		var anchor = new Element('a', {
			 	'href'		: link,
			 	'vnlink'	: link,
			 	'vnajax'	:'true',
			 	'vnajaxtype': type,
				'vncontent'	:'content'
			 });
		return anchor;
	},

	createButtonLink: function(link, text, type)
	{
		if (type == null)
			type = 'replace';
		var anchor = gui.createButton('a', text);
			anchor.setProperties({
			 	'href'		: link,
			 	'vnlink'	: link,
			 	'vnajax'	:'true',
			 	'vnajaxtype': type,
				'vncontent'	:'content'
			 });
		return anchor;
	}
});
eDaabInnerBoxSmall.implement(new Options);

