// Ajax realization

var lastSpan;

// Create new script element and start loading.
function ajaxExecute(href)
{
	$.getScript(href, function() { $(document).trigger("ajax_end"); });
	return;
	with (document)
	{
		// Oh shit! Damned stupid fucked Opera 7.23 does not allow to create SCRIPT
		// element over createElement (in HEAD or BODY section or in nested SPAN -
		// no matter): it is created deadly, and does not response on href assignment.
		// So - always create SPAN.
		lastSpan = body.appendChild(createElement("SPAN"));
		lastSpan.style.display = 'none';
		lastSpan.innerHTML = href + '.<s'+'cript></' + 'script>';
		setTimeout(
			function()
			{
				var s = lastSpan.getElementsByTagName("script")[0];
				s.language = "JavaScript";
				if (s.setAttribute) s.setAttribute('src', href); else s.src = href;
			}, 10);
	}
}

// Remove last used script element (clean memory).
function ajaxCleanup()
{
	if (lastSpan != null)
	{
		setTimeout(
		function()
		{
			// without setTimeout - crash in IE 5.0!
			if (lastSpan.parentNode != null)
				lastSpan.parentNode.removeChild(lastSpan);
		}, 100);
	}
	return false;
}

// Escape functions
var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
  trans[i] = i - 0x350;
trans[0x401] = 0xA8;
trans[0x451] = 0xB8;

function ruescape(str)
{
  var ret = [];
  for (var i = 0; i < str.length; i++)
  {
    var n = str.charCodeAt(i);
    if (typeof trans[n] != 'undefined')
      n = trans[n];
    if (n <= 0xFF)
      ret.push(n);
  }
  return escape(String.fromCharCode.apply(null, ret));
}

// Open images in popup
var k=0;
var rWin,rImg;

function rWindow(win,img){
//	alert("img.width & height: " +  img.width + " | " + img.height)
//	alert (img.complete && k <20)
	if (img.width > 30 && img.height > 30) {  // размер дефольтной незагруженной картинки обычно менее чем 30x30 
		w = win.innerWidth || win.document.body.clientWidth
		h = win.innerHeight || win.document.body.clientHeight
		win.resizeBy(img.width - w, img.height - h)
	} else {
		k++
		rWin = win
		rImg = img
		setTimeout('rWindow(rWin,rImg)',100);
	}
}

var r_id = Math.random();
r_id = Math.round(r_id*10000);

function imgOpen(url){
  try {
	mywin.close();
  } catch (e){
	// none
  } finally {
	mywin = window.open("","bigPhoto"+r_id,'width=250,height=110,status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=0,scrollbars=0');
	mywin.document.open();
	mywin.document.write("<HTML><body style=overflow:hidden;margin:0px;border:0px;padding:0px;background:#cccccc>");
	mywin.document.write("<table width=100% height=100% border=0 cellspacing=0 cellpadding=0><tr><td align=center>");
	mywin.document.write("<a href='#' title='закрыть окно' style='cursor:hand'><img id=myImg src="+url+" onClick='window.close()' border=0></a><br>");
	mywin.document.write("</td></tr></table>");
	mywin.document.write("<script>window.focus();resizeWindow();function resizeWindow(){window.opener.rWindow(window,document.images.myImg);}</script>");
	mywin.document.write("</body></HTML>");
	mywin.document.close();
  }
  return false;
}
        // get element by id
	function get(name) {
		var user_agent = navigator.userAgent.toLowerCase();
		if ( user_agent.indexOf("msie") != -1) {
			return eval('document.all.' + name);
		}
		if (user_agent.indexOf("mozilla/5.0") != -1) {
			return document.getElementById(name);
		}
		if (user_agent.indexOf("opera") != -1) {
			return document.getElementById(name);
		}
		return document.getElementById(name);
	}		

	// set cookie	
	function SetCookie(name, value){
		var argv = SetCookie.arguments;
		var argc = SetCookie.arguments.length;
		var comments = (argc > 2) ? argv[2] : "";
//		var domain = (argc > 3) ? argv[3] : "";
//		var domain =  ".webapp.ext";
		var domain =  ".mp3.ru";
		var expires = (argc > 4) ? argv[4] : "";
		var path = (argc > 5) ? argv[5] : "";
		var secure = (argc > 6) ? argv[6] : false;
		document.cookie = name + "=" + value +
			((expires == "") ? "" : ("; expires=" + expires)) +
			((path == "") ? "" : ("; path=" + path)) +
			((domain == "") ? "" : ("; domain=" + domain)) +
			((secure == true) ? "; secure" : "");
	}

// Catch keydown
OldKeyDown = document.onkeydown;
document.onkeydown = CatchKeyPressed;

function CatchKeyPressed(event) {
	if(window.OldKeyDown) OldKeyDown();
	opera = (window.opera) ? true : false
	ie = (document.all) ? true : false;
	if(opera) KeySet = 96; // `
	else KeySet = 192; // ` in IE && Mozilla
	kCode = (ie) ? window.event.keyCode : event.which;
	ctrl = (ie) ? window.event.ctrlKey : event.ctrlKey;
	alt = (ie) ? window.event.altKey : event.altKey;
	//alert(kCode);
	var str = '';
	if((ctrl || alt) && kCode == KeySet) {
		if(window.portal_ver) str = portal_ver;
		if(window.service_ver) for(i in service_ver) str += '\n'+service_ver[i];
		alert(str);
	}
}
// Make post request
// howto: http://www.captain.at/howto-ajax-form-post-request.php
// sample: if ( !makePOSTRequest("www.mp3.ru", "param1=texttext&param2=texttext") ) alert("bad post");
// calback sample: 
//	function alertContents() {
//		if (http_request.readyState == 4) {
//			if (http_request.status == 200) {
//        		    alert(http_request.responseText);
//			} else {
//				alert('There was a problem with the request.');
//			}
//		}
//	}
// note: `callback` is optional argument
var http_request = false;
function makePOSTRequest(url, parameters, callback) {
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		return false;
	}
	if ( typeof(callback) != "undefined" ) http_request.onreadystatechange = callback;
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	return true;
}

function FlashNews(id,mode) {
	obj = get(id);
	if(mode) {
		obj.src = '/i/index/news_bull1.gif';
	}
	else {
		obj.src = '/i/index/news_bull.gif';
	}
}

preListenCurrent = false; // указатель на контейнер добавленного плеера
preListenHTML = ''; // содержимое конейнера до замещеия плеером

function preListenCtrl(obj,snd_id,tid,timeline,volume) {
	var swf_file = '/templates/swf/player_v2.swf';
	var snd_src = '/upload/audio/'+snd_id;
	var bg_color = '0x1e85a6';
	var flashvars = 'snd_src='+snd_src+'&shemeColor='+bg_color+'&timelineCtrl='+timeline+'&volumeCtrl='+volume;
	// Замена ajaxExecute, выполнится после прослушивания 50% трека
	flashvars += "&statURL=/cat/?mode=ajaxlistentrack%26type=simple%26track=" + tid;
	// statGoal § ¤ _вбп Rв 0 ¤R 1
	flashvars += "&statGoal=0.1";
	if (preListenCurrent != false) {
		preListenCurrent.innerHTML = preListenHTML;
	}
	preListenCurrent = obj.parentNode;
	preListenHTML = obj.parentNode.innerHTML;
	playerWidth = 49
	playerHeight = 25
	playerHTML  = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+playerWidth+'" height="'+playerHeight+'" align="middle">';
	playerHTML += '<param name="allowScriptAccess" value="sameDomain" />';
	playerHTML += '<param name="movie" value="'+swf_file+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ebebeb" /><param name="wmode" value="transparent" />';
	playerHTML += '<param name="flashvars" value="'+flashvars+'" />';
	playerHTML += '<embed src="'+swf_file+'" flashvars="'+flashvars+'"quality="high" wmode="transparent" bgcolor="#ebebeb" width="'+playerWidth+'" height="'+playerHeight+'" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	obj.parentNode.innerHTML = playerHTML;
	// <RUS> for track listen ranking added tid (track id)
//	ajaxExecute('/cat/?mode=ajaxlistentrack&type=simple&track=' + tid);
	ajaxExecute("/stats/event_r.fexec?event=listen_track&target=" + tid + "&ret=ajaxCleanup");
	return false;
}

function preListen(obj,snd_id,tid) {
	var swf_file = '/templates/swf/player_v2.swf';
	var snd_src = '/upload/audio/'+snd_id;
	var bg_color = '0x1e85a6';
	var flashvars = 'snd_src='+snd_src+'&shemeColor='+bg_color+'&timelineCtrl='+1+'&volumeCtrl='+1;
	// Замена ajaxExecute, выполнится после прослушивания 50% трека
	flashvars += "&statURL=/cat/?mode=ajaxlistentrack%26type=simple%26track=" + tid;
	// statGoal § ¤ _вбп Rв 0 ¤R 1
	flashvars += "&statGoal=0.1";
	if (preListenCurrent != false) {
		preListenCurrent.innerHTML = preListenHTML;
	}
	preListenCurrent = obj.parentNode;
	preListenHTML = obj.parentNode.innerHTML;
	playerWidth = 23
	playerHeight = 25
	playerHTML  = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+playerWidth+'" height="'+playerHeight+'" align="middle">';
	playerHTML += '<param name="allowScriptAccess" value="sameDomain" />';
	playerHTML += '<param name="movie" value="'+swf_file+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ebebeb" /><param name="wmode" value="transparent" />';
	playerHTML += '<param name="flashvars" value="'+flashvars+'" />';
	playerHTML += '<embed src="'+swf_file+'" flashvars="'+flashvars+'"quality="high" wmode="transparent" bgcolor="#ebebeb" width="'+playerWidth+'" height="'+playerHeight+'" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	obj.parentNode.innerHTML = playerHTML;
/*
	var swf_file = '/templates/swf/player_blue.swf';
	var snd_src = '/upload/audio/'+snd_id;
	var bg_color = '0x1e85a6';
	if (preListenCurrent != false) {
		preListenCurrent.innerHTML = preListenHTML;
	}
	preListenCurrent = obj.parentNode;
	preListenHTML = obj.parentNode.innerHTML;
	playerWidth = 23
	playerHeight = 25
	playerHTML  = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+playerWidth+'" height="'+playerHeight+'" align="middle">';
	playerHTML += '<param name="allowScriptAccess" value="sameDomain" />';
	playerHTML += '<param name="movie" value="'+swf_file+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ebebeb" /><param name="wmode" value="transparent" />';
	playerHTML += '<param name="flashvars" value="snd_src='+snd_src+'&shemeColor='+bg_color+'" />';
	playerHTML += '<embed src="'+swf_file+'" flashvars="snd_src='+snd_src+'&shemeColor='+bg_color+'"quality="high" wmode="transparent" bgcolor="#ebebeb" width="'+playerWidth+'" height="'+playerHeight+'" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	obj.parentNode.innerHTML = playerHTML;
	// <RUS> for track listen ranking added tid (track id)
	ajaxExecute('/cat/?mode=ajaxlistentrack&type=simple&track=' + tid);
*/
	return false;
}

//Gilmore: For audio_page
function preListen2(obj,snd_id,tid) {
	var swf_file = '/templates/swf/player_v2.swf';
	var snd_src = '/upload/audio/'+snd_id;
	var bg_color = '0x1e85a6';
	var flashvars = 'snd_src='+snd_src+'&shemeColor='+bg_color+'&timelineCtrl=0';
	// Замена ajaxExecute, выполнится после прослушивания 50% трека
	flashvars += "&statURL=/cat/?mode=ajaxlistentrack%26type=simple%26track=" + tid;
	// statGoal § ¤ _вбп Rв 0 ¤R 1
	flashvars += "&statGoal=0.1";
	if (preListenCurrent != false) {
		preListenCurrent.innerHTML = preListenHTML;
	}
	preListenCurrent = obj.parentNode;
	preListenHTML = obj.parentNode.innerHTML;
	playerWidth = 17
	playerHeight = 18
	playerHTML  = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+playerWidth+'" height="'+playerHeight+'" align="middle">';
	playerHTML += '<param name="allowScriptAccess" value="sameDomain" />';
	playerHTML += '<param name="movie" value="'+swf_file+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ebebeb" /><param name="wmode" value="transparent" />';
	playerHTML += '<param name="flashvars" value="'+flashvars+'" />';
	playerHTML += '<embed src="'+swf_file+'" flashvars="'+flashvars+'"quality="high" wmode="transparent" bgcolor="#ebebeb" width="'+playerWidth+'" height="'+playerHeight+'" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	obj.parentNode.innerHTML = playerHTML;
/*
	var swf_file = '/templates/swf/player_blue.swf';
	var snd_src = '/upload/audio/'+snd_id;
	var bg_color = '0x1e85a6';
	if (preListenCurrent != false) {
		preListenCurrent.innerHTML = preListenHTML;
	}
	preListenCurrent = obj.parentNode;
	preListenHTML = obj.parentNode.innerHTML;
	playerWidth = 17
	playerHeight = 18
	playerHTML  = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+playerWidth+'" height="'+playerHeight+'" align="middle">';
	playerHTML += '<param name="allowScriptAccess" value="sameDomain" />';
	playerHTML += '<param name="movie" value="'+swf_file+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ebebeb" /><param name="wmode" value="transparent" />';
	playerHTML += '<param name="flashvars" value="snd_src='+snd_src+'&shemeColor='+bg_color+'" />';
	playerHTML += '<embed src="'+swf_file+'" flashvars="snd_src='+snd_src+'&shemeColor='+bg_color+'"quality="high" wmode="transparent" bgcolor="#ebebeb" width="'+playerWidth+'" height="'+playerHeight+'" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	obj.parentNode.innerHTML = playerHTML;
	// <RUS> for track listen ranking added tid (track id)
	ajaxExecute('/cat/?mode=ajaxlistentrack&type=simple&track=' + tid);
*/
	return false;
}

// Ruslan: For fighting
function preListenWithoutRank(obj,snd_id,tid,timeline,volume) {
	var swf_file = '/templates/swf/player_v2.swf';
	var snd_src = '/upload/audio/'+snd_id;
	var bg_color = '0x1e85a6';
	var flashvars = 'snd_src='+snd_src+'&shemeColor='+bg_color+'&timelineCtrl='+timeline+'&volumeCtrl='+volume;
	// Замена ajaxExecute, выполнится после прослушивания 50% трека
	//flashvars += "&statURL=/cat/?mode=ajaxlistentrack%26type=simple%26track=" + tid;
	// statGoal § ¤ _вбп Rв 0 ¤R 1
	//flashvars += "&statGoal=0.1";
	if (preListenCurrent != false) {
		preListenCurrent.innerHTML = preListenHTML;
	}
	preListenCurrent = obj.parentNode;
	preListenHTML = obj.parentNode.innerHTML;
	playerWidth = 49
	playerHeight = 25
	playerHTML  = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+playerWidth+'" height="'+playerHeight+'" align="middle">';
	playerHTML += '<param name="allowScriptAccess" value="sameDomain" />';
	playerHTML += '<param name="movie" value="'+swf_file+'" /><param name="quality" value="high" /><param name="bgcolor" value="#ebebeb" /><param name="wmode" value="transparent" />';
	playerHTML += '<param name="flashvars" value="'+flashvars+'" />';
	playerHTML += '<embed src="'+swf_file+'" flashvars="'+flashvars+'"quality="high" wmode="transparent" bgcolor="#ebebeb" width="'+playerWidth+'" height="'+playerHeight+'" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	obj.parentNode.innerHTML = playerHTML;
	return false;
}

var preImg = false;
var user1Img = new Image();
var user1Img_on = new Image();
var user2Img = new Image();
var user2Img_on = new Image();
var user3Img = new Image();
var user3Img_on = new Image();
var user4Img = new Image();
var user4Img_on = new Image();

function ImgCache() {
	user1Img.src = '/i/icon_creative.gif';
	user1Img_on.src = '/i/icon_creative_over.gif';
	user2Img.src = '/i/icon_blog.gif';
	user2Img_on.src = '/i/icon_blog_over.gif';
	user3Img.src = '/i/icon_about.gif';
	user3Img_on.src = '/i/icon_about_over.gif';
	user4Img.src = '/i/icon_stat.gif';
	user4Img_on.src = '/i/icon_stat_over.gif';
	preImg = true;
}
ImgCache();

function ImgHover(id,name,event) {
	if(preImg) {
		obj = get(id);
		var newImgHandler = (event) ? name+'Img_'+event : name+'Img';
		obj.src = eval(newImgHandler).src;
	}
}
var miniChartUpdateId = 0;

// COMPLAINT FUNCTIONS

function complaint_send()
{
	var type = document.getElementById("compl_type");
	var sourceid = document.getElementById("compl_sourceid");
	var subj = document.getElementById("compl_subj");
	var text = document.getElementById("compl_text");
	type = !type ? "" : type.value;
	sourceid = !sourceid ? "" : sourceid.value;
	subj = !subj ? "" : subj.value;
	text = !text ? "" : text.value;
	if (type == "" || sourceid == "" || subj == "" || text.length < 10) 
	{ 
		var warn = document.getElementById("compl_warn");
		if (!warn) { complaint_hide(); return; }
		warn.style.display = "block";
		return;
	}
	ajaxExecute("/complaint/complaint.fexec?mode=ajaxsendcomplaint&type=" + type + "&sourceid=" + 
		sourceid + "&subject=" + subj + "&text=" + ruescape(text) + "&seed=" + Math.random());
}

function complaint_show()
{
	if (complaint_window) complaint_window.Show();
}

function complaint_hide()
{
	if (complaint_window) complaint_window.Hide();
}

function complaint(type, id)
{
	ajaxExecute("/complaint/complaint.fexec?mode=ajax&type=" + type + "&sourceid=" + id + "&seed=" + Math.random());
}
function hyperlink_track(id, user, track, user_id, file_name)
{
    ajaxExecute("/hyperlink/?id=" + id +"&seed=" + Math.random());
}