$(document).ready(function(){
	//initTabs();
	initaccordion();
	inithover();
	createList.init();
	viewList.init();
	/*
	listikiAutocomplete.add(
		$("#search-field"),
		Listiki.baseUrl +"search/lists"
	);
	*/
	initInputs();
	initInvite();
	initSearch();
	//initAutoUpdate();
	
	initUserPage();
	
	initHeight();
	
	if(typeof(realplexor) != 'undefined')
		initPush();
	
	initRemoveFromFavourites();
});



function initPush() {
	if ($("#master-list-id").size()) {
		userId = null;
		
		if (Listiki.user.id) {
			userId = Listiki.user.id;
		} else {
			userId = Listiki.user.guestId;
		}
		
		//if($("#is-master-list").size()) {
		//	realplexor.subscribe("master_" + $("#master-list-id").text() + '_' + userId, function(data, id) {
		//		listenChanel(data);
		//	});
		//	realplexor.execute();
		//}
		
		realplexor.subscribe("all_" + $("#master-list-id").text()  + '_' + userId, function(data, id) {
			//listenChanel(data);
		});
		realplexor.execute();
		
	}
	
	if ($(viewList.isIndex).size()) {
		//realplexor.setCursor("liveLists", 1);
		realplexor.subscribe('liveLists', function(data, id, cursor) {
			updateLiveLists(data, id, cursor);
		});
		realplexor.execute();
	}
	
	
}

function unsubscribe() {
	userId = null;
	if (Listiki.user.id) {
		userId = Listiki.user.id;
	} else {
		userId = Listiki.user.guestId;
	}
	
	if ($("#is-master-list").size()) {
		
		realplexor.unsubscribe('master_' + $("#master-list-id").text() + '_' + userId);
		realplexor.execute();
	}
	
	if ($("#master-list-id").size()) {		
		realplexor.unsubscribe("all_" + $("#master-list-id").text() + '_' + userId);
		realplexor.execute();
	}
	
	if ($(viewList.isIndex).size()) {
		realplexor.unsubscribe('liveLists');
		realplexor.execute();
	}
	
	$.getJSON(Listiki.baseUrl + 'index/unsubscribe', function(data) {});

}

function listenChanel(data) {
	
}

function updateLiveLists(data, id, cursor) {
	$('.live-list li:not(:eq(0))').remove();
	
	if(data) {						
		$('.live-list li:not(:eq(0))').remove();
		console.log(data);
		console.log(id);
		console.log(cursor);
		$.each(data, function(i, item){
			$('.live-list').append(
					"<li><a href='" + item['custom_route'] + "'>" + item['title'] + "</a> <span>" + item['count'] + " viewer" + ((item['count'] > 1) ? 's' : '') +  "</span></li>"
				);		
		})
	}
}

function pushUser () {
	checkUser(
		$.parseJSON('{"UID":62856939,"provider":"twitter","user":{"UID":62856939,"firstName":"Kostya Falko","lastName":"","nickname":"kotfalya","photoURL":"http://a1.twimg.com/profile_images/684589485/freddie_mercury_normal.jpg"}}')
	);
}

function initSearch() {
	$("#search-form").submit(function(e){
		_field = $('input[name="field"]', this).val();
		
		if( _field == "Find a list..." || _field == "Search Listiki...") {
			return false;
		}
		return true;
	});
}
function initInvite() {
	$('#invites .mail').keyup(function(e){
		$('.email-error').remove();
	})
	
	inputToggle('#invites .mail','Email');
	
	$('#invites .submit').click(function(e){
		 e.preventDefault();
		 
		 var _email = $('#invites .mail').val();		 
		 
		 if(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(_email)){
			 if($('.email-error').size()) {
				 $('.email-error').remove();
			 }
			 
			$.ajax({
				url : Listiki.baseUrl + "invitations/friend",
				type : "post",
				data: {email: _email , userId: Listiki.user.id},
				dataType: "json",
				success : function(data){
					if(!isNaN(parseInt(data.status, 10))) {
						$('.invite-count').html(data.status);
						
						if($('.email-send').size() == 0) $('.email-error').remove();
						$('<div/>')
						 	.addClass('email-send')
						 	.html('Mail has been send')
						 	.insertAfter($('#invites .item'));
						 
						if(data.status == 0) {
							setTimeout(function(){
								$('.email-send').fadeOut(function(){
									$(this).remove();
									$("#invites").addClass('invites-empty');
								})
							}, 3000)				
						} else {
							setTimeout(function(){
								$('.email-send').fadeOut(function(){
									$(this).remove();
								})
							}, 3000)
						
						}						
											
					} else {
						error = data.status.split('_');
						if(error[0] == 'error') {
							switch(error[1]) {
							
								case 'mail-send':
									_error = "error: sending";
									break;
								case 'error-busy':
									_error = "error: email busy";
									break;
								case 'process':
									_error = "error: processing";
									break;
								default :
									_error = 'error';
							}
							
							if($('.email-error').size() == 0) $('.email-error').remove();
							
							$('<div/>')
								.addClass('email-error')
								.html(_error)
								.insertAfter($('#invites .item'));
							
						} 
					}
				}
			});
		 } else {
			 if($('.email-error').size() == 0) {
				 $('<div/>')
				 	.addClass('email-error')
				 	.html('Check that email again. It aint right.')
				 	.insertAfter($('#invites .item'));
			 }
			 $('#invites .mail').focus();
		 }
	})
}

/*function initTabs(){
	if ( $('div.tabs').length == 0 ) return false;
	
	$('div.tabs > ul.tabs-header > li > a').click(function(){
		var href = $(this).attr('href');
		href = href.replace(/[^#]*#/,'');
		$('div.tabs > ul.tabs-header > li > a').removeClass('active');
		$('div.tabs > div.tabs-content').removeClass('active-tabs-content');
		$('#'+href).addClass('active-tabs-content');
		$(this).addClass('active');
		
		return false;
	});
}*/
	
function inputToggle(inputSelect,inputText){
	if ($(inputSelect).val() == inputText) {
			$(inputSelect).css("color","#999");
	} else if ($(inputSelect).val() == "") {
			$(inputSelect).val(inputText);
			$(inputSelect).css("color","#999");
	} else if ($(inputSelect).val() != "" && $(this).val() != inputText) {
			$(inputSelect).css("color","#000");
	}
	$(inputSelect).focus( function() {
		if ($(inputSelect).val() == inputText) {
			//$(inputSelect).val("");
			$(inputSelect).animate({opacity: 0},200, function() {
				$(inputSelect).val("");
				$(inputSelect).css("color","#000");
				$(inputSelect).animate({opacity: 1},100);
			});
		}
	});
	$(inputSelect).blur( function() {
		if ($(inputSelect).val() == "") {
			$(inputSelect).css("color","#999");
			$(inputSelect).val(inputText);
		}
	});
}

function initaccordion(){
	return;
	$("#accordion").accordion({
	});
	
	$("#accordion h3").click(function(e){
		e.preventDefault();
		var index = $("#accordion h3").index(this);
		if ( $("#content div.tabs:eq("+ index +")").is(":visible") ){
			return;
		}
		$("#content .tabs:visible").css({
			position: "absolute",
			marginTop: "0"
		}).fadeOut("slow");
		$("#content div.tabs:eq("+ index +")").css({
			position: "static",
			marginTop: "15px"
		}).fadeIn("slow");
		
		if (window.location.href.indexOf("#") == -1){
			window.location.href += $(this).find("a").attr("href");
		}else{
			window.location.href = window.location.href.replace(/(.*)#.*/,"$1"+$(this).find("a").attr("href"));
		}
	});
	
	if (window.location.href.indexOf("#") != -1){
		var tag = window.location.href.replace(/^[^#]+/,"");
		$("a[href="+tag+"]").parent().click();
	}

}
function inithover(){
	$('.sortable li').hover(
		function(){ $(this).addClass('hover'); },
		function(){ $(this).removeClass('hover');}	
	);
}

function initInputs(){
	inputToggle('#search-form input.text','Search Listiki...');
	inputToggle('#search-field input','Find a list...');
}

function initAutoUpdate(){
	if ($("#lists-last-update").size() == 0){
		return;
	}
	setInterval(function(){
		var last_update = $("#lists-last-update").text();
		if (last_update){
			$.ajax({
				url : Listiki.baseUrl + "index/last-updates",
				type : "post",
				data: {timestamp: last_update},
				dataType: "json",
				success : function(data){
					if(data['livelists']){						
						$('.live-list li:not(:eq(0))').remove();
						$.each(data['livelists'], function(i, item){				
							$('.live-list').append(
									"<li><a href='" + item['custom_route'] + "'>" + item['title'] + "</a> <span>" + item['list_counts'] + " viewer" + ((item['list_couts'] > 1) ? 's' : '') +  "</span></li>"
								);		
						})
					}
					
					if (data['html']){
						var $new_html = $(data['html']).addClass("new");
						$(".left-block").prepend($new_html);
						$(".left-block .new").css("opacity",0);
						$(".left-block .mini-box:gt(4)").remove();
						$(".left-block .new").animate({opacity:1},1000,function(){
							$(".left-block .new").removeClass("new");
						})
					}
					if (data['timestamp']){
						$("#lists-last-update").text(data['timestamp']);
					}
				}
			});
		}
	}, 60000);
}

function initUserPage(){
	$("ul.more-lists").slideToggle(0);
	$("a.more-profile-lists").click(function(e){
		e.preventDefault();
		
		var $list = $(this).parent().parent().next();
		if ($list.hasClass("more-lists")){
			$list.slideToggle("slow");
			$(this).hide();
		}
	});
}

function initHeight(){
	var contentHeight = $("#content").height();
	var sidebarHeight = $("#sidebar").height();
	if (contentHeight < sidebarHeight ){
		$("#content .bg-content").css("minHeight",sidebarHeight+"px");
	}
}

function initRemoveFromFavourites(){
	$("a.remove-from-favoirutes").click(function(e){
		e.preventDefault();
		$(this).addClass("deleting");
		var listId = $(this).attr("rel");
		if (!listId){
			return;
		}
		$.ajax({
			url: Listiki.baseUrl + "add-to-favourite/remove",
			type: "post",
			dataType: "json",
			data: {list_id : listId},
			success: function(data){
				if (data.success){
					$("a[rel="+ data.list_id +"]").hide()
						.parent().fadeOut('slow',function(){
						$(this).remove();
					})
				}
			}
		});
	});
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function showPopupCenter(query) {
	$(query).show();
		var topOffset = ($(window).height() - $(query).height() ) /2;
        var leftOffset = ($(window).width() - $(query).width() ) /2;
		
        $(query).css({
            top: topOffset + $(window).scrollTop() + "px",
            left: leftOffset + 250+ "px"
        });
}

function testUrl(urlToTest){
	return /^https?:\/\/(www\.)?[A-Za-z0-9\.-]{1,}\.[A-Za-z0-9]{2,4}/.test(urlToTest);
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

$(window).unload(unsubscribe);
