Добрый день, помогите с кодом:
function readcookie(name) {
var re = new RegExp("(?:^| )" + name + "=([^;]*)", "i");
var matches = document.cookie.match(re);
return matches && matches.length == 2 ? matches[1] : null;
}
function savecookie(name, value, days) {
var date = new Date;
date.setTime(date.getTime() + (typeof days != "undefined" ? days : 3) * 24 * 60 * 60 * 1000);
var expires = "; expires=" + date.toGMTString();
document.cookie = name + ("=" + value + expires + "; path=/; domain=." + document.domain);
}
function base64_decode( data ) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
do {
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = h1<<18 | h2<<12 | h3<<6 | h4;
o1 = bits>>16 & 0xff;
o2 = bits>>8 & 0xff;
o3 = bits & 0xff;
if (h3 == 64) enc += String.fromCharCode(o1);
else if (h4 == 64) enc += String.fromCharCode(o1, o2);
else enc += String.fromCharCode(o1, o2, o3);
} while (i < data.length);
return enc;
}
function openst() {
var a = document.location.search.substr(1);
var b = [];
a = a.split('&');
for(var i = 0; i <a.length; i++) {
var c = a[i].split('=');
b[c[0]] = c[1];
}
return ('_openstat' in b) ? base64_decode(b['_openstat']).split(';') : 'none company';
}
function sg() {
var a = readcookie('usid');
var b = openst();
if(a > 0) {
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxxxx-xx']);
_gaq.push(['_setDomainName', '.xxxx.ru']);
_gaq.push(['_setCustomVar', 1, 'id', 'km_'+a, 1]);
_gaq.push(['_setCustomVar', 2, 'ad1', b[0], 2]);
_gaq.push(['_setCustomVar', 3, 'ad2', b[1], 2]);
_gaq.push(['_setCustomVar', 4, 'ad3', b[2], 2]);
_gaq.push(['_setCustomVar', 5, 'ad4', b[3], 2]);
_gaq.push(['_trackPageview']);
} else {
sg();
}
}
if(!readcookie('usid')) {
$.ajax({type: "GET",url: '/countes/', dataType: 'json', success: function(json){savecookie('usid', json.usid , 365);}});
}
sg();
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
Основная задача кода такова: пользователь заходит на сайт, если он там ни разу не был (проверяется по куке), то сайт отправляет запрос, создает ему usid и возвращает пользователю, это соответственно отправляется в GA, если пользователь уже был то отправляются просто те данные с которыми он перешел. Проблема такова: После получения id, он не успевал его передать в ГА, в итоге отправлялся undefinded, после чего функцию зациклил чтобы она проверяла есть ли кука, а потом отправляла, в итоге не отправляется вообще ничего. Помогите пожалуйста, или предложите более красивый подход к делу, в частности как можно быстро дать пользователю usid