/* ------------------------------------------ */   
/* Project Name - DianeMcCabe - Irish Artist  */
/* Created by Diane McCabe/Purple Lake Design */
/* ------------------------------------------ */   

/*
* SearchControl Script.  Utilizes google 'raw searcher'.
* 
* In addition to this script the caller must include:
*  <script src="http://www.google.com/jsapi?key=ABQIAAAAYyzEg0GDoC9Yacv9XgvbthQa0xELyNA7akWWP-4NygMzMr06YBTf_F5LHyInP3nQhfr5DGbdHIG2VA" type="text/javascript"></script>
* 
*/

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}

/**
 * Truncate a string to the given length, breaking at word boundaries and adding an elipsis
 * @param string str String to be truncated
 * @param integer limit Max length of the string
 * @return string
 */
function cutOffString(str, limit) {
	var bits, i;
	if (STR !== typeof str) {
		return '';
	}
	bits = str.split('');
	if (bits.length > limit) {
		for (i = bits.length - 1; i > -1; --i) {
			if (i > limit) {
				bits.length = i;
			}
			else if (' ' === bits[i]) {
				bits.length = i;
				break;
			}
		}
		bits.push('...');
	}
	return bits.join('');
}

google.load('search', '1');


var webSearch;
var gSearch;


function addPaginationLinks() {
// The cursor object has all things to do with pagination
  var cursor = webSearch.cursor;
  var curPage = cursor.currentPageIndex; // check what page the app is on
  var pagesDiv = document.createElement('div');
 
  //var temp1 = document.createTextNode('>>' + cursor.pages.length + "<<<<"); 
  //pagesDiv.appendChild(temp1);

 
  if (cursor.pages.length > 1) {
  //  var prevDirection = document.createTextNode('<<'); 
  //  pagesDiv.appendChild(prevDirection);
 
 
    if  ( curPage > 0 ) {
        var page = cursor.pages[curPage -1];
        var link = document.createElement('a');
        link.href = 'javascript:webSearch.gotoPage('+ (curPage -1) +');';
  //      link.innerHTML = page.label;
        link.innerHTML = '<< Page ' + (curPage + 1) + ' ' ;
        link.style.marginRight = '2px';
        pagesDiv.appendChild(link);  
    }
    else  {
        var prevPage = document.createTextNode('<< Page ' + (curPage + 1) + ' ' ); 
        pagesDiv.appendChild(prevPage);
    }


    if  ( curPage <  cursor.pages.length - 1) {
        var page = cursor.pages[curPage +1];
        var link = document.createElement('a');
        link.href = 'javascript:webSearch.gotoPage('+ (curPage + 1) +');';
  //      link.innerHTML = page.label;
        link.innerHTML = '>>';
        link.style.marginRight = '2px';
        pagesDiv.appendChild(link);  
    }
    else  {
        var nextPage = document.createTextNode('>>'); 
        pagesDiv.appendChild(nextPage);
    }

  }
  
  var contentDiv = document.getElementById('searchContent');
  contentDiv.insertBefore(pagesDiv, contentDiv.firstChild); 
}


function searchSite() {
  // Check that we got results
  var contentDiv = document.getElementById('searchContent'); 
  var queryString = document.getElementById('q'); 
  
  
  
  if (webSearch.results && webSearch.results.length > 0) {
    
      // Loop through our results, printing them to the page.
      var results = webSearch.results;
 
     // Clear Content Div
     // contentDiv.innerHTML = "<h3>Search Results for \"" + queryString.value + "\"</h3></br /><br />\n";; 
     contentDiv.innerHTML = "<br />";   
      
      for (var i = 0; i < results.length; i++) {
         var result = results[i];
         var trimmedContent = rtrim(result.content);
         var fullContentSplitResult = trimmedContent.split("·");
         var contentSplitResult = "" ;
         
         //if  (fullContentSplitResult.length == 1) {
          //    contentSplitResult =  "";
         //}
         //else
            contentSplitResult = fullContentSplitResult[fullContentSplitResult.length-1].split(".");
         //var contentSplitResult = trimmedContent.split(".");
         //var contentSplitResult = result.content.split(".");
         var displayContent =  result.content ;
         var resultNum = i + 1;
         
          
         var  useableTokens =  contentSplitResult.length ;
         
         for (j= contentSplitResult.length-1; j>0; j--) {
         
              var tmpStr =  rtrim(contentSplitResult[j]);
              if (tmpStr.length > 4)
                  break ;
              
              useableTokens -- ;
              
         }
      

      
         if (useableTokens > 2) {
             displayContent =  contentSplitResult[useableTokens -2]
                            +  contentSplitResult[useableTokens -1] ;
          
         }
        
         
         //for (j=0; j < useableTokens; j++) {
          //   tmpDisplay +=  j + ': ' + '===' + contentSplitResult[j].length + '===' + contentSplitResult[j] + '===' + '<br />'; 
         //}

         
          var resContainer = document.createElement('div');
          resContainer.className='gw1';
          
          var title = document.createElement('div'); 
          title.className='gw2'; 
          
          if (displayContent.length > 160) {
              var smallBits =  displayContent.split("") ;
              var newDisplayContent = " " ;
              var notStartOnSpace = 1 ;
              for (j=displayContent.length - 160; j< displayContent.length; j ++) {
              
                  if (notStartOnSpace) {
                  
                    if  (smallBits[j] == ' ') {
                         notStartOnSpace = 0 ;
                    }
                        
                  }
                  else
                    newDisplayContent += smallBits[j] ;
              }
              
              displayContent =  newDisplayContent ;
          }
               
          
          title.innerHTML='<b>' + resultNum + '</b>:<a href="' + result.unescapedUrl  + '">' + displayContent + '</a>' + '<br />'; 
          
          
          //title.innerHTML='<b>' + resultNum + '</b>:<a href="' + result.unescapedUrl  + '">' + tmpDisplay  + displayContent + '</a>' + '<br />'; 

          var content = document.createElement('div'); 
          content.className='gw3'; 
          //content.innerHTML = displayContent + '<br/><br/>'; 
          content.innerHTML =  '<br/>';  
           
          //var newImg = document.createElement('img');
          // There is also a result.url property which has the escaped version
          //newImg.src = result.tbUrl;
           
          resContainer.appendChild(title);
          resContainer.appendChild(content); 
          //imgContainer.appendChild(newImg);
          
          // Put our title + image in the content
          contentDiv.appendChild(resContainer);
      
      }
      
      // Now add the paging links so the user can see more results.
      addPaginationLinks(webSearch);
   
      
      var headingDiv = document.createElement('div');
      headingDiv.innerHTML ="<h3>Search Results for \"" + queryString.value + "\"</h3></br /><br />\n"; 
      contentDiv.insertBefore(headingDiv, contentDiv.firstChild); 

      
      // setResultSetSize
      
      var b= gSearch.getBranding(); 
      contentDiv.insertBefore(b, contentDiv.firstChild); 
  } 
  else {
    contentDiv.innerHTML = "<p><b>No results for \"" + queryString.value  + "\"</b><br />\n";
  
  }
}



function getSearchResults() {

  gSearch= google.search.Search;
  webSearch = new google.search.WebSearch(); 
  webSearch.setSiteRestriction('www.dianemccabe.com/loadartportfolio.asp');
  webSearch.setResultSetSize(gSearch.LARGE_RESULTSET); 
  //gSearch.setNoResultsString(gSearch.NO_RESULTS_DEFAULT_STRING);
  
  webSearch.setSearchCompleteCallback(this, searchSite, null);
  var queryString = document.getElementById("q");
  
  webSearch.execute(queryString.value); 
}

