/**
 *在StoreAdmin和StoreFront都常用的脚本，其实里面大部分都只是在后台用，但可能以后在前台也使用。主要和框架相关。
 */

function checkAll(theForm) { // check all the checkboxes in the list
	for (var i=0;i<theForm.elements.length;i++) {
    	var e = theForm.elements[i];
		var eName = e.name;
    	if (eName != 'allbox' && (e.type.indexOf("checkbox") == 0)) {
        	e.checked = theForm.allbox.checked;		
		}
	} 
}
/*  This function is to select all options in a multi-valued <select> */
function selectAll(listId) {
	var list = document.getElementById(listId);
	for (var i = 0; i < list.options.length; i++) {
		list.options[i].selected = true;
	}
}

function highlightTableRows(tableId) {
    var table = document.getElementById(tableId);
    if (!table) {
    	return;
    } 
    var previousClass = null;
    var tbody = table.getElementsByTagName("tbody")[0];
    var rows;
    if (tbody == null) {
        rows = table.getElementsByTagName("tr");
    } else {
        rows = tbody.getElementsByTagName("tr");
    }
    // add event handlers so rows light up and are clickable
    for (i=0; i < rows.length; i++) {
        rows[i].onmouseover = function() { previousClass=this.className;this.className+=' over' };
        rows[i].onmouseout = function() { this.className=previousClass };
    }
}

 //delete confirm
function fnConfirmDel(frm,ID) {
	//如果什么都没有选择，进行提示
	if(ID!=null){
        var len = ID.length; 
        var checked = false; 
		if(len>=0){
	        for (i = 0; i < len; i++) 
	        { 
	            if (ID[i].checked == true) 
	            { 
	                checked = true; 
	                break; 
	            } 
	        } 
		}else{
			if(ID.checked==true){
				checked=true;		
			}	
	    }
        if (!checked) 
        { 
            alert(__FMT.common_message_deleteOne); 
            return false; 
        } 
    }
	if(confirm(__FMT.common_message_confirmDelete)){	
	  if(frm.doAction){	
		frm.doAction.value="multiDelete";
	  }else{	  	  
	    if(frm.action!=null&&frm.action.indexOf("?")!=-1){
	       frm.action=frm.action+"doAction=multiDelete";	  
	    }else{
	       frm.action=frm.action+"?doAction=multiDelete";	
	    }
	  }	
		return true;
	}
	return false;
}

//save confirm
function fnConfirmSave(frm,ID) {
	if(confirm(__FMT.common_message_confirmSave)){
		frm.doAction.value="multiSave";
		return true;
	}
	return false;
}
function confirmDelete(obj) {   
    if (confirm(__FMT.common_message_confirmDeleteThis)){
        return true;
    } else {
        return false;
    }
}

/**
 * when an input field value changed, check the coresponding multiIds checkbox.
 */
function fnSelectItemById(idValue) {
	if (idValue) {
		var idCheckboxs=document.getElementsByName("multiIds");
		for (i=0;i<idCheckboxs.length;i++) {
			idCheckboxs[i].checked=idCheckboxs[i].value==idValue;
		}
	}
}
/*批量操作的时候选择的记录的名称，需要设置title*/
function fnGetSelectedItemNames() {
	var itemNames="";
	var tmpDlm="";
	var idCheckboxs=document.getElementsByName("multiIds");
	for (i=0;i<idCheckboxs.length;i++) {
		if (idCheckboxs[i].checked) {
			itemNames+=tmpDlm+(idCheckboxs[i].title?idCheckboxs[i].title:idCheckboxs[i].value);
			tmpDlm=",";
		}
	}
	
	return itemNames;
}

var bCancel=false;
function fnDoAction(obj,actionName,confirmMsg) {
	var form=obj?obj.form:obj;
	
	if (!form) {
		form=document.forms[0];
	}
	if (form && !bCancel) {
		var __onsubmit=__oldOnsubmit||form.onsubmit;
		var result=true;
		if (typeof __onsubmitt=="string") {
			result=eval(__onsubmit);
		} else if (typeof __onsubmit=="function") {
			result=__onsubmit.call(form);
		}
		if (result==false) {
			return false;
		}
	}
	
	if (!confirmMsg || confirm(confirmMsg)) {
		fnSubmitActionForm(form,actionName);
	}
	
	return false;
}

function fnSubmitActionForm(oForm,sActionName) {
	//先过滤在form.action上的doAction参数。
	oForm.action = removeParamFromUrl(oForm.action,"doAction");
	if (oForm.doAction) {
		oForm.doAction.value = sActionName;
	} else {
		fnAddHiddenField("doAction",sActionName,oForm);
	}
	oForm.submit();
}

function fnDoSave(obj,nameFieldId) {
	bCancel=false;
	var entityName="";
	if (nameFieldId && $(nameFieldId) && $(nameFieldId).value) {
		entityName = $(nameFieldId).value;
	}
	return fnDoAction(obj, "save", __FMT.common_message_confirmSaveThis+entityName+"?");
}

function fnDoSaveAndNext(obj,nameFieldId) {
	bCancel=false;
	var entityName="";
	if (nameFieldId && $(nameFieldId) && $(nameFieldId).value) {
		entityName = $(nameFieldId).value;
	}
	return fnDoAction(obj, "saveAndNext", __FMT.common_message_confirmSaveThis+entityName+"?");
}

function fnDoDelete(obj,nameFieldId) {
	bCancel=true;
	var entityName="";
	if (nameFieldId && $(nameFieldId) && $(nameFieldId).value) {
		entityName = $(nameFieldId).value;
	}
	return fnDoAction(obj, "delete", __FMT.common_message_confirmDeleteThis+ " " + entityName+"?");
}

function fnDoSimpleAction(obj,actionName,idValue) {
	bCancel=true;
	fnSelectItemById(idValue);
	return fnDoAction(obj, actionName);
}


function fnDoCancelForm(obj) {
	bCancel=true;
	return fnDoAction(obj, "cancelForm");
}

function fnDoUpToParent(objOrUrl) {
	bCancel=true;
	if (typeof objOrUrl=="string") {
		location.href=objOrUrl;
		return false;
	}
	return fnDoAction(objOrUrl, "upToParent");
}

function fnDoAdd(obj) {
	return fnDoAction(obj, "add");
}
function fnDoMultiSave(obj) {
	return fnDoAction(obj, "multiSave", __FMT.common_message_confirmSave);
}
function fnDoMultiDelete(obj) {
	var itemNames = fnGetSelectedItemNames();
	if (itemNames=="") {
		return false;
	}

	return fnDoAction(obj, "multiDelete", __FMT.common_message_confirmDeleteThis+ " " + itemNames+"?");
}
function fnDoReturnToSearch(obj) {
	bCancel=true;
	document.forms[0].action=obj.getAttribute("savedUri");
	return fnDoAction(obj, "returnToSearch");
}
function fnDoNextItem(obj) {
	bCancel=true;
	return fnDoAction(obj, "nextItem");
}
function fnDoPrevItem(obj) {
	bCancel=true;
	return fnDoAction(obj, "prevItem");
}



var filterConditions=[];
/**
 * Manage which input control can be used.
 */
function fnChangeFilter(filterIndex) {
	var condictions = filterConditions[filterIndex];
	if (!condictions) {
		return;
	}
	var inputs = $("glSearchBar").getElementsByTagName('input');
	var selects = $("glSearchBar").getElementsByTagName('select');
	//get all input and select fields of search box
	var fields = [];
	for (i=0;i<inputs.length;i++) {
		if (inputs[i].type.toLowerCase()!="hidden") {
			fields.push(inputs[i]);
		}
	}
	for (i=0;i<selects.length;i++) {
		fields.push(selects[i]);
	}
	//set disallow mode or allow mode
	var disabled=(condictions.indexOf("disallow")==0);
	if (condictions.indexOf(",all")>0) {
		for (i=0;i<fields.length;i++) {
			var field = fields[i];
			if ("SRH@filter"!=field.name) {
				field.disabled=disabled;
			}
		}
	} else {
		for (i=0;i<fields.length;i++) {
			var field = fields[i];
			if (field.name && "SRH@filter"!=field.name) {
				if (condictions.indexOf(field.name)>0) {
					field.disabled=disabled;
				} else {
					field.disabled=!disabled;
				}
			}
		}
	}
}



function fnOpenPrintPage(curActionName) {
	if (document.forms[0]) {
		var frm = document.forms[0];
		var frmAction = frm.action;
		frm.target = "_blank";
		frm.action = frmAction + (frmAction.match(/\?/) ? "&" : "?") + "printable=true";
		fnSubmitActionForm(frm, curActionName);
		frm.target = "";
		frm.action = frmAction;
	}
}

function fnChangeLanguage(Lcode){
	location.href=fnAppendUrl(location.href,"preferredLocale",Lcode);
}
/**验证框架已经提供类似的功能：validateRadio，TODO：删除*/
function isCheckedOne(radioName) { 
	var radios=document.getElementsByName(radioName);
	if(radios==null || radios.length==0){
		return false;
	}
	var chk=false;
  	for (var i=0;i<radios.length;i++) {
  		if(radios[i].checked){
			chk=true;
			break;
  		}
  	}
	return chk;  
}

function getCheckedValue(radioName) { 
	var radios=document.getElementsByName(radioName);
	var val="";
  for (var i=0;i<radios.length;i++) {
  	if(radios[i].checked){
		val=radios[i].value;
		break;
  	}
  }
	return val;  
}

/*为所有详细内容的tab写的公共方法，
 * 默认tab命名为tab_head_n，tab对应页面的div命名为tab_content_n。
 * $tabFlag = 'xx' 则必需有对应的xx_head_n和xx_content_n的对象
 * 只支持最多10个tab，数量可以修改。*/
function fnSelectTab(selectTabNumber, $tabFlag){
	var tab_flag = "tab_";
	if ($tabFlag)
	{
		tab_flag = $tabFlag;
	}
	var tab_count = 10;
	for(var d = 1; d <= tab_count; d++){
       var head = $(tab_flag+ 'head_'+d); 
       var content = $(tab_flag + 'content_'+d);   
       if(head!=null){
	       if (d == selectTabNumber)
	       {  
	          addClass(head, "selected");
	          fnShow(content);
	       }else{
	          removeClass(head, "selected");	            
	          fnHide(content);
	       }
       }
	}
}