
var _documentRefer	= '';
var _baseUrl		= '';

/**
 * Open dialog
 */
function jmOpenDialog(id) {
	$('#'+id).dialog('open');
}

/**
 * 重設表單
 */
function jmReset(id) {
	$("#"+id).get(0).reset();
}

/**
 *  將項目加入列表中
 *
 * @param object  list       Select Object 
 * @param integer item_value Value of item
 * @param string  item_name  Name of item
 */
function _jmListItemAdd(list, op) {
	
	if (op.value == '') return;

	if (list.options.length == 1 && list.options[0].value == '') {
		list.options.length = 0;		
	}
	
	var oSelected = null;
	if (list.selectedIndex >= 0) {
		oSelected = list.options[list.selectedIndex];
	}
	
	var oOption = document.createElement("OPTION");	
	oOption.text = op.text;
	oOption.value = op.value;
	try {
		list.add(oOption, oSelected);
	} catch (e) {
		list.add(oOption, list.selectedIndex);
	}
}
/**
 * 選取或移除權限
 *
 * @param object src  Source SELECT object
 * @param object dest Dest SELECT object
 * @param array  perm All perms
 */
function jmItemMove(src, dest) {
	var list_src  = $('#'+src).get(0);	
	var list_dest = $('#'+dest).get(0);	
	for(var i=0; i<list_src.options.length; i++) {
		if (list_src.options[i].selected) {
			_jmListItemAdd(list_dest, list_src.options[i]);
		}
	}
	for(var i=list_src.options.length-1; i>=0; i--) {
		if (list_src.options[i].selected) {			
			list_src.remove(list_src.options[i].index);
		}
	}
}
/**
 * 選取或移除全部權限
 *
 * @param object src  Source SELECT object
 * @param object dest Dest SELECT object
 * @param array  perm All perms
 */
function jmItemAll(src, dest) {
	var list_src  = $('#'+src).get(0);
	var list_dest = $('#'+dest).get(0);
	while(list_src.options.length > 0) {
		_jmListItemAdd(list_dest, list_src.options[0]);
		list_src.remove(0);
	}
	list_src.length = 0;
}
/**
 * 將選取項目上移
 *
 * @param string id
 */
function jmItemUp(id) {
	var select = $('#'+id).get(0);
	var idx = select.selectedIndex;	
	if (idx == 0) return;
	var selOption = select.options[idx];
	var oOption = document.createElement("OPTION");	
	oOption.text = selOption.text;
	oOption.value = selOption.value;
	var preOption = select.options[idx-1];
	select.remove(idx);
	try {
		select.add(oOption, preOption);
	} catch (e) {
		select.add(oOption, idx-1);
	}
	oOption.selected = true;	
}
/**
 * 將選取項目下移
 *
 * @param string id
 */
function jmItemDown(id) {
	var select = $('#'+id).get(0);
	var idx = select.selectedIndex;
	if (idx == select.options.length -1) return;
	var selOption = select.options[idx];
	var oOption = document.createElement("OPTION");	
	oOption.text = selOption.text;
	oOption.value = selOption.value;
	var beforeOption = null;
	if (idx + 1 < select.options.length - 1) {	
		beforeOption = select.options[idx+2];		
	}
	select.remove(idx);
	try {
		select.add(oOption, beforeOption);
	} catch (e) {
		select.add(oOption, idx+1);
	}
	oOption.selected = true;
}

/**
 * 儲存列表顯示設定
 */
function jmDisplayConfigSave() {
	var obj_select = $('#disp_selected').get(0);
	if (obj_select.options.length == 0) {
		alert(_msgs['noFieldSelected']);		
		return false;
	}
	sel_fields = new Array(obj_select.options.length);
	for(i=0; i<obj_select.length; i++) {
		sel_fields[i] = obj_select.options.item(i).value;
	}	
	obj_fields = $('#disp_selected_fields').get(0);
	obj_fields.value = sel_fields.join(',');	
	var form = $('#frmDisplayConfig').get(0);
	form.submit();
}

/**
 * 非同步儲存顯示列表
 */
function jmDisplayConfigSaveAjax(controller, callback) {

	var obj_select = $('#disp_selected').get(0);
	if (obj_select.options.length == 0) {
		alert(_msgs['noFieldSelected']);		
		return false;
	}
	sel_fields = new Array(obj_select.options.length);
	for(i=0; i<obj_select.length; i++) {
		sel_fields[i] = obj_select.options.item(i).value;
	}	
	var obj_fields = $('#disp_selected_fields').get(0);
	selectedFields = sel_fields.join(',');
	
	var rowCount = $('#rowCount').val();
	if (isNaN(rowCount)) {
		alert(_msgs['rowCountFormatError']);
		return false;
	}	
	
	if (!rowCount) {
		alert(_msgs['rowCountEmpty']);
		return false;
	}
		
	$.post(
		_baseUrl+'/workbench/'+controller+'/view.config.save.ajax', 
		{selected_fields: selectedFields, rowCount: rowCount}, 
		function (msg, status) {
			if (msg == 'OK' && status == 'success') {
				alert(_msgs['saved']);		
				$('#dlgListConfig').dialog('close');
				if (jQuery.isFunction(callback)) callback();
			} else {
				alert(msg);
			}			
		},
		"text");
};

function jmDisplayConfigLoad(controller, callbackReload, target) {
	
	form = $('#frmDisplayConfig').get(0);
	if (form.action == _baseUrl+'/workbench/'+controller+'/view.config.save') {
		return;
	}
	
	if (target) {
		$('#trashHef').get(0).target = target;
	}
	
	$.getJSON(
		_baseUrl+'/workbench/'+controller+'/view.config.json',
		function (data) {	
			form.action = _baseUrl+'/workbench/'+controller+'/view.config.save';
			form.rowCount.value = data['rowCount'];
			
			var objSelected = $('#disp_selected').get(0);
			objSelected.options.length = 0;
			for(i=0; i<data['selected'].length; i++) {
				var oOption = document.createElement("OPTION");	
				oOption.text  = data['selected'][i]['text'];
				oOption.value = data['selected'][i]['value'];
				objSelected.options.add(oOption);
			}
			
			var objUnSelected = $('#disp_unselected').get(0);
			objUnSelected.options.length = 0;
			for(i=0; i<data['unselected'].length; i++) {
				var oOption = document.createElement("OPTION");	
				oOption.text  = data['unselected'][i]['text'];
				oOption.value = data['unselected'][i]['value'];
				objUnSelected.options.add(oOption);
			}
			
			$('#btnViewConfigSave').get(0).onclick = function () {				
				jmDisplayConfigSaveAjax(controller, callbackReload);		
			};
		}
	);	
}

/**
 * 調整IFrame的高度
 */

function jmResizeIFrame(id, offset) {	
	/**
	var fam = $("#"+id);	
	if (!fam.get(0)) return 0;	
	if (!h) {
		var innerDoc = (fam.get(0).contentDocument) ? fam.get(0).contentDocument : fam.get(0).contentWindow.document;
		h = innerDoc.body.scrollHeight;
	}
	if (h) fam.height(h);	
	return h;
	**/
	var helpFrame = $("#"+id);
	var innerDoc = (helpFrame.get(0).contentDocument) ? helpFrame.get(0).contentDocument : helpFrame.get(0).contentWindow.document;
	if (helpFrame.height() < innerDoc.body.scrollHeight) {
		helpFrame.height(innerDoc.body.scrollHeight+offset);
	}
}

/*
function jmResizeIFrame(id, offset) {	
		
	var f = $("#"+id),
		h = f.height(),
		i = $(document.getElementById(id).contentWindow.document.body),
		it = i.html();

	
	i.html('<div id="jmBody">'+it+'</div>');

	var ih = i.children().eq(0).height();
			
	if (h < ih) {
		f.css('height', (ih+offset)+'px');
	}
	
}
*/


/**
 * 勾選/取消勾選全部的Checkbox
 */
function jmCheckAll(name, checked) {
	$('input[name="'+name+'"]').each(
		function() { 
			this.checked = checked;
		}
	);
}
/**
 * 勾選/取消勾選Checkbox
 */
function jmChecked(ctrl, sn, checked) {
	
	$.get(_baseUrl+'/workbench/'+ctrl+'/checked/checked/'+(checked ? 1 : 0)+'/sn/'+sn, function (count) {
		$('#pgcSelectedCount').text(count);
	});
}
/**
 * 勾選/取消勾選頁面上的Checkbox
 */
function jmPageChecked(name, ctrl, data, checked) {
	$.get(_baseUrl+'/workbench/'+ctrl+'/checked/checked/'+(checked ? 1 : 0)+'/sn/'+data+'/page/1', function (count) {
		$('#pgcSelectedCount').text(count);
	});
	jmCheckAll(name, checked);
}

/**
 * 卷動畫面
 */
function jmAnimate(id, m, d){
	attr = d + '=' + m + 'px';
	$('#'+id).animate({scrollLeft: attr}, 500);
}

/**
 * 廣告點閱記錄
 */
 function jmAdClick(sn) {
 	$.get(_baseUrl+'/ad.log/click/sn/'+sn);
 }
 
 
 /**
  * 顯示忙碌中的圖示
  */
 function jmBusyDialog(show) {
	if (show) {	
		h = document.body.scrollHeight;
		w = document.body.scrollWidth;
		if (!$('#dlgBusy').get(0)) {
			$(document).append(
				'<div id="dlgBusy" style="display:none; vertical-align:middle">'+
				'<div id="dlgBusyImage" style="z-index:101">'+
				'<img src="'+_documentRefer+'/images/workbench/busy.gif">'+
				'</div>'+
				'</div>'
			);
		}
		$('#dlgBusy').css({
			width: screen.width,
			height: screen.height,
			position: 'absolute',
			display: 'block',
			zIndex: '100',
			top: '0',
			left: '0',
			overflow: 'hidden', 
			opacity: '.30',
			backgroundColor:'#000000',
			filter: 'alpha(opacity=30)'}
		);
		h = $(window).height();
		w = $(window).width();
		$('#dlgBusyImage').css({					
			position: 'absolute',
			top: h / 2 - 48,	
			left: w / 2 - 48
		});
	} else {		
		$('#dlgBusy').css('display', 'none');
	}
}
/**
 * 全選或全不選
 */
function jmSelectAll(ctrl, target, checked) {
	if (target.jmBusyDialog) target.jmBusyDialog(true);
	target.location.href=_baseUrl+'/workbench/'+ctrl+'/list/check_all/'+(checked ? 1 : 0);
}
/**
 * 丟到垃圾桶
 */
function jmTrash(ctrl, target, extMsg) {
	if (!confirm(_msgs['confirmTrash'] + (extMsg ? extMsg : ''))) return;
	
	if (target.jmBusyDialog) target.jmBusyDialog(true);
	$.get(_baseUrl+'/workbench/'+ctrl+'/trash.ajax', function (msg) {
		if (msg == 'OK') {
			alert(_msgs['trashed']);
			target.location.reload();
		} else {
			alert(msg);
			if (target.jmBusyDialog) target.jmBusyDialog(false);
		}
	});
}

/**
 * 由垃圾桶中復原
 */
function jmRestore(ctrl, target) {
	if (!confirm(_msgs['confirmRestoreFromTrash'])) return;
	
	if (target.jmBusyDialog) target.jmBusyDialog(true);
	$.get(_baseUrl+'/workbench/'+ctrl+'/restore', function (msg) {
		if (msg == 'OK') {
			alert(_msgs['restoreFromTrash']);
			target.location.reload();
		} else {
			alert(msg);
			if (target.jmBusyDialog) target.jmBusyDialog(false);
		}
	});
}

/**
 * 由垃圾桶中刪除
 */
function jmRemoveAjax(ctrl, target, extMsg) {
	if (!confirm(_msgs['confirmRemoveFromTrash']+(extMsg ? extMsg : ''))) return;
	
	if (target.jmBusyDialog) target.jmBusyDialog(true);
	$.get(_baseUrl+'/workbench/'+ctrl+'/remove.trash', function (msg) {
		if (msg == 'OK') {
			alert(_msgs['removedFromTrash']);
			target.location.reload();
		} else {
			alert(msg);
			if (target.jmBusyDialog) target.jmBusyDialog(false);
		}
	});
}

function jmAllRows(ctrl, target, params) {
	if (target.jmBusyDialog) target.jmBusyDialog(true);
	target.location.href=_baseUrl+'/workbench/'+ctrl+'/list'+(params ? params : '')+'/reset/1';
}

function jmReload(target) {
	/*
	if (target.jmBusyDialog) 
		target.jmBusyDialog(true);
	*/
	
	target.location.reload();
}

/**
 * 檢查有required=1的Input物件是否空白
 * @param funcErrMsg
 * @return boolean
 */
function jmCheckEmptyInput(funcErrMsg) {
	var _result = true;
	$("input[required=1]").each(function () {
		var _value = $.trim($(this).val());
		if (_value == '') {
			funcErrMsg($(this).attr('title')+_msgs["cantEmpty"]);
			$(this).focus();
			_result = false;
			return false;
		}
	});
	return _result;
}