﻿/*
* SimpleModal modaldialog Form
* http://www.ericmmartin.com/projects/simplemodal/
* http://code.google.com/p/simplemodal/
*
* Copyright (c) 2009 Eric Martin - http://ericmmartin.com
*
* Licensed under the MIT license:
*   http://www.opensource.org/licenses/mit-license.php
*
* Revision: $Id: modaldialog.js 212 2009-09-03 05:33:44Z emartin24 $
*
*/
function showModalDialog(geturl, posturl) {
    $.get(geturl, function(data) {
        // create a modal dialog with the data
        //if (validatefunction) {
        //    modaldialog.validatefunction = validatefunction;
        //} else {
        //    modaldialog.validatefunction = function() { return true; }
        //}
        modaldialog.posturl = posturl;
        $(data).modal({
            closeHTML: "<a href='#' title='Close' class='modaldialog-close'>x</a>",
            position: ["15%", ],
            overlayId: 'modaldialog-overlay',
            containerId: 'modaldialog-container',
            onOpen: modaldialog.open,
            onShow: modaldialog.show,
            onClose: modaldialog.close
        });
    });
}

$(document).ready(function() {
    // preload images
    var img = ['cancel.png', 'form_bottom.gif', 'form_top.gif', 'loading.gif', 'send.png'];
    $(img).each(function() {
        var i = new Image();
        i.src = '/Main_Style/WoHoopsV3/image/dialog/' + this;
    });
});

var modaldialog = {
    posturl: null,
    message: null,
    validatefunction: null,
    open: function(dialog) {
        // add padding to the buttons in firefox/mozilla
        if ($.browser.mozilla) {
            $('#modaldialog-container .modaldialog-button').css({
                'padding-bottom': '2px'
            });
        }
        // input field font size
        if ($.browser.safari) {
            $('#modaldialog-container .modaldialog-input').css({
                'font-size': '.9em'
            });
        }

        // dynamically determine height
        var h = 280;
        if ($('#modaldialog-subject').length) {
            h += 26;
        }
        if ($('#modaldialog-cc').length) {
            h += 22;
        }

        var title = $('#modaldialog-container .modaldialog-title').html();
        $('#modaldialog-container .modaldialog-title').html('Loading...');
        dialog.overlay.fadeIn(200, function() {
            dialog.container.fadeIn(200, function() {
                dialog.data.fadeIn(200, function() {
                    $('#modaldialog-container .modaldialog-content').animate({
                        height: h
                    }, function() {
                        $('#modaldialog-container .modaldialog-title').html(title);
                        $('#modaldialog-container form').fadeIn(200, function() {
                            $('#modaldialog-container #modaldialog-name').focus();

                            $('#modaldialog-container .modaldialog-cc').click(function() {
                                var cc = $('#modaldialog-container #modaldialog-cc');
                                cc.is(':checked') ? cc.attr('checked', '') : cc.attr('checked', 'checked');
                            });

                            // fix png's for IE 6
                            if ($.browser.msie && $.browser.version < 7) {
                                $('#modaldialog-container .modaldialog-button').each(function() {
                                    if ($(this).css('backgroundImage').match(/^url[("']+(.*\.png)[)"']+$/i)) {
                                        var src = RegExp.$1;
                                        $(this).css({
                                            backgroundImage: 'none',
                                            filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '", sizingMethod="crop")'
                                        });
                                    }
                                });
                            }
                        });
                    });
                });
            });
        });
    },
    show: function(dialog) {
        $('#modaldialog-container .modaldialog-send').click(function(e) {
            e.preventDefault();
            // validate form
            if (modaldialog.validatefunction()) {
                var msg = $('#modaldialog-container .modaldialog-message');
                msg.fadeOut(function() {
                    msg.removeClass('modaldialog-error').empty();
                });
                $('#modaldialog-container .modaldialog-title').html('正在发送...');
                $('#modaldialog-container form').fadeOut(200);
                $('#modaldialog-container .modaldialog-content').animate({
                    height: '80px'
                }, function() {
                    $('#modaldialog-container .modaldialog-loading').fadeIn(200, function() {
                        $.ajax({
                            url: modaldialog.posturl,
                            data: $('#modaldialog-container form').serialize() + '&action=send',
                            type: 'post',
                            cache: false,
                            dataType: 'html',
                            success: function(data) {
                                $('#modaldialog-container .modaldialog-loading').fadeOut(200, function() {
                                    $('#modaldialog-container .modaldialog-title').html('');
                                    msg.html(data).fadeIn(200);
                                });
                            },
                            error: modaldialog.error
                        });
                    });

                });
            }
            else {
                if ($('#modaldialog-container .modaldialog-message:visible').length > 0) {
                    var msg = $('#modaldialog-container .modaldialog-message div');
                    msg.fadeOut(200, function() {
                        msg.empty();
                        modaldialog.showError();
                        msg.fadeIn(200);
                    });
                }
                else {
                    $('#modaldialog-container .modaldialog-message').animate({
                        height: '30px'
                    }, modaldialog.showError);
                }

            }
        });
    },
    close: function(dialog) {
        $('#modaldialog-container .modaldialog-message').fadeOut();
        $('#modaldialog-container .modaldialog-title').html('...');
        $('#modaldialog-container form').fadeOut(200);
        $('#modaldialog-container .modaldialog-content').animate({
            height: 40
        }, function() {
            dialog.data.fadeOut(200, function() {
                dialog.container.fadeOut(200, function() {
                    dialog.overlay.fadeOut(200, function() {
                        $.modal.close();
                    });
                });
            });
        });
    },
    error: function(xhr) {
        alert(xhr.statusText);
    },
    showError: function() {
        $('#modaldialog-container .modaldialog-message')
			.html($('<div class="modaldialog-error"></div>').append(modaldialog.message))
			.fadeIn(200);
    }
};