function setTitleModule(strTitleModule){
    var arrTitleModule = splitBlock(strTitleModule,"{!}");
    var strLabelId = '';
    var strLabelText = '';
    for(i=0;i<arrTitleModule.length;i++){
        var arrLabel = splitBlock(arrTitleModule[i],"{?}");
        if(arrLabel.length>1){
            strLabelId = arrLabel[0];
            strLabelText = arrLabel[1];
            if($(strLabelId)){
                if(Trim(strLabelText)!=''){
                    $(strLabelId).innerHTML = strLabelText;
                }
            }
        }
    }
}

//=================== CAC HAM THAO TAC VOI TEXT EDITOR =================================
function getTextEditorValue(strIFrameId){
    var objFrame = $(strIFrameId);
    var doc = objFrame.contentDocument;
    if (doc == undefined || doc == null) {
        doc = objFrame.contentWindow.document;
    }
    
    objFrame = doc.body.getElementsByTagName("iframe")[0];
    doc = objFrame.contentDocument;
    if (doc == undefined || doc == null){
        doc = objFrame.contentWindow.document;
    }
    
    return doc.body.innerHTML;
}
//==================================================================================================

// Functions of Cookie
function deleteCookie(sName, sPath, sDomain) {
	if (getCookie(sName)) {
		setCookie(sName, '', -1, sPath, sDomain);
		return true;
	}
	return false;
}
		
function setCookie(sName, sVal, iDays, sPath, sDomain, bSecure) {
	var sExpires;
	if (iDays && iDays!=0) {
		sExpires = new Date();
		sExpires.setTime(sExpires.getTime()+(iDays*24*60*60*1000));
	}
	document.cookie = sName + "=" + sVal + ((sExpires) ? "; expires=" + sExpires : "") + ((sPath) ? "; path=" + sPath : "") + ((sDomain) ? "; domain=" + sDomain : "") + ((bSecure) ? "; secure" : "");
	
	if (document.cookie.length > 0) return true;
}

function getCookie(sName)
{
	var sCookie = document.cookie;
	var sSearch = sName + "=";
	var sStr = null;
	var iOffset = 0;
	var iEnd = 0;
	if (sCookie) {
		iOffset = sCookie.indexOf(sSearch);
		if (iOffset != -1) {
			iOffset += sSearch.length;
			iEnd = sCookie.indexOf(";", iOffset)
			if (iEnd == -1) 
				iEnd = sCookie.length;
			sStr = sCookie.substring(iOffset, iEnd);
		}
	}
	return(sStr);
}

function delCookieItem(sName, sItemName) {
    var strItemValOld = getCookieItem(sName,sItemName);
    var sCookieOld = getCookie(sName);
    
    if(strItemValOld){
        var strItemOld = sItemName + "=" + strItemValOld;
        var strItemNew = sCookieOld.replace(strItemOld + '&','').replace('&' + strItemOld,'').replace(strItemOld,'');
        strItemNew = removeEndWith(removeStartWith(strItemNew,'&'),'&');
        deleteCookie(sName,"/","");
        if(Trim(strItemNew)!=''){
            setCookie(sName, strItemNew, 0, "/", "", false);
        }
	}
}

function setCookieItem(sName, sItemName, sItemVal) {
    var strItemValOld = getCookieItem(sName,sItemName);
    var strItemNew = sItemName + "=" + sItemVal;
    var sCookieOld = getCookie(sName);
    
    if(strItemValOld){
        var strItemOld = sItemName + "=" + strItemValOld;
        strItemNew = sCookieOld.replace(strItemOld,strItemNew);
        deleteCookie(sName,"/","");
        setCookie(sName, strItemNew, 0, "/", "", false)
	} else {
	    if(sCookieOld && Trim(sCookieOld)!=''){
	        strItemNew += "&" + sCookieOld;
	    }
	    deleteCookie(sName,"/","");
        setCookie(sName, strItemNew, 0, "/", "", false)
	}
	
	if (document.cookie.length > 0) return true;
}

function getCookieItem(sName, sItemName){
    var sCookie = getCookie(sName);
	var sSearch = sItemName + "=";
	var sStr = null;
	var iOffset = 0;
	var iEnd = 0;
	if (sCookie) {
		iOffset = sCookie.indexOf(sSearch);
		if (iOffset != -1) {
			iOffset += sSearch.length;
			iEnd = sCookie.indexOf("&", iOffset)
			if (iEnd == -1)
				iEnd = sCookie.length;
			sStr = sCookie.substring(iOffset, iEnd);
		}
	}
	return(sStr);
}
// ========================================================

function removeStartWith(strSource,strRepl){
    var iPosition = strSource.indexOf(strRepl);
    if(iPosition==0) strSource = strSource.substring(1);
    
    return strSource;
    
}

function removeEndWith(strSource,strRepl){
    var iPosition = strSource.indexOf(strRepl);
    if(iPosition==(strSource.length-strRepl.length)) strSource = strSource.substring(0,iPosition);
    
    return strSource;
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function setDisplayObj(objId,attr,setnull){
    var arrobjId = objId.split(":");
	for(i=0;i<arrobjId.length;i++){
        if($(arrobjId[i])){
            objId=arrobjId[i];
            if($(objId)){
                if(setnull==1){
                    $(objId).innerHTML='';
                }
                if($(objId).style.display!=attr) $(objId).style.display=attr;
            }
            break;
        }
    }
}

function chkMaxMinObj(chkId,objId,setnull,nullValue,reverse){
    if($(chkId)){
        var chk = $(chkId);
        var chkType = chk.type.toLowerCase();
        var obj;
        if(chkType=='checkbox'){
            var arrobjId = objId.split(":");
	        for(i=0;i<arrobjId.length;i++){
                if($(arrobjId[i])){
                    objId = arrobjId[i];
                    if($(objId)){
                        obj = $(objId);
                        if(reverse){
                            if(!chk.checked){
                                if(setnull==1) {
                                    try{
                                        Form.Element.Methods.setValue(obj,nullValue);
                                    } catch(e) {
                                        $(obj).innerHTML = nullValue;
                                    }
                                }
                                obj.style.display='none';
                            } else {
                                obj.style.display='';
                            }
                        } else {
                            if(chk.checked){
                                if(setnull==1) {
                                    try{
                                        Form.Element.Methods.setValue(obj,nullValue);
                                    } catch(e) {
                                        $(obj).innerHTML = nullValue;
                                    }
                                }
                                obj.style.display='none';
                            } else {
                                obj.style.display='';
                            }
                        }
                    }
                }
            }
        }
    }
}

function setMaxMinObj(objId,setnull){
    var arrobjId = objId.split(":");
	for(i=0;i<arrobjId.length;i++){
        if($(arrobjId[i])){
            objId=arrobjId[i];
            if($(objId)){
                if($(objId).style.display==''){
                    if(setnull==1) $(objId).innerHTML='';
                    $(objId).style.display='none';
                } else {
                    $(objId).style.display='';
                }
            }
        }
    }
}

function setDisplayModule(objPanelId,modId,attr){
    if($(objPanelId)){
        var cartIndex = -1;
        var arrAnchor = $(objPanelId).getElementsByTagName("a");
        var j=-1;
        for(i=0;i<arrAnchor.length;i++){
            if(arrAnchor[i].id=='') j++;
            if(arrAnchor[i].name==modId){
                cartIndex=j;
                j=-1;
                break;
            }
        }
        if(cartIndex>-1){
            var objTablePanel = $(objPanelId).getElementsByTagName("table");
            for(i=0;i<objTablePanel.length;i++){
                if(objTablePanel[i].parentNode.id==objPanelId){
                    j++;
                    if(j==cartIndex){
                        if(objTablePanel[i].style.display!=attr) objTablePanel[i].style.display=attr;
                        break;
                    }
                }
            }
        }
    }
}

function splitBlock(strSource,strSplit){
    strSource = strSource + '';
    var bSplitIndex = strSource.indexOf(strSplit);
    var arrReturn = new Array();
    var arrReturnLength = 0;
    var strSplitLength = strSplit.length;
    
    if(bSplitIndex!=-1){
        for(i=0;;i++){
            arrReturnLength = arrReturn.length;
            arrReturn[arrReturnLength] = strSource.substring(0, bSplitIndex);
            strSource = strSource.substring(bSplitIndex + strSplitLength);
            bSplitIndex = strSource.indexOf(strSplit);
            if(bSplitIndex==-1){
                arrReturn[arrReturnLength+1] = strSource;
                break;
            }
        }
    } else {
        arrReturn[arrReturnLength] = strSource;
    }
    
    return arrReturn;
}

// Removes leading whitespaces
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function Trim1( value ) {
	
	return LTrim(RTrim(value));
	
}

function Trim(str) { 
	if(!str || typeof( str ) != 'string') return '';
	return str.replace(/^[\s]+/,'').replace(/[\s]+$/,'').replace(/[\s]{2,}/,' '); 
}

function Trim2(sString){
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function Trim3(str) {
    s = str.replace(/^(\s)*/, '');
    s = s.replace(/(\s)*$/, '');
    return s;
}

function InStr(strSearch, charSearchFor){
  for (j=0; j < strSearch.length; j++){
	sString = strSearch.substring(j,charSearchFor.length);
    if (charSearchFor == sString){ 
		return j; 
	}
  }
  return -1;
}

function checkWordLatin(obj,msg){
  obj.value=Trim(obj.value);
  ch = obj.value.split('');
  for(i=0;i<ch.length;i++){
    if(InStr("abcdefghijklmnopqrstuvwxyz0123456789-",ch[i]) == -1){ return true;}
  }
}

function getFullYear(year,cutoffyear) {
    var twoDigitCutoffYear = cutoffyear % 100;
    var cutoffYearCentury = cutoffyear - twoDigitCutoffYear;
    var yearReturn;
    if(year > twoDigitCutoffYear){
        yearReturn = (cutoffYearCentury - 100 + year);
    } else {
        yearReturn = (cutoffYearCentury + year);
    }
    
    return yearReturn;
}

function isDate(op,cutoffyear,dateorder){
    var num, cleanInput, m, exp;
    var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/]|\\. ?)(\\d{1,2})\\4(\\d{1,2})\\s*$");
    m = op.match(yearFirstExp);
    var day, month, year;
    try {
        if (m != null && (m[2].length == 4 || dateorder == "ymd")) {
            day = m[6];
            month = m[5];
            year = (m[2].length == 4) ? m[2] : getFullYear(parseInt(m[3], 10),cutoffyear)
        }
        else {
            if (dateorder == "ymd"){
                return null;
            }
            var yearLastExp = new RegExp("^\\s*(\\d{1,2})([-/]|\\. ?)(\\d{1,2})\\2((\\d{4})|(\\d{2}))\\s*$");
            m = op.match(yearLastExp);
            if (m == null) {
                return null;
            }
            if (dateorder == "mdy") {
                day = m[3];
                month = m[1];
            }
            else {
                day = m[1];
                month = m[3];
            }
            year = (m[5].length == 4) ? m[5] : getFullYear(parseInt(m[6], 10),cutoffyear)
        }
    } catch(e) { return null; }
    month -= 1;
    var date = new Date(year, month, day);
    if (year < 100) {
        date.setFullYear(year);
    }
    if(typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate())
    {
        return date.valueOf();
    } else {
        return null;
    }
}

function isDouble(op,decimalchar){
    var num, cleanInput, m, exp;
    exp = new RegExp("^\\s*([-\\+])?(\\d*)\\" + decimalchar + "?(\\d*)\\s*$");
    m = op.match(exp);
    if (m == null) return null;
    if (m[2].length == 0 && m[3].length == 0) return null;
    cleanInput = (m[1] != null ? m[1] : "") + (m[2].length>0 ? m[2] : "0") + (m[3].length>0 ? "." + m[3] : "");
    num = parseFloat(cleanInput);
    return (isNaN(num) ? null : num);
}

function isNumberMiddle(strNum, beginNum, endNum) {
	var chk = false;
	try {
		if(!isNaN(strNum)) {
			var num = parseFloat(strNum);
			chk = (num >= 0 && num <= endNum);
		}
	} catch (e) {
		chk = false;
	}
	return chk;
}

function isNumberInt(strNum) {
	var chk = false;
	try {
    if(Trim(strNum)!=''){
  		if(!isNaN(strNum)) {
  			var num = parseFloat(strNum);
  			chk = (num >= 0);
  		}
    } else { chk = true; }
	} catch (e) {
		chk = false;
	}
	return chk;
}

function isEmpty(v,message){
	if(Trim(v)=='' || InStr(Trim(v),message)!=-1){
		return true; 
	} else {
		return false;
	}
}

function validateTwoFields(field1, field2, message) {
    var bValid = true;
    var focusField;
        
    if (field1.type == 'text' ||
        field1.type == 'textarea' ||
        field1.type == 'select-one' ||
        field1.type == 'radio' ||
        field1.type == 'password') {
        
        var value;
        var secondValue;
		// get field's value
		if (field1.type == "select-one") {
			var si = field1.selectedIndex;
			value = field1.options[si].value;
            secondValue = field2.options[si].value;
		} else {
			value = field1.value;
            secondValue = field2.value;
		}
        
        if (value != secondValue) {
           	focusField = field1;
            alert(message);
            bValid = false;
        }
    }
	
	if (!bValid) {
		focusField.focus();
	}
    
    return bValid;
}

function isValidEmail(email) {
    var format = /^[0-9a-zA-Z]+([-_.\&]?[0-9a-zA-Z])*@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4}$)/;
    return format.test(email);
}

function checkMEmail(emailStr) {
   emailStr = Trim(emailStr);
   if (emailStr.length == 0) {
       return true;
   }
   var emailPat=/^(.+)@(.+)$/;
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars="\[^\\s" + specialChars + "\]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
   var matchArray=emailStr.match(emailPat);
   if (matchArray == null) {
       return false;
   }
   var user=matchArray[1];
   var domain=matchArray[2];
   if (user.match(userPat) == null) {
       return false;
   }
   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) {
       for (var i = 1; i <= 4; i++) {
          if (IPArray[i] > 255) {
             return false;
          }
       }
       return true;
   }
   var domainArray=domain.match(domainPat);
   if (domainArray == null) {
       return false;
   }
   var atomPat=new RegExp(atom,"g");
   var domArr=domain.match(atomPat);
   var len=domArr.length;
   if ((domArr[domArr.length-1].length < 2) ||
       (domArr[domArr.length-1].length > 3)) {
       return false;
   }
   if (len < 2) {
       return false;
   }
   return true;
}

function isURL(str)
{
    var urlPat="^(((https?:|ftp:|gopher:)\/\/))[-[:alnum:]\?%,\.\/&##!@:=\+~_]+[A-Za-z0-9\/]$";
    var matchArray=str.match(urlPat);
    if (matchArray == null) return false;
    else return true;
}

function ValidNumber(thestring)
{
    for (i = 0; i < thestring.length; i++) {
        ch = thestring.substring(i, i+1);
        if (ch < "0" || ch > "9")
          {
          alert("The numbers may contain digits 0 thru 9 only!");
          return false;
          }
    }
    return true;
}

function txtErrFocus(obj,msg){
	if(obj.style.color != "black"){
		if(obj.value.indexOf(msg)!=-1){
			obj.value=obj.value.replace(msg,'');
		}
		obj.style.color = "black";
	}
}


function out(obj)
{
	for (i=0;i<obj.getElementsByTagName("tr").length;i++)
	{
		var tritem = obj.getElementsByTagName("tr")[i];
		for (j=0;j<tritem.getElementsByTagName("td").length;j++)
		{
			tditem = obj.getElementsByTagName("td")[j];
			tditem.className = tditem.className.replace("over","");
			tditem.className = tditem.className.replace("down","");
			tditem.className = tditem.className;
		}
	}
}
function over(obj)
{
	for (i=0;i<obj.getElementsByTagName("tr").length;i++)
	{
		var tritem = obj.getElementsByTagName("tr")[i];
		for (j=0;j<tritem.getElementsByTagName("td").length;j++)
		{
			tditem = obj.getElementsByTagName("td")[j];
			tditem.className = tditem.className.replace("over","");
			tditem.className = tditem.className.replace("down","");
			tditem.className = tditem.className+"over";
		}
	}
}
function down(obj)
{
	for (i=0;i<obj.getElementsByTagName("tr").length;i++)
	{
		var tritem = obj.getElementsByTagName("tr")[i];
		for (j=0;j<tritem.getElementsByTagName("td").length;j++)
		{
			tditem = obj.getElementsByTagName("td")[j];
			tditem.className = tditem.className.replace("over","");
			tditem.className = tditem.className.replace("down","");
			tditem.className = tditem.className+"down";
		}
	}
}

function submitActionAjaxbtn(btnid){
  $(btnid).onmouseup();
}

function clean_div(div_name){
	$(div_name).innerHTML="";
}

function submitActionbtn(btnid){
  window.location = $(btnid).href;
}

function prepareSearch(btnid,e) {
  if( !e ) {
    //if the browser did not pass the event information to the
    //function, we will have to obtain it from the event register
    if( window.event ) {
      //Internet Explorer
      e = window.event;
    } else {
      //total failure, we have no way of referencing the event
      return;
    }
  }
  
  var keycode;
  if( typeof( e.keyCode ) == 'number'  ) {
    // DOM - IE
    keycode = e.keyCode;
  } else if( typeof( e.which ) == 'number' ) {
    //NS 4 compatible
    keycode = e.which;
  } else if( typeof( e.charCode ) == 'number'  ) {
    //also NS 6+, Mozilla 0.9+
    keycode = e.charCode;
  } else {
    //total failure, we have no way of obtaining the key code
    return;
  }

  //alert(keycode);
  if(keycode==13){
    //alert(btnid);
    submitActionAjaxbtn(btnid)
  }
}

function changeImageSrc(obj,imgPath){
    if($(obj)){ $(obj).src = imgPath; }
}