//requires jQuery import
//requires querystring.js import
//requires UserCookieTracker.js
//SF list values
var WEB_DIRECT = 'Web Direct';
var ORGANIC = 'Organic';
var WEB_CORPORATE = 'Web-Corporate';
var GOOGLE_ADWORDS = 'Google AdWords';
var WEB_REFERRAL = 'Web Referral';
//Cookie storage
var C_REFERRER = 'referrer';
var C_LEAD_SRC = 'leadsource';
var C_LEAD_SRC_DETAIL = 'leadsourcedetail';
var C_PLACEMENT = 'placement';

var REFERRER = null;
var PLACEMENT = null;
var FORM_PAGE = null;
var SEARCH_TYPE = WEB_CORPORATE; //Lead Source and Search Type are same value, different SF fields
var LEAD_SOURCE = WEB_CORPORATE;
var LEAD_SOURCE_DETAIL = '';
var SEARCH_TERMS = '';
var UTMCMD = 'utmcmd';
var UTMCTR = 'utmctr';
var UTMCSR = 'utmcsr';
var ADWORD = 'adword';
var GADSERVER = 'googleads';
var C2 = null;
var CID = null;
var KK = '';
var Q = '';
var LS = '';
var LSD = '';
var GATRM = '';
var GASCRC = '';


  FORM_PAGE = document.URL;
  var q = new Querystring();
  C2 = q.get("campaignID2");
  CID = q.get("cid");
  KK = q.get("_kk");
  Q = q.get("q");
  LS = q.get("ls");
  LSD = q.get("lsd");
  GATRM = q.get("utm_term");
  GASCRC = q.get("utm_source");
  
  var ck = GetCookie('__utmz');  
  SetReferrer();
  SetLeadSourceDetail();
  SetSearchTerms(ck);//check first
  SetSearchType(ck);
  SetPlacement(REFERRER);
  
  function SetReferrer(){
    if(Get_Cookie(C_REFERRER)){
        REFERRER = Get_Cookie(C_REFERRER);
    } else if(document.referrer){
        REFERRER = document.referrer;
    } 
    if(REFERRER){
        SaveValue(REFERRER, C_REFERRER);
    } 
  }

  function SetLeadSourceDetail(){
    if(LSD){
        LEAD_SOURCE_DETAIL = LSD;
    } else if(Get_Cookie(C_LEAD_SRC_DETAIL)){
        LEAD_SOURCE_DETAIL = Get_Cookie(C_LEAD_SRC_DETAIL);
    }  //some default value?
    if(LEAD_SOURCE_DETAIL){
        SaveValue(LEAD_SOURCE_DETAIL, C_LEAD_SRC_DETAIL);
    }
  }

  function SetPlacement(ref){
  
    if(Get_Cookie(C_PLACEMENT)){
        PLACEMENT = Get_Cookie(C_PLACEMENT);
    } else if(ref && ref.indexOf(GADSERVER) == -1){
        if(ref.indexOf('?') != -1) {
	     PLACEMENT = ref.substring(0, ref.indexOf('?'));
        } else {
	     PLACEMENT = ref;
	}   
        PLACEMENT = PLACEMENT.substring(0, PLACEMENT.lastIndexOf('/'));
    } else {

       var url = decodeURIComponent(REFERRER);
       var pArray = new Array();
       pArray = url.split('&');
       for(var i = 0; i < pArray.length; i++){
            var p = new Array();
            p = pArray[i].split('=');
            if(p[0] == 'p'){
                PLACEMENT = p[1];
		        break;
            }
       }
    }
 
    if(! PLACEMENT || PLACEMENT == ""){
	PLACEMENT = 'Placement undetermined';
    }
    
    SaveValue(PLACEMENT, C_PLACEMENT);
  }

  
  function GetCookie(cookieName){
   	var cookieArray = new Array();
  	cookieArray = document.cookie.split(';');
        for(var i = 0; i < cookieArray.length; i++){
		var c = jQuery.trim(cookieArray[i].substring(0, cookieArray[i].indexOf('=') ) );
                if(c == jQuery.trim(cookieName) ){
                     return jQuery.trim(cookieArray[i]);
                 }
        }

  }
  
 
  function SetSearchType(utmzCookie){
    if(LS) {
    	LEAD_SOURCE = LS;
	} else if (GASCRC){
		if( contains(GASCRC, 'adword')){
			LEAD_SOURCE = GOOGLE_ADWORDS;
		} else if (contains(GASCRC, 'direct')){
			LEAD_SOURCE = WEB_DIRECT;        		
		} else if (contains(GASCRC, 'organic')){
			LEAD_SOURCE = ORGANIC;    		
		} else if (contains(GASCRC, 'referral') ){
			LEAD_SOURCE = WEB_REFERRAL;
		}		
    } else if(Get_Cookie(C_LEAD_SRC)){
		LEAD_SOURCE = Get_Cookie(C_LEAD_SRC);
	} else {
       var ldsrc = GetSearchTypeFromCookie(utmzCookie);
       if(ldsrc) {
    	   LEAD_SOURCE = ldsrc;
       } else {
    	   if( ! contains(SEARCH_TERMS, 'NA / Undetermined') ) LEAD_SOURCE = GOOGLE_ADWORDS;
       }
    } 
    //Dupe LEAD_SOURCE to SEARCH_TYPE for now
    SEARCH_TYPE = LEAD_SOURCE;
	SaveValue(LEAD_SOURCE, C_LEAD_SRC); 
  }
  
 
  function GetSearchTypeFromCookie(utmzCookie){
    var searchType = null;
    if(utmzCookie){
    	var cmd = new Array();
    	utmzCookie = utmzCookie.substring(7, (utmzCookie.length) );
    	cmd = utmzCookie.split('|');
    	for(var i = 0; i < cmd.length; i++){
        	var c = jQuery.trim(cmd[i].substring(0, cmd[i].indexOf('=') ) );
        	if(c == UTMCMD){
            	var s = decodeURIComponent(GetCookieValue(cmd[i]));
            	if( contains(s, 'adword')){
            		searchType = GOOGLE_ADWORDS;
            		break;
            	} else if(contains(s, 'direct')){
            		searchType = WEB_DIRECT;
            		break;            		
            	} else if (contains(s, 'organic')){
            		searchType = ORGANIC;
            		break;            		
            	} else if (contains(s, 'referral') ){
            		searchType = WEB_REFERRAL;
            		break;
            	}
			}
        }
    }
    return searchType;
  }
  
  function contains(str, srch){
    str = str.toLowerCase();
	srch = srch.toLowerCase();
    if(str.indexOf(srch) != -1)
        return true;
    return false;
  }

  function SetSearchTerms(utmzCookie){
     if(utmzCookie){
    	var terms = new Array();
    	utmzCookie = utmzCookie.substring(7, (utmzCookie.length) );
    	terms = utmzCookie.split('|');
    	for(var i = 0; i < terms.length; i++){
        	var c = jQuery.trim(terms[i].substring(0, terms[i].indexOf('=') ) );
        	if(c == UTMCTR){
            		SEARCH_TERMS = decodeURIComponent(GetCookieValue(terms[i]));           
	    		break;
        	}
     	}  
     }
     if(! SEARCH_TERMS || SEARCH_TERMS == null || SEARCH_TERMS == undefined || SEARCH_TERMS == 'undefined' || jQuery.trim(SEARCH_TERMS).length == 0){ 
        if(KK) {
			SEARCH_TERMS = decodeURIComponent(KK);
	   } else if(Q){
			SEARCH_TERMS = decodeURIComponent(Q);
	   } else if(GATRM){
			SEARCH_TERMS = decodeURIComponent(GATRM);
	   } else  {
			SEARCH_TERMS = 'NA / Undetermined';
	   }
     }    
  }

  function GetCookieValue(cki){
      var cv = new Array();
      cv = cki.split('=');
      return cv[1];  
  }


  function SaveValue(val, nam){
    if(! Get_Cookie(name)){
        Set_Cookie( nam, val, '', '/', document.domain, '' );
    }
  }
