//Kiem tra kieu so : /^\d+$/
//Kiem tra kieu so thuc: /^(\d+|\d+\.{1}\d+)$/
//Kiem tra ngay thang:C#: /^\d{1,2}(\-|\/|\.)\d{1,2}(\-|\/|\.)\d{4}$/
//Kiem tra kieu URL:C# /^(http:\\/\\/|www\\.)[0-9a-zA-Z]+[\\.\\-]?[0-9a-zA-Z]+\\.{1}[0-9a-zA-Z]+[\\/\\-]?[0-9a-zA-Z]+$/
//Kiem tra Email: /^[A-Za-z0-9](([_\\.\\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\\.\\-]?[a-zA-Z0-9]+)*)\\.([A-Za-z]{2,})$/
//Kiem tra Phone: /^((\\(\\d{3,4}\\)|\\d{3,4}-)\\d{4,9}(-\\d{1,5}|\\d{0}))|(\\d{4,12})$/
//Kiem tra SSN :  /^\d{3}\-\d{2}\-\d{4}$/   "Format require 000-00-0000"
//Kiem tra Phone Number :  /^\d{3}\-\d{3}\-\d{4}$/   "Format required 000-000-0000"
//Price have to a money number!   /(^\d+$)|(^\d+[.]{1}\d+$)/
//Kiem tra phan mo rong file anh   /(^[\w+\s*\.*\\*\:*]+.jpg$)|(^[\w+\s*\.*\\*\:*]+.gif$)|(^[\w+\s*\.*\\*\:*]+.png$)/

/*
 *  Create String Buffer Class
 *  Example :
var buf = new StringBuffer();
buf.append("hello");
buf.append("world");
alert(buf.toString());
*/
function StringBuffer() {
    this.buffer = [];
}
StringBuffer.prototype = {
    append: function (string) {
        this.buffer.push(string);
        return this;
    },
    toString: function () {
        return this.buffer.join("");
    },
    removeAll: function () {
        this.buffer.splice(0, this.buffer.length);
    }
};
/****************/

var CommonScripts = {
    init : function()
    {
        if(this.Scripts == undefined) this.Scripts = "|";
        if(this.Themes == undefined) this.Themes = "|";
        if(this.ArrButtonFocusID == undefined) this.ArrButtonFocusID = "||";
        if(this.KeyDownFunction == undefined) this.KeyDownFunction = null;
        if (this.InputTotalPageCtrl == undefined) this.InputTotalPageCtrl = null;
        if (this.RootPath == undefined) this.RootPath = f_GetPath();
    }
};

CommonScripts.init();

/*
 *  Get node by ID
 */
function f_E(p_CtrlID)
{
    return document.getElementById(p_CtrlID);
}

/*
 *  Load CSS , JAVASCRIPT File dynamic
 */
function f_LoadJsCssFile(p_Filepath)
{
    if(f_CheckLoadJsCssFile(p_Filepath))
    {
        var p_Fileref;
        var p_Ext = p_Filepath.substring(p_Filepath.lastIndexOf(".") + 1);
        var p_FileName = p_Filepath.substring(p_Filepath.lastIndexOf("/") + 1,p_Filepath.lastIndexOf("."));
        if (p_Ext == "js")
        {   
            p_Fileref = document.createElement('script');
            p_Fileref.setAttribute("type","text/javascript");
            p_Fileref.setAttribute("src", p_Filepath);
            
            CommonScripts.Scripts += p_FileName + "_Uncompleted|";            
        }
        else 
        if (p_Ext == "css")
        {
            //if filename is an external CSS file
            p_Fileref = document.createElement("link");
            p_Fileref.setAttribute("rel", "stylesheet");
            p_Fileref.setAttribute("type", "text/css");
            p_Fileref.setAttribute("href", p_Filepath);
                        
            CommonScripts.Themes += p_FileName + "_Uncompleted|";
        }        
        if (typeof p_Fileref != "undefined")
        {   
            document.getElementsByTagName("head")[0].appendChild(p_Fileref);
            p_Fileref.onload = function()
            {
                CommonScripts.Scripts = CommonScripts.Scripts.replace("|" + p_FileName + "_Uncompleted|",p_FileName);                
            };
        }
    }    
}

/*
 *  Check CSS , JAVASCRIPT File had loaded
 */
function f_CheckLoadJsCssFile(p_Filename)
{   
    var p_Ext = p_Filename.substring(p_Filename.lastIndexOf(".") + 1);
    var i;
    var p_Len;    
    var p_Arr;
    if (p_Ext == "js")
        p_Arr = CommonScripts.Scripts.split("|");
    else
        p_Arr = CommonScripts.Themes.split("|");
    p_Len = p_Arr.length;
    for(i=0;i<p_Len;)
    {
        if(p_Filename == p_Arr[i])
            return false;
        i++;
    }        
    return true;
}

/*
 *  Load Fix CSS IE6
 */
function f_FixIE6Css(p_FilePath)
{
    if(BrowserDetect.browser == "Explorer" && BrowserDetect.version == "6")
    {        
        f_LoadJsCssFile(p_FilePath);
    }
}

/*
 *  Convert money data to format $.000.000
 */
function f_ConvertToMoney(p_Money,p_LastFix)
{   
    p_Money = p_Money + "";    
    var p_Pos = p_Money.indexOf(",");    
    if(p_Pos != -1)
        p_Money = p_Money.substring(0,p_Pos); 
    else
    {
        p_Pos = p_Money.indexOf(".");
        if(p_Pos != -1)
            p_Money = p_Money.substring(0,p_Pos);
    }    
        
    var p_StrReserver = p_Money.charAt(0);    
    var i, p_Len = p_Money.length;        
    for (i = 1; i < p_Len;)
    {
        if ((p_Len - i) % 3 == 0)
            p_StrReserver += ".";        
        p_StrReserver += p_Money.charAt(i);
        i++;
    }
    return p_StrReserver + p_LastFix;    
}

/*
 *  Trim input string
 */
function f_Trim(p_String) {
    //Convert Object to String
    p_String = p_String + "";

    while (p_String.substring(0,1) == ' ')
    {   
        p_String = p_String.substring(1, p_String.length);
    }
    while (p_String.substring(p_String.length-1, p_String.length) == ' ')
    {
        p_String = p_String.substring(0,p_String.length-1);
    }
    return p_String;
}

/*
 *  Add event to control
 */
function f_AddEvent(p_Ctrl, p_EventName, p_Function, p_UseCapture) 
{   
	if (p_Ctrl.addEventListener) 
	{	    
		p_Ctrl.addEventListener(p_EventName, p_Function, p_UseCapture);
		return true;
	}
	else 
    if (p_Ctrl.attachEvent) 
    {   
	    var r = p_Ctrl.attachEvent("on" + p_EventName, p_Function);
	    return r;
    }
    else
    {
	    p_Ctrl["on" + p_EventName] = p_Function;
    }
}

/*
 *  Get position of control
 */
function f_GetPosition(p_Target)
{
	var p_Left = 0;
	var p_Top  = 0;
	if(p_Target)
	{
	    while (p_Target.offsetParent)
	    {
		    p_Left += p_Target.offsetLeft;
		    p_Top  += p_Target.offsetTop;
		    p_Target = p_Target.offsetParent;
	    }

	    p_Left += p_Target.offsetLeft;
	    p_Top  += p_Target.offsetTop;   
	}	
	return new Array(p_Left, p_Top);
}

/*
 *  Get position of mouse
 */
function f_GetMouseCoords(event)
{   
	if(event.pageX || event.pageY)
	{   
		return new Array(event.pageX, event.pageY);
	}
	else
	{   
	    return new Array(event.clientX + document.body.scrollLeft - document.body.clientLeft,event.clientY + document.body.scrollTop  - document.body.clientTop);
	}
}

/*
 *  Get Mouse Position Accoding to Object
 */
function f_GetMouseOffset(p_Target, event) {
    event = event || window.event;

    var p_DocPos = f_GetPosition(p_Target);
    var p_MousePos = f_GetMouseCoords(event);
    return new Array(p_MousePos[0] - p_DocPos[0], p_MousePos[1] - p_DocPos[1]);
}

/*
*  Check mouse point in control region
*/ 
 function f_CheckMouseInControlRegion(event,p_Ctrl)
{   
    var p_Left;
    var p_Right;
    var p_Top;
    var p_Bottom;
    var p_CtrlPos = f_GetPosition(p_Ctrl);
    var p_MouseCord = f_GetMouseCoords(event);
    p_Left = p_CtrlPos[0];    
    p_Right = p_CtrlPos[0] + p_Ctrl.offsetWidth;
    p_Top = p_CtrlPos[1];
    p_Bottom = p_CtrlPos[1] + p_Ctrl.offsetHeight;            
    if(p_MouseCord[0] >= p_Left && p_MouseCord[0] <= p_Right && p_MouseCord[1] >= p_Top && p_MouseCord[1] <= p_Bottom)
        return true;
    return false;    
}

/*
 *  Count all occurrences of a character in a string
 */
function f_CountOccurrenceCharacter(p_Str,p_OccChar)
{   
    var p_Count = 0;
    var p_Pos;
    while ((p_Pos = p_Str.indexOf(p_OccChar)) != -1)
    {
        p_Str = p_Str.substring(p_Pos + 1);
        p_Count++;
    }
    return p_Count;
}

/*
 *  Fix IE and FF count in different ways the childNodes. FF (DOM compliant mode) counts even the possible textNodes (the gaps between tags) while IE counts only some of them.
 */ 
function f_CleanWhitespace(p_Node) 
{
    var x;
    var p_NodeCount = p_Node.childNodes.length;    
    var p_ChildNode;
    for (x = p_NodeCount - 1; x > -1;) 
    {
        p_ChildNode = p_Node.childNodes[x];             
        if (p_ChildNode.nodeType == 3)
        {
            // that is, if it's a whitespace text node
            if(f_Trim(p_ChildNode.nodeValue).length == 1)
                p_Node.removeChild(p_ChildNode)            
        }
        else
            if (p_ChildNode.nodeType == 1)
            {
                // that is, if it's a whitespace text node
                f_CleanWhitespace(p_ChildNode)            
            } 
        x--;
    }    
}

/*
 *  Reset all control data
 */
function f_ResetForm(p_FormName, p_StrArrControlID) {
    var x, p_Len, p_Id, p_Name, i;
    if (p_StrArrControlID != null) {
        var p_ArrCtrlID = p_StrArrControlID.split("|");
        p_Len = p_ArrCtrlID.length;
        x = new Array();
        for (i = 0; i < p_Len; ) {
            x.push(f_E(p_ArrCtrlID[i]));
            i++;
        }
    }
    else {
        x = f_E(p_FormName).elements;
        p_Len = x.length;
    }

    for (i = 0; i < p_Len; ) {
        p_Id = x[i].id;
        p_Name = p_Id.substring(p_Id.lastIndexOf("_") + 1, p_Id.length);
        switch (p_Name) {
            case "txt":
                {
                    f_E(p_Id).value = "";
                    break;
                }
            case "txtN":
                {
                    f_E(p_Id).value = "";
                    break;
                }
            case "cb":
                {
                    f_E(p_Id).selectedIndex = 0;
                    break;
                }
            case "bt":
                {
                    if ((f_CheckREGEX(p_Id, "^\\w*fup_([0-9]*_)*bt(_[0-9]*_bt)*$", null) == true)) {
                        var p_ButtonCtrl, p_ArrID;
                        var p_ButtonCtrl = f_E(p_Id);
                        if (p_ButtonCtrl.nextSibling != null)
                            p_ButtonCtrl.parentNode.removeChild(p_ButtonCtrl.nextSibling);

                        p_ArrID = p_Id.split("_");
                        if (isNaN(p_ArrID[p_ArrID.length - 2]))
                            p_ButtonCtrl.title = "";
                        else {
                            p_ArrID.splice(p_ArrID.length - 2, 1);
                            p_ArrID = p_ArrID.join("_");
                            if (f_E(p_ArrID) != null)
                                f_E(p_ArrID).title = "";
                        }
                    }
                    break;
                }
        }
        i++;
    }
    //Reset Rich Text Editor
    if (typeof (RichTextEditor) != "undefined") {
        if (RichTextEditor.ArrEditor != null) {
            p_Len = RichTextEditor.ArrEditor.length;
            for (i = 0; i < p_Len; ) {
                RichTextEditor.SetHTML(i, "");
                i++;
            }
        }
    }
}


/*
 *  Replace special char
 *  p_Type
 *      1 : input Text -> Replace Special HTML
 *      2 : input Content HTML -> Replace Special HTML
 *      3 : input Textarea -> Replace Special HTML 
 *      4 : input RichTextEditor -> Replace Special HTML 
 */ 
function f_ReplaceSpecialChar(p_String,p_Type,p_IsReverse) 
{
    var p_ArrChar,p_ArrHTML;
    switch(p_Type)
    {
        case 1:
        {
            if(p_IsReverse == false)
            {
                p_ArrChar = new Array("\n","\r","\t","&","  ","\"","`","'","©",">","<","®");
                p_ArrHTML = new Array("","","","&amp;"," &nbsp;","&quot;","&lsquo;","&rsquo;","&copy;","&gt;","&lt;","&reg;");            
            }
            else
            {
                p_ArrChar = new Array("&amp;"," &nbsp;","&quot;","&lsquo;","&rsquo;","&copy;","&gt;","&lt;","&reg;");
                p_ArrHTML = new Array("&","  ","\"","`","'","©",">","<","®");
            }            
            break;
        }
        case 2:
        {
            if(p_IsReverse == false)
            {
                p_ArrChar = new Array("\n","\r","\t","&","  ","`","©","®");
                p_ArrHTML = new Array("","","","&amp;"," &nbsp;","&lsquo;","&copy;","&reg;");        
            }
            else
            {
                p_ArrChar = new Array("&amp;"," &nbsp;","&lsquo;","&copy;","&reg;");        
                p_ArrHTML = new Array("&","  ","`","©","®");
            }            
            break;
        }
    case 4:
        {
            if (p_IsReverse == false) {
                p_ArrChar = new Array("<br>", "\n", "\r", "\t", String.fromCharCode(8232));
                p_ArrHTML = new Array("<br/>", "", "", "", "");

                //Replace special char " , '
                var i, p_ArrayCharPos, p_ArrayCharPosCount, p_TempStr, p_TempStrLen, p_IsChange;
                p_ArrayCharPos = f_GetArrayCharacterPosition(p_String, "\"");
                p_ArrayCharPosCount = p_ArrayCharPos.length;
                for (i = 0; i < p_ArrayCharPosCount; ) {
                    p_IsChange = true;
                    if (i == p_ArrayCharPosCount - 1) {
                        p_TempStr = p_String.substring(0, p_ArrayCharPos[i]);
                        p_TempStrLen = p_TempStr.length;
                        p_IsChange = f_CheckSpecialCharacter(p_TempStr);
                    }
                    if ((i == p_ArrayCharPosCount - 2) && p_IsChange == true) {
                        p_TempStr = p_String.substring(p_ArrayCharPos[i + 2] + 1, p_ArrayCharPos[i + 1]);
                        p_TempStrLen = p_TempStr.length;
                        p_IsChange = f_CheckSpecialCharacter(p_TempStr);
                    }
                    if ((i < p_ArrayCharPosCount - 1) && p_IsChange == true) {
                        p_TempStr = p_String.substring(p_ArrayCharPos[i + 1] + 1, p_ArrayCharPos[i]);
                        p_TempStrLen = p_TempStr.length;
                        p_IsChange = f_CheckSpecialCharacter(p_TempStr);
                    }
                    if ((i < p_ArrayCharPosCount - 2) && p_IsChange == true) {
                        p_TempStr = p_String.substring(p_ArrayCharPos[i + 2] + 1, p_ArrayCharPos[i + 1]);
                        p_TempStrLen = p_TempStr.length;
                        p_IsChange = f_CheckSpecialCharacter(p_TempStr);
                    }
                    if (p_IsChange) {
                        p_String = p_String.substring(0, p_ArrayCharPos[i]) + "&quot;" + p_String.substring(p_ArrayCharPos[i] + 1);
                        i++;
                    }
                    else
                        i = i + 2;
                }
                /*****************************/

                p_String = f_CheckSpecialCharacterExtend(p_String);
            }
            else {
                p_ArrChar = new Array("<br/>");
                p_ArrHTML = new Array("<br>");
            }

            break;
        }
    default:
        {
            if (p_IsReverse == false) {
                p_ArrChar = new Array("&", ">", "<", "\n", "\r", "\t", "  ", "\"", "`", "'", "©", "®");
                p_ArrHTML = new Array("&amp;", "&gt;", "&lt;", "<br />", "", " &nbsp; &nbsp; &nbsp;", " &nbsp;", "&quot;", "&lsquo;", "&rsquo;", "&copy;", "&reg;");
            }
            else {
                p_ArrChar = new Array("<br />", " &nbsp; &nbsp; &nbsp;", "&amp;", "&gt;", "&lt;", " &nbsp;", "&quot;", "&lsquo;", "&rsquo;", "&copy;", "&reg;");
                p_ArrHTML = new Array("\n", "\t", "&", ">", "<", "  ", "\"", "`", "'", "©", "®");
            }
        }
    }
    var i;
    var p_ArrCount = p_ArrChar.length;
    var p_Key;
    for (i = 0; i < p_ArrCount; ) {
        p_Key = new RegExp(p_ArrChar[i], "g");
        p_String = p_String.replace(p_Key, p_ArrHTML[i]);
        i++;
    }
    return p_String;
}

/*
 *  Replace /> for <img tag
 */
function f_CheckSpecialCharacterExtend(p_CheckStr) {
    var i, p_ArrayCharPos, p_ArrayCharPosCount, p_ReplaceCharPos, p_TempStr;
    p_ArrayCharPos = f_GetArrayCharacterPosition(p_CheckStr, "<img ");
    p_ArrayCharPosCount = p_ArrayCharPos.length;
    for (i = 0; i < p_ArrayCharPosCount; ) {
        p_TempStr = p_CheckStr.substring(p_ArrayCharPos[i]);
        p_ReplaceCharPos = p_TempStr.indexOf(">");

        p_CheckStr = p_CheckStr.substring(0, p_ArrayCharPos[i]) + p_TempStr.substring(0, p_ReplaceCharPos) + "/" + p_TempStr.substring(p_ReplaceCharPos);
        i++;
    }
    return p_CheckStr;
}

/*
 *  Check Special Character exist in string
 */
function f_CheckSpecialCharacter(p_CheckStr) {
    var i, p_Arr, p_Count, p_CheckStrLen;
    p_Arr = new Array(" style=", " class=", " id=", " src=", " alt=", " width=", " height=", " title=", " type=", " value=", " href=", " onclick=");
    p_Count = p_Arr.length;
    p_CheckStrLen = p_CheckStr.length;
    for (i = 0; i < p_Count; ) {
        if (p_CheckStr.indexOf(p_Arr[i]) == (p_CheckStrLen - p_Arr[i].length)) {
            return false;
        }
        i++;
    }
    return true;
}

/*
 *  Swap image when click
 */
 function f_SwapIconImage(p_Ctrl,p_CssClass1,p_CssClass2)
 {
    if(p_Ctrl.className == p_CssClass1)
    {
        p_Ctrl.className = p_CssClass2;
    }
    else
    {
        p_Ctrl.className = p_CssClass1;
    }
 }
 
 /*
 *  Encode URL
 */
function f_URLEncode(p_String)
{
    p_String = escape(p_String);    
    
    var p_RequestKey = new Array("/",".","_","*","+","@");
    var p_RootKey = new Array("%2F","%2E","%5F","%2A","%2B","%40");
    
    var i=0;
    var p_ArrLen = p_RequestKey.length;
    for(i=0;i<p_ArrLen;)    
    {
        p_String = p_String.replace(p_RequestKey[i],p_RootKey[i]);
        i++;
    }    
    return p_String;
}

/*
 *  Decode URL
 */
function f_URLDecode(p_String)
{
    p_String = escape(p_String);        

    /*unicode dung san*/
    var p_RequestKey = new Array("%2F","%2E","%5F","%2A","%2B","%40","%2520","%25u0102","%25C2","%25C1","%25C0","%25u1EA2","%25C3","%25u1EA0","%25u1EAE","%25u1EB0","%25u1EB2","%25u1EB4","%25u1EB6","%25u1EA4","%25u1EA6","%25u1EA8","%25u1EAA","%25u1EAC","%25u0103","%25E2","%25E1","%25E0","%25u1EA3","%25E3","%25u1EA1","%25u1EAF","%25u1EB1","%25u1EB3","%25u1EB5","%25u1EB7","%25u1EA5","%25u1EA7","%25u1EA9","%25u1EAB","%25u1EAD","%25CA","%25C9","%25C8","%25u1EBA","%25u1EBC","%25u1EB8","%25u1EBE","%25u1EC0","%25u1EC2","%25u1EC4","%25u1EC6","%25EA","%25E9","%25E8","%25u1EBB","%25u1EBD","%25u1EB9","%25u1EBF","%25u1EC1","%25u1EC3","%25u1EC5","%25u1EC7","%25D4","%25u01A0","%25D3","%25D2","%25u1ECE","%25D5","%25u1ECC","%25u1ED0","%25u1ED2","%25u1ED4","%25u1ED6","%25u1ED8","%25u1EDA","%25u1EDC","%25u1EDE","%25u1EE0","%25u1EE2","%25F4","%25u01A1","%25F3","%25F2","%25u1ECF","%25F5","%25u1ECD","%25u1ED1","%25u1ED3","%25u1ED5","%25u1ED7","%25u1ED9","%25u1EDB","%25u1EDD","%25u1EDF","%25u1EE1","%25u1EE3","%25u01AF","%25DA","%25D9","%25u1EE6","%25u0168","%25u1EE4","%25u1EE8","%25u1EEA","%25u1EEC","%25u1EEE","%25u1EF0","%25u01B0","%25FA","%25F9","%25u1EE7","%25u0169","%25u1EE5","%25u1EE9","%25u1EEB","%25u1EED","%25u1EEF","%25u1EF1","%25CD","%25CC","%25u1EC8","%25u0128","%25u1ECA","%25ED","%25EC","%25u1EC9","%25u0129","%25u1ECB","%25DD","%25u1EF2","%25u1EF6","%25u1EF8","%25u1EF4","%25FD","%25u1EF3","%25u1EF7","%25u1EF9","%25u1EF5","%25u0110","%25u0111");        
    var p_RootKey = new Array("/",".","_","*","+","@"," ",unescape("%u0102"),unescape("%C2"),unescape("%C1"),unescape("%C0"),unescape("%u1EA2"),unescape("%C3"),unescape("%u1EA0"),unescape("%u1EAE"),unescape("%u1EB0"),unescape("%u1EB2"),unescape("%u1EB4"),unescape("%u1EB6"),unescape("%u1EA4"),unescape("%u1EA6"),unescape("%u1EA8"),unescape("%u1EAA"),unescape("%u1EAC"),unescape("%u0103"),unescape("%E2"),unescape("%E1"),unescape("%E0"),unescape("%u1EA3"),unescape("%E3"),unescape("%u1EA1"),unescape("%u1EAF"),unescape("%u1EB1"),unescape("%u1EB3"),unescape("%u1EB5"),unescape("%u1EB7"),unescape("%u1EA5"),unescape("%u1EA7"),unescape("%u1EA9"),unescape("%u1EAB"),unescape("%u1EAD"),unescape("%CA"),unescape("%C9"),unescape("%C8"),unescape("%u1EBA"),unescape("%u1EBC"),unescape("%u1EB8"),unescape("%u1EBE"),unescape("%u1EC0"),unescape("%u1EC2"),unescape("%u1EC4"),unescape("%u1EC6"),unescape("%C3%AA"),unescape("%C3%A9"),unescape("%C3%A8"),unescape("%E1%BA%BB"),unescape("%E1%BA%BD"),unescape("%E1%BA%B9"),unescape("%E1%BA%BF"),unescape("%E1%BB%81"),unescape("%E1%BB%u0192"),unescape("%E1%BB%u2026"),unescape("%E1%BB%u2021"),unescape("%C3%u201D"),unescape("%C6%A0"),unescape("%C3%u201C"),unescape("%C3%u2019"),unescape("%E1%BB%u017D"),unescape("%C3%u2022"),unescape("%E1%BB%u0152"),unescape("%E1%BB%90"),unescape("%E1%BB%u2019"),unescape("%E1%BB%u201D"),unescape("%E1%BB%u2013"),unescape("%E1%BB%u02DC"),unescape("%E1%BB%u0161"),unescape("%E1%BB%u0153"),unescape("%E1%BB%u017E"),unescape("%E1%BB%A0"),unescape("%E1%BB%A2"),unescape("%C3%B4"),unescape("%C6%A1"),unescape("%C3%B3"),unescape("%C3%B2"),unescape("%E1%BB%8F"),unescape("%C3%B5"),unescape("%E1%BB%8D"),unescape("%E1%BB%u2018"),unescape("%E1%BB%u201C"),unescape("%E1%BB%u2022"),unescape("%E1%BB%u2014"),unescape("%E1%BB%u2122"),unescape("%E1%BB%u203A"),unescape("%E1%BB%9D"),unescape("%E1%BB%u0178"),unescape("%E1%BB%A1"),unescape("%E1%BB%A3"),unescape("%C6%AF"),unescape("%C3%u0161"),unescape("%C3%u2122"),unescape("%E1%BB%A6"),unescape("%C5%A8"),unescape("%E1%BB%A4"),unescape("%E1%BB%A8"),unescape("%E1%BB%AA"),unescape("%E1%BB%AC"),unescape("%E1%BB%AE"),unescape("%E1%BB%B0"),unescape("%C6%B0"),unescape("%C3%BA"),unescape("%C3%B9"),unescape("%E1%BB%A7"),unescape("%C5%A9"),unescape("%E1%BB%A5"),unescape("%E1%BB%A9"),unescape("%E1%BB%AB"),unescape("%E1%BB%AD"),unescape("%E1%BB%AF"),unescape("%E1%BB%B1"),unescape("%C3%8D"),unescape("%C3%u0152"),unescape("%E1%BB%u02C6"),unescape("%C4%A8"),unescape("%E1%BB%u0160"),unescape("%C3%AD"),unescape("%C3%AC"),unescape("%E1%BB%u2030"),unescape("%C4%A9"),unescape("%E1%BB%u2039"),unescape("%C3%9D"),unescape("%E1%BB%B2"),unescape("%E1%BB%B6"),unescape("%E1%BB%B8"),unescape("%E1%BB%B4"),unescape("%C3%BD"),unescape("%E1%BB%B3"),unescape("%E1%BB%B7"),unescape("%E1%BB%B9"),unescape("%E1%BB%B5"),unescape("%C4%90"),unescape("%C4%u2018"));    
    
    var i=0;
    var p_ArrLen = p_RequestKey.length;
    for(i=0;i<p_ArrLen;)    
    {
        p_String = p_String.replace(new RegExp(p_RequestKey[i],"g"),p_RootKey[i]);
        i++;
    }
    return p_String;
}

/*
 *  Set Opacity fo Object
 */
function f_SetOpacity(e,o)
{
	// for IE
	e.style.filter = "alpha(opacity=" + o*100 + ")";
	// for others
	e.style.opacity = o;
}

/*
 *  Encode Special HTML Character
 */
function f_EncodeSpecialCharacter(p_String)
{
    var p_NomarkKeyA=new RegExp("[" + unescape("%u1ECB") + "]",'g');    
    p_String = p_String.replace(p_NomarkKeyA,'&iexcl;');    
    return p_String;
}

/*
 *  Remove Node of ID
 */
function f_RemoveNode(p_NodeId)
{
    var p_Ctrl = f_E(p_NodeId);
    if(p_Ctrl != null)
    {
        p_Ctrl.parentNode.removeChild(p_Ctrl);
        return true;
    }
    return false;
}

/*
 *  Remove Node
 */
function f_RemoveNode1(p_NodeCtrl)
{   
    if(p_NodeCtrl != null)
    {
        p_NodeCtrl.parentNode.removeChild(p_NodeCtrl);
        return true;
    }
    return false;
}

/*
 *  Get total page
 */
function f_AjaxGetTotalPage(p_TableName)
{   
    g_ObjPage.TotalPage = g_Class2.GetTotalPage(new Array(g_ObjPage.NumRow,p_TableName,g_ObjPage.Search)).value;
    g_ObjPage.TotalRecord = g_Class2.GetTotalRecord(new Array(p_TableName,g_ObjPage.Search)).value;
    try
    {
        f_E("TotalPage_lb").innerHTML = g_ObjPage.TotalPage + 1;    
        f_E("TotalItem_box").innerHTML = "Total Item : &nbsp;<span style='color:#CC0000; font-weight:bold; font-size:13px'>" + g_ObjPage.TotalRecord + " </span>";
    }
    catch(ex){} 
}

/*
 *	Go to First page
 */
function f_FirstPage()
{
    if(g_ObjPage.Page > 0)    
    {
        g_ObjPage.Page = 0;    
        return true;
    }
    return false;
}

/*
 *	Go to Previous page
 */
function f_PrePage()
{
    if (g_ObjPage.Page > 0)
    {
        g_ObjPage.Page -= 1; 
        return true;   
    }
    return false;
}

/*
 *	Go to Next page
 */
function f_NextPage()
{    
    if (g_ObjPage.Page < g_ObjPage.TotalPage)
    {
        g_ObjPage.Page += 1;        
        return true;
    }
    return false;
}

/*
 *	Go to Last page
 */
function f_LastPage()
{       
    if(g_ObjPage.Page < g_ObjPage.TotalPage)
    {
        g_ObjPage.Page = g_ObjPage.TotalPage;    
        return true;
    }
    return false;
}

/*
 *  Change Order Grid
 */
function f_ChangeOrderGrid(ObjPage,p_OrderStr,p_Function)
{
    if(ObjPage.Order == p_OrderStr + " asc")
        ObjPage.Order = p_OrderStr + " desc";
    else
        ObjPage.Order = p_OrderStr + " asc";
    setTimeout(p_Function,0);
}

/*
 *	Go to Number page
 */
function f_GoToPage(p_Ctrl,p_TotalPage,p_GridFunction)
{     
    var p_PageNumber = p_Ctrl.value;     
    p_Ctrl.onfocus = function()
    {   
        if(document.onkeydown != undefined)       
            CommonScripts.KeyDownFunction = document.onkeydown;
        this.select();
        CommonScripts.InputTotalPageCtrl = this;
        
        document.onkeydown = function(event)
        {
            if (!event) 
                event = window.event; 
            
            var p_KeyID = event.keyCode;            
               
            //Check string inputis number
            if((p_KeyID >=97 && p_KeyID <= 105) ||(p_KeyID >=49 && p_KeyID <= 57) || p_KeyID == 16 || p_KeyID == 17 || p_KeyID == 8 || p_KeyID == 46 || p_KeyID == 35 || p_KeyID == 36)
            {   
                return true;
            }
            
            if(p_KeyID == 13)
            {   
                if(CommonScripts.InputTotalPageCtrl.value > p_TotalPage + 1)
                {
                    g_ObjPage.Page = p_TotalPage;
                    CommonScripts.InputTotalPageCtrl.value = p_TotalPage + 1;
                }
                else
                    g_ObjPage.Page = parseInt(CommonScripts.InputTotalPageCtrl.value) - 1;
                CommonScripts.InputTotalPageCtrl.select();
                setTimeout(p_GridFunction,1);    
            }
            return false;
        };
    };        
    
    p_Ctrl.onblur = function()
    {
        if(CommonScripts.KeyDownFunction != null) 
        {
            document.onkeydown = CommonScripts.KeyDownFunction;
            CommonScripts.KeyDownFunction = null;
        }
        else
        {   
            document.onkeydown = function()
            {
                return true;
            };
        }        
    };    
}

 /*
function f_GoToPage(event, p_PageNum)
{            
    if (!event) 
        event = window.event;                
    var p_KeyID = event.keyCode;
    p_PageNum = parseInt(p_PageNum) - 1;
    if(p_KeyID==13 && p_PageNum <= g_ObjPage.TotalPage && p_PageNum>=0)
    {        
        g_ObjPage.Page = p_PageNum;        
        return true;
    }
    return false;
}
*/
/*
 *  Set Cookie
 */
function f_SetCookie(p_Name, p_Value, p_Expires, p_Path, p_Domain, p_Secure )
{
    if((f_GetCookie(p_Name) + "") != (p_Value + ""))
    {
        // set time, it's in milliseconds
        var p_Today = new Date();
        p_Today.setTime(p_Today.getTime());
        
        if ( p_Expires )
        {
            p_Expires = p_Expires * 1000 * 60 * 60 * 24;
        }
        var p_Expires_date = new Date( p_Today.getTime() + (p_Expires) );

        document.cookie = p_Name + "=" +escape( p_Value ) +
        ( ( p_Expires ) ? ";expires=" + p_Expires_date.toGMTString() : "" ) +
        ( ( p_Path ) ? ";path=" + p_Path : "" ) +
        ( ( p_Domain ) ? ";domain=" + p_Domain : "" ) +
        ( ( p_Secure ) ? ";secure" : "" );
        return true;
    }
    else
    {        
        return false;
    }
}
//function f_SetCookie(p_Name,p_Value,p_Expiredays)
//{   
//    if((f_GetCookie(p_Name) + "") != (p_Value + ""))
//    {
//        var p_Exdate = new Date();
//        p_Exdate.setDate(p_Exdate.getDate() + p_Expiredays);
//        document.cookie = p_Name + "=" + escape(p_Value) + ((p_Expiredays == null) ? "" : ";expires=" + p_Exdate.toUTCString());        
//        return true;
//    }
//    else
//        return false;
//}
/*
 *  get Cookie
 */
function f_GetCookie(p_Name)
{
    if (document.cookie.length > 0)
    {
        var p_Start = document.cookie.indexOf(p_Name + "=");
        if (p_Start != -1)
        {
            p_Start = p_Start + p_Name.length + 1;
            var p_End = document.cookie.indexOf(";",p_Start);
            if (p_End == -1) 
                p_End = document.cookie.length;
            return unescape(document.cookie.substring(p_Start,p_End));
        }
    }
    return "";
}

//// this fixes an issue with the old method, ambiguous values
//// with this test document.cookie.indexOf( name + "=" );
//function f_GetCookie(p_Name) 
//{
//	// first we'll split this cookie up into name/value pairs
//	// note: document.cookie only returns name=value, not the other components
//	var p_ArrCookies = document.cookie.split(';');
//	var p_CookiesCount = p_ArrCookies.length;
//	var p_TempCookie = "";
//	var p_CookieName = "";
//	var p_CookieValue = "";	
//    var i;
//	for (i = 0; i<p_CookiesCount;)
//	{	
//		p_TempCookie = p_ArrCookies[i].split("=");
//		// and trim left/right whitespace while we're at it
//		p_CookieName = p_TempCookie[0].replace(/^\s+|\s+$/g, "");

//		// if the extracted name matches passed check_name
//		if ( p_CookieName == p_Name )
//		{
//			
//			// we need to handle case where cookie has no value but exists (no = sign, that is):
//			if ( p_TempCookie.length > 1 )
//			{
//				p_CookieValue = unescape( p_TempCookie[1].replace(/^\s+|\s+$/g, "") );
//			}
//			// note that in cases where cookie is initialized but no value, null is returned
//			return p_CookieValue;			
//		}
//		p_CookieValue = null;
//		p_CookieName = "";
//		i++;
//	}
//	return null;
//}

//// this deletes the cookie when called
//function Delete_Cookie( name, path, domain ) {
//if ( Get_Cookie( name ) ) document.cookie = name + "=" +
//( ( path ) ? ";path=" + path : "") +
//( ( domain ) ? ";domain=" + domain : "" ) +
//";expires=Thu, 01-Jan-1970 00:00:01 GMT";
//}

/*
 *  Check Cookie
 */
function f_CheckCookie()
{
    var p_Username = f_GetCookie("username");
    if(p_Username != null && p_Username != "")
    {
        alert('Welcome again ' + p_Username + '!');
    }
    else
    {
        p_Username = prompt('Please enter your name:',"");
        if(p_Username != null && p_Username != "")
        {
            f_SetCookie('username',p_Username,365);
        }
    }
}

/*
 *  Change Button CSS
 */
function f_ChangeButtonCss(p_CtrID,p_ButtonChangePos,p_OldCss,p_NewCss)
{   
    var p_Ctrl;
    var p_ArrButtonID = CommonScripts.ArrButtonFocusID.split("|");    
    if(p_ArrButtonID[p_ButtonChangePos] != "")
    {
        p_Ctrl = f_E(p_ArrButtonID[p_ButtonChangePos]);
        if(p_Ctrl)
        {
            p_Ctrl.className = p_OldCss;
        }
    }
    p_Ctrl = f_E(p_CtrID);
    if(p_Ctrl)
    {
        p_Ctrl.className = p_NewCss;
    }
    p_ArrButtonID[p_ButtonChangePos] = p_CtrID;
    CommonScripts.ArrButtonFocusID = p_ArrButtonID.join("|");
}

/*
 *  Change Button CSS for Ctrl
 */
function f_ChangeControlCss(p_Ctrl,p_ActiveCss,p_DeactiveCss)
{   
    if(p_Ctrl.className.indexOf(p_ActiveCss) != -1)    
    {        
        p_Ctrl.className = p_Ctrl.className.replace(new RegExp(p_ActiveCss,'g'),p_DeactiveCss);        
    }
    else
    if(p_Ctrl.className.indexOf(p_DeactiveCss) != -1) 
    {   
        p_Ctrl.className = p_Ctrl.className.replace(new RegExp(p_DeactiveCss,'g'),p_ActiveCss);        
    }
    else
    if(p_Ctrl.className == "")
    {
        p_Ctrl.className = p_ActiveCss;        
    }
    else
    {
        p_Ctrl.className = " " + p_ActiveCss;        
    }
}

/*
 *  Check Pattern REGEX
 */
function f_CheckREGEX(p_Value,p_Format,p_IgnoreCase) {    
    var p_REGEXP;
    if(p_IgnoreCase)
        p_REGEXP = new RegExp(p_Format,"i");
    else
        p_REGEXP = new RegExp(p_Format);        
    return p_REGEXP.test(p_Value);
}

/*
 *  Convert Vietnamese to English
 */
function f_ConvertVi2En(p_String)
{
    var p_Str = new StringBuffer();	
    
    p_Str.append('[').append(unescape("%u0102")).append(',').append(unescape("%C2")).append(',').append(unescape("%C1")).append(',').append(unescape("%C0")).append(',').append(unescape("%u1EA2")).append(',').append(unescape("%C3")).append(',').append(unescape("%u1EA0")).append(',').append(unescape("%u1EAE")).append(',').append(unescape("%u1EB0")).append(',').append(unescape("%u1EB2")).append(',').append(unescape("%u1EB4")).append(',').append(unescape("%u1EB6")).append(',').append(unescape("%u1EA4")).append(',').append(unescape("%u1EA6")).append(',').append(unescape("%u1EA8")).append(',').append(unescape("%u1EAA")).append(',').append(unescape("%u1EAC")).append(']');	
	var p_NomarkKeyA=new RegExp(p_Str.toString(),'g');
	p_Str.removeAll();
	
	p_Str.append('[').append(unescape("%u0103")).append(',').append(unescape("%E2")).append(',').append(unescape("%E1")).append(',').append(unescape("%E0")).append(',').append(unescape("%u1EA3")).append(',').append(unescape("%E3")).append(',').append(unescape("%u1EA1")).append(',').append(unescape("%u1EAF")).append(',').append(unescape("%u1EB1")).append(',').append(unescape("%u1EB3")).append(',').append(unescape("%u1EB5")).append(',').append(unescape("%u1EB7")).append(',').append(unescape("%u1EA5")).append(',').append(unescape("%u1EA7")).append(',').append(unescape("%u1EA9")).append(',').append(unescape("%u1EAB")).append(',').append(unescape("%u1EAD")).append(']');	
    var p_NomarkKeya=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%CA")).append(',').append(unescape("%C9")).append(',').append(unescape("%C8")).append(',').append(unescape("%u1EBA")).append(',').append(unescape("%u1EBC")).append(',').append(unescape("%u1EB8")).append(',').append(unescape("%u1EBE")).append(',').append(unescape("%u1EC0")).append(',').append(unescape("%u1EC2")).append(',').append(unescape("%u1EC4")).append(',').append(unescape("%u1EC6")).append(']');    
    var p_NomarkKeyE=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%EA")).append(',').append(unescape("%E9")).append(',').append(unescape("%E8")).append(',').append(unescape("%u1EBB")).append(',').append(unescape("%u1EBD")).append(',').append(unescape("%u1EB9")).append(',').append(unescape("%u1EBF")).append(',').append(unescape("%u1EC1")).append(',').append(unescape("%u1EC3")).append(',').append(unescape("%u1EC5")).append(',').append(unescape("%u1EC7")).append(']');
    var p_NomarkKeye=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%D4")).append(',').append(unescape("%u01A0")).append(',').append(unescape("%D3")).append(',').append(unescape("%D2")).append(',').append(unescape("%u1ECE")).append(',').append(unescape("%D5")).append(',').append(unescape("%u1ECC")).append(',').append(unescape("%u1ED0")).append(',').append(unescape("%u1ED2")).append(',').append(unescape("%u1ED4")).append(',').append(unescape("%u1ED6")).append(',').append(unescape("%u1ED8")).append(',').append(unescape("%u1EDA")).append(',').append(unescape("%u1EDC")).append(',').append(unescape("%u1EDE")).append(',').append(unescape("%u1EE0")).append(',').append(unescape("%u1EE2")).append(']');
    var p_NomarkKeyO=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%F4")).append(',').append(unescape("%u01A1")).append(',').append(unescape("%F3")).append(',').append(unescape("%F2")).append(',').append(unescape("%u1ECF")).append(',').append(unescape("%F5")).append(',').append(unescape("%u1ECD")).append(',').append(unescape("%u1ED1")).append(',').append(unescape("%u1ED3")).append(',').append(unescape("%u1ED5")).append(',').append(unescape("%u1ED7")).append(',').append(unescape("%u1ED9")).append(',').append(unescape("%u1EDB")).append(',').append(unescape("%u1EDD")).append(',').append(unescape("%u1EDF")).append(',').append(unescape("%u1EE1")).append(',').append(unescape("%u1EE3")).append(']');
    var p_NomarkKeyo=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%u01AF")).append(',').append(unescape("%DA")).append(',').append(unescape("%D9")).append(',').append(unescape("%u1EE6")).append(',').append(unescape("%u0168")).append(',').append(unescape("%u1EE4")).append(',').append(unescape("%u1EE8")).append(',').append(unescape("%u1EEA")).append(',').append(unescape("%u1EEC")).append(',').append(unescape("%u1EEE")).append(',').append(unescape("%u1EF0")).append(']');
    var p_NomarkKeyU=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();

    p_Str.append('[').append(unescape("%u01B0")).append(',').append(unescape("%FA")).append(',').append(unescape("%F9")).append(',').append(unescape("%u1EE7")).append(',').append(unescape("%u0169")).append(',').append(unescape("%u1EE5")).append(',').append(unescape("%u1EE9")).append(',').append(unescape("%u1EEB")).append(',').append(unescape("%u1EED")).append(',').append(unescape("%u1EEF")).append(',').append(unescape("%u1EF1")).append(']');
    var p_NomarkKeyu=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%CD")).append(',').append(unescape("%CC")).append(',').append(unescape("%u1EC8")).append(',').append(unescape("%u0128")).append(',').append(unescape("%u1ECA")).append(']');
    var p_NomarkKeyI=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%ED")).append(',').append(unescape("%EC")).append(',').append(unescape("%u1EC9")).append(',').append(unescape("%u0129")).append(',').append(unescape("%u1ECB")).append(']');
    var p_NomarkKeyi=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%DD")).append(',').append(unescape("%u1EF2")).append(',').append(unescape("%u1EF6")).append(',').append(unescape("%u1EF8")).append(',').append(unescape("%u1EF4")).append(']');
    var p_NomarkKeyY=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%FD")).append(',').append(unescape("%u1EF3")).append(',').append(unescape("%u1EF7")).append(',').append(unescape("%u1EF9")).append(',').append(unescape("%u1EF5")).append(']');
    var p_NomarkKeyy=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%u0110")).append(']');    
    var p_NomarkKeyD=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    p_Str.append('[').append(unescape("%u0111")).append(']');
    var p_NomarkKeyd=new RegExp(p_Str.toString(),'g');
    p_Str.removeAll();
    
    var p_NomarkKeyOther=new RegExp('[!-/,:,\[-^,`,{-~]','g');

    p_String=p_String.replace(p_NomarkKeyOther,'');
	p_String=p_String.replace(/ /g,'_');
	p_String=p_String.replace(p_NomarkKeyA,'A');
	p_String=p_String.replace(p_NomarkKeya,'a');
	p_String=p_String.replace(p_NomarkKeyE,'E');
	p_String=p_String.replace(p_NomarkKeye,'e');
	p_String=p_String.replace(p_NomarkKeyO,'O');
	p_String=p_String.replace(p_NomarkKeyo,'o');
	p_String=p_String.replace(p_NomarkKeyU,'U');
	p_String=p_String.replace(p_NomarkKeyu,'u');
	p_String=p_String.replace(p_NomarkKeyI,'I');
	p_String=p_String.replace(p_NomarkKeyi,'i');
	p_String=p_String.replace(p_NomarkKeyY,'Y');
	p_String=p_String.replace(p_NomarkKeyy,'y');
	p_String=p_String.replace(p_NomarkKeyD,'D');
	p_String=p_String.replace(p_NomarkKeyd,'d');
    return p_String;
}

/*
 *  Convert Array Item to Array
 */
 function f_ConvertArrayItemToArray(p_Array,p_SeperateChar)
 {
    var p_Count = p_Array.length;
    var i;
    for(i=0;i<p_Count;)
    {
        p_Array[i] = p_Array[i].split(p_SeperateChar);
        i++;
    }
 }
 
/*
 *   Set HTML to The Box
 */
function f_SetTextToBox(p_Box,p_Text)
{
    var p_CharPos,p_CharWidth;
    var p_TestBox = document.createElement("div");
    p_TestBox.style.cssText = "position:absolute;z-index:-1";
    p_TestBox.innerHTML = p_Text;
    p_TestBox = p_Box.appendChild(p_TestBox);    
    p_CharWidth = p_TestBox.offsetWidth/p_Text.length;
    p_Box.removeChild(p_TestBox);
    p_CharPos = parseInt((p_Box.offsetWidth - p_CharWidth)/p_CharWidth,10);    
    p_Box.innerHTML = p_Text.substring(0,p_CharPos);
}

/*
 *   Get HTML according Width
 */
function f_GetHTMLAccordingWidth(p_Width,p_StyleText,p_Text)
{   
    var p_CharPos,p_CharWidth;
    var p_TestBox = document.createElement("div");
    p_TestBox.style.cssText = "position:absolute;z-index:-1;" + p_StyleText;
    p_TestBox.innerHTML = p_Text;
    p_TestBox = document.body.appendChild(p_TestBox);     
    p_CharWidth = p_TestBox.offsetWidth/p_Text.length;
    document.body.removeChild(p_TestBox);
    p_CharPos = parseInt((p_Width - p_CharWidth)/p_CharWidth,10);       
    return p_Text.substring(0,p_CharPos - 2);
}

/*
 *   Get Width according text
 */
function f_GetWidthAccordingText(p_StyleText, p_Text) {
    var p_TestBox,p_Width;
    p_TestBox = document.createElement("div");
    p_TestBox.style.cssText = "position:absolute;z-index:-1;" + p_StyleText;
    p_TestBox.innerHTML = p_Text;
    p_TestBox = document.body.appendChild(p_TestBox);
    p_Width = p_TestBox.offsetWidth;
    document.body.removeChild(p_TestBox);
    return p_Width;
}


/*
 *  Get higest z-index in web page
 */
 function f_GetHiestZIndexOnPage()
 {
    var p_MaxZIndex = 0;
    var p_AllElems = document.getElementsByTagName?document.getElementsByTagName("*"):document.all;
    var i,p_Ctrl,p_Style,p_Number;
    var p_ElemsCount = p_AllElems.length;    
    for(i=0;i<p_ElemsCount;) 
    {
        p_Ctrl = p_AllElems[i];
        p_Style = null;
        if (p_Ctrl.currentStyle) 
        {
            p_Style = p_Ctrl.currentStyle;
        }
        else 
        if (document.defaultView && document.defaultView.getComputedStyle) 
        {
            p_Style = document.defaultView.getComputedStyle(p_Ctrl,"");
        }        
        if (p_Style) 
        {
            p_Number = Number(p_Style.zIndex);
        }
        else 
        {
            p_Number = Number(p_Ctrl.style.zIndex);
        }
        if (!isNaN(p_Number)) 
        {
            p_MaxZIndex = Math.max(p_MaxZIndex,p_Number);
        }
        i++;
    }
    return p_MaxZIndex;
}
/*
function logIt(e)
{
    var target= e.srcElement ? e.srcElement : e.target;
    var id= target ? (target.id ? target.id : "NO ID") : "NO TARGET";
    AlertWindow.Show(id,true,1,true);
    if (e.preventDefault)
	e.preventDefault();
    else
	e.returnValue= false;
     return false;
}
*/

/*
 *  Get Path of the Page
 */
function f_GetPath() {
    var p_Path = new StringBuffer();
    var p_PathArray = window.location.pathname.split("/");
    var p_Length = p_PathArray.length;
    var i = (window.location.hostname == "localhost") ? 3 : 2;
    for (; i < p_Length; ) {
        p_Path.append("../");
        i++;
    }
    return p_Path.toString();
}

/*
 *  Create Sheet Combo HTML
 */
function f_CreateComboboxHTML(p_ComboID, p_Data, p_ValueColumnName, p_TextColumnName, p_ApplyCssClass, p_OnchangeFunction) {
    var i, p_HTML, p_Count;
    p_HTML = new StringBuffer();    
    p_Count = p_Data.Rows.length;
    if (p_Count > 0) {
        var p_Row, p_Text, p_Value, p_Key;
        p_Key = new RegExp("'", "g");
        p_HTML.append("<select id='").append(p_ComboID).append("'").append(p_ApplyCssClass == null ? "" : (" class='" + p_ApplyCssClass + "'")).append(p_OnchangeFunction == null ? "" : (" onchange=\"" + p_OnchangeFunction + "\"")).append(">");
        p_HTML.append("<option value=''>- Select -</option>");
        
        for (i = 0; i < p_Count; ) {
            p_Row = p_Data.Rows[i];
            p_Text = p_Row[p_TextColumnName];
            p_Text = p_Text.replace(p_Key, "");
            p_Value = p_Row[p_ValueColumnName];  //TABLE_NAME
            p_Value = p_Value.replace(p_Key, "");

            p_HTML.append("<option value='").append(p_Value).append("'>").append(p_Text).append("</option>");
            i++;
        }
        p_HTML.append("</select>");
    }        
    return p_HTML.toString();
}

/*
*  Create Sheet Combobox from array values
*/
function f_CreateCombobox(p_BoxID, p_ComboID, p_ArrItemName, p_ArrItemValue, p_ApplyCssClass, p_OnchangeFunction) {
    var i, p_HTML, p_Count;
    p_HTML = new StringBuffer();
    p_Count = p_ArrItemName.length;
    if (p_Count > 0) {                
        p_HTML.append("<select id='").append(p_ComboID).append("'").append(p_ApplyCssClass == null ? "" : (" class='" + p_ApplyCssClass + "'")).append(p_OnchangeFunction == null ? "" : (" onchange=\"" + p_OnchangeFunction + "\"")).append(">");
        p_HTML.append("<option value=''>- Select -</option>");

        for (i = 0; i < p_Count; ) {
            p_HTML.append("<option value='").append(p_ArrItemValue[i]).append("'>").append(p_ArrItemName[i]).append("</option>");
            i++;
        }
        p_HTML.append("</select>");
    }
    if (p_BoxID != null)
        f_E(p_BoxID).innerHTML = p_HTML.toString();
    return p_HTML.toString();
}

/*
 *  Insert Node after
 */
function f_InsertAfter(p_newElement,p_targetElement) {
    //target is what you want it to go after. Look for this elements parent.    
    var p_Parent = p_targetElement.parentNode; 
    //if the parents lastchild is the targetElement...
    if(p_Parent.lastchild == p_targetElement) 
    {
        //add the newElement after the target element.
        p_Parent.appendChild(p_newElement);        
    } 
    else 
    {
        // else the target has siblings, insert the new element between the target and it's next sibling.
        p_Parent.insertBefore(p_newElement, p_targetElement.nextSibling);
    }
    return p_newElement;
}

/*
 *  Get upload file name
 */
function f_GetUploadFilename(p_UploadFileID) {
    var p_UploadFilePath, p_FileName, p_Arr,p_Ext;
    p_UploadFilePath = f_E(p_UploadFileID).value;
    p_Arr = p_UploadFilePath.split("\\");
    p_FileName = p_Arr[p_Arr.length - 1];
    p_Ext = p_FileName.substring(p_FileName.lastIndexOf(".")).toLowerCase();
    return f_ConvertVi2En(p_FileName.substring(0,p_FileName.lastIndexOf("."))) + p_Ext;
}

/*
 *  Check Item to existed in Array
 */
function f_CheckItemExixtInArray(p_ArrayData, p_ItemValue) {
    var p_Result = -1;
    var i;
    var p_Count = p_ArrayData.length;
    for (i = 0; i < p_Count; ) {
        if (p_ItemValue == p_ArrayData[i]) {
            p_Result = i;
            break;
        }
        i++;
    }
    return p_Result;
}

/*
*  Check Array containing a string
*/
function f_CheckArrayContainString(p_ArrayData, p_ItemValue) {
    var p_Result = -1;
    var i;
    var p_Count = p_ArrayData.length;
    for (i = 0; i < p_Count; ) {
        if (p_ArrayData[i].indexOf(p_ItemValue) != -1) {
            p_Result = i;
            break;
        }
        i++;
    }
    return p_Result;
}

/*
 *  Create Block Page Element
 */
function f_CreateBlockPage(p_BlockID,p_ExitFunction)
{
    if (f_E(p_BlockID) == undefined) {
        var p_zIndex = f_GetHiestZIndexOnPage() + 1;
        //Create Bottom Border
        var d = document;
        var p_BottomBorderID = p_BlockID + "BottomBorder";
        var p_BottomBorder = f_E(p_BottomBorderID);   
        if(p_BottomBorder == undefined)
        {
            p_BottomBorder = d.createElement("div");
            p_BottomBorder.id = p_BottomBorderID;
            p_BottomBorder.style.cssText = "clear:both;height:0px";            
            p_BottomBorder = d.body.appendChild(p_BottomBorder);             
        }
        var p_BlockCtrl = d.createElement("div");
        p_BlockCtrl.id = p_BlockID;
        p_BlockCtrl.style.cssText = "position:absolute;display:block;left:0px;top:0px;width:100%;height:100%;background:url(../Images/overlay.png);z-index:" + p_zIndex;
        p_BlockCtrl = d.body.appendChild(p_BlockCtrl);        
        p_BlockCtrl.onclick = function () {
            setTimeout(p_ExitFunction, 0);
        };
        //Check body height is bigger than Bottom Border Offset Top
        if(p_BottomBorder.offsetTop > d.body.offsetHeight)   
        {
            p_BlockCtrl.style.height = p_BottomBorder.offsetTop + "px";          
        }   
    }
}

/*
 *  Wrap image to box
 */
function f_WarpImageToBox(p_ImageID,p_BoxWidth,p_BoxHeight,p_WrapType)
{
    var p_ImageCtrl = f_E(p_ImageID);
    switch(p_WrapType)
    {
        case "none":
        {
            p_ImageCtrl.style.position = "absolute";            
            p_ImageCtrl.onload = function () {                
                this.removeAttribute("width");
                this.removeAttribute("height");
                var p_WidthRatio = this.width/p_BoxWidth;
                var p_HeightRatio = this.height/p_BoxHeight;                  
                if(p_WidthRatio > 1 || p_HeightRatio > 1)
                {
                    if(p_WidthRatio > p_HeightRatio)
                    {                        
                        this.width = p_BoxWidth;
                    }
                    else
                    {                        
                        this.height = p_BoxHeight;                         
                    }
                }                   
                this.style.left = parseInt((p_BoxWidth - this.width)/2) + "px";
                this.style.top = parseInt((p_BoxHeight - this.height)/2) + "px";                
            };
            break;
        }
        case "scale":
        {
            break;
        }
    }
}

/*
 *  Change Language Webpage
 */
function f_ChangeWebsiteLanguage(p_LangID) {
    if (g_LangID != p_LangID) {
        CommonFunction.SetSessionValue(p_LangID, "LangID");
        var p_URL = window.location.pathname;

        p_URL = (p_URL.indexOf("?") == -1 ? "?" : "&") + "LangID=" + p_LangID;

        window.open(p_URL, "_self");
    }
}

/*
*  SEO URL is friendly
*/
function f_UrlSeo(p_URL) {
    var i, p_ArrCount, p_Key, p_ArrChar, p_ArrHTML;
    p_ArrChar = new Array("/", "%");
    p_ArrHTML = new Array("+", "");
    p_ArrCount = p_ArrChar.length;
    for (i = 0; i < p_ArrCount; ) {
        p_Key = new RegExp(p_ArrChar[i], "g");
        p_String = p_URL.replace(p_Key, p_ArrHTML[i]);
        i++;
    }

    p_URL = p_URL.replace(/\(/g, "");
    p_URL = p_URL.replace(/\)/g, "");
    p_URL = p_URL.replace(/&amp;+/g, "");
    p_URL = p_URL.replace(/&quot;+/g, "");
    p_URL = p_URL.replace(/:+/g, "");
    p_URL = p_URL.replace(/\.+/g, "");
    p_URL = p_URL.replace(/\,+/g, "");
    p_URL = p_URL.replace(/\s+/g, "+");
    p_URL = p_URL.replace(/&/g, "+");
    return p_URL;
}

/*
 *  Get Absolute URL of the link 
 *  Ex : f_GetAbsoluteURL('http://localhost:49167/Admin/TestPage.aspx','../Default.aspx')  -> http://localhost:49167/Admin/Default.aspx
 */
function f_GetAbsoluteURL(p_CurrentURL, p_RelativeURL) {    
    var p_Result;
    if (p_RelativeURL.indexOf("../") == 0 || p_RelativeURL.indexOf("/") == 0) {
        var i, p_ArrCurrentURL, p_ArrRelativeURL, p_Count;
        p_ArrCurrentURL = p_CurrentURL.split("/");
        p_ArrRelativeURL = p_RelativeURL.split("/");
        p_Count = p_ArrRelativeURL.length;
        p_ArrCurrentURL.splice(p_ArrCurrentURL.length - 1, 1);
        for (i = p_Count; i >= 0; ) {
            if (p_ArrRelativeURL[i] == "..") {
                p_ArrCurrentURL.splice(p_ArrCurrentURL.length - 1, 1);
                p_ArrRelativeURL.splice(i, 1);                
            }
            i--;
        }
        p_Result = p_ArrCurrentURL.join("/") + "/" + p_ArrRelativeURL.join("/");
    }
    else {
        p_Result = p_RelativeURL;
    }
    return p_Result;
}

/*
 *  Get Scroll Y Offset
 */
function f_GetYOffset() {
    var p_PageY;
    if (typeof (window.pageYOffset) == 'number') {
        p_PageY = window.pageYOffset;
    }
    else {
        p_PageY = document.documentElement.scrollTop;
    }
    return p_PageY;
}

/*
 *  Get Array Char Position
 */
function f_GetArrayCharacterPosition(p_String,p_FindedString)
{
    var p_Array,p_CharPos;
    p_Array = new Array();    
    p_CharPos = p_String.lastIndexOf(p_FindedString);
    while(p_CharPos != -1)    
    {
        p_Array.push(p_CharPos);
        p_String = p_String.substring(0,p_CharPos);
        p_CharPos = p_String.lastIndexOf(p_FindedString);
    }
    return p_Array;
}

/*
 *  Get the full ID when konw a part ID
 */
function f_GetFullControlID(p_PaternID) {
    var i, j, p_FormCount, p_ElementCount, p_ElementID, p_Result;
    p_Result = "";
    p_FormCount = document.forms.length;
    for (i = 0; i < p_FormCount; ) {
        p_ElementCount = document.forms[i].elements.length;

        for (j = 0; j < p_ElementCount; ) {
            p_ElementID = document.forms[i].elements[j].id;
            if (p_ElementID.indexOf(p_PaternID) != -1) {
                return p_Result = p_ElementID;
            }
            j++;
        }
        i++;
    }
    return p_Result;
}
