//2010.2.11 callback for keepon search rendering result in sidebar, spit off from search class default callback
function searchKeeponComplete()
{   
	var contentDiv = document.getElementById(this.elemid);
    	contentDiv.innerHTML = '';

    	var results = this.so.results;
    	if(results.length == 0)
    	{
    		contentDiv.innerHTML = "";
    		return;
   	 }
    
    	var strResult = "<div style='font-size: 13px;line-height:20pt;padding:2px;BORDER-TOP: #506620 1px dotted;margin-top:5px;margin-bottom:5px;'>";
	strResult +="<center><span style='font-size: 15px;line-height: 16pt;'>"+(this.st)+" "+("<a href='javascript:void(0)'><small onclick='gajaxsearchglobal(\""+(this.q)+"\", "+((this.site==null)? null : "\""+(this.site)+"\"")+")'>(放大)</small></a>")+"</span></center>";
       	
    	var limittitle = (this.dt=="narrow") ? 20 : 30;
    	var limitdes = (this.dt=="narrow") ? 100 : 150;
    
    	var postdesc, posttitle, shortdesc, shorttitle="";
    	
    	var cursor = this.so.cursor;
  	var curPage = cursor.currentPageIndex;
  		    
    	for (var i = 0; i < results.length; i++) 
    	{
      		var result = results[i];

      		postdesc = result.content.replace(/<.+?>|(\s*)/gim,'');
      		posttitle = result.title.replace(/<.+?>|\s*/gim,'');
      		posttitle = posttitle.replace(/-文章編號*#\d\d\d\d\d/,'');
      		posttitle = posttitle.replace(/-文章編號.*主題:/,'');
      				      			
      		var startpos = posttitle.indexOf("登山知識庫");
      		if(startpos != -1)
        	posttitle = posttitle.substr(startpos+6);
           				
        	startpos = posttitle.indexOf("-登山補給站");
      		if(startpos != -1)
        		posttitle = posttitle.substr(0, startpos);	
            
      		shorttitle = posttitle;
      		shortdesc = postdesc;
		
      		if(shortdesc.length > limitdes)
			shortdesc = shortdesc.substr(0, limitdes)+"..";
		
      		if(shorttitle.length > limittitle)
			shorttitle = shorttitle.substr(0, limittitle)+"..";

      		strResult+=("<div>"+(curPage*(this.resultSetSize) + i+1)+".<a href='"+unescape(result.url)+"' title='"+posttitle+"' target=_new>"+shorttitle+"</a></div>");
      		strResult+=("<div class='snippet' style='margin-left:5px' title='"+postdesc+"'>"+shortdesc+"</div>");      
    	}
    	strResult += "</div>";
    	
    	contentDiv.innerHTML = strResult;	  
    	// Now add the paging links so the user can see more results.
    	if(results.length > 0)
    		this.addPaginationLinks();
}

//2009.10.26, 11/5 callback for fetch snippet complete
function fetchSnippetComplete(posturl, bShowResult) 
{
      var results = this.so.results;
      
      if (results && results.length == 0)
      {
      		xajax_setArticleSnippetStatusNotFound(posturl);
      		if(bShowResult)
      			alert("not found");
          	return; 
      }
              
      var result = results[0];
      xajax_setArticleSnippetManual(posturl, result.content, bShowResult);//2009.10.27
}

function printmenu(jid)
{
	var menustr = "<a href='javascript:void(0)'><img src='/images/b_props.png' onclick=\"sm(event,"+jid+");onAccessJournal("+jid+");\" title='遊記選單' border=0 align=base></a>";
	return menustr;	
}

function snippetmorestring(postid)
{
	var strmore = " <a href='/page_"+postid+"'><span class='more'>&nbsp;&nbsp;關於...&nbsp;&nbsp;</span></a>";
	return strmore;
}

//2009.11.4 callback for search rendering result in main content
function defaultSearchComplete()
{   
    var contentDiv = document.getElementById(this.elemid);
   
    // Loop through our results, printing them to the page.
    var results = this.so.results;
       
    var strResult = (results.length == 0) ? '沒有結果' : '';
    if(results.length >0)
    {
        var cursor = this.so.cursor;
    	var curPage = cursor.currentPageIndex;
      	var result;
      	var separator="&";
      	      
   	for (var i = 0; i < results.length; i++) 
    	{
      		result = results[i];
      		url = unescape(result.url);
      		jidpos = url.indexOf("?id=");
      		separator="&";
      		
      		//try another way 2010.5.20
      		if(jidpos==-1)
      		{
      			jidpos = url.indexOf("/id_");
      			if(jidpos!=-1)
      				separator="_";
      		}
      		
      		strResult+=("<div style='font-size:15px;margin-bottom:5px;'>");
      		strResult+=(curPage*(this.resultSetSize) + i+1)+". ";
      		if(jidpos !=-1)
		{
			qsar = url.substr(jidpos+4).split(separator);
			jid = qsar[0];
       			       			
       			strResult+=printmenu(jid)+"<a href='http://www.waytogo.cc/id_"+jid+"_"+(this.q)+"' target=_new>"+result.title+"</a></div>";
      			strResult+=("<div style='margin-left:7px;margin-bottom:13px;'><span class='snippeta' id='s-"+jid+"'>"+result.content+"</span><span id='sm-"+jid+"'>"+snippetmorestring(jid)+"</span></div>");      
      		}
      		else
      		{
      			strResult+="<a href='"+url+"' target=_new>"+result.title+"</a></div>";
	      		strResult+=("<div style='margin-left:7px;margin-bottom:13px;' class='snippeta'>"+result.content+"</div>");      
    		}
    	}
    }
       
    contentDiv.innerHTML = strResult;
    		  
    // Now add the paging links so the user can see more results.
    if(results.length > 0)
    	this.addPaginationLinks();
}

//2010.4.2 simple search complete for display in widget
function simpleSearchComplete(bShowDesc)
{   
    var bShowDesc = bShowDesc || false;	
	
    var contentDiv = document.getElementById(this.elemid);
   
    // Loop through our results, printing them to the page.
    var results = this.so.results;
       
    var strResult = (results.length == 0) ? '沒有結果' : '';
    if(results.length >0)
    {
        var limittitle = (this.dt=="narrow") ? 24 : 30;
    	var limitdes = (this.dt=="narrow") ? 45 : 100;
    
    	var posttitle, shorttitle="";
    	
    	var cursor = this.so.cursor;
  	var curPage = cursor.currentPageIndex;
  	
  	strResult += "<table style='font-size:13px;line-height:16pt;'>";
  		    
    	for (var i = 0; i < results.length; i++) 
    	{
      		var result = results[i];

		postdesc = result.content.replace(/<.+?>|(\s*)/gim,'');
      		posttitle = result.title.replace(/<.+?>|\s*/gim,'');
      	     		            
      		shorttitle = posttitle;
      		shortdesc = postdesc;
		
      		if(shortdesc.length > limitdes)
			shortdesc = shortdesc.substr(0, limitdes)+"..";
		
      		if(shorttitle.length > limittitle)
			shorttitle = shorttitle.substr(0, limittitle)+"..";

		strResult+=("<tr><td valign=top>"+(curPage*(this.resultSetSize) + i+1)+".</td><td valign=top><a href='"+unescape(result.url)+"' title='"+posttitle+"' target=_blank>"+shorttitle+"</a></td></tr>");
      		if(bShowDesc)
      			strResult+=("<tr><td></td><td class='snippet' style='margin-left:5px' title='"+postdesc+"'>"+shortdesc+"</td></tr>");      
    	}
    	
    	strResult += "</table>";
    }
       
    contentDiv.innerHTML = strResult;
    		  
    // Now add the paging links so the user can see more results.
    if(results.length > 0)
    	this.addPaginationLinks();
}

function gasoGotoPage(soid, page)
{
	eval(soid).gotoPage(page);
}

function CGASearch(id, site, rsSize, elemid, displaystyle, searchtitle, cbCompletefuncname) 
{
	this.id = id;
	this.dt = displaystyle || "";
	this.st = searchtitle || "";
	this.elemid = elemid;
	this.site = site;
	this.resultSetSize = 4;
	this.cbCompletefuncname = cbCompletefuncname || "defaultSearchComplete";
	
	this.q="";
		
	switch(rsSize)
	{
		case google.search.Search.SMALL_RESULTSET:
			this.resultSetSize = 4;
			break;
		case google.search.Search.LARGE_RESULTSET:
			this.resultSetSize = 8;
			break;
		case google.search.Search.FILTERED_CSE_RESULTSET:
			this.resultSetSize = 10;
			break;	
		default:
			break;		
	}
	
	this.so =  new google.search.WebSearch();
	
	this.so.setResultSetSize(rsSize);
	this.so.setSiteRestriction(this.site);
	
	this.setResultSetSize = function(rsSize)
	{
		this.resultSetSize = rsSize;
		this.so.setResultSetSize(rsSize);
	}
	
	this.setSite = function(newsite)
	{
		this.site = newsite;
		this.so.setSiteRestriction(this.site);
	}	
	
	this.execute = function(w)
	{
		this.q = w;
		this.so.execute(w);
	}
	
	this.gotoPage = function(page)
	{
		this.so.gotoPage(page);
	}	
	
	
	this.setcbCompletefuncname = function(cbFuncName, arParams)
	{
		var params = arParams || null;
		this.cbCompletefuncname = cbFuncName;
		this.so.setSearchCompleteCallback(this, eval(this.cbCompletefuncname), params);
	}
	this.setcbCompletefuncname(this.cbCompletefuncname, null);
	
	this.addPaginationLinks = function() 
	{
 		var cursor = this.so.cursor;
  		var curPage = cursor.currentPageIndex; // check what page the app is on
  		var pagesDiv = document.createElement('div');
  		pagesDiv.setAttribute("align", "center");
  		pagesDiv.setAttribute("style", "font-size:13px;font-family:arial;");
  		var strPages = "";
  
  		for (var i = 0; i < cursor.pages.length; i++) 
  		{
    			var page = cursor.pages[i];
    			if (curPage == i) 
    				strPages += ("&nbsp;<b style='font-weight:bold'>" + page.label + "</b>&nbsp;"); 
    			else 
   				strPages += ("&nbsp;<a href=javascript:gasoGotoPage('"+(this.id)+"',"+i+")><span style='text-decoration:underline'>"+ page.label + "</span></a>&nbsp;");
      		}
  		
  		pagesDiv.innerHTML = strPages;

  		var contentDiv = document.getElementById(this.elemid);
  		contentDiv.appendChild(pagesDiv);
	}	
}