﻿var currentlanguageId = 0;
var currentpageId = $("#currentPageId").val();
var slideshowteller = 0;

function LoadRecentPosts() {
    var now = new Date();
    $.post(
	    "/mvccmsforumajax/GetAllForumsLatestPosts/" + now.getMilliseconds(),
	    function (data) {
	        var objdata = JSON.parse(data);
	        if (data.error) {
	            //alert(objdata.error);
	        }
	        else {
	            PopulateRecentPosts(objdata);
	        }
	    },
	    "json"
    );
}

function PopulateRecentPosts(posts) {
    $("#modules-forum").html("");
    var moduleHtml = "<div><h3>Newest Forum Posts</h3></div>";
    $.each(posts, function (i, post) {

        var addedDate = jsonParseDate(post.AddedDate);
        moduleHtml += "<div class='postlist-ajax'>";
        if (!post.IsReply) {
            moduleHtml += "<a href='/forums/forum-" + post.ForumPath + "/" + post.Path + "'>" + post.Title + "</a>";
        } else {
            moduleHtml += "<a href='/forums/forum-" + post.ForumPath + "/" + post.Path + "/#pst-" + post.PostID + "'>" + post.Title + "</a>";
        }
        moduleHtml += "   " + addedDate.format("dddd, mmmm dS, yyyy, h:MM TT");
        moduleHtml += "  - by " + post.UserName;

        moduleHtml += "</div>";

    });
    $("#modules-forum").html(moduleHtml);
}

function LoadContent(content) {
    if (content._HeaderImage) {
        LoadHeaderImages(content._HeaderImageObject);
    }
    if (content._SideImage) {
        LoadSideImage(content._SideImageObject);
    }
    if (content._SlideImage) {
        LoadSlideImages(content._SlideImageObject);
    }
    if (content._Boxes) {
        LoadBoxes(content._BoxesObject, content._BoxRows, 3);
    }
    if (content._NewsItem) {
        LoadNewsItems(content._NewsItemObject);
    }
    if (content._SocialMedia) {
        LoadSocialMedia();
    }
    if (content._Description) {
        LoadDescription(content._DescriptionString);
    }
}

function LoadNewsItems(newsitems) {
    //if ($("#TemplateID").val() == 4) {
    newsdiv = $('.content-news');
    path = $('#ImagePath').val();
    addhtml = "<div class='divAllNews'>";
    var lastitem;
    $.each(newsitems, function (i, newsitem) {
        addhtml += "<div class='NewsText'>"
            + "<span><h1 style=\"\">" + newsitem.Title + "</h1></span>"
            + "<span style=\"color:#F18E00\">" + newsitem.Description + "</span>"
            + "</div>";
        //            addhtml += "<div class='NewsImageOverlay'>";
        //            addhtml += "<div class='NewsOverlay'></div>";
        //            addhtml += "<img class='NewsImage' src='/Uploadedimages/" + path + "/" + newsitem.ImageFileName + "' alt='NF'/>";
        //            addhtml += "</div>";

        lastitem = newsitem.Link;
    });
    addhtml += "</div>";
    if (lastitem != undefined) {
        //        str = lastitem.split('/'); // Levert de hoofdcategorie van de nieuwspaginas.
        //        addhtml += "<div class='divLeesMeer'><a href='/" + str[0] + "'>Lees meer</a></div>";
        $(newsdiv).html(addhtml);
    }
    $("#news-bar").css("visibility", "visible");
    //$("#content-news").css("display", "");
    //}
}

function LoadHeaderImages(headerimages) {
    var addhtml = '';
    count = -1;
    path = $('#ImagePath').val();
    $.each(headerimages, function (i, headerimage) {
        count = i;

        if ($('#SiteName').val() == 'Verwiel en Wijngaard') {
            if (count >= 3) return;
            addhtml += "<img height='152px' width='172px' style='margin:0; padding:0;' src='/Uploadedimages/" + path + "/Headerimages/" + headerimage.FileName + "'/>";
        }
        else {
            title = headerimage.Text;
            className = headerimage.Location + "," + headerimage.Color;
            addhtml += "<a style='margin:0; padding:0; background-color:transparent !important;' title='" + headerimage.Text + "' class='" + headerimage.Location + "," + headerimage.Color + "' href='";
            if (headerimage.Link != -1) {
                addhtml += "/";
            }
            addhtml += headerimage.LinkPath + "'>";
            addhtml += "<img height='152px' width='172px' style='margin:0; padding:0;' src='/Uploadedimages/" + path + "/Headerimages/" + headerimage.FileName + "'/>";
            addhtml += "</a>";
        }
    });
    if ($('#SiteName').val() == 'Verwiel en Wijngaard') {
        $('#div_headerimages').html(addhtml);
        return;
    }
    else {
        $('.slideshow').each(function () { $(this).html(addhtml); });
    }
    if (count == 0) {
        var lc = className.split(",");
        $('#imgTitle').text(title).css({ "left": lc[0] + "px", "top": lc[1] + "px", "color": lc[2] });
        $('#div_headerimages').css("display", "");
    }
    else if (count > 0) {
        $('#div_headerimages').css("display", "");
        if ($('#SiteName').val() == 'Verwiel en Wijngaard') {
//            $('.slideshow').each(function () {
//                $(this).cycle
//                    ({
//                        fx: 'scrollLeft',
//                        height: 150,
//                        width: 170,
//                        speed: 2000,
//                        timeout: 4000,
//                        startingSlide: slideshowteller,
//                        before: function () { $('#imgTitle').fadeOut(); }
//                    });
//                slideshowteller++;
//            });
        }
        else {
            $('.slideshow').cycle
                    ({
                        fx: 'fade',
                        height: 244,
                        width: 960,
                        before: function () { $('#imgTitle').fadeOut(); },
                        after: function () {
                            var lc = this.className.split(",");
                            link = this;
                            var ref = $(link).attr('href');
                            $('#imgTitle').attr('href', ref);
                            $('#imgTitle').text(this.title).css({ "left": lc[0] + "px", "top": lc[1] + "px", "color": lc[2] }).fadeIn();
                        }
                    });
        }
    }
}

function LoadSideImage(sideimages) {
    path = $('#ImagePath').val();
    addhtml = ''
    $.each(sideimages, function (i, sideimage) {
        addhtml = addhtml + "<img src='/Uploadedimages/" + path + "/Sideimages/" + sideimage.FileName + "' alt='' class='sideimage'>";
    });
    $('#sideimagediv').html(addhtml);

    // Indien de sideimages verticaal gecentreerd moeten worden (zoals op VenW.com) voeren we de volgende code uit: 
    if ($('#vertical_center').length > 0) {
        ha = $('.content-container').height();
        hb = $('#sideimagediv').height();
        verticalmargin = (ha - hb) / 2;
        $('#sideimagediv').css("margin-top", verticalmargin);
    }
}

function LoadSlideImages(slideimages) {
    var addhtml = '';
    path = $('#ImagePath').val();
    count = -1;
    $.each(slideimages, function (i, slideimage) {
        if (i < 3) {
            addhtml += "<img src='/Uploadedimages/" + path + "/Slideimages/" + slideimage.FileName + "'/>";
            count = i;
        }
    });
    $('.slideimages-center').html(addhtml);
    $('.slideimages-center').css("display", "");
    //    $('.slideimages-center').cycle
    //                    ({
    //                        fx: 'fade'
    //                    });
}

function LoadBoxes(boxes, rows, cols) {
    var boxcount = boxes.length;
    var boxeshtml = '';

    for (var i = 0; i < rows; i++) {
        for (var j = 1; j <= cols; j++) {
            boxid = (j + i * cols);
            box = boxes[boxid - 1];
            addhtml = '';

            if (boxid <= boxcount) {
                boxcss = JSON.parse(box.CSS);
                bgimagecss = "";

                $('#box' + boxid).css("background-color", boxcss.bgcolor);

                if (boxcss.itemstyle == 'text') {
                    addhtml = "<div class='box_textitem'>" + box.Body + "</div>";
                    $('#box' + boxid).css("background-image", "url('" + boxcss.bgimages[0] + "')");
                    $('#box' + boxid).html(addhtml);
                }

                if (boxcss.itemstyle == 'list') {
                    addhtml = "<div class='box_listitem " + boxcss.liststyle + "'>"
                            + "<h1>" + box.Title + "</h1>"
                            + "<ul>";

                    if (boxcss.agenda == true) {
                        //boxcss.links en boxcss.list aanpassen naar AgendaItems
                        var now = new Date();
                        $.ajaxSetup({ async: false });
                        $.post(
                        "/backofficeAjax/GetAgendaEvents_Box/" + now.getMilliseconds(),
                        function (data) {
                            var objdata = JSON.parse(data);
                            if (objdata.error) {
                                alert(objdata.error);
                            }
                            else {
                                agendaevents = objdata;
                                if (agendaevents.length == 0) {
                                    addhtml += "<li><a href='/contact/agenda'>Momenteel staat er niets op de agenda.</a></li>";
                                }
                                else {
                                    for (var k = 0; k < agendaevents.length; k++) {
                                        addhtml += "<li><a href='";
                                        addhtml += "/contact/agenda/" + agendaevents[k].url + "'>";
                                        addhtml += agendaevents[k].title + "</a></li>";
                                    }
                                }
                            }
                            addhtml += "</ul></div>";
                            $('#box' + boxid).css("background-image", "url('" + boxcss.bgimages[0] + "')");
                            $('#box' + boxid).css("background-repeat", "no-repeat");
                            $('#box' + boxid).html(addhtml);
                        },
                        "json"
                        );
                    }
                    //Gewone list
                    else {
                        for (var k = 0; k < boxcss.list.length; k++) {
                            addhtml += "<li><a href='" + boxcss.links[k] + "'>" + boxcss.list[k] + "</a></li>";
                        }

                        addhtml += "</ul></div>";
                        $('#box' + boxid).css("background-image", "url('" + boxcss.bgimages[0] + "')");
                        $('#box' + boxid).css("background-repeat", "no-repeat");
                        $('#box' + boxid).html(addhtml);
                    }
                }

                if (boxcss.itemstyle == 'slideshow') {
                    for (var l = 0; l < boxcss.bgimages.length; l++) {
                        addhtml += "<a href=" + boxcss.links[l] + "><img src='" + boxcss.bgimages[l] + "' height='185px' width='320px' /></a>";
                    }
                    $('#box' + boxid).html(addhtml);
                    $('#box' + boxid).cycle({
                        fx: 'fade',
                        speed: 1000,
                        timeout: 8000
                    });
                }
            }

            else {
                addhtml += "<div style='padding:10px;'>No box selected</div>";
                $('#box' + boxid).html(addhtml);

            }

            $('#box' + boxid).css('display', '');
        }
    }

    $('#Boxes').css('display', '');
}

function LoadSocialMedia() {
    //$('#socialmedia').css('visibility', 'visible');
}

function LoadDescription(descstr) {
    $('#description').html(descstr);
}

function LoadModules(pageid) {
    var now = new Date();
    $.post(
	    "/mvccmsAjax/GetModules/" + now.getMilliseconds(),
		{ pageId: pageid },
	    function (data) {
	        var objdata = data;
	        if (objdata.error) {
	            //alert(objdata.error);
	        }
	        else {
	            PopulateModules(data);
	        }
	    },
	    "json"
    );
}

function PopulateModules(modules) {
    $.each(modules, function (i, module) {
        LoadModule(module);
    });
}

function LoadModule(module) {
    var now = new Date();
    var encoded = JSON.stringify(module);
    if (module.UseAjaxLoadURL) {
        $("#moduleholder").val(encoded);
        $("#" + module.TargetDiv).load(module.AjaxLoadURL + now.getMilliseconds(), ModuleLoadCallBack);
    }
    else {
        $("#moduleholder").val(encoded);
        $("#" + module.TargetDiv).html(module.HTML);
        ModuleLoadCallBack();
    }
}

function ModuleLoadCallBack() {
    var now = new Date();
    var module = JSON.parse($("#moduleholder").val());
    if (module.GetScript != null && module.GetScript != '') {
        $.getScript(module.GetScript + '?' + now.getMilliseconds());
    }
    $("#moduleholder").html("");
}
function ClearSearchBox() {
    $("#searchbox").get(0).value = "";
}
function SetSearch() {
    var sLoc = window.location.href;
    var issearch = sLoc.indexOf("site-search");
    if (issearch > -1) {
        $.cookie('phrase', $("#searchbox").val(), { path: '/' });
        DoSearch();
    }
    else {
        $.cookie('phrase', $("#searchbox").val(), { path: '/' });
        window.location.href = "/site-search/";
    }
}
function DoSearch() {
    var now = new Date();
    var phrase = $.cookie('phrase');
    $("#searchbox").val(phrase);
    var data = { Term: phrase }
    var encoded = JSON.stringify(data);
    $.post(
		"/mvccmsAjax/Search/" + now.getMilliseconds(),
	    { data: encoded },
	    function (data) {
	        var objdata = data;
	        if (objdata.error) {
	            //alert(objdata.error);
	        }
	        else {
	            PopulateSearchResults(objdata);
	        }
	    },
	    "json"
    );
}
function PopulateSearchResults(results) {
    $("#SearchResults-tbl tbody").html("");
    var tblRow = "<tr><td><ol>";
    var title = "", path = "";
    var sitename = $("#SiteName").val();
    var rresults = false;
    $.each(results, function (i, resultitem) {
        rresults = true;
        var updatedate = jsonParseDate(resultitem.UpdateDate);
        if (resultitem.IsCurrentVersion && !resultitem.IsSubPage) {
            title = sitename + ' - ' + resultitem.CatTitle;
            path = resultitem.CatPath;
        }
        else if (resultitem.IsForumResult == 1) {
            title = sitename + ' - ' + resultitem.CatTitle + ' Forum : ' + resultitem.Title;
            path = "forums/forum-" + resultitem.CatPath + "/" + resultitem.Path;
        }
        else if (resultitem.IsWikiResult == 1) {
            title = sitename + ' Wiki - ' + resultitem.Title;
            path = "wiki/" + resultitem.CatPath;
        }
        else {
            title = sitename + ' - ' + resultitem.CatTitle + ' - ' + resultitem.Title;
            path = resultitem.CatPath + '/' + resultitem.Path;
        }

        tblRow += "<li><h3><a href='../" + path + "'>" + title + "</a></h3></li>";

        tblRow += "<div class='s'>" + resultitem.Body + "... <br /><b>last updated:</b> " + updatedate.format("dddd, mmmm dS, yyyy, h:MM:ss TT") + "</div>";

    });
    tblRow += "</ol></td></tr>";
    if (!rresults) {
        tblRow = "<tr><td>No Results Found</td></tr>";
    }
    $(tblRow).appendTo("#SearchResults-tbl tbody");
    $("#isloading").hide();
}
function getCalendarDate(now) {
    var months = new Array(13);
    months[0] = "January";
    months[1] = "February";
    months[2] = "March";
    months[3] = "April";
    months[4] = "May";
    months[5] = "June";
    months[6] = "July";
    months[7] = "August";
    months[8] = "September";
    months[9] = "October";
    months[10] = "November";
    months[11] = "December";
    var monthnumber = now.getMonth();
    var monthname = months[monthnumber];
    var monthday = now.getDate();
    var year = now.getYear();
    if (year < 2000) { year = year + 1900; }
    var dateString = monthname +
                    ' ' +
                    monthday +
                    ', ' +
                    year;
    return dateString;
} // function getCalendarDate()

function getClockTime(now) {
    var hour = now.getHours();
    var minute = now.getMinutes();
    var second = now.getSeconds();
    var ap = "AM";
    if (hour > 11) { ap = "PM"; }
    if (hour > 12) { hour = hour - 12; }
    if (hour == 0) { hour = 12; }
    if (hour < 10) { hour = "0" + hour; }
    if (minute < 10) { minute = "0" + minute; }
    if (second < 10) { second = "0" + second; }
    var timeString = hour +
                    ':' +
                    minute +
                    ':' +
                    second +
                    " " +
                    ap;
    return timeString;
} // function getClockTime()


function jsonParseDate(obj) {
    if (typeof obj !== "string") {
        return obj;
    }

    var match = obj.match(/^\/Date\((\d+)\)\/$/);

    if (!match) {
        return obj;
    }
    return new Date(parseInt(match[1]));
};
function checkSearch(e) {
    var characterCode
    if (e && e.which) {
        e = e
        characterCode = e.which
    }
    else {
        e = event
        characterCode = e.keyCode
    }
    if (characterCode == 13) {
        SetSearch();
        return false
    }
    return true

}
/*
* Date Format 1.2.3
* (c) 2007-2009 Steven Levithan <stevenlevithan.com>
* MIT license
*
* Includes enhancements by Scott Trenda <scott.trenda.net>
* and Kris Kowal <cixar.com/~kris.kowal/>
*
* Accepts a date, a mask, or a date and a mask.
* Returns a formatted version of the given date.
* The date defaults to the current date/time.
* The mask defaults to dateFormat.masks.default.
*/

var dateFormat = function () {
    var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
		timezoneClip = /[^-+\dA-Z]/g,
		pad = function (val, len) {
		    val = String(val);
		    len = len || 2;
		    while (val.length < len) val = "0" + val;
		    return val;
		};

    // Regexes and supporting functions are cached through closure
    return function (date, mask, utc) {
        var dF = dateFormat;

        // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
        if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
            mask = date;
            date = undefined;
        }

        // Passing date through Date applies Date.parse, if necessary
        date = date ? new Date(date) : new Date;
        if (isNaN(date)) throw SyntaxError("invalid date");

        mask = String(dF.masks[mask] || mask || dF.masks["default"]);

        // Allow setting the utc argument via the mask
        if (mask.slice(0, 4) == "UTC:") {
            mask = mask.slice(4);
            utc = true;
        }

        var _ = utc ? "getUTC" : "get",
			d = date[_ + "Date"](),
			D = date[_ + "Day"](),
			m = date[_ + "Month"](),
			y = date[_ + "FullYear"](),
			H = date[_ + "Hours"](),
			M = date[_ + "Minutes"](),
			s = date[_ + "Seconds"](),
			L = date[_ + "Milliseconds"](),
			o = utc ? 0 : date.getTimezoneOffset(),
			flags = {
			    d: d,
			    dd: pad(d),
			    ddd: dF.i18n.dayNames[D],
			    dddd: dF.i18n.dayNames[D + 7],
			    m: m + 1,
			    mm: pad(m + 1),
			    mmm: dF.i18n.monthNames[m],
			    mmmm: dF.i18n.monthNames[m + 12],
			    yy: String(y).slice(2),
			    yyyy: y,
			    h: H % 12 || 12,
			    hh: pad(H % 12 || 12),
			    H: H,
			    HH: pad(H),
			    M: M,
			    MM: pad(M),
			    s: s,
			    ss: pad(s),
			    l: pad(L, 3),
			    L: pad(L > 99 ? Math.round(L / 10) : L),
			    t: H < 12 ? "a" : "p",
			    tt: H < 12 ? "am" : "pm",
			    T: H < 12 ? "A" : "P",
			    TT: H < 12 ? "AM" : "PM",
			    Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
			    o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
			    S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
			};

        return mask.replace(token, function ($0) {
            return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
        });
    };
} ();

// Some common format strings
dateFormat.masks = {
    "default": "ddd mmm dd yyyy HH:MM:ss",
    shortDate: "m/d/yy",
    mediumDate: "mmm d, yyyy",
    longDate: "mmmm d, yyyy",
    fullDate: "dddd, mmmm d, yyyy",
    shortTime: "h:MM TT",
    mediumTime: "h:MM:ss TT",
    longTime: "h:MM:ss TT Z",
    isoDate: "yyyy-mm-dd",
    isoTime: "HH:MM:ss",
    isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
    isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
    dayNames: [
		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
		"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
	],
    monthNames: [
		"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
		"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
	]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
    return dateFormat(this, mask, utc);
};
function ChangeLanguage(languageId) {

    $("#lang-" + currentlanguageId).removeClass("languageinlist-active");
    $("#lang-" + currentlanguageId).addClass("languageinlist");
    currentlanguageId = languageId;
    $("#lang-" + currentlanguageId).removeClass("languageinlist");
    $("#lang-" + currentlanguageId).addClass("languageinlist-active");
    LoadAltLangPage(languageId);

    //thecontent
}
function LoadAltLangPage(languageId) {
    $("#altlangisloading").show();
    var now = new Date();
    var data = {
        ParentPageID: currentpageId,
        LanguageID: languageId
    }
    var encoded = JSON.stringify(data);
    $.post(
	    "/backofficeAjax/GetAltLangPage/0/" + now.getMilliseconds(),
	    { data: encoded },
	    function (data) {
	        var objdata = data;
	        if (objdata.error) {
	            alert(objdata.error);
	        }
	        else {
	            $("#thecontent").html(data.Body);
	            $("#altlangisloading").hide();
	        }
	    },
	    "json"
    );
}

