<!--
/* ContactWala Cookie script
sets a cookie with the referring url if the domain is different than the current domain.
----------------------
Rev 1.1
I am expanding this script to do two more things. Get the cookie, and add the hidden form fields to the form
if this script is on the form page. This makes things much more efficient. Just include one JS file...
-----------------------
Rev 1.2
I have included a more robust cookie manipulation script at the bottom of the script, because
it is very complicated to do javascript includes...so I just put it at the bottom of the file...
-----------------------
Rev 1.3
added another cookie. This one keeps track of the page the client landed on. Works exactly like
the refer cookie, except records the current url instead of the referring url.
 */
//main exectuted code ---------------------
//sets the cookie if the refering page exists and is a different domain
var refer = document.referrer;
var landing = document.location.href;
var myDomain = document.domain;

if ( refer )
{
	//check for domain exceptions
	if(refer.indexOf(myDomain) == -1 || refer.indexOf("google") != -1 || refer.indexOf("yahoo") != -1 || refer.indexOf("bing") != -1 || refer.indexOf("bizwala.com") != -1)
	{
			Set_Cookie('refer',refer,1,'/','',''); //sets a cookie with expiration of 1 day
			Set_Cookie('landing',landing,1,'/','','');
	}
}


//must be executed after the page has loaded.
addEvent(window, 'load', checkform);
//-------------------------------------

//checks if a form element with id='contactwalaForm' exists, and adds hidden form fields to it if it does
function checkform()
{
	var elem = checkElement('contactwalaForm','form');
	if ( elem !== null )
	{
		var landingStr = '';
		if ( Get_Cookie('landing') != 'none' ) 
		{	landingStr = '<input type="hidden" name="landingPage" value="'+ Get_Cookie('landing') + '">';	} 
		else
		{	landingStr = '<input type="hidden" name="landingPage" value="'+ document.location.href + '">';	}
		
		var newField = document.createElement('div');
		newField.innerHTML = '<input type="hidden" name="refer" value="'+ Get_Cookie('refer') + '">'+landingStr;
		elem.appendChild(newField);
		Delete_Cookie('refer','/',''); //delete the cookie as it is no longer needed.
		Delete_Cookie('landing','/','');
	}
}

//utility functions
//------------------------

//check if element exists and is of a certain type
//arguments: the element id, 
//optional: the node type (i.e. DIV or FORM). If passed, will check for the node type as well as existence
//output: if the element exists and is the correct type, returns the element object, else returns FALSE
function checkElement(id,node_type)
{
	var element = document.getElementById(id);
	if ( element !== null )
	{
		if ( node_type === null || element.nodeName == node_type.toUpperCase() )
		{
			return element;
		}
	}
	
	return null;
}

//adds an event handler
//used to do DOM functions only after the page has loaded.
function addEvent(obj, evType, fn){ 
 if (obj.addEventListener){ 
   obj.addEventListener(evType, fn, false); 
   return true; 
 } else if (obj.attachEvent){ 
   var r = obj.attachEvent("on"+evType, fn); 
   return r; 
 } else { 
   return false; 
 } 
}

/*
Script Name: Javascript Cookie Script
Author: Public Domain, with some modifications
Script Source URI: http://techpatterns.com/downloads/javascript_cookies.php
Version 1.1.2
Last Update: 5 November 2009

Changes:
1.1.2 explicitly declares i in Get_Cookie with var
1.1.1 fixes a problem with Get_Cookie that did not correctly handle case
where cookie is initialized but it has no "=" and thus no value, the 
Get_Cookie function generates a NULL exception. This was pointed out by olivier, thanks
1.1.0 fixes a problem with Get_Cookie that did not correctly handle
cases where multiple cookies might test as the same, like: site1, site
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
*/

// this fixes an issue with the old method, ambiguous values 
// with this test document.cookie.indexOf( name + "=" );

// To use, simple do: Get_Cookie('cookie_name'); 
// replace cookie_name with the real cookie name, '' are required
//modified by rayman to return the string 'none' instead of null in the event of not found.
function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	var i = '';
	
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, 'none' is returned
			if (cookie_value === null) { return 'none'; }
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found ) 
	{
		return 'none';
	}
}

/*
only the first 2 parameters are required, the cookie name, the cookie
value. Cookie time is in milliseconds, so the below expires will make the 
number you pass in the Set_Cookie function call the number of days the cookie
lasts, if you want it to be hours or minutes, just get rid of 24 and 60.

Generally you don't need to worry about domain, path or secure for most applications
so unless you need that, leave those parameters blank in the function call.
*/
function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	// if the expires variable is set, make the correct expires time, the
	// current script below will set it for x number of days, to make it
	// for hours, delete * 24, for minutes, delete * 60 * 24
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	//alert( 'today ' + today.toGMTString() );// this is for testing purpose only
	var expires_date = new Date( today.getTime() + (expires) );
	//alert('expires ' + expires_date.toGMTString());// this is for testing purposes only

	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

// this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
//-->
