// FIXME REMOVE console logging or make it silent after testing
function makeConsole(){
  return {
    log: function(m) { alert(m) }
  }
}
if (typeof console === 'undefined') console = makeConsole();

function isValidEmailAddress(emailAddress) {
  var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
  return pattern.test(emailAddress);
}

function validateForm(form) {

  form = form || 'form:first';
  
  $(form).submit(function(e){
    cancelled = false;
    
    elements = $('.required input[type!=hidden], .required textarea', form);
    elements.removeClass('error');
  

    elements.each(function(i, element) {
      if (element.value == "") {
        $(element).addClass('error');
        e.preventDefault();
        cancelled = true;
      }
      if ($(element).hasClass('email')) {
        if (!isValidEmailAddress(element.value)) {
          $(element).addClass('error');
          e.preventDefault();
          cancelled = true;
        }
      }
    });

    if (cancelled && !$(form).hasClass('no-scroll-on-errors')){
      scrollToFirstError();
    }

    return !cancelled;    
  })
  
  
}

function submitOnReturn(form) {
  form = form || 'form:first';
  
  $('input', form).listenForEnter().bind('pressedEnter', function(){
    $(form).submit();
  });
  
}

function focusForm(form) {
  form = form || 'form:first';
  
  $(function(){ 
    $("input:first").focus(); 
  });
}


function collectCompanyData(url, data, loadingIndicator){
	$.ajax({
	  url: url,
	  dataType: 'json',
	  data: data,
	  beforeSend: function(){$(loadingIndicator).show(); $('#new_account input').attr("disabled", "disabled");},
	  complete:   function(){$(loadingIndicator).hide(); $('#new_account input').removeAttr("disabled");},
	  success: injectCompanyData,
	  error: function(XMLHttpRequest, textStatus, errorThrown){
			$('#new_account input').removeAttr("disabled");	    
			alert($.parseJSON(XMLHttpRequest.responseText)['error']);
		}
	});
	
}

function injectCompanyData(data){
  var f = $('form:first');
  var dirtyData = false;
  for (attr in data) {
    
		switch(attr){
			case 'company_tax_id':
			  $("#account_" + attr).attr('checked', data[attr] == 'RO');
			default:
		    $("#account_" + attr).val(data[attr]); 
		}
		if (data[attr].indexOf('?') == -1){
			$("#account_" + attr).removeClass('error');		
		} 
		else {
			$("#account_" + attr).addClass('error');
		  dirtyData = true;	
		}    
  }
  if (dirtyData){
	  alert('Datele preluate de la Ministerul de Finanțe par a conține greșeli.\n\nTe rugăm să le verifici!');
  }
}

function scrollToFirstError(){
	var targetOffset = $('form .inline-errors, form .error').offset();
	if (targetOffset) {
		$('html,body').animate({scrollTop: targetOffset.top - 100}, 300);
	}
}


