<?include "/htdocs/phplib/inet.php";?>
<?include "/htdocs/phplib/inf.php";?>
<script type="text/javascript">
var tmpSMS;
var sms;
var must_wait=0;

function Page() {}
Page.prototype =
{
	services: "SMS",
        OnLoad: function() {},
        OnUnload: function() {},
	OnSubmitCallback: function (code, result) { return false; },
	InitValue: function(xml)
        {
		var get_Treturn = '<?if($_GET["Treturn"]=="") echo "0"; else echo $_GET["Treturn"];?>'   //possible issue identified - semgrep
		if(get_Treturn!="1" || must_wait == 1)
		{	
			self.location.href = "./bsc_sms_inbox_rlt.php";
		}

		/* turn off sms led. */
		Service("SMS.LED.OFF");
		
		PXML.doc = xml;
                sms = PXML.FindModule("SMS");
                if (sms===""){ alert("InitValue ERROR!"); return false; }
		
		sms += "/runtime/callmgr/voice_service/mobile/sms/sm";
		tmpSMS = sms;

		var str = "<table class=\"general\" id=\"Tsms\"><tr>";
		str += "<th width=\"20px\"><input id=\"checkall\" type=\"checkbox\" onclick=\"SelectAll()\"/></th>";
		str += '<th width="100px">' + "<?echo i18n("From");?>" + "</th>";
		str += '<th width="151px">' + "<?echo i18n("Timestamp");?>" + "</th>";
		str += '<th width="162px">' + "<?echo i18n("Text");?>" + "</th>";
		str += "</tr>";

		var defaulttmp = 0;
	
		for (var i=1; i<=<?=$SMS_MAX_COUNT?>; i+=1)
                {
			var smsdelete = XG(sms + ":" + i + "/delete");
			var smsfrom = XG(sms + ":" + i + "/from");
			var smsdate = XG(sms + ":" + i + "/date");

			var smsmultiple = XG(sms + ":" + i + "/multiple_type");
                        var multiple_total = 0;

                        var smscontent = "";
                        if(smsmultiple == 1)
                        {
                                multiple_total = XG(sms + ":" + i + "/multiple_total");
                                for(var j=1; j<=multiple_total; j+=1)
                                {
                                        smscontent += RUnicode(XG(sms + ":" + i + "/multiple:"+ j +"/content"));
                                }
                        }
                        else
                        {
                                smscontent = RUnicode(XG(sms + ":" + i + "/content"));
                        }

			
			if(smsfrom != "" && smsdate != "" && smscontent != "")
			{
				str += "<tr onclick='TDchange("+ i +")'>";
                        	str += "<td width=\"20px\"><input id='cbx"+ i +"' type=\"checkbox\" /></td>";
                        	str += "<td width=\"115px\">" + smsfrom + "</td>";
				str += "<td width=\"136px\">" + smsdate + "</td>";
				str += "<td width=\"162px\">" + smscontent.substring(0,20)+"..." + "</td>";
				str += "</tr>";

				defaulttmp += 1;
				if(defaulttmp == 1)
				{
					OBJ("sms_number").value = smsfrom;
					OBJ("sms_content").value = smscontent;
				}
			}
		}
		str += "</table>";

		OBJ("sms_inbox").innerHTML = str;

		new TableSorter("Tsms",2);		

                return true;
        },
        PreSubmit: function() 
	{
		must_wait="1"; 
		for (var i=1; i<=<?=$SMS_MAX_COUNT?>; i+=1)
                {
			if(OBJ("cbx"+i) != null)
			{
				if(OBJ("cbx"+i).checked)
				{
					XS(sms + ":" + i + "/delete","1");
				}
				else
				{
					XS(sms + ":" + i + "/delete","0");
				}
			}
		}	

		return PXML.doc;
	},
        IsDirty: null,
        Synchronize: function() {}
        // The above are MUST HAVE methods ...
        ///////////////////////////////////////////////////////////////////////
}

function Service(svc)
{
	var ajaxObj = GetAjaxObj("SERVICE");
        ajaxObj.createRequest();
        ajaxObj.onCallback = function (){}
        ajaxObj.setHeader("Content-Type", "application/x-www-form-urlencoded");
        ajaxObj.sendRequest("service.cgi", "EVENT="+svc);
}

function RUnicode(s)
{
   var rs="";
   var m = "";
   for(i=0 ; i < s.length ; i=i+4)
   {
      m = s.substring(i,i+4);
      if(m=="0022")
      {
	rs += "\"";
      }
      else
      {
      	rs += String.fromCharCode(parseInt(m,16));
      }
   }
   return rs;
}

function TDchange(inx)
{
	var smsmultiple = XG(tmpSMS + ":" + inx + "/multiple_type");
        var multiple_total = 0;

        var smscontent = "";
        if(smsmultiple == 1)
        {
		multiple_total = XG(tmpSMS + ":" + inx + "/multiple_total");
                for(var j=1; j<=multiple_total; j+=1)
                {
			smscontent += RUnicode(XG(tmpSMS + ":" + inx + "/multiple:"+ j +"/content"));
                }
        }
	else
	{
		smscontent = RUnicode(XG(tmpSMS + ":" + inx + "/content"));
	}
	
	OBJ("sms_content").value = smscontent;
	OBJ("sms_number").value = XG(tmpSMS + ":" + inx + "/from");
}

function SelectAll()
{
	for (var i=0;i < OBJ("mainform").elements.length;i++)
	{
		var e = OBJ("mainform").elements[i];
		if (e.id != 'checkall' && e.type == 'checkbox' && e.disabled==false)
			e.checked = OBJ("mainform").checkall.checked;
	}
}

function TableSorter(table)
{
	this.Table = this.$(table);
	if(this.Table.rows.length <= 1)
	{
		return;
	}
	this.Init(arguments);
}

TableSorter.prototype.NormalCss = "NormalCss";
TableSorter.prototype.SortAscCss = "SortAscCss";
TableSorter.prototype.SortDescCss = "SortDescCss";

TableSorter.prototype.Init = function(args)
{
	this.ViewState = [];
	for(var x = 0; x < this.Table.rows[0].cells.length; x++)
	{
		this.ViewState[x] = false;
	}

	if(args.length > 1)
	{
		for(var x = 1; x < args.length; x++)
		{
			if(args[x] > this.Table.rows[0].cells.length)
			{
				continue;
			}
			else
			{
				this.Table.rows[0].cells[args[x]].onclick = this.GetFunction(this,"Sort",args[x]);
				this.Table.rows[0].cells[args[x]].style.cursor = "pointer";
			}
		}
	}
	else
	{
		for(var x = 0; x < this.Table.rows[0].cells.length; x++)
		{
			this.Table.rows[0].cells[x].onclick = this.GetFunction(this,"Sort",x);
			this.Table.rows[0].cells[x].style.cursor = "pointer";
		}
	}
}	

TableSorter.prototype.$ = function(element)
{
	return document.getElementById(element);
}

TableSorter.prototype.GetFunction = function(variable,method,param)
{
	return function()
	{
		variable[method](param);
	}
}

TableSorter.prototype.Sort = function(col)
{
	var SortAsNumber = true;
	for(var x = 0; x < this.Table.rows[0].cells.length; x++)
	{
		this.Table.rows[0].cells[x].className = this.NormalCss;
	}
	
	var Sorter = [];
	for(var x = 1; x < this.Table.rows.length; x++)
	{
		Sorter[x-1] = [this.Table.rows[x].cells[col].innerHTML, x];
		SortAsNumber = SortAsNumber && this.IsNumeric(Sorter[x-1][0]);
	}
	
	if(SortAsNumber)
	{
		for(var x = 0; x < Sorter.length; x++)
		{
			for(var y = x + 1; y < Sorter.length; y++)
			{
				if(parseFloat(Sorter[y][0]) < parseFloat(Sorter[x][0]))
				{
					var tmp = Sorter[x];
					Sorter[x] = Sorter[y];
					Sorter[y] = tmp;
				}
			}
		}
	}
	else
	{
		Sorter.sort();
	}

	if(this.ViewState[col])
	{
		Sorter.reverse();
		this.ViewState[col] = false;
		this.Table.rows[0].cells[col].className = this.SortDescCss;
	}
	else
	{
		this.ViewState[col] = true;
		this.Table.rows[0].cells[col].className = this.SortAscCss;
	}
	
	var Rank = [];
	for(var x = 0; x < Sorter.length; x++)
	{
		Rank[x] = this.GetRowHtml(this.Table.rows[Sorter[x][1]]);
	}
	for(var x = 1; x < this.Table.rows.length; x++)
	{
		for(var y = 0; y < this.Table.rows[x].cells.length; y++)
		{
			this.Table.rows[x].cells[y].innerHTML = Rank[x-1][y];
		}
	}

	this.OnSorted(this.Table.rows[0].cells[col], this.ViewState[col]);
}

TableSorter.prototype.GetRowHtml = function(row)
{
	var result = [];
	for(var x = 0; x < row.cells.length; x++)
	{
		result[x] = row.cells[x].innerHTML;
	}
	return result;
}

TableSorter.prototype.IsNumeric = function(num)
{
	return /^\d+(\.\d+)?$/.test(num);
}

TableSorter.prototype.OnSorted = function(cell, IsAsc)
{
	return;
}

function ReplyMessage()
{
	self.location="bsc_sms_send.php?receiver=" + OBJ("sms_number").value;
}

</script>