﻿var helper = {
    ltrim: function(text) {
        var done = false;
        while (!done && text.length >= 0) {
            if (text.charAt(0) == ' ')
                text = text.substring(1, text.length);
            else
                done = true;
        }
        return text;
    },
    rtrim: function(text) {
        var done = false;
        while (!done && text.length >= 0) {
            if (text.charAt(text.length - 1) == ' ')
                text = text.substring(0, text.length - 1);
            else
                done = true;
        }
        return text;
    },
    trim: function(text) {
        return this.rtrim(this.ltrim(text));
    },
    replacePath: function(path) {
        return path.replace('\\', '/');
    },
    isEmail: function(email) {
        var pattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        return pattern.test(email);
    },

    getFilename: function(path) {
        path = path.replace('\\', '/');
        var index = path.lastIndexOf('/');
        //        var a = new String();
        return path.substring(index + 1, path.length);
    },

    getElement: function(elementId) {
        return $("#" + elementId);
    },

    // Kiểm tra việc nhập dữ liệu trên TextBox
    validateRequiredField: function(fieldId, spanNoticeId, noticeText) {
        //        alert($("#" + fieldId).val());
        var field = this.getElement(fieldId);
        var fieldText = this.trim(field.val());
        if (fieldText == '') {
            field.addClass("input-validation-error");
            this.getElement(spanNoticeId).text(noticeText);
            return false;
        }
        else {
            field.removeClass("input-validation-error");
            this.getElement(spanNoticeId).text('');
            return true;
        }
    },

    // Kiểm tra trên 1 chuỗi
    validateRequiredText: function(text, spanNoticeId, noticeText) {
        var fieldText = this.trim(text);
        if (fieldText == '') {
            this.getElement(spanNoticeId).text(noticeText);
            return false;
        }
        else {
            this.getElement(spanNoticeId).text('');
            return true;
        }
    },

    // Kiểm tra việc nhập dữ liệu trên nhiều TextBox
    validateMultiRequiredFields: function(fields) {
        //        var result = true;
        var results = new Array();
        for (var i = 0; i < fields.length; i++) {
            results[i] = this.validateRequiredField(fields[i][0], fields[i][1], fields[i][2]);
        }
        var result = true;
        for (var i = 0; i < results.length; i++)
            result = result && results[i];
        return result;
    },

    // Kiểm tra email trên chuỗi
    validateEmailText: function(text, spanNoticeId, noticeText) {
        var fieldText = this.trim(text);
        if (!this.isEmail(fieldText)) {
            this.getElement(spanNoticeId).text(noticeText);
            return false;
        }
        else {
            this.getElement(spanNoticeId).text('');
            return true;
        }
    },

    // Kiểm tra việc nhập email trên TextBox
    validateEmailField: function(fieldId, spanNoticeId, noticeText) {
        //        alert($("#" + fieldId).val());
        var field = this.getElement(fieldId);
        var fieldText = this.trim(field.val());
        if (!this.isEmail(fieldText)) {
            field.addClass("input-validation-error");
            this.getElement(spanNoticeId).text(noticeText);
            return false;
        }
        else {
            field.removeClass("input-validation-error");
            this.getElement(spanNoticeId).text('');
            return true;
        }
    },

    // Kiểm tra email
    // fieldId: id của textbox cần kiểm tra
    // spNoticeId: id của span cần ghi thông báo
    // emptyText: thông báo khi chuỗi rỗng
    // incorrectText: thông báo khi email sai
    validateEmail: function(fieldId, spNoticeId, emptyText, incorrectText) {
        var field = this.getElement(fieldId);
        var spNotice = this.getElement(spNoticeId);
        var fieldText = field.val();
        var result = true;

        field.removeClass('input-validation-error');
        spNotice.text('');
        if ($.trim(fieldText) == '') {
            spNotice.text(emptyText);
            result = false;
        } else {
            if (!this.isEmail(fieldText)) {
                spNotice.text(incorrectText);
                result = false;
            }
        }
        if (!result)
            field.addClass('input-validation-error');
        return result;
    },

    // Kiểm tra username
    // fieldId: id của textbox cần kiểm tra
    // spNoticeId: id của span cần ghi thông báo
    // emptyText: thông báo khi chuỗi rỗng
    // incorrectText: thông báo khi username sai
    validateUsername: function(fieldId, spNoticeId, emptyText, incorrectText) {
        var field = this.getElement(fieldId);
        var spNotice = this.getElement(spNoticeId);
        var fieldText = field.val();
        var result = true;

        field.removeClass('input-validation-error');
        spNotice.text('');
        if ($.trim(fieldText) == '') {
            spNotice.text(emptyText);
            result = false;
        } else {
            if (!validator.isUsername(fieldText)) {
                spNotice.text(incorrectText);
                result = false;
            }
        }
        if (!result)
            field.addClass('input-validation-error');
        return result;
    },

    // Kiểm tra password
    // fieldId: id của textbox cần kiểm tra
    // spNoticeId: id của span cần ghi thông báo
    // passwordLength: độ dài tối thiểu của password
    // emptyText: thông báo khi chuỗi rỗng
    // incorrectText: thông báo khi password sai
    validatePassword: function(fieldId, spNoticeId, passwordLength, emptyText, incorrectText) {
        var field = this.getElement(fieldId);
        var spNotice = this.getElement(spNoticeId);
        var fieldText = field.val();
        var result = true;

        field.removeClass('input-validation-error');
        spNotice.text('');
        if (fieldText == '') {
            spNotice.text(emptyText);
            result = false;
        } else {
            if (fieldText.length < passwordLength) {
                spNotice.text(incorrectText);
                result = false;
            }
        }
        if (!result)
            field.addClass('input-validation-error');
        return result;
    },

    // Kiểm tra password nhập lại
    // fieldId: id của textbox cần kiểm tra
    // passwordId: id của textbox chứa password cần kiểm tra
    // spNoticeId: id của span cần ghi thông báo
    // incorrectText: thông báo sai
    validateRePassword: function(fieldId, passwordId, spNoticeId, incorrectText) {
        var field = this.getElement(fieldId);
        var spNotice = this.getElement(spNoticeId);
        var fieldText = field.val();
        var password = this.getElement(passwordId).val();
        var result = true;

        field.removeClass('input-validation-error');
        spNotice.text('');
        if (fieldText != password) {
            spNotice.text(incorrectText);
            field.addClass('input-validation-error');
            return false;
        }
        return true;
    },

    removeFieldError: function(fieldId, spanNoticeId) {
        this.getElement(fieldId).removeClass('input-validation-error');
        this.getElement(spanNoticeId).html('');
    },

    // Lấy text trong FCKEditor
    getFckValue: function(fckName) {
        var oFck = FCKeditorAPI.GetInstance(fckName);
        return oFck.GetXHTML(true);
    },

    /*
    * Check upload file type
    */
    checkFileType: function(elementID, filePattern, spanNoticeId, noticeText) {
        // file element
        var file = this.getElement(elementID);
        return this.checkFileTypeControl(file, filePattern, spanNoticeId, noticeText);
    },
    // end: Check upload file type

    checkFileTypeControl: function(file, filePattern, spanNoticeId, noticeText) {
        // file type array
        var fileTypes = filePattern.split(',');
        // filename
        var filename = file.val();
        // if filename ='' return true
        if (filename.length == 0)
            return true;
        // find index of last '.'
        var index = filename.lastIndexOf('.');
        // extension of file
        var extension = filename.substring(index + 1, filename.length).toLowerCase();
        // valid extendsion
        for (var i = 0; i < fileTypes.length; i++) {
            var type = new String(fileTypes[i]);
            type = this.trim(type);
            if (type == extension) {
                file.removeClass("input-validation-error");
                this.getElement(spanNoticeId).text('');
                return true;
            }
        }
        file.addClass("input-validation-error");
        this.getElement(spanNoticeId).text(noticeText);
        return false;
    },

    // Hiển thị thông báo
    showNotice: function(targetId, noticeText) {
        var div = $('#' + targetId);
        div.html('<span>' + noticeText + '</span>');
        div.addClass('div-fadeout');
        div.stop().animate({ 'opacity': 1 }, 10, 'swing', function() {
            div.animate({ 'opacity': 0.0 }, 3000, function() {
                div.html('');
                div.removeClass('div-fadeout');
            });
        });
    },

    // Thêm hiệu ứng cho thông báo đã có
    fadeNotice: function(targetId) {
        this.showNotice(targetId, $('#' + targetId).html());
    },

    getNumber: function(pixel) {
        var index = pixel.indexOf('px', 0);
        var number = 0;
        if (index >= 0) {
            number = pixel.substr(0, index);
        }
        return number;
    },

    // Trừ pixel
    // value: giá trị ban đầu
    // s    : số pixel cần trừ
    // vd: a = subtractPx(value, 10); // trong đó, value='120px';
    subtractPx: function(value, s) {
        var number = this.getNumber(value) - this.getNumber(s);
        return number + 'px';
    },

    // Cộng pixel
    // value: giá trị ban đầu
    // s    : số pixel cần cộng
    // vd: a = addPx(value, 10); // trong đó, value='120px';
    addPx: function(value, a) {
        var number = this.getNumber(value) + this.getNumber(a);
        return number + 'px';
    },

    showPlay: function(target, play) {
        //        target.mouseover(function() {
        //            //            play.stop().animate({ 'opacity': 0 }, 10, 'swing', function() {
        //            //                play.animate({ 'opacity': 1.0 }, 1000);
        //            //            });
        //            play.fadeIn(1000);
        //        });

        //        target.mouseout(function() {
        //            //            play.stop().animate({ 'opacity': 1 }, 10, 'swing', function() {
        //            //                play.animate({ 'opacity': 0.0 }, 1000);
        //            //            });
        //            play.fadeOut(1000);
        //        });
    }
}


/****** Validation ****************/

var validator = {
    /*
    * Regular Expression check
    */
    isEmail: function(email) {
        var pattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        return pattern.test(email);
    },

    isUsername: function(username) {
        var pattern = /^([a-z]|_([a-z0-9]|$))([a-z0-9]|_([a-z0-9]|$))*$/;
        return pattern.test(username);
    },

    isPhone: function(phone) {
        var pattern = /^[0-9]+$/;
        return pattern.test(phone);
    },

    isNumber: function(number) {
        return isPhone(number);
    },

    isUrl: function(url) {
        var pattern = /[http(s)?:\/\/]?([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/;
        return pattern.test(url);
    },

    emailValidation: function(element) {
        var value = document.getElementById(element).value;
        return this.isEmail(value);
    },

    compareValidation: function(element1, element2) {
        var value1 = document.getElementById(element1).value;
        var value2 = document.getElementById(element2).value;
        if (value1 == value2)
            return true;
        return false;
    },

    requireFieldValidation: function(element) {
        var value = document.getElementById(element).value;
        if (value == "")
            return false;
        return true;
    },

    controlRequireFieldValidation: function(validateControl, noticeControl, noticeText) {
        if (!this.requireFieldValidation(validateControl)) {
            document.getElementById(noticeControl).innerHTML = noticeText;
            $('#' + validateControl).addClass('input-validation-error');
            return false;
        }
        return true;
    },

    controlIsNumberValidation: function(validateControl, noticeControl, noticeText) {
        //    alert('in');
        //    alert(validateControl);
        var value = document.getElementById(validateControl).value;
        //    alert(value);
        if (!this.isNumber(value)) {
            document.getElementById(noticeControl).innerHTML = noticeText;
            $('#' + validateControl).addClass('input-validation-error');
            return false;
        }
        return true;
    },

    controlLengthValidation: function(validateControl, length, noticeControl, noticeText) {
        var value = document.getElementById(validateControl).value;
        if (value.length < length) {
            document.getElementById(noticeControl).innerHTML = noticeText;
            $('#' + validateControl).addClass('input-validation-error');
            return false;
        }
        return true;
    },

    controlCompareValidation: function(validateControl, comparedControl, noticeControl, noticeText) {
        if (!this.compareValidation(validateControl, comparedControl)) {
            document.getElementById(noticeControl).innerHTML = noticeText;
            $('#' + validateControl).addClass('input-validation-error');
            return false;
        } else {
            document.getElementById(noticeControl).innerHTML = '';
            $('#' + validateControl).removeClass('input-validation-error');
            return true;
        }
    },

    controlEmailValidation: function(validateControl, noticeControl, noticeText) {
        if (!this.emailValidation(validateControl)) {
            document.getElementById(noticeControl).innerHTML = noticeText;
            $('#' + validateControl).addClass('input-validation-error');
            return false;
        } else {
            document.getElementById(noticeControl).innerHTML = '';
            $('#' + validateControl).removeClass('input-validation-error');
            return true;
        }
    },

    controlUsernameValidation: function(validateControl, noticeControl, noticeText) {
        var value = document.getElementById(validateControl).value;
        if (!this.isUsername(value)) {
            document.getElementById(noticeControl).innerHTML = noticeText;
            $('#' + validateControl).addClass('input-validation-error');
            return false;
        }
        return true;
    },

    controlDateValidation: function(dayControl, monthControl, yearControl, noticeControl, noticeText) {
        var day = document.getElementById(dayControl).value;
        var month = document.getElementById(monthControl).value;
        var year = document.getElementById(yearControl).value;
        if (day <= 0 || month <= 0 || year <= 0) {
            document.getElementById(noticeControl).innerHTML = noticeText;
            $('#' + dayControl).addClass('input-validation-error');
            $('#' + monthControl).addClass('input-validation-error');
            $('#' + yearControl).addClass('input-validation-error');
            return false;
        }
        return true;
    },

    resetTextBox: function(controls) {
        for (var i = 0; i < controls.length; i++) {
            document.getElementById(controls[i]).innerHTML = "";
            //alert(controls[i]);
        }
    },
    // end: Regular Expression check

    /*
    * Check upload file type
    */
    checkFileType: function(elementID, filePattern) {
        // file element
        var file = document.getElementById(elementID);
        return checkFileTypeControl(file, filePattern);
    },
    // end: Check upload file type

    checkFileTypeControl: function(file, filePattern) {
        // file type array
        var fileTypes = filePattern.split(',');
        // filename
        var filename = new String(file.value);
        // if filename ='' return true
        if (filename.length == 0)
            return true;
        // find index of last '.'
        var index = filename.lastIndexOf('.');
        // extension of file
        var extension = filename.substring(index + 1, filename.length).toLowerCase();
        // valid extendsion
        for (var i = 0; i < fileTypes.length; i++) {
            var type = new String(fileTypes[i]);
            type = type.replace(' ', '');
            //        if (fileTypes[i].trim() == extension)
            //        if (fileTypes[i] == extension)
            if (type == extension)
                return true;
        }
        return false;
    }
}
function playGame(url) {
        var height = 650;
        var width = 1000;
        var top = (screen.height - height) / 2 - 80;
        var left = (screen.width - width) / 2;
        if (!open(url, 'example', 'status=0, resizable=yes,'
                + 'scrollbars=0, toolbar=0, location=0,'
                + 'fullscreen=0, titlebar=1, height=' + height
                + ', width=' + width + ','
                + 'top=' + top + ',' + 'left=' + left)) {
            alert("Trình duyệt của bạn đã block popup, không cho mở cửa sổ mới để chơi, bạn hãy cho phép (allow popup) hoặc nhấn Ctrl và click vào nút \"Bắt đầu trò chơi\"");
        }
}
/******************* Menu ********************/
var j_menu = {
    active: function(index) {
        $('#menu a:eq(' + index + ')').attr('class', 'selected');
    }
}
