var nummsgs = 0;

var perpage = 25;

var autoSearchTimeout = 0;

function clickSelect(el){
}

function getNumMsgs(){
	call([], "IRC.getNumMessages", function(x){
		nummsgs = x;
		}
	);
}

function getActiveMembers(){
	call([], "IRC.getActiveMembers", function(x){
			var tbody = $("topstats");
			tbody.empty();

			for(var i=0;i<x.length;i++){
				var row = new Element('tr', {id:x[i].handle});
				var handlecol = new Element('td', {html:x[i].handle});
				handlecol.addClass("nopad");
				handlecol.inject(row);
				var talkedcol = new Element('td', {html:x[i].talked});
				talkedcol.addClass("nopad");
				talkedcol.inject(row);

				row.inject(tbody);
		
			}
		}
	);
}

function getVisitorsSeen(){
	call([], "IRC.getVisitorsSeen", function(x){
			var container = $("visitorsseen");

			var seen = new Element('span');
			seen.setProperty('html', x);
			
			container.adopt(seen);
		}
	);
}


function getMsgs(max, start){


	getNumMsgs();

	var params = Array();

	if(max) {
		params.push(max);
	} else {
		perpage = $("perpageinput").value;
		params.push(perpage);
	}

	if(start && start > 0){
		params.push(start);
	}

	call(params, "IRC.getMessages", function(entries){
			var tbody = $("messages");
			tbody.empty();
			$("searchresults").addClass('hidden');

			for(var i=0;i<entries.length;i++){
				var row = new Element('tr', {id:entries[i].id});
				var datecol = new Element('td', {html:entries[i].date}).addClass("date");
				datecol.inject(row);
				var handlecol = new Element('td', {html:entries[i].handle}).addClass("handle");
				handlecol.inject(row);
				var msgcol = new Element('td', {html:entries[i].content}).addClass("msg");
				msgcol.inject(row);

				row.inject(tbody);
		
			}

			$$(".back").each(function(item){
				item.removeEvents();
				item.addEvent('click', function(x){ x.stop(); back(); });
				}
			);

			$$(".fwd").each(function(item){
				item.removeEvents();
				item.addEvent('click', function(x){ x.stop(); fwd(); });
				}
			);

		}
	);
}

function back(query){

	perpage = $("perpageinput").value;

	var target = -1;

        if(query){
                target = $("messages").firstChild.get('searchid') - perpage + 1;
        } else {
                target = $("messages").firstChild.get('id') - perpage - 1;
	}

	// cant go back any farther
	if(target < 0){
		return false;
	}


	if(query){
		doSearch(target);
	}else {
		getMsgs(perpage, target);
	}

	return true;
}

function fwd(query){
		
	perpage = $("perpageinput").value;

	var target = -1;
	
	if(query) {
		target = $("messages").lastChild.get('searchid');
	} else {
		target = $("messages").lastChild.get('id');
	}

	// cant go fwd any farther
	if(target < perpage - 1 ){ // -1 because 0 to 24 == perpage == 25 items
		return false;
	}

	
	if(query){
		doSearch(target);
	} else {
		getMsgs(perpage, target);
	}
//	else
	//	alert("you have reached the end, go home");

	return true;
}





function prep(){


        var req = new Request.HTML({
                url: '/irclogs/logsTemplate.html',
                method: 'get',
                update: $('container'),
                evalScripts: true
                });

	req.send().addEvent('success', function(x){
				getActiveMembers();
				getVisitorsSeen();
				
				call([], "IRC.getNumMessages", function(x){
               				 nummsgs = x;
					$('totalmsgs').setProperty('html', nummsgs);
                			});

			});
}

function doSearch(target){
	clearTimeout(autoSearchTimeout);

	var fullquery = $("searchtext").value;

	//var queryobj = {query:fullquery, handle:handlequery, date:datequery, channel:chanquery};
	//var queryobj = {"query":fullquery};//, handle:handlequery, date:datequery, channel:chanquery};
	var queryobj = Object();
	//queryobj["query"] = fullquery;//, handle:handlequery, date:datequery, channel:chanquery};
	// SAME AS
	queryobj.query = fullquery;//, handle:handlequery, date:datequery, channel:chanquery};

	perpage = $("perpageinput").value;
	
	var params =  Array();
	params.push(queryobj);
	params.push(perpage);

	if(target){
		params.push(target);
	}
	
	call(params, "IRC.search", function(input){

			var entries = input.results;
		
			var count = input.count;

			var tbody = $("messages");
			tbody.empty();
			for(var i=0;entries && i<entries.length;i++){
				var thisid = entries[i].id;

				var row = new Element('tr', {id:thisid, searchid:entries[i].searchid});
				var datecol = new Element('td', {html:entries[i].date}).addClass("date");
				datecol.inject(row);

				var handlecol = new Element('td', {html:entries[i].handle}).addClass("handle");
				handlecol.inject(row);

				var msgcol = new Element('td').addClass("msg");
				var resultlink = new Element('span').addClass("actionlink");
				resultlink.setProperty('html', entries[i].content);
				resultlink.addEvent('click', function(x){
//							x.stop(); 
							getMsgs(perpage, x-1);
							return false;
						}.pass(thisid)
					).inject(msgcol);
				msgcol.inject(row);
				row.inject(tbody);
		
			}
			
			$("instructions").addClass('hidden');
			$("searchresults").removeClass('hidden');
			
			$("logdata").removeClass('hidden');

			if(!entries || entries.length == 0){
				$('msgtable').addClass('hidden');
				$('perpage').addClass('hidden');
				$$('.back').each(function(item){item.addClass('hidden');});
				$$('.fwd').each(function(item){item.addClass('hidden');});

				$("nonefound").removeClass('hidden');
				return false;
			}
			
			$("nonefound").addClass('hidden');
				
			$$('.back').each(function(item){item.removeClass('hidden');});
			$$('.fwd').each(function(item){item.removeClass('hidden');});
			$('perpage').removeClass('hidden');
			$('msgtable').removeClass('hidden');
  
			$$(".back").each(function(item){
                                item.removeEvents();
                                item.addEvent('click', function(x){ x.stop(); back(true); });
                                }
                        );

                        $$(".fwd").each(function(item){
                                item.removeEvents();
                                item.addEvent('click', function(x){ x.stop(); fwd(true); });
                                }
                        );


		}
	);
	
	//for onSubmit events
	return false;
}

function autoSearch(){

	clearTimeout(autoSearchTimeout);

	autoSearchTimeout = setTimeout(doSearch, 1000);
}

window.addEvent('domready', prep);
