/*
@name: htdocs/js/sms/sendpage.js
@desc: AJAX application per pagina invio sms
@authors: Marco Biondi
@lastauthor: Marco Biondi
*/
var lastval = "";
var curtip = null;
var firstFocus = true;
var array_c = new Array (32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 125, 128, 138, 140, 142, 147, 148, 156, 158, 159, 161, 163, 165, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 249, 250, 251, 252, 253, 255);

function _localInit()
{
	calcCharLeft($('testosms'));
	if((rSel == 1) && (localCL.getSelLen() > 0))
	{
		var str, foo, i;
		str = '';
		foo = localCL.getSelected();
		for(i = 0; i < foo.length; i++)
			str += foo[i].formatTip('',localCL.defPrefix)+", ";
		$('tonumber').value = str;
		killFake(true);
	}
	else
	{
		$('tonumber').value = '';
		killFake(false);
	}
	cleantip();
	Event.observe('tonumber','keydown', tippa, false);
	Event.observe('tonumber','keyup', tippa, false);
	localCL.setView(-1);
}

function killFake(b)
{
	if(b)
	{
		Element.hide('smallnumber');
		Element.show('bignumber');
		$('tonumber').focus();
	}
	else
	{
		Element.show('smallnumber');
		Element.hide('bignumber');
	}
}

function tippa(evt)
{
	var ctr = $('tonumber');

	if(evt.type == "keyup" && $('Trasparenza').innerHTML != "")
	{
		switch(evt.keyCode)
		{
			case Event.KEY_UP:
				if(curtip)
					overTip(curtip.previousSibling);
				else
					overTip($('Trasparenza').lastChild);
				break;

			case Event.KEY_DOWN:
				if(curtip)
					overTip(curtip.nextSibling);
				else
					overTip($('Trasparenza').firstChild);
				break;

			case Event.KEY_RETURN:
				if(curtip)
				{
					ctr.value = ctr.value.replace(/\s+$/, '');
					addDest();
					getDests();
					return(true);
				}
				break;

			default:
				break;
		}
	}

	var lastpos = ctr.value.lastIndexOf(",");
	var thetip = lastpos == -1 ? ctr.value : ctr.value.substr(lastpos+1);
	thetip = thetip.replace(/^\s+/, '');

	if(/^(\d|\+|\()/.test(thetip))
		thetip = thetip.replace(/-|\(|\)/g, '');	//Se è un numero tolgo i trattini interni e le parentesi

	if(lastval != ctr.value)
	{
		var foo = localCL.getContactTips(thetip, "clickTip", "overTip");
		lastval = ctr.value;
		curtip = null;
		if(foo) // != '')
		{
			$('Trasparenza').innerHTML = foo;
			$('Trasparenza').style.display = 'block';
			overTip($('Trasparenza').firstChild);
		}
		else
			$('Trasparenza').style.display = 'none';
	}
	if(thetip == '')
	{
		getDests();
		$('Trasparenza').style.display = 'none';
		$('Trasparenza').innerHTML = "";
		curtip = null;
	}
}

function cleantip()
{
	lastval = "";
	$('Trasparenza').style.display = 'none';
	$('Trasparenza').innerHTML = "";
	curtip = null;
}

function clickTip(target)
{
	curtip = target;
	addDest();
}

function overTip(target)
{
	if(target)
	{
		if(curtip != target)
			Element.removeClassName(curtip, 'selez');
		curtip = target;
		Element.addClassName(target, 'selez');
	}
}

function addDest()
{
	/* NB: Curtip è un elemento P */
	var thestr = $('tonumber').value;
	var lastpos = thestr.lastIndexOf(",");
	var foo = localCL.getContact(parseInt(curtip.id.substr(4)));
	if(lastpos == -1)
		thestr = '';
	else
		thestr = thestr.substr(0,lastpos+1)+" ";
	$('tonumber').value = thestr+foo.formatTip('',localCL.defPrefix)+", ";
	cleantip();
}

function chkDest()
{
	var res = new Array();
	var err = '';
	var blocchi = $('tonumber').value.split(",");
	var i;
	var validR = /^\s*("[^"]*")?[\s\-]*\<?((\+|00)?(\d|-|\(|\))+)\>?\s*$/;
	var emptyR = /^\s*$/;
	var foo, nclean;
	var bad = false;

	for(i=0; i<blocchi.length; i++)
	{
		if(!emptyR.test(blocchi[i]))
		{
			foo = validR.exec(blocchi[i]);
			if(foo)
			{
				nclean = foo[2].replace(/-|\(|\)/g, '');
				//Controllo il prefisso
				if(localCL.isValidNumber(nclean))
				{
					if(nclean.substr(0,2) == "00")
						nclean = "+"+nclean.substr(2);

					//Se è attivo lo strip_zero elimino lo zero iniziale di un numero locale
					if(stripLeadingZero)
					{
						if(nclean.substr(0,1) == '0')
							nclean = nclean.substr(1);
					}

					if(nclean.charAt(0) == "+")
						res.push(nclean);
					else
						res.push(localCL.defPrefix+nclean);
					err += blocchi[i]+",";
				}
				else
				{
					var bak = foo[2];
					var pLen = localCL.defPrefix.length;

					bad = true;

					if(foo[1])
						err += foo[1]+" <";

					if(foo[2].substr(0,2) == "00")
						foo[2] = "+"+foo[2].substr(2);

					if(foo[2].charAt(0) == '+')
					{
						if(foo[2].substr(0,pLen) == localCL.defPrefix)
							err += "<b>"+bak+"</b>";
						else
						{
							err += "<b>";
							if(bak.charAt(0) == '+')
								err += bak.substr(0,pLen)+"</b>"+bak.substr(pLen);
							else
								err += bak.substr(0,pLen+1)+"</b>"+bak.substr(pLen+1);
						}
					}
					else
						err += "<b>"+bak+"</b>";

					if(foo[1])
						err += ">";

					err += ",";
				}
			}
			else
			{
				bad = true;
				err += "<b>"+blocchi[i]+"</b>,";
			}
		}
	}

	if(bad)
	{
		showEmsg(errorSTR['badNum'],err);
		return(null);
	}
	else
		return(res);
}

function showEmsg(t,s)
{
	$('errtit').innerHTML = t;
	$('errpar').innerHTML = s;
	$('sms_errore').style.display = 'block';
}

function hideEmsg()
{
	$('errtit').innerHTML = "";
	$('errpar').innerHTML = "";
	$('sms_errore').style.display = 'none';
}

function smile(sml)
{
	var foo = $('testosms');
	chkFF(foo);
	foo.value += sml;
	foo.focus();
}

function getDests()
{
	var dests = chkDest();
	if(dests)
	{
		if($('selfSend'))
		{
			if($('selfSend').checked)
				dests.push("self");
		}

		if(dests.length > smsResidui)
		{
			showEmsg(errorSTR['residui'],'');
			return(null);
		}

		hideEmsg();
		return(dests);
	}

	return(null);
}

function sendMsg()
{
	var dests = getDests();
	if(dests)
	{
		if(dests.length>0)
		{
			if(validateTextMsg($('testosms').value))
			{
				calcCharLeft($('testosms'));
				if($('testosms').value.length > 0)
				{
					var str = '';
					for(var i=0; i<dests.length; i++)
						str += dests[i]+"|";
					$('realTo').value = str.substr(0,str.length-1);
					hideEmsg();
					return(true);
				}
				else
					showEmsg(errorSTR['noMsg'],'');
			}
			else
				showEmsg(errorSTR['badM'],'');

		}
		else
		{
			showEmsg(errorSTR['noDest'],'');
		}
	}
	return(false);
}

function chkFF(target)
{
	if(firstFocus)
	{
		firstFocus = false;
		target.value = "";
		$('setRimasti').style.visibility = 'visible';
	}
}

function focusSMS(target)
{
	getDests();
	chkFF(target);
	validateLastChar(target);
	calcCharLeft(target);
}

function calcCharLeft(target)
{
	var len = target.value.length;
	if (len > smsMaxLen )
	{
		target.value = target.value.substring(0,smsMaxLen);
		len = smsMaxLen;
	}

	$('cRimasti').value = smsMaxLen - len;
}


function validateLastChar(target)
{
	var myMessage = target.value;
	myMessage = myMessage.replace(/\r\n|\r|\n|\t/gi,' ');
	if(target.value != myMessage)
		target.value = myMessage;

	var len = myMessage.length;

	if ( len > 0 )
	{
		var code = myMessage.substring( len - 1 ).charCodeAt(0);
		if ( isNaN(code) )
			code = 0;

		if ( ValidateChar(code) == false )
		{ // carattere non valido?
			myMessage = myMessage.substring( 0, len - 1 );
			target.value = myMessage;
		}
	}

	return false;
}


function ValidateChar( ascii_code )
{
	if ( ascii_code < 1 )
		return true;

	for (var i=0; i<array_c.length; i++)
	{
		if (array_c[i] == ascii_code )
			return true;
	}
	return false;
}

function validateTextMsg(testo)
{
	for (var i=0; i<testo.length; i++)
	{
		if ( ValidateChar(testo.charCodeAt(i))==false)
			return false;
	}
	return true;
}