
	var account_prices = {'seo': 19, 'sem': 49, 'seo_sem': 69, 'basic': 19, 'advanced': 39, 'pro': 79, 'starter': 9};
	var account_type_titles = {'sem': 'SEM', 'seo_sem': 'SEO+SEM', 'beta': 'Beta', 'basic': 'Basic', 'advanced': 'Advanced', 'pro': 'Pro', 'starter': 'Starter'};

	function min(a, b) { return a > b ? b : a; }
	function max(a, b) { return a > b ? a : b; }
	
	function trim(str)
	{
		return str.toString().replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	}

	function addCommas(nStr)
	{
		x = (nStr + '').split('.');
		x1 = x[0];
		x2 = x.length > 1 ? '.' + x[1] : '';
		while (/(\d+)(\d{3})/.test(x1)) x1 = x1.replace(rgx, '$1' + ',' + '$2');
		return x1 + x2;
	}

	function formatNumber(_inputNumber, digitsAfterPoint)
	{
		var inputNumber = _inputNumber; if (!_inputNumber) return '0';
		inputNumber = parseFloat(inputNumber); var postfix = '';
		if (inputNumber >= 1000) { inputNumber = inputNumber/1000; postfix = 'K'; };
		if (inputNumber >= 1000) { inputNumber = inputNumber/1000; postfix = 'M'; };
		if (inputNumber >= 1000) { inputNumber = inputNumber/1000; postfix = 'B'; };

//		if (!digitsAfterPoint && digitsAfterPoint != 0 && digitsAfterPoint != '0') 
//			return inputNumber.toFixed(2) + postfix;
		
		return (parseFloat(parseFloat(inputNumber).toFixed(2))) + postfix;
		if (!digitsAfterPoint && digitsAfterPoint != 0 && digitsAfterPoint != '0') return inputNumber.toPrecision(4) + postfix;

		return parseInt(inputNumber.toFixed(parseInt(digitsAfterPoint))) + postfix;
	};
	
	function backslashQuotes(str)
	{
		return str ? str.replace(/'/g, '\\\'').replace(/"/g, '&quot;') : '';
	};
	
	function set_hint_position(event, hint)
	{
		var scrolledX, scrolledY;
		if( self.pageYoffset ) {
			scrolledX = self.pageXoffset;
			scrolledY = self.pageYoffset;
		} else if( document.documentElement && document.documentElement.scrollTop ) {
			scrolledX = document.documentElement.scrollLeft;
			scrolledY = document.documentElement.scrollTop;
		} else if( document.body ) {
			scrolledX = document.body.scrollLeft;
			scrolledY = document.body.scrollTop;
		}
		
		hint.style.left = event.clientX + scrolledX + 15 + 'px';
		hint.style.top = (event.clientY + hint.offsetHeight > document.documentElement.clientHeight) ? event.clientY + scrolledY - 10 - hint.offsetHeight + 'px' : event.clientY + scrolledY + 15 + 'px';
	};

	function set_span_position(event, hint)
	{
		set_hint_position(event, hint);
	};


/******************************
 **          AJAX            **
 ******************************/
	function createXMLHttpRequestObject()
	{
		var xmlHttpRequest;
		/*@cc on
		@if (@_jscript_version > 5)
			try { xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); }
			catch (exception1) { try { xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (exception2) { xmlHttpRequest = false; }; };
		@else
			xmlHttpRequest = false;
		@end @*/

		if (!xmlHttpRequest && typeof XMLHttpRequest != 'undefined') try { xmlHttpRequest = new XMLHttpRequest(); } catch (exception) { xmlHttpRequest = false; };                                                  

		return xmlHttpRequest;
	};                            

	var xmlHttpRequester = createXMLHttpRequestObject();
	var xmlHttpRequester_isBusy = 0;
	
	/* при входе в кабинет может быть указана начальная вкладка */
	
	function cabinetReady()
	{
		window.Templates = {
			'competitor' : {
				'adkeywords' : new CTabTemplate('competitor', 'adkeywords'),
				'revip'      : new CTabTemplate('competitor', 'revip'),
				'positions'  : new CTabTemplate('competitor', 'positions'),
				'summary'    : new CTabTemplate('competitor', 'summary'),
				'subdomains' : new CTabTemplate('competitor', 'subdomains'),
				'adtexts'    : new CTabTemplate('competitor', 'adtexts')
				},
			'keyword' : {
				'related'    : new CTabTemplate('keyword', 'related'),
				'adwords'    : new CTabTemplate('keyword', 'adwords'),
				'organic'    : new CTabTemplate('keyword', 'organic'),
				'summary'    : new CTabTemplate('keyword', 'summary')
				},
			'tracking' : {
				'keywords'   : new CTabTemplate('tracking', 'keywords'),
				'groups'     : new CTabTemplate('tracking', 'groups'),
				'sites'      : new CTabTemplate('tracking', 'sites')
				},
			'serp' : {
				'archive'    : new CTabTemplate('serp', 'archive'),
				'fullserp'   : new CTabTemplate('serp', 'fullserp')
				}
			};
		
			
		window.Hints = {
			'competitor' : {
				'adkeywords' : new SHint('competitor_adkeywords_hint', ['title','descr','green_url','location','keyword','avg_cpc','url','page_no','pos_type','position']),
				'positions'  : new SHint('competitor_positions_hint', ['keyword','url_shrinked','position','clicks','avg_cpc','rank']),
				'summary_ad' : new SHint('competitor_summaryAd_hint', ['title','descr','green_url','location','keyword','avg_cpc','url_shrinked','page_no','pos_type','position']),
				'summary_org': new SHint('competitor_summaryOrg_hint', ['keyword','url_shrinked','position','clicks','avg_cpc','rank'])
				},
			'tracking' : {
				'sites': new SHint('tracking_sites_chartTooltip', ['domain','date','clicks']),
				'domainHint': new SHint('tracking_sites_domainHint', ['subject', 'clicks', 'rank', 'top1count', 'top3count', 'top5count', 'top10count', 'total_count'])
				}
			};
		//console.log('creating cabinet');
		window.Cabinet = new CCabinet(CabinetStructure);
		parseUrlPath();
	};
	
	function parseUrlPath()
	{				
		index_body_loaded=true;
		document.getElementById('path_userNameID').innerHTML = htmlspecialchars(userName);		
		
		var path = (new String(window.location.hash)).substr(1);
		var parts = path.split('/');
		var menu    = parts[0];
		var subject = parts[1] ? unencodeURIComponent(parts[1]) : '';
		var tab     = parts[2] ? unencodeURIComponent(parts[2]) : '';
		var sort    = parts[3] ? unencodeURIComponent(parts[3]) : '';
		var page    = parts[4] ? unencodeURIComponent(parts[4]) : 1;
		
		switch (menu)
		{
			case 'additional':
			case 'competitor':
			case 'keyword':
			case 'serp':
				Cabinet.open(menu, tab, subject, page, sort);
				break;
			case 'pricing':
				pricing_tabClick(tab, subject, page, sort);
				break;
			case 'subscribe':
				subscribe_tabClick(tab, subject, page, sort);
				break;
			case 'tracking'  :
				if (tab == 'sites' || tab == 'keywords' || tab == 'groups' || tab == 'fullserp') Cabinet.open(menu,tab,subject);
				else positionTracking_tabClick('tracking_results', subject, page, sort, parts[5], parts[6]);
				break;
			case 'account'    :
				var tab   = subject ? subject : 'personal'; /* вкладка второго уровня */	
				account_tabClick(tab);
				break;
			case 'affiliate':
				affiliate_tabClick(tab);
				break;
			default:
				if (userId)
					Cabinet.open('tracking', 'sites');
				else
				{
					$('#div_cabinet_main').css('display','');
					$('#div_cabinet_content').hide();
				};
		};
	};

	
	function unencodeURIComponent(_str)
	{
		str = new String(_str);
		for (var i = str.indexOf('+'); i >= 0; i = str.indexOf('+'))
			str = str.substring(0, i) + '%20' + str.substring(i + 1, str.length);
		return unescape(str);
	}
	
	function htmlspecialchars(str)
	{
		if (str === 0) return str;
		if (!str) str = '';
		str = str.toString();
		if (!str) return '';
		str
			.replace('&', '&amp;')
			.replace('<', '&lt;')
			.replace('>', '&gt;')
			.replace("'", '&#039')
			.replace('"', '&quot;');
		return str;
	};

	function getAbsolutePosition(element)
	{
		var r = { x : element.offsetLeft, y : element.offsetTop };
		if (element.offsetParent)
		{
			var tmp = getAbsolutePosition(element.offsetParent);
			r.x += tmp.x;
			r.y += tmp.y;
		};
		return r;
	};
	
      function getCookie( name )
      {
	      var start = document.cookie.indexOf( name + "=" );
	      var len = start + name.length + 1;
	      if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) { return null; }
	      if ( start == -1 ) return null;
	      var end = document.cookie.indexOf( ';', len );
	      if ( end == -1 ) end = document.cookie.length;
	      return unescape( document.cookie.substring( len, end ) );
      };

	function logIn()
	{
		var username = $('#loginForm_name').attr('value');
		var password = $('#loginForm_pass').attr('value');
		if (!username && !password) return false;

		$('#login_busyDiv').css('display', 'inline');
		$('#login_formDiv').hide();
		$('#login_okDiv').hide();
		
		$.post('/cabinet/sign_in.php', { 'name' : username, 'password' : password }, function(data, textStatus){
			
			$('#login_busyDiv').hide();

			if (data['success'])
			{
				$('#login_formDiv').hide();
				$('#login_okDiv').css('display', 'inline');
				//window.location.reload(false);
				window.location.reload(true);
				return false;
			};
			
			$('#login_formDiv').css('display', 'inline');
			$('#login_okDiv').hide();

			$('#loginForm_messageField').html('Wrong username and/or password');
		}, 'json');
		return false;
	};

	function showLoginForm(firstLevelTab, secondLevelTab)
	{
		fadeTabArea();
		// First, determine how much the visitor has scrolled		
		var scrolledX, scrolledY;
		if( self.pageYoffset ) {
			scrolledX = self.pageXoffset;
			scrolledY = self.pageYoffset;
		} else if( document.documentElement && document.documentElement.scrollTop ) {
			scrolledX = document.documentElement.scrollLeft;
			scrolledY = document.documentElement.scrollTop;
		} else if( document.body ) {
			scrolledX = document.body.scrollLeft;
			scrolledY = document.body.scrollTop;
		}
		
		// Next, determine the coordinates of the center of browser's window		
		var centerX, centerY;
		if( self.innerHeight ) {
			centerX = self.innerWidth;
			centerY = self.innerHeight;
		} else if( document.documentElement && document.documentElement.clientHeight ) {
			centerX = document.documentElement.clientWidth;
			centerY = document.documentElement.clientHeight;
		} else if( document.body ) {
			centerX = document.body.clientWidth;
			centerY = document.body.clientHeight;
		}
		/* displaying form */				
		var form_div = document.getElementById('login_form_area_wrapper');
		//document.getElementById('login_form_area').style.display = '';
		
		form_div.style.display = 'block';			
		form_div.style.top =  scrolledY + (centerY - form_div.offsetHeight)/ 2 + 'px';
		form_div.style.left = scrolledX + (centerX - form_div.offsetWidth) / 2 + 'px';		
		
		/* where to go after login */
		// not used cause window.reload()
		document.getElementById('loginForm_firstLevelTab').value = firstLevelTab;
		document.getElementById('loginForm_secondLevelTab').value = secondLevelTab;
		return;
	};	

	function hideLoginForm()
	{		
		//document.getElementById('login_form_area').style.display = 'none';	
		if(document.getElementById('login_form_area_wrapper'))	{
		document.getElementById('login_form_area_wrapper').style.display = 'none';
		unfadeTabArea();
		document.getElementById('login_form_area_h1').innerHTML = "This page requires authentication";
		}
	};
	
	function showReachedLimit(auth)
	{		
		if(!auth){
			document.getElementById('login_form_area_h1').innerHTML = "You have reached the limit of requests";
			showLoginForm();			
			return;
		}
		// First, determine how much the visitor has scrolled		
		var scrolledX, scrolledY;
		if( self.pageYoffset ) {
			scrolledX = self.pageXoffset;
			scrolledY = self.pageYoffset;
		} else if( document.documentElement && document.documentElement.scrollTop ) {
			scrolledX = document.documentElement.scrollLeft;
			scrolledY = document.documentElement.scrollTop;
		} else if( document.body ) {
			scrolledX = document.body.scrollLeft;
			scrolledY = document.body.scrollTop;
		}
		
		// Next, determine the coordinates of the center of browser's window		
		var centerX, centerY;
		if( self.innerHeight ) {
			centerX = self.innerWidth;
			centerY = self.innerHeight;
		} else if( document.documentElement && document.documentElement.clientHeight ) {
			centerX = document.documentElement.clientWidth;
			centerY = document.documentElement.clientHeight;
		} else if( document.body ) {
			centerX = document.body.clientWidth;
			centerY = document.body.clientHeight;
		}
		/* displaying form */				
		fadeTabArea();
		var form_div = document.getElementById('reached_limit_area_wrapper');		
		
		form_div.style.display = 'block';			
		form_div.style.top =  scrolledY + (centerY - form_div.offsetHeight)/ 2 + 'px';
		form_div.style.left = scrolledX + (centerX - form_div.offsetWidth) / 2 + 'px';		
		
		return;
	};	

	function hideReachedLimit()
	{		
		if(document.getElementById('reached_limit_area_wrapper'))		
			document.getElementById('reached_limit_area_wrapper').style.display = 'none';
	}

	var detectedBrowserIsIE = navigator.appName.match('Microsoft') ? true : false;
	
	function copyTableRow(table, row)
	{
		if (detectedBrowserIsIE)			
			return copyTableRow_IE(table, row);		
		table.appendChild(row.cloneNode(true));
		return table.rows[table.rows.length-1];
	}
	
	function copyTableRow_IE(table, row)
	{
		var newRow = table.insertRow(table.rows.length);
		var attrs = row.attributes;		
		for (var j = 0; j < attrs.length; j++) 
			if (attrs[j].specified)
				newRow.setAttribute(attrs[j].name, attrs[j].value);							
		
		for (var i = 0; i < row.cells.length; i++)
		{
			var newCell = newRow.insertCell(i);
			var attrs = row.cells[i].attributes;			
			for (var j = 0; j < attrs.length; j++) 
				if (attrs[j].specified) {					
					newCell.setAttribute(attrs[j].name, attrs[j].value);					
				}			
			newCell.innerHTML = row.cells[i].innerHTML;
		}
		
		return newRow;
	}
	
	function set_pagesLine (currentPage, totalPagesCount, arg1, arg2, arg3) /* arg1 - competitor, arg2 - domain, arg3 - positions */
	{
		var visiblePagesCount = 10;
		var visiblePagesCount_half = Math.floor(visiblePagesCount/2);
		var pagesLine = 'Pages:&nbsp;';	
		var minVisiblePage = max(1, currentPage - visiblePagesCount_half);
		var maxVisiblePage = min(minVisiblePage + visiblePagesCount - 1, totalPagesCount);
		    //minVisiblePage = max(1, maxVisiblePage - totalPagesCount + 1);		    		    
		
		var page_div_array = [arg1+'_'+arg3+'_topPagesLine', arg1+'_'+arg3+'_bottomPagesLine'];
		for(cnt in page_div_array){		
			if(totalPagesCount <= 1){
				document.getElementById(page_div_array[cnt]+'_td').style.display = 'none';
				continue;
			}
			document.getElementById(page_div_array[cnt]+'_td').style.display = '';
				
		var topPagesLine = document.getElementById(page_div_array[cnt]);
		var pagesLineElements = topPagesLine.getElementsByTagName('span');
		var prevPageLink = pagesLineElements[0].getElementsByTagName('a')[0];
		var previousPagesPart = pagesLineElements[1];
		var currentPagePart   = pagesLineElements[2];
		var nextPagesPart     = pagesLineElements[3];
		var nextPageLink = pagesLineElements[4].getElementsByTagName('a')[0];
		
		/* previous page link */
		if (currentPage > 1)
		{
			prevPageLink.style.display = 'inline';
			prevPageLink.href = '#'+arg1+'/' + encodeURIComponent(arg2) + '/'+arg3+'//' + (currentPage - 1);
			prevPageLink.onclick = function(i){ return function (){eval(arg1+'_tabClick(arg3, \'\', i)');}}(currentPage - 1);			
		}
		else	prevPageLink.style.display = 'none';
		
		/* next page link */
		if (currentPage < totalPagesCount)
		{
			nextPageLink.style.display = 'inline';
			nextPageLink.href = '#'+arg1+'/' + encodeURIComponent(arg2) + '/'+arg3+'//' + (currentPage + 1);
			nextPageLink.onclick = function(i){ return function (){eval(arg1+'_tabClick(arg3, \'\', i)');}}(currentPage + 1);						
		}
		else	nextPageLink.style.display = 'none';
			
		/* previous pages part */
		var previousPagesPart_sample = previousPagesPart.getElementsByTagName('a')[0].cloneNode(true);
		previousPagesPart_sample.style.display = 'inline';
		while (previousPagesPart.childNodes.length > 0) previousPagesPart.removeChild(previousPagesPart.childNodes[0]);
		previousPagesPart.appendChild(previousPagesPart_sample);
		for (var i = minVisiblePage; i < currentPage; i++)
		{	
			var newPageLink = previousPagesPart_sample.cloneNode(true);
			newPageLink.href = '#'+arg1+'/' + encodeURIComponent(arg2) + '/'+arg3+'//' + i;
			newPageLink.onclick = function(i){ return function (){eval(arg1+'_tabClick(arg3, \'\', i)');}}(i);	
			newPageLink.innerHTML = i;
			previousPagesPart.appendChild(newPageLink);
		};
		previousPagesPart_sample.style.display = 'none';
		
		/* current page */
		currentPagePart.innerHTML = currentPage;
		
		/* next pages part */
		var nextPagesPart_sample = nextPagesPart.getElementsByTagName('a')[0].cloneNode(true);
		nextPagesPart_sample.style.display = 'inline';
		while (nextPagesPart.childNodes.length > 0) nextPagesPart.removeChild(nextPagesPart.childNodes[0]);
		nextPagesPart.appendChild(nextPagesPart_sample);
		for (var i = currentPage + 1; i <= maxVisiblePage; i++)
		{
			var newPageLink = nextPagesPart_sample.cloneNode(true);
			newPageLink.href = '#'+arg1+'/' + encodeURIComponent(arg2) + '/'+arg3+'//' + i;
			newPageLink.onclick = function(i){ return function (){eval(arg1+'_tabClick(arg3, \'\', i)');}}(i);	
			newPageLink.innerHTML = i;
			nextPagesPart.appendChild(newPageLink);
		};
		nextPagesPart_sample.style.display = 'none';
		}
		return '';
	};

//Taken from /js/index-*.js !!!	
function hidehint(name){
	document.getElementById(name).style.visibility='hidden';
}
function showhint(name){
	document.getElementById(name).style.visibility='visible';
}

// Marina's version for context help
function help_hint_show(toshow){
	document.getElementById(toshow).style.display = 'block';
	document.getElementById('hintsign_'+toshow).onclick = function(){help_hint_hide(toshow);};
}
function help_hint_hide(tohide){
	document.getElementById(tohide).style.display = 'none';
	document.getElementById('hintsign_'+tohide).onclick = function(){help_hint_show(tohide);};
}

var active_bar = null;
var active_feedback_type = 'feedback';
function showhide_feedback(id, type, hide_main) {
		var bar = document.getElementById(id);
		//alert([id, type, hide_main]);
//		if(active_bar){
//			alert('1');
//			active_bar.style.display = 'none';				
//		}
		if(bar==active_bar && active_feedback_type == type || !type){			
			active_bar.style.display = 'none';
			active_bar=null;
			//alert('close');
		} else {
			bar.style.display = 'block';
			active_bar=bar;
			//alert('open');
			if(active_feedback_type != type){
				document.getElementById('feedback_'+type+'_td').style.display = '';	
				document.getElementById('feedback_'+active_feedback_type+'_td').style.display = 'none';	
				active_feedback_type = type;
			}
		}
		if(document.getElementById("main"))
			document.getElementById("main").style.display=(active_bar && active_bar.hide_main)?'none':'block';
				
		document.getElementById('feedback_sent_td').style.display = 'none';
		return false;
}

function sendfeedback(textarea, from_input, name_input){
	$('#feedback_loading').css('display','inline').css('visibility', 'visible');
	var sUrl="http://"+location.host+"/feedback.php";
	var post_data = { 'url': location.href, 'from': from_input.value, 'name': name_input.value, 'text': textarea.value };
	textarea.disabled = true;

	$.post(sUrl, post_data, function(data){
			
			if (data == 'OK')
			{
				$('#feedback_sent_td').css('display', '');
				textarea.value = '';
			}
			else	alert('Some errors occured while connecting to feedback server: '+data);
			
			textarea.disabled = false;
			$('#feedback_loading').css('display','inline').css('visibility', 'hidden');
		});

}

function set_top_menu(type){
	var xhr = createXMLHttpRequestObject();
	
	xhr.onreadystatechange = function()
	{
		if (xhr.readyState != 4) return;		
		document.getElementById('cabinet_top_menu_login_span').innerHTML = xhr.responseText;			
	}
		
	xhr.open('GET', '/menu.php?short=1');
	xhr.send(null);
	return false;
}

	function fadeTabArea()
	{
		var faderTab = document.getElementById('div_fading');
		faderTab.style.display = 'block';
	};
	
	function unfadeTabArea()
	{		
		var fadingTab = document.getElementById('div_fading');
		fadingTab.style.display = 'none';
	};
	
function capitaliseFirstLetter(string)
{
    return string.charAt(0).toUpperCase() + string.slice(1);
}

function ExpandLetter(th, what)
{	
	var aExpand = th;
	var title = '';//'Top ' + capitaliseFirstLetter(what);
	if(aExpand.innerHTML == title + "-")
	{			
		aExpand.innerHTML = title + "+";
		document.getElementById('div_top_'+what).style.display = "none";
	}
	else	
	{		
		aExpand.innerHTML = title + "-";
		document.getElementById('div_top_'+what).style.display = "block";
	}
	
	return false;
}

function defMousePos(event)
{
    var x = y = 0;
    if (document.attachEvent != null)
    { // Internet Explorer & Opera
	x = window.event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
	y = window.event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
    }
    
    if (!document.attachEvent && document.addEventListener)
    { // Gecko
	x = event.clientX + window.scrollX;
	y = event.clientY + window.scrollY;
    }
    
    return {x:x, y:y};
}

function in_array(arr, value)
{
	for (var i = 0; i < arr.length; i++)
		if (arr[i] == value)
			return true;
	return false;
};

/*
Array.prototype.has = function(v)
{
	for (var i = 0; i < this.length; i++)
		if (this[i] == v)
			return true;
	return false;
};
*/

function isDateString(str)
{
	if (!str) return false;
	var parts = str.toString().split('-');
	if (parts.length != 3) return false;
	
	var year  = parseInt(parts[0],10); if (year  != parts[0]) return false;
	var month = parseInt(parts[1],10); if (month != parts[1]) return false;
	var day   = parseInt(parts[2],10); if (day   != parts[2]) return false;
	
	if (!month || month > 12) return false;
	if (!day || day > [31, (year % 4 ? 28 : 29), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1]) return false;
	
	return true;
};

function DateToString(_date)
{
	var parts = _date.toString().split('-');
	if (parts.length != 3) return null;

	var year  = parseInt(parts[0],10); if (year  != parts[0]) return null;
	var month = parseInt(parts[1],10); if (month != parts[1]) return null;
	var day   = parseInt(parts[2],10); if (day   != parts[2]) return null;
	
	if (!month || month > 12) return null;
	if (!day || day > [31, (year % 4 ? 28 : 29), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1]) return null;

	return day + ' ' + ['Jan','Feb','Mar','Apr','May','Jun','Jul','Sep','Oct','Nov','Dec'][month - 1] + ' ' + year;
};

function _serpanalytics_blink(object, times, timeout, border_style_name, border_style_value)
{
	if (!times) return;
	object.css('border-color', 'red');
	setTimeout(function(){
		object.css(border_style_name, border_style_value);
		setTimeout(function(){_serpanalytics_blink(object, times - 1, timeout, border_style_name, border_style_value)}, timeout);
		}, timeout);
};

function serpanalytics_blink(object, times, timeout)
{
	
	if (!times) times = 2;
	if (!timeout) timeout = 70;
	
	var border_style_name = 'border-color';
	var border_style_value = object.css(border_style_name);
	if (!border_style_value) { border_style_name = 'border'; border_style_value = object.css(border_style_name); };
	
	_serpanalytics_blink(object, times, timeout, border_style_name, border_style_value);
};

/* emulate JSON object if not defined */
    var JSON = JSON || {};  
JSON.stringify = JSON.stringify || function (obj) {  
    var t = typeof (obj);  
    if (t != "object" || obj === null) {  
        // simple data type  
        if (t == "string") obj = '"'+obj+'"';  
        return String(obj);  
    }  
    else {  
        // recurse array or object  
        var n, v, json = [], arr = (obj && obj.constructor == Array);  
        for (n in obj) {  
            v = obj[n]; t = typeof(v);  
            if (t == "string") v = '"'+v+'"';  
            else if (t == "object" && v !== null) v = JSON.stringify(v);  
            json.push((arr ? "" : '"' + n + '":') + String(v));  
        }  
        return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");  
    }  
};  
JSON.parse = JSON.parse || function (str) {  
    if (str === "") str = '""';  
    eval("var p=" + str + ";");  
    return p;  
};


