//var $j = jQuery.noConflict(); 
// prepare the form when the DOM is ready 
$(document).ready(function() {
	//Options array					   
	var options = { 
		target: '#output',
		beforeSubmit:  validateTicket,  // pre-submit callback 
		success: showResponse,    // post-submit callback 
		resetForm: true,         // reset the form after successful submit 
		//-- other available options: 
		//url:       url         // override for form's 'action' attribute 
		//type:      type        // 'get' or 'post', override for form's 'method' attribute 
		dataType:  'script',        // 'xml', 'script', or 'json' (expected server response type) 
		//clearForm: true        // clear all form fields after successful submit 
		//resetForm: true        // reset the form after successful submit
	
		// $.ajax options can be used here too, for example: 
        //timeout:   3000
	};
	
	//alert("ticketForm Activated");
    // bind form using ajaxForm 
    //$('#ticketForm').ajaxForm(options);
	$('#ticketForm').submit(function() { 
		// submit the form 
		$(this).ajaxSubmit(options); 
		// return false to prevent normal browser submit and page navigation 
		return false; 
	});
});
 
//success function				
function showResponse(responseText, statusText){
	
	$('#success-ticket').slideToggle();
	$('#success-ticket').animate({ opacity: "show" }, "slow");
	//$('#contentLoading').animate({ opacity: "hide" }, "fast");
	//$('html, body').animate({scrollTop: $("#formEnd").offset().top}, 500);
	//alert('showResponse() Was Called!');
}

// pre-submit callback
function validateTicket(formData, jqForm, options) {
	//config vars
	var startBorderColor = "#AACFE4";
	var errorBorderColor = "red";
	
	//alert("ticketForm Validate ran");
	$("#feedback_ticket p.error").animate({ opacity: "hide" }, "slow");
	//$("#stylized #contentLoading").animate({ opacity: "show" }, "fast");
	//alert('validation just ran');
	//Required Fields
	var nameValue = $('#ticketForm input[name=name]').fieldValue(); 
	var urlValue = $('#ticketForm input[name=ref_url]').fieldValue();
	var probValue = $('#ticketForm textarea[name=problemText]').fieldValue();
	var randomValue = $('#ticketForm input[name=checkHumanticket]').fieldValue();
	var captchaValue = $('#ticketForm input[name=humancodeticket]').fieldValue();
	//var emailValue = $('input[name=email]').fieldValue();
	//var messageValue = $('input[name=work_number]').fieldValue(); 
	
	//compare email address and url to this regex
	var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
	var urlregexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	var correct = true;
	
	//regex function to verify URL
	function isUrl(s) {
		var urlregexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
		return regexp.test(s);
	}

	
	// formData is an array; here we use $.param to convert it to a string to display it 
    // but the form plugin does this for you automatically when it submits the data 
    var queryString = $.param(formData); 
 
    // jqForm is a jQuery object encapsulating the form element.  To access the 
    // DOM element for the form do this: 
    // var formElement = jqForm[0]; 
 
    //alert('About to submit: \n\n' + queryString); 
	
	//validate fields
	if (!nameValue[0]) {
		$("#feedback_ticket p.error.wrong_tick_name").animate({ opacity: "show" }, "slow");
		//$("#popup-ticket input#name").css({border:"1px dashed red"});
		correct = false;
	}else{
		//$("#popup-ticket input#name").css({border:"1px solid #AACFE4"});
	}
	
	//check their url
	if (!urlValue[0]) {
		$("#feedback_ticket p.error.wrong_tick_url").animate({ opacity: "show" }, "medium");
		$("#stylized input#ref_url").css({border:"1px dashed red"});
		//alert('error on value');
		correct = false;
	} else if(!urlregexp.test(urlValue[0])) {
		$("#feedback_ticket p.error.wrong_tick_url").animate({ opacity: "show" }, "medium");
		$("#stylized input#ref_url").css({border:"1px dashed red"});
		//alert('error on value');
		correct = false;
	}else{
		//$("#stylized input#ref_url").css({border:"1px solid #AACFE4"});
	}
	//captcha
	/*if (!captchaValue[0]) {
		$("#feedback_ticket p.error.wrong_code_ticket").animate({ opacity: "show" }, "medium");
		$("#stylized input#humancodeticket").css({backgroundPosition:"0 100%"});
		correct = false;
	}else if (captchaValue[0] != randomValue[0]){
		$("#feedback_ticket p.error.wrong_code_ticket").animate({ opacity: "show" }, "medium");
		$("#stylized input#humancodeticket").css({backgroundPosition:"0 100%"});
		correct = false;
	}else{
		$("#stylized input#humancodeticket").css({backgroundPosition:"0 0"});
	}*/
	if (captchaValue[0] != 2){
		$("#feedback_ticket p.error.wrong_code_ticket").animate({ opacity: "show" }, "medium");
		$("#stylized input#humancodeticket").css({backgroundPosition:"0 100%"});
		correct = false;
	}else{
		$("#stylized input#humancodeticket").css({backgroundPosition:"0 0"});
	}
	//alert('prob value:' + probValue);
	//check problem text area
	if (!probValue[0] || probValue == "Summarize your issue here") {
		$("#feedback_ticket p.error.wrong_tick_prob").animate({ opacity: "show" }, "slow");
		//$("#popup-ticket input#ref_url").css({border:"1px dashed red"});
		correct = false;
	}else{
		//$("#popup-ticket input#ref_url").css({border:"1px solid #AACFE4"});
	}
	//
	/*if (!emailValue[0]) {
		$("p.error.wrong_email").animate({ opacity: "show" }, "slow");
		$("#popup-ticket  input#email").css({border:"1px dashed red"});
		//alert('error on value');
		correct = false;
	} else if(!emailReg.test(emailValue[0])) {
		$("p.error.wrong_email").animate({ opacity: "show" }, "slow");
		//alert('error on value');
		correct = false;
	}else{
		$("#popup-ticket input#email").css({border:"1px solid #AACFE4"});
	}*/
	//
	if (!correct) {
		//if there are errors
		//$('html, body').animate({scrollTop: $("#content").offset().top}, 1000);
		//$("#stylized #contentLoading").animate({ opacity: "hide" }, "fast");
		return false;
	}else{
		return true;	
	}
	
} 	