﻿function CountSms(text, long, displayElement, counterText) {
    var charactersPerMessage = 160;
    var normalCharacters = "@£$¥èéùìòÇØøÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ!\"#¤%&'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑÜ§¿abcdefghijklmnopqrstuvwxyzäöñüà "
    var doubleCharacters = "^{}\[~]|"
    var reservedCharacters = 160 - parseInt(long);

    var total = 0;

    var maxText = "";

    for (var i = 0; i < text.value.length; i++) {
        var Current = text.value.substring(i, i + 1);

        //window.alert("'" + Current + "'");

        if (normalCharacters.indexOf(Current, 0) > -1 || Current == "\n" || Current == "\r") {
            total++;
        }
        else if (doubleCharacters.indexOf(Current, 0) > -1) {
            total+=2;
        }
        else {

            charactersPerMessage = 70;
            total++;
        }

        if (total > charactersPerMessage - reservedCharacters) {
            text.value = maxText;
            CountSms(text, long, displayElement, counterText)
            alert('Character limit reached');
            return;
        }

        maxText += Current
    }

    var maxlength = charactersPerMessage - reservedCharacters;

    var formatedCounterText = counterText
    formatedCounterText = formatedCounterText.replace("{0}", maxlength)
    formatedCounterText = formatedCounterText.replace("{1}", total)
    formatedCounterText = formatedCounterText.replace("{2}", maxlength - total)

    $get(displayElement).innerHTML = formatedCounterText;
}

 
     
     function Count(text,long) 
        {
	        var maxlength = new Number(long);
	        if (text.value.length > maxlength)
	            {
		            text.value = text.value.substring(0,maxlength);
		            alert(long +  ' character limit reached');
		        }

            // Test if the character counter details have been provided.
		    if (Count.arguments.length == 4)
		    {
		        var CounterText = Count.arguments[3]
		        CounterText = CounterText.replace("{0}", maxlength)
		        CounterText = CounterText.replace("{1}", text.value.length)
		        CounterText = CounterText.replace("{2}", maxlength - text.value.length)

		        $get(Count.arguments[2]).innerHTML = CounterText;
		    }
         }

