/**
 * @author fcc
 */

var RecaptchaOptions = {
   theme : 'clean'
};

$(document).ready(function(){
	$('#nojs').hide();
    $('#signup_form').show();
		
	$.validator.addMethod("isBase", isBase, "Please enter only the base url of the site.");
	
	$("#signup_form").validate({
		rules: {
			email: {
				required: true,
				email: true	
			},
			site_url: {
				required: true,
				isBase: true,
				url: true
			},
			language: {
				required: true
			},
			widget_type: {
				required: true
			},
			version: {
				required: true
			},
			target_languages: {
				required: true
			}
		},
		messages:{
			language: "Please fill out the source languages of your website",
			target_languages: "Please select the target languages of your website",
			email: {
				required: "Please enter an email",
				email: "Please enter a valid email"
			},
			site_url: "Please enter a site url"
		},
	  	errorPlacement: function(error, element){
			if ( element.attr("name") == "target_languages" )
				error.appendTo('#target_languages_error_message');
			else
				error.insertAfter(element);
		}
	});
	
	$('input[name=widget_type]').click(function(){
		previewWidget();
	});
	
	$('input[name=version]').click(function(){
		previewWidget();
	});
	
	$('input[name=target_languages]').click(function(){
		previewWidget();
	});
	
	$('select[name=language]').change(function(){
		previewWidget();
	});
	
});

/**
 * This function will check if the url entered is a base directory url
 * @param {Object} url
 * @param {Object} element
 */
function isBase (url, element) {
	url = cleanURL(url).toLowerCase(); 
	var parts = url.split('/');
	if (parts.length > 2) {
		var basename = parts[parts.length - 1];
		if (basename.match(/\.{1,4}/)) 
			return false;
	}
	return true;
}
	
function validateCaptcha(){
    challengeField = $("input#recaptcha_challenge_field").val();
    responseField = $("input#recaptcha_response_field").val();
    var html = $.ajax({
	    type: "POST",
	    url: "ajax.recaptcha.php",
	    data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField,
  		async: false
    }).responseText;
    
    if (html == "success") {
		$("input#captchaValidated").val(1);
		
		var target_languages = [];
		$("input[name=target_languages]").each(function(){
			if ( this.checked ) target_languages.push($(this).val());
		});
		
		var el = $("input[name=target_languages]").val(target_languages.join(','));
		
		
		
		return true;
	} else {
		$("#captchaStatus").html("Your captcha is incorrect. Please try again.");
		Recaptcha.reload();
		$("input#recaptcha_response_field").focus();
		return false;
	}
	
	
}

function getSelectedLanguages(){
	var languages = $("select[name=language]").val();
	$("input[type=checkbox][checked]").each( 
	    function() { 
			if (languages.length == 0)
				languages=this.value;
			else 
				languages=languages+","+this.value;
   		});
   	
	return languages;	
}

function previewWidget(type, version){
	var languages = getSelectedLanguages();
	if ( typeof(version) == 'undefined') version = $('input[name=version]:checked').val();
	if ( typeof(type) == 'undefined' ) type = $('input[name="widget_type"]:checked').val();
	
	if (version === 'basic')
		version = 0;
	else if (version === 'pro')
		version = 1;	
		
	if ( type == 'flags' ) type = 0;
	else type = 1;
	
	$('#widget_preview').attr("src", "translation_script.php?type="+type+"&languages="+languages+"&version="+version);
}

function cleanURL(str, bDeleteDomain){
   if (str == null || str.length == 0)
   //   return "";
      
   var i = str.indexOf("http://");
   
   if (i == 0)
   {
      str = str.substr(7);
   }
   else
   {
      i = str.indexOf("https://");
      
      if (i == 0)
      {
         str = str.substr(8);
      }
   }
            
   i = str.indexOf("?");
   if ( i > -1 )
      str = str.substring(0,i);
      
   i = str.indexOf("&");
   if ( i > -1 )
      str = str.substring(0,i);

   for (;;)
   {
      i = str.lastIndexOf("/");
      
      if ( i == -1 || i < (str.length -1) )
         break;
         
      str = str.substring(0,i);         
   }
   
   while (str.indexOf("/") == 0)
      str = str.substring(1);
                              
   if (bDeleteDomain)
   {
      i = str.indexOf("/");
      if ( i > -1 )
      {
         str = str.substring(i+1);   
      }
   }
      
   for (;;)
   {   
      i = str.indexOf("//");
      if (i == -1)
         break;
      str = str.replace(/\/\//g, "/");
   }
   
   return str;
} 