if (jQuery) (function(jQuery) {
    jQuery.extend(jQuery.ark, { dialog: function() { } });
    jQuery.extend(jQuery.ark.dialog, {
        in_drag: false,
        in_drag_counter: 0,
        modalBgId: 'arkDialog_bg',
        dialogDivIdAttribute: 'divToMoveId',
        defaultButtonId: 'arkDialogDefaultButton',
        width: 570,
        maxWidth: 974,
        offsetTop: 150, //300,

        init: function() {
            var dialog = this;
            document.onmouseup = function() { dialog.in_drag = false; }
            document.onmousemove = function(evnt) {
                if (!dialog.in_drag) { return true; }
                evnt = evnt || event;
                var in_drag = dialog.in_drag;
                var divToMoveControl = in_drag[0];
                var newX = evnt.x || evnt.clientX;
                var newY = evnt.y || evnt.clientY;
                var scrollX = window.scrollX || document.documentElement.scrollLeft;
                var scrollY = window.scrollY || document.documentElement.scrollTop;
                divToMoveControl.style.left = (scrollX + newX - in_drag[1]) + 'px';
                divToMoveControl.style.top = (scrollY + newY - in_drag[2]) + 'px';
            }
        },
        GetClientSize: function() {
            var size = { width: 0, height: 0 };
            size.width = 0;
            size.height = 0;
            if (typeof (window.innerWidth) == 'number') { //Non-IE
                size.width = window.innerWidth;
                size.height = window.innerHeight;
            }
            else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { //IE 6+ in 'standards compliant mode'
                size.width = document.documentElement.clientWidth;
                size.height = document.documentElement.clientHeight;
            }
            else if (document.body && (document.body.clientWidth || document.body.clientHeight)) { //IE 4 compatible
                size.width = document.body.clientWidth;
                size.height = document.body.clientHeight;
            }
            return size;
        },
        GetDocumentHeight: function() {
            return (document.body.scrollHeight > document.body.offsetHeight) ? document.body.scrollHeight : document.body.offsetHeight;
        },
        jsCallClose: function(dialogDivId) { return 'jQuery.ark.dialog.close(\'' + dialogDivId + '\')'; },
        jsCallCloseFunction: function(dialogDivId) { return 'function() { ' + this.jsCallClose(dialogDivId) + '; }'; },
        open: function(tmplId, dialogDivId, captionText, contentHtml, closeAction) {
            if (null == document.getElementById(dialogDivId)) {
                var divToCaptureId = dialogDivId + '_caption';
                var arkDialog = tmpl(tmplId, {
                    InstanceID: dialogDivId,
                    CaptionDivID: divToCaptureId,
                    Width: this.width,
                    CaptionText: captionText,
                    ContentHtml: contentHtml,
                    JsCallClose: closeAction || this.jsCallClose(dialogDivId)
                });
                jQuery('#' + this.modalBgId).after(arkDialog);
            }
            var dragStartControl = document.getElementById(divToCaptureId);
            if (dragStartControl) {
                dragStartControl.setAttribute(this.dialogDivIdAttribute, dialogDivId);
                var dialog = this;
                dragStartControl.onmousedown = function(evnt) {
                    evnt = evnt || event;
                    var divToMoveId = this.getAttribute(dialog.dialogDivIdAttribute);
                    if (divToMoveId) {
                        var divToMoveControl = document.getElementById(divToMoveId);
                        if (divToMoveControl) {
                            var startX = evnt.offsetX || evnt.layerX;
                            var startY = evnt.offsetY || evnt.layerY;
                            dialog.in_drag = [divToMoveControl, startX, startY];
                            this.style.zIndex = ++dialog.in_drag_counter;
                        }
                    }
                }
            }
            //document.getElementById(dialogDivId).style.height = 'auto';
            //alert(document.getElementById(dialogDivId).offsetHeight);
            document.getElementById(dialogDivId).style.top = (window.scrollY || document.documentElement.scrollTop)
            //	+ (this.GetClientSize().height / 2)
            //	+ (document.getElementById(dialogDivId).offsetHeight / 2)
				+ this.offsetTop
				+ 'px';
            document.getElementById(dialogDivId).style.left = (document.body.offsetWidth / 2) - (this.width / 2) + 'px';
            document.getElementById(dialogDivId).style.display = 'block';
            document.getElementById(this.modalBgId).style.height = this.GetDocumentHeight() + 'px';
            document.getElementById(this.modalBgId).style.display = 'block';
            if (document.body.offsetWidth < this.maxWidth) {
                document.getElementById('arkDialog_bg').style.width = this.maxWidth + 'px';
            }
        },
        close: function(dialogDivId) {
            document.getElementById(dialogDivId).style.display = 'none';
            document.getElementById(this.modalBgId).style.display = 'none';
            this.in_drag = false;
            jQuery('#' + dialogDivId).remove();
        },
        ShowOKDialog: function(dialogDivId, caption, content, okAction) {
            jQuery.ark.dialog.open('arkDialog', dialogDivId, caption,
				content + tmpl('arkDialogOkButton', {
				    OkAction: okAction || jQuery.ark.dialog.jsCallCloseFunction(dialogDivId),
				    ButtonID: jQuery.ark.dialog.defaultButtonId,
				    MouseOverClass: "'PopUp_Login_btn_hov';",
				    MouseOutClass: "'PopUp_Login_btn';"
				}));
            document.getElementById(this.defaultButtonId).focus();
        },
        ShowOKCancelDialog: function(dialogDivId, caption, content, okAction, cancelAction) {
            jQuery.ark.dialog.open('arkDialog', dialogDivId, caption, content
				+ tmpl('arkDialogOkButton', { OkAction: okAction, ButtonID: jQuery.ark.dialog.defaultButtonId,
				    MouseOverClass: "'PopUp_Login_btn_hov';",
				    MouseOutClass: "'PopUp_Login_btn';"
				})
				+ tmpl('arkDialogCancelButton', { CancelAction: cancelAction || jQuery.ark.dialog.jsCallCloseFunction(dialogDivId),
				    MouseOverClass: "'PopUp_Login_btn_hov';",
				    MouseOutClass: "'PopUp_Login_btn';"
				}));
            document.getElementById(this.defaultButtonId).focus();
        },
        ShowYesNoDialog: function(dialogDivId, caption, content, yesAction, noAction) {
            jQuery.ark.dialog.open('arkDialog', dialogDivId, caption, content
				+ tmpl('arkDialogYesButton', { ButtonID: jQuery.ark.dialog.defaultButtonId,
				    MouseOverClass: "'PopUp_Login_btn_hov';",
				    MouseOutClass: "'PopUp_Login_btn';"
				})
				+ tmpl('arkDialogNoButton', {
				    MouseOverClass: "'PopUp_Login_btn_hov';",
				    MouseOutClass: "'PopUp_Login_btn';"
				}));
            jQuery('.btnYes', '#' + dialogDivId).click(function() {
                jQuery.ark.dialog.close(dialogDivId);
                if (yesAction)
                    yesAction();
            });
            jQuery('.btnNo', '#' + dialogDivId).click(function() {
                jQuery.ark.dialog.close(dialogDivId);
                if (noAction)
                    noAction();
            });
            document.getElementById(this.defaultButtonId).focus();
        }
    });
})(jQuery);
jQuery(function() { jQuery.ark.dialog.init(); });
