$(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");
    });
    $(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($(this).attr('action'), $(this).serialize(),
                function(data) {
                    resultdiv.html(data);
                });
        }
        
        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");
    });
    $("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($(this).attr('action'), $(this).serialize(),
                function(data) {
                    resultdiv.html(data);
                });
        }
        
        return false;
    });    
}

function ValidateForm(form) {
    // BEFORE WE VALIDATE WE NEED TO REMOVE THE ERROR CLASS FROM EVERYTHING CURRENTLY  
    form = '#'+form;
    var result = true;
    
    try {
    
    $(form).find("div.field").each(function(i){
        $(this).removeClass("error");
    });
    
    $(form).find("input[type='text'],textarea").each(function(i){    
        if ( $(this).hasClass('required') ) {
            if ( $(this).val() == '' || $(this).val() == $(this).attr('title') ) {
                result = false;
                $(this).parent("div.field").addClass("error");
            }
        }
        
        if ( $(this).hasClass('email') ) {
            if ( ! is_valid_email($(this).val()) ) {
                result = false;
                $(this).parent("div.field").addClass("error");
            }
        }
        
        if ( $(this).hasClass('zipcode') ) {
            if ( ! is_valid_zipcode($(this).val())) {
                result = false;
                $(this).parent("div.field").addClass("error");
            }
        }
        
        if ( $(this).hasClass('phone') ) {
            if ( ! is_valid_phonenumber($(this).val())) {
                result = false;
                $(this).parent("div.field").addClass("error");
            } else {
                var phonenumber = $(this).val();
                $(this).val(phonenumber.replace(/[^0-9]/g,''));                
            }
        }
    });
    
    }
    catch( ex ) {
        return false;
    }
    
    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 == 7 || trimmed.length == 10 ) {
        return true;
    } else {
        return false;
    }
}