/*
	Functions for reports display
*/

//=====================================================//

/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/

var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		
		input = Base64._utf8_encode(input);
		
		while (i < input.length) {
 
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
 
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
 
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
 
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
 
		}
 
		return output;
	},
 
	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
		while (i < input.length) {
 
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			output = output + String.fromCharCode(chr1);
 
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
 
		}
 
		output = Base64._utf8_decode(output);
 
		return output;
 
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}
var __ = function(a) {return Base64.decode(a)};
//=====================================================//

// Trend function. Displays Trend.

Array.prototype.max = function ()
{
	if ( this.length == 0 ) return undefined;
	var n = Number ( this[0] );
	for ( var i = 1; i < this.length; i++ ) { n = Math.max( n, this[i] ) };
	return n;
}

function makeTrend ( trend )
{
	if ( trend.length == 0 ) return '<div style="height: 20px;">&nbsp;</div>';
	else
	{
		var trend_array	 = trend.split(",");
		var trind_str	 = new String('<table cellspacing=0 cellpadding=0 class="small-trend"><tr>');
		$.each( trend_array, function(j, trend_block)
		{
			var	block_height	 = trend_block * 20;
				trind_str		+= '<td valign="bottom" style="border: 0px; margin: 0px; padding: 0px;">';
				trind_str		+= '<div class="trend-bg-color" style="height: ' + block_height + 'px;">&nbsp;</div>';
				trind_str		+= '</td>';
		});
		return	trind_str + '</tr></table>';
	}
}

// Trend function. Displays Trend. Version 2.

function makeTrend2 ( trend )
{
	if ( trend.length == 0 ) return '<div style="width: 100%; text-align: center; height: 55px;">' + no_trend_data + '</div>';
	else
	{
		var trend_array	 = trend.split(",");
		var trind_str	 = new String('<table cellspacing=0 cellpadding=0 width=100% height=60px><tr>');
		$.each( trend_array, function(j, trend_block)
		{
			var	block_height	 = trend_block * 60;
				trind_str		+= '<td valign="bottom" style="border: 0px; margin: 0px; padding: 0px 4px;">';
				trind_str		+= '<div style="height: ' + block_height + 'px;" class="big-trend-bg">&nbsp;</div>';
				trind_str		+= '</td>';
		});
		return	trind_str += '</tr></table>';
	}
}

// Function to break up Int number into blocks by 3 numbers

function breakToThree ( num )
{
	if ( num == 0 ) return 0;
	var reverse_string = new String("");
	for ( j = ( num.length - 1 ); j >= 0; j-- )
	{
		if ( j < ( num.length - 1 ) && j >= 0 && ( num.length - (j + 1)) % 3 == 0 ) reverse_string += ';psbn&';
		reverse_string += num.charAt(j);
	}
	var reverse_array = reverse_string.split("");
	var straight_array = reverse_array.reverse();
	return straight_array.join("");
}

function breakToThreeComa ( input )
{
	var num = new String("");
	num += input;
	if ( num.length < 4 ) return num;
	var reverse_string = new String("");
	for ( j = ( num.length - 1 ); j >= 0; j-- )
	{
		if ( j < ( num.length - 1 ) && j >= 0 && ( num.length - (j + 1)) % 3 == 0 ) reverse_string += ',';
		reverse_string += num.charAt(j);
	}
	var reverse_array = reverse_string.split("");
	var straight_array = reverse_array.reverse();
	return straight_array.join("");
}

function breakToThreeSpace ( input )
{
	var num = new String("");
	num += input;
	if ( num.length < 4 ) return num;
	var reverse_string = new String("");
	for ( j = ( num.length - 1 ); j >= 0; j-- )
	{
		if ( j < ( num.length - 1 ) && j >= 0 && ( num.length - (j + 1)) % 3 == 0 ) reverse_string += ' ';
		reverse_string += num.charAt(j);
	}
	var reverse_array = reverse_string.split("");
	var straight_array = reverse_array.reverse();
	return straight_array.join("");
}

// Function to clip long strings

function clipString ( str, limit )
{
	if ( str.substring(0,7) == 'http://' ) str = str.substring(7);
	else if (  str.substring(0,8) == 'https://'  )  str = str.substring(8);
	if ( str.substring(0,4) == 'www.' ) str = str.substring(4);
	if ( str.length > limit ) return str.substring( 0, 19 ) + '...' + str.substring( str.length - 9, str.length );
	else return str;
}

function clipString2 ( str, limit )
{
	if ( str.length > limit ) return str.substring( 0, 19 ) + '...' + str.substring( str.length - 9, str.length );
	else return str;
}

function clipString3 ( str, limit, ad_key )
{
	if ( ad_key == 0 )
	{
		if ( str.substring(0,7) == 'http://' ) str = str.substring(7);
		else if (  str.substring(0,8) == 'https://'  )  str = str.substring(8);
		if ( str.substring(0,4) == 'www.' ) str = str.substring(4);
	}
	if ( str.length > limit ) return str.substring( 0, 16 ) + '...' + str.substring( str.length - 6, str.length );
	else return str;
}

function clipString4 ( str, limit )
{
	if ( str.length > limit ) return str.substring( 0, limit ) + '&hellip;';
	else return str;
}

function clipWord (str, limit) {
	var words = str.split(' ');
	for (var i=0; i < words.length; i++) {
		words[i] = clipString3 ( words[i] , limit, 1 );
	}
	str = words.join(' ');
	return str;
}

// Function to calculate ratio

function calcRatio ( v1, v2 )
{
	if ( v2 != 0 )
	{
		var ratio = ( v1 / v2 ) * 100;
		return ratio.toFixed(2);
	}
	else return 0;
}

// Function to round num and make an ending (k, mln)

function calcRound ( num )
{
	var returnArray = new Array(2);
	if ( num.length < 4 )
	{
		returnArray[0] = num;
		returnArray[1] = '';
		return returnArray;
	}
	else if ( num.length > 3 && num.length < 7 )
	{
		var r_num = num / 1000;
		returnArray[0] = r_num.toFixed(1);
		returnArray[1] = 'k';
		return returnArray;
	}
	else
	{
		var r_num = num / 1000000;
		returnArray[0] = r_num.toFixed(1);
		returnArray[1] = 'm';
		return returnArray;
	}
}

// Function to round num and make an ending (k, mln). Third version.

function calcRound3 ( num )
{
	if ( num != null && typeof(num) != "undefined" )
	{
		if ( num.length < 4 ) return num;
		else if ( num.length > 3 && num.length < 7 )
		{
			var r_num = num / 1000;
			return r_num.toFixed(1) + 'k';
		}
		else
		{
			var r_num = num / 1000000;
			return r_num.toFixed(1) + 'm';
		}
	}
	else return 0;
}

// Function to round num and make an ending (k, mln). Second version.

function calcRound2 ( num, contid, path, type, curdb, tip )
{
	if ( curdb == 'us' ) var tmp_zurl = '';
	else var tmp_zurl = '/' + curdb;
	
	var str = new String(num);
	if ( str.length < 4 )
	{
		if ( num != 0 ) $('#' + contid).html('<a class="report_links_text" href="' + tmp_zurl + '/info/' + path + type + '">' + tip + '</a>');
		return '<div class="sp04">&nbsp;</div><div class="sp05">' + num + '</div>';
	}
	else if ( str.length > 3 && str.length < 7 )
	{
		var r_num = num / 1000;
		$('#' + contid).html('<a class="report_links_text" href="' + tmp_zurl + '/info/' + path + type + '">' + tip + '</a>');
		return '<div class="sp04">k</div><div class="sp05">' + r_num.toFixed(1) + '</div>';
	}
	else
	{
		var r_num = num / 1000000;
		$('#' + contid).html('<a class="report_links_text" href="' + tmp_zurl + '/info/' + path + type + '">' + tip + '</a>');
		return '<div class="sp04">m</div><div class="sp05">' + r_num.toFixed(1) + '</div>';
	}
}

// Clip input length.
// Params: i - input str, l - needed length, t - "center" or "right", h - cut "http://" or "https://" (true or false), w - cut "www." (true or false)
//---------------------------------------------------------------------------------------------------------------
function strClipOld (i,l,t,h,w) {

	if	( i == null || i == undefined )	return '';
	
	var	s			 = new String("");
		s			+= i;
		
	if	( h )	s	 = s.replace(/^http[s]?:\/\//ig,'');
	if	( w )	s	 = s.replace(/^www\./ig,'');
	
	if	( l >= s.length )				return s;
	if	( t == 'right' )				return s.substring( 0, l ) + '...';
	if	( t == 'center' ) {
		
		var	r		 = Math.floor(l/2);
										return s.substring( 0, r ) + '...' + s.substring( s.length - r, s.length );
		
	}
	
										return s;
}


// Function to round num and make an ending (k, mln). Fourth version.

function calcRound4 ( num, contid, path, type, curdb, tip, threshold )
{
	if ( curdb == 'us' ) var tmp_zurl = '';
	else var tmp_zurl = '/' + curdb;
	
	if ( parseInt(num) != 0 && threshold > parseInt(num) )
	{
		$('#' + contid).html('<a class="report_links_text" href="' + tmp_zurl + '/info/' + path + type + '">' + tip + '</a>');
		return '<div class="sp04">&nbsp;</div><div class="sp05">&lt;&nbsp;' + threshold + '</div>';
	}
	
	var str = new String(num);
	if ( str.length < 4 )
	{
		if ( num != 0 ) $('#' + contid).html('<a class="report_links_text" href="' + tmp_zurl + '/info/' + path + type + '">' + tip + '</a>');
		return '<div class="sp04">&nbsp;</div><div class="sp05">' + num + '</div>';
	}
	else if ( str.length > 3 && str.length < 7 )
	{
		var r_num = num / 1000;
		$('#' + contid).html('<a class="report_links_text" href="' + tmp_zurl + '/info/' + path + type + '">' + tip + '</a>');
		return '<div class="sp04">k</div><div class="sp05">' + r_num.toFixed(1) + '</div>';
	}
	else
	{
		var r_num = num / 1000000;
		$('#' + contid).html('<a class="report_links_text" href="' + tmp_zurl + '/info/' + path + type + '">' + tip + '</a>');
		return '<div class="sp04">m</div><div class="sp05">' + r_num.toFixed(1) + '</div>';
	}
}


function calcRoundUrl ( num, contid, path, tip )
{
	var str = new String(num);
	if ( str.length < 4 )
	{
		if ( num != 0 ) $('#' + contid).html('<a class="report_links_text" href="' + path + '">' + tip + '</a>');
		return '<div class="sp04">&nbsp;</div><div class="sp05">' + num + '</div>';
	}
	else if ( str.length > 3 && str.length < 7 )
	{
		var r_num = num / 1000;
		$('#' + contid).html('<a class="report_links_text" href="' + path + '">' + tip + '</a>');
		return '<div class="sp04">k</div><div class="sp05">' + r_num.toFixed(1) + '</div>';
	}
	else
	{
		var r_num = num / 1000000;
		$('#' + contid).html('<a class="report_links_text" href="' + path + '">' + tip + '</a>');
		return '<div class="sp04">m</div><div class="sp05">' + r_num.toFixed(1) + '</div>';
	}
}

// Function to change left DB menu panel with info

function changeDBLeft ( db, type )
{
	var dbs = new Array('us','ru','de','fr','es','uk','br','it','au');
	for ( i = 0; i < dbs.length; i++ )
	{
		if ( db == 'au' && $('#no-au-gr').is(':hidden') ) $('#no-au-gr').css('display','block');
		else $('#no-au-gr').css('display','none');
		
		if ( db != dbs[i] )
		{
			$('.' + type + '#db_switch_' + dbs[i]).removeClass('left_db_menu_on');
			$('.' + type + '#db_switch_' + dbs[i]).addClass('left_db_menu_off');
			$('#db_info_' + dbs[i]).css('display','none');
		}
		else
		{
			$('.' + type + '#db_switch_' + db).removeClass('left_db_menu_off');
			$('.' + type + '#db_switch_' + db).addClass('left_db_menu_on');
			$('#db_info_' + db).css('display','block');
		}
	}
}

function changeDBLeftNew ( db )
{
	var dbs = new Array('us','ru','de','fr','es','uk','br','it','au','bing-us','ca');
	for ( i = 0; i < dbs.length; i++ )
	{
		
		if ( db != dbs[i] )
		{
			$('#db_info_' + dbs[i]).css('display','none');
		}
		else
		{
			$('#db_info_' + db).css('display','block');
		}
		
	}
	
	/*
	if ( db == 'ca' ) $('#no-au-gr').css('display','block');
	else
	{
		setTimeout(function(){
			$('#no-au-gr').css('display','none');
		},150);
	}
	*/
}

function callJSfromFlex ( note )
{
	if ( note == 'nodata' )
	{
		$('#jsfflex-note-nodata').css('display','block');
	}
	else if ( note == 'error' )
	{
		$('#jsfflex-note-error').css('display','block');
	}
}

function callJSfromFlexRemove ()
{
	setTimeout(function(){
		$('#jsfflex-note-nodata').css('display','none');
		$('#jsfflex-note-error').css('display','none');
	},100);
}

function getMyApp(appName)
{
	if (navigator.appName.indexOf ("Microsoft") !=-1)
	{
		return window[appName];
	}
	else
	{
		return document[appName];
	}
}

function callApp(db,appName)
{
	getMyApp(appName).myFlexFunction(db);
}

	function errorSetRankInfo(db,domain_name)
	{
		$('#container_' + db + '_01').html('error');
		$('#container_' + db + '_02').html('error');
		$('#container_' + db + '_03').html('error');
		$('#container_' + db + '_04').html('error');
		$('#container_' + db + '_05').html('error');
		
		if ( db == cu_db )
		{
			printMainLinks ( 0, 0, '', 0, 1 );
			printMainLinks ( 1, 0, '+(by+organic)', 0, 1 );
			printMainLinks ( 2, 0, '+(by+adwords)', 0, 1 );
			printMainLinks ( 3, 0, '+(by+organic_organic)', 0, 1 );
			printMainLinks ( 4, 0, '+(by+adwords_adwords)', 0, 1 );
			printMainLinks ( 5, 0, '+(by+ads)', 0, 1 );
			printMainLinks ( 6, 0, '+(by+organic_adwords)', 1, 1 );
			printMainLinks ( 7, 0, '+(by+adwords_organic)', 1, 1 );
			printMainLinks ( 8, 0, '+(seopivot)', 0, 1 );
		}
		else
		{
			if ( db == 'us' ) var ins_db = '.com';
			else if ( db == 'uk' ) var ins_db = '.co.uk';
			else if ( db == 'br' ) var ins_db = '.com.br';
			else if ( db == 'au' ) var ins_db = '.com.au';
			else var ins_db = '.' + db;
			if ( db == 'us' ) var db_zurl = '';
			else var db_zurl = '/' + db;
			if ( kind == 'overview' ) $('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + domain_id + '" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
			else $('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + domain_id + '+(by+' + kind + ')" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
			$('#rep_db_link_' + db).css('display','block');
		}
	}
	
	function printMainLinks ( linkID, num, tail, threshold_check, error )
	{
		if ( error == 0 )
		{
			if ( linkID == 0 )
			{
				if ( $('#r-block-' + linkID ).hasClass('left-menu-item-none') ) $('#r-block-' + linkID ).removeClass('left-menu-item-none').addClass('left-menu-item');
				else if ( $('#r-block-' + linkID ).hasClass('left-menu-item-none-active') ) $('#r-block-' + linkID ).removeClass('left-menu-item-none-active').addClass('left-menu-item-active');
				$('#r-block-' + linkID + ' a' ).attr('href', db_prefix + '/info/' + domain_id );
			}
			else
			{
				if ( num != 0 )
				{
					if ( $('#r-block-' + linkID ).hasClass('left-menu-item-none') ) $('#r-block-' + linkID ).removeClass('left-menu-item-none').addClass('left-menu-item');
					else if ( $('#r-block-' + linkID ).hasClass('left-menu-item-none-active') ) $('#r-block-' + linkID ).removeClass('left-menu-item-none-active').addClass('left-menu-item-active');
					$('#r-block-' + linkID + ' a' ).attr('href', db_prefix + '/info/' + domain_id + tail );
					$('#r-block-' + linkID + ' .left-menu-multi' ).html( getPowerNum ( num ) );
					$('#r-block-' + linkID + ' .left-menu-num' ).html( getRoundedNum ( num, threshold_check ) );
				}
				else
				{
					$('#r-block-' + linkID + ' .left-menu-num' ).html( 0 );
					$('#r-block-' + linkID + ' .left-menu-multi' ).html( '&nbsp;' );
				}
			}
		}
		else
		{
			if ( $('#r-block-' + linkID ).hasClass('left-menu-item-none') ) $('#r-block-' + linkID ).removeClass('left-menu-item-none').addClass('left-menu-item');
			else if ( $('#r-block-' + linkID ).hasClass('left-menu-item-none-active') ) $('#r-block-' + linkID ).removeClass('left-menu-item-none-active').addClass('left-menu-item-active');
			$('#r-block-' + linkID + ' a' ).attr('href', db_prefix + '/info/' + domain_id + tail );
			$('#r-block-' + linkID + ' .left-menu-num' ).html( '&nbsp;' );
			$('#r-block-' + linkID + ' .left-menu-multi' ).html( '&nbsp;' );
		}
	}
	
	function getRoundedNum ( num, threshold_check )
	{
		if ( parseInt(num) != 0 )
		{
			if ( ( threshold_check == 1 && parseInt(num) >= r_thd ) || threshold_check == 0 )
			{
				var str = new String( num );
				if ( str.length < 4 ) return num;
				else if ( str.length > 3 && str.length < 7 ) return ( num / 1000 ).toFixed(1);
				else return ( num / 1000000 ).toFixed(1);
			}
			else return '&lt;&nbsp;' + r_thd;
		}
		else return '0';
	}
	
	function getPowerNum ( num )
	{
		var str = new String( num );
		if ( str.length < 4 ) return '&nbsp;';
		else if ( str.length > 3 && str.length < 7 ) return 'k';
		else return 'm';
	}
	
	function setRankReport ( data, db )
	{
		if ( data.rank == undefined ) return false;
		if ( parseInt(data.rank.total) != 0 )
		{
			
			if ( db == 'us' ) var path = '';
			else var path = '/' + db;
			
			if ( Number(data.rank.data[0].Or) > 0 )
			{
				var a = $('<a>').attr('href', path + '/info/' + data.rank.domain + '+(by+organic)').addClass('ranks-reports-item').html( r_res2 + ' ' + rr_in + ' <span class="ranks-reports-item-db">' + seDBdata[db].db + '</span> <span class="ranks-reports-item-se">(' + seDBdata[db].sel + ')</span>: ' + breakToThreeComa(data.rank.data[0].Or) );
				$('#rr-org').append(a);
			}
			else
			{
				var div = $('<div>').addClass('ranks-reports-item-div').html( r_res2 + ' ' + rr_in + ' <span class="ranks-reports-item-db">' + seDBdata[db].db + '</span> <span class="ranks-reports-item-se">(' + seDBdata[db].sel + ')</span>: 0' );
				$('#rr-org').append(div);
			}
			
			if ( Number(data.rank.data[0].Ad) > 0 )
			{
				var a = $('<a>').attr('href', path + '/info/' + data.rank.domain + '+(by+adwords)').addClass('ranks-reports-item').html( r_res2 + ' ' + rr_in + ' <span class="ranks-reports-item-db">' + seDBdata[db].db + '</span> <span class="ranks-reports-item-se">(' + seDBdata[db].sel + ')</span>: ' + breakToThreeComa(data.rank.data[0].Ad) );
				$('#rr-adw').append(a);
			}
			else
			{
				var div = $('<div>').addClass('ranks-reports-item-div').html( r_res2 + ' ' + rr_in + ' <span class="ranks-reports-item-db">' + seDBdata[db].db + '</span> <span class="ranks-reports-item-se">(' + seDBdata[db].sel + ')</span>: 0' );
				$('#rr-adw').append(div);
			}
		}
	}
	
	function setRankInfo(inc_data, db, cul)
	{
		if ( inc_data.rank == undefined ) return false;
		if ( parseInt(inc_data.rank.total) != 0 )
		{
			
			$('#container_' + db + '_01').html(roundNum(inc_data.rank.data[0].Rk));
			$('#container_' + db + '_02').html(roundNum(inc_data.rank.data[0].Ot));
			$('#container_' + db + '_03').html('$' + roundNum(inc_data.rank.data[0].Oc));
			$('#container_' + db + '_04').html(roundNum(inc_data.rank.data[0].At));
			$('#container_' + db + '_05').html('$' + roundNum(inc_data.rank.data[0].Ac));
			
			if ( db == cu_db )
			{
				printMainLinks ( 0, 0, '', 0 );
				printMainLinks ( 1, inc_data.rank.data[0].Or, '+(by+organic)', 0, 0 );
				printMainLinks ( 2, inc_data.rank.data[0].Ad, '+(by+adwords)', 0, 0 );
				printMainLinks ( 3, inc_data.rank.data[0].Oo, '+(by+organic_organic)', 1, 0 );
				printMainLinks ( 4, inc_data.rank.data[0].Aa, '+(by+adwords_adwords)', 1, 0 );
				printMainLinks ( 5, inc_data.rank.data[0].Ad, '+(by+ads)', 0, 0 );
				printMainLinks ( 6, inc_data.rank.data[0].Oa, '+(by+organic_adwords)', 1, 0 );
				printMainLinks ( 7, inc_data.rank.data[0].Ao, '+(by+adwords_organic)', 1, 0 );
				printMainLinks ( 8, 0, '+(seopivot)', 0 );
				
			}
			else
			{
				
				if ( db == 'us' ) var ins_db = '.com';
				else if ( db == 'uk' ) var ins_db = '.co.uk';
				else if ( db == 'br' ) var ins_db = '.com.br';
				else if ( db == 'au' ) var ins_db = '.com.au';
				else var ins_db = '.' + db;
				if ( db == 'us' ) var db_zurl = '';
				else var db_zurl = '/' + db;
				
				if ( kind == 'overview' ) {
				
					$('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + inc_data.rank.domain + '" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
					
				}
				else if ( kind == 'organic' )
				{
					if ( inc_data.rank.data[0].Or > 0 )  $('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+organic)" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
					else $('#rep_db_link_' + db).html('<div class="db_menu_gray" title="' + r_nodata + '">' + seDBdata[db].db + '</div>');
				}
				else if ( kind == 'adwords' )
				{
					if ( inc_data.rank.data[0].Ad > 0 )  $('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+adwords)" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
					else $('#rep_db_link_' + db).html('<div class="db_menu_gray" title="' + r_nodata + '">' + seDBdata[db].db + '</div>');
				}
				else if ( kind == 'ads' )
				{
					if ( inc_data.rank.data[0].Ad > 0 )  $('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+ads)" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
					else $('#rep_db_link_' + db).html('<div class="db_menu_gray" title="' + r_nodata + '">' + seDBdata[db].db + '</div>');
				}
				else if ( kind == 'organic_organic' )
				{
					if ( inc_data.rank.data[0].Oo > 0 )  $('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+organic_organic)" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
					else $('#rep_db_link_' + db).html('<div class="db_menu_gray" title="' + r_nodata + '">' + seDBdata[db].db + '</div>');
				}
				else if ( kind == 'adwords_adwords' )
				{
					if ( inc_data.rank.data[0].Aa > 0 )  $('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+adwords_adwords)" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
					else $('#rep_db_link_' + db).html('<div class="db_menu_gray" title="' + r_nodata + '">' + seDBdata[db].db + '</div>');
				}
				else if ( kind == 'organic_adwords' )
				{
					if ( inc_data.rank.data[0].Oa > 0 )  $('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+organic_adwords)" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
					else $('#rep_db_link_' + db).html('<div class="db_menu_gray" title="' + r_nodata + '">' + seDBdata[db].db + '</div>');
				}
				else if ( kind == 'adwords_organic' )
				{
					if ( inc_data.rank.data[0].Ao > 0 )  $('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+adwords_organic)" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
					else $('#rep_db_link_' + db).html('<div class="db_menu_gray" title="' + r_nodata + '">' + seDBdata[db].db + '</div>');
				}
				else if ( kind == 'seopivot' )
				{
					if ( inc_data.rank.data[0].Or > 0 )  $('#rep_db_link_' + db).html('<a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(seopivot)" title="' + rt_alls + ' ' + seDBdata[db].sel + '">' + seDBdata[db].db + '</a>');
					else $('#rep_db_link_' + db).html('<div class="db_menu_gray" title="' + r_nodata + '">' + seDBdata[db].db + '</div>');
				}
				
				$('#rep_db_link_' + db).css('display','block');
				
				if ( inc_data.rank.data[0].Or > 0 )
				{
					var div = $('<div>').addClass( 'report_nf_links' ).html( r_nf_found + ' <span class="nf_numres">' + breakToThree ( inc_data.rank.data[0].Or ) + '</span> ' + r_nf_results + ' ' + seDBdata[db].sel + ' - <a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+organic)">' + r_nf_view + '</a>' );
					div_nf.org.append( div );
				}
				
				if ( inc_data.rank.data[0].Ad > 0 )
				{
					var div = $('<div>').addClass( 'report_nf_links' ).html( r_nf_found + ' <span class="nf_numres">' + breakToThree ( inc_data.rank.data[0].Ad ) + '</span> ' + r_nf_results + ' ' + seDBdata[db].sel + ' - <a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+adwords)">' + r_nf_view + '</a>' );
					div_nf.adw.append( div );
				}
				
				if ( inc_data.rank.data[0].Oo > 0 )
				{
					var div = $('<div>').addClass( 'report_nf_links' ).html( r_nf_found + ' <span class="nf_numres">' + breakToThree ( inc_data.rank.data[0].Oo ) + '</span> ' + r_nf_results + ' ' + seDBdata[db].sel + ' - <a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+organic_organic)">' + r_nf_view + '</a>' );
					div_nf.org_org.append( div );
				}
				
				if ( inc_data.rank.data[0].Aa > 0 )
				{
					var div = $('<div>').addClass( 'report_nf_links' ).html( r_nf_found + ' <span class="nf_numres">' + breakToThree ( inc_data.rank.data[0].Aa ) + '</span> ' + r_nf_results + ' ' + seDBdata[db].sel + ' - <a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+adwords_adwords)">' + r_nf_view + '</a>' );
					div_nf.adw_adw.append( div );
				}
				
				if ( inc_data.rank.data[0].Ad > 0 )
				{
					var div = $('<div>').addClass( 'report_nf_links' ).html( r_nf_found + ' <span class="nf_numres">' + breakToThree ( inc_data.rank.data[0].Ad ) + '</span> ' + r_nf_results + ' ' + seDBdata[db].sel + ' - <a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+ads)">' + r_nf_view + '</a>' );
					div_nf.ads.append( div );
				}
				
				if ( inc_data.rank.data[0].Oa > 0 )
				{
					var div = $('<div>').addClass( 'report_nf_links' ).html( r_nf_found + ' <span class="nf_numres">' + breakToThree ( inc_data.rank.data[0].Oa ) + '</span> ' + r_nf_results + ' ' + seDBdata[db].sel + ' - <a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+organic_adwords)">' + r_nf_view + '</a>' );
					div_nf.org_adw.append( div );
				}
				
				if ( inc_data.rank.data[0].Ao > 0 )
				{
					var div = $('<div>').addClass( 'report_nf_links' ).html( r_nf_found + ' <span class="nf_numres">' + breakToThree ( inc_data.rank.data[0].Ao ) + '</span> ' + r_nf_results + ' ' + seDBdata[db].sel + ' - <a href="' + db_zurl + '/info/' + inc_data.rank.domain + '+(by+adwords_organic)">' + r_nf_view + '</a>' );
					div_nf.adw_org.append( div );
				}
			}
		}
		else
		{
			$('#container_' + db + '_01').html('n/a');
			$('#container_' + db + '_02').html('n/a');
			$('#container_' + db + '_03').html('n/a');
			$('#container_' + db + '_04').html('n/a');
			$('#container_' + db + '_05').html('n/a');
			$('#rep_db_link_' + db).html('<div class="db_menu_gray" title="' + r_nodata + '">' + seDBdata[db].db + '</div>');
			$('#rep_db_link_' + db).css('display','block');
		}
	}
	
	function roundNum ( num )
	{
		if ( num == undefined ) return '0';
		else if ( parseInt(num) < 1000 )
		{
			var r_num = String( parseInt( num ) );
			return r_num;
		}
		else if ( parseInt(num) >= 1000 && parseInt(num) < 10000 )
		{
			var r_num = ( Math.round( num / 100 ) / 10 );
			return breakToThreeComa ( r_num ) + 'k';
		}
		else
		{
			var r_num = ( Math.round( num / 1000 ) );
			return breakToThreeComa ( r_num ) + 'k';
		}
		
	}
	
	function roundNumWithPower ( num )
	{
		if ( parseInt(num) != 0 )
		{
			var str = new String( num );
			if ( str.length < 4 ) return num;
			else if ( str.length > 3 && str.length < 7 ) return ( ( num / 1000 ).toFixed(1) ) + 'k';
			else return ( ( num / 1000000 ).toFixed(1) ) + 'm';
		}
		else return '0';
	}
	
	function setRankInfoCC(inc_data,num)
	{
		if ( parseInt(inc_data.rank.total) != 0 )
		{
			$('#container_d' + num + '_01').html(roundNumWithPower(inc_data.rank.data[0].Rk));
			$('#container_d' + num + '_02').html(roundNumWithPower(inc_data.rank.data[0].Ot));
			$('#container_d' + num + '_03').html('$' + roundNumWithPower(inc_data.rank.data[0].Oc));
			$('#container_d' + num + '_04').html(roundNumWithPower(inc_data.rank.data[0].At));
			$('#container_d' + num + '_05').html('$' + roundNumWithPower(inc_data.rank.data[0].Ac));
		}
		else
		{
			$('#container_d' + num + '_01').html('n/a');
			$('#container_d' + num + '_02').html('n/a');
			$('#container_d' + num + '_03').html('n/a');
			$('#container_d' + num + '_04').html('n/a');
			$('#container_d' + num + '_05').html('n/a');
		}
	}
	
	function errorSetRankInfoCC(num)
	{
		$('#container_d' + num + '_01').html('error');
		$('#container_d' + num + '_02').html('error');
		$('#container_d' + num + '_03').html('error');
		$('#container_d' + num + '_04').html('error');
		$('#container_d' + num + '_05').html('error');
	}
	


function createTable ( tableClass )
{
	var table = $('<table>');

	table.attr( 'border', '0' );
	table.attr( 'width', '100%' );
	table.attr( 'cellspacing', '0' );
	table.attr( 'cellpadding', '0' );
	table.addClass( tableClass );
	
	return table;
}

function createTableHeader ( vars )
{
	var tr = $('<tr>');
	
	$.each( vars, function( i, item )
	{
		var th = $('<th>');
		if ( item[ 'num' ] == 'double' ) th.attr('colspan','2');
		if ( i == 0 ) th.addClass('table-header-first-cell');
		
		if ( item[ 'num' ] == 'double' )
		{
			if ( item[ 'order' ] != undefined )
			{
				th.html( item[ 'title' ] );
				
				if ( item[ 'order' ].substring(0,2) == item[ 'name' ] ) 
				{
					if ( item[ 'name' ] + '_desc' == item[ 'order' ] ) th.addClass('order-header-active').css('background-color','#e9e9e9');
					else th.addClass('order-header-active-top').css('background-color','#e9e9e9');
				}

				var a_desc = $('<a>').addClass('double-sort-link-first').attr('href',db_prefix + '/info/' + difference_path + '?order=' + item[ 'name' ] + '_desc').html('&#9660;');
				var a_asc = $('<a>').addClass('double-sort-link').attr('href',db_prefix + '/info/' + difference_path + '?order=' + item[ 'name' ] + '_asc').html('&#9650;');
				th.append( a_desc );
				th.append( a_asc );
			}
			else th.html( item[ 'title' ] );
		}
		else
		{
			if ( item[ 'order' ] != undefined )
			{
				if ( item[ 'order' ] == item[ 'name' ] )
				{
					th.html( item[ 'title' ] ).addClass('order-header-active').css('background-color','#e9e9e9');
				}
				else
				{
					var page = display_page + 1;
					if ( kind != undefined && kind == 'seopivot' ) var a = $('<a>').attr( 'href', db_prefix + '/info/' + domain_id + '+(' + kind + ')?sort=' + item[ 'name' ] + '&page=' + page ).html( item[ 'title' ] );
					else var a = $('<a>').attr( 'href', db_prefix + '/info/' + domain_id + '+(by+' + kind + ')?sort=' + item[ 'name' ] + '&page=' + page ).html( item[ 'title' ] );
					th.append( a ).addClass('order-header-nonactive');
				}
			}
			else th.html( item[ 'title' ] );
		}
		
		var div = $('<div>').addClass('table-help-sign');
		var div_tip = $('<div>').addClass('table-tip').html( item[ 'tip' ] );
		if ( item[ 'pos' ] == 1 ) div_tip.addClass('table-tip-left');
		
		div.append( div_tip );
		th.append( div );
		
		tr.append( th );
		
	});
	
	return tr;
}

function createHeaderLine ( pos, num, tip, title )
{
	var line = new Object;
	line.pos = pos;
	line.num = num;
	line.tip = tip;
	line.title = title;
	
	return line;
}

function createHeaderLineOrder ( pos, num, tip, title, name, order )
{
	var line = new Object;
	line.pos = pos;
	line.num = num;
	line.tip = tip;
	line.title = title;
	line.name = name;
	line.order = order;
	
	return line;
}

function displayResQuantity ( title, num_from, num_to, num_total, type )
{
	if ( type == 1 ) return '<h2>' + title + '</h2> - ' + breakToThreeComa ( num_total );
	else return r_res_f + ' ' + num_from + ' ' + r_res_t + ' ' + num_to + ' ' + r_res_oo + ' ' + breakToThreeComa ( num_total );
}

function getObjectLength ( input )
{
	var length = 0, key;
	for ( key in input )
	{
		if ( input.hasOwnProperty( key ) ) length++;
	}
	
	return length;
}

function dispRepNumRes ( num, tail )
{
	$('#rep_link_' + tail + ' .left-menu-multi' ).html( getPowerNum ( num ) );
	$('#rep_link_' + tail + ' .left-menu-num' ).html( getRoundedNum ( num, 0 ) );
}

function dispRepLinks ( tail, request_tail, type )
{
	if ( type == 'url' )
	{
		if ( $('#rep_link_' + tail ).hasClass('left-menu-item-none') ) $('#rep_link_' + tail ).removeClass('left-menu-item-none').addClass('left-menu-item');
		else if ( $('#rep_link_' + tail ).hasClass('left-menu-item-none-active') ) $('#rep_link_' + tail ).removeClass('left-menu-item-none-active').addClass('left-menu-item-active');
		$('#rep_link_' + tail + ' a' ).attr('href', db_prefix + '/search.php?q=' + url_enc + '+(by+' + request_tail + ')' );
	}
	else if ( type == 'phrase' )
	{
		if ( $('#rep_link_' + tail ).hasClass('left-menu-item-none') ) $('#rep_link_' + tail ).removeClass('left-menu-item-none').addClass('left-menu-item');
		else if ( $('#rep_link_' + tail ).hasClass('left-menu-item-none-active') ) $('#rep_link_' + tail ).removeClass('left-menu-item-none-active').addClass('left-menu-item-active');
		$('#rep_link_' + tail + ' a' ).attr('href', db_prefix + '/info/' + phrase_idr + '+(' + request_tail + ')' );
	}
	else if ( type == 'domain' )
	{
		if ( $('#rep_link_' + tail ).hasClass('left-menu-item-none') ) $('#rep_link_' + tail ).removeClass('left-menu-item-none').addClass('left-menu-item');
		else if ( $('#rep_link_' + tail ).hasClass('left-menu-item-none-active') ) $('#rep_link_' + tail ).removeClass('left-menu-item-none-active').addClass('left-menu-item-active');
		$('#rep_link_' + tail + ' a' ).attr('href', db_prefix + '/info/' + domain_id_0 + '+vs+' + domain_id_1 + '+(by+' + request_tail + ')' );
	}
	
}

// Functions displaying single column elements
//
function dispKw ( kw, first ) // Display keyword
{
	var td = $('<td>');
	if ( kw.length > 0 ) td.html('<a href="' + db_prefix + '/info/' + encodeURIComponent(kw) + ' (keyword)">' + clipWord(kw, 30) + '</a>');
	else
	{
		td.attr( 'align', 'center' );
		td.html( '<a href="' + db_prefix + '/limit.html"' + add_reg_form + '>' + r_uplim + '</a>' );
	}
	if ( first == 0 ) td.addClass('table-first-cell');
	
	return td;
}

function dispSource (kw) // Display link to keyword SERP
{
	var td = $('<td>');
	var a = $('<a>').addClass('serp-link').html('&nbsp;');
	if ( kw.length > 0 ) a.attr({'target':'_blank','href':db_prefix + '/info/' + encodeURIComponent(kw) + ' (source)'});
	else a.attr({'target':'_blank','href':db_prefix + '/limit.html'});
	return td.append(a);
}

function dispDiffNum ( num, name, order ) // Display number for difference
{
	var td = $('<td>').attr({'align':'left','valign':'middle'}).css({'white-space':'nowrap','padding-left':'2px','padding-top':'6px','padding-bottom':'5px','font-size':'10px'}).html( '(' + breakToThreeComa ( num ) + ')' );
	if ( name == order.substring(0,2) ) td.css( 'background-color', '#fffeed' );
	return td;
}

function dispDiffDel ( num, name, order, percent ) // Display delta for difference
{
	var td = $('<td>').attr({'align':'right','title':percent}).css({'white-space':'nowrap','border-right':'0px','padding-right':'2px'});
	if ( name == order.substring(0,2) ) td.css( 'background-color', '#fffeed' );
	if ( num < 0 ) td.css('color','#c00').html( '-' + breakToThreeComa ( ( -1 * num ) ) );
	else if ( num > 0 ) td.css('color','#090').html( breakToThreeComa ( num ) );
	else td.html( num );
	return td;
}

function dispNum ( num, sort, i, kw, field ) // Display simple number (sorted or not)
{
	var td = $('<td>').attr( 'align', 'right' );
	if ( sort == field && kw.length > 0 ) td.css( 'background-color', '#fffeed' );
	if ( sort == 'first_elem' ) td.addClass('table-first-cell');
	td.text ( num );
	
	return td;
}

function dispBacklinkLink ( member )
{
	var	td				 = $('<td>').addClass('table-first-cell'),
		c				 = $('<div>'),
		t				 = $('<div>'),
		u				 = $('<div>').addClass('backlinks-divlinks'),
		a				 = $('<a>'),
		tl				 = $('<div>').addClass('backlinks-divlinks'),
		tla				 = $('<a>'),
		stu				 = $('<span>').addClass('backlinks-tslink-span').text('Target URL:'),
		ssu				 = $('<span>').addClass('backlinks-tslink-span').text('Source URL:'),
		trimmedURL		 = member.uu,
		trimmedTitle;
	
	if 	( member.uu.length == 0 ) {
		
		td.attr( 'align', 'center' );
		a.attr('href',db_prefix + '/limit.html').text(r_uplim);
		
	} else if	( member.uu.length > 60 ) {
		
		trimmedURL		 = strClipOld (member.uu,60,'right',false,false);
						   u.attr('title',member.uu);
						
						   u.append(ssu);
						
		if	( member.uu.substring(0,7) != 'http://' ) {

						   a.attr('href','http://' + member.uu).text(trimmedURL);

		} else {

						   a.attr('href',member.uu).text(trimmedURL);

		}
		
	} else {
		
						   u.append(ssu);
		
		if	( member.uu.substring(0,7) != 'http://' ) {
			
						   a.attr('href','http://' + member.uu).text(trimmedURL);
			
		} else {
			
						   a.attr('href',member.uu).text(trimmedURL);
			
		}
		
	}
	
	if	( member.ut != undefined && member.ut.length > 0 ) {
		
		if	( member.ut.length > 100 ) {

			trimmedTitle = strClipOld (member.ut,100,'right',false,false);
						   t.attr('title',member.ut);

		} else {
			
			trimmedTitle = member.ut;
			
		}
		
		t.html(trimmedTitle);
		t.addClass('backlinks-titles');
		c.append(t);
		
	}
	
		u.append(a);
		c.append(u);
	
	if 	( member.uu.length > 0 && member.luuu != undefined && member.luuu.length > 0 ) {
		
		var	clluuu;
		
		if	( member.luuu.length > 60 ) {

			clluuu		 = strClipOld (member.luuu,60,'right',false,false);
						   tla.attr('title',member.luuu);
						
						   tl.append(stu);

			if	( member.luuu.substring(0,7) != 'http://' ) {

							   tla.attr('href','http://' + member.luuu).text(clluuu);

			} else {

							   tla.attr('href',member.luuu).text(clluuu);

			}
			
		} else {
			
			clluuu		 = member.luuu;
						   tl.append(stu);
			
			if	( member.luuu.substring(0,7) != 'http://' ) {

							   tla.attr('href','http://' + member.luuu).text(clluuu);

			} else {

							   tla.attr('href',member.luuu).text(clluuu);

			}
			
		}
		
		
		tl.append(tla);
		c.append(tl);
		
		
	}
	
		return td.append(c);
}

function dispBacklinkAnchor ( member )
{
	var td = $('<td>').attr( 'align', 'left' );
	
	if	( member.lnt.length > 0 ) {
		
		td.html(member.lnt);
		td.addClass('backlinks-anchors');
		
	} else {
		
		td.html('&nbsp;');
		
	}
	
	return td;
}

function dispKwPos ( line, sort, i, field ) // Display position with previous position
{
	var td = $('<td>').attr( 'align', 'right' );
	td.css('width','40px');
	if ( sort == field && line.Ph.length > 0 ) td.css( 'background-color', '#fffeed' );
	td.text ( line.Po );
	var span = $('<span>').addClass('pp-v2');
	if ( line.Pp == undefined || line.Pp == null || line.Pp == '0' ) span.html('&nbsp;');
	else span.text('(' + line.Pp + ')');
	td.append ( span );

	return td;
}

function dispPivotPos ( line, sort, i, field ) // Display PIVOT position with previous position
{
	var td = $('<td>').attr( 'align', 'right' );
	td.css('width','55px');
	if ( sort == field && line.Ph.length > 0 ) td.css( 'background-color', '#fffeed' );
	td.text ( line.Po );
	var span = $('<span>').addClass('pp-piv-v2');
	if ( line.Pp == undefined || line.Pp == null || line.Pp == '0' ) span.html('&nbsp;');
	else span.text('(' + line.Pp + ')');
	td.append ( span );

	return td;
}

function dispLNum ( num ) // Display long number (broken into 3-s)
{
	var td = $('<td>').attr( 'align', 'right' ).html( breakToThreeComa ( num ) );
	return td;
}

function dispLNumPos ( num ) // Display long number (broken into 3-s)
{
	var td = $('<td>').attr( 'align', 'right' ).addClass('table-first-cell').html( breakToThreeComa ( num ) );
	return td;
}

function dispURL ( url, v_url, kw ) // Display URL
{
	var td = $('<td>');
	if ( kw.length > 0 )
	{
		if ( url == v_url )
		{
			var adw_key = 0;
			var add_v_url = '';
			td.html( '<nobr><a style="margin-right: 3px;" href="' + decodeURIComponent( url ) + '" target="_blank" title="' + url + '"><img src="' + media_url + '/images/url_icon.gif" border="0" /></a><a href="' + db_prefix + '/search.php?q=' + encodeURIComponent( add_v_url + v_url ) + '" title="' + decodeURIComponent( v_url ) + '">' + clipString3( v_url, 30, adw_key ) + '</a></nobr>' );
		}
		else
		{
			adw_key = 1;
			if ( v_url.substring(0,7) != 'http://' && v_url.substring(0,8) != 'https://' ) var add_v_url = 'http://';
			else  var add_v_url = '';
			td.html( '<nobr><a style="margin-right: 3px;" href="' + decodeURIComponent( url ) + '" target="_blank" title="' + url + '"><img src="' + media_url + '/images/url_icon.gif" border="0" /></a><a href="' + db_prefix + '/search.php?q=' + encodeURIComponent( add_v_url + v_url ) + '" title="' + v_url + '">' + clipString3( replaceLG( v_url ), 25, adw_key ) + '</a></nobr>' );
		}
	}
	else
	{
		td.attr( 'align', 'center' );
		if ( url != v_url && r_uplim_adw.length > 0 ) td.html( '<span style="font-size: 10px;">' + r_uplim_adw + '</span>' );
		else td.html( '<a href="' + db_prefix + '/limit.html"' + add_reg_form + '>' + r_uplim + '</a>' );
	}
	
	return td;
}

function replaceLG ( input )
{
	var output = input.replace( /&lt;b&gt;/gi, '' );
	return output.replace( /&lt;\/b&gt;/gi, '' );
}

function dispURLPh ( url, v_url, kw ) // Display URL
{
	var td = $('<td>');
	if ( url == v_url )
	{
		var adw_key = 0;
		var add_v_url = '';
		td.html( '<nobr><a style="margin-right: 3px;" href="' + decodeURIComponent( url ) + '" target="_blank" title="' + decodeURIComponent( url ) + '"><img src="' + media_url + '/images/url_icon.gif" border="0" /></a><a href="' + db_prefix + '/search.php?q=' + encodeURIComponent( add_v_url + v_url ) + '" title="' + decodeURIComponent( v_url ) + '">' + clipString3( v_url, 30, adw_key ) + '</a></nobr>' );
	}
	else
	{
		adw_key = 1;
		if ( v_url.substring(0,7) != 'http://' && v_url.substring(0,8) != 'https://' ) var add_v_url = 'http://';
		else  var add_v_url = '';
		td.html( '<nobr><a style="margin-right: 3px;" href="' + decodeURIComponent( url ) + '" target="_blank" title="' + decodeURIComponent( url ) + '"><img src="' + media_url + '/images/url_icon.gif" border="0" /></a><a href="' + db_prefix + '/search.php?q=' + encodeURIComponent( add_v_url + v_url ) + '" title="' + v_url + '">' + clipString3( replaceLG( v_url ), 25, adw_key ) + '</a></nobr>' );
	}
	
	return td;
}

function dispTrend ( data ) // Display Trend data
{
	var td = $('<td>').attr( 'align', 'center' );
	td.html( makeTrend ( data ) );
	
	return td;
}

function dispAd ( url, txt, desc, v_url, kw ) // Display Ad 
{
	var td = $('<td>').attr( 'align', 'center' ).addClass('table-first-cell').addClass('ads-wr-open');
	if ( kw.length > 0 )
	{
		txt = txt.replace(/<\/a>.+/i, "");
		desc = desc.replace(/<span[^>]*>(.+)?<\/span>/ig, "");
		desc = desc.replace(/<a[^>]*>(.+)?<\/a>/ig, "");
		if ( desc.match(/<table[^>]*>/ig) && !desc.match(/<\/table>/ig) ) desc = '';
		desc = desc.replace(/<table[^>]*>(.+)?<\/table>/ig, "");
		desc = desc.replace(/&nbsp;$/ig, "");
		desc = desc.replace(/<br>$/ig, "");
		
		var img = $('<img>').attr({'src':media_url + '/images/document_comment.gif','width':'18','height':'18','alt':r_shad,'title':r_shad}).css('cursor','pointer');
		var div = $('<div>').addClass('ads-wr');
		var divttl = $('<a>').addClass('ads-ln').attr({'href':decodeURIComponent(url),'target':'_blank'}).html(txt);
		var divcl = $('<div>').addClass('ads-cl').text('x');
		var divd = $('<div>').addClass('ads-d').html(desc);
		var cite = $('<cite>').addClass('ads-cite').html(v_url);
		
		div.append( divttl );
		div.append( divcl );
		div.append( divd );
		div.append( cite );
		
		td.append( div );
		td.append( img );
	}
	else td.html( '<img src="' + media_url + '/images/document_comment_grey.gif" width="18px" height="18px" alt="" title="">' );
	
	return td;
}

function dispDom ( domain, adsense, first ) // Display domain
{
	var td = $('<td>');
	if ( first == 1 ) td.addClass('table-first-cell');
	if ( domain.length > 0 )
	{
		if ( typeof( adsense ) != "undefined" && parseInt( adsense ) == 1 ) var startAds = new String( '<img style="margin-bottom: 1px;" src="' + media_url + '/images/ga1.gif" width="43px" height="6px" alt="' + r_adpr + '" title="' + r_adpr + '" />' );
		else var startAds = '';
		td.html( '<nobr><a href="http://' + domain + '/" title="' + domain + '" target="_blank"><img src="' + media_url + '/images/url_icon.gif" border="0"/></a>&nbsp;<a href="' + db_prefix + '/info/' + domain + '" title="' + domain + '">' + clipString4 ( domain, 25 ) + '</a>&nbsp;&nbsp;' + startAds + '</nobr>' );
	}
	else
	{
		td.attr( 'align', 'center' );
		td.html( '<a href="' + db_prefix + '/limit.html"' + add_reg_form + '>' + r_uplim + '</a>' );
	}
	
	return td;
}

function dispDomPh ( domain, adsense, first ) // Display domain
{
	var td = $('<td>');
	if ( first == 1 ) td.addClass('table-first-cell');
	if ( domain.length > 0 )
	{
		if ( typeof( adsense ) != "undefined" && parseInt( adsense ) == 1 ) var startAds = new String( '<img style="margin-bottom: 1px;" src="' + media_url + '/images/ga1.gif" width="43px" height="6px" alt="' + r_adpr + '" title="' + r_adpr + '" />' );
		else var startAds = '';
		td.html( '<nobr><a href="http://' + domain + '/" title="' + domain + '" target="_blank"><img src="' + media_url + '/images/url_icon.gif" border="0"/></a>&nbsp;<a href="' + db_prefix + '/info/' + domain + '" title="' + domain + '">' + clipString4 ( domain, 25 ) + '</a>&nbsp;&nbsp;' + startAds + '</nobr>' );
	}
	else
	{
		td.attr( 'align', 'center' );
		td.html( '&nbsp;' );
	}
	
	return td;
}


function dispDomRedir ( domain, adsense, first ) // Display domain with redirect
{
	var td = $('<td>');
	if ( first == 1 ) td.addClass('table-first-cell');
	if ( domain.length > 0 )
	{
		if ( typeof( adsense ) != "undefined" && parseInt( adsense ) == 1 ) var startAds = new String( '<img style="margin-bottom: 1px;" src="' + media_url + '/images/ga1.gif" width="43px" height="6px" alt="' + r_adpr + '" title="' + r_adpr + '" />' );
		else var startAds = '';
		td.html( '<nobr><a href="http://' + domain + '/" title="' + domain + '" target="_blank"><img src="' + media_url + '/images/url_icon.gif" border="0"/></a>&nbsp;<a href="' + db_prefix + '/info/' + domain + '" title="' + domain + '">' + clipString4 ( domain, 25 ) + '</a>&nbsp;&nbsp;' + startAds + '</nobr>' );
	}
	else
	{
		td.attr( 'align', 'center' );
		td.html( '<a href="' + db_prefix + '/limit.html"' + add_reg_form + '>' + r_uplim + '</a>' );
	}
	
	return td;
}

function dispCKw ( domain, main_domain, kws, request_type ) // Display common keywords
{
	var td = $('<td>');
	if ( domain.length > 0 )
	{
		td.attr( 'align', 'right' );
		td.html( '<a href="' + db_prefix + '/info/' + main_domain + '+vs+' + domain + '+(by+' + request_type + ')">' + breakToThreeComa ( kws ) + '</a>' );
	}
	else
	{
		td.attr( 'align', 'center' );
		td.html( '<a href="' + db_prefix + '/limit.html"' + add_reg_form + '>' + r_uplim + '</a>' );
	}
	
	return td;
}

function dispRoundNum ( num ) // Display round number
{
	var td = $('<td>').attr( 'align', 'right' ).text( calcRound3( num ) );
	return td;
}

function dispRoundNumWithA ( num, path ) // Display round number
{
	var td = $('<td>').attr( 'align', 'right' );
	var a = $('<a>').attr('href',path).text( calcRound3( num ) );
	td.append(a);
	return td;
}
//
// End functions displaying single column elements

// Functions displaying report types
//

function dispRankDifference ( tr, member, i, order )
{
	//var current_pos = display_page * 100 + parseInt(i) + 1;
	var current_pos = parseInt(i) + 1;
	tr.append ( dispLNumPos ( current_pos ) ); // Place
	tr.append ( dispDomRedir ( member.Dn, member.As, 0 ) ); // Domain
	tr.append ( dispLNum ( member.Rk ) ); // Rank
	tr.append ( dispDiffDel ( member.Om, 'om', order, countPercent ( member.Om, member.Or ) ) ); // Organic num delta
	tr.append ( dispDiffNum ( member.Or, 'om', order ) ); // Organic num
	tr.append ( dispDiffDel ( member.Tm, 'tm', order, countPercent ( member.Tm, member.Ot ) ) ); // Organic traffic delta
	tr.append ( dispDiffNum ( member.Ot, 'tm', order ) ); // Organic traffic
	tr.append ( dispDiffDel ( member.Um, 'um', order, countPercent ( member.Um, member.Oc ) ) ); // Organic cost delta
	tr.append ( dispDiffNum ( member.Oc, 'um', order ) ); // Organic cost
	tr.append ( dispDiffDel ( member.Am, 'am', order, countPercent ( member.Am, member.Ad ) ) ); // Adwords num delta
	tr.append ( dispDiffNum ( member.Ad, 'am', order ) ); // Adwords num
	tr.append ( dispDiffDel ( member.Bm, 'bm', order, countPercent ( member.Bm, member.At ) ) ); // Adwords traffic delta
	tr.append ( dispDiffNum ( member.At, 'bm', order ) ); // Adwords traffic
	tr.append ( dispDiffDel ( member.Cm, 'cm', order, countPercent ( member.Cm, member.Ac ) ) ); // Adwords cost delta
	tr.append ( dispDiffNum ( member.Ac, 'cm', order ) ); // Adwords cost
}

function countPercent ( difference, currentValue )
{
	if ( difference == 0 ) return '0%';
	else if ( currentValue == difference ) return 'infinity';
	else if (  currentValue == 0 && difference < 0  ) return '-100%';
	else
	{
		var upDown = ( difference / ( ( currentValue - difference ) / 100 ) );
		if ( upDown < 1 && upDown > -1 ) return upDown.toFixed(2) + '%';
		else if ( upDown < 1000 && upDown > -1000 ) return upDown.toFixed(1) + '%';
		else
		{
			if ( upDown < 0 ) return '-' + breakToThreeSpace ( ( -1 * upDown.toFixed(0) ) ) + '%';
			else return breakToThreeSpace ( upDown.toFixed(0) ) + '%';
		}
	}
}

function dispDomainKwReport ( tr, member, i , order, request_type )
{
	if ( request_type == 'adwords' )
	{
		tr.append ( dispAd ( member.Ur,  member.Tt,  member.Ds,  member.Vu, member.Ph ) ); // Kw
		var first_row_ad = 1;
	}
	else var first_row_ad = 0;
	tr.append ( dispKw ( member.Ph, first_row_ad ) ); // Kw
	/*
	if ( member.Pp == undefined || member.Pp == null || member.Pp == 0 ) tr.append ( dispNum ( member.Po, order, i, member.Ph, 'pos' ) ); // Pos
	else tr.append ( dispNumPP ( member.Po, order, i, member.Ph, 'pos', member.PP ) ); // Pos with previous position
	*/
	tr.append ( dispKwPos ( member, order, i, 'pos'  ) ); // Pos
	tr.append ( dispLNum ( member.Nq ) ); // Num queries
	
	if ( cu_db != 'bing-us' ) { // Do not show CPC for BING-US database
	
		tr.append ( dispNum ( member.Cp, order, i, member.Ph, 'cpc' ) ); // Cpc
			
	}
	
	if ( request_type == 'adwords' ) tr.append ( dispURL ( member.Ur, member.Vu, member.Ph ) ); // URL
	else tr.append ( dispURL ( member.Ur, member.Ur, member.Ph ) ); // URL
	tr.append ( dispNum ( member.Tr, order, i, member.Ph, 'traffic' ) ); // Traffic
	tr.append ( dispNum ( member.Tc, order, i, member.Ph, 'costs' ) ); // Traffic costs
	tr.append ( dispNum ( member.Co, order, i, member.Ph, 'comp' ) ); // Competition
	tr.append ( dispLNum ( member.Nr ) ); // Num results
	tr.append ( dispTrend ( member.Td ) ); // Trend
	tr.append ( dispSource ( member.Ph ) ); // Source
}

function dispDomainPivotReport ( tr, member, i , order, request_type )
{
	var first_row_ad = 0;
	tr.append ( dispKw ( member.Ph, first_row_ad ) ); // Kw
	/*
	if ( member.Pp == undefined || member.Pp == null || member.Pp == 0 ) tr.append ( dispNum ( member.Po, order, i, member.Ph, 'pos' ) ); // Pos
	else tr.append ( dispNumPP ( member.Po, order, i, member.Ph, 'pos', member.PP ) ); // Pos with previous position
	*/
	tr.append ( dispPivotPos ( member, order, i, 'pos'  ) ); // Pos
	tr.append ( dispLNum ( member.Nq ) ); // Num queries
	
	if ( cu_db != 'bing-us' ) { // Do not show CPC for BING-US database
	
		tr.append ( dispNum ( member.Cp, order, i, member.Ph, 'cpc' ) ); // Cpc
			
	}
	
	if ( request_type == 'adwords' ) tr.append ( dispURL ( member.Ur, member.Vu, member.Ph ) ); // URL
	else tr.append ( dispURL ( member.Ur, member.Ur, member.Ph ) ); // URL
	tr.append ( dispNum ( member.Pt, order, i, member.Ph, 'traffic' ) ); // Potential
	tr.append ( dispNum ( member.Co, order, i, member.Ph, 'comp' ) ); // Competition
	tr.append ( dispLNum ( member.Nr ) ); // Num results
	tr.append ( dispTrend ( member.Td ) ); // Trend
	tr.append ( dispSource ( member.Ph ) ); // Source
}

function dispDomainCompReport ( tr, member, i , order, request_type )
{
	tr.append ( dispDom ( member.Dn, member.As, 1 ) ); // Domain
	tr.append ( dispCKw ( member.Dn, domain_id, member.Np, request_type ) ); // Common keywords
	if ( request_type == 'organic_organic' || request_type == 'adwords_organic' )
	{
		 // Organic kws
		if ( parseInt( member.Or ) > 0 ) tr.append ( dispRoundNumWithA ( member.Or, db_prefix + '/info/' + member.Dn + '+(by+organic)' ) );
		else tr.append ( dispRoundNum ( member.Or ) );
		
		tr.append ( dispRoundNum ( member.Ot ) ); // Organic traffic
		tr.append ( dispRoundNum ( member.Oc ) ); // Organic costs
		
		// Adwords kws
		if ( parseInt( member.Ad ) > 0 ) tr.append ( dispRoundNumWithA ( member.Ad, db_prefix + '/info/' + member.Dn + '+(by+adwords)' ) );
		else tr.append ( dispRoundNum ( member.Ad ) );
	}
	else
	{
		// Adwords kws
		if ( parseInt( member.Ad ) > 0 ) tr.append ( dispRoundNumWithA ( member.Ad, db_prefix + '/info/' + member.Dn + '+(by+adwords)' ) );
		else tr.append ( dispRoundNum ( member.Ad ) );
		
		tr.append ( dispRoundNum ( member.At ) ); // Adwords traffic
		tr.append ( dispRoundNum ( member.Ac ) ); // Adwords costs
		
		// Organic kws
		if ( parseInt( member.Or ) > 0 ) tr.append ( dispRoundNumWithA ( member.Or, db_prefix + '/info/' + member.Dn + '+(by+organic)' ) );
		else tr.append ( dispRoundNum ( member.Or ) );
	}
}

function dispDomainConcReport ( tr, member, i , order, request_type )
{
	tr.append ( dispKw ( member.Ph, 0 ) ); // Kw
	tr.append ( dispNum ( member.Po, order, i, member.Ph, 'domain' ) ); // Domain position
	tr.append ( dispNum ( member.Pv, order, i, member.Ph, 'vs_domain' ) ); // Vs Domain position
	tr.append ( dispLNum ( member.Nq ) ); // Number of queries
	
	if ( cu_db != 'bing-us' ) { // Do not show CPC for BING-US database
	
		tr.append ( dispNum ( member.Cp, order, i, member.Ph, 'vs_cpc' ) ); // Cpc
			
	}
	
	tr.append ( dispNum ( member.Co, order, i, member.Ph, 'vs_comp' ) ); // Competition
	tr.append ( dispLNum ( member.Nr ) ); // Num results
	tr.append ( dispTrend ( member.Td ) ); // Trend
	tr.append ( dispSource ( member.Ph ) ); // Source
}

function dispPhraseReport ( tr, member, i , order, request_type )
{
	tr.append ( dispKw ( member.Ph, 0 ) ); // Kw
	tr.append ( dispLNum ( member.Nq ) ); // Number of queries
	
	if ( cu_db != 'bing-us' ) { // Do not show CPC for BING-US database
	
		tr.append ( dispNum ( member.Cp, order, i, member.Ph, 'ph_cpc' ) ); // Cpc
			
	}
	
	tr.append ( dispNum ( member.Co, order, i, member.Ph, 'ph_comp' ) ); // Competition
	//if ( request_type != 'phrase_fullsearch' ) tr.append ( dispLNum ( member.Nr ) ); // Num results
	tr.append ( dispLNum ( member.Nr ) ); // Num results
	tr.append ( dispTrend ( member.Td ) ); // Trend
	tr.append ( dispSource ( member.Ph ) ); // Source
}

function dispPhraseOrganicReport ( tr, member, i , order, request_type )
{
	tr.append ( dispNum ( i, 'first_elem', i, member.Dn, 'ph_pos' ) ); // Position
	tr.append ( dispDomPh ( member.Dn, member.As, 0 ) ); // Domain
	tr.append ( dispURLPh ( member.Ur, member.Ur, member.Dn ) ); // URL
}

function dispPhraseAdwordsReport ( tr, member, i , order, request_type )
{
	tr.append ( dispAd ( member.Ur,  member.Tt,  member.Ds,  member.Vu, member.Dn ) ); // Kw
	tr.append ( dispNum ( i, order, i, member.Dn, 'ph_pos' ) ); // Position
	tr.append ( dispDomPh ( member.Dn, member.As, 0 ) ); // Domain
	tr.append ( dispURLPh ( member.Ur, member.Vu, member.Dn ) ); // URL
}

function dispURLReport ( tr, member, i , order, request_type )
{
	tr.append ( dispKw ( member.Ph, 0 ) ); // Kw
	tr.append ( dispNum ( member.Po, order, i, member.Ph, 'url_pos' ) ); // Position
	tr.append ( dispLNum ( member.Nq ) ); // Number of queries
	
	if ( cu_db != 'bing-us' ) { // Do not show CPC for BING-US database
	
		tr.append ( dispNum ( member.Cp, order, i, member.Ph, 'url_cpc' ) ); // Cpc
			
	}
	
	tr.append ( dispNum ( member.Co, order, i, member.Ph, 'url_comp' ) ); // Competition
	tr.append ( dispNum ( member.Tr, order, i, member.Ph, 'url_traffic' ) ); // Traffic
	tr.append ( dispNum ( member.Tc, order, i, member.Ph, 'url_cost' ) ); // Traffic cost
	tr.append ( dispLNum ( member.Nr ) ); // Num results
	tr.append ( dispTrend ( member.Td ) ); // Trend
	tr.append ( dispSource ( member.Ph ) ); // Source
}

function dispDomainAdsReport ( tr, member, i )
{
	var td = $('<td>').attr('valign', 'top'); // Ad
	if ( i == 0 ) td.addClass('table-first-cell');
	if ( member.Ds.match(/<table[^>]*>/ig) && !member.Ds.match(/<\/table>/ig) )
	{
		member.Ds = '';
		//member.Vu = member.Vu.replace(/<b[^>]*>(.+)?<\/b>/ig, "");
		member.Vu = member.Vu.replace(/&lt;\/?b&gt;/ig, "");
		member.Vu = member.Vu.replace(/&lt;wbr&gt;/ig, "");
		member.Vu = member.Vu.replace(/&amp;amp;/ig, "&");
		if ( member.Vu.length > 40 )
		{
			member.Vu = member.Vu.substring(0,35) + '<br />' + member.Vu.substring(35);
		}
	}
	member.Ds = member.Ds.replace(/<table[^>]*>(.+)?<\/table>/ig, "");
	member.Ds = member.Ds.replace(/<span[^>]*>(.+)?<\/span>/ig, "");
	member.Ds = member.Ds.replace(/<a[^>]*>(.+)?<\/a>/ig, "");
	member.Ds = member.Ds.replace(/&nbsp;$/ig, "");
	member.Ds = member.Ds.replace(/<br>$/ig, "");
	member.Tt = member.Tt.replace(/<\/a>.+/i, "");		
	td.html( '<a href="' + decodeURIComponent( member.Ur ) + '">' + member.Tt + '</a><div>' + member.Ds + '</div><div class="report_ads" title="' + member.Vu + '">' + member.Vu + '</span>' );
	tr.append( td );
}

function dispBacklinksReport ( tr, member, i , order, request_type )
{
	
	tr.append ( dispBacklinkLink ( member ) );		// Page title, source link & target link
	tr.append ( dispBacklinkAnchor ( member ) );	// Link anchor
	
}

//
// End functions displaying report types

function nothingFoundVS ()
{
	var not_found_msg = '<div style="padding-bottom: 7px;">' + r_nf1 + '</div><div>' + r_nf4 + ' <a href="javascript:history.go(-1);">' + r_nf5 + '</a></div><ul style="padding-top: 0px;padding-bottom: 0px;margin-top: 0px;margin-bottom: 0px;">';
	for ( i = 0; i < dbs_nc.length; i++ )
	{
		if ( dbs_nc[i] == 'us' ) var tmp_zone = '.com';
		else if ( dbs_nc[i] == 'uk' ) var tmp_zone = '.co.uk';
		else if ( dbs_nc[i] == 'br' ) var tmp_zone = '.com.br';
		else if ( dbs_nc[i] == 'au' ) var tmp_zone = '.com.au';
		else var tmp_zone = '.' + dbs_nc[i];
		if ( dbs_nc[i] == 'us' ) var tmp_zurl = '';
		else var tmp_zurl = '/' + dbs_nc[i];
		//not_found_msg += '<li style="padding-top: 7px;">' + r_nf3 + ' <a href="' + tmp_zurl + '/info/' + domain_id_0 + '+vs+' + domain_id_1 + '+(by+' + kind + ')" title="' + domain_id_0 + ' vs ' + domain_id_1 + ' (by ' + kind + ')">' + domain_id_0 + ' vs ' + domain_id_1 + ' (by ' + kind + ')</a> ' + r_nf9 + ' <b>Google' + tmp_zone + '</b></li>';
		not_found_msg += '<li style="padding-top: 7px;">' + r_nf3 + ' <a href="' + tmp_zurl + '/info/' + domain_id_0 + '+vs+' + domain_id_1 + '+(by+' + kind + ')" title="' + domain_id_0 + ' vs ' + domain_id_1 + ' (by ' + kind + ')">' + domain_id_0 + ' vs ' + domain_id_1 + ' (by ' + kind + ')</a> ' + r_nf9 + ' <b>' + seDBdata[dbs_nc[i]].sel + '</b></li>';
	}
	not_found_msg += '</ul>';
	return not_found_msg;
}

function nothingFoundKW ( phrase_tail )
{
	if ( phrase_tail.length > 0 ) var not_found_msg = '<div style="padding-bottom: 7px;">' + r_nf1 + '</div><div>' + r_nf4 + ' <a href="javascript:history.go(-1);">' + r_nf5 + '</a></div><ul style="padding-top: 0px;padding-bottom: 0px;margin-top: 0px;margin-bottom: 0px;">';
	else  var not_found_msg = '<div style="padding-bottom: 7px;">' + r_nf1plus + '</div><div>' + r_nf4 + ' <a href="javascript:history.go(-1);">' + r_nf5 + '</a></div><ul style="padding-top: 0px;padding-bottom: 0px;margin-top: 0px;margin-bottom: 0px;">';
	for ( i = 0; i < dbs_nc.length; i++ )
	{
		if ( dbs_nc[i] == 'us' ) var tmp_zone = '.com';
		else if ( dbs_nc[i] == 'uk' ) var tmp_zone = '.co.uk';
		else if ( dbs_nc[i] == 'br' ) var tmp_zone = '.com.br';
		else if ( dbs_nc[i] == 'au' ) var tmp_zone = '.com.au';
		else var tmp_zone = '.' + dbs_nc[i];
		if ( dbs_nc[i] == 'us' ) var tmp_zurl = '';
		else var tmp_zurl = '/' + dbs_nc[i];
		//if ( phrase_tail.length > 0 ) not_found_msg += '<li style="padding-top: 7px;">' + r_nf3 + ' <a href="' + tmp_zurl + '/info/' + phrase_id_2 + '+(' + phrase_tail + ')" title="' + phrase_id_2 + ' (' + phrase_tail + ')">' + phrase_id_2 + ' (' + phrase_tail + ')</a> ' + r_nf9 + ' <b>Google' + tmp_zone + '</b></li>';
		//else  not_found_msg += '<li style="padding-top: 7px;">' + r_nf3 + ' <a href="' + tmp_zurl + '/info/' + phrase_id_2 + ' (keyword)" title="' + phrase_id_2 + '">' + phrase_id_2 + '</a> ' + r_nf9 + ' <b>Google' + tmp_zone + '</b></li>';
		if ( phrase_tail.length > 0 ) not_found_msg += '<li style="padding-top: 7px;">' + r_nf3 + ' <a href="' + tmp_zurl + '/info/' + phrase_id_2 + '+(' + phrase_tail + ')" title="' + phrase_id_2 + ' (' + phrase_tail + ')">' + phrase_id_2 + ' (' + phrase_tail + ')</a> ' + r_nf9 + ' <b>' + seDBdata[dbs_nc[i]].sel + '</b></li>';
		else  not_found_msg += '<li style="padding-top: 7px;">' + r_nf3 + ' <a href="' + tmp_zurl + '/info/' + phrase_id_2 + ' (keyword)" title="' + phrase_id_2 + '">' + phrase_id_2 + '</a> ' + r_nf9 + ' <b>' + seDBdata[dbs_nc[i]].sel + '</b></li>';
	}
	not_found_msg += '</ul>';
	return not_found_msg;
}

function nothingFoundURL  ( url_tail )
{
	var not_found_msg = '<div style="padding-bottom: 7px;">' + decodeURIComponent( r_nf1 ) + '</div><div>' + r_nf4 + ' <a href="javascript:history.go(-1);">' + r_nf5 + '</a></div><ul style="padding-top: 0px;padding-bottom: 0px;margin-top: 0px;margin-bottom: 0px;">';
	for ( i = 0; i < dbs_nc.length; i++ )
	{
		if ( dbs_nc[i] == 'us' ) var tmp_zone = '.com';
		else if ( dbs_nc[i] == 'uk' ) var tmp_zone = '.co.uk';
		else if ( dbs_nc[i] == 'br' ) var tmp_zone = '.com.br';
		else if ( dbs_nc[i] == 'au' ) var tmp_zone = '.com.au';
		else var tmp_zone = '.' + dbs_nc[i];
		if ( dbs_nc[i] == 'us' ) var tmp_zurl = '';
		else var tmp_zurl = '/' + dbs_nc[i];
		//not_found_msg += '<li style="padding-top: 7px;">' + r_nf3 + ' <a href="' + tmp_zurl + '/search.php?q=' + url_enc + '+(by+' + url_tail + ')" title="' + decodeURIComponent(url_plain) + ' (by ' + url_tail + ')">' + decodeURIComponent( phr_safe ) + ' (by ' + url_tail + ')</a> ' + r_nf9 + ' <b>Google' + tmp_zone + '</b></li>';
		not_found_msg += '<li style="padding-top: 7px;">' + r_nf3 + ' <a href="' + tmp_zurl + '/search.php?q=' + url_enc + '+(by+' + url_tail + ')" title="' + decodeURIComponent(url_plain) + ' (by ' + url_tail + ')">' + decodeURIComponent( phr_safe ) + ' (by ' + url_tail + ')</a> ' + r_nf9 + ' <b>' + seDBdata[dbs_nc[i]].sel + '</b></li>';
	}
	not_found_msg += '</ul>';
	return not_found_msg;
}

function checkGaBeLoad ()
{
	if ( gaBEchecked == 1 ) return false;
	
	gaBEchecked = 1;
	
	if ( gaBEloadStart != null && gaBEloadStart != undefined )
	{
		var gaBEloadEvent = ( new Date().getTime() ) - gaBEloadStart;
		_gaq.push(['_trackEvent', 'Loading', 'Backend Loading 30s+']);
	}
}

function thisRequest ( request, callback )
{
	load_check++;
	$( '.total_loader' ).css( 'display', 'block' );
	
	$.ajax(
	{
		url: request,
		timeout: var_timeout,
		dataType: 'jsonp',
		jsonp: false,
		jsonpCallback: callback,
		cache: true,
		success: function ( data, textStatus )
		{
			
			if ( curNumRequestsType != undefined && curNumRequestsType != null )
			{
				gbcCounter++;
				
				if ( gbcCounter == curNumRequests )
				{
					if ( gaBEloadStart != null && gaBEloadStart != undefined && gaBEchecked == 0 )
					{
						gaBEchecked = 1;
						
						var gaBEloadEvent = ( new Date().getTime() ) - gaBEloadStart;
						if ( gaBEloadEvent > 30000 )
						{
							_gaq.push(['_trackEvent', 'Loading', 'Backend Loading 30s+']);
						}
						else if ( gaBEloadEvent > 10000 )
						{
							_gaq.push(['_trackEvent', 'Loading', 'Backend Loading 10-30s']);
						}
						else if ( gaBEloadEvent > 5000 )
						{
							_gaq.push(['_trackEvent', 'Loading', 'Backend Loading 5-10s']);
						}
					}
					
					gbLoadTime = new Date().getTime() / 1000;
					getLoadTime('rdynamic',curNumRequestsType);
				}
			}
			
			if ( data.status == 403 )
			{
				$( '#LimitsOverContainer' ).css( 'display', 'block' );
				$( '#LimitsOver' ).css( 'display', 'block' );
				window.location = db_prefix + '/limit.html';
				return false;
			}
			else if ( data.status < 400 )
			{
				//if ( data.limit.limits.daily != undefined && data.limit.counters.daily != undefined ) showNewLimit ( data[ 'limit' ], 'semrush_counter_cookie' );

				if ( data[ 'this' ] == null )
				{
					$( '#container_overview' ).html( '<div class="report_nr4">' + nothingFoundKW ( '' ) + '</div>' );
					$( '#report_wrapper_overview' ).css( 'display', 'block' );
					load_check--;
					if ( load_check == 0 )
					{
						$( '.total_loader' ).css( 'display', 'none' );
						$('#footer').css('bottom','0px');
						$( '#loading-status-block' ).css('background-image','none');
						setTimeout("remLoadStatusBlock()",300);
					}
					return false;
				}
				else
				{
					if ( !isEmpty (data[ 'this' ]['data']) )
					{
						$( '#container_url_00' ).html( phrase_id_2 );
						$( '#container_url_01' ).html( '$' + data[ 'this' ].data[0].Cp );
						$( '#container_url_02' ).html( data[ 'this' ].data[0].Co );
						$( '#container_url_03' ).html( calcRound3 ( data[ 'this' ].data[0].Nq ) );
						$( '#container_url_04' ).html( makeTrend2 ( data[ 'this' ].data[0].Td ) );
						$( '#container_url_05' ).html( calcRound3 ( data[ 'this' ].data[0].Nr ) );
						$( '#report_wrapper_overview' ).css( 'display', 'block' );
						$( '#loading_overview' ).css({'color':'#000','background':'url("/m/images/galka4.gif") no-repeat left center'});
					}
				}
			}
			
			load_check--;
			if ( load_check == 0 )
			{
				$( '.total_loader' ).css( 'display', 'none' );
				$( '#loading-status-block' ).css('background-image','none');
				setTimeout("remLoadStatusBlock()",300);
			}
		},
		error: function ( errorData, errorType )
		{
			
			if ( curNumRequestsType != undefined && curNumRequestsType != null )
			{
				gbcCounter++;
				
				if ( gbcCounter == curNumRequests )
				{
					gaBEchecked = 1;
					gbLoadTime = new Date().getTime() / 1000;
					getLoadTime('rdynamic',curNumRequestsType);
				}
			}
			
			load_check--;
			if ( load_check == 0 )
			{
				$( '.total_loader' ).css( 'display', 'none' );
				$('#footer').css('bottom','0px');
				$( '#loading-status-block' ).css('background-image','none');
				setTimeout("remLoadStatusBlock()",300);
			}
			return false;
		}
	});
}

/*
 Main function to make a backend call and display data
 -----------------------------------------------------
 	small_request:	( 0, 1 ), specifies if the request has been done simply to get number of results
	bar_check:		( 0, 1 ), specify to take into account main loading bar or not
	request_type:	type of the request (url, phrase, domain etc. and organic, adwords etc.)
	type:			type of request, used to address to the data in the data set
	table_class:	sets the main class for the table, which displays data
	tail:			sub name, which specyfices in what div block the data should be added
	data_title:		name of the report, displayed in the top report bar
	header_vars:	data set containging titles and tips for clolumn table header
	request:		url of the request to backend
*/

function mainRequest ( small_request, bar_check, request_type, type, table_class, tail, data_title, header_vars, request, callback )
{
	if ( bar_check == 1 )
	{
		load_check++;
		$( '.total_loader' ).css( 'display', 'block' );
	}
	
	$.ajax(
	{
		beforeSend: function()
		{
			time_start = new Date().getTime();
			$.getJSON( '/time.txt?status=start&query_id=' + rnd_m + '&report_type=' + type + '&query=' + query, function(){});
		},
		url: request,
		timeout: var_timeout,
		dataType: 'jsonp',
		jsonp: false,
		jsonpCallback: callback,
		cache: true,
		success: function ( data, textStatus )
		{
			
			if ( curNumRequestsType != undefined && curNumRequestsType != null )
			{
				gbcCounter++;
				
				if ( gbcCounter == curNumRequests )
				{
					if ( gaBEloadStart != null && gaBEloadStart != undefined && gaBEchecked == 0 )
					{
						gaBEchecked = 1;
						
						var gaBEloadEvent = ( new Date().getTime() ) - gaBEloadStart;
						if ( gaBEloadEvent > 30000 )
						{
							_gaq.push(['_trackEvent', 'Loading', 'Backend Loading 30s+']);
						}
						else if ( gaBEloadEvent > 10000 )
						{
							_gaq.push(['_trackEvent', 'Loading', 'Backend Loading 10-30s']);
						}
						else if ( gaBEloadEvent > 5000 )
						{
							_gaq.push(['_trackEvent', 'Loading', 'Backend Loading 5-10s']);
						}
					}
					
					gbLoadTime = new Date().getTime() / 1000;
					getLoadTime('rdynamic',curNumRequestsType);
				}
			}
			
			/* Backlinks backend exception check */
			
			if ( ( request_type == 'links' || request_type == 'links_domain' || request_type == 'links_hostname' ) && data.status == 600 ) {
				
				$( '.total_loader' ).css( 'display', 'none' );
				// Show exception notice
				$( '.blbnd-note' ).css('display','block');
				return false;
				
			}
			
			/* END Backlinks backend exception check */
			
			if ( data.status == 403 )
			{				
				$( '#LimitsOverContainer' ).css( 'display', 'block' );
				$( '#LimitsOver' ).css( 'display', 'block' );
				window.location = db_prefix + '/limit.html';
				return false;
			}
			else if ( data.status < 400 )
			{
				//if ( data.limit.limits.daily != undefined && data.limit.counters.daily != undefined ) showNewLimit ( data[ 'limit' ], 'semrush_counter_cookie' );

				if ( small_request == 1 )
				{
					if ( data[ type ] != null )
					{
						if ( request_type.substring(0,3) == 'url' )
						{
							dispRepNumRes ( data[ type ].total, tail );
							if ( data[ type ].total > 0 )
							{
								dispRepLinks ( tail, request_type.substring(4), 'url' );
								if ( request_type == 'url_organic' )
								{
									$( '#container_urlo_01' ).html( calcRound3 ( data[ type ].traffic ) );
									$( '#container_urlo_02' ).html( '$' + calcRound3 ( data[ type ].traffic_cpc ) );
								}
								else if ( request_type == 'url_adwords' )
								{
									$( '#container_urla_01' ).html( calcRound3 ( data[ type ].traffic ) );
									$( '#container_urla_02' ).html( '$' + calcRound3 ( data[ type ].traffic_cpc ) );
								}
							}
							else
							{
								if ( request_type == 'url_organic' )
								{
									$( '#container_urlo_01' ).html( 'n/a' );
									$( '#container_urlo_02' ).html( 'n/a' );
								}
								else if ( request_type == 'url_adwords' )
								{
									$( '#container_urla_01' ).html( 'n/a' );
									$( '#container_urla_02' ).html( 'n/a' );
								}
							}
						}
						else if ( request_type == 'phrase_related' || request_type == 'phrase_fullsearch' )
						{
							if ( request_type.substring(7) == 'fullsearch' ) var phrase_tail = 'full search';
							else var phrase_tail = 'related';
						
							dispRepNumRes ( data[ type ].total, tail );
							if ( data[ type ].total > 0 ) dispRepLinks ( tail, phrase_tail, 'phrase' );
						}
						else if ( type.substring(0,6) == 'domain' )
						{
							dispRepNumRes ( data[ type ].total, tail );
							if ( data[ type ].total > 0 ) dispRepLinks ( tail, request_type, 'domain' );
						}
					}
					else
					{
						if ( request_type == 'phrase_related' || request_type == 'phrase_fullsearch' || request_type.substring(0,3) == 'url' || type.substring(0,6) == 'domain' ) dispRepNumRes ( '0', tail );
						if ( request_type.substring(0,3) == 'url' )
						{
							if ( request_type == 'url_organic' )
							{
								$( '#container_urlo_01' ).html( 'n/a' );
								$( '#container_urlo_02' ).html( 'n/a' );
							}
							else if ( request_type == 'url_adwords' )
							{
								$( '#container_urla_01' ).html( 'n/a' );
								$( '#container_urla_02' ).html( 'n/a' );
							}
						}
					}
				}
				else if ( data[ type ] == null || getObjectLength ( data[ type ].data ) == 0 )
				{
					if ( type.substring(0,6) == 'domain' )
					{
						dispRepNumRes ( '0', tail );
					
						$( '#container_results_' + tail ).html( displayResQuantity ( data_title, 0, 0, 0, 1 ) );
						$( '#container_' + tail ).html( '<div class="report_nr4">' + nothingFoundVS () + '</div>' );
						$( '#report_wrapper_' + tail ).css( 'display', 'block' );
					}
					else if ( request_type.substring(0,6) == 'phrase' )
					{
						if ( request_type == 'phrase_related' || request_type == 'phrase_fullsearch' ) dispRepNumRes ( '0', tail );
					
						if ( request_type.substring(7) == 'fullsearch' || request_type.substring(7) == 'related' )
						{
							if ( request_type.substring(7) == 'fullsearch' ) var phrase_tail = 'full search';
							else var phrase_tail = 'related';
						
							$( '#container_results_' + tail ).html( displayResQuantity ( data_title, 0, 0, 0, 1 ) );
							$( '#container_' + tail ).html( '<div class="report_nr4">' + nothingFoundKW ( phrase_tail ) + '</div>' );
							$( '#report_wrapper_' + tail ).css( 'display', 'block' );
						}
						else
						{
							$( '#container_results_' + tail ).html( displayResQuantity ( data_title, 0, 0, 0, 1 ) );
							$( '#container_' + tail ).html( '<div class="report_nr2">' + r_nf + '</div>' );
							$( '#report_wrapper_' + tail ).css( 'display', 'block' );
						}	
						
						$( '#loading_' + tail ).css({'color':'#000','background':'url("/m/images/galka4.gif") no-repeat left center'});
					}
					else if ( request_type.substring(0,3) == 'url' )
					{
						dispRepNumRes ( '0', tail );
						
						if ( request_type == 'url_organic' )
						{
							$( '#container_urlo_01' ).html( 'n/a' );
							$( '#container_urlo_02' ).html( 'n/a' );
						}
						else if ( request_type == 'url_adwords' )
						{
							$( '#container_urla_01' ).html( 'n/a' );
							$( '#container_urla_02' ).html( 'n/a' );
						}
						
						$( '#container_results_' + tail ).html( displayResQuantity ( data_title, 0, 0, 0, 1 ) );
						$( '#container_' + tail ).html( '<div class="report_nr4">' + nothingFoundURL ( request_type.substring(4) ) + '</div>' );
						$( '#report_wrapper_' + tail ).css( 'display', 'block' );
						$( '#export_' + tail ).css('display','none');
					}
					else if ( request_type == 'rank_difference' )
					{
						$( '#container_results_' + tail ).html( displayResQuantity ( data_title, 0, 0, 0, 0 ) );
						$( '#container_' + tail ).html( '<div class="report_nr2">' + r_nf + '</div>' );
						$( '#report_wrapper_' + tail ).css( 'display', 'block' );
					}
					else
					{
						if ( type.substring(0,8) == 'overview' )
						{
							$( '#container_results_' + tail ).html( displayResQuantity ( data_title, 0, 0, 0, 1 ) );
							$( '#loading_' + tail ).css({'color':'#000','background':'url("/m/images/galka4.gif") no-repeat left center'});
						}
						else $( '#container_results_' + tail ).html( displayResQuantity ( data_title, 0, 0, 0, 0 ) );
						$( '#container_' + tail ).html( '<div class="report_nr2">' + r_nf + '</div>' );
						$( '#report_wrapper_' + tail ).css( 'display', 'block' );
						
						if	( request_type != 'links' ) {
							
							$( '#container_' + tail + ' .report_nr2' ).append ( div_nf[tail] );
							
						}
					
						if ( type == 'overview_adwords' )
						{
							if ( type.substring(0,8) == 'overview' ) $( '#container_results_ads' ).html( '<h2>' + rt_aao + '</h2>' );
							else $( '#container_results_ads' ).html( displayResQuantity ( data_title, 0, 0, 0, 0 ) );
							$( '#container_ads' ).html( '<div class="report_nr2">' + r_nf + '</div>' );
							$( '#report_wrapper_ads' ).css( 'display', 'block' );
							$( '#container_ads .report_nr2' ).append ( div_nf.ads );
							$( '#loading_ads' ).css({'color':'#000','background':'url("/m/images/galka4.gif") no-repeat left center'});
						}
						
						if ( type == 'overview_organic' || type == 'organic' )
						{
							$('#acd-link-org').css('display','block');
						}
						else if ( type == 'overview_adwords' || type == 'adwords' )
						{
							$('#acd-link-adw').css('display','block');
						}
					}
				
					if ( type == 'links_domain' || type == 'links_hostname' || type == 'links' ) {
						
						$('#export_' + tail).css('display','none');
						
					}
				
					var time_end = (new Date().getTime()) - time_start;
					$.getJSON( '/time.txt?status=end&query_id=' + rnd_m + '&report_type=' + type + '&return_status=nothing_found&time=' + time_end + '&query=' + query, function(){});
				}
				else
				{
					if ( request_type == 'rank_difference' )
					{
						var table = createTable ( table_class );
						table.append ( createTableHeader ( header_vars ) );
						
						$.each( data[ type ].data, function(i, member)
						{
							var tr = $('<tr>');
							if ( ( typeof( member.Ph ) != 'undefined' && member.Ph.length > 0 ) || ( typeof( member.Dn ) != 'undefined' && member.Dn.length > 0 ) )
							{
								if ( i % 2 != 0 ) tr.attr( 'id', 'report_table_hl' );
							}
							else tr.attr( 'id', 'report_table_lim' );
							
							dispRankDifference ( tr, member, i, order );
							
							table.append( tr );
						});
						
						if ( data[ type ].total > 100 )
						{
							$( '#container_footer_' + tail + ' .report_footer2' ).html( reportPagination ( db_prefix + '/info/' + difference_path + '?order=' + order, page, Math.ceil ( data[ type ].total / 100 ) ) );
							$( '#container_footer_' + tail ).css( 'display', 'block' );
						}
						
						$( '#container_results_' + tail ).html( displayResQuantity ( data_title, ( page - 1 ) * 100 + 1, ( page - 1 ) * 100 + getObjectLength ( data[ type ].data ), data[ type ].total, 0 ) );
							
						$( '#container_' + tail ).html( table );
						$( '#report_wrapper_' + tail ).css( 'display', 'block' );
					}
					else if ( request_type != 'ads' )
					{
						var table = createTable ( table_class );
						table.append ( createTableHeader ( header_vars ) );
						
						var glink = '';
						
						$.each( data[ type ].data, function(i, member)
						{
							var tr = $('<tr>');
							if ( ( typeof( member.uu ) != 'undefined' && member.uu.length > 0 ) || ( typeof( member.Ph ) != 'undefined' && member.Ph.length > 0 ) || ( typeof( member.Dn ) != 'undefined' && member.Dn.length > 0 ) || request_type == 'phrase_organic' || request_type == 'phrase_adwords' )
							{
								if ( i % 2 != 0 ) tr.attr( 'id', 'report_table_hl' );
							}
							else tr.attr( 'id', 'report_table_lim' );
						
							switch ( request_type )
							{
								case 'organic':
								case 'adwords':
									if ( type.substring(0,8) == 'overview' ) dispDomainKwReport ( tr, member, i , 'none', request_type );
									else dispDomainKwReport ( tr, member, i , order, request_type );
									break;
								case 'seopivot':
									dispDomainPivotReport ( tr, member, i , order, request_type );
									break;
								case 'organic_organic':
								case 'adwords_adwords':
								case 'adwords_organic':
								case 'organic_adwords':
									if ( type.substring(0,6) == 'domain' )
									{
										dispDomainConcReport ( tr, member, i , 'none', request_type );
									}
									else
									{
										dispDomainCompReport ( tr, member, i , 'none', request_type );
										if ( ( type == 'overview_organic_organic' || type == 'overview_adwords_adwords' ) && i < 4 ) glink += '&domains[]=' + member.Dn;
									}
									break;
								case 'phrase_fullsearch':
								case 'phrase_related':
									dispPhraseReport ( tr, member, i , 'none', request_type );
									break;
								case 'phrase_organic':
									dispPhraseOrganicReport ( tr, member, i , 'none', request_type );
									break;
								case 'phrase_adwords':
									dispPhraseAdwordsReport ( tr, member, i , 'none', request_type );
									break;
								case 'url_organic':
								case 'url_adwords':
									dispURLReport ( tr, member, i , 'none', request_type );
									break;
								case 'links':
								case 'links_domain':
								case 'links_hostname':
									dispBacklinksReport ( tr, member, i , 'none', request_type );
									break;
							}
								
							table.append( tr );
						});
					
						$( '#container_' + tail ).html( table );
					
						if ( type == 'overview_organic_organic' ) glink = '<a class="report-footer-graph-link" href="' + db_prefix + '/info/history/index.html?domains[]=' + domain_id + glink + '&gtype=1">' + r_glink + '&nbsp;&#155;</a>';
						else if ( type == 'overview_adwords_adwords' )  glink = '<a class="report-footer-graph-link" href="' + db_prefix + '/info/history/index.html?domains[]=' + domain_id + glink + '&gtype=3">' + r_glink + '&nbsp;&#155;</a>';
					
						if ( request_type == 'url_organic' )
						{
							$( '#container_urlo_01' ).html( calcRound3 ( data[ type ].traffic ) );
							$( '#container_urlo_02' ).html( '$' + calcRound3 ( data[ type ].traffic_cpc ) );
						}
						else if ( request_type == 'url_adwords' )
						{
							$( '#container_urla_01' ).html( calcRound3 ( data[ type ].traffic ) );
							$( '#container_urla_02' ).html( '$' + calcRound3 ( data[ type ].traffic_cpc ) );
						}
					
						if ( request_type.substring(0,3) == 'url' )
						{
							dispRepNumRes ( data[ type ].total, tail );
							dispRepLinks ( tail, request_type.substring(4), 'url' );
						}
						else if ( request_type == 'phrase_related' || request_type == 'phrase_fullsearch' )
						{
							if ( request_type.substring(7) == 'fullsearch' )
							{
								var phrase_tail = 'full search';
								if ( data[ type ].total > 0 ) $('#export_fus').css('display','block');
							}
							else
							{
								var phrase_tail = 'related';
								if ( data[ type ].total > 0 ) $('#export_rel').css('display','block');
							}
						
							dispRepNumRes ( data[ type ].total, tail );
							dispRepLinks ( tail, phrase_tail, 'phrase' );
						}
						else if ( type.substring(0,6) == 'domain' )
						{
							dispRepNumRes ( data[ type ].total, tail );
						}
					
						if ( type.substring(0,8) == 'overview' )
						{
							if ( request_type.substring(0,6) == 'phrase' )
							{
								if ( request_type.substring(7) == 'fullsearch' || request_type.substring(7) == 'related' )
								{
									if ( request_type.substring(7) == 'fullsearch' ) var phrase_tail = 'full search';
									else var phrase_tail = 'related';
								
									if ( data[ type ].total > 10 )
									{
										$( '#container_results_' + tail ).html( '<h2><a href="' + db_prefix + '/info/' + phrase_idr + '+(' + phrase_tail + ')">' + data_title + '</a></h2> - ' + breakToThreeComa ( data[ type ].total ) );
										$( '#container_footer_' + tail + ' .report-footer' ).html( '<a href="' + db_prefix + '/info/' + phrase_idr + '+(' + phrase_tail + ')">' + r_frep + '&nbsp;<span style="font-size: 10px;">(' + breakToThreeComa(data[ type ].total) + ')</span></a>&nbsp;&#155;' );
										$( '#container_footer_' + tail ).css( 'display', 'block' );
									}
									else $( '#container_results_' + tail ).html( '<h2>' + data_title + '</h2> - ' + data[ type ].total );
								}
								else
								{
									$( '#container_results_' + tail ).html( '<h2>' + data_title + '</h2> - ' + data[ type ].total );
									
									if ( tail == 'organic' && data[ type ].total > 0 ) $('#export_org').css('display','block');
									else if ( tail == 'adwords' && data[ type ].total > 0 ) $('#export_adw').css('display','block');
								}
									
								$( '#loading_' + tail ).css({'color':'#000','background':'url("/m/images/galka4.gif") no-repeat left center'});
							}
						
							else if ( request_type.substring(0,3) == 'url' )
							{
								if ( data[ type ].total > 10 )
								{
									$( '#container_results_' + tail ).html( '<h2><a href="' + db_prefix + '/search.php?q=' + url_enc + '+(by+' + request_type.substring(4) + ')">' + data_title + '</a></h2> - ' + breakToThreeComa ( data[ type ].total ) );
									$( '#container_footer_' + tail + ' .report-footer' ).html( '<a href="' + db_prefix + '/search.php?q=' + url_enc + '+(by+' + request_type.substring(4) + ')">' + r_frep + '&nbsp;<span style="font-size: 10px;">(' + breakToThreeComa(data[ type ].total) + ')</span></a>&nbsp;&#155;' );
									$( '#container_footer_' + tail ).css( 'display', 'block' );
								}	
								else $( '#container_results_' + tail ).html( '<h2>' + data_title + '</h2> - ' + data[ type ].total );
							}
						
							else
							{
								if ( data[ type ].total > 5 )
								{
									$( '#container_results_' + tail ).html( '<h2><a href="' + db_prefix + '/info/' + domain_id + '+(by+' + request_type + ')">' + data_title + '</a></h2> - ' + breakToThreeComa ( data[ type ].total ) );
									$( '#container_footer_' + tail + ' .report-footer' ).html( '<a href="' + db_prefix + '/info/' + domain_id + '+(by+' + request_type + ')">' + r_frep + '&nbsp;<span style="font-size: 10px;">(' + breakToThreeComa(data[ type ].total) + ')</span></a>&nbsp;&#155;' + glink );
									$( '#container_footer_' + tail ).css( 'display', 'block' );
								}
								else if ( glink.length > 0 )
								{
									$( '#container_results_' + tail ).html( '<h2>' + data_title + '</h2> - ' + data[ type ].total );
									$( '#container_footer_' + tail + ' .report-footer' ).html( '&nbsp;' + glink );
									$( '#container_footer_' + tail ).css( 'display', 'block' );
								}
								else $( '#container_results_' + tail ).html( '<h2>' + data_title + '</h2> - ' + data[ type ].total );
								
								$( '#loading_' + tail ).css({'color':'#000','background':'url("/m/images/galka4.gif") no-repeat left center'});
							}
						}
						else
						{
							if ( data[ type ].total > 100 )
							{
								if ( request_type.substring(0,6) == 'phrase' )
								{
									$( '#container_footer_' + tail + ' .report_footer2' ).html( reportPagination ( db_prefix + '/info/' + phrase_idr + '+(' + kind_link + ')', page, Math.ceil ( data[ type ].total / 100 ) ) );
								}
								else if ( request_type.substring(0,3) == 'url' )
								{
									$( '#container_footer_' + tail + ' .report_footer2' ).html( reportPagination ( db_prefix + '/search.php?q=' + url_enc + '+(by+' + request_type.substring(4) + ')', page, Math.ceil ( data[ type ].total / 100 ) ) );
								}
								else if ( request_type == 'seopivot' )
								{
									$( '#container_footer_' + tail + ' .report_footer2' ).html( reportPagination ( db_prefix + '/info/' + domain_id + '+(' + kind + ')?sort=' + order, page, Math.ceil ( data[ type ].total / 100 ) ) );
								}
								else if ( request_type.substring(0,5) == 'links' )
								{
									if ( request_type == 'links_hostname' ) {
										
										$( '#container_footer_' + tail + ' .report_footer2' ).html( reportPagination ( db_prefix + '/info/' + hostname_id + '+(' + kind + ')', page, Math.ceil ( data[ type ].total / 100 ) ) );
										
									} else if ( request_type == 'links' ){
										
										$( '#container_footer_' + tail + ' .report_footer2' ).html( reportPagination ( db_prefix + '/search.php?q=' + url_enc + '+(' + request_type + ')', page, Math.ceil ( data[ type ].total / 100 ) ) );
										
									} else {
										
										$( '#container_footer_' + tail + ' .report_footer2' ).html( reportPagination ( db_prefix + '/info/' + domain_id + '+(' + kind + ')', page, Math.ceil ( data[ type ].total / 100 ) ) );
										
									}
								}
								else
								{
									if ( type == 'organic' || type == 'adwords' ) var order_url = '?sort=' + order;
									else  var order_url = '';
									if ( type.substring(0,6) == 'domain' ) $( '#container_footer_' + tail + ' .report_footer2' ).html( reportPagination ( db_prefix + '/info/' + domain_id_0 + '+vs+' + domain_id_1 + '+(by+' + kind + ')' + order_url, page, Math.ceil ( data[ type ].total / 100 ) ) );
									else $( '#container_footer_' + tail + ' .report_footer2' ).html( reportPagination ( db_prefix + '/info/' + domain_id + '+(by+' + kind + ')' + order_url, page, Math.ceil ( data[ type ].total / 100 ) ) );
								}
							
								$( '#container_footer_' + tail ).css( 'display', 'block' );
							}
						
							$( '#container_results_' + tail ).html( displayResQuantity ( data_title, ( page - 1 ) * 100 + 1, ( page - 1 ) * 100 + getObjectLength ( data[ type ].data ), data[ type ].total, 0 ) );
						}
						
						if ( user_check == 1 ) $( '#export_' + tail ).css( 'display', 'block' );
						$( '#report_wrapper_' + tail ).css( 'display', 'block' );
					
						if ( type == 'overview_adwords' && request_type.substring(0,6) != 'phrase' && request_type.substring(0,3) != 'url' )
						{
							var table = createTable ( 'report_table2' );
							var tr = $('<tr>');
							if ( getObjectLength ( data[ type ].data ) >= 5 )
							{
								$( '#container_results_ads' ).html( '<h2><a href="' + db_prefix + '/info/' + domain_id + '+(by+ads)">' + rt_aao + '</a></h2>' );
								var emtpyLegth = 0;
							}
							else
							{
								$( '#container_results_ads' ).html( '<h2>' + rt_aao + '</h2>' );
								var emtpyLegth = 4 - getObjectLength ( data[ type ].data );
							}
							$.each( data[ type ].data, function(i, member)
							{
								if ( i > 3 ) return false;
								dispDomainAdsReport ( tr, member, i );
							});
							for ( var i = 0; i < emtpyLegth; i++ )
							{
								var td = $('<td>');
								td.html('&nbsp;');
								tr.append( td );
							}
							table.append( tr );
							$( '#container_ads' ).html( table );
							if ( user_check == 1 ) $( '#export_ads' ).css( 'display', 'block' );
							$( '#container_footer_ads .report-footer' ).html( '<a href="' + db_prefix + '/info/' + domain_id + '+(by+ads)">' + r_frep + '&nbsp;&raquo;</a>' );
							$( '#container_footer_ads' ).css( 'display', 'block' );
							$( '#report_wrapper_ads' ).css( 'display', 'block' );
							
							$( '#loading_ads' ).css({'color':'#000','background':'url("/m/images/galka4.gif") no-repeat left center'});
						}
					}
					else
					{
						var table = createTable ( 'report_table2' );
						var cycle_lim = 100 * ( page - 1 ) + getObjectLength ( data[ type ].data );
						var cycle_residue = 4 - ( getObjectLength ( data[ type ].data ) % 4 );
						for ( var j = 100 * ( page - 1 ); j < cycle_lim; j++ )
						{
							if ( j % 4 == 0 )
							{
								tr = $('<tr>');
								var no_first_cell = 0;
							}
							else var no_first_cell = 1;
							if ( data[ type ].data[j].Ph != undefined && data[ type ].data[j].Ph.length > 0 ) dispDomainAdsReport ( tr, data[ type ].data[j], no_first_cell );
							else if ( data[ type ].data[j].Ph != undefined && data[ type ].data[j].Ph.length == 0 )
							{
								var td = $('<td>').attr( { 'valign' : 'middle', 'align' : 'center', 'height' : '72px' } );
								td.html( '<a href="' + db_prefix + '/limit.html"' + add_reg_form + '>' + r_uplim + '</a>' );
								if ( no_first_cell == 0 ) td.addClass('table-first-cell');
								tr.append( td );
							}
						
							if ( j + 1 == cycle_lim && ( j + 1 ) % 4 != 0 )
							{
								for ( var k = 0; k < cycle_residue; k++ )
								{
									var td = $('<td>').attr( { 'valign' : 'middle', 'align' : 'center', 'height' : '72px' } ).html( '&nbsp;' );
									tr.append( td );
								}
							
								table.append( tr );
							}
						
							if ( ( j + 1 ) % 4 == 0 ) table.append( tr );
						}
					
						if ( data[ type ].total > 100 )
						{
							$( '#container_footer_ads .report_footer2' ).html( reportPagination ( db_prefix + '/info/' + domain_id + '+(by+' + kind + ')', page, Math.ceil ( data[ type ].total / 100 ) ) );
							$( '#container_footer_ads' ).css( 'display', 'block' );
						}
						
						$( '#container_results_ads' ).html( displayResQuantity ( data_title, ( page - 1 ) * 100 + 1, ( page - 1 ) * 100 + getObjectLength ( data[ type ].data ), data[ type ].total, 0 ) );
					
						$( '#container_ads' ).html( table );
						$( '#report_wrapper_ads' ).css( 'display', 'block' );
						if ( user_check == 1 ) $( '#export_ads' ).css( 'display', 'block' );
					}
				
					var time_end = (new Date().getTime()) - time_start;
					$.getJSON( '/time.txt?status=end&query_id=' + rnd_m + '&report_type=' + type + '&return_status=success&time=' + time_end + '&query=' + query, function(){});
				}
			}
			else
			{
				$( '#container_results_' + tail ).html( '<h2>' + data_title + '</h2>' );

				if ( request_type == 'url_organic' )
				{
					$( '#container_urlo_01' ).html( 'error' );
					$( '#container_urlo_02' ).html( 'error' );
				}
				else if ( request_type == 'url_adwords' )
				{
					$( '#container_urla_01' ).html( 'error' );
					$( '#container_urla_02' ).html( 'error' );
				}
				
				$( '#container_' + tail ).html( '<div class="report_nr2">' + r_j_error + '</div>' );
				$( '#report_wrapper_' + tail ).css( 'display', 'block' );

				var time_end = (new Date().getTime()) - time_start;
				$.getJSON( '/time.txt?status=end&query_id=' + rnd_m + '&report_type=' + type + '&return_status=error&time=' + time_end + '&query=' + query, function(){});
			}
			
			if ( bar_check == 1 )
			{
				load_check--;
				if ( load_check == 0 )
				{
					$( '.total_loader' ).css( 'display', 'none' );
					$('#footer').css('bottom','0px');
					$( '#loading-status-block' ).css('background-image','none');
					setTimeout("remLoadStatusBlock()",300);
				}
			}
		},
		error: function ( errorData, errorType )
		{
			
			if ( curNumRequestsType != undefined && curNumRequestsType != null )
			{
				gbcCounter++;
				
				if ( gbcCounter == curNumRequests )
				{
					gaBEchecked = 1;
					gbLoadTime = new Date().getTime() / 1000;
					getLoadTime('rdynamic',curNumRequestsType);
				}
			}
			
			$( '#container_results_' + tail ).html( data_title );
				
			if ( request_type == 'url_organic' )
			{
				$( '#container_urlo_01' ).html( 'error' );
				$( '#container_urlo_02' ).html( 'error' );
			}
			else if ( request_type == 'url_adwords' )
			{
				$( '#container_urla_01' ).html( 'error' );
				$( '#container_urla_02' ).html( 'error' );
			}
			
			if ( typeof ( errorType ) != "undefined" && errorType == "timeout" )
			{
				$( '#container_' + tail ).html( '<div class="report_nr2"><a href="#" id="timeout_' + request_type + '">' + r_j_error_t + '</a></div>' );
				$( '#timeout_' + request_type ).click(function()
				{
					$( '#container_' + tail ).html( '<div class="report_nr3"><img src="' + media_url + '/images/ajax-loader.gif" border="0px" width="220px" height="19px" /></div>' );
					mainRequest ( 0, 0, request_type, type, table_class, tail, data_title, header_vars, request, callback );
					return false;
				});
				$( '#report_wrapper_' + tail ).css( 'display', 'block' );
				
				var time_end = (new Date().getTime()) - time_start;
				$.getJSON( '/time.txt?status=end&query_id=' + rnd_m + '&report_type=' + type + '&return_status=timeout&time=' + time_end + '&query=' + query, function(){});
			}
			else
			{
				$( '#container_' + tail ).html( '<div class="report_nr2">' + r_j_error + '</div>' );
				$( '#report_wrapper_' + tail ).css( 'display', 'block' );
					
				var time_end = (new Date().getTime()) - time_start;
				$.getJSON( '/time.txt?status=end&query_id=' + rnd_m + '&report_type=' + type + '&return_status=error&time=' + time_end + '&query=' + query, function(){});
			}
			
			if ( bar_check == 1 )
			{
				load_check--;
				if ( load_check == 0 )
				{
					$( '.total_loader' ).css( 'display', 'none' );
					$('#footer').css('bottom','0px');
					$( '#loading-status-block' ).css('background-image','none');
					setTimeout("remLoadStatusBlock()",300);
				}
			}
		}
	});
}

	function reportPagination ( url, page, total_pages )
	{
		if ( total_pages <= 1 ) return '';
		var page_bound = 3;
		var ret = new Array();
		ret[0] = '<div style="background-color: #f00;">';
		var lim1 = Math.min( page_bound, total_pages);
		for ( i = 1; i <= lim1; i++ )
		{
			ret[i] = makePage( i, page, url );
		}
		
		var lim2 = Math.max( page - page_bound + 1, lim1 + 1);
		var lim3 = Math.min( parseInt(page) + parseInt(page_bound) - 1, total_pages);
		if ( lim2 > lim1 + 1)
		{
			ret[i] = '<div id="page_num_na">&#8230;</div>';
		}
		for ( i = lim2; i <= lim3; i++ )
		{
			ret[i] = makePage( i, page, url );
		}
		
		var lim4 = Math.max( total_pages - page_bound + 1, lim3 + 1);
		if ( lim4 > lim3 + 1)
		{
			ret[i] = '<div id="page_num_na">&#8230;</div>';
		}
		
		for ( i = lim4; i <= total_pages; i++ )
		{
			ret[i] = makePage( i, page, url );
		}
		
		ret.push( '</div><div style="clear: both; height: 0px;"><img src="' + media_url + '/images/blank.gif" border="0px" width="1px" height="0px" /></div>' );
		
		s = ret.join("");
		return s;
	}
	
	function makePage ( page, current_page, base_url )
	{
		var url	= new String("");
		var r	= new String("");
		if		( base_url.search(/page=/i) != "-1" ) url = base_url.replace(/page=\d+/, "page=" + page);
		else if ( base_url.search(/\?/) != "-1" ) url = base_url + "&page=" + page;
		else	url = base_url + "?page=" + page;
		if ( page == current_page )	r = '<div id="page_num_na">' + page + '</div>';
		else	r = '<div id="page_num"><a href="' + url + '">' + page + '</a></div>';
		return r;
	}
	
	function isEmpty(obj) {
	    for(var prop in obj) {
	        if(obj.hasOwnProperty(prop))
	            return false;
	    }

	    return true;
	}
	
	function apostrofCheck(input) {
		
		return encodeURIComponent(input.replace(/&#039;/i,"'"));
		
	}
	
	function getFavicon ( domain )
	{
		var img = new Image();
		$(img).load(function(){
			$('#favicon-block').append( this );
		}).error(function(){
			$('#favicon-block').css('background','url("/m/images/url_icon.gif") no-repeat 1px center');
		}).attr({'src':'http://' + domain + '/favicon.ico','border':'0px','width':'16','height':'16'});
	}
	
	function remLoadStatusBlock()
	{
		$( '#loading-status-block' ).fadeOut('500');
		$( '#email-report' ).fadeIn('300');
	}
	
	
