$(document).ready(function() {
    
    tips = null;
    var name = $( "#name" ),
    email = $( "#email" ),
    message = $( "#message" ),
    allFields = $( [] ).add( name ).add( email ).add( message ),
    //tips = $( ".validateTips" ),
    orderName = $( "#orderName" ),
    orderEmail = $( "#orderEmail" ),
    orderPhone = $( "#orderPhone" ),
    orderStreet = $( "#orderStreet" ),
    orderCity = $( "#orderCity" ),
    orderPSC = $( "#orderPSC" ),
    orderMessage = $( "#orderMessage" ),
    orderCount = $( "#orderCount" );
    var allOrderFields = $([]).add(orderName).add(orderEmail).add(orderPhone).add(orderStreet).add(orderCity).add(orderPSC).add(orderMessage).add(orderCount);
    //var orderTips = $(".validateOrderTips")
    
    
    $("#sendMsgForm").dialog({
        autoOpen: false,
        height: 420,
        width: 600,
        modal: true,
        show: 'drop',
        hide: 'drop',
        buttons: {
            "Odeslat vzkaz": function() {
                var bValid = true;
                allFields.removeClass( "ui-state-error" );

                bValid = bValid && checkLength( name, "jména", 3, 30 );
                bValid = bValid && checkLength( email, "e-mailu", 6, 80 );
                bValid = bValid && checkLength( message, "zprávy", 5, 1000 );

                //From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
                bValid = bValid && checkRegexp( email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "E-mail musí být ve správném tvaru." );

                if ( bValid ) {
                    $(this).submit();
                //$( this ).dialog( "close" );
                }
            },
            "Zrušit": function() {
                $( this ).dialog( "close" );
            }
        },
        close: function() {
            allFields.val( "" ).removeClass( "ui-state-error" );
        }
    });
    
    
    $("#sendOrderForm").dialog({
        autoOpen: false,
        height: 480,
        width: 600,
        modal: true,
        show: 'drop',
        hide: 'drop',
        buttons: {
            "Odeslat objednávku": function() {
                var bValid = true;
                allOrderFields.removeClass( "ui-state-error" );

                
                bValid = bValid && checkLength( orderCount, "počtu kusů", 1, 4 );
                bValid = bValid && checkLength( orderName, "jména", 3, 30 );
                bValid = bValid && checkLength( orderEmail, "e-mailu", 6, 80 );
                bValid = bValid && checkLength( orderPhone, "telefonu", 9, 15 );
                bValid = bValid && checkLength( orderStreet, "ulice a č.p.", 4, 50 );
                bValid = bValid && checkLength( orderCity, "města", 2, 50 );
                bValid = bValid && checkLength( orderPSC, "PSČ", 5, 5 );
                
                bValid = bValid && checkRegexp(orderCount, (/^\d+$/), "Vložte počet kusů (číslo).");
                //From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
                bValid = bValid && checkRegexp( orderEmail, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "E-mail musí být ve správném tvaru." );
                
                if ( bValid ) {
                    $(this).submit();
                //$( this ).dialog( "close" );
                }
            },
            "Zrušit": function() {
                $( this ).dialog( "close" );
            }
        },
        close: function() {
            allOrderFields.val( "" ).removeClass( "ui-state-error" );
        }
    });
    
    $("#sendOrderFormProduct").dialog({
        autoOpen: false,
        height: 480,
        width: 600,
        modal: true,
        show: 'drop',
        hide: 'drop',
        buttons: {
            "Odeslat objednávku": function() {
                var bValid = true;
                allOrderFields.removeClass( "ui-state-error" );

                
                bValid = bValid && checkLength( orderCount, "počtu kusů", 1, 4 );
                bValid = bValid && checkLength( orderName, "jména", 3, 30 );
                bValid = bValid && checkLength( orderEmail, "e-mailu", 6, 80 );
                bValid = bValid && checkLength( orderPhone, "telefonu", 9, 15 );
                bValid = bValid && checkLength( orderStreet, "ulice a č.p.", 4, 50 );
                bValid = bValid && checkLength( orderCity, "města", 2, 50 );
                bValid = bValid && checkLength( orderPSC, "PSČ", 5, 5 );
                
                bValid = bValid && checkRegexp(orderCount, (/^\d+$/), "Vložte počet kusů (číslo).");
                //From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
                bValid = bValid && checkRegexp( orderEmail, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "E-mail musí být ve správném tvaru." );
                
                if ( bValid ) {
                    $(this).submit();
                //$( this ).dialog( "close" );
                }
            },
            "Zrušit": function() {
                $( this ).dialog( "close" );
            }
        },
        close: function() {
            allOrderFields.val( "" ).removeClass( "ui-state-error" );
        }
    });
    
    
});


function updateTips( t ) {
        $("#sendOrderForm, #sendOrderFormProduct").scrollTo(0,500);
        tips
        .text( t )
        .addClass( "ui-state-error" );
        setTimeout(function() {
            tips.removeClass( "ui-state-error", 1500 );
        }, 500 );
    }
    

    function checkLength( o, n, min, max ) {
        if ( o.val().length > max || o.val().length < min ) {
            o.addClass( "ui-state-error" );
            updateTips( "Délka " + n + " musí být v rozmezí " +
                min + " a " + max + " znaků." );
            return false;
        } else {
            return true;
        }
    }

    function checkRegexp( o, regexp, n ) {
        if ( !( regexp.test( o.val() ) ) ) {
            o.addClass( "ui-state-error" );
            updateTips( n );
            return false;
        } else {
            return true;
        }
    }
