function form(){

    $('form input[type="submit"]').live('click', this, function(e){ return e.data.validate($(this)); });

}

// Check required fields on form submits
form.prototype.validate = function(submit) {
    
        if(submit.hasClass('novalidate')) return true;

        form = submit.closest("form");
        //check for required fields
        var valid, is_alert;

        valid = true;
        is_alert = false;
        if(!form.find('.err-msg').length){
            form.prepend('<p class="err-msg"></p>');
        }

        err_msgs = "";

        form.find('.required').each(function() {
            if($(this).is("div")){
                //we are checking a group of checkboxes
                if($(this).is(':visible') && !$(this).find(':checked').length){
                    valid = false;
                    if($(this).attr('e_alert')){
                        alert($(this).attr('e_alert'));
                        is_alert = true;
                    } else {
                       $(this).addClass('error');
                    }
                } else {
                    $(this).removeClass('error');
                }
            } else {
                if($(this).val()=="" || ($(this).attr('id')=='website-field' && $(this).val()=="http://")){
                    $(this).addClass('error');
                    valid = false
                } else if(($(this).attr('id')=='email-field') || $(this).is('.email')){
                    if(!window.modules['form'].isValidEmail($(this).val())){
                        err_msgs += "<br />- Invalid email address";
                        $(this).addClass('error');
                        valid = false
                    } else {
                        $(this).removeClass('error');
                    }
                } else if($(this).is('.phone')){
					var phone_number = $(this).val().replace(/\s+/g, "");
					if(!phone_number.match(/(.*\d.*){10}/)){
						err_msgs += "<br />- Invalid phone number";
						$(this).addClass('error');
                        valid = false
					} else {
						$(this).removeClass('error');
					}
                }else if($(this).is('.blink')) {
					if($(this).val()==$(this).attr('title')){
						$(this).addClass('error');
                        valid = false
					} else {
						$(this).removeClass('error');
					}
				} else {
                    $(this).removeClass('error');
                }
            }
        });
        if (is_alert)
        {
			return false;
		}
        if(!valid){

			msg_block = form.find('.err-msg');
			msg = 'Please make sure all required fields are valid and complete.'+err_msgs;

			if(msg_block.attr('mode')=='alert'){
				msg = msg.replace(/<br \/>/g, "\n");
				alert(msg);
			} else {
				msg_block.html(msg);
			}
           return false;
        }
        form.find('.err-msg').remove();

        //call trigger function if it is set and exists
        if(submit.attr('trigger')!=null){
            var trigger = submit.attr('trigger');
            if (this[trigger]){
                return this[trigger]();
            }
        } else {
            $.facebox.close();
        }

        return true;
};

form.prototype.isValidEmail = function(email){
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if(reg.test(email)){
		return true;
	}
	return false;
}

form.prototype.login_submit = function() {
    $(".feedback").hide();
    var url = $("#client-login .action").val();

    $.post(url, $("#client-login").serialize(), function(data){

        if(data==0){
            $(".feedback").show();
        } else {
            window.location = data;
        }

    });

    return false;
}

form.prototype.password_reset = function() {
    $(".feedback").hide();
    var url = $("#forgot-pass .action").val();

    $.post(url, $("#forgot-pass").serialize(), function(data){

        if(data==0){
            $(".feedback em").text($("#forgot-pass #email-field").val());
            $(".feedback").show();
        } else {
            $('.popup-t h2').fadeOut('fast', function() {
                $(this).text('Create Login').fadeIn('fast');
            });
            $('#reset-pass').slideUp(function() {
                $('#create-msg').slideDown();
            });
        }

    });

    return false;
}

form.prototype.testimonial_submit = function() {
	var url = $("#testimonial-action").val();

	$.post(url, $("#testimonial-form").serialize(), function(data){
		//alert(ajaxResponse(data));
	});

	$('a#testimonial-thanks-trigger').trigger('click');
	$("#testimonial-form input[type='text'], #testimonial-form textarea").each(function(){
		$(this).val($(this).attr('title'));
	});
	return false;
}

form.prototype.refer_friend_submit = function() {
	var url = $("#action").val();
	$.post(url, $("#refer-friend-form").serialize(), function(data){

	});
}

form.prototype.refer_friend_submit_done = function() {
	this.refer_friend_submit();
	// Load the second popup
	$.facebox.close();
	setTimeout(function() {
		$('a#thanks-trigger').trigger('click');
	}, 800);
	return false;
}

form.prototype.refer_friend_submit_another = function() {
	this.refer_friend_submit();
	//clear fields
	$("#refer-friend-form input[type='text'], #refer-friend-form textarea").val("");
	return false;
}

form.prototype.sbs_consultation_submit1 = function() {
    var url = $("#action").val();

    $.post(url, $("#sbs-consultation-form1").serialize(), function(data){

        var response = ajaxResponse(data);

        if(response.contact_id){
            $('#contact_id').val(response.contact_id);
        }

        //scroll to the top of the box
        scrollToLightbox();

        $('.popup-t h2').fadeOut('fast', function() {
            $(this).text('We Need a Bit More Information').fadeIn('fast');
        });
        $('.popup-t p').fadeOut('fast', function() {
            $(this).text('To Find the Perfect Soluton for You!').fadeIn('fast');
        });

        $('.popup-i .part1').slideUp(function(){
            $('.popup-i .part2').slideDown();
            $('.custom-select').selectbox();
        });

        trackEvent("Form", "Started", "sbs-consultation", null);

    });

    return false;
}

form.prototype.sbs_consultation_submit2 = function() {
    var url = $("#action").val();
    //submit the 2nd portion of the contact form
    $.post(url, $("#sbs-consultation-form2").serialize(), function(data){

        var response = ajaxResponse(data);

        $.facebox.settings.closeTimerID = setTimeout("$.facebox.close()", 15000);

        $('.popup-i .part3').append(response.scripts);

        //scroll to the top of the box
        scrollToLightbox();

        $('.popup-t h2').fadeOut('fast', function() {
            $(this).text('Thank You For Your Interest In Wpromote!').fadeIn('fast');
        });
        $('.popup-t p').fadeOut('fast');
        $('.popup-i .part2').slideUp(function(){
            $('.popup-i .part3').slideDown();
        });

        trackEvent("Form", "Complete", "sbs-consultation", null);

    });

    return false;
};

form.prototype.sbs_contact_submit = function() {
    var url = $("#action").val();

    $.post(url, $("#sbs-contact").serialize(), function(data){

        $.facebox.settings.closeTimerID = setTimeout("$.facebox.close()", 15000);

        scrollToLightbox();

        $('.popup-t h2').fadeOut('fast', function() {
            $(this).text('Thank You For Your Interest In Wpromote!').fadeIn('fast');
        });

        $('.popup-i .part1').slideUp(function(){
            $('.popup-i .part2').slideDown();
        });

        trackEvent("Form", "Complete", "sbs-contact", null);

    });

    return false;
}

form.prototype.inquiry_submit = function() {
    var url = $("#action").val();

    $.post(url, $("#inquiry-form").serialize(), function(data){

        var response = ajaxResponse(data);

        if($('.popup-t').length){
            //pop version
            $.facebox.settings.closeTimerID = setTimeout("$.facebox.close()", 15000);

            $('.popup-i .part2').append(response.scripts);

            $('.popup-t h2').fadeOut('fast', function() {
                $(this).text('Thank You For Your Interest In Wpromote!').fadeIn('fast');
            });
            $('.popup-t p').fadeOut('fast');
            $('.popup-i .part1').slideUp(function(){
                $('.popup-i .part2').slideDown();
            });

            trackEvent("Form", "Complete", "inquiry", null);

        } else {
            //innerpage version
            scrollToPageHead();

            $('.partners-inquiry .part2').append(response.scripts);

            $('.partners-inquiry h4').fadeOut('fast', function() {
                $(this).text('Thank You For Your Interest In Wpromote!').fadeIn('fast');
            });

            $('.partners-inquiry .part1').fadeOut('fast',function(){
                $('.partners-inquiry .part2').fadeIn('fast');
            });

            trackEvent("Form", "Complete", "inquiry-page", null);
        }

    });

    return false;
};

form.prototype.consultation_submit1 = function() {
    var url = $("#action").val();
    //submit the 1st portion of the contact form
    $.post(url, $("#consultation-form1").serialize(), function(data){

        var response = ajaxResponse(data);

        if(response.contact_id){
            $('#contact_id').val(response.contact_id);
        }

        scrollToLightbox();

        $('.popup-t h2').fadeOut('fast', function() {
            $(this).text('We Need a Bit More Information').fadeIn('fast');
        });
        $('.popup-t p').fadeOut('fast', function() {
            $(this).text('To Find the Perfect Soluton for You!').fadeIn('fast');
        });
        $('.popup-i .part1').slideUp(function(){
            $('.popup-i .part2').slideDown();
            $('.custom-select').selectbox();
        });

        trackEvent("Form", "Started", "consultation-form", null);

    });
    return false;
};

form.prototype.consultation_submit2 = function() {

    var url = $("#action").val();
    //submit the 2nd portion of the contact form
    $.post(url, $("#consultation-form2").serialize(), function(data){
        var response = ajaxResponse(data);

        $.facebox.settings.closeTimerID = setTimeout("$.facebox.close()", 15000);

        $('.popup-i .part3').append(response.scripts);

        scrollToLightbox();

        $('.popup-t h2').fadeOut('fast', function() {
            $(this).text('Thank You For Your Interest In Wpromote!').fadeIn('fast');
        });
        $('.popup-t p').fadeOut('fast');
        $('.popup-i .part2').slideUp(function(){
            $('.popup-i .part3').slideDown();
        });

        trackEvent("Form", "Complete", "consultation-form", null);

    });
    return false;
};

form.prototype.tv_consultation_submit = function() {

    var url = $("#action").val();
    $.post(url, $("#tv_consultation").serialize(), function(data){
        var response = ajaxResponse(data);

        $.facebox.settings.closeTimerID = setTimeout("$.facebox.close()", 15000);

        //$('.popup-i .part2').append(response.scripts);

        scrollToLightbox();

        $('.popup-t h2').fadeOut('fast', function() {
            $(this).text('Thank You For Your Interest In Wpromote!').fadeIn('fast');
        });
        $('.popup-t p').fadeOut('fast');
        $('.popup-i .part1').slideUp(function(){
            $('.popup-i .part2').slideDown();
        });

        //trackEvent("Form", "Complete", "tv-consultation-form", null);

    });
    return false;
};


$(document).ready(function(){ load_module('form'); });

