﻿var datetimeNow = new Date();
var _Month = datetimeNow.getMonth() + 1;
var _Year = datetimeNow.getFullYear();
//var AriticleID= ($.cookie('articleID') == null) ? '-1' : $.cookie('articleID'),
//var UrlDetail =($.cookie('urlTinTucDetail') == null) ? '-1' : $.cookie('urlTinTucDetail'),
AGBB.App = $.extend({
    AriticleID: ($.cookie('articleID') == null) ? '-1' : $.cookie('articleID'),
    UrlDetail: ($.cookie('urlTinTucDetail') == null) ? '-1' : $.cookie('urlTinTucDetail'),
    Domain: 'Files',
    layout: 'TSS',
    path: '/DesktopModules/AG.TinTuc',
    skin: 'TSS',
    version: '1.0',
    modules: {},
    currentPage: false,
    maxModuleId: 0,
    currentModule: null,
    configPath: '.xml',
    option: {},
    tabid: '67',
    time: function() {
        var now = new Date();
        var year = now.getYear();
        var month = now.getMonth() + 1;
        var date = now.getDate();
        var hours = now.getHours();
        var minutes = now.getMinutes();
        var seconds = now.getSeconds();
        var time = year.toString() + month.toString() + date.toString() + hours.toString() + minutes.toString() + seconds.toString();
        return time;
    },
    init: function() {
        if (typeof (AGBB.allLinks) == 'undefined') {
            AGBB.allLinks = {};
            var loader = jQuery('<div id="loader"><img src="' + '/Portals/0/Images/Icon/loading.gif" alt="loading..." /></div>')
				        .css({ position: "absolute", top: "1em", left: "1em" })
				        .appendTo("#ContentAGBB")
				        .hide();
            jQuery().ajaxStart(function() {
                loader.show();
            }).ajaxStop(function() {
                loader.hide();
            }).ajaxError(function(a, b, e) {
                //throw e;
            });
        };

        AGBB.App.setcookie();
        //        AGBB.App.loadPage();
    },
    loadPage: function() {
        //   alert("2");
        try {
            AGBB.App.configPath = AGBB.App.page + '.xml';
            $.extend(AGBB.App, AGBB.xml(AGBB.App.path + '/App/Page/' + AGBB.App.configPath, 'page'));

            AGBB.loadData('ContentAGBB', AGBB.App.path + '/App/layout/' + this.layout + '.htm');
            //    alert("page" + AGBB.App.page);
            $.each(AGBB.App.regions, function(i, item) {
                if (item.name != null && item.name != '')
                    AGBB.loadData(item.id, AGBB.App.path + '/App/' + item.path + '/' + item.name + '.htm');

            });

            $.each(AGBB.App.controls, function(i, item) {
                if (item.jsControl != null && item.jsControl != '') {
                    if (item.jsData != null && item.jsData != '') {
                        AGBB.loadjs('includeJs', AGBB.App.path + '/App/region/' + item.path + '/' + item.jsData + '.js', function() { AGBB.loadjs('includeJs', AGBB.path + '/App/region/' + item.path + '/' + item.jsControl + '.js', function() { }); });
                    }
                    else {
                        AGBB.loadjs('includeJs', AGBB.App.path + '/App/region/' + item.path + '/' + item.jsControl + '.js', function() { });
                    }


                }
            });

        }
        catch (err) {
        }

    },

    SubString: function(current_str, position) {
        var cL = current_str.length;

        var tem;
        //neu nho hon
        if (position < cL) {
            tem = current_str.substring(0, position);
            var pos = tem.lastIndexOf(' ');

            var kaka = tem.substring(0, pos);
            return kaka + '...';

        }
        else {
            return current_str;
        }
    },
    DeleteCookie: function(name) {
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval = GetCookie(name);
        document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
    },
    CheckOdd: function(number) {
        if ((number % 2) == 0) {
            return true;
        }
        else
            return false;
    },
    GetURLParamValue: function(param, d) {
        var _url = document.location.href.toLowerCase();
        var i = _url.indexOf('/' + param + '/');
        //if URL have URLrewrite style
        if (i >= 0) {
            _url = _url.substring(i + param.length + 2, _url.length);
            i = _url.indexOf('/');
            if (i >= 0) { _url = _url.substring(0, i); return _url; }
        } else {
            //If URL have ? style
            i = _url.indexOf(param + '=');
            if (i >= 0) {
                _url = _url.substring(i + param.length + 1, _url.length);
                i = _url.indexOf('&');
                if (i >= 0) _url = _url.substring(0, i);
                return _url;
            }
        }
        return d;
    },
    // Trang
    page: ($.cookie('page') == null) ? '-1' : $.cookie('page'),
    setcookiepage: function(Page) {
        AGBB.App.page = Page;
        $.cookie('page', AGBB.App.page);
        var url = document.location.href.toLowerCase();
        var i = url.indexOf('path');
        if (i == -1) {
            location.hash = '#' + AGBB.App.page + ',' + AGBB.App.AriticleID + ',' + AGBB.App.UrlDetail;
        }

    },

    setPage: function(Page) {
        AGBB.App.page = Page;
        $.cookie('page', AGBB.App.page);
       // AGBB.App.loadPage();

    },
    setcookie: function() {
        var temp = location.hash.replace('#', '');
        var arrTTDN = new Array();
        var _tabidd = AGBB.request("tabid");
        if (temp == '') {
            // alert("1");
            switch (_tabidd) {
                case '242': AGBB.App.setcookiepage("TroGiup_PhanTichKyThuat_Page");
                    break;
                case '250': AGBB.App.setcookiepage("GioiThieu_CongTy_Page");
                    break;
                case '251': AGBB.App.setcookiepage("GioiThieu_ViCongDong_Page");
                    break;
                case '253': AGBB.App.setcookiepage("GioiThieu_LienHe_Page");
                    break;
                case '262': AGBB.App.setcookiepage("CoDongKLS_BaoCaoTaiChinh_Page");
                    break;
                case '263': AGBB.App.setcookiepage("CoDongKLS_TinHoatDong_Page");
                    break;
                    alert("1");
                case '265': AGBB.App.setcookiepage("TinTuc_Cohoivieclam_Page");
                    break;
                case '282': AGBB.App.setcookiepage("PhanTich_BanTinKLS_Page");
                    break;
                case '234': AGBB.App.setcookiepage("TinTuc_LichSuKien_Page");
                    break;
                case '235': AGBB.App.setcookiepage("TinTuc_TinDoanhNghiep_Page");
                    break;
                case '236': AGBB.App.setcookiepage("TinTuc_TinChungKhoan_Page");
                    break;
                case '237': AGBB.App.setcookiepage("TinTuc_BDS_Page");
                    break;
                case '238': AGBB.App.setcookiepage("TinTuc_TaiChinhNganHang_Page");
                    break;
                case '239': AGBB.App.setcookiepage("TinTuc_TaiChinhQuocTe_Page");
                    break;
                case '240': AGBB.App.setcookiepage("TinTuc_KinhTeDauTu_Page");
                    break;
                case '67': AGBB.App.setcookiepage("HomePage");
                    break;
                case '289': AGBB.App.setcookiepage("TroGiup_HDGD_Page");
                    break;
                case '290': AGBB.App.setcookiepage("TroGiup_ChiSoTaiChinh_Page");
                    break;
                case '291': AGBB.App.setcookiepage("TroGiup_KhaiNiemCoBan_Page");
                    break;
                case '310': AGBB.App.setcookiepage("TinTuc_TinNoiBat_Page");
                    break;
                case '322': AGBB.App.setcookiepage("TroGiup_HoTroCams_Page");
                    break;
                default:
                    AGBB.App.setcookiepage("HomePage");
                    break;

            };

            //  alert("2");
        }
        else {
            AGBB.App.pageDetail();
        }

    },
    pageDetail: function() {
        var url = location.hash.replace('#', '');

        var arrTT = new Array();
        arrTT = url.split(',');

        if (url != '') {
            var arrTT = new Array();
            arrTT = url.split(',');

            if (arrTT[2] != '' && arrTT[1] != '' && arrTT[1] != '-1' && arrTT[2] != '-1' && arrTT[0] != '' && arrTT[0] != '-1') {
                // alert("1 : " + arrTT[0] + "2: " + arrTT[1] + "3 : " + arrTT[2]);
                AGBB.App.page = arrTT[0]; $.cookie('page', "AD_Page");
                AGBB.App.AriticleID = arrTT[1]; $.cookie('articleID', AGBB.App.AriticleID);
                AGBB.App.UrlDetail = arrTT[2]; $.cookie('urlTinTucDetail', AGBB.App.UrlDetail);
                AGBB.App.loadPage();
            }
        }
    },

    GetCategory: function() {
        var _page = AGBB.App.page;
        switch (_page) {
            case 'CoDongKLS_TinHoatDong_Page': return "71";
                break;
                
            case 'TinTuc_TinChungKhoan_Page': return "41";
                break;
            case 'TinTuc_KinhTeDauTu_Page': return "87";
                break;
            case 'TinTuc_TaiChinhNganHang_Page': return "50";
                break;
            case 'TinTuc_OTC_Page': return "47";
                break;
            case 'TinTuc_TaiChinhQuocTe_Page': return "42"; //thong bao
                break;
            case 'Tintuc_CSC_CBTT_Page': return "78";
                break;
            case 'Tintuc_Ykienchuyengia_Page': return "79";
                break;
            case 'TinTuc_TinDoanhNghiep_Page': return "51";
                break;
            case 'TroGiup_KhaiNiemCoBan_Page': return "91";
                break;
            case 'TroGiup_ChiSoTaiChinh_Page': return "90";
                break;
            case 'TroGiup_HoTroCAMS_Page': return "95";
                break;
            case 'TinTuc_BDS_Page': return "86";
                break;
            case 'TinTuc_Cohoivieclam_Page': return "41";
                break;
            default:
                return "41"; //"tin trong nuoc"
                break;
        }
    },
    // Ngôn ngữ
    language: ($.cookie('language') == 'en') ? 'en' : 'vi',
    // Mã chứng khoán
    symbol: ($.cookie('symbol') == null) ? '-1' : $.cookie('symbol'),
    getSymbol: function() {
        if (AGBB.App.page == "-1") {
            AGBB.App.symbol = "ABT";

            AGBB.App.setTab();
        };

    },
setSymbol: function(Symbol) {
        AGBB.App.symbol = Symbol;
        $.cookie('symbol', AGBB.App.symbol);
    },

    urlTinTucDetail: ($.cookie('urlTinTucDetail') == null) ? '-1' : $.cookie('urlTinTucDetail'),
    // $.cookie('urlTinTucDetail', urldetail);
    setCookieUrlTinTucDetail: function(UrlDetail) {
        AGBB.App.UrlDetail = UrlDetail;
        $.cookie('urlTinTucDetail', AGBB.App.UrlDetail);
    },
   setPageDetail: function(Page, UrlDetail, Articleid) {
        AGBB.App.page = Page;
        $.cookie('page', AGBB.App.page);

        AGBB.App.AriticleID = Articleid;
        $.cookie('articleID', AGBB.App.AriticleID);

        AGBB.App.UrlDetail = UrlDetail;
        $.cookie('urlTinTucDetail', AGBB.App.UrlDetail);

        category = AGBB.App.GetCategory();

        var url = document.location.href.toLowerCase();
        var i = url.indexOf('path');
        if (i == -1) {
            location.hash = '#' + AGBB.App.page + ',' + AGBB.App.AriticleID + ',' + AGBB.App.UrlDetail;
        }

        //  AGBB.App.loadPage();

        //AGBB.App.TinTucDetail.LoadDatas(temp);
    },
    goToDetailHome: function(uRL, articleID, UrlDetail) {
        //alert(articleID);
        AGBB.App.page = "AD_Page";
        $.cookie('page', AGBB.App.page);
        //alert( $.cookie('page', AGBB.App.page));
        AGBB.App.AriticleID = articleID;
        $.cookie('articleID', AGBB.App.AriticleID);
        AGBB.App.UrlDetail = UrlDetail;
        $.cookie('urlTinTucDetail', AGBB.App.UrlDetail);
        var URL = "http://" + location.host + "\/" + uRL + "?articleID=" + articleID + "&path=" + UrlDetail;
        //   alert(URL);
        document.location.href = URL; //uRL + "?articleid=" + articleID + "&path=" + UrlDetail;
        AGBB.App.setPageDetail('AD_Content', UrlDetail);
    },
    setPageDetailNew: function(Page, UrlDetail, Articleid) {
        AGBB.App.page = Page;
        $.cookie('page', AGBB.App.page);

        AGBB.App.AriticleID = Articleid;
        $.cookie('articleID', AGBB.App.AriticleID);

        AGBB.App.UrlDetail = UrlDetail;
        $.cookie('urlTinTucDetail', AGBB.App.UrlDetail);

        category = AGBB.App.GetCategory();

        var url = document.location.href.toLowerCase();
        var i = url.indexOf('path');
        if (i == -1) {
            location.hash = '#' + AGBB.App.page + ',' + AGBB.App.AriticleID + ',' + AGBB.App.UrlDetail;
        }

        //  AGBB.App.loadPage();

        //AGBB.App.TinTucDetail.LoadDatas(temp);

    },

    goToDetail: function(uRL, articleID, UrlDetail) {
        //   alert("!");
        var URL = "http://" + location.host + "\/" + uRL + "#AD_Page," + articleID + "," + UrlDetail;
        document.location.href = URL;
    },
    //Current Page
    currentPage: ($.cookie('currentPage') == null) ? '1' : $.cookie('currentPage'),
    setCurrentPageDoiTac: function(CurrentPage) {
        AGBB.App.currentPage = CurrentPage;
        $.cookie('currentPage', AGBB.App.currentPage);
        //  AGBB.App.hose.CallBackData(CurrentPage);
        AGBB.App.IndexDoiTac.UpdateCSS(CurrentPage);
        try {
            AGBB.App.DoiTac.GetData("GioiThieu_DoiTac", "/ArticleFiles/Portal0/Gioi-thieu/Doi-tac/Doi-tac.xml", CurrentPage);
        }
        catch (err) {
        }

        AGBB.App.IndexDoiTac.SetTextIndex(CurrentPage);
        AGBB.App.IndexDoiTac.SetIndex(CurrentPage);
        // location.reload();
    },
    setCurrentPage: function(CurrentPage) {

        AGBB.App.Index.currentPage = CurrentPage;
        // $.cookie('currentPage', AGBB.App.Index.currentPage, { path: '/', expires: 2 });
        $.cookie('currentPage', AGBB.App.Index.currentPage);
        // alert(AGBB.App.page);
        AGBB.App.Index.UpdateCSS(CurrentPage);
        switch (AGBB.App.page) {
            case "CoDongKLS_TinHoatDong_Page": AGBB.App.Page.Paging(CurrentPage);
                //  AGBB.App.Page.Paging(CurrentPage);
                break;
            case "TinTuc_Cohoivieclam_Page": AGBB.App.Page.Paging(CurrentPage);
                //  AGBB.App.Page.Paging(CurrentPage);
                break;
            case "TroGiup_KhaiNiemCoBan_Page":
                AGBB.App.Page.Index(CurrentPage);
                break;
            case "TinTuc_TimKiemNangCao":
                AGBB.App.SearchAdvanced.LoadData(CurrentPage);
                break;
            case "TinTuc_DauGiaCoPhan":
                AGBB.App.SearchNguon.SearchSource(CurrentPage);
                break;
            case "TinTuc_FullText":
                AGBB.KetQuaTimKiemFullText.LoadDataFullText(CurrentPage);
                break;
            case "TinTuc_CongBoThongTin_Page":
                AGBB.App.TinTucCongBoThongTinSearch.TinTucCongBoThongTinSearchMaChungKhoan(CurrentPage);
                break;
            case "TinTuc_LichSuKien_Page":
                AGBB.App.TinTucLichSuKienSearch.TinTucLichSuKienSearchMaChungKhoan(CurrentPage);
                break;
            case 'TinTuc_ChungKhoanTheGioi_Page':
                AGBB.App.SearchByDate.SearchByPageNumber(1);
                break;
            case 'TinTuc_KinhTe_Page': AGBB.App.SearchByDate.SearchByPageNumber(CurrentPage);
                break;
            case 'TinTuc_TaiChinhTienTe_Page': AGBB.App.SearchByDate.SearchByPageNumber(CurrentPage);
                break;
            case 'TinTuc_BatDongSan_Page': AGBB.App.SearchByDate.SearchByPageNumber(CurrentPage);
                break;
            case 'TinTuc_DocNhieuNhat_Page': AGBB.App.SearchByDate.SearchByPageNumber(CurrentPage);
                break;
            case 'AD_Page': AGBB.App.TinNoiBat.FillDatas(CurrentPage);
                break;
            case 'TinTuc_TinNoiBat_Page': AGBB.App.TinTucNoiBat.FillDatas(CurrentPage);
                break;
            default:
                //AGBB.App.SearchByDate.SearchByPageNumber(CurrentPage);
                //alert("1");
                AGBB.App.Page.Index(CurrentPage);
                break;
        }

        AGBB.App.Index.SetTextIndex(CurrentPage);
        AGBB.App.Index.SetIndex(CurrentPage);
        // location.reload();
    },
    setPaging: function(CurrentPage) {
        AGBB.App.Paging.currentPage = CurrentPage;
        // $.cookie('currentPage', AGBB.App.Index.currentPage, { path: '/', expires: 2 });
        $.cookie('currentPage', AGBB.App.Paging.currentPage);
        // alert(AGBB.App.page);
        AGBB.App.Paging.UpdateCSS(CurrentPage);
        AGBB.App.TinLienQuan.FillDatas(CurrentPage)
        AGBB.App.Paging.SetTextPaging(CurrentPage);
        AGBB.App.Paging.SetPaging(CurrentPage);
        // location.reload();
    },
    // Page number
    pageNumber: ($.cookie('pageNumber') == null) ? '0' : $.cookie('pageNumber'),
    getPageNumber: function() {
        AGBB.App.pageNumber = 'pageNumber';
    },
    // max row
    maxRow: ($.cookie('maxRow') == null) ? '0' : $.cookie('maxRow'),
    getMaxRow: function() {
        AGBB.App.maxRow = $.cookie('maxRow');
    },
    setMaxRow: function(strMaxRow) {
        AGBB.App.maxRow = strMaxRow;
        $.cookie('maxRow', strMaxRow);
    },

    setPageNumber: function(PageNumber) {
        AGBB.App.pageNumber = PageNumber;
        $.cookie('pageNumber', AGBB.App.pageNumber);
        // AGBB.App.ChangeData();
    },
    ConvertStringToDayMonthYear: function(strDate) {
        //  alert(strDate);
    var date = new Date(strDate);
        var month;
        if (date.getMonth() == 0) {
            month = "01";
        }
         month = date.getMonth() + 1;
		
            if (month <= 9) {
                month = "0" + month;
            }
            //  };
        var day = date.getDate();
        if (day <= 9) {
            day = "0" + day;
        };
        // alert("2");
        return day + '/' + month + '/' + date.getFullYear();



    },
    ConvertToDayMonthYear: function(strDate) {
        //  alert(strDate);
    if (Encoder.isEmpty(strDate)) return "";
    var date = new Date(strDate);
		
        var month;
        if (date.getMonth() == 0) {
            month = "01";
        }
        month = date.getMonth() + 1;

        if (month <= 9) {
            month = "0" + month;
        }
        //  };
        var day = date.getDate();
        if (day <= 9) {
            day = "0" + day;
        };
        // alert("2");
        return day + '/' + month + '/' + date.getFullYear();
    },
    ConvertStringToHourMinus: function(strDate) {
        var date = new Date(strDate);
        var gio = date.getHours();
        if (gio == 0) {
            gio = "12";
        }
        else {
            if (gio <= 9) {
                gio = "0" + gio;
            }
        };
        var phut = date.getMinutes();
        if (phut <= 9) {
            phut = "0" + phut;
        }
        return gio + ':' + phut;

    },
    ConvertVietNameseToEnglish: function(strDate) {
   // alert(strDate);
      var arrDay=strDate.split('/');
 
        return arrDay[1] + '/' + arrDay[0]+ '/' + arrDay[2];
    }


});

//Hàm thư viện Ngày tháng CreateBy TuanN
DateUtils = {
    ConvertStringToDayMonthYear: function(strDate) {
        var date = new Date(strDate);
        var month;
        if (date.getMonth() == 0) {
            month = "01";
        }
        else {
            month = date.getMonth() + 1;
            if (month <= 9) {
                month = "0" + month;
            }
        };
        var day = date.getDate();
        if (day <= 9) {
            day = "0" + day;
        };
        return day + '/' + month + '/' + date.getFullYear();
    },
    ConvertStringToHourMinus: function(strDate) {
        var date = new Date(strDate);
        var gio = date.getHours();
        if (gio == 0) {
            gio = "12";
        }
        else {
            if (gio <= 9) {
                gio = "0" + gio;
            }
        };
        var phut = date.getMinutes();
        if (phut <= 9) {
            phut = "0" + phut;
        }
        return gio + ':' + phut;
    }, ConvertVietNameseToEnglish: function(strDate) {
        var arrDay = strDate.split('/');
        return arrDay[1] + '/' + arrDay[0] + '/' + arrDay[2];
    },
    GetDateTimeNow: function() {
        var now = new Date();
        var year = now.getYear();
        var month = now.getMonth() + 1;
        var date = now.getDate();
        var hours = now.getHours();
        var minutes = now.getMinutes();
        var seconds = now.getSeconds();
        var time = year.toString() + month.toString() + date.toString() + hours.toString() + minutes.toString() + seconds.toString();
        return time;
    }

}

Encoder = {

    // When encoding do we convert characters into html or numerical entities
    EncodeType: "entity",  // entity OR numerical

    isEmpty: function(val) {
        if (val) {
            return ((val === null) || val.length == 0 || /^\s+$/.test(val));
        } else {
            return true;
        }
    },
    // Convert HTML entities into numerical entities
    HTML2Numerical: function(s) {
        var arr1 = new Array('&nbsp;', '&iexcl;', '&cent;', '&pound;', '&curren;', '&yen;', '&brvbar;', '&sect;', '&uml;', '&copy;', '&ordf;', '&laquo;', '&not;', '&shy;', '&reg;', '&macr;', '&deg;', '&plusmn;', '&sup2;', '&sup3;', '&acute;', '&micro;', '&para;', '&middot;', '&cedil;', '&sup1;', '&ordm;', '&raquo;', '&frac14;', '&frac12;', '&frac34;', '&iquest;', '&agrave;', '&aacute;', '&acirc;', '&atilde;', '&Auml;', '&aring;', '&aelig;', '&ccedil;', '&egrave;', '&eacute;', '&ecirc;', '&euml;', '&igrave;', '&iacute;', '&icirc;', '&iuml;', '&eth;', '&ntilde;', '&ograve;', '&oacute;', '&ocirc;', '&otilde;', '&Ouml;', '&times;', '&oslash;', '&ugrave;', '&uacute;', '&ucirc;', '&Uuml;', '&yacute;', '&thorn;', '&szlig;', '&agrave;', '&aacute;', '&acirc;', '&atilde;', '&auml;', '&aring;', '&aelig;', '&ccedil;', '&egrave;', '&eacute;', '&ecirc;', '&euml;', '&igrave;', '&iacute;', '&icirc;', '&iuml;', '&eth;', '&ntilde;', '&ograve;', '&oacute;', '&ocirc;', '&otilde;', '&ouml;', '&divide;', '&oslash;', '&ugrave;', '&uacute;', '&ucirc;', '&uuml;', '&yacute;', '&thorn;', '&yuml;', '&quot;', '&amp;', '&lt;', '&gt;', '&oelig;', '&oelig;', '&scaron;', '&scaron;', '&yuml;', '&circ;', '&tilde;', '&ensp;', '&emsp;', '&thinsp;', '&zwnj;', '&zwj;', '&lrm;', '&rlm;', '&ndash;', '&mdash;', '&lsquo;', '&rsquo;', '&sbquo;', '&ldquo;', '&rdquo;', '&bdquo;', '&dagger;', '&dagger;', '&permil;', '&lsaquo;', '&rsaquo;', '&euro;', '&fnof;', '&alpha;', '&beta;', '&gamma;', '&delta;', '&epsilon;', '&zeta;', '&eta;', '&theta;', '&iota;', '&kappa;', '&lambda;', '&mu;', '&nu;', '&xi;', '&omicron;', '&pi;', '&rho;', '&sigma;', '&tau;', '&upsilon;', '&phi;', '&chi;', '&psi;', '&omega;', '&alpha;', '&beta;', '&gamma;', '&delta;', '&epsilon;', '&zeta;', '&eta;', '&theta;', '&iota;', '&kappa;', '&lambda;', '&mu;', '&nu;', '&xi;', '&omicron;', '&pi;', '&rho;', '&sigmaf;', '&sigma;', '&tau;', '&upsilon;', '&phi;', '&chi;', '&psi;', '&omega;', '&thetasym;', '&upsih;', '&piv;', '&bull;', '&hellip;', '&prime;', '&prime;', '&oline;', '&frasl;', '&weierp;', '&image;', '&real;', '&trade;', '&alefsym;', '&larr;', '&uarr;', '&rarr;', '&darr;', '&harr;', '&crarr;', '&larr;', '&uarr;', '&rarr;', '&darr;', '&harr;', '&forall;', '&part;', '&exist;', '&empty;', '&nabla;', '&isin;', '&notin;', '&ni;', '&prod;', '&sum;', '&minus;', '&lowast;', '&radic;', '&prop;', '&infin;', '&ang;', '&and;', '&or;', '&cap;', '&cup;', '&int;', '&there4;', '&sim;', '&cong;', '&asymp;', '&ne;', '&equiv;', '&le;', '&ge;', '&sub;', '&sup;', '&nsub;', '&sube;', '&supe;', '&oplus;', '&otimes;', '&perp;', '&sdot;', '&lceil;', '&rceil;', '&lfloor;', '&rfloor;', '&lang;', '&rang;', '&loz;', '&spades;', '&clubs;', '&hearts;', '&diams;');
        var arr2 = new Array('&#160;', '&#161;', '&#162;', '&#163;', '&#164;', '&#165;', '&#166;', '&#167;', '&#168;', '&#169;', '&#170;', '&#171;', '&#172;', '&#173;', '&#174;', '&#175;', '&#176;', '&#177;', '&#178;', '&#179;', '&#180;', '&#181;', '&#182;', '&#183;', '&#184;', '&#185;', '&#186;', '&#187;', '&#188;', '&#189;', '&#190;', '&#191;', '&#192;', '&#193;', '&#194;', '&#195;', '&#196;', '&#197;', '&#198;', '&#199;', '&#200;', '&#201;', '&#202;', '&#203;', '&#204;', '&#205;', '&#206;', '&#207;', '&#208;', '&#209;', '&#210;', '&#211;', '&#212;', '&#213;', '&#214;', '&#215;', '&#216;', '&#217;', '&#218;', '&#219;', '&#220;', '&#221;', '&#222;', '&#223;', '&#224;', '&#225;', '&#226;', '&#227;', '&#228;', '&#229;', '&#230;', '&#231;', '&#232;', '&#233;', '&#234;', '&#235;', '&#236;', '&#237;', '&#238;', '&#239;', '&#240;', '&#241;', '&#242;', '&#243;', '&#244;', '&#245;', '&#246;', '&#247;', '&#248;', '&#249;', '&#250;', '&#251;', '&#252;', '&#253;', '&#254;', '&#255;', '&#34;', '&#38;', '&#60;', '&#62;', '&#338;', '&#339;', '&#352;', '&#353;', '&#376;', '&#710;', '&#732;', '&#8194;', '&#8195;', '&#8201;', '&#8204;', '&#8205;', '&#8206;', '&#8207;', '&#8211;', '&#8212;', '&#8216;', '&#8217;', '&#8218;', '&#8220;', '&#8221;', '&#8222;', '&#8224;', '&#8225;', '&#8240;', '&#8249;', '&#8250;', '&#8364;', '&#402;', '&#913;', '&#914;', '&#915;', '&#916;', '&#917;', '&#918;', '&#919;', '&#920;', '&#921;', '&#922;', '&#923;', '&#924;', '&#925;', '&#926;', '&#927;', '&#928;', '&#929;', '&#931;', '&#932;', '&#933;', '&#934;', '&#935;', '&#936;', '&#937;', '&#945;', '&#946;', '&#947;', '&#948;', '&#949;', '&#950;', '&#951;', '&#952;', '&#953;', '&#954;', '&#955;', '&#956;', '&#957;', '&#958;', '&#959;', '&#960;', '&#961;', '&#962;', '&#963;', '&#964;', '&#965;', '&#966;', '&#967;', '&#968;', '&#969;', '&#977;', '&#978;', '&#982;', '&#8226;', '&#8230;', '&#8242;', '&#8243;', '&#8254;', '&#8260;', '&#8472;', '&#8465;', '&#8476;', '&#8482;', '&#8501;', '&#8592;', '&#8593;', '&#8594;', '&#8595;', '&#8596;', '&#8629;', '&#8656;', '&#8657;', '&#8658;', '&#8659;', '&#8660;', '&#8704;', '&#8706;', '&#8707;', '&#8709;', '&#8711;', '&#8712;', '&#8713;', '&#8715;', '&#8719;', '&#8721;', '&#8722;', '&#8727;', '&#8730;', '&#8733;', '&#8734;', '&#8736;', '&#8743;', '&#8744;', '&#8745;', '&#8746;', '&#8747;', '&#8756;', '&#8764;', '&#8773;', '&#8776;', '&#8800;', '&#8801;', '&#8804;', '&#8805;', '&#8834;', '&#8835;', '&#8836;', '&#8838;', '&#8839;', '&#8853;', '&#8855;', '&#8869;', '&#8901;', '&#8968;', '&#8969;', '&#8970;', '&#8971;', '&#9001;', '&#9002;', '&#9674;', '&#9824;', '&#9827;', '&#9829;', '&#9830;');
        return this.swapArrayVals(s, arr1, arr2);
    },

    // Convert Numerical entities into HTML entities
    NumericalToHTML: function(s) {
        var arr1 = new Array('&#160;', '&#161;', '&#162;', '&#163;', '&#164;', '&#165;', '&#166;', '&#167;', '&#168;', '&#169;', '&#170;', '&#171;', '&#172;', '&#173;', '&#174;', '&#175;', '&#176;', '&#177;', '&#178;', '&#179;', '&#180;', '&#181;', '&#182;', '&#183;', '&#184;', '&#185;', '&#186;', '&#187;', '&#188;', '&#189;', '&#190;', '&#191;', '&#192;', '&#193;', '&#194;', '&#195;', '&#196;', '&#197;', '&#198;', '&#199;', '&#200;', '&#201;', '&#202;', '&#203;', '&#204;', '&#205;', '&#206;', '&#207;', '&#208;', '&#209;', '&#210;', '&#211;', '&#212;', '&#213;', '&#214;', '&#215;', '&#216;', '&#217;', '&#218;', '&#219;', '&#220;', '&#221;', '&#222;', '&#223;', '&#224;', '&#225;', '&#226;', '&#227;', '&#228;', '&#229;', '&#230;', '&#231;', '&#232;', '&#233;', '&#234;', '&#235;', '&#236;', '&#237;', '&#238;', '&#239;', '&#240;', '&#241;', '&#242;', '&#243;', '&#244;', '&#245;', '&#246;', '&#247;', '&#248;', '&#249;', '&#250;', '&#251;', '&#252;', '&#253;', '&#254;', '&#255;', '&#34;', '&#38;', '&#60;', '&#62;', '&#338;', '&#339;', '&#352;', '&#353;', '&#376;', '&#710;', '&#732;', '&#8194;', '&#8195;', '&#8201;', '&#8204;', '&#8205;', '&#8206;', '&#8207;', '&#8211;', '&#8212;', '&#8216;', '&#8217;', '&#8218;', '&#8220;', '&#8221;', '&#8222;', '&#8224;', '&#8225;', '&#8240;', '&#8249;', '&#8250;', '&#8364;', '&#402;', '&#913;', '&#914;', '&#915;', '&#916;', '&#917;', '&#918;', '&#919;', '&#920;', '&#921;', '&#922;', '&#923;', '&#924;', '&#925;', '&#926;', '&#927;', '&#928;', '&#929;', '&#931;', '&#932;', '&#933;', '&#934;', '&#935;', '&#936;', '&#937;', '&#945;', '&#946;', '&#947;', '&#948;', '&#949;', '&#950;', '&#951;', '&#952;', '&#953;', '&#954;', '&#955;', '&#956;', '&#957;', '&#958;', '&#959;', '&#960;', '&#961;', '&#962;', '&#963;', '&#964;', '&#965;', '&#966;', '&#967;', '&#968;', '&#969;', '&#977;', '&#978;', '&#982;', '&#8226;', '&#8230;', '&#8242;', '&#8243;', '&#8254;', '&#8260;', '&#8472;', '&#8465;', '&#8476;', '&#8482;', '&#8501;', '&#8592;', '&#8593;', '&#8594;', '&#8595;', '&#8596;', '&#8629;', '&#8656;', '&#8657;', '&#8658;', '&#8659;', '&#8660;', '&#8704;', '&#8706;', '&#8707;', '&#8709;', '&#8711;', '&#8712;', '&#8713;', '&#8715;', '&#8719;', '&#8721;', '&#8722;', '&#8727;', '&#8730;', '&#8733;', '&#8734;', '&#8736;', '&#8743;', '&#8744;', '&#8745;', '&#8746;', '&#8747;', '&#8756;', '&#8764;', '&#8773;', '&#8776;', '&#8800;', '&#8801;', '&#8804;', '&#8805;', '&#8834;', '&#8835;', '&#8836;', '&#8838;', '&#8839;', '&#8853;', '&#8855;', '&#8869;', '&#8901;', '&#8968;', '&#8969;', '&#8970;', '&#8971;', '&#9001;', '&#9002;', '&#9674;', '&#9824;', '&#9827;', '&#9829;', '&#9830;');
        var arr2 = new Array('&nbsp;', '&iexcl;', '&cent;', '&pound;', '&curren;', '&yen;', '&brvbar;', '&sect;', '&uml;', '&copy;', '&ordf;', '&laquo;', '&not;', '&shy;', '&reg;', '&macr;', '&deg;', '&plusmn;', '&sup2;', '&sup3;', '&acute;', '&micro;', '&para;', '&middot;', '&cedil;', '&sup1;', '&ordm;', '&raquo;', '&frac14;', '&frac12;', '&frac34;', '&iquest;', '&agrave;', '&aacute;', '&acirc;', '&atilde;', '&Auml;', '&aring;', '&aelig;', '&ccedil;', '&egrave;', '&eacute;', '&ecirc;', '&euml;', '&igrave;', '&iacute;', '&icirc;', '&iuml;', '&eth;', '&ntilde;', '&ograve;', '&oacute;', '&ocirc;', '&otilde;', '&Ouml;', '&times;', '&oslash;', '&ugrave;', '&uacute;', '&ucirc;', '&Uuml;', '&yacute;', '&thorn;', '&szlig;', '&agrave;', '&aacute;', '&acirc;', '&atilde;', '&auml;', '&aring;', '&aelig;', '&ccedil;', '&egrave;', '&eacute;', '&ecirc;', '&euml;', '&igrave;', '&iacute;', '&icirc;', '&iuml;', '&eth;', '&ntilde;', '&ograve;', '&oacute;', '&ocirc;', '&otilde;', '&ouml;', '&divide;', '&oslash;', '&ugrave;', '&uacute;', '&ucirc;', '&uuml;', '&yacute;', '&thorn;', '&yuml;', '&quot;', '&amp;', '&lt;', '&gt;', '&oelig;', '&oelig;', '&scaron;', '&scaron;', '&yuml;', '&circ;', '&tilde;', '&ensp;', '&emsp;', '&thinsp;', '&zwnj;', '&zwj;', '&lrm;', '&rlm;', '&ndash;', '&mdash;', '&lsquo;', '&rsquo;', '&sbquo;', '&ldquo;', '&rdquo;', '&bdquo;', '&dagger;', '&dagger;', '&permil;', '&lsaquo;', '&rsaquo;', '&euro;', '&fnof;', '&alpha;', '&beta;', '&gamma;', '&delta;', '&epsilon;', '&zeta;', '&eta;', '&theta;', '&iota;', '&kappa;', '&lambda;', '&mu;', '&nu;', '&xi;', '&omicron;', '&pi;', '&rho;', '&sigma;', '&tau;', '&upsilon;', '&phi;', '&chi;', '&psi;', '&omega;', '&alpha;', '&beta;', '&gamma;', '&delta;', '&epsilon;', '&zeta;', '&eta;', '&theta;', '&iota;', '&kappa;', '&lambda;', '&mu;', '&nu;', '&xi;', '&omicron;', '&pi;', '&rho;', '&sigmaf;', '&sigma;', '&tau;', '&upsilon;', '&phi;', '&chi;', '&psi;', '&omega;', '&thetasym;', '&upsih;', '&piv;', '&bull;', '&hellip;', '&prime;', '&prime;', '&oline;', '&frasl;', '&weierp;', '&image;', '&real;', '&trade;', '&alefsym;', '&larr;', '&uarr;', '&rarr;', '&darr;', '&harr;', '&crarr;', '&larr;', '&uarr;', '&rarr;', '&darr;', '&harr;', '&forall;', '&part;', '&exist;', '&empty;', '&nabla;', '&isin;', '&notin;', '&ni;', '&prod;', '&sum;', '&minus;', '&lowast;', '&radic;', '&prop;', '&infin;', '&ang;', '&and;', '&or;', '&cap;', '&cup;', '&int;', '&there4;', '&sim;', '&cong;', '&asymp;', '&ne;', '&equiv;', '&le;', '&ge;', '&sub;', '&sup;', '&nsub;', '&sube;', '&supe;', '&oplus;', '&otimes;', '&perp;', '&sdot;', '&lceil;', '&rceil;', '&lfloor;', '&rfloor;', '&lang;', '&rang;', '&loz;', '&spades;', '&clubs;', '&hearts;', '&diams;');
        return this.swapArrayVals(s, arr1, arr2);
    },


    // Numerically encodes all unicode characters
    numEncode: function(s) {

        if (this.isEmpty(s)) return "";

        var e = "";
        for (var i = 0; i < s.length; i++) {
            var c = s.charAt(i);
            if (c < " " || c > "~") {
                c = "&#" + c.charCodeAt() + ";";
            }
            e += c;
        }
        return e;
    },

    // HTML Decode numerical and HTML entities back to original values
    htmlDecode: function(s) {

        var c, m, d = s;

        if (this.isEmpty(d)) return "";

        // convert HTML entites back to numerical entites first
        d = this.HTML2Numerical(d);

        // look for numerical entities &#34;
        arr = d.match(/&#[0-9]{1,5};/g);

        // if no matches found in string then skip
        if (arr != null) {
            for (var x = 0; x < arr.length; x++) {
                m = arr[x];
                c = m.substring(2, m.length - 1); //get numeric part which is refernce to unicode character
                // if its a valid number we can decode
                if (c >= -32768 && c <= 65535) {
                    // decode every single match within string
                    d = d.replace(m, String.fromCharCode(c));
                } else {
                    d = d.replace(m, ""); //invalid so replace with nada
                }
            }
        }

        return d;
    },

    // encode an input string into either numerical or HTML entities
    htmlEncode: function(s, dbl) {

        if (this.isEmpty(s)) return "";

        // do we allow double encoding? E.g will &amp; be turned into &amp;amp;
        dbl = dbl | false; //default to prevent double encoding

        // if allowing double encoding we do ampersands first
        if (dbl) {
            if (this.EncodeType == "numerical") {
                s = s.replace(/&/g, "&#38;");
            } else {
                s = s.replace(/&/g, "&amp;");
            }
        }

        // convert the xss chars to numerical entities ' " < >
        s = this.XSSEncode(s, false);

        if (this.EncodeType == "numerical" || !dbl) {
            // Now call function that will convert any HTML entities to numerical codes
            s = this.HTML2Numerical(s);
        }

        // Now encode all chars above 127 e.g unicode
        s = this.numEncode(s);

        // now we know anything that needs to be encoded has been converted to numerical entities we
        // can encode any ampersands & that are not part of encoded entities
        // to handle the fact that I need to do a negative check and handle multiple ampersands &&&
        // I am going to use a placeholder

        // if we don't want double encoded entities we ignore the & in existing entities
        if (!dbl) {
            s = s.replace(/&#/g, "##AMPHASH##");

            if (this.EncodeType == "numerical") {
                s = s.replace(/&/g, "&#38;");
            } else {
                s = s.replace(/&/g, "&amp;");
            }

            s = s.replace(/##AMPHASH##/g, "&#");
        }

        // replace any malformed entities
        s = s.replace(/&#\d*([^\d;]|$)/g, "$1");

        if (!dbl) {
            // safety check to correct any double encoded &amp;
            s = this.correctEncoding(s);
        }

        // now do we need to convert our numerical encoded string into entities
        if (this.EncodeType == "entity") {
            s = this.NumericalToHTML(s);
        }

        return s;
    },

    // Encodes the basic 4 characters used to malform HTML in XSS hacks
    XSSEncode: function(s, en) {
        if (!this.isEmpty(s)) {
            en = en || true;
            // do we convert to numerical or html entity?
            if (en) {
                s = s.replace(/\'/g, "&#39;"); //no HTML equivalent as &apos is not cross browser supported
                s = s.replace(/\"/g, "&quot;");
                s = s.replace(/</g, "&lt;");
                s = s.replace(/>/g, "&gt;");
            } else {
                s = s.replace(/\'/g, "&#39;"); //no HTML equivalent as &apos is not cross browser supported
                s = s.replace(/\"/g, "&#34;");
                s = s.replace(/</g, "&#60;");
                s = s.replace(/>/g, "&#62;");
            }
            return s;
        } else {
            return "";
        }
    },

    // returns true if a string contains html or numerical encoded entities
    hasEncoded: function(s) {
        if (/&#[0-9]{1,5};/g.test(s)) {
            return true;
        } else if (/&[A-Z]{2,6};/gi.test(s)) {
            return true;
        } else {
            return false;
        }
    },

    // will remove any unicode characters
    stripUnicode: function(s) {
        return s.replace(/[^\x20-\x7E]/g, "");

    },

    // corrects any double encoded &amp; entities e.g &amp;amp;
    correctEncoding: function(s) {
        return s.replace(/(&amp;)(amp;)+/, "$1");
    },


    // Function to loop through an array swaping each item with the value from another array e.g swap HTML entities with Numericals
    swapArrayVals: function(s, arr1, arr2) {
        if (this.isEmpty(s)) return "";
        var re;
        if (arr1 && arr2) {
            //ShowDebug("in swapArrayVals arr1.length = " + arr1.length + " arr2.length = " + arr2.length)
            // array lengths must match
            if (arr1.length == arr2.length) {
                for (var x = 0, i = arr1.length; x < i; x++) {
                    re = new RegExp(arr1[x], 'g');
                    s = s.replace(re, arr2[x]); //swap arr1 item with matching item from arr2	
                }
            }
        }
        return s;
    },

    inArray: function(item, arr) {
        for (var i = 0, x = arr.length; i < x; i++) {
            if (arr[i] === item) {
                return i;
            }
        }
        return -1;
    }

}

AGBB.App.init();

var prevUrlHistory = '';
setInterval('checkUrlHistory()', 1000);

function checkUrlHistory() {
    var temp = location.hash.replace('#', '');
    //alert("temp: " + temp + "privious : " + prevUrlHistory);
    if (temp == '' && prevUrlHistory != '') {
        history.go(-1);
    }
    else
        if (prevUrlHistory != temp) {
        prevUrlHistory = temp;

        var arrTTDN = new Array();
        arrTTDN = temp.split(',');
        if (arrTTDN[0] != 'htm') {
            AGBB.App.page = arrTTDN[0];
            $.cookie('page', AGBB.App.page);
        }

        AGBB.App.AriticleID = arrTTDN[1];
        $.cookie('articleID', AGBB.App.AriticleID);
        AGBB.App.UrlDetail = arrTTDN[2];
        $.cookie('urlTinTucDetail', AGBB.App.UrlDetail);
        var _tabidd = AGBB.request("tabid");
        if (_tabidd == '67') {

            $.cookie('articleID', '');
            $.cookie('urlTinTucDetail', '');
            //location.href ="http://" + document.location.host + "/tabid/67/default.aspx";
        }
        if (arrTTDN[0] != '' && arrTTDN[1] != '' && arrTTDN[2] != '') {
            $.cookie('page', "AD_Page");
            // alert(temp);
            AGBB.App.AriticleID = arrTTDN[1];
            $.cookie('articleID', AGBB.App.AriticleID);
            AGBB.App.UrlDetail = arrTTDN[2];
            $.cookie('urlTinTucDetail', AGBB.App.UrlDetail);
        }
        else {
            //            if (AGBB.App.page != 'TrangChu_KetQuaDauGia_Page' || AGBB.App.page != 'TrangChu_LichDauGia_Page' || arrTTDN[0] != 'htm') {
            //                AGBB.App.loadPage();
            //            }

        }


        AGBB.App.loadPage();

    }
};


