var checkEmailTimer;
var clearAutoCompTimer;
var emailItemOptionsTimer;
var focused;
var altered;


function uploadAttach(){
  if(needsDuplication()) return false;
  micoxUpload(
    'newsletterForm',
    'uploadAttach.php',
    'attachMsg',
    'A transferir...',
    'Erro ao transferir!',
    isUploaded
  );
}

function clearFileUpload(formName){
  var savedInputs = new Array();
  for (var i=0; i<document[formName].elements.length; i++) {
    var element = document[formName].elements[i];
    if(element.type=='text' || element.type=='textarea'){
      key = element.id;
      savedInputs[key] = element.value;
    }
  }
  document[formName].reset();
  for (var i=0; i<document[formName].elements.length; i++) {
    var element = document[formName].elements[i];
    if(element.type=='text' || element.type=='textarea'){
      key = element.id;
      element.value = savedInputs[key];
    }
  }
}

function isUploaded(html){
  clearFileUpload('newsletterForm');
  x_listAttachs(listAttachs_cb);
}

function listAttachs_cb(html){
  $m('attachList').innerHTML = html;
}

function saveNewsletter(needConfirm){
  var needConfirm = (needConfirm == null) ? true : needConfirm; 
  if(!sentNewsletter){
	  subject = document.newsletterForm.subject.value;
	  message = document.newsletterForm.newsletterText.value;
	  spawMessage = $m('newsletterText_rEdit').contentWindow.document.body.innerHTML;
	  x_saveNewsletter(subject, spawMessage, function(){
		document.newsletterForm.newsletterText.value = $m('newsletterText_rEdit').contentWindow.document.body.innerHTML;
		}
	  );
	  if(needConfirm){
		return 'A newsletter ainda não foi enviada. Tem a certeza que deseja sair?'
	  }
  }
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function addEmail(email, name){
  if(needsDuplication()) return false;
  $m(focused.id+'Autocomplete').style.display = 'none';
  focused.value = 'a gravar...';
  altered = focused;
  x_saveEmail(email, name, focused.id, refreshEmailList);
}

function refreshEmailList(html){
  altered.value='';
  if(html == true){
    x_getEmailList(altered.id, getEmailList_cb);
  }else{
    alert('Não foi possível adicionar este endereço de e-mail.');
  }
}

function getEmailList_cb(html){
  switch(altered.id){
    case 'addtoEmail':
      type='to';
      break;
    case 'addbccEmail':
      type='bcc';
      break;
    case 'addccEmail':
      type='cc';
      break;
    default:
      type='to';
  }
  $m(type).innerHTML = html;
}

function saveEmail(el){
  if(needsDuplication()) return false;
  if(validateEmail(el)){
    addEmail(el.value, name);
  }
}

function validateEmail(el){
  if(el.value!='' && validateEmailFormat(el.value)){
    el.style.color = "black";
    return true;
  }else{
    el.style.color = "red";
    return false;
  }
}

function checkEmail(el){
  clearInterval(checkEmailTimer);
  checkEmailTimer = window.setTimeout(
    function(){
      validateEmail(el);
      if(el.value.length>2){
        x_findEmail(el.value, findEmail_cb);
      }
    }, 
    250
  );
}
function setFocus(el){
  focused = el;
}

function findEmail_cb(html){
  clearInterval(clearAutoCompTimer);
  $m(focused.id+'Autocomplete').style.display = 'block';
  $m(focused.id+'Autocomplete').innerHTML = html;
  clearAutoCompTimer = window.setTimeout(
    function(){
      $m(focused.id+'Autocomplete').innerHTML = '';
      $m(focused.id+'Autocomplete').style.display = 'none';
    }, 
    2500
  );
}

function showItemOptions(email){
  clearInterval(emailItemOptionsTimer);
  $m(email).style.display = 'block';
  emailItemOptionsTimer = window.setTimeout(
    function(){
	  if($m(email)){
		$m(email).style.display = 'none';
	  }
    }, 
    1000
  );
}

function delEmail_cb(type){
  altered = $m('add'+type+'Email');
  x_getEmailList('add'+type+'Email', getEmailList_cb);
}

function validateEmailFormat(strValue) {
  // Will check for @, period after @ and text in between
  var in_space = strValue.indexOf(" ");
  if (in_space != -1){ return false; }
  var len = strValue.length;
  var alpha = strValue.indexOf("@");
  var last_alpha = strValue.lastIndexOf("@");
  if (alpha != last_alpha){ return false; }
  // No @, in first position, or name too short
  if (alpha == -1 || alpha == 0 || len<6 ){ return false; }
  var last_p = strValue.lastIndexOf(".");
  // Be sure period at least two spaces after @, but not last char.
  if (last_p - alpha < 2 || last_p == (len - 1) ){ return false; }
  return true;
}

function sendNewsletter(CheckSaved){
	var CheckSaved = (CheckSaved == null) ? true : CheckSaved; 
	//if(needsDuplication()) return false;
	subject = document.newsletterForm.subject.value;
	message = document.newsletterForm.newsletterText.value;
	spawMessage = $m('newsletterText_rEdit').contentWindow.document.body.innerHTML;
	if(CheckSaved && message != spawMessage){
		x_saveNewsletter(subject, spawMessage, function(){
			sendNewsletter(false);
			}
		);
	}
	document.getElementById('closeModal').style.display='none';
	document.getElementById('modalMsg').innerHTML = modalMsg;
	revealModal();
	x_sendNewsletter( 0, sendNewsletter_cb );
}

function sendNewsletter_cb(html){
	document.getElementById('closeModal').style.display='block';
	document.getElementById('modalMsg').innerHTML = 'A newsletter foi enviada.';
}

function duplicateNewsletter(){
	x_duplicateNewsletter(duplicateNewsletter_cb);
}

function duplicateNewsletter_cb(html){
	window.location.href='?idNewsletter='+html;
}

function needsDuplication(){
	if(sentNewsletter){
		if(confirm('Esta newsletter já foi enviada e não pode ser editada. Deseja criar uma cópia?')){
			duplicateNewsletter();
		}
		return true;
	}
	return false;
}


