/**
 * @author thespiritx
 */
if(typeof(itemsearch) == 'undefined'){
	var itemsearch = {
		init: function(elm){
			this.css();
			this.itemheight = 60;
			this.filterbar = 25;
			this.pagebar = 16;
			var nh = $(elm).getHeight() - itemsearch.filterbar - itemsearch.pagebar;
			$(elm).down('.is_results',0).setStyle('height:'+nh+'px;');
			this.varsetup(elm);
		},
		css: function(){},
		varsetup: function(elm){
			$(elm)._start = 0;
			var rh = $(elm).down('.is_results',0).getHeight();
			$(elm)._step = Math.floor(rh/(itemsearch.itemheight+1));
			$(elm)._results = {};
			if(typeof($(elm)._params) == 'undefined') $(elm)._params = {};
			if(typeof($(elm)._params.users) == 'undefined') $(elm)._params.users = (LeafBase)?LeafBase.page.owner:'';
			$(elm)._sortby = 'name';
			itemsearch.search(elm);
		},
		search: function(elm){
			var params = {
				elm: $(elm).id,
				users: $(elm)._params.users,
				filter: $(elm).down('.keywords',0).getValue()
			};
			var url = '/modules/leafbase/components/itemsearch/results.php';
			new Ajax.Request(url, {
				method: 'post',
				parameters: params,
				onComplete: function(){
					itemsearch.sort(elm);
				}
			});
		},
		changesort: function(elm,sort){
			if (sort == 'name' && $(elm)._sortby == 'name') {
				if ($(elm).down('.namesort', 0).src.indexOf('activedown.png') >= 0) {
					$(elm).down('.namesort', 0).src = '/modules/leafbase/components/itemsearch/images/name_activeup.png';
				}
				else {
					$(elm).down('.namesort', 0).src = '/modules/leafbase/components/itemsearch/images/name_activedown.png';
				}
			}
			else 
				if (sort == 'name' && $(elm)._sortby != 'name') {
					$(elm).down('.namesort', 0).src = '/modules/leafbase/components/itemsearch/images/name_activeup.png';
					$(elm).down('.datesort', 0).src = '/modules/leafbase/components/itemsearch/images/date_inactive.png';
				}
				else 
					if (sort == 'datecreated' && $(elm)._sortby == 'datecreated') {
						if ($(elm).down('.datesort', 0).src.indexOf('activedown.png') >= 0) {
							$(elm).down('.datesort', 0).src = '/modules/leafbase/components/itemsearch/images/date_activeup.png';
						}
						else {
							$(elm).down('.datesort', 0).src = '/modules/leafbase/components/itemsearch/images/date_activedown.png';
						}
					}
					else 
						if (sort == 'datecreated' && $(elm)._sortby != 'datecreated') {
							$(elm).down('.datesort', 0).src = '/modules/leafbase/components/itemsearch/images/date_activeup.png';
							$(elm).down('.namesort', 0).src = '/modules/leafbase/components/itemsearch/images/name_inactive.png';
						}
			$(elm)._sortby = sort;
			
			itemsearch.sort(elm);
		},
		sort: function(elm){
			$(elm)._results = Extensions.jsonSort($(elm)._results,$(elm)._sortby);
			itemsearch.display(elm);
		},
		display: function(elm){
			$(elm).down('.is_results',0).innerHTML = '';
			var width = $(elm).getWidth();
			
			var top = ($(elm)._start+$(elm)._step > $(elm)._results.length)?$(elm)._results.length:(elm)._start+$(elm)._step;
			// ITEMS
			for(var i = $(elm)._start; i < top; i++){
				
				var temp_color = (typeof(LeafBase) != 'undefined')?LeafBase.page.background_color:window.background_color;
				var item = new Element('div',{
					'style': 'height:'+itemsearch.itemheight+'px;border-bottom:1px solid '+temp_color+';position:relative;'
				});
					if($(elm)._results[i].image != '') var image = new Element('img', {
						'src': ($(elm)._results[i].image.indexOf('http://') == 0 || $(elm)._results[i].image.indexOf('https://') == 0)?$(elm)._results[i].image:'/'+$(elm)._results[i].image,
						'height': '25px',
						'style': 'margin:5px 5px 0 5px;float:left;'
					});
					var rating = new Element('div', {
						'style': 'position:absolute;top:24px;right:0px;',
						'id': 'rating_'+create_guid()
					});
					rating._itemid = $(elm)._results[i].itemid;
					var comments = new Element('div', {
						'style': 'position:absolute;top:12px;right:0px;',
						'id': 'comments_'+create_guid()
					});
					comments._itemid = $(elm)._results[i].itemid;
					var title = new Element('div', {
						'style': 'font-weight:bold;font-size:12px;margin:0 5px 5px 0;'
					});
					var description = new Element('div',{
						'style': 'width:'+(width - 75)+'px'
					});
					if($(elm)._results[i].itemtype != '5'){
						var link = ($(elm)._results[i].content != '')?$(elm)._results[i].content:$(elm)._results[i].image;
							link = (link.indexOf('http') == 0)?link:'/'+link;
						var moreinfo = new Element('a', {
							'style': 'position:absolute;top:0px;right:0px;',
							'href': 'javascript:lightwindow.load(\''+link+'\');'
						});
					}
					
				$(item).addClassName('item');
					if($(elm)._results[i].image != '') $(image).addClassName('thumbnail');
					$(rating).addClassName('rating');
					$(comments).addClassName('comments');
					$(comments).addClassName('pbItem');
					$(title).addClassName('title');
					$(description).addClassName('description');
					if ($(elm)._results[i].itemtype != '5') {
						$(moreinfo).addClassName('moreinfo');
						
						var mitext = '';
						switch ($(elm)._results[i].itemtype) {
							case '1':
								mitext = 'listen >';
								break;
							case '2':
								mitext = 'watch >';
								break;
							case '3':
								mitext = 'view full size >';
								break;
							case '4':
								mitext = 'download >';
								break;
							default:
								mitext = 'read more >';
						}
						$(moreinfo).innerHTML = mitext;
					}
				if($(elm)._results[i].description != ''){
					var ddesc = $(elm)._results[i].description.replace(/\&gt\;/g,'>');
						ddesc = ddesc.replace(/\&lt\;/g,'<');
						ddesc = ddesc.replace(/\&\#39\;/g,'\'');
						ddesc = ddesc.replace(/\&\#34\;/g,'"');
						ddesc = ddesc.replace(/\&amp\;rsquo\;/g,'\'');
					description.innerHTML = ddesc;
				}
				if ($(elm)._results[i].name != '') {
					var dname = $(elm)._results[i].name.replace(/\&gt\;/g,'>');
						dname = dname.replace(/\&lt\;/g,'<');
						dname = dname.replace(/\&\#39\;/g,'\'');
						dname = dname.replace(/\&\#34\;/g,'"');
						dname = dname.replace(/\&amp\;rsquo\;/g,'\'');
					title.innerHTML = dname;
				}
				rating._run = function(){
					var rating = this;
					
					new Ajax.Request('/modules/leafbase/components/core/rating_load.php', {
						method: 'post',
						parameters: {
							userid: (typeof(LeafBase) != 'undefined') ? LeafBase.user.UserId : window.UserId,
							rating: 0,
							itemid: $(elm)._results[i].itemid,
							elm: rating.id
						},
						onComplete: function(transport){
							var userid = (typeof(LeafBase) != 'undefined') ? LeafBase.user.UserId : window.UserId;
							Extensions.log(rating);
							var flash = '<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\"';
							flash += 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" ';
							flash += 'width="75" ';
							flash += 'height="15" ';
							flash += 'id="ratingFlash" ';
							flash += 'align="middle">';
							flash += '<param name="allowScriptAccess" value="sameDomain" />';
							flash += '<param name="movie" value="/modules/leafbase/components/core/rating.swf?';
							flash += 'rating=' + rating._ratingAverage;
							flash += '&amp;tag=' + rating.id;
							flash += '&amp;itemid=' + rating._itemid;
							flash += '&amp;userid=' + userid;
							flash += '&amp;yours=' + rating._userSet;
							flash += '&amp;color=FFAA00';
							flash += '" />';
							flash += '<param name="quality" value="high" />';
							flash += '<param name="bgcolor" value="#ffffff" />';
							flash += '<param name="wmode" value="transparent" />';
							flash += '<param name="scale" value="default" />';
							flash += '<param name="swliveconnect" value="true" />';
							flash += '<embed src="/modules/leafbase/components/core/rating.swf?';
							flash += 'rating=' + rating._ratingAverage;
							flash += '&amp;tag=' + rating.id;
							flash += '&amp;itemid=' + rating._itemid;
							flash += '&amp;userid=' + userid;
							flash += '&amp;yours=' + rating._userSet;
							flash += '&amp;color=FFAA00';
							flash += '" ';
							flash += 'quality="high" ';
							flash += 'bgcolor="#ffffff" ';
							flash += 'width="75" ';
							flash += 'height="15" ';
							flash += 'name="ratingFlash" ';
							flash += 'wmode="transparent" ';
							flash += 'scale="default" ';
							flash += 'align="middle" ';
							flash += 'allowScriptAccess="sameDomain" ';
							flash += 'type="application/x-shockwave-flash" ';
							flash += 'pluginspage="http://www.macromedia.com/go/getflashplayer" ';
							flash += 'swliveconnect="true" />';
							flash += '</object>';
							rating.innerHTML = flash;
						}
					});
				};
				rating._run();
				
				comments._run = function(){
					var comments = this;
					new Ajax.Request('/modules/leafbase/scripts/comment_num.php', {
						method: 'post',
						parameters: {
							itemid: $(elm)._results[i].itemid
						},
						onComplete: function(transport){
							var ex = '';
							ex += '<a href="#" onclick="Comments.show(this);">';
							ex += (transport.responseText)+' Comments';
							ex += '</a>';
							comments.innerHTML = ex;
						}
					});
				};
				comments._run();
				
				if($(elm)._results[i].image != '') $(item).appendChild(image);
				$(item).appendChild(rating);
				$(item).appendChild(comments);
				$(item).appendChild(title);
				$(item).appendChild(description);
				if($(elm)._results[i].itemtype != '5') $(item).appendChild(moreinfo);
				
				$(elm).down('.is_results',0).appendChild(item);
			}
			
			// PAGING
			var pages = $(elm).down('.is_paging');
			pages.innerHTML = '';
			
			if($(elm)._start > 0){
				var image = new Element('img', {
					'src': '/modules/leafbase/components/itemsearch/images/arrow-left-end.gif',
					'border': '0',
					'title': 'First Page',
					'alt': 'First Page',
					'style': 'float:left;cursor:pointer;'
				});
				Event.observe(image, 'click', function(ev){
					var elm = Event.element(ev);
						elm = $(elm).up('.pbItem');
					$(elm)._start = 0;
					itemsearch.display(elm);
				});
				$(pages).appendChild(image);
				if($(elm)._start-($(elm)._step*4) >= 0){
					var image = new Element('img', {
						'src': '/modules/leafbase/components/itemsearch/images/arrow-fast-reverse.gif',
						'border': '0',
						'title': 'Skip Previous 4',
						'alt': 'Skip Previous 4',
						'style': 'float:left;cursor:pointer;'
					});
					Event.observe(image, 'click', function(ev){
						var elm = Event.element(ev);
							elm = $(elm).up('.pbItem');
						$(elm)._start = $(elm)._start-($(elm)._step*4);
						itemsearch.display(elm);
					});
					$(pages).appendChild(image);
				}
				var image = new Element('img', {
					'src': '/modules/leafbase/components/itemsearch/images/arrow-left.gif',
					'border': '0',
					'title': 'Previous Page',
					'alt': 'Previous Page',
					'style': 'float:left;cursor:pointer;'
				});
				Event.observe(image, 'click', function(ev){
					var elm = Event.element(ev);
						elm = $(elm).up('.pbItem');
					$(elm)._start = $(elm)._start-$(elm)._step;
					itemsearch.display(elm);
				});
				$(pages).appendChild(image);
			}
			var start = ($(elm)._start-($(elm)._step*4)>=0)?$(elm)._start-($(elm)._step*4):0;
			var end = ($(elm)._start+($(elm)._step*4)<$(elm)._results.length)?$(elm)._start+($(elm)._step*4):$(elm)._results.length;
			for(var i = start; i < end; i = i+$(elm)._step){
				var page = new Element('div', {
					'style': 'cursor:pointer;float:left;width:16px;height:16px;text-align:center;line-height:16px;'
				});
				if($(elm)._start == i) page.setStyle('font-weight:bold;');
				page.innerHTML = (i/$(elm)._step)+1;
				$(pages).appendChild(page);
				Event.observe(page, 'click', function(ev){
					var elm = Event.element(ev);
					var i = elm.innerHTML;
						elm = $(elm).up('.pbItem');
					$(elm)._start = $(elm)._step*(i-1);
					itemsearch.display(elm);
				});
			}
			if($(elm)._start + $(elm)._step < $(elm)._results.length ){
				var image = new Element('img', {
					'src': '/modules/leafbase/components/itemsearch/images/arrow-right.gif',
					'border': '0',
					'title': 'Next Page',
					'alt': 'Next Page',
					'style': 'float:left;cursor:pointer;'
				});
				Event.observe(image, 'click', function(ev){
					var elm = Event.element(ev);
						elm = $(elm).up('.pbItem');
					$(elm)._start = $(elm)._start+$(elm)._step;
					itemsearch.display(elm);
				});
				$(pages).appendChild(image);
				if($(elm)._start+($(elm)._step*4) < $(elm)._results.length){
					var image = new Element('img', {
						'src': '/modules/leafbase/components/itemsearch/images/arrow-fast-forward.gif',
						'border': '0',
						'title': 'Skip Next 4',
						'alt': 'Skip Next 4',
						'style': 'float:left;cursor:pointer;'
					});
					Event.observe(image, 'click', function(ev){
						var elm = Event.element(ev);
							elm = $(elm).up('.pbItem');
						$(elm)._start = $(elm)._start+($(elm)._step*4);
						itemsearch.display(elm);
					});
					$(pages).appendChild(image);
				}
				var image = new Element('img', {
					'src': '/modules/leafbase/components/itemsearch/images/arrow-right-end.gif',
					'border': '0',
					'title': 'Last Page',
					'alt': 'Last Page',
					'style': 'float:left;cursor:pointer;'
				});
				Event.observe(image, 'click', function(ev){
					var elm = Event.element(ev);
						elm = $(elm).up('.pbItem');
					$(elm)._start = $(elm)._step*Math.floor($(elm)._results.length/$(elm)._step);
					itemsearch.display(elm);
				});
				$(pages).appendChild(image);
			}
		},
		pub: {
			update: function(sort){
				if($(elm)._sortby == sort){
					// WHAT DO I DO FOR NEW DIRECTION?
				}else{
					$(elm)._sortby = sort;
				}
			}
		},
		admin: {
			edit: function(elm){
				if(LeafBase.page.workgroupid != ''){
					var url = '/modules/leafbase/components/itemsearch/users.php';
					
					new Ajax.Request(url, {
						method: 'post',
						parameters: {
							'elm': $(elm).id,
							'workgroupid': LeafBase.page.workgroupid
						},
						onStart: function(){
							$(elm).down('.edithelp',0).innerHTML = '<img src="'+LeafBase.images.ajax_black+'"/>';
						},
						onComplete: function(){
							$(elm).down('.pb_manipulate',0).setStyle('display:none;');
							$(elm).down('.handle',0).setStyle('display:none;');
							$(elm).down('.edithelp',0).setStyle('display:none;');
							$(elm).down('.edithelp',0).innerHTML = 'Double Click to Edit';
							
							var height = $(elm).getHeight();
							var width = $(elm).getWidth();
							
							var editbox = new Element('div');
								editbox.addClassName('editbox');
								editbox.setStyle({
									backgroundColor: '#efefef',
									'height': height+'px',
									'width': width+'px',
									'z-index': '900',
									'position': 'absolute',
									'top': '0px',
									'left': '0px'
								});
								$(elm).appendChild(editbox);
								
							var users = new Element('select',
								{
									'multiple': 'multiple'	
								});
								users.addClassName('users');
								users.setStyle({
									backgroundColor: '#ffffff',
									'border': '0px none',
									'height': (height-10)+'px',
									'width': (width-10)+'px',
									'margin': '5px 0 0 5px'
								});
								$(editbox).appendChild(users);
								
							for(var i = 0; i < $(elm)._users.length; i++){
								var check = $(elm)._params.users+',';
								var params = {};
									params.value = $(elm)._users[i].userid;
									if(check.indexOf($(elm)._users[i].userid+',') >= 0) params.selected = 'selected';
								var option = new Element('option', params);
									$(option).innerHTML = $(elm)._users[i].firstname+' '+$(elm)._users[i].lastname;
									$(users).appendChild(option);
							}
							
							var editIcon = new Element('img',{
								'src':LeafBase.images.action_accept,
								'class': 'pb_manipulate static',
								'style': 'position: absolute; top: 0px; float: right; right:0px;z-index:951;'
							});
							Event.observe(editIcon, 'click', function(ev) {
								try {
									var elm = Event.element(ev);
									elm = elm.up(0);
									itemsearch.admin.update(elm);
								} catch(e) {
									Extensions.error(e,'Accepting Changes on Item Search');
								}
							});
							$(elm).appendChild(editIcon);
						}
					});	
				}else{
					$(elm).down('.pb_manipulate',0).setStyle('display:none;');
					$(elm).down('.handle',0).setStyle('display:none;');
					$(elm).down('.edithelp',0).setStyle('display:none;');
					$(elm).down('.edithelp',0).innerHTML = 'Double Click to Edit';
					
					var height = $(elm).getHeight();
					var width = $(elm).getWidth();
					
					var editbox = new Element('div', {
						'style': 'z-index:900;position:absolute;'
					});
						editbox.addClassName('editbox');
						editbox.setStyle({
							backgroundColor: '#efefef',
							'height': height+'px',
							'width': width+'px',
							'top': '0px',
							'left': '0px'
						});
						$(elm).appendChild(editbox);
						$(editbox).innerHTML = 'This page only allows the owner\'s items to be searched.';
						
					var users = new Element('input',
						{
							'value': LeafBase.page.owner,
							'class': 'users',
							'type': 'hidden'
						});
					$(editbox).appendChild(users);
					
					var editIcon = new Element('img',{
						'src':LeafBase.images.action_accept,
						'class': 'pb_manipulate static',
						'style': 'position: absolute; top: 0px; float: right; right:0px;z-index:951;'
					});
					Event.observe(editIcon, 'click', function(ev) {
						try {
							var elm = Event.element(ev);
							elm = elm.up(0);
							itemsearch.admin.update(elm);
						} catch(e) {
							Extensions.error(e,'Accepting Changes on Item Search');
						}
					});
					$(elm).appendChild(editIcon);
				}
			},
			update: function(elm){
				var editbox = $(elm).down('.editbox',0);
				var users = $(editbox).down('.users',0).getValue();
				if(typeof(users) != 'string'){
					$(elm)._params.users = users.join(',');
				}else{
					$(elm)._params.users = users;
				}
				itemsearch.search(elm);
				$(editbox).remove();
				$(elm).down('.pb_manipulate',1).remove();
				$(elm).down('.pb_manipulate',0).setStyle('display:block;');
				$(elm).down('.handle',0).setStyle('display:block;');
				$(elm).down('.edithelp',0).setStyle('display:block;');
			}
		}
	};
};
