// wnditm_canvas.js

var _canvas_dragging = false;
var _canvas_objBorder = 6;

//---------------------------------------------------------------------
var canvasObj_popup_itms = 
	[
	{label:"Link...", 	func:canvas_objSetLink},
	{label:"Delete", 	func:canvas_objDel}
	];
//---------------------------------------------------------------------
var canvasObj_popup = 
	{
	width: 137,
	itms:canvasObj_popup_itms
	};
//---------------------------------------------------------------------
var canvasBk_popup_itms = 
	[
//	{label:"Set Background...", 	func:menu_openWnd, wnd:_wnd_desktops}
	{label:"Set Background...", 	func:canvas_setBkgnd}
	];
//---------------------------------------------------------------------
var canvasBk_popup = 
	{
	width: 137,
	itms:canvasBk_popup_itms
	};

//------------------------------------------------------------
function wnditm_canvas_add(itm, wnd)
	{
	var canvas = wnditm_div_add(itm, wnd)
	.addClass("canvas")
	.bind("mouseup", canvas_mouseup)
	.bind("mousedown", canvas_mousedown)
	.bind("contextmenu", menu_contextPopup)
	.attr({
		popup: menu_registerPopup(canvasBk_popup),
		childpopup: menu_registerPopup(canvasObj_popup)
	});
	if (itm.select) canvas.bind("select", {can:canvas}, itm.select);
	if (itm.deselect) canvas.bind("deselect", {can:canvas}, itm.deselect);
	}

//------------------------------------------------------------
function wnditm_canvas_resize(wnd)
	{
	}
//------------------------------------------------------------
function wnditm_canvas_addPhoto(canvas, img, pos, photo_id)
	{
	var box = wnditm_div_add({klass: "canvasPhotoBox canvasObj"}, canvas)
		.css({top:pos.top, left:pos.left, height:img.height(), width:img.width()});
	wnditm_img_add({klass:"canvasPhoto", src:img.attr("src")}, box)
		.attr({
			h: img.attr("h"),
			w: img.attr("w"),
			photo_id: photo_id
		});

	box.draggable({start:canvasObj_dragStart,stop:canvasObj_dragStop,
				stack:{group: ".canvasObj",min: 50},distance: 2})
	.bind("mousedown", canvas_photo_mousedown)
	.bind("contextmenu", menu_contextPopupPar);
//	.trigger("mousedown");
	}
//------------------------------------------------------------
function canvas_photo_resizeStart(event, ui)
	{
	_canvas_dragging = true;
	}
//------------------------------------------------------------
function canvas_photo_resize(event, ui)
	{
	var r = new Rect().getElem($(this)).move(0,0)
		.inset(_canvas_objBorder)
		.setElem($(this).children(".canvasPhoto"));
	delete r;
	}
//------------------------------------------------------------
function canvas_photo_resizeStop()
	{
	var box = $(this);
	var img = box.children(".canvasPhoto");
	box.inset(_canvas_objBorder,_canvas_objBorder);
	image_fix({
		subklass: "photo",
		img: img,
		parElem: img.parent(),
		imgDim: {
			height: img.attr("h"),
			width: img.attr("w")
		}
	});
	var boxRect = new Rect().getElem(box);
	var imgRect = new Rect().getElem(img);
	boxRect.width = imgRect.width + (2*_canvas_objBorder);
	boxRect.height = imgRect.height + (2*_canvas_objBorder);
	boxRect.setElem(box);
	imgRect.move(_canvas_objBorder,_canvas_objBorder).setElem(img);
	delete boxRect, imgRect;
	_canvas_dragging = false;
	}

//------------------------------------------------------------
function canvas_mouseup(e)
	{
	}
//------------------------------------------------------------
function canvas_mousedown(e){
	canvas_deselect(getcanvas($(this)));
}

//------------------------------------------------------------
function canvas_text_mouseup(event){
	event.stopPropagation();
}

//------------------------------------------------------------
function canvas_text_resizeStart(event, ui)
	{
	_canvas_dragging = true;
	var te = $(this).children(".canvas_text");
	te.attr("deltaH", $(this).height()-te.height());
	te.attr("deltaW", $(this).width()-te.width());
	}
//------------------------------------------------------------
function canvas_text_resize(event, ui)
	{
	var te = $(this).children(".canvas_text");
	te.css({
		height: $(this).height() - te.attr("deltaH"),
		width: $(this).width() - te.attr("deltaW")
	});
	}
//------------------------------------------------------------
function canvas_text_resizeStop(event, ui)
	{
	_canvas_dragging = false;
	}

//------------------------------------------------------------
function canvasObj_dragStart(event, ui)
	{
	_canvas_dragging = true;
	}
//------------------------------------------------------------
function canvasObj_dragStop(event, ui)
	{
	_canvas_dragging = false;
	}
//------------------------------------------------------------
function wnditm_canvas_textAdd(wnd)
	{
	var canvas = wnd.find(".canvas");
	var te = wnditm_textarea_add({
		klass: "x",
		rect: {
			top: 70,
			left: 64,
			height: 130,
			width: 225
		}
	}, canvas).addClass("canvas_text");
	te.parent().addClass("canvasObj canvas_textBox")
		.draggable({
		start: canvasObj_dragStart,
		stop: canvasObj_dragStop,
		stack: {
			group: ".canvasObj",
			min: 50
		},
		distance: 2
		})
	.bind("contextmenu", menu_contextPopupPar)
	.bind("mousedown", canvas_text_mousedown);
	te.bind("mousedown", canvas_te_mousedown)
	.css({fontFamily:wnd.attr("font"), fontSize:wnd.attr("fsize")})
	.trigger("mousedown");
	}

//------------------------------------------------------------
function canvas_deslectAll(wnd)
	{
	wnd.find(".canvas").children(".canvasObj").resizable("destroy");
	}
//------------------------------------------------------------
function canvas_photo_mousedown(e)
	{
	if (canvas_select($(this)))
		{
		$(this).resizable({
			start: canvas_photo_resizeStart,
			resize: canvas_photo_resize,
			stop: canvas_photo_resizeStop,
			minHeight:20,minWidth:20,
			handles:"all"
		});
		}
	e.stopPropagation();
	}
//------------------------------------------------------------
function canvas_text_mousedown(e)
	{
	if (canvas_select($(this)))
		{
		$(this).resizable({
			start: canvas_text_resizeStart,
			resize: canvas_text_resize,
			stop: canvas_text_resizeStop,
			minHeight:20,minWidth:20,
			handles:"all"
		});
		}
	e.stopPropagation();
	}
	
//------------------------------------------------------------
function canvas_te_mousedown(e)
	{
	var box = $(this).parent();
	if (canvas_select(box))
		{
		box.resizable({
			start: canvas_text_resizeStart,
			resize: canvas_text_resize,
			stop: canvas_text_resizeStop
		});
		}
	e.stopPropagation();
	}
//------------------------------------------------------------
function getcanvas(obj)
	{
	return obj.wnd().find(".canvas");
	}
//------------------------------------------------------------
function canvas_select(obj)
	{
		
	if (!obj.hasClass("csel"))
		{
		canvas_deselect(getcanvas(obj));
		obj.addClass("csel");
		obj.inset(-_canvas_objBorder);
		obj.children().move(_canvas_objBorder,_canvas_objBorder);
		var can = getcanvas(obj);
		can.trigger("select");
		obj.css("border","1px dashed #111177");
		return true;
		}
	return false;
	}

//------------------------------------------------------------
function canvas_deselect(can)
	{
	var selObjs = can.children(".csel");
	if (selObjs.length>0)
		{
		selObjs.resizable("destroy").removeAttr("csel");
		selObjs.inset(_canvas_objBorder);
		selObjs.children().move(0,0);	
		can.trigger("deselect");
		selObjs.css("border","0");
		selObjs.removeClass("csel");
		}
	}
//------------------------------------------------------------
function wnditm_canvas_getSel(wnd)
	{
	return wnd.find(".canvas").children(".csel");
	}	
//------------------------------------------------------------
function wnditm_canvas_getTextSel(wnd)
	{
	var sel = wnditm_canvas_getSel(wnd);
	if (sel && sel.length==1)
		{
		if (sel.hasClass("canvas_textBox")) return sel.children();
		}
	}	
	
//------------------------------------------------------------
function wnditm_canvas_font(wnd, font)
	{
	wnd.attr("font",font);
	var obj = wnditm_canvas_getTextSel(wnd);
	if (obj) obj.css("fontFamily", font);
	}

//------------------------------------------------------------
function wnditm_canvas_fontSize(wnd, fsize)
	{
	wnd.attr("fsize",fsize);
	var obj = wnditm_canvas_getTextSel(wnd);
	if (obj) obj.css("fontSize", parseInt(fsize));
	}
//------------------------------------------------------------
function wnditm_canvas_fontWt(wnd, fWt)
	{
	wnd.attr("fWt",fWt);
	var obj = wnditm_canvas_getTextSel(wnd);
	if (obj) obj.css("fontWeight", fWt);
	}
//------------------------------------------------------------
function wnditm_canvas_fontStyle(wnd, fstyle)
	{
	wnd.attr("fstyle",fstyle);
	var obj = wnditm_canvas_getTextSel(wnd);
	if (obj) obj.css("fontSize", fstyle);
	}
//------------------------------------------------------------
function canvas_getHTML(canvas)
	{
	var html = "";
	canvas.children().each(function()
		{
		var obj = $(this);
		var coords = "position:absolute; top:"+obj.css("top")+"; left:"+obj.css("left")
					+"; width:"+obj.width()+"px; height:"+obj.height()+"px";
					
		if (obj.hasClass("canvasPhotoBox"))
			{
			var img = obj.children(".canvasPhoto");
			var src = _path_root+"/"+trimQ(img.attr("src"));
			html += "<img src='"+src+"'; style=\""+coords+"\" />";
			}
		else if (obj.hasClass("canvas_textBox"))
			{
			var te = obj.children(".canvas_text");
			html += "<div style=\"font-family:"+te.css("fontFamily")
					+"; font-size:"+te.css("fontSize")+"; "
					+coords+"\" >"+te.attr("value")+"</div>";
		}
	});
	return "<div>"+html+"</div>";
	}
//------------------------------------------------------------
function canvas_GlobalToLocal(canvas, pos)
	{
	var wnd = canvas.wnd();
	var wndBox = wnd.parent();
	pos.top -= parseInt(wndBox.css("top"))+parseInt(canvas.css("top"));
	pos.left -= parseInt(wndBox.css("left"))+parseInt(canvas.css("left"));
	}

//------------------------------------------------------------
function canvas_objSetLink()
	{
		//menu_getPopupTarget()
	}
//------------------------------------------------------------
function canvas_objDel()
	{
		//menu_getPopupTarget()
	}
//------------------------------------------------------------
function canvas_setBkgnd()
	{
	wnd_open(_wnd_desktops);
	menu_closepopup();
	}

