// wnditm_basic.js

//------------------------------------------------------------
function wnditem_elem_add(elem, itm, wnd)
	{
	if (itm.hide) elem.hide();
	if (itm.klass != undefined) elem.addClass(itm.klass);
	if (itm.id != undefined) elem.attr("id", itm.id);
	if (itm.name != undefined) elem.attr("name", itm.name);
	if (itm.value != undefined) elem.attr("value", itm.value);
	if (itm.click != undefined) elem.bind("click", itm.click);
	if (itm.dblclick != undefined) elem.bind("dblclick", itm.dblclick);
	if (itm.mousedown != undefined) elem.bind("mousedown", itm.mousedown);
	if (itm.mouseup) elem.bind("mouseup", itm.mouseup);
	if (itm.keyup) elem.bind("keyup", itm.keyup);
	if (itm.popup) elem.attr("popup", menu_registerPopup(itm.popup));
	if (itm.childpopup != undefined) elem.attr("childpopup", menu_registerPopup(itm.childpopup));

	if (itm.popupMe != undefined)
		{
		elem.attr("popup", menu_registerPopup(itm.popupMe))
		.bind("contextmenu", menu_contextPopup);
		}
	else if (itm.popupPar != undefined)
		{
		if (!wnd.attr("childpopup"))
			{
			wnd.attr("childpopup", menu_registerPopup(itm.popupPar));
			}
		elem.bind("contextmenu", menu_contextPopupPar);
		}
//	else elem.bind("contextmenu", function(){return false;});
	if (itm.opacity != undefined) elem.css("opacity", itm.opacity);
	if (itm.zIndex != undefined) elem.css("zIndex", itm.zIndex);
	if (itm.rect)
		{
		elem.css("position","absolute");
		var r = new Rect().copyFrom(itm.rect);
		r.setElem(elem);
		delete r;
		}
	if (itm.top) elem.css("top",itm.top);
	if (itm.left) elem.css("left",itm.left);
	if (itm.bottom) elem.css("bottom",itm.bottom);
	if (itm.right) elem.css("right",itm.right);
	if (itm.width) elem.css("width",itm.width);
	if (itm.height) elem.css("height",itm.height);

	if (itm.valid != undefined) 
		{
		elem.addClass("valid")
		.attr("valid", itm.valid);
		}
	var par = false;
	if (itm.parID) par = $("#"+itm.parID)
	else if (itm.parClass) par = $(wnd.find("."+itm.parClass));
	if (par) elem.appendTo(par);
	else elem.appendTo(wnd);
	if (itm.getValue) elem.attr("value", itm.getValue())
	if (itm.focus) elem.focus().select();

	elem.focus(function (){$(this).addClass("focus");})
		.blur(function (){$(this).removeClass("focus");});
		
	if (itm.drag) elem.draggable(itm.drag);
	if (itm.resize) elem.resizable(itm.resize);
	return elem;
	}

//------------------------------------------------------------
function wnditm_div_add(itm, wnd)
	{
	var div = wnditem_elem_add($("<div></div>"), itm, wnd);
	if (itm.text) div.html(itm.text);
	if (itm.background) div.css({
		background: itm.background
	});
	return div;
	}
	
//------------------------------------------------------------
function wnditm_img_add(itm, wnd)
	{
	var img = wnditem_elem_add($("<img/>"), itm, wnd);
	if (itm.src)
		{
		if (itm.imgDim) 
			{
			if (itm.imgPos) var imgPos = itm.imgPos;
			else var imgPos = {};
			if (itm.destPos) var destPos = itm.destPos;
			else var destPos = {top:0,left:0};
			image_fix({img: img,imgDim: itm.imgDim,
						src: itm.src, 
						parElem: wnd,
						imgPos:imgPos,
						destPos:destPos
						});
				}
		else image_fix({img: img, src: itm.src});
		}
	if (itm.imgDim)
		{
		img.attr(
			{
			h: itm.imgDim.height,
			w: itm.imgDim.width
			})
		}
	return img;
	}
//------------------------------------------------------------
function wnditm_textarea_add(itm, wnd)
	{
	var teClass = itm.klass;
	itm.klass += "Box";
	if (itm.id)
		{
		var oldID = itm.id;
		itm.id += "x";
		}
	var box = wnditem_elem_add($("<div></div>"), itm, wnd);
	if (oldID) itm.id = oldID;
	itm.klass = teClass;
	var oldRect = false;
	if (itm.rect) 
		{
		oldRect = itm.rect;
		var border = 0;
		if (itm.border) border = itm.border;
		var r = new Rect()
		.copyFrom(oldRect)
		.move(0,0)
		.inset(border,border)
		.copyTo(itm.rect);
		delete r;
		}
	var parID, parClass;
	if (itm.parID) parID = itm.parID;
	else if (itm.parClass) parClass = itm.parClass;
	itm.parID = undefined;
	itm.parClass = undefined;
	var ta = wnditem_elem_add($("<textarea />"), itm, box);
	itm.parID = parID;
	itm.parClass = parClass;
	if (oldRect) itm.rect = oldRect;
	if (itm.id) ta.attr("id",itm.id);
	if (itm.keyfunc) ta.bind("keyup", itm.keyfunc);
	if (itm.SESS) ta.attr({SESS:itm.SESS, value:_SESS[itm.SESS]});
	return ta;
	}
//------------------------------------------------------------
function wnditm_inputText_add(itm, wnd)
	{
	var elem = wnditem_elem_add($("<input type='text' />"), itm, wnd);
	if (itm.SESS) elem.attr({SESS:itm.SESS, value:_SESS[itm.SESS]});
	return elem;
	}
//------------------------------------------------------------
function wnditm_inputPswd_add(itm, wnd)
	{
	var elem = wnditem_elem_add($("<input type='password' />"), itm, wnd);
	if (itm.SESS) elem.attr({SESS:itm.SESS});
	return elem;
	}
//------------------------------------------------------------
function wnditm_inputRadio_add(itm, wnd)
	{
	var elem = wnditem_elem_add($("<input type='radio' />"), itm, wnd);
	if (itm.SESS) elem.attr({SESS:itm.SESS});
	return elem;
	}
//------------------------------------------------------------
function wnditm_inputCheckbox_add(itm, wnd)
	{
	var elem = wnditem_elem_add($("<input type='checkbox' />"), itm, wnd);
	if (itm.SESS) 
		{
		//elem.attr({SESS: itm.SESS});
		wnd.find(".autoOpenChkBox:checked").attr("checked",_SESS[itm.SESS]);
		}
	return elem;
/*
		if (info.klass=="wnd_bloglist")
			{
			data.openBlogList = (wnd.find(".autoOpenChkBox:checked") !== null);
			}
	data.openBlogList = false;
	
*/
	}
//------------------------------------------------------------
function wnditm_inputButton_add(itm, wnd)
	{
	return wnditem_elem_add($("<input type='button' />"), itm, wnd);
	}
//------------------------------------------------------------
function wnditm_select_add(itm, wnd)
	{
	var sel;
	if (itm.php) sel = wnditm_selectPHP_add(itm, wnd);
	else
		{
		sel = $("<select></select>");
		wnditem_elem_add(sel, itm, wnd);
		var opts = "";
		var total;
		if (itm.getTotal) total = itm.getTotal();
		else if (itm.options) total = itm.options.length;
		else total = 0;
		if (total >0)
			{
			for (var idx = 0; idx < total; ++idx)
				{
				var opt;
				if (itm.getOption) opt = itm.getOption(idx);
				else opt = itm.options[idx];
				var val;
				if (!opt.value) opt.value = opt.label;
				opts += "<option value="+opt.value+">"+opt.label+"</option>";
				}
			$(opts).appendTo(sel);
			}
		if (itm.selFunc) sel.bind("change", itm.selFunc);
		}
	return sel;
	}

//------------------------------------------------------------
function wnditm_selectPHP_add(itm, wnd)
	{
	var sel = wnditem_elem_add($("<select/>"), itm, wnd);
	var data = new Object();
	data.command = itm.cmd;
	data.user_id = getuserid();
	if (itm.setPHPData) itm.setPHPData(data, wnd);
	if (itm.dir) data.dir = itm.dir;
	var dataString = $.toJSON(data);
	delete data;
	$.post(itm.php, {data: dataString}, function(res){
		var obj = $.evalJSON(res);
		var recs = false;
		if (obj.recs) recs = $.evalJSON(obj.recs);
		if (itm.selFunc) sel.bind("change", itm.selFunc);
		var total = 0;
		
		if (recs) 
			{
			var dir = obj.dir;
			total = recs.length;
			if (itm.entry1)
				{
				$("<option value='x'>" + itm.entry1 + "</option>").appendTo(sel);	
				}
			for (var idx = 0; idx < total; ++idx) 
				{
				var rec = recs[idx];
				if (rec["title"]) s = rec["title"];
				else s = rec["timestamp"];
				var opt = $("<option value=" + idx + ">" + s + "</option>").appendTo(sel);
				if (rec["folder_id"]) opt.attr("folder_id", rec["folder_id"]);
				}
			}
		if (itm.init) itm.init(wnd, sel);
		wnd.trigger("done");
		if (itm.done) itm.done(sel);
	});
	return sel;
	}