var _raven = new Object(
	{
		k:"0",
		_init:function(k)
		{
			_raven.k = k;
			return _raven;
		},
		_track:function(method, cv, cvv, cvi)
		{
			var ck = _raven._getcookie('__rt');
			if (!ck) 
				ck = _raven._setcookie('__rt', 63072000000, 0);
			var sck = _raven._getcookie('__rts');
			if (!sck) 
				sck = _raven._setcookie('__rts', 1800000, 0);
			else
				_raven._setcookie('__rts', 1800000, sck);

			if (!window.ravenProt) {
				ravenProt = "http://";
			}

			var url = ravenProt + "raven-seo-tracker.com/log";
			url = url + "?key="+escape(_raven.k);
			url = url + "&url="+escape(location.href);
			url = url + "&ref="+escape(document.referrer);
			url = url + "&title="+escape(document.title);
			url = url + "&ck="+escape(ck);
			url = url + "&sck="+escape(sck);
			if (typeof cv == 'undefined')
			{
				if (typeof ravenConversion != 'undefined') {
					cv = ravenConversion;
					if (typeof ravenConversionValue != 'undefined')
						cvv = ravenConversionValue;
					if (typeof ravenConversionID != 'undefined')
						cvi = ravenConversionID;
				}
			}
			if (typeof cv != 'undefined' )
			{
				url = url + "&cv="+escape(cv);
				if (typeof cvv != 'undefined' )
					url = url + "&cvv="+escape(cvv);
				if (typeof cvi != 'undefined' )
					url = url + "&cvi="+escape(cvi);
			}
			if (method=="async")
			{
				var rt_documentbody = document.getElementsByTagName('body')[0];
				var rt_trackimg = document.createElement("img");
				rt_trackimg.setAttribute("src", url);
				rt_documentbody.appendChild(rt_trackimg);
			}
			else
				document.write(unescape("%3Cimg src='"+escape(url)+"'%3E"));
			return true;
		},
		_setcookie:function(name, exp, value) {
			if (value == 0) 
				value = Math.round(Math.random()*2147483647);
			var b=new Date,e=new Date(b.getTime()+exp);
			document.cookie = name + "=" +escape( value ) +
				";expires=" + e.toGMTString() + 
				";path=/";
			return value;
		},
		_getcookie:function(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

			for (var 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, null is returned
					return cookie_value;
					break;
				}
				a_temp_cookie = null;
				cookie_name = '';
			}
			if ( !b_cookie_found )
			{
				return null;
			}
			return "";
		}
	}
);