﻿
var email = {
    Absender: {
        Name: "",
        Email: ""
    },
    Nachricht: "",
    Captcha: ""
}
var user = {
    Name: "",
    Password: ""
}
var bt = {
    Titel: "",
    ContentText: "",
    Zusammenfassung: "",
    DcCreateDate: ""
}
var r = {};

$.fn.corner = function(settingsObj) {
    var settings = settingsObj;
    return this.each(function() {
        curvyCorners(settings, this);
    });

}




$(document).ready(function() {
    $(document).pngFix();

    var Server = function(ajax) {

        return new function() {
            this.Execute = function(evt) {
                $("#updatePanelDemo").unbind("click", Page.Click);
                var sender = evt.target || evt;
                var id = sender.id.toLowerCase();
                switch (id) {
                    case "btnsenden":
                        email.Absender.Name = $("#txtName").val();
                        email.Absender.Email = $("#txtEmail").val();
                        email.Nachricht = $("#txtNachricht").val();
                        email.Captcha = $("#txtCaptcha").val();
                        ajax.SendeKontakt(email, Server.Callback, $("#request"));
                        return false;
                        break;
                    case "btnabbrechen":
                        Response.Clear("Kontakt");
                        Response.Clear("AjaxMessage");
                        return false;
                        break;
                    case "refreshcaptcha":
                        var img = $("#captcha")[0];
                        var d = new Date();
                        img.src = "/image/" + d.getMilliseconds() + "/CaptchaImage.axd";
                        $("#txtCaptcha").val("").focus();
                        break;
                    case "btnsuche":
                        var c = $("#content").html("");
                        ajax.ContentSuche($("#sucheText").val(), Server.Callback, c);
                        return false;
                        break;
                    default:
                        var obj = $(sender);
                        if (obj.hasClass("CommentLink")) {
                            Server.Get("GetComments", obj.attr("DcGuid"), obj);
                        } else if (obj.hasClass("refreshImage")) {
                            var index = obj.attr("id").indexOf("refresh");
                            var id = obj.attr("id");
                            var currentClass = id.substr(index);
                            $("div.webcomment:not(." + currentClass + ") *").attr("disabled", true);
                            $("div." + currentClass + " *").attr("disabled", false);
                            var img = $("#" + id.replace("refresh_", "captcha_"))[0];
                            var d = new Date();
                            img.src = "/image/" + d.getMilliseconds() + "/CaptchaImage.axd";
                            $("#" + currentClass.replace("refresh_", "textcaptcha_")).val("").focus();
                        } else if (obj.attr("class").indexOf("btnVote") > -1) {
                            var value = obj.parent("div").find(":checked").val();
                            var hiddenDcGuid = obj.attr("id").replace("btnVote_", "");
                            if (value != undefined) {
                                ajax.AddVoting(value, hiddenDcGuid, Server.Callback, obj);
                            }
                        } else if (obj.attr("class").indexOf("btnVote") == -1) {
                            var btn = obj.attr("id").indexOf("btnSenden") > -1 ? "btnSenden" : "btnAbbrechen";
                            var index = obj.attr("id").indexOf(btn);
                            var id = obj.attr("id").substr(index);
                            var txtName = $("#" + id.replace(btn, "inputName"));
                            var txtEmail = $("#" + id.replace(btn, "inputEMail"));
                            var txtWeb = $("#" + id.replace(btn, "inputWeb"));
                            var txtComment = $("#" + id.replace(btn, "textKommentar"));
                            var txtCaptchaCode = $("#" + id.replace(btn, "textcaptcha"));
                            var hiddenDcGuid = $("#" + obj.attr("id").replace(btn, "hiddenDcGuid"));
                            if (btn == "btnSenden") {
                                var BlogComment = {
                                    Author: txtName.val(),
                                    Web: txtWeb.val(),
                                    EMail: txtEmail.val(),
                                    Content: txtComment.val(),
                                    Captcha: txtCaptchaCode.val(),
                                    ContentDcGuid: hiddenDcGuid.val()
                                };
                                ajax.AddComment(BlogComment, Server.Callback, $("#" + obj.attr("id").replace(btn, "spanResult")));
                            } else {
                                txtName.val("").focus();
                                txtEmail.val("");
                                txtWeb.val("");
                                txtComment.val("");
                                txtCaptchaCode.val("");
                            }
                        }

                        return false;
                        break;
                }
            }

            this.Get = function(method, param, context) {
                var a = 4;
                $("a[tabindex]").each(function() { var b = parseInt(this["tabIndex"]); if (b > a) { a = b; } });
                switch (method) {
                    case "GetContentDetail":
                        ajax[method](param, a, Server.Callback, context);
                        break;
                    case "GetArchive":
                        ajax[method](param[0], param[1], a, Server.Callback, context);
                        break;
                    case "GetComments":
                        ajax[method](param, Server.Callback, context);
                        break;
                    case "GetDownload":
                        ajax[method](param, Server.Callback, context);
                        break;
                    default:
                        return false;
                        break;
                }
            }

            this.Callback = function(result) {
                if (result.error == null) {
                    switch (result.request.method) {
                        case "SendeKontakt":
                            result.context.find(".ajaxValue").html(result.value).fadeIn(2000);
                            Response.Clear("Kontakt");
                            setTimeout(function() { Response.Clear("AjaxMessage"); }, 8000);
                            break;
                        case "ContentSuche":
                        case "GetContentDetail":
                        case "GetArchive":
                        case "GetComments":
                        case "AddComment":
                        case "AddVoting":
                            Response.Content(result);
                            break;
                        case "GetDownload":
                            result.context.parent("p").children(".downloadcounter").html(result.value);
                            break;
                        default:
                            return false;
                            break;
                    }
                } else {
                    if (result.request.method == "AddComment") {
                        result.context.html(result.error.Message).css({
                            "margin-left": "10px",
                            "color": "#f00"
                        });
                        setTimeout(function() { result.context.html("") }, 3500);
                    } else {
                        result.context.find(".ajaxError").html(result.error.Message).fadeIn(2000);
                    }
                }

            }
        }
    } (Web.Ajax);

    var Request = function(ajax) {

        return new function() {

            this.Element = function(ele, selector, maxr) {
                if (ele.is(selector))
                    return ele;
                var c = 0;
                while (++c < maxr && !ele.is("body") && !ele.is(selector)) {
                    ele = ele.parent();
                }
                if (ele.is(selector))
                    return ele;
                return null;
            }

            this.ContentDetail = function(guid, target) {
                ajax.Get("GetContentDetail", guid, target);
            }

            this.GetDownload = function(guid, target) {
                ajax.Get("GetDownload", guid, target);
                location.href = "/" + guid + "/download.ashx";
            }

            this.GetArchive = function(m, y, target) {
                ajax.Get("GetArchive", [m, y], target);
            }
        }

    } (Server);




    var Response = function(ajax) {

        return new function() {
            this.Redirect = function(n) {
                var d = new Date();
                self.location.href = "/" + d.getMilliseconds() + "/" + n + ".aspx";
            }
            this.Clear = function(n) {
                switch (n) {
                    case "Kontakt":
                        $("#refreshCaptcha").trigger("click");
                        $("#txtName, #txtEmail, #txtNachricht, #txtChapter").val("").eq(0).focus();
                        break;
                    default:
                        $("#request div").fadeOut(1500);
                        return false;
                        break;
                }

            },
            this.Content = function(result) {
                if (result.error == null) {
                    switch (result.request.method) {
                        case "ContentSuche":
                            var a = result.value;
                            for (i = 0; i < a.length; i++) {
                                var obj = $(a[i]);
                                var search = result.request.args.Suche.split(" ");
                                for (var j = 0; j < search.length; j++) {
                                    obj.highlight(search[j])
                                }
                                result.context.append(obj);
                            }
                            document.title = "weblog.drescher-hackel.de - Die Artikel für den Suchbegriff: " + result.request.args.Suche;
                            break;
                        case "GetContentDetail":
                            var content = result.value;
                            var obj = $(content);
                            document.title = "weblog.drescher-hackel.de - " + obj.find("a.navigate").html();
                            if ($("#sucheText").val().length > 0) {
                                var search = $("#sucheText").val().split(" ");
                                for (var j = 0; j < search.length; j++) {
                                    obj.highlight(search[j])
                                }
                            }

                            result.context.replaceWith(obj);
                            $(document).ready(function() {
                                $("#updatePanelDemo").show().bind("click", Page.Click);
                            });
                            $("a.CommentLink, input.btnVote").click(Server.Execute);
                            break;
                        case "GetArchive":
                            result.context.html(result.value);
                            $("#sucheText").val("");
                            document.title = "weblog.drescher-hackel.de - Die Artikel für den Zeitraum: " + result.request.args.month + "/" + result.request.args.year;
                            break;
                        case "GetComments":
                            var obj = $(result.value);
                            var div = result.context.parent("div");
                            div.css({
                                height: "auto"
                            });
                            result.context.replaceWith(obj);
                            setTimeout(function() {
                                obj.find(".refreshImage, :submit.btnComments, :reset.btnComments").removeAttr("onclick").bind("click", Server.Execute);
                            }, 1000);
                            $("textarea~span").css("display", "block");
                            $(".refreshImage").css("display", "block").trigger("click");
                            var marginTop = "-10px";
                            if ($.browser.mozilla) {
                                marginTop = "-30px";
                            }
                            obj.find(":text[name*='inputEMail']").bind("change", function() {
                                var ID = MD5(this.value);
                                defaultImage = escape('http://weblog.drescher-hackel.de/images/transparent.gif');
                                var imgUrl = 'http://www.gravatar.com/avatar.php?gravatar_id=' + ID + '&rating=G&size=30&d=' + defaultImage;
                                $("#" + this.id.replace("inputEMail", "myGravata")).attr("src", imgUrl).css({
                                    'margin-top': marginTop
                                });
                            }).trigger("change");
                            break;
                        case "AddComment":
                            result.context.html("Ihr Kommentar wurde gespeichert. Die Kommentare werden moderiert.").css({
                                "margin-left": "10px",
                                "color": "#006500"
                            });
                            setTimeout(function() { result.context.html("") }, 3500);
                            break;
                        case "AddVoting":
                            result.context.css("visibility", "hidden");
                            $("." + result.request.args.DcGuid + ":not(.contentbox)").html("Vielen Dank f&uuml;r Ihre Bewertung");
                            $("#Bewertungen1_" + result.request.args.DcGuid).html(result.value.Value);
                            $("#Bewertungen2_" + result.request.args.DcGuid).html(result.value.Count);
                            break;
                        default:
                            return false;
                            break;
                    }



                } else {
                    result.context.html(result.error.Message).fadeIn(2000);
                }
            }

        }
    } (Server);



    r = Request;

    var settings = {
        tl: { radius: 10 },
        tr: { radius: 10 },
        bl: { radius: 0 },
        br: { radius: 0 },
        antiAlias: true
    }
    $(".box").corner(settings);
    $(".box .headline").corner(settings);

    window.setTimeout(function() {
        $("#txtName").focus();
        $("img[id*='refresh']").css("display", "block");
        $(":submit.btnComments, :reset.btnComments").removeAttr("onclick");
        var suche = $("#btnSuche2").replaceWith("<img id='btnSuche' src='/images/icons/SearchWebHS.png' alt='Suche starten' title='Suche starten' />");
        $("#refreshCaptcha").css("visibility", "visible");
        $(":submit.btnComments, :reset.btnComments, #refreshCaptcha, #btnSenden, #btnAbbrechen,  #btnSuche, #btnSuche2a, #btnAnmelden, input.btnVote, .refreshImage")
        .unbind("click", Server.Execute)
        .bind("click", Server.Execute);
        $("#updatePanelDemo").each(function(index, element) {
            $(this).show().bind("click", Page.Click);
        });
    }, 100);
});