/* GLOBALS */

var int = null;
var alreadylinked = false;
var editing = false;
var offset = 1;
var loading = false;
var stop = 3;
var filedata = null;

function scrolltop() { $('html, body').animate({ scrollTop: 0 }, 'slow'); }

function toggle(id) { $('#'+id).toggle(); }

function slideup(elm) { $(elm).slideUp(); }

function hideRooster() {
	$('#rooster').slideUp();
	$.post(
		"/accounts/hideRooster"
	);
}

function selectorToggle(elm) {
	$(elm).parent().toggleClass("openToggle");
}

function shownotes(elm) {
	$('#second_nav li').removeClass('active');
	$(elm).parent().removeClass('j').toggleClass('active');
	var area = $(elm).parent().find('.notearea');
	if(document.forms['loginForm']) {
		document.forms['loginForm'].email.focus();
	}
	if(area.html()==='') {
		area.html('<div class="mvl tac"><img src="/static/images/ajax-loader.gif" /></div>');
		$.get(
			"/"+$(elm).attr("data-cont"),
			function(data) {
				area.html(data);
			}
		)
	}
}

function video(elm) {
	var link = $(elm).attr("data-url");
	$(elm).parents().filter('.insert').html('<iframe class="youtube-player" type="text/html" width="470" height="283" src="'+link+'?autoplay=1" frameborder="0"></iframe>');
}

function listvgrid(elm) {
	var e = $(elm);
	var cont = e.attr("data-cont");
	if($('#loader').length) {
		cont = $('#loader').attr("data-cont").split("?");
		cont = cont[0];
	}
	var view = e.attr("data-view");
	if(view=='list') {
		e.html('<i class="icon grid"></i> Grid View');
		e.attr("data-view","grid");
	}
	else {
		e.html('<i class="icon list"></i> List View');
		e.attr("data-view","list");
	}
	if($('#subnav').length) {
		$('#subnav a').each(function() {
			var attr = $(this).attr("data").split("?");
			$(this).attr("data",attr[0]+"?view="+view);
		});
	}
	show_waiting('await');
	$.get(
		"/"+cont+"?view="+view,
		function(data) {
			$('#pagecontent').html(data);
			clear_waiting('await');
		}
	);
}

function submitenter(myfield,e) {
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;
	
	if (keycode == 13) {
		myfield.form.submit();
		return false;
	}
	else return true;
}

function makediv(type,id) {
	var elm = document.createElement(type);
	elm.id = id;
	return elm;
}

function holdme(val,elm) {
	$(elm).val(val);
	$(elm).css('opacity','.6');
}	

function make_popup(content,width,wash) {
	if($('#popup')) closePopup(1);
	var main = makediv('div','popup');
	if(wash) main.className = 'wash';
	var outer = makediv('div','popup_outer');
	var inner = makediv('div','popup_inner');
	outer.appendChild(inner);
	main.appendChild(outer);
	inner.innerHTML='<div class="loading">Loading...</div>';
	if(content) inner.innerHTML=content;
	if(width) outer.style.width=width+"px";
	if(document.all) {
		main.style.position="absolute";
		main.style.top=document.body.scrollTop+"px";
		main.style.left=(document.body.clientWidth/2)-265+"px";
	}
	$('body').append(main);
}

function closePopup(fadeout,reload) {
	if(!fadeout) {
		$('#popup').fadeOut('',function() {
			$('#popup').remove();
		});
	}
	else $('#popup').remove();
	if(reload) location.reload(true);
}

function show_waiting(id) {
	$('#'+id).html('<img src="http://www.lmtmag.com/static/images/ajax-loader-blue.gif">');
}

function clear_waiting(id) {
	$('#'+id).empty();
}

function focusme(elm,focus) {
	var place = $(elm).attr("placeholder");
	var fid = $(elm).parent().attr('fid');
	if(focus==1) {
		if($(elm).val()==place) {
			$(elm).val('');
			$(elm).parent().parent().removeClass("closed").addClass("open");
			$(elm).css('height','50px');
		}
		$(elm).removeClass("place");
		if(fid) {
			$('#button_'+fid).slideDown(250);
		}
				
	}
	else {
		var val = $(elm).val();
		if(val.replace(/ /g,'')=='') {
			$(elm).val(place);
			if(fid) {
				$(elm).parent().parent().removeClass("open").addClass("closed");
				$('#button_'+fid).hide();
				$(elm).css("height","13px");
			}
			$(elm).addClass("place");
		}
	}
}

function dialog(cont,wash) { ajax_get(cont,1,'',wash); }

function close_and_populate(cont,content,highlight) {
	closePopup();
	var elm = $('#'+content).parent();
	if(highlight==2) elm = elm.parent();
	elm.css("opacity",".3");
	$.get(
		"/"+cont,
		function(data) {
			elm.css("opacity","1");
			$('#'+content).html(data);
			if(highlight) {
				elm.effect("highlight", { color: "#ffffd6" }, 3000);
			}
		}
	);
}

function ajax_get(cont,isdialog,content,wash,nohighlight) {
	$('#second_nav li').removeClass('active');
	if(!wash) wash = 0;
	if(isdialog) make_popup('','',wash);
	if(!params) var params = null;
	$.get(
		cont,
		{ params: params },
		function(data) {
			if(isdialog) {
				$('#popup_outer').html(data);
				init_tokens();
			}
			else {
				$('#'+content).html(data);
				if(!nohighlight) $('#'+content).parent().effect("highlight", { color: "#ffffd6" }, 3000);
			}
		}
	);
}

function ajax_post(cont) {
	if(!params) params = null;
	$.post(
		"/"+cont,
		{ params : params }
	);
}

function loadpagelet(elm) {
	if(loading) return;
	loading = true;
	$('#subnav a').removeClass('active');
	$(elm).addClass('active');
	var cont = $(elm).attr("data");
	show_waiting('navload');
	//$('#pagecontent').html('<center style="margin:130px 0;"><img src="/static/images/ajax-loader.gif"/></center>');
	$.get(
		"/"+cont,
		function(data) {
			loading = false;
			clear_waiting('navload');
			$('#pagecontent').html(data);
			initstuff();
		}
	);
}

function pill_select(elm) {
	if(loading) return;
	loading = true;
	$('ul.pills a').removeClass('active');
	$(elm).addClass('active');
	var cont = $(elm).attr('data');
	var div = $('#pageletcontent');
	if($(elm).attr('tar')) div = $('#'+$(elm).attr('tar'));
	var height = div.height();
	if(height < 300) {
		var h = (height/2)-30;
		var style = 'margin: '+h+'px 0 0 0';
	}
	else var style = 'margin: 130px 0;';
	if($('#pload').length) show_waiting('pload');
	else div.html('<center style="'+style+'"><img src="/static/images/ajax-loader.gif"/></center>');
	$.get(
		cont,
		function(data) {
			loading = false;
			if($('#pload')) clear_waiting('pload');
			div.html(data);
			initstuff();
		}
	);
}

function showmore(cont) {
	if(loading || !$('#loader').length) return;
	show_waiting('loader');
	if(!params) var params = null;
	loading = true;
	$.get(
		"/"+cont,
		{ offset: offset, params: params },
		function(data) {
			if(!data) {
				data = '<div class="empty pal mvl" id="empty">Nothing more to show!</div>';
				$('#loader').remove();
				if(int) window.clearInterval(int);
				setTimeout(function() {
					$('#empty').fadeOut('slow');
				},1000);
			}
			else $('#loader').html('Show More');
			var div = document.createElement('div');
			div.id="page_"+offset;
			div.className="pagelet";
			div.innerHTML = data;
			$('#all').append(data);
			loading = false;
		}
	);
	offset++;
}

function infiscroll(lim,func,autostart,amount,id) {
	if(amount>0) stop = amount;
	else stop = amount;
	limit = lim;
	if(autostart==1) {		
		$(document).ready(function() {
			eval(func);
		});
	}
	$(window).scroll(function() {
		if($(window).scrollTop() == $(document).height() - $(window).height()) {
			if($('#'+id).length && stop>0) {
				eval(func);
				stop--;
			}
		}
	});
}

/* SUBMISSIONS */

function postme(form_name) {
	var form = document.forms[form_name];
	var msg = encodeURIComponent(form.post.value);
	show_waiting('load');
	disable_form(form);
	$.post(
		'/'+form.controller.value,
		{ post: msg, threadID: form.threadID.value },
		function(data) {
			$('#all').append(data);
			clear_waiting('load');
			var objDiv = document.getElementById('thread');
			objDiv.scrollTop = objDiv.scrollHeight;
			enable_form(form);
		}
	);
}

/* SEND INPUT */

function sendInput(form) {
	show_waiting('await');
	var params = $(form).serializeArray();
	params = $.param(params);
	$.get(
		$(form).attr("action"),
		params,
		function(data) {
			clear_waiting('await');
			$('#pagecontent').html(data);
		}
	);
	return false;
}

/* GENERIC SEND POPUP FORM */

function sendpopup(cont,redirect) {
	var form = document.forms['popup_postForm'];
	if(form.post) {
		if(form.post.value.replace(/ /g,'')=='') return;
		var msg = encodeURIComponent(form.post.value);
	}
	else var msg = null;
	var params = $('#popup_postForm').serializeArray();
	params = $.param(params);
	if(form.threadID) {
		if ((!form.threadID.value || form.threadID.value.replace(/ /g,'')=='')) return;
		params += '&threadID='+form.threadID.value;
	}
	closePopup(1);
	make_popup('<div class="loading">Sending...</div>');
	$.post(
		'/'+cont,
		params,
		function(data) {
			if(redirect) window.location=redirect;
			else $('#popup_inner').html(data);
		}
	);
}

function send_composer(cont) {
	var form = document.forms['postForm'];
	if(form.post.value.replace(/ /g,"")=="" || form.post.value==form.post.getAttribute("placeholder")) return;
	show_waiting('load');
	disable_form(form);
	var params = $('#postForm').serializeArray();
	params = $.param(params);
	if(form.desc) params += '&post='+encodeURIComponent(form.desc.value);
	$.post(
		'/'+cont,
		params,
		function(data) {
			clear_waiting('load');
			enable_form(form);
			$('#all').prepend(data);
			clear_composer();
		}
	);
}

function submit_post() {
	var form = document.forms['postForm'];
	if(form.post.value.replace(/ /g,"")=="" || form.post.value==form.post.getAttribute("placeholder")) return;
	var msg = encodeURIComponent(form.post.value);
	show_waiting('load');
	disable_form(form);
	var link = null;
	if(form.link_url) link = form.link_url.value;
	var mentions = null;
	if(form.mentions) mentions = form.mentions.value;
	$.post(
		"/posts/post",
		{ posting: true, channel: form.channel.value, channel_id: form.channel_id.value, msg: msg, link: link, mentions: mentions },
		function(data) {
			clear_waiting('load');
			enable_form(form);
			
			if(mentions) {
				$("#mentionsInput").tokenInput("clear");
			}
			
			if(data.length==0) {
				notloggedin();
				return;
			}
			else $('#all').prepend(data);
			clear_composer();
		}
	);
}


function composer_load(what) {
	show_waiting('cload');
	var form = document.forms['postForm'];
	var param = null;
	if(what=='link2') param = encodeURIComponent(form.post.value);
	else {
		$('#comp_nav li').removeClass('active');
		$('#comp_nav a.c_'+what).parent().addClass('active');
	}
	$.get(
		"/bridge/composer",
		{ type: what, param: param },
		function(data) {
			clear_waiting('cload');
			if(!data) return;
			$('#comp_content').html(data);
			initstuff();
			if($('#tinput').length) $('#tinput').focus();
			if($('#photoform').length) {
				$('#photoform').fileupload({
					replaceFileInput: false,
					add: function(e,data) {
						filedata = data;
						$('#submitbox').show();
					}
				}).bind('fileuploaddone',function(e,data) {
					$('#all').prepend(data.result);
					clear_waiting('load');
					var form = document.forms['postForm'];
					enable_form(form);
					clear_composer();
				}).bind('fileuploadsend',function(e,data) {
					show_waiting('load');
					var form = document.forms['postForm'];
					disable_form(form);
				});
			}
		}
	);
}

function share_photo() {
	filedata.submit();
}

function clear_composer() {
	$('#comp_nav li').removeClass('active');
	$('#comp_content').empty();
	$('div.token-input-dropdown').hide();
}

// Submit a forum comment

function submit_comment(fid) {
	var form = document.forms['comment_'+fid];
	if(form.post.value.replace(/ /g,"")=="") return;
	var post = encodeURIComponent(form.post.value);
	disable_form(form);
	$.post(
		"/posts/comment",
		{ posting: true, msg: post, channel: form.channel.value, cid: form.cid.value },
		function(data) {
			enable_form(form,"Comment");
			$('#list_'+fid).append(data);
		}
	);
}

function show_comments(tId,focus) {
	$('#reply_'+tId).show();
	if(!$('#c'+tId).hasClass("wc")) {
		$('#c'+tId).addClass("wc");
		$('#c_text_'+tId).prepend('<span class="nub"><img src="/static/images/nub.png"></span>');
	}
	if(focus) {
		document.forms['comment_'+tId].post.focus();
		var pos = $('#reply_'+tId).position();
		$('#main').scrollTop(pos.top);
	}
}

function load_comments(id,limit) {
	show_waiting(id+'_load');
	$.post(
		"/posts/comments",
		{ loadcomments: id, limit: limit },
		function(data) {
			$('#'+id+'_load').parent().remove();
			var div = document.createElement('div');
			div.id = "lc_"+id;
			div.style.display="none";
			$('#list_'+id).prepend(div);
			$('#lc_'+id).html(data);
			$('#lc_'+id).slideDown('fast');
		}
	);
}

function profilepic(id) {
	make_popup();
	$.get(
		"/profile/pic/"+id,
		function(data) {
			$('#popup_inner').html(data);
		}
	);
}

function ra_collapse(id,elm) {
	$('#'+id).show();
	$(elm).parent().remove();
}

function reset_notifs() {
	$('#notifications').slideUp();
	$.post(
		"/accounts/resetNotifs",
		{ resetNotes: 1 }
	);
}

function like(id,is_comment) {
	$('#c'+id+' span.actions a.like').parent().html('<a class="action like" title="Unlike" href="javascript:unlike('+id+','+is_comment+')">Unlike</a>');
	if($('#l_'+id).length) show_waiting(id+'_l_load');
	$.post(
		"/posts/like",
		{ like: 1, id: id },
		function(data) {
			if(data.length==0) {
				notloggedin();
				return;
			}
			if(!is_comment) {
				show_comments(id);
				if(!$('#l_'+id).length) {
					$('#llist_'+id).html('<div class="commentbox"><span class="fl_r load" id="'+id+'_l_load"></span><span class="likecount" id="l_'+id+'">'+data+' liked this</span></div>');
				}
				else $('#l_'+id).html(data+' liked this');
				clear_waiting(id+'_l_load');
			}
			else {
				$('#l_'+id).html('<em> &middot; </em><span class="clike"> '+data+'</span>');
			}
		}
	);
}

function unlike(id,is_comment) {
	$('#c'+id+' span.actions a.like').parent().html('<a class="action like" title="Like" href="javascript:like('+id+','+is_comment+')">Like</a>');
	if($('#l_'+id).length) show_waiting(id+'_l_load');
	$.post(
		"/posts/like",
		{ like: 2, id: id },
		function(data) {
			if(!is_comment) {
				if(!data) {
					$('#l_'+id).parent().remove();
				}
				else $('#l_'+id).html(data+' liked this');
				clear_waiting(id+'_l_load');
			}
			else {
				if(!data) {
					clear_waiting('l_'+id);
					$('#c'+id+' small em').remove();
				}
				else $('#l_'+id).html('<em> &middot; </em><span class="clike"> '+data+'</span>');
			}
		}
	);
}

function follow(id,elm) {
	var p = false;
	var elm = $(elm);
	elm.removeClass("gray").removeClass("red").addClass("depressed");
	var cont = 'accounts';
	if(elm.attr("cont")) {
		var p = true;
		cont = elm.attr("cont");
	}
	
	$.post(
		"/"+cont+"/follow",
		{ id: id, following: true },
		function(data) {
			if(p) {
				$('a.b'+id).each(function() {
					$(this).removeClass("gray").addClass("depressed");
					$(this).html('<i class="icon minus"></i> '+$(this).attr("data_ut"));
					$(this).click(function() { unfollow(id,this); });
				});
				if($('#flist_'+id).length) {
					$('#flist_'+id).html(data);
				}
			}
			else elm.remove();
		}
	);
}

function unfollow(id,elm) {
	var p = false;
	var elm = $(elm);
	elm.removeClass("gray").removeClass("red").addClass("depressed");
	var cont = 'accounts';
	if(elm.attr("cont")) {
		cont = elm.attr("cont");
		p = true;
	}
	
	$.post(
		"/"+cont+"/follow",
		{ id: id, following: false },
		function(data) {
			if(p){
				$('a.b'+id).each(function() {
					$(this).removeClass("depressed").addClass("gray");
					$(this).html('<i class="icon new_w"></i> '+$(this).attr("data_t"));
					$(this).click(function() { follow(id,this); });
				});
			}
			else {
				elm.val("Follow");
				elm.removeClass("depressed").addClass("gray new_w");
				elm.click(function() { follow(id,this); });
			}
			if($('#flist_'+id).length) $('#flist_'+id).html(data);
		}
	);
}

function notloggedin() {
	var content = '<div class="title">You\'re Not Logged In</div>';
	content += '<div class="content">Your user ID is missing! You might not be logged in.</div>';
	content += '<div class="footer"><span class="fl_r"><input type="button" onclick="closePopup()" class="button blue" value="Close">';
	make_popup(content,500);
}

/* FORM FUNCTIONS */

function disable_form(form,val) {
	if(!val) val="Posting...";
	form.post.disabled=true;
	if(form.submit_button) {
		form.submit_button.disabled=true;
		form.submit_button.value=val;
	}
	form.parentNode.style.opacity=".5";
}

function enable_form(form,val,clear) {
	if(!val) val = "Share";
	if(form.post) form.post.disabled=false;
	if(!clear) form.post.value="";
	if(form.submit_button) {
		form.submit_button.disabled=false;
		form.submit_button.value = val;
	}
	form.parentNode.style.opacity="1";
	remove_link();
}

function extract_links(e,elm,show) {
	var code = e.keyCode ? e.keyCode : e.charCode;
	
	var divid = 'link_ex';
	if(show) divid = show;
	div = $('#'+divid);

	if(elm) val = $(elm).val();
	else {
		var form = document.forms['postForm'];
		var val = form.post.value;
	}
	
	if(code==32 && !alreadylinked) {
		var matches = val.match( /(http:\/\/[^\s]+)/gi);
		if(matches) {
			div.show();
			div.html('<center><img src="/static/images/ajax-loader.gif"></center>');
			alreadylinked=true;
			$.post(
				"/posts/checklinks",
				{ checklinks: 1, text: encodeURIComponent(matches[0]) },
				function(data) {
					if(data) div.html(data);
					else remove_link(div);
				}
			);
		}
	}
}

function areyousure(func) {
	if(confirm("Are you sure you want to delete this?\nThis action can't be undone!")) {
		eval(func);
	}
/*
	var content='<div class="title">Delete Post</div>';
	content += '<div class="content">Are you sure you want to delete this?</div>';
	content += '<div class="footer"><span class="right"><input type="button" onclick="'+func+';closePopup()" class="button" value="Delete"> <input type="button" class="button gray" onclick="closePopup();" value="Cancel">';
	make_popup(content,500);
*/
}

function inprogress(val) {
	if(!val) val = 'Saving...';
	var form_name = $('div.edit form').attr('name');
	var form = document.forms[form_name];
	form.parentNode.style.opacity = ".5";
	if(form.submit_button) form.submit_button.value = val;
}

function remove_comment(cId) {
	$('#cpost_'+cId).parent().fadeOut();
	$.post(
		"/posts/delete",
		{ deletecomment: 1, cId: cId },
		function(data) {
			$('#cpost_'+cId).parent().remove();
		}
	);
}

function loadlikes(id) {
	var url = "/search/dialog/";
	var elm = $('#l_'+id+' span.tooltip_text');
	var pieces = id.split("_");
	
	if(elm.text() == "") {
		elm.html('Loading...');
		$.get(
			url,
			{ id: pieces[1], arr: 1, type: 'likes', channel: pieces[0] },
			function(data) {
				elm.html(data);
			}
		);
	}
}

function remove_link(div) {
	if(!div) div = $('#link_ex');
	if(div.length) {
		div.empty();
		div.hide();
	}
	alreadylinked=false;
}

function init_tokens() {
	jQuery('input.tokenize').each(function() {
		var link = $(this).attr("link");
		var max = ($(this).attr("max")) ? $(this).attr("max") : null;
		var pics = ($(this).attr("pics")) ? true : false;
		var prep = ($(this).attr("prep")) ? $(this).attr("prep") : null;
		var placehold = ($(this).attr("placeholder")) ? $(this).attr("placeholder") : 'Start typing a name...';
		if(!$(this).hasClass('tokenized')) {
			$(this).tokenInput(link,{
				hintText: 'Start typing a name...',
				placehold: placehold,
				minChars: 3,
				animateDropdown: false,
				tokenLimit: max,
				preventDuplicates: true,
				queryParam: "term",
				pictures: pics,
				prePopulate: prep
			});
		}
	});
	jQuery('ul.token-input-list input.placeholder').each(function() {
		$(this).addClass("place").val($(this).attr("placeholder"));
		$(this).focus( 
        function () {
        	jQuery(this).val('');
        });
	});
}

function init_tokenizer(elm,endpoint) {
	jQuery(elm).tokenInput(endpoint,{
        animateDropdown: false,
        preventDuplicates: true,
        minChars: 3,
        searchDelay: 1000,
        theme: "facebook"
    });
}
