
function setRef()
{
    if(document.referrer == '' || document.referrer == 'undefined')
    {
        createCookie('searchcat', 'Website', 1);
        createCookie('searchkey', '(none)',1);
    }
    else if(document.referrer != '')
    {

        var uri_arr = parse_url(document.referrer,'host');
        uri_arr = uri_arr.replace('www.','');
        uri_arr = uri_arr.replace('.com','');
        uri_arr = uri_arr.replace('.net','');
        uri_arr = uri_arr.replace('.org','');
        uri_arr = uri_arr.replace('.se','');
        uri_arr = uri_arr.replace('.com.tw','');
        uri_arr = uri_arr.toLowerCase();

        if (uri_arr.match(/google/gi) == 'google')
        {
            createCookie('searchcat', 'Organic', 1);
            if(getKW('q') == ''){
                createCookie('searchkey', getKW('ref'),1);
            }
            else{
                createCookie('searchkey', getKW('q'),1);
            }

        }
        else if (uri_arr.match(/yahoo/gi) == 'yahoo')
        {
            createCookie('searchkey', getKW('p'), 1);
            createCookie('searchcat', 'Organic', 1);
        }
        else if (uri_arr.match(/bing/gi) == 'bing')
        {
            createCookie('searchcat', 'Organic', 1);
            createCookie('searchkey', getKW('q'),1);
        }
        else if (uri_arr.match(/msn/gi) == 'msn')
        {
            createCookie('searchcat', 'Organic', 1);
            createCookie('searchkey', getKW('q'),1);
        }
        else if (uri_arr.match(/about/gi) == 'about')
        {
            createCookie('searchcat', 'Organic', 1);
            createCookie('searchkey', getKW('terms'),1);
        }
        else if (uri_arr.match(/ask/gi) == 'ask')
        {
            createCookie('searchcat', 'Organic', 1);
            createCookie('searchkey', getKW('q'),1);
        }
        else if (uri_arr.match(/allsitestructures/gi) == 'allsitestructures')
        {

        }
        else
        {
            createCookie('searchcat', 'Website', 1);
            createCookie('searchkey', document.referrer,1);
        }
    }

}

function setRefTOForm()
{
    var xref = readCookie('searchkey');
    var xcat = readCookie('searchcat');
    var skid = document.getElementById('00N30000007EL5l');
    var scid = document.getElementById('lead_source');
    skid.setAttribute('value',xref);
    scid.setAttribute('value',xcat);
}

function getKW(name)
{
    var arr = {};
    parse_str(parse_url(document.referrer,'query'),arr);
    return arr[name];
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function parse_url (str, component) {
    var key = ['source', 'scheme', 'authority', 'userInfo', 'user', 'pass', 'host', 'port',                         'relative', 'path', 'directory', 'file', 'query', 'fragment'],
        ini = (this.php_js && this.php_js.ini) || {},
        mode = (ini['phpjs.parse_url.mode'] &&
            ini['phpjs.parse_url.mode'].local_value) || 'php',
        parser = {            php: /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
            strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
            loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/\/?)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // Added one optional slash to post-scheme to catch file:/// (should restrict this)
        };
     var m = parser[mode].exec(str),
        uri = {},
        i = 14;
    while (i--) {
        if (m[i]) {          uri[key[i]] = m[i];
        }
    }

    if (component) {        return uri[component.replace('PHP_URL_', '').toLowerCase()];
    }
    if (mode !== 'php') {
        var name = (ini['phpjs.parse_url.queryKey'] &&
                ini['phpjs.parse_url.queryKey'].local_value) || 'queryKey';        parser = /(?:^|&)([^&=]*)=?([^&]*)/g;
        uri[name] = {};
        uri[key[12]].replace(parser, function ($0, $1, $2) {
            if ($1) {uri[name][$1] = $2;}
        });    }
    delete uri.source;
    return uri;
}

function parse_str (str, array) {
    // Parses GET/POST/COOKIE data and sets global variables
    //
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/parse_str    // +   original by: Cagri Ekin
    // +   improved by: Michael White (http://getsprink.com)
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // +   reimplemented by: stag019    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: stag019
    // -    depends on: urldecode
    // +   input by: Dreamer
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)    // %        note 1: When no argument is specified, will put variables in global scope.
    // *     example 1: var arr = {};
    // *     example 1: parse_str('first=foo&second=bar', arr);
    // *     results 1: arr == { first: 'foo', second: 'bar' }
    // *     example 2: var arr = {};    // *     example 2: parse_str('str_a=Jack+and+Jill+didn%27t+see+the+well.', arr);
    // *     results 2: arr == { str_a: "Jack and Jill didn't see the well." }
    var glue1 = '=',
        glue2 = '&',
        array2 = String(str).replace(/^&?([\s\S]*?)&?$/, '$1').split(glue2),        i, j, chr, tmp, key, value, bracket, keys, evalStr, that = this,
        fixStr = function (str) {
            return that.urldecode(str).replace(/([\\"'])/g, '\\$1').replace(/\n/g, '\\n').replace(/\r/g, '\\r');
        };
     if (!array) {
        array = this.window;
    }

    for (i = 0; i < array2.length; i++) {        tmp = array2[i].split(glue1);
        if (tmp.length < 2) {
            tmp = [tmp, ''];
        }
        key = fixStr(tmp[0]);        value = fixStr(tmp[1]);
        while (key.charAt(0) === ' ') {
            key = key.substr(1);
        }
        if (key.indexOf('\0') !== -1) {            key = key.substr(0, key.indexOf('\0'));
        }
        if (key && key.charAt(0) !== '[') {
            keys = [];
            bracket = 0;            for (j = 0; j < key.length; j++) {
                if (key.charAt(j) === '[' && !bracket) {
                    bracket = j + 1;
                } else if (key.charAt(j) === ']') {
                    if (bracket) {                        if (!keys.length) {
                            keys.push(key.substr(0, bracket - 1));
                        }
                        keys.push(key.substr(bracket, j - bracket));
                        bracket = 0;                        if (key.charAt(j + 1) !== '[') {
                            break;
                        }
                    }
                }            }
            if (!keys.length) {
                keys = [key];
            }
            for (j = 0; j < keys[0].length; j++) {                chr = keys[0].charAt(j);
                if (chr === ' ' || chr === '.' || chr === '[') {
                    keys[0] = keys[0].substr(0, j) + '_' + keys[0].substr(j + 1);
                }
                if (chr === '[') {                    break;
                }
            }
            evalStr = 'array';
            for (j = 0; j < keys.length; j++) {                key = keys[j];
                if ((key !== '' && key !== ' ') || j === 0) {
                    key = "'" + key + "'";
                } else {
                    key = eval(evalStr + '.push([]);') - 1;                }
                evalStr += '[' + key + ']';
                if (j !== keys.length - 1 && eval('typeof ' + evalStr) === 'undefined') {
                    eval(evalStr + ' = [];');
                }            }
            evalStr += " = '" + value + "';\n";
            eval(evalStr);
        }
    }}

function urldecode (str) {
    // Decodes URL-encoded string
    //
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/urldecode    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir (http://brett-zamir.me)    // +      input by: travc
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Lars Fischer
    // +      input by: Ratheous    // +   improved by: Orlando
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // +      bugfixed by: Rob
    // +      input by: e-mike
    // +   improved by: Brett Zamir (http://brett-zamir.me)    // %        note 1: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
    // %        note 2: Please be aware that this function expects to decode from UTF-8 encoded strings, as found on
    // %        note 2: pages served as UTF-8
    // *     example 1: urldecode('Kevin+van+Zonneveld%21');
    // *     returns 1: 'Kevin van Zonneveld!'    // *     example 2: urldecode('http%3A%2F%2Fkevin.vanzonneveld.net%2F');
    // *     returns 2: 'http://kevin.vanzonneveld.net/'
    // *     example 3: urldecode('http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a');
    // *     returns 3: 'http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a'
    return decodeURIComponent((str + '').replace(/\+/g, '%20'));}
