/* Validator object
***************************************************************************************************** */    	

var validator = {    
    defaults: { },
    validateName: function($name) {
        if ($name.val() == this.defaults[$name.attr('id')] || $name.val().split(/\s/).length < 2)
        {
            $name.attr('class', $name.attr('class') + ' textboxError');
            return false;
        }   
         return true;        
    },
    validatePhone: function($phone)  {
        if ($phone.val() == this.defaults[$phone.attr('id')] || this.formatPhone($phone.val()) === null)    
        {
            $phone.attr('class', $phone.attr('class') + ' textboxError');
            return false;
        }
         return true;    
    },
    validateEmail: function($email)  {
        if ($email.val() == this.defaults[$email.attr('id')] || !$email.val().match(/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/))
        {
            $email.attr('class', $email.attr('class') + ' textboxError');
            return false;
        }
        return true;
    },
    validateSubject: function($subject)  {
        if ($subject.val() == this.defaults[$subject.attr('id')] || $subject.val().length < 4)
        {
            $subject.attr('class', $subject.attr('class') + ' textboxError');
            return false;
        }
        return true;
    },
    validateMessage: function($message)  {
        if ($message.val() == this.defaults[$message.attr('id')] || $message.val().length < 4)
        {
            $message.attr('class', $message.attr('class') + ' textboxError');
            return false;
        }
        return true;
    },
    formatPhone: function(phone)  {
        var str = phone.replace(/\D+/g, '');
        if (str.length == 10)
        {        
            return '(' + str.substring(0, 3) + ') ' + str.substring(3, 6) + '-' + str.substring(6, 10);
        }
        return null;
    }
};

/* Load events
***************************************************************************************************** */    	

$(document).ready(function() {

    $('a._blank').click(function() {
        window.open(this.href);
        return false;
    });

    /* HelpCentral Panels
    ***************************************************************************************************** */    	
    if (document.location.toString().indexOf('webinars') < 1)
    {
        $('.panel').hide();
    }    
    $('.panelTrigger').click(function() {
        $(this).next().slideToggle();
    });
	
    /* Contact Support form
    ***************************************************************************************************** */    	
	var $this;
	$('#contactSupportForm label').each(function() {
		$this = $(this);
		validator.defaults[$this.attr('for')] = $this.text();
		$this.css('display', 'none');
	});
	
	for (var i in validator.defaults)
	{
		$('#' + i).val(validator.defaults[i]);
	}
    
    $('#contactSupportForm input[type="text"], #contactSupportForm textarea').focus(function() {      
        var $this = $(this);
		$this.attr('class', 'textboxFocus');
        for (var i in validator.defaults)
        {
            if (validator.defaults[i] == $this.val())
            {
                $this.val('');
                break;
            }
        }
    });
        
    $('#contactSupportForm input[type="text"], #contactSupportForm textarea').blur(function() {
        var $this = $(this);
		$this.removeAttr('class');
		$this.attr('class', 'textbox');
        if ($this.val() == '')
        {
            $this.val(validator.defaults[$this.attr('id')]);
        }                        
    });	
    
    $('#contactSupportName').blur(function() {
        validator.validateName($(this));
    });
    
    $('#contactSupportPhone').blur(function() {
        var $this = $(this);
        var formattedPhone = validator.formatPhone($this.val());
        if (formattedPhone != null)
        {
            $this.val(formattedPhone);
        }        
        validator.validatePhone($this);
    });

    $('#contactSupportEmail').blur(function() {
        validator.validateEmail($(this));
    });

    $('#contactSupportSubject').blur(function() {
        validator.validateSubject($(this));
    });

    $('#contactSupportMessage').blur(function() {
        validator.validateMessage($(this));
    });    
    
	$('form#contactSupportForm').submit(function() {
        if (validate())
        {
            $('#contactSupportForm fieldset').fadeOut('fast', function() {
                $('#loading').fadeIn('fast');
                var formData = '';
                formData += $('#contactSupportName').val() + '|';
                formData += $('#contactSupportPhone').val() + '|';
                formData += $('#contactSupportEmail').val() + '|';
                formData += $('#contactSupportSubject').val() + '|';
                formData += $('#contactSupportMessage').val();
                $.post('include/submitFormToSupport.asp', {blah: formData}, function(data) {
                        $('#loading').fadeOut('fast');
                        $('#contactSupportForm').html('<p id="thankYou">' + data + '</p>').fadeIn('fast');
                });            
            });
        }
        return false;
    });
        
});


function validate ()
{
    var $name = $('#contactSupportName');
    var $phone = $('#contactSupportPhone');
    var $email = $('#contactSupportEmail');
    var $subject = $('#contactSupportSubject');
    var $message = $('#contactSupportMessage');
    var isValid = true;    
    if (!validator.validateName($name))
    {
        isValid = false;
    }
    if (!validator.validatePhone($phone))
    {
        isValid = false;
    }    
    if (!validator.validateEmail($email))
    {
        isValid = false;
    }    
    if (!validator.validateSubject($subject))
    {
        isValid = false;
    }    
    if (!validator.validateMessage($message))
    {
        isValid = false;
    }        
    return isValid;
}