function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function isEmpty(val) {
    trimmed = trim(val);
    if(trimmed == null || trimmed.length == 0 || trimmed == "") {
      return true;
    }
    return false;
}

function addReceiver() {
	var slForm = $('slform');
	var recInputs = slForm.getInputs('text', 'receivers[]');
	
	var newInput = new Element('input', {
		'size' : '30',
		'type' : 'text',
		'name' : 'receivers[]',
		'class' : 'receiver_addr',
		'id' : 'receiver_' + (recInputs.length + 1)
	});
	
	$('receivers_container').insert(newInput);
}

function sendlinkSubmitter() {
	valid_form = validate();
	
	if(!valid_form)
		 return false;
	
	new Ajax.Request('/index.php?sid=sendlink&a=validate', {
		onComplete : function(transport) {
			var respTxt = transport.responseText;
			var submitImp = new Element('input', {
				'type' : 'hidden',
				'name' : 'sendlink_ticket',
				'value' : respTxt
			});
			$('slform').insert(submitImp);
			$('slform').submit();
		}
	});
	return false;
}

function validateAddr(addr) {
	addr = addr.toLowerCase();
	addr = addr.replace(/ä/g,'a');
	addr = addr.replace(/å/g,'a');
	addr = addr.replace(/ö/g,'o');
	
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	var result = reg.test(addr);
	
	return result;
}

function isMandatory(field_id) {
	
	if(!mandatory_fields) return false;
	
	for(j=0;j<mandatory_fields.length;j++) {
		if(mandatory_fields[j] == field_id)
			return true;
	}
	return false;
}

function validateAddresses() {
	var frm = $('slform');
	var mail_fields = frm.getInputs('text', 'receivers[]');
	mail_fields[mail_fields.length] = $('fromaddr');
	var mail_errors = 0;
	for(i=0;i<mail_fields.length;i++) {
		var val = trim(mail_fields[i].getValue());
		
		if (!isMandatory(mail_fields[i].id) || !isEmpty(val))
			 mail_fields[i].style.backgroundColor = '#fff';
		
		if(val) {
			var validation_result = validateAddr(val);
			if(validation_result == false) {
				mail_errors++;
				mail_fields[i].style.backgroundColor = err_bgColor;
			}
		}
	
	}
	return mail_errors;
}

function validate() {
    errors = 0;
    for(i=0;i<mandatory_fields.length;i++) {
         field = $(mandatory_fields[i]);
         field.style.backgroundColor = "";
         if(isEmpty(field.value)) {
           errors++;
           field.style.backgroundColor = err_bgColor;
         }
    }
    mail_errors = validateAddresses();
    return (errors == 0 && mail_errors == 0) ;
}
