$(document).ready(function() {

});

jQuery.fn.swapWith = function(to) {
    return this.each(function() {
        var copy_to = $(to).clone(true);
        var copy_from = $(this).clone(true);
        $(to).replaceWith(copy_from);
        $(this).replaceWith(copy_to);
    });
};

Interface = {
    NextStep: function() {
        if(Ajax.Validate()) {
            $('#step_1').fadeOut(200, function() {
                $('#step_2').fadeIn(500);
            });
        }
    },
    PrevStep: function() {
        $('#step_2').fadeOut(200, function() {
            $('#step_1').fadeIn(500);
        });
    },
    SelectAll: function(o) {
        $('div.logos input[type=checkbox]').attr("checked",o.checked); 
    },
    RegisterFrmElements: function() {
        $("input.frm_txt").blur(function() {
            Interface.ValidateFrmElement($(this));
        });
    },
    CheckChecks: function() {
        var numFound = 0;
        $('div.logos input[type=checkbox]').each( function() {
            if($(this).attr("checked")) {
                numFound++;
            }
        });
        if(numFound > 0) {
            $("#registerForm").submit();
        } else {
            var msg = Ajax.ErrorNoChecks();
            $("#errorMsg").html(msg + "<p>&nbsp;</p>");
        }
    },
    ValidateFrm: function() {
        var val = true;
        $("#registerForm input.frm_txt").each(function() {
            val = val && Interface.ValidateFrmElement($(this));
        });
        return val;
    },
    ValidateFrmElement: function(el) {
        var name = $(el).attr('name');
        var value = $(el).attr('value');

        if(value == "" && (name == 'first_name' || name == 'last_name' || name == 'address1' || name == 'zip' || name == 'city' || name == 'email' || name == 'country')) {
            $(el).css('background-color', '#ff6600');
        } else if(name == 'email' && value != "" && !Interface.ValEmail(value)) {
            $(el).css('background-color', '#ff6600');
        } else if((name == 'telephone' || name == 'fax') && value != "" && !Interface.ValTelephone(value)) {
            $(el).css('background-color', '#ff6600');
        } else {
            //$(this).css('background-color', '#11bb44');
            $(el).css('background-color', '#ffffff');
            return true;
        }
        return false;
    },
    ValEmail: function(email) {
        var regExp = /^[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4}$/;
        return regExp.test(email);
    },
    ValTelephone: function(telephone) {
        var regExp = /[-+\d()]{10,16}/;
        return regExp.test(telephone);
    }
};

/*
 * Options
 */
$.ajaxSetup({
    url: "http://www.technicaltrials.nl/data/Ajax.php",
    global: true,
    type: "POST",
    dataType: 'xml',
    timeout: 3000
});

Ajax = {
    ErrorNoChecks: function() {
        var msg = "";
        $.ajax({
            async: false,
            data: "&request=errorMsg",
            success: function(xml){
                msg = $(xml).find('msg').text();
            },
            error: function () {
            }
        });
        return msg;
    },
    Validate: function() {
        var frmData = $("#registerForm").serialize();
        $('body').css('cursor','wait');
        var success = false;
        $.ajax({
            data: frmData + "&request=validate",
            async: false,
            success: function(xml){
                $('body').css('cursor','default');
                if($(xml).find('count').text() == "0") {
                    $("#errorMsg").html("");
                    success = true;
                } else {
                    var errHtml = "";
                    $(xml).find('error').each(function() {
                        errHtml += $(this).text() + "<br />";
                    });
                    $("#errorMsg").html(errHtml + "<br />");
                    success = false;
                }
            },
            error: function () {
                $('body').css('cursor','default');
                success = true;
            }
        });
        return success;
    }
};
