/*
    ibob_reader.js
    -- NOT a class!
    version 1.0
    namespaced to 'iBOB'
    by Jim Gourgoutis 9/12/2008
  */

YOJIMG.iBOB = (function(){

    // Global vars
    var gCurrentList = 'internet-bob',
        gCurrentListEmail = 'internet-bob@bikelist.org',
        gCurrentListURL,
        gTime = 901,
        gTimer,
        gAuthor = '',
        gSubject = '',
        gBody = '',
        gLoadingImg = '<img src="/images/loading.gif" width="18" height="18" alt="loading..."/>',
        gReverseSort = false,
        gSortBy = 'MsgDate[d]',
        msgReadEvent,
        quickSearchEvent,
        gLastRead,
        gDateSpan = '-1d',
        gMax = '1000',
        gTracker = new Object(),
        hideList = {},
        eMsgList = null,
        eMsgListAtags = null,
        msgListEvent;

    // CSS classes
    var THREADED_MSG_CLASS = "threadMsg",
        CURRENT_MSG_CLASS = "currentMsg",
        READ_MSG_CLASS = "readMsg";
        



    function initTracking() {
      if (typeof(gTracker[gCurrentList]) == 'undefined') {
    	gTracker[gCurrentList] = new Object();
      }
    }

    function XsetMsgListEventUrl(str) {
        //msgListEventUrl = 'data.php?type=list&url=' + escape(str);
        if (YOJIMG.iBOB.msgListEvent) {
            YOJIMG.iBOB.msgListEvent.url = 'data.php?type=list&url=' + escape(str);
        }
    }

    function setMsgListEventUrl(aUrl) {
        aUrl = (aUrl) ? aUrl : 'http://search.bikelist.org/index.asp?SearchString=&FMMod=' + gDateSpan + '&FMModDate=&SortBy=' + gSortBy + '&Scope=' + gCurrentList + '&RecordsPerPage=' + gMax;
        var base = 'data.php?type=list&url=' + escape(aUrl);

        if (YOJIMG.iBOB.msgListEvent) {
          YOJIMG.iBOB.msgListEvent.url = base;
        }
    }

    function setListName(sel) {
      //storeLastReadMsg();
      gCurrentList = sel.options[sel.options.selectedIndex].value;
      gCurrentListEmail = sel.options[sel.options.selectedIndex].getAttribute('addr');
      initTracking();
      if (sel.options[sel.options.selectedIndex].getAttribute('url')) {
        gCurrentListURL = sel.options[sel.options.selectedIndex].getAttribute('url');
        setMsgListEventUrl(gCurrentListURL);
        debugMsg(gCurrentListURL);
      }
      else {
        //setMsgListEventUrl('http://search.bikelist.org/index.asp?SearchString=&FMMod=' + gDateSpan +  '&FMModDate=&SortBy=MsgDate%5Bd%5D&Scope=' + gCurrentList + '&RecordsPerPage=' + gMax);
        setMsgListEventUrl();
        debugMsg(gCurrentListEmail);    
      }
        
      YOJIMG.iBOB.msgListEvent.run();
      storeSelectedList();
      
    }

    function setDateSpan(sel) {
    	gDateSpan = sel.options[sel.options.selectedIndex].value;

    	debugMsg(gDateSpan);
    		
    	//setMsgListEventUrl('http://search.bikelist.org/index.asp?SearchString=&FMMod=' + gDateSpan + '&FMModDate=&SortBy=MsgDate%5Bd%5D&Scope=' + gCurrentList + '&RecordsPerPage=' + gMax);
        setMsgListEventUrl();
    	YOJIMG.iBOB.msgListEvent.run();
    }


    function startClock()
    {

      if (debugCheck()) {
      	var clockSpan = document.getElementById('timer');
      	clockSpan.innerHTML = "DEBUG " + gLoadingImg;
        return;
      }
      
      gTime = 901;
      gTimer = window.setInterval('YOJIMG.iBOB.updateClock()', 1000);
    }

    function stopClock()
    {
    	if (gTimer){
        window.clearInterval(gTimer);
        gTimer = null;
      }
    }

    function updateClock()
    {
    	var clockSpan = document.getElementById('timer');
    	gTime--;
    	clockSpan.innerHTML =  "refresh in " + gTime;
    	if (gTime <= 0 && YOJIMG.iBOB.msgListEvent){
    		YOJIMG.iBOB.msgListEvent.run();
    		resetClock();
    	}
    }

    function resetClock() {
    	if (!gTimer) {
    		startClock();
    	}
    	else
    		gTime = 901;
    }

    function drawList() {
        var YiBOB = YOJIMG.iBOB;

        stopClock();

        document.getElementById('timer').innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + gLoadingImg + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
        //document.getElementById('timer').innerHTML = gLoadingImg;
    	
    	if (YiBOB.msgListEvent.isComplete()) {
    		var msgCount = GetElementText(YiBOB.msgListEvent.HTTPObject.responseXML, 'message_count'),
                entries = YiBOB.msgListEvent.HTTPObject.responseXML.getElementsByTagName('ibob_message'),
                s = [],
                entryArray = new Array(),
                lastDate;
                
    		// check for errors
    		if (entries.length == 0) {
    			popError(eMsgList, 'No messages available');
                startClock();
                return;
    		}
    		
    		// convert from HTML collection to normal array
    		for (var i = 0; i < entries.length; i++) {
    			entryArray.push(entries[i]);
    		}
    		if (gReverseSort) {
                entryArray.reverse();
            }
            s.push('<div style=\"font-size: 0.7em\">returned ' + msgCount + ' messages');
    		if (parseInt(msgCount) >= parseInt(gMax)) {
    			s.push(' (limit reached)');
            }
    		s.push('</div>');
    		
        	var i = 0;
        	while (i < entryArray.length) {
                var bDrawMsgs = true,
                    date = GetElementText(entryArray[i], 'date');
        	  	s.push("<h4 onclick=\"toggle('list" + i + "')\" class=\"dateChange\">" + date + "</h4>");
        	  	s.push("<ul id=\"list" + i + "\">");
        
        	  	while(bDrawMsgs && i < entryArray.length) {
        		  	date = GetElementText(entryArray[i], 'date');
        		  	if(lastDate != null && lastDate != date) {
        		  		bDrawMsgs = false;
        		    }
        		    else {
                        var num = GetElementText(entryArray[i], 'number'),
                            link = GetElementText(entryArray[i], 'link'),
                            title = GetElementText(entryArray[i], 'title'),
                            author = GetElementText(entryArray[i], 'author');
                      
                        // filter unwanted authors
                        if (/Starck|starck|Josephus|Luther Burbank|Harry Anno|Cary OKeejo|Ron Danner|Mark Pounders|John Laidlaw/.test(author)) {
                            i++; continue;
                        }
                  
                        // hide unwanted subjects here?
                        if (hideList[escape(title.toLowerCase())] == 1) {
                            i++; continue;              
                        }
                  
                        s.push("<li ");
                        s.push('id="' + link + '"');
                        s.push('class="');

                        if(checkCurrentMsg(link)) {
                            s.push(CURRENT_MSG_CLASS);
                            trackIt(link);
                        }
                        //else if (eval("gTracker._" + link.replace(/\./, '_')) == 1) s += 'readMsg';
                        else if (gTracker[gCurrentList][link] == 1) {
                            s.push(READ_MSG_CLASS);
                        }
                        
                        s.push('"');
                        s.push("><a title=\"click to read msg\" href=\"?" + gCurrentList + '.' + 
                        // link + "\" onClick=\"return YOJIMG.iBOB.readIt('"+ link + "', this)\">" + title + "</a> <span style=\"font-size: 0.7em\">" + author + " (" + date + ")</span></li>";             
                        //  IN DEVELOPMENT -- THREAD HIDING    
                        link + ".eml\" onClick=\"return YOJIMG.iBOB.readIt(event, '"+ link + "', this)\">" + title + "</a> <span>"
						  + ((author == 'Alex Wetmore') ? '<b class="admin">' + author + '</b>' : author)
						  + " (" + date + ") [<a onclick=\"YOJIMG.iBOB.hideThread('" + escape(title.toLowerCase()) + "');return false;\">hide</a>]</span></li>");
                        i++;
                    }
        		    lastDate = date;
        		};
        	  	s.push('</ul>');
        	};
    			
    		eMsgList.innerHTML = s.join('');		
    		gLastRead = $(gTracker[gCurrentList].last);
    		startClock();
        
            eMsgListAtags = eMsgList.getElementsByTagName('a');
          
    	}
    }

    function checkCurrentMsg(link) {
        if(getMetaCookie(gCurrentList, 'ir') == link) {
            return true;
        }
    	
        return false;
    }

    function drawMsg() {
    	
        var read = document.getElementById('msgRead'),
            reply = document.getElementById('msgReply'),
            entries,
            s = '',
    	    body,
    	    author,
            emailPtn1 = /\(AT\)/gi,
    	    emailPtn2 = /([\w-\.]+@[\w-\.]+\.\w{2,3})/i;
            
    	read.style.display = 'block';
    	reply.style.display = 'none';
    	
    	read.innerHTML = '<div style="text-align: center; padding-top: 160px">' + gLoadingImg + '</div>';

    	if (msgReadEvent.isComplete()) {

    		entries = msgReadEvent.HTTPObject.responseXML.getElementsByTagName('ibob_message');

    		if (!entries[0]) {
    			popError(read, 'Problem retrieving message');
    			return;
    		}

    		gAuthor = GetElementText(entries[0], 'author');
    		gSubject = GetElementText(entries[0], 'subject');
    		gBody = GetElementText(entries[0], 'body');

    		//hotlink URLs in message body
			body = gBody.replace(/(http\w*\:\/\/[\w\/\.#\-~\?=&%\:\(\)\+]+)\b/gi, '<a target="popnew" title="click to open link in new window" href="' + "$1" + '">' + "$1" + '</a>');
			body = body.replace(/><\/a>/, '</a>>'); // clean up trailing angle brackets
			body = body.replace(/>">/, '">'); // clean up trailing angle brackets
			body = body.replace(/=3D/g, '='); // clean up oddly-escaped equal signs in URLs
    		
    		// clean up line breaks in message body
    		body = body.replace(/=\n/gi, '');
            body = body.replace(/\n|\r|=0A/gi, '<br />');
    		
    		//hotlink email addresses
    		gAuthor = gAuthor.replace(emailPtn1, '@');
    		author = gAuthor.replace( emailPtn2, "<A title=\"click to email\" HREF=\"mailto:$1\">$1</A>");
    		body = body.replace(emailPtn1, '@');
    		body = body.replace(emailPtn2 , "<A title=\"click to email\"HREF=\"mailto:$1\">$1</A>");
    		
    		s += '<div id="msgHeader">';
    		s += '<div id="author">' + author + '</div>';
    		//s += '<div id="subject"><a title="click to show msg thread" href="#" onclick="return YOJIMG.iBOB.showThread(\'' + encodeURI(encodeURI(gSubject)) + '\')">' + gSubject + '</a></div>';
            s += '<div id="subject"><a title="click to show msg thread" href="#" onclick="return YOJIMG.iBOB.showThread(\'' + encodeURI(gSubject) + '\')">' + gSubject + '</a></div>';
    		s += '</div><div id="msgBody">' + body + '</div>';

    		document.getElementById('msgRead').innerHTML = s;
    						
    	}
    }


    function readIt(e, msgNum, obj) {

        e = e || window.event;
      
    	var pObj = obj.parentNode,
            msgUrl = 'http://search.bikelist.org/getmsg.asp?Filename=' + gCurrentList + '.' + msgNum + '.eml',
            msgReadEventUrl;
        
        // in development -- commenting out for now
        /*
            if (!pObj.flagged) {
                YOJIMG.utils.addClass(pObj,'flagged');
                pObj.flagged = true;
            }
            else {
                YOJIMG.utils.removeClass(pObj,'flagged');
                pObj.flagged = false;
            }
            
        */

    	if(/bikecurrent/.test(msgNum)){
    		msgUrl = 'http://topica.com' + msgNum.replace(/#/, '');
    	}
    	
    	msgReadEventUrl = 'data.php?type=msg&url=' + escape(msgUrl);
    	msgReadEvent = new AjaxEvent('read', msgReadEventUrl, drawMsg);
    	msgReadEvent.run();	

    	debugMsg("msgReadEventUrl: http://yojimg.net/bike/ibob/" + msgReadEventUrl);

    	hiLiteMsg(pObj);
        hiLiteSimMsgs(obj);
    	
    	//dim last read msg
    	if (pObj != gLastRead) {
    		dimReadMsg(gLastRead);
    	}
        
    	trackIt(msgNum);
        gLastRead = pObj;
    	storeLastReadMsg();
      
    	return false;
    }


    function updateListName(s) {
        //deactive for now
        return false;
        
        var ld = document.forms.listSelectorForm.list,
            ldo = ld.options,
            r = 0;
        
        for (var i=0; i < ldo.length; i++) {
            if (ldo[i].value == s) {
                r = i;
                break;
            }
        }
        ldo.selectedIndex = r;
        setListName(ld);
    }

    function loadExternalMsg() {
    	var q = document.location.search.split('?')[1],
            msgUrl,
            msgReadEventUrl,
            l;
        
        if (q) {
            l = q.split('.')[0];
            updateListName(l);
            msgUrl = 'http://search.bikelist.org/getmsg.asp?Filename=' + q;
            msgReadEventUrl = 'data.php?type=msg&url=' + escape(msgUrl);
            msgReadEvent = new AjaxEvent('read', msgReadEventUrl, drawMsg);
            msgReadEvent.run();	
            debugMsg("msgReadEventUrl: http://yojimg.net/bike/ibob/" + msgReadEventUrl);
            return true;
        }
        
        return false;
    }


    function hiLiteMsg(obj) {
    	if (obj){
            YOJIMG.utils.removeClass(obj, 'readMsg');
            YOJIMG.utils.addClass(obj, 'currentMsg');
    	}
    }

    function dimReadMsg(obj) {
    	if (obj){
            YOJIMG.utils.removeClass(obj, 'currentMsg');
            YOJIMG.utils.addClass(obj, 'readMsg');    	
        }
    }


    function doAction(action) {
    	var read = document.getElementById('msgRead'),
            reply = document.getElementById('msgReply'),
            mySubject = fixSubject(gSubject),
            myBody = ((gBody) ? gAuthor + " wrote:\n\n>>" + gBody + " <<" : ''),
            beta = document.forms.quickSearch.beta.checked;
    	
    	debugMsg("ACTION: " + action);
    	        
        switch (action) {
            case "CANCEL":
        		reply.src = '/bike/ibob/orig/url_handler.html'; 
        		read.style.display = 'block';
        		reply.style.display = 'none';
                break;
                
            case "SEARCH":
                if (!beta) {
                    reply.src = 'http://search.bikelist.org/';
                }
                else {
                    reply.src = 'http://search.bikelist.org/beta';
                }
                read.style.display = 'none';
                reply.style.display = 'block';
                break;
                
            case "QUICKSEARCH":
                if (!beta) {
                    var q = document.forms.quickSearch.SearchString.value;
                    if (!/\"|AND/.test(q)) {
                        q = q.replace(/\s+/g, ' AND ');
                    }
                    reply.src = 'http://search.bikelist.org/?SearchString=' + escape(q);
                }
                else {
                    reply.src = 'http://search.bikelist.org/beta/Default.aspx?q=' + escape(document.forms.quickSearch.SearchString.value);
                }
                read.style.display = 'none';
                reply.style.display = 'block';
                break;
                
            case "EXTERNAL":
                window.location = "mailto:" + gCurrentListEmail + "?subject=" + mySubject;
                break;
                
            case "GMAIL":       
                var newURL = "https://mail.google.com/mail?view=cm&tf=0" +
                (gCurrentListEmail ? "&to=" + gCurrentListEmail : "") +
                (mySubject ? "&su=" + encodeURIComponent(mySubject) : "") +
                (myBody ? "&body=" + encodeURIComponent(myBody) : "");
                window.open(newURL, 'iBobGmailWin');
                break;
                
        	default:
                reply.src = '/bike/ibob/orig/url_handler.html'; 
                mySubject = '';
                var myBody = '';
                var myNew = '1';
            
                if (action != 'NEW' && gSubject){
                    mySubject = fixSubject(gSubject);
                    myBody = gAuthor + " wrote:\n\n>>" + gBody + " <<";
                    myNew = 0;
                }

                var rfrm = document.forms.rply;
    		
        		rfrm.subject.value = mySubject;
        		rfrm.message.value = myBody;	
        		rfrm.isnew.value = myNew;
        		rfrm.to.value = gCurrentListEmail;
                rfrm.author.value = gAuthor;

                read.style.display = 'none';
                reply.style.display = 'block';

                //rfrm.submit();
                window.setTimeout(function(){rfrm.submit();}, 200);
        }
    }

    function showThread(subject) {
    	var read = document.getElementById('msgRead'),
            reply = document.getElementById('msgReply');	

        subject = decodeURI(subject);
    	
    	//example URL -- http://search.bikelist.org/query.asp?SearchString=%22Boston+Bike+Show+this+weekend%22&SearchPrefix=%40msgsubject&SortBy=MsgDate%5Ba%5D
    	
    	reply.src = 'http://search.bikelist.org/query.asp?SearchString=%22' + escape(subject) + '%22&SearchPrefix=%40msgsubject&SortBy=MsgDate%5Ba%5D';	
    	read.style.display = 'none';
    	reply.style.display = 'block';
      
        //msgListEvent.url = 'data.php?type=list&url=' + escape('http://search.bikelist.org/index.asp?SearchString=%22' + escape(subject) + '%22&SearchPrefix=%40msgsubject&SortBy=MsgDate%5Ba%5D');
        //msgListEvent.run();
        
        return false;
      
    }

    function setSelectedListOption() {
    	var opts = document.forms.listSelectorForm.list.options;
    	
    	for (var o = 0; o < opts.length; o++) {
    		if (opts[o].value ==  gCurrentList){
    			opts[o].selected = true;
    			return;
    		}
    	}
    }

    function fixSubject(subject) {
    	if (subject && !subject.match(/^RE:/i))
    		subject = "RE: " + subject;
    	return (subject);
    }

    function toggleReverse() {
    	if (gReverseSort)
    		gReverseSort = false;
    	else
    		gReverseSort = true;

    	YOJIMG.iBOB.msgListEvent.run();
    }

    function sortBy(sel) {

    	gSortBy = sel.options[sel.options.selectedIndex].value;

    	debugMsg(gSortBy);
    		
    	setMsgListEventUrl();
    	YOJIMG.iBOB.msgListEvent.run();
    }


    function suggestSearch(input) {
    	//var timer = window.setTimeout('suggestSearchHandler()', 1000);
    }

    function suggestSearchHandler() {
    	var input = document.forms.quickSearch.SearchString.value;
    	//alert(input);
    	if (input && input.length > 2 && (!quickSearchEvent || quickSearchEvent.isComplete())) {
    		var quickSearchEventUrl = 'data.php?type=list&url=' + escape('http://search.bikelist.org/index.asp?SearchString=' + escape(input) + '&RecordsPerPage=10');
    		quickSearchEvent = new AjaxEvent('suggest', quickSearchEventUrl, drawQuickSearchResults);
    		quickSearchEvent.run();		
    	}
    }

    function drawQuickSearchResults() {
    	if (quickSearchEvent.isComplete()) {
        
    		var entries = quickSearchEvent.HTTPObject.responseXML.getElementsByTagName('ibob_message'),
                bFound = false,
                entryArray = new Array(),
                sel,
                title,
                opt,
                txtNd;
                
    		for (var i = 0; i < entries.length; i++) {
    			entryArray.push(entries[i]);
    		}

    		sel = document.createElement('select');
    		sel.name = 'searchString2';
    		for (var i = 0; i < entryArray.length; i++) {
    			title = GetElementText(entryArray[i], 'title');
    			if (title) {
    				bFound = true;
    				opt = document.createElement('option');
    				opt.value = title;
    				txtNd = document.createTextNode(title);
    				opt.appendChild(txtNd);
    				sel.appendChild(opt); 
    			}
    		}
    			
    		if (bFound) {
    			if (document.forms.quickSearch.searchString2) {
    				document.forms.quickSearch.replaceChild(sel, document.forms.quickSearch.searchString2);
                }
    			else {
    				document.forms.quickSearch.appendChild(sel);
                }
                
    			sel.onchange = "document.forms.quickSearch.submit();";

    		}
    	}
    }


    function popError(target, msg) {
    	if (target)
    		target.innerHTML = '<span class="error">' + msg + '</span>';
    	else if (msg)
    		alert('ERROR: ' + msg);
    	else
    		alert('ERROR: Problem getting data from the server');

    	return true;
    }

    function localOnLoad() {
        
        var YIBOB = YOJIMG.iBOB,
          lastBtn = $('findLastRead');
        
    	setLastSelectedList();

        initTracking();

        YIBOB.msgListEvent = new AjaxEvent('list', '', drawList);
        
        if (gCurrentListURL) {
            setMsgListEventUrl(gCurrentListURL);
        }
        else {
          //setMsgListEventUrl('http://search.bikelist.org/index.asp?SearchString=&FMMod=' + gDateSpan + '&FMModDate=&SortBy=MsgDate%5Bd%5D&Scope=' + gCurrentList + '&RecordsPerPage=' + gMax);
          setMsgListEventUrl();
        }
     
    	YIBOB.msgListEvent.run();

    	loadExternalMsg();

    	lastBtn.onclick = scrollToLastReadMsg;
        eMsgList = $('msgList');
        
      
    }
    addOnLoadEvent(localOnLoad);


    function addSearchEnginePlugin(engineURL)
    {
        try {
    		window.external.AddSearchProvider(engineURL);
        } catch(e) {
            alert("Sorry, your browser doesn't seem to support dynamic search-engine-plugin installation in Opensearch format.\nTry adding this plugin using your browser's search menu options.\nSee http://opensearch.org for more information.");
    	} 
    	return false;
    }

    function trackIt(num){  
    	gTracker[gCurrentList][num] = 1;
    	gTracker[gCurrentList].last = num;
    }


    function storeLastReadMsg(){
    	if (gTracker[gCurrentList].last) {
    		setMetaCookie(gCurrentList, 'ir', gTracker[gCurrentList].last);
        }
    }


    function hideThread(title) {
    	hideList[title] = 1;
    	drawList();
    }

    var recordEvent;

    function recordLastReadMsg(list, msgNum) {
      if (list && msgNum) {
        recordEvent = new AjaxEvent('record','store.php?list=' + list + '&num=' + msgNum, recordDebug);
        recordEvent.run();
      }
      
    }

    function recordDebug(){
        if (recordEvent.isComplete()) {
            alert(GetElementText(recordEvent.HTTPObject.responseXML, 'result'));
        }
    }



    function scrollToLastReadMsg() {
	  var lastnum;
	  
	  gLastRead.getElementsByTagName('a')[0].focus();

	  /*	  
	  if(!gLastRead.getElementsByTagName('a')[0].focus()) {
    	lastnum = gTracker[gCurrentList].last;
    	if (lastnum && lastnum != 'undefined') {
    		window.location.href = '#' + lastnum;	
    	}        
	  }
	  */
    }


    function hiLiteSimMsgs(obj) {
        if (obj){
            var ptn,
                titl = obj.innerHTML,
                eMsgListAtagsLen = eMsgListAtags.length,
                yutils = YOJIMG.utils;
                
            titl = titl.replace(/\[\S+?\]/ig, "");
            titl = titl.replace(/RE:\s*/ig, "");
            titl = titl.replace(/\s{2,}?/ig, " ");
        
        
            try{
                ptn = new RegExp(titl);
            }
            catch(e){
                ptn = null;
            }
        
            for (var i = 0; i < eMsgListAtagsLen; i=i+1) {
                if (ptn && ptn.test(eMsgListAtags[i].innerHTML)) {
                    yutils.addClass(eMsgListAtags[i].parentNode, THREADED_MSG_CLASS);    
                }
                else {
                    debugMsg(eMsgListAtags[i].innerHTML);
                    yutils.removeClass(eMsgListAtags[i].parentNode, THREADED_MSG_CLASS);    
                }
            }

            ptn = null;
    	}
    }


    function debugCheck() {
    	if(/debug=1/.test(document.location.href)){
        return true;
      }
        
    	return false;
    }

    function debugMsg(s) {
        if(debugCheck() && console){
            console.log(s);
        }
    }

    function storeSelectedList() {
    	if (gCurrentList) {
    		setMetaCookie('lastlist', 'ir', gCurrentList);
        }
    }

    function setLastSelectedList() {
        var lastList = getMetaCookie('lastlist', 'ir');
        if (lastList) {
            var options = document.listSelectorForm.list.options;
            var ol = options.length;
            for (var i=0; i < ol; i++) {
                if (options[i].value === lastList) {
                    options.selectedIndex = i;
                    break;
                }
            }
            
            gCurrentList = options[i].value;
            gCurrentListEmail = options[i].getAttribute('addr');
            gCurrentListURL = options[i].getAttribute('url');
        }
        else {
            setSelectedListOption();
        }
        

    }

    return({
        updateClock: updateClock,
        msgListEvent: msgListEvent,
        readIt: readIt,
        showThread: showThread,
        hideThread: hideThread,
        doAction: doAction,
        setListName: setListName,
        setDateSpan: setDateSpan,
        suggestSearch: suggestSearch,
        toggleReverse: toggleReverse,
        sortBy: sortBy,
		addSearchEnginePlugin: addSearchEnginePlugin
    });

})();
