$(document).ready(function(){
    InitializeForms();
});

function InitializeForm(id) {
    $(id + " input.date").each(function(i){
        $(this).datepicker();
    });
    
    $(id + " input.labelinside," + id + " textarea.labelinside").each(function(i){
        if ( $(this).val().length == 0 ) {                    
            $(this).val($(this).attr('title'));
            $(this).addClass("default");
        }
    });
    
    
    $(id + " input.labelinside," + id + " textarea.labelinside").focus(function(e){
        if ( $(this).val() == $(this).attr('title') ) {
            $(this).val('');
            $(this).removeClass("default");
        }
    });
    $(id + " input.labelinside," + id + " textarea.labelinside").blur(function(e){
        if ( $(this).val() == '' ) {
            $(this).val($(this).attr('title'));
            $(this).addClass("default");
        }
    });
       
    $(id + " input[type='text']," + id + " textarea").focus(function(e){
        $(this).addClass("active");
        $(this).closest("div.field").removeClass("error");
    });
    $(id + " input[type='text']," + id + " textarea").blur(function(e){
        $(this).removeClass("active");
    });
    
    
    $(id).submit(function(e){ 
        if ( ValidateForm(e.target.id) ) {
            var resultdiv = $(this).parents('div.response');
            $.post('/contactus/submit.php', $(this).serialize(),
                function(data) {
                    resultdiv.html(data);
                });
        }
        
        return false;
    });
    
    $(id + " .clear_contact_form").click(function(e) { 
       $(this).parents('form.contactus').find("input[type='text'],textarea").each(function(i){
            if ( $(this).hasClass('labelinside') ) {
                $(this).val($(this).attr('title'));
            } else {
                $(this).val('');
            }
        });
        return false;       
    });            
}

function InitializeForms() {
    $("form.contactus input.true").each(function(i){
        $(this).datepicker();
    });
    
    $("form.contactus input.labelinside, form.contactus textarea.labelinside").each(function(i){
        if ( $(this).val().length == 0 ) {                    
            $(this).val($(this).attr('title'));
            $(this).addClass("default");
        }
    });
    

    $("form.contactus input.labelinside, form.contactus textarea.labelinside").focus(function(e){
        if ( $(this).val() == $(this).attr('title') ) {
            $(this).val('');
            $(this).removeClass("default");
        }
    });
    $("form.contactus input.labelinside, form.contactus textarea.labelinside").blur(function(e){
        if ( $(this).val() == '' ) {
            $(this).val($(this).attr('title'));
            $(this).addClass("default");
        }
    });
    
    $("form.contactus input[type='text'], form.contactus textarea").focus(function(e){
        $(this).addClass("active");
        $(this).closest("div.field").removeClass("error");
    });
    $("form.contactus input[type='text'], form.contactus textarea").blur(function(e){
        $(this).removeClass("active");
    });
    
    $("form.contactus").submit(function(e){ 
        //alert($(this).attr('action'));
        if ( ValidateForm(e.target.id) ) {
            var resultdiv = $(this).parents('div.response');
            $.post('/contactus/submit.php', $(this).serialize(),
                function(data) {
                    resultdiv.html(data);
                });
        }
        
        return false;
    });
    
    $("form.contactus .clear_contact_form").click(function(e) { 
        $(this).parents('form.contactus').find("input[type='text'],textarea").each(function(i){
            if ( $(this).hasClass('labelinside') ) {
                $(this).val($(this).attr('title'));
            } else {
                $(this).val('');
            }
        });
        return false;       
    });
}

function ValidateForm(form) {
    // BEFORE WE VALIDATE WE NEED TO REMOVE THE ERROR CLASS FROM EVERYTHING CURRENTLY  
    form = '#'+form;
    var result = true;
    var alert_msg = '';
    var html_msg = ''; 
    try {
    
    $(form).find('div.error_alert').hide(); 
    $(form).find('span.er_message').hide();        
    $(form).find('ul.error_list').html('');
    $(form).find("div.field").each(function(i){
        $(this).removeClass("error");
    });
    
    $(form).find("input[type='text'],textarea,select").each(function(i){    
        if ( $(this).hasClass('required') ) {
            if ( $(this).val() == '' || $(this).val() == $(this).attr('title') ) {
                result = false;
                $(this).closest("div.field").addClass("error");
                $(this).prev("div.form_header").children('span.er_message').show();
                $(this).prev("div.form_header").children('span.er_message').html('*');
                alert_msg += $(this).attr('title') + ' is required.\n\n';
                html_msg += '<li>' + $(this).attr('title') + ' is required.</li>';
                
            }
        }
        
        if ( $(this).hasClass('email') ) {
            if ( ! is_valid_email($(this).val()) ) {
                result = false;
                $(this).closest("div.field").addClass("error");
                $(this).prev("div.form_header").children('span.er_message').show();
                $(this).prev("div.form_header").children('span.er_message').html('*');
                alert_msg += $(this).attr('title') + ' is not a valid email.\n\n';
                html_msg += '<li>' + $(this).attr('title') + ' is not a valid email.</li>';
            }
        }
        
        if ( $(this).hasClass('zipcode') ) {
            if ( ! is_valid_zipcode($(this).val())) {
                result = false;
                $(this).closest("div.field").addClass("error");
                alert_msg += $(this).attr('title') + ' is not a valid zipcode.\n\n';
                html_msg += '<li>' + $(this).attr('title') + ' is not a valid zipcode.</li>';
            }
        }
        
        if ( $(this).hasClass('phone') ) {
            if ( ! is_valid_phonenumber($(this).val())) {
                result = false;
                $(this).closest("div.field").addClass("error");
                $(this).prev("div.form_header").children('span.er_message').show();
                $(this).prev("div.form_header").children('span.er_message').html('*');
                alert_msg += $(this).attr('title') + ' is not a valid phone number.\n\n';
                html_msg += '<li>' + $(this).attr('title') + ' is not a valid phone number.</li>';
            } else {
                var phonenumber = $(this).val();
                $(this).val(phonenumber.replace(/[^0-9]/g,''));                
            }
        }
        if ( $(this).hasClass('ssn') ) {
            if ( ! is_valid_ssn($(this).val())) {
                result = false;
                $(this).closest("div.field").addClass("error");
                alert_msg += $(this).attr('title') + ' is not a valid SSN.\n\n';
                html_msg += '<li>' + $(this).attr('title') + ' is not a valid SSN.</li>';
            }
        }
    });
    
    
    
    }
    catch( ex ) {
        return false;
    }
    
    if ( !result ) {
        $(form).find('div.error_alert').show();
        $(form).find('ul.error_list').html(html_msg);
        if ( $(form).hasClass('alert')) {
            alert(alert_msg);
        }
    }
    
    return result;
}

function is_valid_email(email) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   
   return reg.test(email);
}

function is_valid_zipcode(zipcode) {  
    var reg = /^([0-9]{5})$/;
    
    return reg.test(zipcode); 
}


function is_valid_phonenumber(phonenumber) {
    var trimmed = phonenumber.replace(/[^0-9]/g,'');
    if ( trimmed.length == 10 ) {
        return true;
    } else {
        return false;
    }
}

function is_valid_ssn(ssn) {
    var trimmed = ssn.replace(/[^0-9]/g,'');
	var reg = /^([0-9]{9})$/;
    
    return reg.test(trimmed);
}
