// vim: set fenc=utf8 ts=4 :
//JavaScriptソースファイル
$(function(){
	document.ontouchmove = function(e){}

});
function dcE(t){
	return $(document.createElement(t));
}
function addItem(addEvent, tid, nm, x, y, img, num_id, pro, absence, pid){
	if (pid == null){
		if (tid==null){
			pid = "pnick_"+new Date().getTime();
		} else if (tid=="[label]"){
			pid = "plabel_"+new Date().getTime();
		} else {
			pid = "p" + tid+"_"+new Date().getTime();
		}
	}
	var num = $(".haspid").length;

	var item;
	if (tid == "[label]"){
		item = dcE('div').attr("id", pid).addClass("haspid labelbox").text(nm);
	} else {
		item = dcE('div').attr("id", pid).addClass("haspid person");
		var icon = dcE('div').attr("id", pid+'-icon').addClass("icon").appendTo(item);
		var image = dcE('img').attr({id: pid+'-img', src: "/img/ajax-loader.gif"}).appendTo(icon);
		var hdn=dcE('input').attr({id: pid+'-numid', type: 'hidden'}).appendTo(item).val(num_id); 
		var idbox = dcE('div').attr("id", pid+'-id').appendTo(item);
		if (tid){
			//twitter-id add
			image.addClass('profile-icon');
			idbox.addClass('tid').append(
					dcE('a').attr({href:"http://twitter.com/"+tid, target:"_blank"}).text('@'+tid));
		} else {
			//nick add
			image.addClass('profile-icon-nick');
			idbox.addClass('nick').text(nm);
		}
	}

	item.css("position", "absolute");	//ie, chrome
	var editable = false;
	if (addEvent){
		if (_enable_edit){
			editable = true;
		} else if (_state_selfmove == "1" && tid == $("#twitter_sn").val()){
			editable = true;
		}
	} else {
		editable = false;
	}
	
	if (editable){
		if (UAENV['ios']){
			var i=0;

			item.get(0).addEventListener("touchmove", function(e){
				_draggingItem = item;
				base = $("#main").offset();
				e.preventDefault();
				var pos = e.touches[0];
				if (pos){
					var x = pos.pageX - base.left + (UAENV['ipad_v3'] ? (window.pageXOffset - 50) : -50);
					var y = pos.pageY -base.top + (UAENV['ipad_v3'] ? (window.pageYOffset - 50) : -50);
					x = x - (x % 10);
					y = y - (y % 10);
					x = Math.min(Math.max(x, 0), $("#main").width()-1-item.width()-1);
					y = Math.min(Math.max(y, 0), $("#main").height()-1-item.height()-1);
					item.css({left: x, top: y});
				}
			}, false);
			if ($("#live_edit").val() == "1"){
				item.context.addEventListener("touchend", function(e){
					updateMove(e, {helper: item});
				});
			}
		} else {
			item.draggable({ containment: "#main", grid: [10, 10]});
			if ($("#live_edit").val() == "1"){
				item.bind("dragstop", updateMove);
			}
		}
		if (_enable_edit){
			item.click(onItemClick);
		}
	} else {
		item.css({border: "none"});
		if (tid!="" && tid!="[label]" && num_id == ""){	//olddata
			$.ajax({
				type: "GET",
				url: "/adduser",
				data: {tid: tid, pid: pid, num_id: '', key: KEY},
				dataType: "json",
				success: onAddTwitterCallback,
			});
		}
	}

	if (x != null && y != null){
		item.css({left: x, top: y});
	} else {
		var wm = $("#widemode").attr("checked");
		item.css({left: (num * 60) % (wm ? 780 : 600), top: parseInt(num / (wm ? 13 : 13)) * 30 + 10});
	}
	$("#main").append(item);
	if (img){
		img = img.replace(/@S3/, 'http://s3.amazonaws.com/twitter_production/profile_images');
		if (pro==1){
			$("<img />").appendTo(item)
				.addClass("probadge")
				.attr("src", "/img/badge_pro.gif");
		}
		image.attr({src: img, title: nm, alt: tid});
		image.load(function(){
			item.hide().slideDown();
		});
		//エラー時
		image.error(function(msg){
			$.ajax({
				type: "GET",
				url: "/adduser",
				data: {tid: tid, pid: pid, num_id: num_id, key: KEY},
				dataType: "json",
				success: onAddTwitterCallback,
			});
		});
    }
	if (absence==1){
		item.addClass("absence_person");
	}
	item.fadeIn();
	return pid;
}
function onLabelAdd(labeltext){
	//person iconを空で配置
	if (typeof labeltext != "string"){
		labeltext = $("#label").val();
	}
	if (labeltext=="")return false;
	var pid = addItem(true, '[label]', labeltext);
	var labelbox = $("#"+pid);
	if ($("#live_edit").val() == "1"){
		var pos = labelbox.position();
		var data={act: 'labeladd', tid: '[label]', pid: pid, num_id: '', 
			name: labeltext, img: ''};
		data['x'] = parseInt(pos.left);
		data['y'] = parseInt(pos.top);
		documentUpdate(data);
	}

	//clear
	$("#label").val("");
	$("#label").focus();

	return false;

}
function onAddNick(nick){
	//person iconを空で配置
	if (typeof nick != "string"){
		nick = $("#nick").val();
	}
	if (nick=="")return false;
	var pid = addItem(true, null, nick, null, null, '/img/person_m.png');
	var person = $("#"+pid);
	var personImg = $("#"+pid + "-img")
	personImg.attr({title: nick, alt: nick});
	personImg.load(function(){
		person.hide().slideDown();
	});

	if ($("#live_edit").val() == "1"){
		var pos = person.position();
		var data={act: 'nickadd', tid: '', pid: pid, num_id: '', 
			name: nick, img: '/img/person_m.png'};
		data['x'] = parseInt(pos.left);
		data['y'] = parseInt(pos.top);
		documentUpdate(data);
	}
	//clear
	$("#nick").val("");
	$("#nick").focus();

	return false;

}
function onAddMulti(tids){
	if (typeof tids  == "object"){
		tids = window.prompt(_langdict.twitterids);
	}
	if (tids== null||tids==""){
		return false;
	}

	var tidArray = tids.split(/,| /);
	for (var i=0; i < tidArray.length; i++){
		var tid = tidArray[i].replace(/^ *(.+?) *$/, "$1");
		if (tid.charAt(0) == '$'){
			//nickname
			onAddNick(tid.substring(1))
			continue
		} else if (tid.charAt(0) == "'"){
			//label
			var buf = tid;
			while(tid.charAt(tid.length - 1) != "'" && i+1 < tidArray.length){
				tid = tidArray[++i].replace(/^ *(.+?) *$/, "$1");
				buf = buf + " " + tid;
			}
			onLabelAdd(buf.replace(/^'/, "").replace(/'$/, ""));
			continue;
		}
		var pid = addItem(true, tid);
		//ajax load
		var options = $.ajax({
			type: "GET",
			url: "/adduser",
			data: {tid: tid, pid: pid},
			dataType: "json",
			success: onAddTwitterCallback,
			error: function(req, sts, err){
				//retry
				$.ajax({
					type: "GET",
					url: "/adduser",
					data: {tid: tid, pid: pid},
					dataType: "json",
					success: onAddTwitterCallback
				});
			}
		});
	}
	return false;

}
function onAddTwitter(){
	//person iconを空で配置
	var tid = $("#tid").val();
	if (tid=="")return false;
	var pid = addItem(true, tid);
	//ajax load
	var options = $.ajax({
		type: "POST",
		url: "/adduser",
		data: {tid: tid, pid: pid},
		dataType: "json",
		success: onAddTwitterCallback,
		error: function(req, sts, err){
			//retry
			$.ajax({
				type: "GET",
				url: "/adduser",
				data: {tid: tid, pid: pid},
				dataType: "json",
				success: onAddTwitterCallback,
				error: function(req, sts, err){
					if (console){
						console.log(err);
					}
					alert(_langdict.failtoget);
					$("#" + pid).remove();
				}
			});
		}
	});

	//clear
	$("#tid").val("");
	$("#tid").focus();

	return false;

}
function onAddTwitterCallback(json){
	var person = $("#"+json.pid);
	var numidHdn = $("#"+json.pid + "-numid")
	numidHdn.val(json.num_id);
	var personImg = $("#"+json.pid + "-img")
	if (json.pro==1){
		$("<img />").appendTo(person)
			.addClass("probadge")
			.attr("src", "/img/badge_pro.gif");
	}
	if (json.profile_image == ''){
		json.profile_image = '/img/default_profile.png';
	}
	personImg.attr({src: json.profile_image, title: json.name, alt: json.tid});
	personImg.load(function(){
		person.hide().slideDown();
	});
	if ($("#live_edit").val() == "1"){
		var pos = person.position();
		var data={act: 'twitteradd', pid: json.pid, num_id: json.num_id, 
			name: json.name, img: json.profile_image, tid:json.tid}
		data['x'] = parseInt(pos.left);
		data['y'] = parseInt(pos.top);
		documentUpdate(data);
	}

}
/**
function onAddText(addEvent, tid, nm, x, y, img){
	//person iconを空で配置
	var labeltext = $("#label").val();
	if (labeltext=="")return false;

	var num = PERSON_IDX++;
	var pid = "p" + num;
	var dcE = function(t){
		return $(document.createElement(t));
	};

	var labelbox = dcE('div').attr("id", pid).addClass("labelbox");
	labelbox.innerHTML = labeltext;
	labelbox.css("position", "absolute");	//ie, chrome

	if (addEvent){
		labelbox.draggable({ containment: "#main", grid: [10, 10]});
		labelbox.click(onItemClick);
	} else {
		labelbox.css({border: "none"});
	}

	if (x != null && y != null){
		labelbox.css({left: x, top: y});
	} else {
		labelbox.css({left: (num * 60) % 600, top: 10});
	}
	$("#main").append(labelbox);
	person.fadeIn();
	return pid;

	//clear
	$("#label").val("");
	$("#label").focus();

	return false;
}
*/
function onClear(){
	if (!confirm(_langdict.deleteok)){
		return;
	}
	$("#msg").slideUp();
	$("#txtTitle").val("");
	$("#txtComment").val("");
	$(".haspid").fadeOut("normal", function(){
		$(".person").remove();
	});
	if ($("#live_edit").val() == "1"){
		documentUpdate({act: 'clear'});
	}
}
function onItemClick(){
	var cmenu = $("#cmenu");
	$(this).append($("#cmenu"));
	var person = $(cmenu.parent()); 
	if (person.hasClass("person")){
		$("#absence").show()
		if (person.hasClass("absence_person")){
			$("#absence").text(_langdict.atend).attr("title",_langdict.atend);

		}else{
			$("#absence").text(_langdict.absence).attr("title",_langdict.absence);
		}
	} else {
		$("#absence").hide()
	}
		
	var w = $(this).width();
	cmenu.css("left", w- 10);
	cmenu.hide().show();
}
function onPersonDelete(){
	var cmenu = $("#cmenu");
	var person = $(cmenu.parent()); 
	cmenu.hide();
	$("#main").append(cmenu);
	person.fadeOut("normal", function(){
		person.remove();
	});
	if ($("#live_edit").val() == "1"){
		var pid = person.attr('id');
		documentUpdate({act: 'delete', pid: pid});
	}
	return false;
}
function onAbsence(){
	var cmenu = $("#cmenu");
	var person = $(cmenu.parent()); 
	if (person.hasClass("absence_person")){
		person.removeClass("absence_person");
	} else{
		var offset = 50 * $("div.absence_person").length
		person.css({left: 540-offset, top: 10});
		person.addClass("absence_person");
	}
	if ($("#live_edit").val() == "1"){
		var pid = person.attr('id');
		var pos = person.position();
		var data={act: 'absence', pid: pid, absence: person.hasClass("absence_person")};
		data['x'] = parseInt(pos.left);
		data['y'] = parseInt(pos.top);
		documentUpdate(data);
	}

}
function onStageClick(e){
	if (e.target != e.currentTarget){
		return;
	}
	var cmenu = $("#cmenu");
	cmenu.hide();
	$("#main").append(cmenu);
}
function onCancel(){
	var dialog = $("#dialog");
	var dialogp = $("#dialogpanel");
	$("#saving").hide();
	$("#entry").show();
	dialogp.fadeOut();
	dialog.fadeOut();
}
function onSave(){
	var dialog = $("#dialog");
	var dialogp = $("#dialogpanel");
	var stage = $("#main");
	var dy =  (UAENV['ios'] ? window.pageYOffset + 20: $("#main").offset().top + 10);
	dialog.css({
		width: UAENV['ios'] ? 350 : 400, 
		height: 270,
		top: dy,
		left: $("#save").offset().left + (UAENV['ios'] ?  -200 : -420),
		filter: "alpha(opacity=60)"
		});
	dialog.show();
	dialogp.css({
		width: UAENV['ios'] ? 310 : 360,
		height: 230,
		top: dy + 11,
		left: dialog.offset().left + 11
		});
	dialogp.fadeIn();
}
function showLiveHelp(){
	var url;
	if (_langdict.lang == 'ja'){
		url = "/livehelp_ja";
	} else {
		url = "/livehelp";
	}
	$("<div />").attr("id", "livehelp").addClass("radius").load(url, function(){
		var win=$("#livehelp");
		win.fadeIn();
		$("#livehelp_close").click(function(){
			win.fadeOut(function(){
				win.remove();
			});
		});
	}).appendTo("body");
}
function showDevAPI(){
	var url;
	if (_langdict.lang == 'ja'){
		url = "/devapi_ja";
	} else {
		url = "/devapi";
	}
	$("<div />").attr("id", "devapi").addClass("radius").load(url, function(){
		var win=$("#devapi");
		win.fadeIn();
		$("#devapi_close").click(function(){
			win.fadeOut(function(){
				win.remove();
			});
		});
	}).appendTo("body");
}
function onFollowTool(){
	var checkbox="";
	$(".person").each(function(){
		var p = $(this);
		var pid = p.attr('id');
		var tid = $("#" + pid + " > * > a").text();
		if (tid !=""){
			tid = tid.substring(1);
			checkbox+='<input type="checkbox" id="chk_' + tid + '" name="users" value="' + tid + '" checked="checked"/><label for="chk_' + tid + '">' + tid + '</label><br/>\n';
		}
	});
	$('<div id="follow-tool" class="radius">'
			+'<form id="form-follow" action="/follow" method="POST">'
			+'<h3>' + _langdict.followtool + '</h3>'
			+'<div style="font-size: small;color:#404040;">' + _langdict.followtool_desc + '</div></h3>'
			+'<div id="userlist">' + checkbox + '</div>'
			+'<div ><button id="allselect">' + _langdict.allselect + '</button>'
			+'<button id="follow">' + _langdict.follow + '</button>'
			+'<input type="hidden" name="key" value="' + KEY + '"/>'
			+'&nbsp;&nbsp;&nbsp;&nbsp;<button id="follow-close">' + _langdict.close + '</button></div></form>'
		+'</div>').appendTo("body");

	var win=$("#follow-tool");
	win.fadeIn();
	$("#allselect").click(function(){
		var allChecked = true;
		$("input[type='checkbox']", $("#follow-tool")).each(function(){
			if (!$(this).attr("checked")){
				allChecked = false;
				return false;
			}
		});
		if (allChecked){
			$("input[type='checkbox']", $("#follow-tool")).removeAttr("checked");
		} else {
			$("input[type='checkbox']", $("#follow-tool")).attr("checked", "checked");
		}
		return false;
	});
	$("#follow-close").click(function(){
		win.fadeOut(function(){
			win.remove();
		});
		return false;
	});
	$("#follow").click(function(){
		$("#form-follow").submit();
	});
}
function onMemberlist(){
	var memberlist="";
	$(".person").each(function(){
		var p = $(this);
		var pid = p.attr('id');
		var tid = $("#" + pid + " > * > a").text();
		if (tid !=""){
			memberlist+=tid+"\n";
		} else {
			var name = $("#"+pid+"-img").attr("title");
			memberlist+=name+"\n";
		}
	});

	$("<div />").attr("id", "memberlist_area").addClass("radius").append(
		$("<textarea />").text(memberlist)
	).append(
		$("<div/>").append(
			$("<button/>").text("OK").click(function(){
				var win2=$("#memberlist_area");
				win2.fadeOut(function(){
					win2.remove();
				});
			})
		)
	).appendTo("body");
	var win=$("#memberlist_area");
	win.fadeIn();
}
function onTweet(){
	var msg = $("#msg");
	msg.hide();
	location.href="/tweet-confirm?key="+KEY;

}
/*
 * rotate 180
 */
function onRotate180(){
	var rotateFunc = function(elm, main_width, main_height){
		var pos = elm.position();
		var w = elm.width();
		var h = elm.height();
		var npos = {};
		npos.left = main_width - pos.left  - w
		npos.top = main_height - pos.top  - h
		npos.left = npos.left - (npos.left % 10);
		npos.top = npos.top - (npos.top % 10);
		elm.css(npos);
	};
	var main_width = $("#main").width();
	var main_height = $("#main").height();
	$(".person,.labelbox").each(function(){
		rotateFunc($(this), main_width, main_height);
	});
}
function onEntry(){

	var msg = $("#msg");
	msg.hide();
	var cmenu = $("#cmenu");
	cmenu.hide();
	$("#main").append(cmenu);

	var data = {tid:[], nm:[], x:[], y:[], img:[], num_id:[], absence:[], pid:[]};
	$(".person").each(function(){
		var p = $(this);
		var pid = p.attr('id');
		var tid = $("#" + pid + " > * > a").text().replace(/^@/, '');
		var name = $("#"+pid+"-img").attr("title");
		var profile_image = $("#"+pid+"-img").attr("src");
		var num_id = $("#"+pid+"-numid").val();
		var absence= p.hasClass("absence_person") ? 1 : 0;
		profile_image = profile_image.replace(/^http:\/\/s3\.amazonaws\.com\/twitter_production\/profile_images/, "@S3");
		var pos = p.position();
		data['pid'].push(pid);
		data['tid'].push(tid);
		data['nm'].push(name);
		data['x'].push(parseInt(pos.left));
		data['y'].push(parseInt(pos.top));
		data['img'].push(profile_image);
		data['num_id'].push(num_id);
		data['absence'].push(absence);
	});
	$(".labelbox").each(function(){
		var label = $(this);
		var pid = label.attr('id');
		var pos = label.position();
		data['pid'].push(pid);
		data['tid'].push("[label]");
		data['nm'].push(label.text());
		data['x'].push(parseInt(pos.left));
		data['y'].push(parseInt(pos.top));
		data['img'].push("");
		data['num_id'].push("");
		data['absence'].push(0);
	});
	data.title = $("#txtTitle").val().replace(/^\s+|\s+$/g, "");
	data.comment = $("#txtComment").val();
	data.widemode = $("#widemode").attr("checked") ? "1" : "0";
	if ($("#save-owner").attr("checked")){
		data.savemode= "o";
		data.sn_id = $("#sn_id").val();
	} else {
		data.savemode= "a";
	}
	//validation
	if (data.title == ""){
		msg.text(_langdict.settitle);
		msg.slideDown();
		return;
	} else if (data.tid.length == 0){
		msg.text(_langdict.noitems);
		msg.slideDown();
		return;
	}
	$("#entry").hide();
	$("#saving").show();
	$.ajax({
		type: "POST",
		url: "/save",
		data: data,
		success: function(data){
			var ary = data.split(" ");
			if (ary[0] == "ERROR"){
				if (ary[1] == "DUP"){
					msg.text(_langdict.dos);
				} else if (ary[1] == "OWNER"){
					msg.text("OWNER ERROR");
				} else {
					msg.text(_langdict.failtosave);
				}
				$("#saving").hide();
				$("#entry").show();
				onCancel();
			} else if (ary[0] == "OAUTH"){
				location.href = ary[1];
				return;
			} else {
				var showUrlMsg = function(pary){
					var purl = pary[1]
					msg.html(_langdict.saved1 + '<a href="'+purl + '" target="_blank">' + purl + '</a>' + _langdict.saved2 + '<br>' +
						_langdict.saved3);
					onCancel();
					if (pary[2]=="live"){
						//live edit start
						initChannel(true, pary[3]);
						$("#live_edit").val("1");
						$("#owner_id").val(pary[4]);
						$("#owner_sn").val(pary[5]);
						$("#sn_id").val(pary[6]);
					}
				};
				if (ary[1].indexOf("http://") == 0){
					//更新時など、urlで返された場合はすぐさま表示
					showUrlMsg(ary);
				} else {
					//keyで返された場合は、shorturlを再取得
					$.ajax({
						type: "GET",
						url: "/getshorturl",
						data: {"key": ary[1]},
						success: function(data){
							ary[1] = data;
							showUrlMsg(ary);
							msg.slideDown();
						}
					});
					return
				}
			}
			msg.slideDown();
		}
	});

}
function updateMove(evt, ui){
	var p = ui.helper;
	var pid = p.attr('id');
	var tid = $("#" + pid + " > * > a").text().replace(/^@/, '');
	var num_id = $("#"+pid+"-numid").val();
	var pos = p.position();
	var data = {};
	data['act'] = 'move';
	data['pid'] = pid;
	data['tid'] = tid;
	data['x'] = parseInt(pos.left);
	data['y'] = parseInt(pos.top);
	data['num_id'] = num_id;
	if ($("#live_edit").val() == "1"){
		documentUpdate(data);
	}
}
function saveCallback(shorturl){
	var msg = $("#msg");
	msg.html(_langdict.saved1 + 
			'<a href="'+shorturl + '" target="_blank">' + shorturl + '</a>' 
			+ _langdict.saved2 + '<br>' + _langdict.saved3);
	msg.slideDown();
}
function initChannel(live_edit, channel_id){
	_channel = new goog.appengine.Channel(channel_id);
	_channel_id = channel_id;
	var socket = _channel.open()
	socket.onmessage = broadcastHandler;
	_channel_heartbeat_id = setInterval(function(){
		$.ajax({ 
			type: "POST",
			url: "/broadcast",
			data: {
				"channel_id": _channel_id,
				"key": $("#sn_id").val(),
				"act": "heartbeat"
			}
		});
	}, 30 * 1000);
	if (live_edit){
		$(".haspid").bind("dragstop", updateMove);
		if (UAENV['ios']){
			$(".haspid").each(function(){
				var item=$(this);
				item.context.addEventListener("touchend", function(e){
					updateMove(e, {helper: item});
				});
			});
		}
	}
}
function documentUpdate(obj){
	$.ajax({ 
		type: "POST",
		url: "/broadcast",
		data: {
			"channel_id": _channel_id,
			"key": $("#sn_id").val(),
			"act": "broadcast",
			"data": JSON.stringify(obj)
		},
		success: function(res){
			var ary = res.split(" ")
			if (res[0] == "NG"){
				if (res[1] == "SESSION"){
					alert("session expired");
					window.reload();
				}
			}
		}
	});
}
function broadcastHandler(res){
	var json = jQuery.parseJSON(res.data);
	if (json.act == "move"){
		$("#"+json.pid).animate({
			"left": json.x,
			"top": json.y
		}, "fast");
	} else if (json.act == "twitteradd" || json.act == "nickadd" || json.act == "labeladd"){
		addItem(true, json.tid, json.name, json.x, json.y, 
				json.img, json.num_id, false, false, json.pid);
	} else if (json.act == "clear"){
		$(".haspid").fadeOut("fast", function(){
			$(".haspid").remove();
		});
	} else if (json.act == "changewide"){
		if (json.widemode == "1"){
			$("#widemode").attr("checked", "checked");
			changeWide(true);
		} else {
			$("#widemode").removeAttr("checked");
			changeWide(false);
		}
	} else if (json.act == "delete"){
		$("#"+json.pid).fadeOut("fast", function(){
			$("#"+json.pid).remove();
		});
	} else if (json.act == "absence"){
		var person = $("#"+json.pid);
		if (json.absence){
			person.addClass("absence_person");
		} else{
			person.removeClass("absence_person");
		}
		person.animate({
			"left": json.x,
			"top": json.y
		}, "fast");
	} else if (json.act == "noediting"){
		clearInterval(_channel_heartbeat_id);
		$("#liveviewing").fadeOut("slow", function(){
			$(this).text(_langdict.livefinished).css("background-color", "#ffd6d6").fadeIn("slow");
		});
	}


}
function changeWide(wide){
	if(wide){
		$("body,#main,#side").addClass("wide");
	} else {
		$("body,#main,#side").removeClass("wide");
		var mw = $("#main").innerWidth();
		var mh = $("#main").innerHeight();
		$(".haspid").each(function(){
			var p=$(this);
			var pos = p.position();
			if (mw < pos.left + p.width()){
				var w = mw - p.width();
				w = w - (w % 10);
				p.css("left", w);
			}
			if (mh < pos.top + p.height()){
				var h = Math.round(mh - p.height());
				h = h - (h % 10);
				p.css("top", h);
			}
		});
	}
}
function onWideToggle(ev){
	var checked=$("#widemode").get(0).checked;
		if (!checked){
			if (!confirm(_langdict.widecancelok)){
				$("#widemode").attr("checked", "checked");
				return;
			}
		}
	changeWide($("#widemode").attr("checked"));
	var data={act: 'changewide', widemode: $("#widemode").attr("checked") ? "1" : "0"};
	if ($("#live_edit").val() == "1"){
		documentUpdate(data);
	}
}

