var promoTimer;

var mylib = {
	abstractPage : {
		init : function() {

			$("#toTwitter").hover(function(){ $(".showTwitter h4").show(); }, 
								  function() { $(".showTwitter h4").hide();	});

			$("#toKontakt").hover(function(){ $(".showKontakt h4").show(); }, 
								  function() { $(".showKontakt h4").hide();	});

			$("#toBrouser").hover(function(){ $(".showBrouser h4").show(); }, 
								  function() { $(".showBrouser h4").hide();	});

			$("#toFacebook").hover(function(){ $(".showFacebook h4").show(); }, 
								   function() {	$(".showFacebook h4").hide(); });

			$("#toLj").hover(function(){ $(".showLj h4").show(); }, 
							 function() { $(".showLj h4").hide(); });

			$("#toTwitter").click(function(){
				pageTracker._trackPageview("/icon_twitter/");
			});

			$("#toKontakt").click(function(){
				pageTracker._trackPageview("/icon_kontakt/");
			});

			$("#toFacebook").click(function(){
				pageTracker._trackPageview("/icon_facebook/");
			});

			$(".showAll").click(function(){
				var prefix = $(this).attr("id");
				
				$("#" + prefix + "List li").show();
				$(this).hide();
				return false;
			});

			$("#lastListenedSongs tr").live( {
				mouseenter: function(){	$(this).children().children(".reOrderSong").show(); },
				mouseleave: function(){ $(this).children().children(".reOrderSong").hide(); }
				}
			);

			$(".reOrderSong").live('click', function(){
				var tmp = $(this).attr('id').split('_');
				var songOrder = tmp[2] + '_' + tmp[1];
				addOrder(songOrder);
			});

			$('.answerLink').click(function(){
				var id = $(this).attr('id');
				$('#' + id + 'div').show();
				return false;
			});

			$("a.goToAnswer").click(function () {
				var anc = $(this).attr("href").substring(1);
				$("html:not(:animated)"+( ! $.browser.opera ? ",body:not(:animated)" : "")).animate({scrollTop: $("#"+anc).position().top});
				$('.answers').removeClass('selectedFaq');
				$("#"+anc+"-text").addClass('selectedFaq');
				return false;
			});

			$(".getArtists").click(function(){
				$(".arstistList").remove();
				var site = $(this).attr('id');
				var artists = $("#artists_" + site + " .artistLink");
				var artistLinks = $("<ul class='arstistList'></ul>");
				artists.each(function(){
					var classes = $(this).attr('class');
					var tmp = classes.split(' ');
					var ar_url = tmp[0];
					artistLinks.append("<li><a href='#"+ar_url+"' class='dashed'>" + $(this).html() + "</a></li>");
				});
				artistLinks.click(function(event){ 
					event.stopPropagation(); 
				}); 
				$("#li_" + site).append(artistLinks);
				return false; 
			});

			$('body').click(function() { 
				$(".arstistList").hide();
			}); 

			$("#fastSearch").autocomplete({
				serviceUrl: "/php/fastSearch.php",
				minChars: "3", 
				maxHeight: "400",
				width: 418,
				zIndex: "9999",
				loaderImg: "searchLoader",
				params: {site: 'all'},
				deferRequestBy: "300",
				onSelect: function(data, value){ 
					document.location.href=value;
					return false;
				}
			});

			$(".setLiked").live( {
				mouseenter: function(){ $(this).attr('src', "/images/heart_fill.png"); },
				mouseleave: function(){ $(this).attr('src', "/images/heart.png"); }
				}
			);

			$(".setLiked").live('click', function(){ 
				setSongLike($(this).attr('id'), 'like');
			});

			$(".setUnliked").live('click', function(){ 
				setSongLike($(this).attr('id'), 'unlike');
			});

			parseAuth();

			$("#getYesterday").click(function(){
				parseLastRadioSongs('yesterday');
				$('.selectedLink').removeClass('selectedLink');
				$(this).addClass('selectedLink');
				return false;
			});

			$("#getToday").click(function(){
				parseLastRadioSongs('today');
				$('.selectedLink').removeClass('selectedLink');
				$(this).addClass('selectedLink');
				return false;
			});

			$("#getLast").click(function(){
				parseLastRadioSongs('last');
				$('.selectedLink').removeClass('selectedLink');
				$(this).addClass('selectedLink');
				return false;
			});

			$(".showAlbumInfo").hover(function(){
				//var p = $(this).position().left - $(this).parent().parent().parent().position().left;
				var div = $(this).parent().parent().prev();
				//div.css('margin', '0 0 0 ' + p + 'px');
				div.show();
				$(".showAlbumInfo").css('z-index', '5');
				$(this).css('z-index', '20');
			}, function(){
				var div = $(this).parent().parent().prev();
				div.hide();
			});

			$(".fullAlbumInfo").hover(function(){
				$(this).show();
			}, function(){
				$(this).hide();
			});

			var height = $("#fr_promo").outerHeight();
			$("#heighter").css('height', height + 'px');
	
			promoTimer = setInterval('showNextPromo();', 10000);

			$(".promoBlock").hover(function(){
				inPromo = 1;
				$('.switchers div').css('opacity', '0.2');
			}, function(){
				inPromo = 0;
				$('.switchers div').css('opacity', '1.0');
				if (tried == 1){
					showNextPromo();
				}
			});

			$('#showForm').click(function(){
				$('#formDiv').toggle();
			});

			$('#showSpoiler').click(function(){
				$('#spoiler').toggle();
			});

			$("#fr_switch").click(function(){showPromo(0);});
			$("#it_switch").click(function(){showPromo(1);});
			$("#es_switch").click(function(){showPromo(2);});
			$("#en_switch").click(function(){showPromo(3);});
			$("#de_switch").click(function(){showPromo(4);});
			$("#soundtrack_switch").click(function(){showPromo(5);});
			
			$("#showLiteras").click(function(){
				$(".topLiteras").toggle();
				return false;
			});

			$('body').click(function() { 
				$(".topLiteras").hide();
			}); 
			
			$('.topLiteras').click(function(event){ 
				event.stopPropagation(); 
			}); 

			$("#orderSearch").autocomplete({
				serviceUrl: "/php/orderSearch.php",
				minChars: "3", 
				maxHeight: "550",
				width: 250,
				zIndex: "9999",
				loaderImg: "orderLoader",
				params: {site: 'all'},
				deferRequestBy: "300",
				onSelect: function(data, value){ 
					addOrder(value);
					return false;
				}
			});
		}
	}
};

var inPromo = 0;
var sites = new Array('fr', 'it', 'es', 'en', 'de', 'soundtrack');
var cur = 0;
var i = 0;
var tried = 0;

function addOrder(v_value) {
	$("#orderSearch").val('');

	$.get('/radio/orderSong/', {site_id: v_value}, onAjaxSuccess);

	function onAjaxSuccess(xmlData) {
		var s_id = $(xmlData).find("id").text();
		var fr_title = $(xmlData).find("fr_title").text();
		var s_url = $(xmlData).find("s_url").text();
		var picture = $(xmlData).find("picture").text();
		var ar_url = $(xmlData).find("ar_url").text();
		var name = $(xmlData).find("name").text();
		var site = $(xmlData).find("site").text();
		var like = $(xmlData).find("liked").text();
		var heart = '';
				
		if (like == 0) {
			heart = '<img src="/images/heart.png" class="setLiked" id="set_like_'+s_id+'_'+site+'">';
		} else {
			heart = '<img src="/images/heart_fill.png" class="setUnliked" id="set_unlike_'+s_id+'_'+site+'">';
		}

		htmlInsert = '';
		htmlInsert += '<tr id="'+s_id+'_'+site+'"><td class="time"></td><td><img src="http://en.lyrsense.com/'+picture+'.50.jpg" width="50" height="50" alt="" class="borderImg"/></td><td><strong>	<a href="http://'+site+'.lyrsense.com/'+ar_url+'/'+s_url+'" target="_blank">'+fr_title+'</a></strong>   '+heart+'<br/><small><a href="http://'+site+'.lyrsense.com/'+ar_url+'" target="_blank">'+name+'</a></small></td></tr>';

		$("#orderSongs").prepend(htmlInsert);
	}
}

function showNextPromo() {
	i = cur;
	if (inPromo != 1) {
		tried = 0;
		if (i != 5) {
			i++;
		} else {
			i = 0;
		}
		showPromo(i);
	} else {
		tried = 1;
	}
}

function showPromo(i) {	
	if (i != cur) {
		var prev_s = sites[cur];
		var next_s = sites[i];
		cur = i;
		i = cur;

		var width = $("#"+prev_s+"_promo").outerWidth() - 2;
		$("#"+prev_s+"_promo").css('width', width + 'px');
		$("#"+next_s+"_promo").css('width', width + 'px');

		$("#"+next_s+"_promo").css('position','absolute');
		$("#"+prev_s+"_promo").css('position','absolute');

		$("#"+prev_s+"_promo").fadeOut(1500);
		$("#"+next_s+"_promo").fadeIn(1500);

		$(".switchers div").removeClass('selected');
		$("#"+next_s+"_switch").addClass('selected');

		var height = $("#"+next_s+"_promo").outerHeight();

		$("#heighter").css('height', height + 'px');

		clearInterval(promoTimer);
		promoTimer = setInterval('showNextPromo();', 10000);
	}
}

function parseAuth() {
	var cokiehash = $.cookie("userHash");
	if (cokiehash != '') {
		$.get('/api/checkAuth', {}, onAjaxSuccess);
	}
	function onAjaxSuccess(xmlData) {
		var answer = $(xmlData).find('type').text();
		if (answer == 'checked') {
			$("#helloWorld").html("Здравствуйте, " + $.cookie("userName") + "");
		} else {
			$("#helloWorld").html("Здравствуйте, пользователь");
		}
	}
}

function parseLastRadioSongs(v_period) {
	$("#listLoader").show();

	var myDate = new Date();
	var timestamp = myDate.getTime();
	
	$.get('/api/getLastRadioSongs?t=' + timestamp, {period: v_period}, onAjaxSuccess);

	function onAjaxSuccess(xmlData) {
		var arr_s_id = $(xmlData).find("id");
		var arr_fr_title = $(xmlData).find("fr_title");
		var arr_s_url = $(xmlData).find("s_url");
		var arr_time = $(xmlData).find("time");
		var arr_picture = $(xmlData).find("picture");
		var arr_ar_url = $(xmlData).find("ar_url");
		var arr_name = $(xmlData).find("name");
		var arr_site = $(xmlData).find("site");
		var arr_liked = $(xmlData).find("liked");
		var htmlInsert = '';
		var i = 0;

		if (arr_fr_title.length == 0) {
			$("#lastListenedSongs").empty();
			$("#emptyLastSongs").html("<small>Вы пока не проcлушали ни одной песни.</small>");
			$("#listLoader").hide();
			return;
		}

		arr_fr_title.each(
			function () {
				var s_id = $(arr_s_id[i]).text();
				var fr_title = $(this).text();
				var s_url = $(arr_s_url[i]).text();
				var time = $(arr_time[i]).text();
				var picture = $(arr_picture[i]).text();
				var ar_url = $(arr_ar_url[i]).text();
				var name = $(arr_name[i]).text();
				var site = $(arr_site[i]).text();
				var like = $(arr_liked[i]).text();

				var heart = '';
				
				if (like == 0) {
					heart = '<img src="/images/heart.png" class="setLiked" id="set_like_'+s_id+'_'+site+'">';
				} else {
					heart = '<img src="/images/heart_fill.png" class="setUnliked" id="set_unlike_'+s_id+'_'+site+'">';
				}

				var repeat = '<img src="/images/repeat.png" class="reOrderSong" id="reorder_'+s_id+'_'+site+'">';

				i++;
				htmlInsert += '<tr><td class="time">'+time+'</td><td><img src="http://en.lyrsense.com/'+picture+'.50.jpg" width="50" height="50" alt="" class="borderImg"/></td><td><strong>	<a href="http://'+site+'.lyrsense.com/'+ar_url+'/'+s_url+'" target="_blank">'+fr_title+'</a></strong>   '+heart+' '+repeat+'<br/><small><a href="http://'+site+'.lyrsense.com/'+ar_url+'" target="_blank">'+name+'</a></small></td></tr>';
			}
		);
		$("#lastListenedSongs").html(htmlInsert);
		$("#emptyLastSongs").empty();
		$("#listLoader").hide();
	}
}

function addNewLastSong(v_id, v_site) {
	$.get('/api/getShortSongInfo', {id: v_id, site: v_site}, onAjaxSuccess);

	function onAjaxSuccess(xmlData) {
		var s_id = $(xmlData).find("id").text();
		var fr_title = $(xmlData).find("fr_title").text();
		var s_url = $(xmlData).find("s_url").text();
		var picture = $(xmlData).find("picture").text();
		var ar_url = $(xmlData).find("ar_url").text();
		var name = $(xmlData).find("name").text();
		var site = $(xmlData).find("site").text();
		var like = $(xmlData).find("liked").text();

		var myDate = new Date();
		var minutes = myDate.getMinutes();
		if (minutes < 10) minutes = '0' + minutes;
		var time = myDate.getHours() + ':' + minutes;

		var heart = '';
				
		if (like == 0) {
			heart = '<img src="/images/heart.png" class="setLiked" id="set_like_'+s_id+'_'+site+'">';
		} else {
			heart = '<img src="/images/heart_fill.png" class="setUnliked" id="set_unlike_'+s_id+'_'+site+'">';
		}

		var repeat = '<img src="/images/repeat.png" class="reOrderSong" id="reorder_'+s_id+'_'+site+'">';

		htmlInsert = '';
		htmlInsert += '<tr><td class="time">'+time+'</td><td><img src="http://en.lyrsense.com/'+picture+'.50.jpg" width="50" height="50" alt="" class="borderImg"/></td><td><strong>	<a href="http://'+site+'.lyrsense.com/'+ar_url+'/'+s_url+'" target="_blank">'+fr_title+'</a></strong>   '+heart+' '+repeat+'<br/><small><a href="http://'+site+'.lyrsense.com/'+ar_url+'" target="_blank">'+name+'</a></small></td></tr>';

		$("#lastListenedSongs").prepend(htmlInsert);

		var rows = ($('#lastListenedSongs tr').size());

		if (rows > 30) {
			var el = $("#lastListenedSongs tr").eq(30).remove();
		}

		$("#emptyLastSongs").hide();

		if ($("tr#"+s_id+'_'+site).length > 0) {
			$("tr#"+s_id+'_'+site).fadeOut('500').remove();
		}
	}

}

function setSongLike(v_songAttr, v_action) {
	$.get('/api/setSongLike', {songAttr: v_songAttr, action: v_action}, onAjaxSuccess);
	$("#"+v_songAttr).after('<img src="/images/loader.gif" id="loaderHeart" width="10" height="10">');

	function onAjaxSuccess() {
		if (v_action == 'like') {
			$("#"+v_songAttr).attr('src', "/images/heart_fill.png");
			$("#"+v_songAttr).removeClass('setLiked');
			$("#"+v_songAttr).addClass('setUnliked');
			$("#loaderHeart").remove();
		} else {
			$("#"+v_songAttr).attr('src', "/images/heart.png");
			$("#"+v_songAttr).removeClass('setUnliked');
			$("#"+v_songAttr).addClass('setLiked');
			$("#loaderHeart").remove();
		}
	}
}

function add_favorite(a) {
	var title=document.title;
	var url=document.location;
	try {
	  // Internet Explorer
	  window.external.AddFavorite(url, title);
	}
	catch (e) {
	  try {
	    // Mozilla
	    window.sidebar.addPanel(title, url, "");
	  }
	  catch (e) {
	    // Opera
	    if (typeof(opera)=="object") {
	      a.rel="sidebar";
	      a.title=title;
	      a.url=url;
	      return true;
	    }
	    else {
	      // Unknown
	      alert('Нажмите Ctrl-D чтобы добавить страницу в закладки');
	    }
	  }
	}
	return false;
} 

function  strip_tags(str, allowed_tags) {
	var key = '', allowed = false;
	var matches = [];
	var allowed_array = [];
	var allowed_tag = '';
	var i = 0;
	var k = '';
	var html = '';

	var replacer = function(search, replace, str) {
		return str.split(search).join(replace);
	};

	// Build allowes tags associative array
	if (allowed_tags) {
		allowed_array = allowed_tags.match(/([a-zA-Z]+)/gi);
	}

	str += '';

	// Match tags
	matches = str.match(/(<\/?[\S][^>]*>)/gi);

	// Go through all HTML tags
	for (key in matches) {
		if (isNaN(key)) {
			// IE7 Hack
			continue;
		}

		// Save HTML tag
		html = matches[key].toString();

		// Is tag not in allowed list? Remove from str!
		allowed = false;

		// Go through all allowed tags
		for (k in allowed_array) {
			// Init
			allowed_tag = allowed_array[k];
			i = -1;

			if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
			if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
			if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}

			// Determine
			if (i == 0) {
				allowed = true;
				break;
			}
		}

		if (!allowed) {
			str = replacer(html, "", str); // Custom replace. No regexing
		}
	}

	return str;
}
