function toggleObj(obj) {
	if (obj.style.display == 'none') {
		Effect.Appear(obj.id);
	} else {
		Effect.Fade(obj.id);
	}
}

function showObj(obj) {
	Effect.Appear(obj.id);
}

function showObjById(id) {
	Effect.Appear(id);
}

function hideObjById(id) {
	Effect.Fade(id);
}

function hideObj(obj) {
	Effect.Fade(obj.id);
}

/**
 * Set an object under an anchor
 */
function objUnderAnchor(obj, anchor) {
	//Position.absolutize(obj);
	var left, top;
	
	var positions = Position.positionedOffset(anchor);

	obj.style.width = (Element.getWidth(anchor) - 2) + 'px';

	top = positions[1] + Element.getHeight(anchor);
	if (isIE()) {
		left = positions[0];
		//Assume IE6
		if (!isIE7()) {
			//left -= 2;
		}
		left += 10;
		top += 15;
		obj.style.top = top + 'px';
	} else {
		left = positions[0];
		top = positions[1];
	}
	obj.style.left = left + 'px';
}

function fieldBusy(field) {
	field.className = field.className + ' busy';
}
	
function fieldNormal(field) {
	field.className = field.className.replace(/busy/, '');
}
	
	
function isIE() {
	return navigator.appVersion.indexOf('MSIE') > 0;
}

function isIE7() {
	return (isIE()) && (navigator.appVersion.indexOf("MSIE 7.0") > -1);
}

function updateSelectField(valueObj, fieldID) {
	var listObj, fieldObj;
	
	listObj = $(fieldID+'List');
	fieldObj = $('_'+fieldID);
	
	fieldObj.value = valueObj.innerHTML;
	$(fieldID).value = valueObj.getAttribute('value');

	//hideObj(listObj);
	Element.hide(listObj);
}


/** Message */

function countChars() {
    var length, messageCount, charsCounter, messageCounter;
    
    charsCounter = $('charsCounter');
    messageCounter = $('messageCounter');

    length = $('frm_message').value.length;
    messageCount = Math.ceil(length/152);
    
    if (length > 160 && length <= 456) {
        charsCounter.className = 'orange';
        messageCounter.innerHTML = messageCount;
        messageCounter.className = 'orange';
    } else if (length > 459) {
        charsCounter.className = 'red';
        length = 'too long';
        messageCounter.innerHTML = 'N/A';
        messageCounter.className = 'red';
    } else {
        charsCounter.className = 'white';
        messageCounter.className = 'white';
        messageCount = 1;
    }

    charsCounter.innerHTML = length;
    messageCounter.innerHTML = messageCount;
}

function sendMessage() {
    var message, recipient, pass, errorBox, errorMessage;
    var frm_message, frm_recipient, statusMessage;
    
    frm_message = $('frm_message')
    frm_recipient = $('recipient_autocomplete');
    statusMessage = $('statusMessage');

    message = frm_message.value;
    recipient = frm_recipient.value;

    pass = true;

    //Check
    if (message == '') {
        frm_message.className = frm_message.className + ' error';
        errorMessage = 'You cannot send an empty sms';
        pass = false;
    }

    if (recipient == "" || !isMobile(recipient)) {
        frm_recipient.className = frm_recipient.className + ' error';
        errorMessage = 'Mobile number entered is invalid';

        pass = false;
    } else {
        frm_recipient.className = frm_recipient.className.replace('error', '');
    }

    if (pass) {
        var url =  '/accounts/send';
        
        statusMessage.className = '';
        statusMessage.innerHTML = 'Sending message...';
        
        new Ajax.Request(url, {
            method: 'post',
            postBody: 'to='+recipient+'&text='+message,
            onSuccess: function(transport) {
                var result = transport.responseText;
                var matches;
                if (matches = result.match(/ERR:[, ]*([0-9]+)[, ]*(.*)/)) {
                    statusMessage.innerHTML = 'Error: '+ matches[2];
                    statusMessage.className = 'red';
                } else if (matches = result.match(/ID:[, ]*([0-9a-zA-Z]+)/)) {
                    statusMessage.innerHTML = 'Message sent';

                    clearMessage(false);
                } else {
                    statusMessage.innerHTML = result + ':Gateway error, please contact <a href="mailto:gatekeeper@smsgw.com">gatekeeper@smsgw.com</a>';
                }
                
                statusMessage.innerHTML = statusMessage.innerHTML;
            }
        });

        statusMessage.className = '';
    } else {
        statusMessage.className = 'red';
        statusMessage.innerHTML = errorMessage;
    }

    
}

function clearMessage() {
    $('frm_message').value = '';
    $('recipient_autocomplete').value = '';
}

function isMobile(number) {
    number = number.replace(/[ \(\)\-]/g, "");
    number = number.match(/^04[0-9]{8}$/);
    return number;
}