// ==UserScript==
// @name           VKontakte Music Download [modified by .DeV!L]
// @namespace      http://www.x-code.name/
// @update			2009.10.30
// @description    Music Download For VKontakte.ru
// @include        http://vkontakte.ru/*
// ==/UserScript==

var _global = {cnt: 0, cnt2: 0};

function addLyric(id, wall) {
	if (wall){wall = 'Wall';}else{wall = '';}
    var img = document.getElementById("imgbutton"+wall+id);
	var str = img.getAttribute("onclick");
	if (location.pathname == '/gsearch.php'){
		var re = new RegExp('operate'+wall+'\\((\\d+)[^0-9]+(\\d+)[^0-9]+(\\d+),[^0-9a-zA-Z]+([0-9a-zA-Z]+)');	
	}else{
		var re = new RegExp('operate'+wall+'\\(\\d+,\'(.*?)\',');	
	}
	
    var arr=re.exec(str);
    var addon=document.createElement("a");
    var user=arr[3];
    if (user<100000) {
		user=parseInt(user)+100000;
		user=(user.toString()).substr(1);
    }
	
    //addon.setAttribute("href","http://cs"+arr[2]+".vkontakte.ru/u"+user+"/audio/"+arr[4]+".mp3");
	addon.setAttribute("href",arr[1]);

	var span = document.getElementById("title"+wall+id);
    var title=span.innerHTML.replace(/<[^>]+>/g,"").replace('amp;', '');
    var artb=document.getElementById("performer"+wall+id);
    var artist=artb.innerHTML.replace(/<[^>]+>/g,"").replace('amp;', '');    
    var newdiv=document.createElement("div");
    var addon1=document.createElement("a");
	
	var dlImg = document.createElement('img');
	dlImg.alt = artist+' - '+title;
	dlImg.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ'+
				'bWFnZVJlYWR5ccllPAAAAhBJREFUeNqkk79v00AUx78X26GJkzQqP4qKqLoQMWMhkBASLOyIAYQy'+
				'wVBGJv6OrFX5sUSoYoCpFagSVKpgac1SFmABofJDpE3t1Mn57LN5F+LEDoWFk55P9967z33P7x2L'+
				'4xj/M3T1ufTwR8bJGFugyUq5bDpoPp2zdmt6BIikHAdb16/MWEEQQ9cZnqx+/beCMAz/CHiehOuG'+
				'KJf1A+MZgNNqoVipZAKchwQQpCBGIEQm1nVd+s6OAJ7jIPA5zMrkMEkICd8PEQQaQt8fKXMdCO5n'+
				'FaihTunstXGoUBwAQjgEZsyAGAD8Xhdy7Dp6eqGC3NuHpulo0bV2dtrI56sIOIeUIaIoOvgfUIkW'+
				'EP0um4wkgSR6EYPQDXCwRMFmsonybZrmR1UQYp2c1rWbF6xPP7sqAdtegE7ehBQaaudrluq3qmng'+
				'9YptU5+sJ7DcgNgkSGPp0Uu7OFXC1r6Gz/EEdgtlfEEB77mBuGxi7dkbW+Wp/AwggdCPbDxfXLbn'+
				'TlaxN1Ea2uHpSWw8fmEHY5v7XavkVs7V+/dmR2rA1Kk6+e7O3qlbH6jccybwfbGpZDew+7Eptp4i'+
				'+PYOwzc0/phyx05Dv3ivbly9vzmzGsdqVmvlTw+1T1lfAdGVzyA7TnZUKcuduX0ZJ87ewPbGUvT2'+
				'wavBvjaZehg8OTgN0MhKZKqT2F9av0fWUYVLAL8EGAB/dRts9he48AAAAABJRU5ErkJggg==';
	addon.appendChild(dlImg);
	
	addon.setAttribute("title", artist+' - '+title);
	addon.setAttribute("alt", artist+' - '+title);
	
    addon1.setAttribute("href", "http://www.lyricsplugin.com/wmplayer03/plugin/?artist="+encodeURIComponent(artist)+"&title="+encodeURIComponent(title));
    addon1.setAttribute("target", "_blank");
	addon1.setAttribute('title', '\u0422\u0435\u043A\u0441\u0442');
	
	var liImg = document.createElement('img');
	liImg.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ'+
				'bWFnZVJlYWR5ccllPAAAAcRJREFUeNqMU01LAlEUPTMO5eQLdcAZauUqESFQF9JWkEBoHbmyVZug'+
				'39FPiHCZuAzatHAfumznUhFlRDFLcz786L0XM8yEiRfevDv33nPmzH33CbVaDcwEQbig2xF2s/56'+
				'vX5hjrRcLp3gUalUetgFXa1WbxxfWiwWboKyonIl4eBgH4TIkOU9pg2GYWE2M/D9beD6yYYXI9m2'+
				'7SMQRQGhkAxNU6AohBNMJlPo+gdM0+I1XoxkWZb7slqt+H52+4zP9htXYpMT4PXOV+PFbCSo359D'+
				'VaOIREIYj6eIRsn/BKZp+pKXj5ONjUt6arwYyTAMH0GlUkE2m0Wv1/s9r34f5XIZzWaTKokimUzC'+
				'i/EpYEdaLBa5r2ka39PpNO96PB53a7Yq6Ha7CAaD9AhlzOdz/lUGcuKxWMyv4C8Bk/jXWFxVVdff'+
				'SkCnzJWv6zoKhQKdBwWj0YgrYjkfQafT8bHn83k3mUqluHy2nB54FQwGA0j1eh25XA7hcNjtAft/'+
				'9r+skPXAmQ+HYDgc0umcoNFoQKIxmTqHiUQCgUAAmUxm60ViNe12G61Wi8n+EuhDoeuYEHIqiiLZ'+
				'5TZSFVNq79Tt/QgwAHDBCkXdueH3AAAAAElFTkSuQmCC';
	addon1.appendChild(liImg);
	
    newdiv.appendChild(addon);
	newdiv.innerHTML += " ";
    newdiv.appendChild(addon1);
    newdiv.className="duration";
    artb.parentNode.nextSibling.nextSibling.style.textAlign = "center";
	artb.parentNode.nextSibling.nextSibling.appendChild(document.createElement('br'));
	artb.parentNode.nextSibling.nextSibling.appendChild(addon);
	artb.parentNode.nextSibling.nextSibling.appendChild(addon1);
}

function addLyricSearch(id) {
    var img = document.getElementById("imgbutton"+id);
	var str = img.getAttribute("onclick");
    var re = new RegExp('operate\\((\\d+)[^0-9]+(\\d+)[^0-9]+(\\d+),[^0-9a-zA-Z]+([0-9a-zA-Z]+)');
    var arr=re.exec(str);
    var addon=document.createElement("a");
    var user=arr[3];
    if (user<100000) {
		user=parseInt(user)+100000;
		user=(user.toString()).substr(1);
    }
	
    addon.setAttribute("href","http://cs"+arr[2]+".vkontakte.ru/u"+user+"/audio/"+arr[4]+".mp3");
	//addon.setAttribute("href",arr[1]);

	var span = document.getElementById("title"+id);
    var title=span.innerHTML.replace(/<[^>]+>/g,"").replace('amp;', '');
    var artb=document.getElementById("performer"+id);
    var artist=artb.innerHTML.replace(/<[^>]+>/g,"").replace('amp;', '');    
    var newdiv=document.createElement("div");
    var addon1=document.createElement("a");
	
	var dlImg = document.createElement('img');
	dlImg.alt = artist+' - '+title;
	dlImg.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ'+
				'bWFnZVJlYWR5ccllPAAAAhBJREFUeNqkk79v00AUx78X26GJkzQqP4qKqLoQMWMhkBASLOyIAYQy'+
				'wVBGJv6OrFX5sUSoYoCpFagSVKpgac1SFmABofJDpE3t1Mn57LN5F+LEDoWFk55P9967z33P7x2L'+
				'4xj/M3T1ufTwR8bJGFugyUq5bDpoPp2zdmt6BIikHAdb16/MWEEQQ9cZnqx+/beCMAz/CHiehOuG'+
				'KJf1A+MZgNNqoVipZAKchwQQpCBGIEQm1nVd+s6OAJ7jIPA5zMrkMEkICd8PEQQaQt8fKXMdCO5n'+
				'FaihTunstXGoUBwAQjgEZsyAGAD8Xhdy7Dp6eqGC3NuHpulo0bV2dtrI56sIOIeUIaIoOvgfUIkW'+
				'EP0um4wkgSR6EYPQDXCwRMFmsonybZrmR1UQYp2c1rWbF6xPP7sqAdtegE7ehBQaaudrluq3qmng'+
				'9YptU5+sJ7DcgNgkSGPp0Uu7OFXC1r6Gz/EEdgtlfEEB77mBuGxi7dkbW+Wp/AwggdCPbDxfXLbn'+
				'TlaxN1Ea2uHpSWw8fmEHY5v7XavkVs7V+/dmR2rA1Kk6+e7O3qlbH6jccybwfbGpZDew+7Eptp4i'+
				'+PYOwzc0/phyx05Dv3ivbly9vzmzGsdqVmvlTw+1T1lfAdGVzyA7TnZUKcuduX0ZJ87ewPbGUvT2'+
				'wavBvjaZehg8OTgN0MhKZKqT2F9av0fWUYVLAL8EGAB/dRts9he48AAAAABJRU5ErkJggg==';
	addon.appendChild(dlImg);
	
	addon.setAttribute("title", artist+' - '+title);
	addon.setAttribute("alt", artist+' - '+title);
	
    addon1.setAttribute("href", "http://www.lyricsplugin.com/wmplayer03/plugin/?artist="+encodeURIComponent(artist)+"&title="+encodeURIComponent(title));
    addon1.setAttribute("target", "_blank");
	addon1.setAttribute('title', '\u0422\u0435\u043A\u0441\u0442');
	
	var liImg = document.createElement('img');
	liImg.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ'+
				'bWFnZVJlYWR5ccllPAAAAcRJREFUeNqMU01LAlEUPTMO5eQLdcAZauUqESFQF9JWkEBoHbmyVZug'+
				'39FPiHCZuAzatHAfumznUhFlRDFLcz786L0XM8yEiRfevDv33nPmzH33CbVaDcwEQbig2xF2s/56'+
				'vX5hjrRcLp3gUalUetgFXa1WbxxfWiwWboKyonIl4eBgH4TIkOU9pg2GYWE2M/D9beD6yYYXI9m2'+
				'7SMQRQGhkAxNU6AohBNMJlPo+gdM0+I1XoxkWZb7slqt+H52+4zP9htXYpMT4PXOV+PFbCSo359D'+
				'VaOIREIYj6eIRsn/BKZp+pKXj5ONjUt6arwYyTAMH0GlUkE2m0Wv1/s9r34f5XIZzWaTKokimUzC'+
				'i/EpYEdaLBa5r2ka39PpNO96PB53a7Yq6Ha7CAaD9AhlzOdz/lUGcuKxWMyv4C8Bk/jXWFxVVdff'+
				'SkCnzJWv6zoKhQKdBwWj0YgrYjkfQafT8bHn83k3mUqluHy2nB54FQwGA0j1eh25XA7hcNjtAft/'+
				'9r+skPXAmQ+HYDgc0umcoNFoQKIxmTqHiUQCgUAAmUxm60ViNe12G61Wi8n+EuhDoeuYEHIqiiLZ'+
				'5TZSFVNq79Tt/QgwAHDBCkXdueH3AAAAAElFTkSuQmCC';
	addon1.appendChild(liImg);
	
    newdiv.appendChild(addon);
	newdiv.innerHTML += " ";
    newdiv.appendChild(addon1);
    newdiv.className="duration";
	var tmp = document.getElementById('actions'+id);
    tmp.style.textAlign = "center";
	//tmp.appendChild(document.createElement('br'));
	tmp.appendChild(addon);
	tmp.appendChild(addon1);
}

function addLyrics(f,s) {
	if (f){
		var audios = document.getElementsByClassName('audioRow');
		if(audios){
			re=/audio(\d+)/;
			for (var i=0;i<audios.length;i++) {
				var m = audios[i].id.match(re);
				if (m) {
					addLyric(m[1], false);
				}
			}
		}
	}
		
	if (s){
		var audios = document.getElementsByClassName('audioRowWall');
		if (audios.length > 0){
			re=/audioWall(\d+)/;
			for (var i=0;i<audios.length;i++) {
				var m = audios[i].id.match(re);
				if (m) {
					addLyric(m[1], true);
				}
			}
		}		
	}
}

function searchRefreshBtn()
{
	//search
	if (location.pathname == "/gsearch.php"){
		var f = document.getElementById("header");
		var btn = document.createElement('div');
		var img = document.createElement('img');
		img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\
				bWFnZVJlYWR5ccllPAAAAuZJREFUeNqkU9tLVGEQn3Pb21HX1V1dV0hbL2mBUadwS7qR+FARJXSh\
				3oOgP6GH3noK6rGX7GHtwaKCwCQiiMUoYgsltXDX9dKalz3pupdzvu/cmuOaGQU9dGC+73zfzPxm\
				5jfzMZZlwf98vL0c61u6i5v0F30c5SaKgJLHYLJpGFTXddA17ReAYRgxsCzpQk9IIqSUEc8x8OjV\
				PJw9WtcgZ2kgnVHp7IKSNw2YQPW3nxFYe0G0KKIO9Q/OxhnLhEJOA0IMsCNp1GREgattCXoaTh4I\
				7HLwVg8GC/8GoBESAkPrOtVZI2WWiuBy4p2qoTOFhy9TuXdji+V5hTSvympTzz7/HgaM85ZpVmI5\
				GxlQ2tsYdDVnV4rA8xY8GJyMCw68JwTQKD6bzr54HptRVErD8lKheZvf2YE+hwzkYZ0DSkhXtchX\
				UaLBaEpO4vnt/SfjpRwRhGXZD0hgcDSRkdpDFfX+cp6gzRHUPiuVoKotHAseHetPppZXDV2/htFv\
				o8SVfB5yKyt2loNTqWUH2tSjbRh99qNsZlBQdGtN0631f7OIpQhCFPsRxRLsFscKa2tRjufFgm5V\
				CLBuJ262karq++UcqTAYzhnwizQ9lzmBkQcFpxM25sOWSDDorZRVEzjQiugzubULr2e/ZiZkEKZ8\
				2+sVZP8w1rxXxUxQB8d7D0q4R/w7m5rQBubS8nc8D9u6EgClsekvM6OuSjGR5sSpcHfEXV7r60Eu\
				JEwVkkUWdp/rlhIKC6bogcTYdAJ9HtvTuA6Ada6q+eJAfGDoo8frTs67vAmzM5Kru3imHMmDLOeA\
				kRwHvioPjESfxmmhMIwlzOeHbpQ4yPVfArambYrsOK18uqe0e1vDZUK40UHqgpY9TKZDADdrwYIJ\
				0H71sjR6p892+6wvjkcZ+zUyDGNf2KwGGLevGgJtIpSFBIauGVDTcQWqW1r/eGby5IT55tb1rQA4\
				e+BBcaMw/3jF9ovTbfp+CDAAIqquPExvnOoAAAAASUVORK5CYII=';
		//btn.setAttribute('id', 'btnRefresh');
		btn.setAttribute('style', 'float: right;');
		var a = document.createElement('a');
		a.setAttribute('href', 'javascript:void(0);');
		a.setAttribute('id', 'btnRefresh');
		a.appendChild(img);
		btn.appendChild(a);
		f.insertBefore(btn, f.firstChild);
		
		var _b = document.getElementById('btnRefresh');
		_b.addEventListener('click', function(e){
			var audios = document.getElementsByClassName('audioRow');
			if(audios){
				re=/audio(\d+)/;
				for (var i=0;i<audios.length;i++) {
					var m = audios[i].id.match(re);
					if (m) {
						addLyricSearch(m[1]);
					}
				}
			}
			return false;
		}, false);
	}
}

function onChange(e){
	if (e.target.className && e.target.className.search('commentsPagesWrap') == 0){
		_global.cnt++;
	}
	
	if (_global.cnt == 2){
		_global.cnt = 0;
		addLyrics(true, false);
	}
}

function onChangeWall(e){
	if (e.target.id && e.target.id.search('wPostContainer') == 0){
		_global.cnt2++;
	}
	
	if (_global.cnt2 == 1) {
		var obj = document.getElementsByClassName('dArrow');
		if (obj.length > 0){
			obj[0].addEventListener('click', onNext, false);
		}
		var obj = document.getElementsByClassName('upArrow');
		if (obj.length > 0){
			obj[0].addEventListener('click', onNext, false);
		}
	}
	
	if (_global.cnt2 == 10){
		_global.cnt2 = 0;
		addLyrics(false, true);
	}
}

function onNext(e){
	_global.cnt2 = 0;
}

function onBack(e){
	_global.cnt2 = 0;
}

addLyrics(true, true);
searchRefreshBtn();

window.addEventListener('load', function() { 
	var obj = document.evaluate('//div[@id="audiosWrap"]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
	if (obj.snapshotLength > 0){
		obj.snapshotItem(0).addEventListener('DOMNodeInserted', onChange, false);
	}
	var obj = document.evaluate('//div[@id="fBox2"]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
	if (obj.snapshotLength > 0){
		obj.snapshotItem(0).parentNode.addEventListener('DOMNodeInserted', onChangeWall, false);
	}
	var obj = document.getElementsByClassName('dArrow');
	if (obj.length > 0){
		obj[0].addEventListener('click', onNext, false);
	}
	var obj = document.getElementsByClassName('upArrow');
	if (obj.length > 0){
		obj[0].addEventListener('click', onNext, false);
	}
}, true);