var dataObject;
var personalPage = false;
var editChannelActive = false;

var updateTimer = null;
var updatePeriod = 70000;
var currentMail = Array();


var aUploadFileBtns;
//Main init method
function rootInit() {
	$(document).pngFix(); 
	dataObject = {
			channels:"",
			pchannels:""	
	}
	if (sessionid) {
		updateTimer = setTimeout("updateStatuses();", 1000);
		if (myProfileVisible) {
			$("#reguser_data .profile_add").show();
			$("#reguser_data .ddTitle").removeClass("ddTitle_closed").addClass("ddTitle_opened");
		}
		if (myChannelsVisible) {
			$("#myChannelsBalloon .ddCont_c").show();
			$("#myChannelsBalloon .ddTitle").removeClass("ddTitle_closed").addClass("ddTitle_opened");
		}
		if (otherChannelsVisible) {
			$("#otherChannelsBalloon .ddCont_c").show();
			$("#otherChannelsBalloon .ddTitle").removeClass("ddTitle_closed").addClass("ddTitle_opened");
		}
		if (myMailVisible) {
			$("#myMailBalloon .ddTitle").removeClass("ddTitle_closed").addClass("ddTitle_opened");
			$("#myMailBalloon .ddCont_c").show();

		}
	} else {
		loadTrends();
	}
	
	
}

function userLink(userName) {
	return '/' + userName;
}
function channelLink(userName,chatName) {
	var name = chatName.replace(/\s/g,'_');
	name = name.replace(/%/g,'%25');
	name = name.replace(/#/g,'%23');
	name = name.replace(/\?/g,'%3F');
	return '/' + userName + '/' + name;
}

function generalError() {
	notifyBar("Some error occured.");
}

function addTagSigns(tags) {
	return tags = "#" + tags.replace(/,/g,", #")
}
function addTagSignsSpaces(tags) {
	return tags = "#" + tags.replace(/,/g," #")
}


function strEscape(txt) {return $('<div/>').text(txt).html();}
function strUnescape(txt) {return $('<div/>').html(txt).text();}

function checkEnter(e, func){
	var characterCode;
	if(e && e.which){e = e; characterCode = e.which;} else{e = event;characterCode = e.keyCode}

	if(characterCode == 13){
		return func();
	}
	return false;
}


//Strings
String.prototype.links=function() {
	return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g,
	function(a) {
		return '<a href="' + a + '" target="_new">' + a + '</a>';
		});
	}
	;
String.prototype.user=function() {
	 return this.replace(/[@]+[A-Za-z0-9-_]+/g,
	 function(b) {
	 var username = b.replace("@","")
	 return '<a href="http://twitter.com/' + username + '" target="_new">' + b + '</a>';
	 });
	};
	
String.prototype.hashtags=function() {
	 return this.replace(/[#]+[A-Za-z0-9-_]+/g,
	 function(c) {
	 var hashtag=c.replace("#","%23")
	 return c.link("http://search.twitter.com/search?q="+hashtag);
	 });
	}; 

$.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/;
	  while(x<c.length){var m=r.exec(c.substr(x));
	    if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length;
	    }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16);
	    o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;},
	URLDecode:function(s){var o=s;var binVal,t;var r=/(%[^%]{2})/;
	  while((m=r.exec(o))!=null && m.length>1 && m[1]!=''){b=parseInt(m[1].substr(1),16);
	  t=String.fromCharCode(b);o=o.replace(m[1],t);}return o;}
	});
	
function reloadList() {
	editChannelActive = false;
	if (personalPage)
		reloadChannelsList();
	else
		reloadUserChannelsList();
}

function reloadChannelsList() {
	personalPage = true;
	$.ajax({
		url: "/pchannel2/get_channels",
		dataType: "json",
		success:processUserChannelList
	});
}
function reloadUserChannelsList() {
	$.ajax({
		url: "/pchannel2/get_user_channels",
		dataType: "json",
		data: {userid:uid},
		type: "POST",
		success: processUserChannelList
	});
}




function processUserChannelList(data) {
	
		//$("#pchannels_blk").empty();
		//try {
			var chats = data["pchannels"];
			dataObject.pchannels = chats;
			appendChannels($("#pchannels_blk"), chats, "pchannels");
			$("#pchannels_blk .open_channel").bind("click", function() {
				activateChat($(this).attr("objid"));
				return false;
			});
			if (sessionid) {
			$("#pchannels_blk .join_channel_btn").bind("click", function () {
				joinChannel($(this).parent().attr("objid"));
				return false;
			});
			} else {
				$("#pchannels_blk .join_channel_btn").bind("click", function () {
					var objid = parseInt($(this).parent().attr("objid"));
					var back = $.URLEncode("/chats/do/?job=subscribe&id=" + dataObject["pchannels"][objid]["lid"]);
					goAuth(back);
					return false;
					});
			}
			$("#pchannels_blk .leave_channel_btn").bind("click", function () {
				leaveChannel($(this).parent().attr("objid"));
				return false;
			});
			$("#pchannels_blk .delete_channel_btn").bind("click", function () {
				deleteChannel($(this).parent().attr("objid"), true);
				return false;
			});
			$("#pchannels_blk .edit_channel_btn").bind("click", function () {
				editChannel(parseInt($(this).parent().attr("objid")), "pchannels");
				return false;
			});
			$("#pchannels_blk .invite_channel_btn").bind("click", function () {
				inviteChannel(parseInt($(this).parent().attr("objid")), "pchannels");
				return false;
			});
			
		/*} catch(e) {
			
		}*/
	
}


function setChannelData(channel, elem, objid) {
	var image = channel["i"];
	if (image == "")
		image = "icons/channel/icon_contact_channel0.png";
	if (image.substr(0,1) !="h")
		image = "/static/"+image;
	elem.find(".channel_controller").attr("objid", objid);
	var url = channelLink(channel.un, channel.n);
	elem.find(".set_channel_name").text(channel["n"].substr(0, 35)).attr("href", url);
	elem.find(".set_channel_img_lnk").attr("href", url);
	elem.find(".set_channel_desc").html(strEscape(channel["d"]).replace("\n",'<br/>'));
	if (channel['nu'])
		/*elem.find(".set_channel_users").text(channel["uf"].replace(/,/g,", "));
	else*/
		elem.find('.speakers_field').hide();
	else {
		var spArr = Array();
		for (var j=0; j< channel["sp"].length;j++) {
			spArr.push('<a href="'+ userLink(channel['sp'][j]) + '">' + channel['sp'][j] + '</a>');
		}
		elem.find(".set_channel_users").html(spArr.join(", "));
	}
	elem.find(".set_channel_negate").html((channel["nu"]?"":'Speakers <a href="#" class="tooltip"><img src="/static/images/i_tool.png" /><span><div><div><div>Members of a private chat</div></div></div></span></a>:&nbsp;'));
	elem.find(".set_channel_keywords").text(addTagSigns(channel["k"]));
	elem.find(".set_channel_stopwords").text(channel["sw"]);
	if (typeof channel['stat'] != 'undefined' 
		&& typeof channel['stat']['new']!='undefined') {
		var newcnt = channel['stat']['new'];
		if (newcnt == 50)
			newcnt = "50+";
		elem.find(".set_channel_name").text(channel["n"].substr(0, 35) + " ("+ newcnt +")");
	}
	var isSpeaker = "";
	if (authenticatedUser !="" &&
		typeof channel["sp"]!="undefined" &&
		$.inArray(authenticatedUser, channel["sp"])!=-1) {
		isSpeaker = "<img src='/static/images/i_meg.png' title='You are a speaker'/>";
		}
	elem.find(".set_channel_typeinfo").html(channel["nu"]?"<img title='Public chat' src='/static/images/i_chat.png' />":
											((channel["iv"]?"<img  title='Private chat' src='/static/images/i_lock.png'/>"
														:"<img  title='Private chat' src='/static/images/i_lock.png'/>")) +
														isSpeaker
														);
	
	elem.find(".set_channel_image").attr("src",image);
	if (typeof channel.sc!="undefined"){
		elem.find(".set_channel_scount").html(channel["sc"]);
	}
	
	return elem;
}

function appendChannels (node, channels, type) {
	var myvis = false;
	var folvis = false;
	node.find(".otherchannels").empty();
	node.find(".mychannels").empty();
	for (i=0;i< channels.length;i++) {
		var channel = channels[i];
		if (appendOneChannel(channel, node))
			myvis = true;
		else
			folvis = true;
	}
	if (myvis)
		$(".mych_h").show();
	if (folvis)
		$(".folch_h").show();
	
	calculateChannelStats();
}

function appendOneChannel(channel, node) {
	var type = "pchannels";
	var elem = $("#clone_channel").clone();
	elem.find(".open_channel").attr("objid", i).attr("type",type);
	elem = setChannelData(channel, elem, i);
	var my = false;
	if (sessionid !=""){
		if (typeof(channel["my"])=="undefined" || channel["my"]==true) {
			elem.find(".edit_channel_btn").css("display", "block");
			elem.find(".delete_channel_btn").css("display", "block");
		} else {
			if (channel["j"]) {
				elem.find(".leave_channel_btn").css("display", "block");
			} else {
				elem.find(".join_channel_btn").css("display", "block");
			}
		}
		elem.find(".invite_channel_btn").css("display","block");
	} else {
		elem.find(".join_channel_btn").css("display", "block");
	}
	if (typeof samePageAsUsername!="undefined" && samePageAsUsername) {
		if (channel["un"]==authenticatedUser){
			my = true;
		}
	} else {
		if (channel["un"]==username) {
			my = true;
		}
	}
	var node2 = ".otherchannels"; 
	if (my) {
		node2=".mychannels";
		elem.find('.owner_field').hide();
	} else {
		elem.find(".set_channel_owner").html('<a class="set_status_author_link" href="' + userLink(channel['un'])
												+'">' + channel["un"]+'</a>');
	}
	node.find(node2).append(elem.attr("id",type+ "_channelid_" + i).css("display","block"));
	return my;
}

function calculateChannelStats() {
	var node = $("#pchannels_blk");
	var follow = node.find(" .otherchannels .onechannel_blk:visible").length;
	var my = node.find(" .mychannels .onechannel_blk:visible").length;
	$("#userInfo-channelstat").html("Created: <b>"+ my + "</b><br/>" + "Follows: <b>"+ follow+"</b>");
	
}

function activateChannelObject(channel) {
	/*$("#contentBody").html("Loading...");
	dataObject.filteredUsers = channel["uf"].split(" ");
	if (dataObject.filteredUsers[0]=="" && dataObject.filteredUsers.length==1)
		dataObject.filteredUsers = new Array();
	dataObject.negate = channel["nu"];
	makeSearchRequest(channel["k"], displayChannelData);
*/
	
	var url = channelLink(channel.un, channel.n);
	window.location = url;
}
function activateChannel(id) {
	id = parseInt(id);
	activateChannelObject(dataObject["channels"][id]);
}
function activateChat(id) {
	id = parseInt(id);
	activateChannelObject(dataObject["pchannels"][id]);
}


function joinChannel(objid) {
	var channel;
	if (objid=="") {
		channel = currentchannel;
		objid = 0;
	} else {
		objid = parseInt(objid);
		channel = dataObject["pchannels"][objid];
	}
	var btn = $("#pchannels_channelid_"+objid + " .join_channel_btn");
	if (btn.attr("blocked") == "1")
		return;
	
	btn.attr("blocked","1");
	lid = channel["lid"];
	//try {
	request = {"lid":lid}
	$.ajax({
		url: "/pchannel2/save_public_channel",
		dataType: "json",
		type: "POST",
		success: function (data) {
			//reloadList();
			btn.css("display","none").attr("blocked","0");
			$("#pchannels_channelid_"+objid + " .leave_channel_btn").css("display","block")
			
			
			if (objid == "") {
				//updateCurrentChannelStatus();
				window.location.reload();
			} else {
				var sc = $("#pchannels_channelid_"+objid + " .set_channel_scount");
				var scnum = parseInt(sc.text());
				if (scnum)
					sc.text(++scnum);
				loadData();
			}
			
	},
		data: {
			"channel": $.toJSON(request)
		},
		error: function() {
			generalError();
			btn.attr("blocked","0");
		}
	});
}

function leaveChannel(objid) {
	objid = parseInt(objid);
	var btn = $("#pchannels_channelid_"+objid + " .leave_channel_btn");
	
	if (btn.attr("blocked") == "1")
		return;
	btn.attr("blocked","1");
	var channel = dataObject["pchannels"][objid];
	lid = channel["lid"];
	//try {
	$.ajax({
		url: "/pchannel2/delete_public_channel",
		dataType: "text",
		success: function (data) {
			//reloadList();
			var sc = $("#pchannels_channelid_"+objid + " .set_channel_scount");
			var scnum = parseInt(sc.text());
			if (scnum)
				sc.text(--scnum);
			animateLeaveChannel(objid, true);
			loadMyChannels();
			btn.attr("blocked","0");
			
			
		},
		type: "POST",
		data: {
			"channel": lid
		},
		error: function() {
			generalError();
			btn.attr("blocked","0");
		}
	});
}

function animateLeaveChannel(objid, pub) {
	if (pub)
		if (typeof samePageAsUsername != "undefined" && samePageAsUsername) {
			$("#pchannels_channelid_"+objid).slideUp(1000, calculateChannelStats);
		} else {
			$("#pchannels_channelid_"+objid + " .leave_channel_btn").css("display","none").attr("blocked","0");
			$("#pchannels_channelid_"+objid + " .join_channel_btn").css("display","block");
		}
	else {
		$("#channels_channelid_"+objid).slideUp(1000, calculateChannelStats);
	}
}

function animateDestroyChannel(objid, pub) {
	
	if (pub)
			$("#pchannels_channelid_"+objid).slideUp(1000, calculateChannelStats);
		
	else {
		$("#channels_channelid_"+objid).slideUp(1000, calculateChannelStats);
	}

}

//Create channel
var createChannelActive = 0;
function createNewChannel() {
	if (sessionid=="")
		return;
	if (typeof noChannelsPage !='undefined' && noChannelsPage)
		return;
	if (createChannelActive) {
		cancelCreateChannel();
		return;
	}
	if (editChannelActive) {
		$("#clone_edit_channel_inserted").attr("id", "clone_edit_channel_inserted_del");
		cancelEditChannel($("#clone_edit_channel_inserted_del"));
	}
	var todel = $("#pchannels_blk .inviteuser_blk");
	if (todel.length) {
		todel.find(".inviteBlock").fadeOut(200, function() {
			todel.slideUp(300, function () {
						todel.remove();	
							});
				});
	}
	createChannelActive = 1;
	$(".newChannel .newCont_fb").show();
	$(".newChannelCont").slideDown(500, function() {
								$(".newChannel").fadeIn(500);
						});
}
var blockNegateStateButtons = false;
function createNewChannel2(negateState) {
	if (authenticatedUser == '')
		goAuth($.URLEncode(window.location));
	if (blockNegateStateButtons) return;
	blockNegateStateButtons = true;
	if (sessionid=="")
		return;
	lastQuery = "";
		$(".newChannel").fadeOut(200, function () {
			blockNegateStateButtons = false;
			$(".newChannel .newCont_fb").hide();
			createChannelActive = 2;
			var elem = $("#clone_new_channel_blk").clone().attr("id", "clone_edit_channel_inserted")
														
															.show();
			$(".newChannelCont .newBot").prepend(elem);
			var t = new TextboxList('#clone_edit_channel_inserted .set_channel_users', {"sign":''});
			var t1 = new TextboxList('#clone_edit_channel_inserted .set_channel_stopwords', {"sign":''});
			//var t2 = new TextboxList('#clone_edit_channel_inserted .set_channel_keywords', {"sign":'#', "onchange":function() {if(activeSelectorMode==2) updateGoogleImages();}});
			$('#clone_edit_channel_inserted .set_channel_keywords').bind('keyup',hashtagValidate).bind('change',hashtagValidate);
			setNegateState(negateState);
			
			elem.find(".editchannel_title").text("Create new channel");
			//$("#clone_edit_channel_inserted .editBlock").css("visibility","visible");
			$(".newChannelCont").animate({"height":"450px"},
					function() {$(".newChannel").fadeIn(200, function() {$("#clone_edit_channel_inserted .set_channel_name")[0].focus();}); })
					activateSelectorMode(0);
			
			});
			
}

/**
 * 
 * Images selector
 */

var activeSelectorMode = 0;
function activateSelectorMode(mode) {
	var elem = $("#clone_edit_channel_inserted .browseCont_c");
	if (mode == 0) {
		elem.find(".browseCont_cv").empty().append(elem.find(".predefinedChannelIcons a").clone());
		elem.find(".browseCont_cv").css("width", (90*(elem.find(".browseCont_cv a").length))+"px")
									.css("height", "55px");
		elem.parent().find(".browseCont_l").css("visibility","visible");
		elem.parent().find(".browseCont_r").css("visibility","visible");
	}
	else if (mode == 1) {
		elem.find(".browseCont_cv").empty().append(elem.find(".toLoadIcon").html());
		elem.find(".browseCont_cv").css("width", "1000px").css("height", "55px");
		elem.parent().find(".browseCont_l").css("visibility","hidden");
		elem.parent().find(".browseCont_r").css("visibility","hidden");
	}
	else if (mode == 2) {	
		elem.find(".browseCont_cv").empty().append(elem.find(".loadedChannelIcons a, .loadedChannelIcons p").clone());
		var wd = 90*(elem.find(".browseCont_cv a").length);
		if (wd < 2000) wd = 2000;
		elem.find(".browseCont_cv").css("width", (wd)+"px").css("height", "55px");
		//var q = $("#clone_edit_channel_inserted .set_channel_name").val();
		var q = $("#clone_edit_channel_inserted .set_channel_keywords").val();

		googleImagesRequest(q);
		elem.parent().find(".browseCont_l").css("visibility","visible");
		elem.parent().find(".browseCont_r").css("visibility","visible");
	}
	elem.find(".browseCont_cv").css("left","0px");
	
	var elem2 = $("#clone_edit_channel_inserted .browseMenu");
	elem2.find(".off").show();
	elem2.find(".on").hide();
	elem2.find(".icon_selector_mode_"+mode+".on").show();
	elem2.find(".icon_selector_mode_"+mode+".off").hide();
	
	activeSelectorMode = mode;
	
	elem.find("a").bind("click", function() {
		var addr = $(this).find("img").attr("src");
		$("#clone_edit_channel_inserted .editchannel_set_icon").attr("src", addr);
		return false;
	});
}

var totalPreviews =  18;
var lastQuery = "";
function googleImagesRequest(q) {
	if (q!="" && q!=lastQuery) {
	$("#clone_edit_channel_inserted .browseCont_c .browseCont_cv").html('<div class="ajax_loader channelIconLoader"> <img src="/static/images/progressor2.gif" /></div>');
	$.ajax({
		dataType: "jsonp",
		url: "http://ajax.googleapis.com/ajax/services/search/images",
		data: {
				"q":q,
				"v":"1.0",
				"imgsz":"icon",
				"rsz":"large"
				},
		success: function (data, textStatus) {
						var elem = $("#clone_edit_channel_inserted .loadedChannelIcons");
						elem.empty();
						var images = data["responseData"]["results"];
						var total = images.length;
						if (!total) {
							elem.html("<p class='noSuggestionsNotice'>There are no suggested icons for such chat's name.</p>");
							
						}
						
						if (total > totalPreviews) {
							total = totalPreviews;
						}
						for (var i=0; i < total; i++) {
							var image = images[i]["unescapedUrl"];
							var genid = 'img_pre_'+i;
							var newelem = $('<a href=""><img id="'+genid+'" width="48" height="48" src="/static/images/progressor4.gif" /></a>');
							elem.append(newelem);
							
							var img = new Image;
							img.loadpic = image;
							img.genid = genid;
							$(img).load(function() {
								$("#"+this.genid).attr("src", this.loadpic);
							}).attr("src", image);
						}
						lastQuery = q;
						if (activeSelectorMode == 2) {
							activateSelectorMode(2);
						}
					}
			
	});
	}
}

function updateGoogleImages(){
	var q = $("#clone_edit_channel_inserted .set_channel_keywords").val();
	googleImagesRequest(q);
}

function fileUpload(obj) {
	
	var elem = $(obj);
	elem.attr("id","fileToUpload");
	$.ajaxFileUpload
	(
		{
			url:'/chats/imageupload', 
			secureuri:false,
			fileElementId:'fileToUpload',
			dataType: 'json',
			success: function (data, status)
			{
				if(typeof(data.error) != 'undefined')
				{
						notifyBar(data.error);
				} else if (typeof(data.src) != 'undefined') {
					$("#clone_edit_channel_inserted .editchannel_set_icon").attr("src", data.src);
				}
			},
			error: function (data, status, e)
			{
				notifyBar("Image upload error");
			}
		}
	);
	elem.removeAttr('id');

	
}


function cancelCreateChannel(block) {
	var elem;
	if (typeof block == "undefined")
		elem = $("#clone_edit_channel_inserted");
	else
		elem = block;
	$(".newChannel").fadeOut(100, function() {
					elem.remove();
					$(".newChannelCont").slideUp(300,function() {
										$(".newChannelCont").css("height" ,"270px");
										
									});
					
	});
	
	createChannelActive = 0;
	
}
function cancelCreateFirstChannel() {
	var elem = $("#clone_edit_channel_inserted");
	$(".newChannel").fadeOut(200, function() {
		$(".newChannelCont").animate({"height":"270px"}, 
									function() {elem.remove(); $(".newChannel .newCont_fb").css('display','block');$(".newChannel").fadeIn()});	
	});
}


function cancelEditChannel(block) {
	var elem;
	if (typeof block == "undefined")
		elem = $("#clone_edit_channel_inserted");
	else elem = block;
	elem.css("height",elem[0].offsetHeight + "px");
	elem.find(".editBlock").fadeOut(200, function() {
					elem.slideUp(500, function () {cancelEditChannelAnimCallback(elem);});
					});
	editChannelActive = false;
	
}

scrollChannelLock = false;
function scrollChannelIcons(obj, dir, cnt, size) {
	if (scrollChannelLock) return;
	var elem = $(obj).parent().parent().find(".browseCont_cv");
	var pos = parseInt(elem.css("left").replace("px",""));
	var num = elem.find("a").length;
	var delta = cnt*size;
	if (dir) {
		if ((pos-delta) > (-size*num)) {
			scrollChannelLock = true;
			elem.animate({"left":"-="+delta+"px"}, function(){scrollChannelLock = false});
		}
	} else {
		if (pos < 0) {
			scrollChannelLock = true;
			elem.animate({"left":"+="+delta+"px"}, function(){scrollChannelLock = false});
		}
	}
}


function cancelEditChannelAnimCallback(elem) {
	elem.remove();
}
function getEditChannelState(state) 
{	var elem = $("#clone_edit_channel_inserted");
	state.n = elem.find(".set_channel_name").val();
	state.d = elem.find(".set_channel_desc").val();
	state.q = state.k=elem.find(".set_channel_keywords").val();
	if (state.k[0] == '#') {
		state.k  = state.q = state.k.substring(1);
	}
	
	state.sw = elem.find(".set_channel_stopwords").val();
	state.uf = '';
	/*if (typeof state['nu'] !="undefined" && state['nu'])
		state.uf = elem.find(".set_channel_users").val();*/
	var image = elem.find(".editchannel_set_icon").attr("src");
	if 	(image.substr(0,1) !='h')
		image = image.replace("/static/icons/", "icons/");
	state.i = image;
	state.iv = (elem.find(".set_channel_invites:checked")).length?true:false;
	
	var rg = new RegExp("(\\\\|\"|/|')","g");
	state.n = state.n.replace (rg,'')
	return state;
}
function submitChannel() {
	//New channel
	$('#clone_edit_channel_inserted button').attr('disabled', 'disabled');

	//var pub = ($("#clone_edit_channel_inserted .set_channel_public:checked")).length?true:false;
	var pub = true;
	var state = getEditChannelState(new Object(), pub);
	state['nu'] = ($(".set_negate_state").val() == "1")?true:false;
	if (editChannelValid(state)) {
		if (pub){
			$.ajax({
				url: "/pchannel2/save_public_channel",
				dataType: "json",
				type: "post",
				data: {
					"channel": $.toJSON(state)
				},
				success: addChannelSuccess,
				error: function() {
					generalError();
					$('#clone_edit_channel_inserted button').removeAttr('disabled');
				}
			});
		return;
		} else {
			$.ajax({
					url: "/api4/save_search_channel",
					dataType: "json",
					type: "post",
					data: {
						"channel": $.toJSON(state)
					},
					success: addChannelSuccess,
					error: function() {
						generalError();
						$('#clone_edit_channel_inserted button').removeAttr('disabled');
					}
			});
			return;
		}
		}
	$('#clone_edit_channel_inserted button').removeAttr('disabled');
	
}
function addChannelSuccess(data) {
	cancelEditChannel();
	activateChannelObject(data);
}
function editChannelValid(r){
	
	if (r.n == '') {
		notifyBar("Chat name is required.");
		return false;
	}
	if (r.q == '' || r.k == '') {
		notifyBar("Hashtag is required.");
		return false;
	}
	if (r.k.match(/^[A-Za-z0-9-_]+$/) == null) {
		notifyBar("Hashtag must only contain latin characters and an underscore.");
		return false;
	}
	return true;
}


function switchChannelAddInfo(obj, openinfo) {
	var elem = $(obj).parent().parent().parent().parent();
	var delta = elem.find(".addit_channel_info")[0].offsetHeight;
	delta-=23;
	if (openinfo) {	
		delta = "+=" + delta + "px";
		elem.find(".addmove_blk").animate({height:delta},500);
		elem.find(".more_btn").hide();
		elem.find(".less_btn").show();
	} else {
		delta = "25px";
		elem.find(".addmove_blk").animate({height:delta},500);
		elem.find(".more_btn").show();
		elem.find(".less_btn").hide();
	}
	
}

function deleteChannel(objid, pub) {
	$('.deletepopup .set_delete_name').text(dataObject[pub?'pchannels':'channels'][parseInt(objid)].n);
	$('.deletepopup .set_click_options').attr('pub', pub?'1':'0').attr('objid',objid);
	$(".deletepopup").modal({overlayClose: true, closeClass:"modalClose"});
}


function deleteChannelProcess(objid, pub) {
	/*if (!confirm("Delete this channel"))
		return;*/
	if (typeof currentchannel != 'undefined')
		deleteCurrentChannel();
		
		
	var objid = parseInt(objid);
	if (pub) {
		channel = dataObject["pchannels"][objid];
		$.ajax({
			url: "/pchannel2/delete_public_channel",
			dataType: "text",
			type: "post",
			data: {
				"channel": channel["lid"]
			},
			success: function(data) {
				animateDestroyChannel(objid, 2);
			},
			error: function() {
				generalError();
			}
		});
	} else {
		channel = dataObject["channels"][objid];
		$.ajax({
			url: "/api4/delete_search_channel",
			dataType: "text",
			type: "post",
			data: {
				"channel": channel["id"]
			},
			success: function(data) {
				animateDestroyChannel(objid, false);
			},
			error: function() {
				generalError();
			}

		});
	}
}
/*
 * Channel editing
 */
function setEditChannelState(state, elem) {
	elem.find(".set_channel_name").val(state.n);
	elem.find(".set_channel_desc").val(state.d);
	elem.find(".set_channel_owner").val(state.un);
	elem.find(".set_channel_keywords").val(state.k);
	elem.find(".set_channel_stopwords").val(state.sw);
	elem.find(".set_channel_users").val(state.uf);
	if (state.nu) {
		elem.find(".negate_true").attr("checked","checked");
		elem.find(".negate_state_true").show();
	} else {
		elem.find(".negate_false").attr("checked","checked");	
	}
	elem.find(".editchannel_set_icon").attr("src",
								state.i.replace(/^icons/,"/static/icons"));
	elem.find(".negate_change").css("display","none");
}
function editChannel(objid, type) {
	if (sessionid=="")
		return;
	if (createChannelActive) {
		$("#clone_edit_channel_inserted").attr("id", "clone_create_channel_inserted_del");
		cancelCreateChannel($("#clone_create_channel_inserted_del"));
	}
	if (editChannelActive) {
		if (objid == null) {
			cancelEditChannel();
			return;
		}
		if (parseInt(objid) == parseInt($("#clone_edit_channel_inserted").attr('objid'))) {
			cancelEditChannel();
			return;
		}
		$("#clone_edit_channel_inserted").attr("id", "clone_edit_channel_inserted_del");
		cancelEditChannel($("#clone_edit_channel_inserted_del"));
	}
	var todel = $("#pchannels_blk .inviteuser_blk");
	if (todel.length) {
		todel.find(".inviteBlock").fadeOut(200, function() {
			todel.slideUp(300, function () {
						todel.remove();	
							});
				});
	}
	editChannelActive = true;
	lastQuery = "";
	var elem = $("#clone_edit_channel").clone().attr("id", "clone_edit_channel_inserted")
												.attr("editing","1").attr("type",type);
	elem.find(".editchannel_title").text("Edit channel");
	if (type=="pchannels")
		elem.find(".set_channel_public").parent().css("visibility","hidden");
	var channelData;
	if (objid == null) {
		channelData = currentchannel;
		elem.attr("objid","");
	} else {
		channelData = dataObject[type][objid];
		elem.attr("objid",objid);
	}
	setEditChannelState(channelData, elem);
	
	var afterElem;
	if (objid == null) {
		afterElem = $("#userInfo");
		elem.css('margin-left', '15px').find('.editBlock')
						.removeClass('editBlock_inline').addClass('editBlock_outside');
	} else {
		afterElem = $("#"+ type+ "_channelid_" + objid);
	}
	try {
		afterElem.append(elem);
	} catch (e) {
		return;
	}
	var t = new TextboxList('#clone_edit_channel_inserted .set_channel_users', {"sign":''});
	var t1 = new TextboxList('#clone_edit_channel_inserted .set_channel_stopwords', {"sign":''});
	//var t2 = new TextboxList('#clone_edit_channel_inserted .set_channel_keywords', {"sign":'#', "onchange": function() {if(activeSelectorMode==2) updateGoogleImages();}});
	$('#clone_edit_channel_inserted .set_channel_keywords').bind('keyup',hashtagValidate).bind('change',hashtagValidate);
	$("#clone_edit_channel_inserted").slideDown(500, function (){
							var elem = $("#clone_edit_channel_inserted");
							elem.css("height", elem[0].offsetHeight+"px");
							elem.find(".editBlock")
									.hide()
									.css("visibility","visible")
									.fadeIn(200, function(){elem.css("height","440px");});
						});
	activateSelectorMode(0);
}

function setNegateState(negateState) {
	if (negateState) {
		if ($('#clone_edit_channel_inserted').attr("editing")=="1")
			$("#clone_edit_channel_inserted .negate_state_true").show();
		else
			$("#clone_edit_channel_inserted .negate_state_true").hide();
		$("#clone_edit_channel_inserted .negate_state_false").hide();
		$("#clone_edit_channel_inserted .set_negate_state").val("1");
	} else {
		$("#clone_edit_channel_inserted .negate_state_false").show();
		$("#clone_edit_channel_inserted .negate_state_true").hide();
		$("#clone_edit_channel_inserted .set_negate_state").val("0");
	}
	
}

function submitEditChannel() {
	var objid = $("#clone_edit_channel_inserted").attr("objid");
	var type = $("#clone_edit_channel_inserted").attr("type")
	var channelData;
	if (objid=="") {
		channelData = currentchannel;
	} else {
		objid = parseInt(objid);
		channelData = dataObject[type][objid];
	}
	var state = getEditChannelState(channelData);
	if (editChannelValid(state)) {
			state["id"] = state["lid"];
			delete(state["lid"]);
			delete(state["si"]);delete(state["sr"]);delete(state["at"]);
			$.ajax({
				url: "/pchannel2/save_public_channel",
				dataType: "json",
				type: "post",
				data: {
					"channel": $.toJSON(state)
				},
				success: function(data) {editChannelSuccess(data)},
				error: function() {
					generalError();
					$('#clone_edit_channel_inserted button').removeAttr('disabled');
				}
				
			});
		return;
	}
	$('#clone_edit_channel_inserted button').removeAttr('disabled');
	
}

function editChannelSuccess(data) {
	var objid = $("#clone_edit_channel_inserted").attr("objid");
	var type = $("#clone_edit_channel_inserted").attr("type")
	cancelEditChannel();
	if (objid == "") {
		activateChannelObject(data);
	} else {
		objid = parseInt(objid);
		var pub = (type =="pchannels");
		var state = getEditChannelState(data);
		dataObject[type][objid] = state;
		var elem = $("#"+ type+ "_channelid_" + objid + " .chInf");
		setChannelData(state, elem,  objid);
	}
	
}


function toggleMyProfile() {
	if (myProfileVisible) {
		myProfileVisible = false;
		$("#reguser_data .profile_add").slideUp(500);
		$("#reguser_data .ddTitle").removeClass("ddTitle_opened").addClass("ddTitle_closed");
		saveSidebarState("pf", false);
	} else {
		myProfileVisible = true;
		$("#reguser_data .profile_add").slideDown(500);
		$("#reguser_data .ddTitle").removeClass("ddTitle_closed").addClass("ddTitle_opened");
		saveSidebarState("pf", true);
	}

}


function toggleMyChannels() {
	if (myChannelsVisible) {
		myChannelsVisible = false;
		$("#myChannelsBalloon .ddCont_c").slideUp(500);
		$("#myChannelsBalloon .ddTitle").removeClass("ddTitle_opened").addClass("ddTitle_closed");
		saveSidebarState("my", false);
	} else {
		myChannelsVisible = true;
		$("#myChannelsBalloon .ddTitle").removeClass("ddTitle_closed").addClass("ddTitle_opened");
		saveSidebarState("my", true);
		$("#myChannelsBalloon .ddCont_c").slideDown(500);
	}
}

function toggleOtherChannels() {
	if (otherChannelsVisible) {
		otherChannelsVisible = false;
		$("#otherChannelsBalloon .ddCont_c").slideUp(500);
		$("#otherChannelsBalloon .ddTitle").removeClass("ddTitle_opened").addClass("ddTitle_closed");
		saveSidebarState("fl", false);
	} else {
		otherChannelsVisible = true;
		$("#otherChannelsBalloon .ddTitle").removeClass("ddTitle_closed").addClass("ddTitle_opened");
		saveSidebarState("fl", true);
		$("#otherChannelsBalloon .ddCont_c").slideDown(500);
	}
}

function saveSidebarState(type, state) {
	$.ajax({
		url: "/chats/set_sidebar_state",
		dataType: "text",
		type: "post",
		data: {
			"op": state?"0":"1",
			"tp": type
		},
		success: function(data) {
		},
		error: function() {
		}
		
	});
	
}

function loadMyChannels() {
	loadData();
}

function parseMyChannels(data) {
		
		var channels = data["pchannels"];
		var elem = $("#myChannelsList");
		var elem2 = $("#otherChannelsList");
		elem.empty();
		elem2.empty();
		var totalMy = 0, totalOther = 0;
		var displayedChannels;
		if (typeof dataObject['pchannels']!='undefined') {
			displayedChannels = dataObject['pchannels'];
		} else {
			displayedChannels = new Array();
		}
		for (var i=0;i<channels.length;i++) {
			var isSpeaker;
			
			if(typeof channels[i]["sp"] !="undefined" && $.inArray(authenticatedUser, channels[i]["sp"])!=-1) {
				isSpeaker = "<img  title='You are a speaker' src='/static/images/i_meg2.gif'/>";
			} else {
				isSpeaker = "";
			}
			var icons = channels[i]["nu"]?"<img  title='Public chat' src='/static/images/i_chat.gif'/>":
				((channels[i]["iv"]?"<img  title='Private chat' src='/static/images/i_lock2.gif'/>"
							:"<img  title='Private chat' src='/static/images/i_lock2.gif'/>")) +
							isSpeaker;
			
			
			var newmes = '';
			if (typeof channels[i]['stat']!='undefined' &&
					typeof channels[i]['stat']['new']!='undefined') {
				newmes = channels[i]['stat']['new'];
				if (newmes==50)
					newmes='50+';
				//newmes = ' ('+newmes+')';
			}
			if (channels[i]["un"]==authenticatedUser) {
				elem.append("<tr><td width='60%'><a href='"+ channelLink(channels[i]["un"], channels[i]["n"]) 
					 + "'>"+ strEscape(channels[i]["n"])+ "</a></td><td width='30%'>"
						+icons+"</td><td width='10%' align='right'>" 
						+ newmes +"</td></tr>");
				totalMy++;
			}
			else {
				elem2.append("<tr><td width='60%'><a href='"+ channelLink(channels[i]["un"], channels[i]["n"])
						+ "'>"+ strEscape(channels[i]["n"])+ "</a></td><td width='30%'>"
						+icons+"</td><td width='10%' align='right'>" 
    				+ newmes +"</td></tr>");
				totalOther++;
			}
		
			if (typeof channels[i]['refresh'] !="undefined" && channels[i]['refresh']) {
				makeBackgroundSearchRequest(channels[i]);
			}
			
			for (var j=0; j < displayedChannels.length; j++ ){
				if (displayedChannels[j]['lid']==channels[i]['lid'])
				{
					setChannelData(channels[i], $("#pchannels_channelid_"+j + " .chInf"), j); 
					break;
				}
			}
		}
		$("#myChannelsBalloon .number_of").html("("+totalMy+ ")");
		$("#otherChannelsBalloon .number_of").html("("+totalOther+ ")");
		if (myChannelsVisible)
			$("#myChannelsBalloon .ddCont_c").fadeIn(500);
		if (otherChannelsVisible)
			$("#otherChannelsBalloon .ddCont_c").fadeIn(500);
		
		if (typeof data["chstat"]["my"]!="undefined") {
			$("#infoUserStats").html("Created: "+ data["chstat"]["my"] + 
									" Follows: "+data["chstat"]["follow"]);
		}
		if (!totalMy)
			elem.append("<tr><td colspan='2'><b>No chats</b></td></tr>");
		if (!totalOther)
			elem2.append("<tr><td colspan='2'><b>No chats</b></td></tr>");
		
}
		

function goAuth(backUrlEncoded, setflag) {
	var elem = $(".loginpopup .loglink");
	if (typeof setflag !='undefined' && setflag)
		elem.attr('flag','1');
	elem.attr("href", "/oauth/login?back=" + backUrlEncoded);
	$(".loginpopup").modal({overlayClose: true, closeClass:"modalClose"});
}



function updateStatuses() {
		loadData();
	updateTimer = setTimeout("updateStatuses();", updatePeriod);
}



function toggleMyMail() {
	if (myMailVisible) {
		$("#myMailBalloon .ddCont_c").slideUp(500);
		$("#myMailBalloon .ddTitle").removeClass("ddTitle_opened").addClass("ddTitle_closed");
		myMailVisible = false;
		saveSidebarState("ml", false);
	} else {
		myMailVisible = true;
		$("#myMailBalloon .ddTitle").removeClass("ddTitle_closed").addClass("ddTitle_opened");
		saveSidebarState("ml", true);
		$("#myMailBalloon .ddCont_c").slideDown(500);
	}
}

function loadData() {
	if (sessionid !="") {
		var data = {"getjob":"1", "limit":"1"}
		if (typeof currentchannel != "undefined") {
			data["updateid"] = currentchannel["lid"];
		}
		
		$.ajax({
			url: "/pchannel2/load_data",
			dataType: "json",
			data:data,
			success: function (data) {
				parseMyMail(data['messages']);
				parseMyChannels(data);
				
			}
			
		});
	
	}
}

function loadMyMail() {
	loadData();
}
	
function parseMyMail(messages) {
	if (blockMailLoad)
		return;
				
		var elem = $("#myMailList");
		elem.empty();
		for (var i=0;i<messages.length;i++) {
			/*elem.append("<tr><td> <a href='#' onclick='openMail("+ i +", this); return false;'>" + messages[i]["type"]
			                     +" from " + messages[i]["contents"]["un"] +
			                    "</a><div class='addinfo' style='display:none'></div</td></tr>");
			*/
			var cls = "";
			var wordtype = messages[i]["type"];
			switch (messages[i]["type"]) {
				case "invite":
					cls = "incom";
					break;
				case "ask":
					cls = "req";
					break;
				case "accepted":
					cls = "accept";
					break;
				case "allow":
					cls = "take";
					break;
				case "joininvite":
					cls = "incom";
					wordtype = "invite";
					break;
			}
			
			elem.append(
				'<tr><td class="selm"><div class="mesItemS message_item"><div class="mesItem_t"><a onclick=\'openMail('+ i +', this); return false;\' href="" class="'+cls+'">'
						+ messages[i]["contents"]["un"] + ' ' + wordtype +
						'</a><a href="" onclick=\'openMail('+ i +', this); return false;\'><img class="mail_open_img" src="/static/images/btn_p.png"></a></div>' +
						'<div class="addinfo mesItem_c">' +
						'</div><div class="mesItem_n addbuttons"></div></div></td></tr>'	
				);
			
		}
		if (!messages.length) 
			elem.append("<tr><td><b>No messages</b></td></tr>");
		else
			elem.append("<tr><td style='border-top: 1px solid #FFFFFF;'><div class='view_all_msg'><a href='/mail/' >View all messages</a></div></td></rd>");
		$("#myMailBalloon .number_of").html("("+messages.length+ ")");
		currentMail = messages;
		if (myMailVisible)
			$("#myMailBalloon .ddCont_c").fadeIn(500);
		
}
		

var blockMailLoad = false;
function openMail(mailid, obj) {
	var elem2 = $(obj).parent().parent();
	var elem = elem2.find("div.addinfo");
	var elem3 = elem2.find("div.addbuttons")
	if (elem2.attr("opened")=="1") {
		elem2.attr("opened", "0");
		blockMailLoad = false;
		elem2.animate (
				{
					//"paddingTop": "0px",
					//"paddingBottom":"0px",
					"height": "15px"
				}, function () {elem2.parent().css("background-color","transparent")});
		elem2.find(".mail_open_img").attr("src","/static/images/btn_p.png")
		return;
	}
	var message = currentMail[mailid];
	var title = "";
	var buttons = " <a href='' onclick='deleteMail(\""+ message["id"] + "\",true);return false;'>Delete</a> ";
	switch(message["type"]) {
	case "invite":
		title = message["contents"]["un"] + " has invited you to join private chat "
					+ "<a href='"+ channelLink(message["contents"]["un"], message["contents"]["n"]) +"'>" 
					+ strEscape(message["contents"]["n"])+ '</a>';
		buttons = "<a  href=''  onclick='processMailAction(\""+ message["id"] + "\");return false;'>Accept invitation</a>" + buttons;
		break;
	case "joininvite":
		title = message["contents"]["un"] + " has invited you to join chat "
					+ "<a href='"+ channelLink(message["contents"]["on"], message["contents"]["n"]) +"'>" 
					+ strEscape(message["contents"]["n"])+ '</a>';
		buttons = "<a  href=''  onclick='processMailAction(\""+ message["id"] + "\");return false;'>Accept invitation</a>" + buttons;
		break;
	
	case "ask":
		title = message["contents"]["un"] + " has asked your permission to join your chat "
		+ "<a href='"+ channelLink(authenticatedUser, message["contents"]["n"]) +"'>" 
		+ strEscape(message["contents"]["n"])+ '</a>';
		buttons = "<a href='' onclick='processMailAction(\""+ message["id"] + "\"); return false'>Allow user to join</a>" + buttons;
		break;
	case "accepted":
		title = message["contents"]["un"] + " has accepted your invitation to private chat "
		//+ "<a href='/chats/user/"+ authenticatedUser +"/" + message["contents"]["n"]+"'>" 
		+ strEscape(message["contents"]["n"])/*+ '</a>'*/;
		break;
	case "allow":
		title = message["contents"]["un"] + " has allowed you to join his private chat "
		+ "<a href='"+ channelLink(message["contents"]["un"], message["contents"]["n"]) +"'>" 
		+ strEscape(message["contents"]["n"])+ '</a>';
		break;
	case "reject":
		title = message["contents"]["un"] + " did not allow you to join his private chat "
		+ "<a href='"+ channelLink(message["contents"]["un"], message["contents"]["n"]) +"'>" 
		+ strEscape(message["contents"]["n"])+ '</a>';
		break;
		
	}
	
	elem.html(title);
	elem3.html(buttons);
	var elem4 = elem2.parent().parent().parent().find("div.message_item[opened='1']");
	elem4.attr("opened","0");
	elem4.animate (
			{
				//"paddingTop": "0px",
				//"paddingBottom":"0px",
				"height": "15px"
			}, function () {elem4.parent().css("background-color","transparent")});
	elem4.find(".mail_open_img").attr("src","/static/images/btn_p.png");

	elem.attr("opened","1");
//	elem2.parent().css("background-color","#edede0");
	elem2.animate (
			{
				//"paddingTop": "10px",
				//"paddingBottom":"10px",
				"height": "100px"
			});
	blockMailLoad = true; 
	elem2.find(".mail_open_img").attr("src","/static/images/btn_m.png");
	elem2.attr("opened","1");
}


function deleteMail(mesid, sidebar) {
	if (typeof sidebar == 'undefined')
		sidebar = false;
	$.ajax({
		url: "/pchannel2/delete_mail",
		dataType: "text",
		type: "post",
		data: {
			"id": mesid
		},
		success: function (data) {
			if (data == "Ok") {
				loadMyMail();
				if (sidebar) {
					blockMailLoad = false;
					loadMyMail();
				}
				else
					$("div.group[mailid='"+ mesid +"']").slideUp(1000);
			} else {
				notifyBar(data);
			}
		},
		error: function() {
			notifyBar("Some error occured");
		}
	});
}

function processMailAction(mesid) {
	$.ajax({
		url: "/pchannel2/process_mail_action",
		dataType: "text",
		type: "post",
		data: {
			"id": mesid
		},
		success: function (data) {
			/*if (data == "Okr") {
				//loadMyMail();
				window.location.reload();
			}
			else if (data == "Ok") { */
			if (data == "Okr" || data=="Ok") {
				blockMailLoad = false;
				loadData();
				if (typeof currentchannel !="undefined"	) {
					updateCurrentChannelStatus();
				} else if (dataObject["pchannels"]){
					//reloadList();
				}
				$("div.group[mailid='"+ mesid +"']").slideUp(1000);
				if (data == "Okr" && samePageAsUsername)
					reloadList();
			}
			
			else {
				notifyBar(data);
			}
		},
		error: function() {
			notifyBar("Some error occured");
		}
	});
}



/*
Invites
*/
var activeInviteNode = null;
var lastActiveInviteMode = "byun";
function inviteChannel(objid) {
	
	var elem;
	var attach
	if (objid == null) {
		objid = 0;
		elem = $("#clone_inviteuser_blk").clone().attr("id","inviteuser_blk_pchannels_0")
		.attr("objid", '')
		.attr("chid",currentchannel["lid"]);
		attach  = $('#userInfo');
	}
	else {
		elem = $("#clone_inviteuser_blk").clone().attr("id","inviteuser_blk_pchannels_"+objid)
			.attr("objid", objid)
			.attr("chid",dataObject["pchannels"][objid]["lid"]);
		
		attach = $("#pchannels_channelid_" + objid);
	}
	
	
	
	var todel = $("#pchannels_blk .inviteuser_blk");
	var close = false;
	if (attach.find(".inviteuser_blk:visible").length) {
			close = true;
	}
	todel.find(".inviteBlock").fadeOut(200, function() {
							todel.slideUp(300, function () {
										todel.remove();	
											});
								});
	if (createChannelActive) {
		$("#clone_edit_channel_inserted").attr("id", "clone_create_channel_inserted_del");
		cancelCreateChannel($("#clone_create_channel_inserted_del"));
	}
	
	if (editChannelActive) {
		$("#clone_edit_channel_inserted").attr("id", "clone_edit_channel_inserted_del");
		cancelEditChannel($("#clone_edit_channel_inserted_del"));
	}
	lastActiveInviteMode = "byun";
	attach.append(elem);
	elem.css("height",
							elem.find(".inviteCont_f.srch_blk_"+ lastActiveInviteMode).attr("winsize") +"px");
	if (!close)
		elem.slideDown(300, function() {elem.find(".inviteBlock").fadeIn(200)});
	activeInviteNode = elem;
	makeGroupSearch();
	makeToAllSearch();
}

function closeInviteChannel() {
	var todel = $("#pchannels_blk .inviteuser_blk");

	todel.find(".inviteBlock").fadeOut(200, function() {
		todel.slideUp(300, function () {
					todel.remove();	
						});
			});
}


var inviteModeAnimationProcessing = false;
function activateInviteMode(modeName, obj) {
	if (inviteModeAnimationProcessing)
		return;
	inviteModeAnimationProcessing = true;
	var elem = $(obj).parent().parent().parent().parent();

	elem.find(".srch_e.srch_"+lastActiveInviteMode).hide();
	elem.find(".srch_d.srch_"+lastActiveInviteMode).show();
	elem.find(".srch_e.srch_"+modeName).show();
	elem.find(".srch_d.srch_"+modeName).hide();
	elem.find(".srch_blk_"+ lastActiveInviteMode).fadeOut(100, function(){
									elem.find(".srch_blk_"+modeName).fadeIn(200);
									});
	elem.parent().animate({"height":
					elem.find(".inviteCont_f.srch_blk_"+ modeName).attr("winsize") +"px"},
									400,
									function () {inviteModeAnimationProcessing = false;});
	
	if (lastActiveInviteMode == "byun") {
		elem.find(".srch_blk_byun .send_message").hide();
	} else if (lastActiveInviteMode == "byn")
	{
		elem.find(".srch_blk_byn .send_message").hide();
		elem.find(".srch_blk_byn .nameSearchResults").empty();
	}
	else if (lastActiveInviteMode == "byg") {
		elem.find(".srch_blk_byg .send_message").hide();
	}
	lastActiveInviteMode = modeName;
	
	elem.find(".srch_blk_byn .searchResContainer").hide();
	elem.find(".srch_blk_byn .ajax_loader").css('display','block');
	
	placeScrollArrows();
}

function placeScrollArrows() {
	var modeName = lastActiveInviteMode;
	var elem2 = $(".inviteuser_blk:visible");
	if (modeName == "byun" || modeName == "all")
		elem2.find(".inviteBotnav a").css("visibility", "hidden");
	else {
		var elem = $(".inviteuser_blk .srch_blk_"+ modeName +" .searchRes");
		var pos = parseInt(elem.css("left").replace("px",""));
		var num = elem.find(".searchResBlk").length;
		var vis = (pos > (-74*(num-7))) ? "visible" : "hidden";
		elem2.find(".inviteBotnav .ar2").css("visibility", vis);
		vis = (pos < 0)? "visible" : "hidden";
		elem2.find(".inviteBotnav .ar1").css("visibility", vis);
	}
	scrollSearchResultsLock = false;
}

function toggleInviteUser() {
	var elem = $(".inviteuser_blk");
	if (elem.css("display")=="none") {
		elem.slideDown(300);
		elem.find('button').removeAttr('disabled');
	} else {
		elem.slideUp(300, function() {$(".user_search_blk").hide()});
		activeInviteNode = null;
	}
}
function inviteUserToChat(obj) {
	var channelid;
	if (typeof obj=="undefined")
		channelid = currentchannel["lid"];
	else {
		channelid = activeInviteNode.attr("chid");
	}
	var elem = $(".inviteuser_blk");
	var username = elem.find(".set_invite_username").val();
	if (username == "")
		return;
	elem.find('button').attr('disabled', 'disabled');
	$.ajax({
		url: "/pchannel2/invite_user",
		dataType: "text",
		type: "post",
		data: {
			"channel": channelid,
			"username": username
		},
		success: inviteUserSuccess,
		error: function() {
			notifyBar("Some error occured");
			$(".inviteuser_blk").find('button').removeAttr('disabled');
		}
	});
	
}


function inviteUserCancel() {
	$(".inviteuser_blk").slideUp(300, function() {$(".user_search_blk").hide()});
}

function makeUserSearch() {
	var elem = activeInviteNode;
	var query = elem.find(".invite_search_set_name").val();
	if (query =="")
		return;
	elem.find(".invite_search_set_name").attr("disabled","disabled");
	elem.find(".inviteCont_f.srch_blk_byn .send_message").hide();
	var elem3 = elem.find('.srch_blk_byn .nameSearchResults');
	elem3.empty();
	elem3.css('width','500px');
	$.ajax({
		url: "/chats/find_users/",
		dataType: "json",
		data: {
			"q":query,
			"per_page": 20
		},
		success: function (data) {
			elem.find(".srch_blk_byn .ajax_loader").hide().css('visibility','hidden');
			
			if (data.length && lastActiveInviteMode == "byn") {
				elem.find(".srch_blk_byn .searchResContainer").show();
				//elem.find(".inviteCont_f.srch_blk_byn").attr("winsize","260");
				elem.animate({"height":"250px"});
				elem3.css('width',(data.length*80)+"px");
				elem3.empty();
				for (var i=0;i<data.length;i++) {
					var code = $('<div class="searchResBlk">'+
							'<a target="_blank" href="http://twitter.com/'+ data[i]['screen_name'] +'"><img width="48" height="48" /></a><br/>'+
							'<a target="_blank" href="http://twitter.com/'+ data[i]['screen_name'] +'">'+data[i]['screen_name'] +'</a>' +
							'<input onclick="sendInviteToUser(\''+ data[i]['screen_name'] +'\', true)" type="button" class="sendBtn" value="Send DM"/>' +
							'<input onclick="sendInviteToUser(\''+ data[i]['screen_name'] +'\', false)" type="button" class="sendBtn" value="Send @"/>'+
							'</div>');
					code.find("img").attr("src", data[i]["profile_image_url"]);
					
					elem3.append(code);
				}
				elem3.append('<div style="clear:both; height:0; overflow:hidden;"><!-- --></div>');
			} else if (lastActiveInviteMode == "byn") {
				elem.find(".srch_blk_byn .searchResContainer").show();
				elem3.empty();
				elem3.append($("<div style='width:100%; text-align:center'>No users found</div>"));
			}
			elem.find(".invite_search_set_name").removeAttr("disabled");
			placeScrollArrows();
		},
		error: function() {

			elem.find(".invite_search_set_name").removeAttr("disabled");

			elem.find(".srch_blk_byn .ajax_loader").css('visibility','hidden');
		}
	});
	elem.find(".srch_blk_byn .ajax_loader").show().css("visibility","visible");
	
}

function makeGroupSearch() {
	var elem = activeInviteNode;
	
	$.ajax({
		url: "/chats/get_invite_groups/",
		dataType: "json",
		data: {
		},
		success: function (data) {
			data = data['tags'];
			if (!data.length) return;
			var elem3 = elem.find('.groupSearchResults');
			elem3.css('width',(data.length*80)+"px");
			elem3.empty();
			for (var i=0;i<data.length;i++) {
				var code = $('<div class="searchResBlk">'+
						'<img width="48" height="48" /></a><br/>'+
						'<div style="margin: 0px auto 0px auto; width: 65px; height: 20px; overflow:hidden;">' + data[i]['n'] +'</div><div><b>('+ data[i]['u'] +')</b></div>' +
						'<input onclick="sendInviteToGroup(\''+ data[i]['n'] +'\', true)" type="button" class="sendBtn" value="Send DM"/>' +
						//'<input onclick="sendInviteToGroup(\''+ data[i]['n'] +'\', false)" type="button" class="sendBtn" value="Send @"/>'+
						'</div>');
				var icon = data[i]["i"];
				if (icon == '')
					icon = 'icons/group/group_default.png';
				if (icon.substr(0,4)!='http') {
					icon = "/static/"+icon;
				}
				code.find("img").attr("src", icon);
				
				elem3.append(code);
			}
			elem3.append('<div style="clear:both; height:0; overflow:hidden;"><!-- --></div>');
		}
	});
	
}
function makeToAllSearch() {
	var elem = activeInviteNode;
	var channel;
	if (elem.attr('objid')!='') {
		channel = dataObject['pchannels'][parseInt(elem.attr('objid'))];
	} else {
		channel = currentchannel;
	}
	
	var link = 'http://microchats.com' + channelLink(channel.un, channel.n) + '?in';
	elem.find('.set_toall_url').text(link).attr('href',link);
	var defaultMessage = 'I invite you to the microchat "'+ channel.n +'"! '+ link;
	elem.find('.set_toall_msg').text(defaultMessage);
	textLimit2(elem.find(".srch_blk_all .inviteCont_s")[0]);
}

function textLimit2(block) {
	var obj = $(block);
	var text = obj.find("textarea").val();
	var left = 140 - text.length;
	obj.find(".characters_num").text(''+left);
	if (left >= 0 && text.length) {
		obj.find(".searchBtn").removeAttr('disabled');
		//obj.find(".searchBtn").show();
		return true;
	} else {
		obj.find(".searchBtn").attr("disabled", "disabled");
		//obj.find(".searchBtn").hide();
		return false;
	}
}

var scrollSearchResultsLock  = false;
function scrollSearchResults(obj, dir) {
	if (scrollSearchResultsLock) return;
	var elem = $(obj).parent().parent().parent().find(".searchRes:visible");
	var pos = parseInt(elem.css("left").replace("px",""));
	var num = elem.find(".searchResBlk").length;
	if (dir) {
		if (pos > (-74*(num-7))) {
			scrollSearchResultsLock = true;
			elem.animate({"left":"-=518px"}, placeScrollArrows);
		}
	} else {
		if (pos < 0) {
			scrollSearchResultsLock = true;
			elem.animate({"left":"+=518px"}, placeScrollArrows);
			
		}
	}
}


function sendInviteToUserName(direct) {
	var elem = activeInviteNode;
	var userName = elem.find(".invite_set_name").val();
	if (userName == "") return;
	var channel;
	if (elem.attr('objid')!='') {
		channel = dataObject['pchannels'][parseInt(elem.attr('objid'))];
	} else {
		channel = currentchannel;
	}
	elem.find(".inviteCont_f.srch_blk_byun .send_message").show();
	elem.animate({"height":"275px"});
	//elem.find(".inviteCont_f.srch_blk_byun").attr("winsize","210");
	var link = elem.find('.set_toall_url').text();
	var message = generateMessageForSearchUser(direct?'':userName, channel.n, link);
	elem.find('.set_toun_msg').text(message);
	textLimit2(elem.find(".srch_blk_byun .send_message")[0]);
	elem.find('.srch_blk_byun').attr("username",userName);
	if (direct) {
		elem.find('.srch_blk_byun .send_message .inviteCont_slabel2')
						.html("Direct to <b>"+ userName+'</b>');
		elem.find('.srch_blk_byun').attr("direct","1");
	}
	else {
		elem.find('.srch_blk_byun .send_message .inviteCont_slabel2')
				.html("Message to <b>"+ userName+'</b>:');
		elem.find('.srch_blk_byun').attr("direct","0");
	}
}

function sendInviteToUserNameProcess() {
	var elem = activeInviteNode;
	elem.find("input").attr("disabled","disabled");
	elem.find("textarea").attr("disabled","disabled");
	elem.find("button").attr("disabled","disabled");
	if (elem.attr('objid')!='') {
		channel = dataObject['pchannels'][parseInt(elem.attr('objid'))];
	} else {
		channel = currentchannel;
	}
	var chid = channel.lid;
	var direct = (elem.find('.srch_blk_byun').attr("direct")=="1")?1:0;
	var username = elem.find('.srch_blk_byun').attr("username");
	var msgtxt = elem.find('.srch_blk_byun textarea').val();
	$.ajax({
		url: "/pchannel2/invite_user",
		dataType: "text",
		type: "post",
		data: {
			"channel": chid,
			"username": username,
			"direct":direct,
			"msg":msgtxt
		},
		success: inviteUserSuccess,
		error: function() {
			notifyBar("Some error occured");

			elem.find("input").removeAttr("disabled");
			elem.find("textarea").removeAttr("disabled");
			elem.find("button").removeAttr("disabled");
		}
	});
	
}

function inviteUserSuccess(data) {
	if (data !='Ok') {
		notifyBar(data);
	}
	inviteUserCancel();
}

function sendInviteToUser(userName, direct) {
	var elem = activeInviteNode;
	var channel;
	if (elem.attr('objid')!='') {
		channel = dataObject['pchannels'][parseInt(elem.attr('objid'))];
	} else {
		channel = currentchannel;
	}
	elem.find(".inviteCont_f.srch_blk_byn .send_message").show();
	elem.animate({"height":"380px"});
	//elem.find(".inviteCont_f.srch_blk_byn").attr("winsize","380");
	var link = elem.find('.set_toall_url').text();
	var message = generateMessageForSearchUser(direct?'':userName, channel.n, link);
	elem.find('.set_tou_msg').text(message);
	textLimit2(elem.find(".srch_blk_byn .send_message")[0]);
	elem.find('.srch_blk_byn').attr("username",userName);
	if (direct) {
		elem.find('.srch_blk_byn .send_message .inviteCont_slabel2')
						.html("Direct to <b>"+ userName+'</b>');
		elem.find('.srch_blk_byun').attr("direct","1");
	} else {
		elem.find('.srch_blk_byn .send_message .inviteCont_slabel2')
				.html("Message to <b>"+ userName+'</b>');
		elem.find('.srch_blk_byun').attr("direct","0");
	}
}
function sendInviteToUserProcess() {
	var elem = activeInviteNode;
	elem.find("input").attr("disabled","disabled");
	elem.find("textarea").attr("disabled","disabled");
	elem.find("button").attr("disabled","disabled");
	if (elem.attr('objid')!='') {
		channel = dataObject['pchannels'][parseInt(elem.attr('objid'))];
	} else {
		channel = currentchannel;
	}
	var chid = channel.lid;
	var direct = (elem.find('.srch_blk_byn').attr("direct")=="1")?1:0;
	var username = elem.find('.srch_blk_byn').attr("username");
	var msgtxt = elem.find('.srch_blk_byn textarea').val();
	$.ajax({
		url: "/pchannel2/invite_user",
		dataType: "text",
		type: "post",
		data: {
			"channel": chid,
			"username": username,
			"direct":direct,
			"msg":msgtxt
		},
		success: inviteUserSuccess,
		error: function() {
			notifyBar("Some error occured");

			elem.find("input").removeAttr("disabled");
			elem.find("textarea").removeAttr("disabled");
			elem.find("button").removeAttr("disabled");
		}
	});
	
}



function sendInviteToGroup(userName, direct) {
	var elem = activeInviteNode;
	var channel;
	if (elem.attr('objid')!='') {
		channel = dataObject['pchannels'][parseInt(elem.attr('objid'))];
	} else {
		channel = currentchannel;
	}
	elem.find(".inviteCont_f.srch_blk_byg .send_message").show();
	elem.animate({"height":"370px"});
	//elem.find(".inviteCont_f.srch_blk_byg").attr("winsize","380");
	var link = elem.find('.set_toall_url').text();
	var message = generateMessageForSearchUser(direct?'':userName, channel.n, link);
	elem.find('.set_tog_msg').text(message);
	elem.find('.srch_blk_byg').attr("tagname",userName);
	textLimit2(elem.find(".srch_blk_byg .send_message")[0]);
	if (direct)
		elem.find('.srch_blk_byg .send_message .inviteCont_slabel2')
						.html("Direct to <b>"+ userName+'</b>');
	else
		elem.find('.srch_blk_byg .send_message .inviteCont_slabel2')
				.html("Message to <b>"+ userName+'</b>:');

}

function sendInviteToGroupProcess() {
	var elem = activeInviteNode;
	elem.find("input").attr("disabled","disabled");
	elem.find("textarea").attr("disabled","disabled");
	elem.find("button").attr("disabled","disabled");
	if (elem.attr('objid')!='') {
		channel = dataObject['pchannels'][parseInt(elem.attr('objid'))];
	} else {
		channel = currentchannel;
	}
	var chid = channel.lid;
	var direct = (elem.find('.srch_blk_byg').attr("direct")=="1")?1:0;
	var tagname = elem.find('.srch_blk_byg').attr("tagname");
	var msgtxt = elem.find('.srch_blk_byg textarea').val();
	$.ajax({
		url: "/pchannel2/invite_group",
		dataType: "text",
		type: "post",
		data: {
			"channel": chid,
			"tagname": tagname,
			"direct":direct,
			"msg":msgtxt
		},
		success: inviteUserSuccess,
		error: function() {
			notifyBar("Some error occured");

			elem.find("input").removeAttr("disabled");
			elem.find("textarea").removeAttr("disabled");
			elem.find("button").removeAttr("disabled");
		}
	});
	
}


function generateMessageForSearchUser(userName, name, link) {

	var message;
	if (userName !='') {
		message = '@' + userName + ', I invite you to the microchat "'+ name+'"! ' + link;
	} else {
		message = 'I invite you to the microchat "'+ name+'"! ' + link;
	}
	return message;	
	
}


function invite_byun_changed() {
	$(".inviteuser_blk:visible .srch_blk_byun .send_message").hide();
	$(".inviteuser_blk:visible .srch_blk_byun .searchResContainer").hide();
}
function invite_byn_changed() {
	var elem = $(".inviteuser_blk:visible .srch_blk_byn");
	elem.find(".send_message").hide();
	elem.find(".nameSearchResults").empty();
}






function fileInputChange (obj)
{
	$(".my-input-file-path").val($(obj).val().split('/').pop().split('\\').pop());
	
	fileUpload(obj);
}
function fileLabelFocus(obj) {
	$(obj).parent().parent().find(".my-input-file").focus();
}

function fileInputFocus(obj) {
	$(obj).parent().parent().find(".my-input-file-path").css("background-color","#ffffcc");
}
function fileInputBlur(obj) {
	$(obj).parent().parent().find(".my-input-file-path").css("background-color","#ffffff");
}


function makeChatSearchRequest() {
	
	$.ajax({
		url: "/pchannel2/search",
		method: "get",
		data: {"q":searchQuery},
		dataType: "json",
		success: function(data) {
			if (data['pchannels'].length)
				processUserChannelList(data);
			else
			{
				$("#pchannels_blk h1").css('margin-bottom', '0px').html("There are no results for: <b>" + strEscape(searchQuery) + '</b>');
				$("#pchannels_blk").show();
				var elem = $('.newChannelCont');
				elem.find('h1').text('Be the first to create chat about '+ searchQuery);
				$('.set_channel_name').val(searchQuery);
				elem.show();
			}
		}
	});
}

function loadTrends() {
	$.ajax({
		url: "http://search.twitter.com/trends.json",
		dataType: "jsonp",
		success: function (data) {
			var trends = data['trends'];
			var elem = $(".twtrends");
			for (var i=0; i<trends.length; i++) {
				var trend = trends[i]['name'];
				elem.append('<tr><td style="padding:3px"><a href="/search/?q='+$.URLEncode(trend)+'">'+trend+'</a></td></tr>');
			}
			
		}
	});
	
}


function searchFocus(obj) {
	var elem = $(obj);
	
	if (elem.val() == 'Search...') {
		elem.val('');
		elem.removeClass('wel_search');
	}
}

function notifyBar(message) {
	var elem = $('.notify_bar');
	elem.find('td').text(message);
	elem.slideDown(500, function() {
		setTimeout(function() {
			elem.slideUp(500);
		}, 5000)
	
	})
}

function searchSubmit(obj) {
	if($(obj).find('input').val()=='' || $(obj).find('input').val()=='Search...')
		return false;
	return true;
}

function hashtagValidate() {
	var txt = $(this).val()
	if (!txt.match(/^[A-Za-z0-9-_]+$/, txt)) {
		txt = txt.match(/[A-Za-z0-9-_]+/g);
		if (txt!=null) {
			txt = txt.join('');
		} else {
			txt = '';
		}
		$(this).val(txt);
	}
}





