/* File: Get-search-terms.js

Author: Tom Dahm
Source: BridgePose Search Engine Marketing (http://www.bridgepose.com)
Requires: pcpcookielib.js

Script to parse document.referrer into a series of search engine keywords. 

(C) Tom Dahm, 2006.  Feel free to use this code, but please leave this comment block in. This code must not be sold, either alone or as part of an a
pplication, without the consent of the author.

VERSION 0.1

*/

function ParseReferrer(referrer) {
   regexStrip = /\+/g

   // Check tagged source 
   source = /source=/

   if (referrer.search(source) != -1) {
      querymatch = new RegExp(/source=([^$]+)$/)

      if ((matchArray = referrer.match(querymatch))) {
         result = "Source: " + matchArray[1]
         return(result.replace(regexStrip," "))
      } else {
         // no match
         return (referrer)
      }
   }

   // Check for Google Search
   googlesearch = /google.[^\/]+\/search/

   if (referrer.search(googlesearch) != -1) {
      querymatch = new RegExp(/q=([^&]+)/)

      if ((matchArray = referrer.match(querymatch))) {
         result = "Google Search: " + matchArray[1]
         return(result.replace(regexStrip," "))
      } else {
         // no match
         return (referrer)
      }
   }

   // Check for Yahoo Search 
   yahoosearch = /yahoo.[^\/]+\/search/

   if (referrer.search(yahoosearch) != -1) {
      querymatch = new RegExp(/p=([^&]+)/)

      if ((matchArray = referrer.match(querymatch))) {
         result = "Yahoo Search: " + matchArray[1]
         return(result.replace(regexStrip," "))
      } else {
         // no match
         return (referrer)
      }
   }

   // Check for MSN Search 
   msnsearch = /search.msn.[^\/]+\/results.aspx/

   if (referrer.search(msnsearch) != -1) {
      querymatch = new RegExp(/q=([^&]+)/)

      if ((matchArray = referrer.match(querymatch))) {
         result = "MSN Search: " + matchArray[1]
         return(result.replace(regexStrip," "))
      } else {
         // no match
         return (referrer)
      }
   }

   // Check for AOL Search 
   aolsearch = /aolsearch.aol.[^\/]+\/web/

   if (referrer.search(aolsearch) != -1) {
      querymatch = new RegExp(/query=([^&]+)/)

      if ((matchArray = referrer.match(querymatch))) {
         result = "AOL Search: " + matchArray[1]
         return(result.replace(regexStrip," "))
      } else {
         // no match
         return (referrer)
      }
   }

   // Google AdSense 
   adsense = /googlesyndication.[^\/]+\/pagead/

   if (referrer.search(adsense) != -1) {
      querymatch = new RegExp(/url=([^&]+)/)

      if ((matchArray = referrer.match(querymatch))) {
         result = "Google AdSense: " + matchArray[1]
         return(result.replace(regexStrip," "))
      } else {
         // no match
         return (referrer)
      }
   }

/*
TODO: Parse other search referrers
   Yahoo Directory
     http://dir.yahoo.com/Regional/Countries/Honduras/Islands/Roatan/Real_Estate/

   Ask
     http://uk.ask.com/web?o=312&dm=all&qsrc=6&l=dir&q=Honduras+Homes+for+Sale
*/

}

