// ------ General functions ------

// System Message: level: error, notice, success
function DisplaySystemMessage(message) {
    DisplaySystemMessage("success", message);
}

// System Message: level: error, notice, success
function DisplaySystemMessage(level, message) {
    alert(level + ": " + message);
}

$(document).ready(function() {


    //$("div.rounded-box").corner("8px");

    // apply to all png images
    //$('img[@src$=.png]').ifixpng();

    // Start SEARCH BOX AND RESULTS
    $("#btnGSearch").click(function() {
        GSearch();
    })
    function GSearch() {
        // Search by Ajax, API
        //window.location.href = '/Modules/Search/SearchG2.aspx?q=' + $('#txtGKeyword').val();
        // Search by IFrame
        var rsearch = $("input[@name=rsearch]:checked").val();
        var text = $('#txtGKeyword').val();
        if (jQuery.trim(text).length == 0) {
            $("#txtGKeyword").focus();
            return;
        }
        if (rsearch == "google") {
            window.location.href = '/Modules/Search/SearchG.aspx?cx=002909447900019505549:a0kotlqlpzm&cof=FORID:11&ie=UTF-8&q=' + text;
        }
        else {
            window.location.href = '/tim/' + text + ".html";
        }
    }
    $('#txtGKeyword').bind("keypress", function(e) {
        if (e.keyCode == 13) { GSearch(); }
    });
    // End SEARCH BOX AND RESULTS

    // Start Format Box
    //$("div.box3").corner("8px");
    // End Format Box


    $("div.close-btn").click(function() {
        $(this).parent().parent().hide("slow");
    });

    // Problems button
    $("a.btn-spam").click(function() {

        if ($.isLoggedIn) {

            $(".txtReportProblemForm_ProblemContent").val(""); // reset textbox
            $("#btnReportQueryProblem").attr("ref", $(this).attr("ref")); // set ref from control "bao cao bai vi pham" to button "submit problem"
            $(this).ToggleReportProblemForm(); // display spam's note (divSpamNote)
            return false;
        } else { // not login
            $(this).ToggleLoginForm("Đăng nhập để báo cáo bài vi phạm");
        }
        return false;
    });

    $("#btnReportQueryProblem").click(function() {
        //submit problem via ajax
        var _problem = $(".txtReportProblemForm_ProblemContent").val();
        if (jQuery.trim(_problem).length == 0) {
            alert("Xin nhập một ít thông tin mà bạn nghỉ là vi phạm");
            $(".txtReportProblemForm_ProblemContent").focus();
            return;
        }
        var _ref = $(this).attr("ref");
        if (_ref && _problem) {
            var _url = "/Modules/Reviews/WebServices/ReportProblem.aspx";
            var _data = "ref=" + escape(_ref) + "&Problem=" + escape(_problem);
            $.ajax({
                url: _url,
                data: _data,
                cache: false,
                success: function(html) {
                    if (html == "t") {
                        $("a.btn-spam[ref='" + _ref + "']").parent().text("Cám ơn đã báo cáo").addClass("success");
                        //						DisplaySystemMessage("success", "submit problem success");
                    } else {
                        DisplaySystemMessage("error", "can't submit problem, please try later");
                    }
                },
                error: function() {
                    DisplaySystemMessage("error", "can't submit problem, please try later");
                }
            });
        }
        $("#divReportProblemForm").hide("fast");
        return false;
    });



    $("#btnLogin").click(function() {
        $.strUserName = $("#jtxtUsername").val();
        $.strPassword = $("#jtxtPassword").val();

        // validations, show/hide error message
        $.LoginFormIsValid = true;
        if ($.strUserName == "") {
            $("#jtxtUsernameError").show();
            $("#jtxtUsername").addClass("text-error");
            $.LoginFormIsValid = false;
        } else {
            $("#jtxtUsernameError").hide();
            $("#jtxtUsername").removeClass("text-error");
        }
        if ($.strPassword == "") {
            $("#jtxtPasswordError").show();
            $("#jtxtPassword").addClass("text-error");
            $.LoginFormIsValid = false;
        } else {
            $("#jtxtPasswordError").hide();
            $("#jtxtPassword").removeClass("text-error");
        }

        if ($.LoginFormIsValid) {
            var _data = "action=Login&u=" + $.strUserName + "&p=" + $.strPassword + "&remember=true";
            var _url = "/WebServices/Login.aspx";
            $.ajax({
                url: _url,
                data: _data,
                cache: false,
                success: function(html) {
                    if (html == "t") {
                        $.isLoggedIn = true;
                        var _url = window.location;
                        window.location = _url;
                    } else {
                        $.isLoggedIn = false;
                        DisplaySystemMessage("error", "Đăng nhập không thành công!");
                    }
                },
                error: function() {
                    $.isLoggedIn = false;
                    DisplaySystemMessage("error", "2. Đăng nhập không thành công!");
                }
            });
        }
        return false; // disable link in href
    });


    $("div.pstar").click(function() {
        if ($.isLoggedIn) {
            //		$(this).toggleClass("pstar_hover"); // toggle yellow star
            var obj = $(this);
            var _url = "/Modules/Reviews/WebServices/Bookmark.aspx"; // ModuleId=BLO&SubModuleId=ABC&ItemId=55
            var _data = "ref=" + escape($(this).text());
            $.ajax({
                url: _url,
                data: _data,
                cache: false,
                success: function(html) {
                    if (html == "t") {
                        //DisplaySystemMessage("success", "submit rating success");
                        obj.toggleClass("pstar_hover"); // toggle yellow star
                        if (obj.hasClass("pstar_hover")) {
                            obj.next().text("Bài đã đánh dấu yêu thích");
                        } else {
                            obj.next().text("Đã xóa đánh dấu yêu thích");
                        }
                        obj.parent().addClass("success");
                    } else {
                        DisplaySystemMessage("error", "can't submit rating, please try later");
                    }
                },
                error: function() {
                    DisplaySystemMessage("error", "can't submit rating, please try later");
                }
            });
        } else { // not login
            $(this).ToggleLoginForm("Đăng nhập để đánh dấu yêu thích");
        }
        return false;
    });


    $("div.rating-wrapper").click(function() {
        if (!$.isLoggedIn) {
            $(this).ToggleLoginForm("Đăng nhập để bình chọn");
        }
    });


    $("div.commentWraper input.btnCommentSubmit").click(function() {
        // submit rating via ajax
        var _ref = $(this).attr("ref");
        var _txtName = "N/A";
        var _txtEmail = "N/A";

        //        if ($.trim(_txtName).length == 0) {
        //            alert("Bạn phải nhập ít nhất là Tên của mình vào mục [Tên của bạn]");
        //            $(".txtName").focus();
        //            return;
        //        }
        var _subject = $("input.txtCommentSubject").val();
        var _comment = $.trim($("textarea.txtCommentBody").val()).replace(/\n/g, '<br>');
        var _url = "/Modules/Reviews/WebServices/SaveReview.aspx";
        var _wrapper = $(this).parents(".commentWraper");
        var _this = $(this);
        var _data = "ref=" + escape(_ref) + "&Subject=" + _subject + "&Comment=" + _comment + "&Name=" + _txtName + "&Email=" + _txtEmail;
        //		alert(_wrapper.html());
        //alert(value);
        $.ajax({
            url: _url,
            data: _data,
            cache: false,
            success: function(html) {
                if (html == "t") {
                    var _wrapperClone = _wrapper.clone();
                    _wrapperClone.find("div.commentSubject").html(_subject);
                    _wrapperClone.find("div.commentBody").html(_comment);
                    $(".txtCommentSubject").val("");
                    $(".txtCommentBody").val("");
                    $(".txtCommentSubject").focus();
                    _wrapper.before(_wrapperClone);
                }
                else if (html == "n") {
                    alert("Bạn chưa đăng nhập , nếu muốn đưa tin xin nhập tên của bạn vào mục [Tên của bạn]");

                }
                else {

                    DisplaySystemMessage("Chú ý", "Hãy điền những thông tin cần thiết trước khi nhấn [Gởi Bình Luận]");
                }
            },
            error: function() {

                DisplaySystemMessage("Chú ý", "Hãy điền những thông tin cần thiết trước khi nhấn [Gởi Bình Luận]");
            }
        });
        return false;
    });

    $("div.commentWraper input.btnHotelReviewSubmit").click(function() {
        // submit rating via ajax
        var _ref = $(this).attr("ref");
        var _subject = $.trim($("input.txtCommentSubject").val());
        var _comment = $.trim($("textarea.txtCommentBody").val()).replace(/\n/g, '<br>');
        var _rating = $("input[@name='HotelReview_SubmitRating']:checked").val();
        if (_subject != "" && _comment != "" && _rating) {
            var _url = "/Modules/Hotels/WebServices/SaveReview.aspx";
            var _wrapper = $(this).parents(".commentWraper");
            var _this = $(this);
            var _data = "ref=" + escape(_ref) + "&Rating=" + _rating + "&Subject=" + _subject + "&Comment=" + _comment;
            //		alert(_wrapper.html());
            //alert(value);
            $.ajax({
                url: _url,
                data: _data,
                cache: false,
                success: function(html) {
                    if (html == "t") {
                        var _wrapperClone = _wrapper.clone();
                        _wrapperClone.find("div.commentSubject").html(_subject);
                        _wrapperClone.find("div.commentBody").html(_comment);
                        _wrapper.before(_wrapperClone);
                        // Clean up data
                        $("input.txtCommentSubject").val("");
                        $("textarea.txtCommentBody").val("");
                        $("input[@name='HotelReview_SubmitRating']:checked").attr("checked", false);
                        alert("Đánh giá của bạn đã được lưu thành công");
                    } else {
                        DisplaySystemMessage("error", "can't submit comment, please try later");
                    }
                },
                error: function() {
                    DisplaySystemMessage("error", "can't submit comment, please try later");
                }
            });
        } else {
            alert("Xin vui lòng nhập nội dung đánh giá");
        }
        return false;
    });




});                                                      // end of document.ready



$.fn.ToggleLoginForm = function(msg, top, left) {
    //	alert("ToggleLoginForm");
    var top = top || (this.offset().top + 20); // if top is undefined, use 10 as default
    var left = left || this.offset().left; // if left is undefined, use 10 as default
    //console.log('top: ' + top + ", left: " + left, this) 

    //	$("#divRegisterForm").hide("fast");

    // set title
    if (msg) {
        $("#divLoginForm h2").text(msg);
    } else {
        $("#divLoginForm h2").text("Đăng nhập");
    }
    // set position
    $('#divLoginForm').css({ top: top, left: left });

    // hide/show
    $("#divLoginForm").toggle("slow");

    // focus on username textbox
    $("#jtxtUsername").focus();
};


$.fn.ToggleReportProblemForm = function(top, left) {
    var top = top || (this.offset().top + 20); // if top is undefined, use 10 as default
    var left = left || this.offset().left; // if left is undefined, use 10 as default

    // set position
    $('#divReportProblemForm').css({ top: top, left: left });

    // hide/show
    $("#divReportProblemForm").toggle("slow");
};
