﻿var currentPagePacket = null;
var lastLinkObj = null;

var imageCache = [];

var resizeTimeout = 500;

// removes ugly dotted lines around links and buttons
function removeLine(obj) {
    if (obj && obj.blur) {
        obj.blur();
    }
}

function setupPage(pagePacket, pageNameSpace) {
    if (!pagePacket) {
        pagePacket = pagePackets.home;
    }

    if (!pageNameSpace) {
        pageNameSpace = pageNameSpaces.main;
    }

    $(document.body).css("background-color", "#" + pagePacket.backColor);
    $("#" + pageNameSpace.headerElementID).css("background-image", "url(" + pagePacket.headerImage + ")");
    $("#" + pageNameSpace.headerTextBackColorElementID).css("background-color", "#" + pagePacket.backColor);
    $("#" + pageNameSpace.headerBigTextElementID).html(pagePacket.headerBigText);
    $("#" + pageNameSpace.headerSmallTextElementID).html(pagePacket.headerSmallText);
    $("#" + pageNameSpace.headerSmallerTextElementID).html(pagePacket.headerSmallerText);

    document.title = pagePacket.title + " - " + pageNameSpace.baseTitle;
}

function getPage(pagePacket, pageNameSpace) {
    var fadeOutTimeout = 250;
    var fadeInTimeout = 500;

    if (!pagePacket) {
        pagePacket = pagePackets.home;
    }

    if (!pageNameSpace) {
        pageNameSpace = pageNameSpaces.main;
    }

    currentPagePacket = pagePacket;

    $.ajax({
        url: pagePacket.url,
        type: "GET",
        cache: false,
        beforeSend: function(request) {
            if (pagePacket.attachedMethodCalls) {
                pagePacket.attachedMethodCalls();
            }
        },
        success: function(data, textStatus, request) {
            $("#" + pageNameSpace.contentElementID).html(data);
        },
        error: function(request, textStatus, errorThrown) {
            $("#" + pageNameSpace.contentElementID).html(textStatus + ", " + errorThrown);
        },
        complete: function(request, textStatus) {
            setupPage(pagePacket, pageNameSpace);
        }
    });
}

function postPage(pagePacket, pageNameSpace) {
    if (!pagePacket) {
        pagePacket = pagePackets.home;
    }

    if (!pageNameSpace) {
        pageNameSpace = pageNameSpaces.main;
    }

    currentPagePacket = pagePacket;

    $.ajax({
        url: pagePacket.url,
        type: "POST",
        data: $('#' + pageNameSpace.formElementID).serialize(),
        cache: false,
        //        beforeSend: function(request) {
        //            if (pagePacket.attachedMethodCalls) {
        //                pagePacket.attachedMethodCalls();
        //            }
        //        },
        success: function(data, textStatus, request) {
            alert(data);
        
            //$("#" + pageNameSpace.contentElementID).html(data);            
            //$("#" + pageNameSpace.contentElementID).html("<div class='viewContentBlock'>POSTEN GAAT GOED.</div>");
        },
        error: function(request, textStatus, errorThrown) {
            alert(errorThrown);
            
            //$("#" + pageNameSpace.contentElementID).html(textStatus + ", " + errorThrown);            
        },
        complete: function(request, textStatus) {
            setupPage(pagePacket, pageNameSpace);
        }
    });
}

function setStyle(linkForStyle, pagePacket, attachPacket) {
    var linkForStyleObj = document.getElementById(linkForStyle);

    if (!linkForStyleObj) {
        linkForStyleObj = linkForStyle;
    }

    if (attachPacket) {
        if (lastLinkObj) {
            $(lastLinkObj).css("color", "#000");
        }

        linkForStyleObj.pagePacket = pagePacket;
        lastLinkObj = linkForStyleObj;
    }

    $(linkForStyleObj).css("color", "#" + pagePacket.menuColor);
}

function resetStyle(linkForStyle) {
    var linkForStyleObj = document.getElementById(linkForStyle);

    if (!linkForStyleObj) {
        linkForStyleObj = linkForStyle;
    }

    pagePacket = linkForStyleObj.pagePacket;

    if (pagePacket != currentPagePacket) {
        $(linkForStyleObj).css("color", "#000");
    }
}

function preloadImages() {
    var cacheImage = null;
    var argsLength = arguments.length;

    for (i = 0; i < argsLength; i++) {
        cacheImage = document.createElement('img');
        cacheImage.src = "";

        cacheImage.onload = function() {
            imageCache.push(cacheImage);
        }

        cacheImage.src = arguments[i];
    }
}

function changeElementSize(element, newWidth, newHeight, timeOut, callBackMethod) {
    var elementObject = document.getElementById(element);

    if (!elementObject) {
        elementObject = element;
    }

    if (elementObject) {
        newWidth = newWidth + "px";
        newHeight = newHeight + "px";

        if (timeOut > 0) {
            $(elementObject).stop(true, true).animate({
                width: newWidth,
                height: newHeight
            }, timeOut, callBackMethod);
        }
        else {
            $(elementObject).css("width", newWidth);
            $(elementObject).css("height", newHeight);

            if (callBackMethod) {
                callBackMethod();
            }
        }
    }
}

function initDialog(element, windowTitle) {
    var elementObject = document.getElementById(element);

    if (!elementObject) {
        elementObject = element;
    }

    if (elementObject) {
        $(elementObject).dialog({
            autoOpen: false,
            modal: true,
            closeText: 'sluiten',
            closeOnEscape: true,
            dialogClass: 'wsUrmondDialog',
            draggable: true,
            height: 500,
            position: 'center',
            resizable: true,
            title: windowTitle,
            width: 800,
            buttons: {
                "Sluiten": function() { $(this).dialog("close"); }
            }
        });
    }
}
function initDialogR(element, windowTitle) {
    var elementObject = document.getElementById(element);

    if (!elementObject) {
        elementObject = element;
    }

    if (elementObject) {
        $(elementObject).dialog({
            autoOpen: false,
            modal: true,
            closeText: 'sluiten',
            closeOnEscape: true,
            dialogClass: 'wsUrmondDialog',
            draggable: true,
            height: 500,
            position: 'center',
            resizable: true,
            title: windowTitle + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a style="font-size:14px;" href="/reactieformulier?ad=' + windowTitle + '">(reageren)</a>',
            width: 800,
            buttons: {
                "Reageren": { click: function() { window.location.href = '/reactieformulier?ad=' + windowTitle; },
                text: 'Reageren',
                'class': 'ReageerKnop'
                },
                "Sluiten": { click: function() { $(this).dialog("close"); },
                    text: 'Sluiten'
                }

            }
        });
    }
}

function showDialog(element) {
    var elementObject = document.getElementById(element);

    if (!elementObject) {
        elementObject = element;
    }

    if (elementObject) {
        $(elementObject).dialog('open');
        return false;
    }
}

function getElementHeight(elemID, failSaveHeight) {
    var elemHeight = failSaveHeight;

    if (elemID) {
        var elem = document.getElementById(elemID);

        if (elem) {
            elemHeight = elem.height;

            if (!elemHeight || (elemHeight == 0)) {
                elemHeight = elem.style.height;
            }
            
            if (!elemHeight || (elemHeight == 0)) {
                elemHeight = failSaveHeight;
            }

            //alert(elem.height);
            //alert(elem.style.height);
        }
    }

    return elemHeight;
}
