var initial_ds_load=false;var carrier_ds=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:'/carrier_networks?format=ext_json&ignore_paging=true',method:'GET'}),reader:new Ext.data.JsonReader({root:'carrier_networks',id:'id',totalProperty:'results'},[{name:'id',mapping:'carrier_network.id'},{name:'name',mapping:'carrier_network.name'},{name:'prefix',mapping:'carrier_network.prefix'}]),remoteSort:false,autoLoad:true,sortInfo:{field:'name',direction:'ASC'}});var country_ds=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:'/countries?format=ext_json&ignore_paging=true',method:'GET'}),reader:new Ext.data.JsonReader({root:'countries',id:'id',totalProperty:'results'},[{name:'id',mapping:'country.id'},{name:'name',mapping:'country.country_name'},{name:'iso_code',mapping:'country.iso_code'}]),remoteSort:false,autoLoad:true,sortInfo:{field:'name',direction:'ASC'}});country_ds.on('load',function(){if(initial_ds_load==false){Ext.getCmp('chat_country').setValue(default_country_id);carrier_ds.baseParams.client_restriction=default_country_id;carrier_ds.baseParams.client_restriction_field='carrier_networks.country_id';carrier_ds.load();initial_ds_load=true;}});var contacts_ds=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:'/carrier_networks?format=ext_json&ignore_paging=true',method:'GET'}),reader:new Ext.data.JsonReader({root:'carrier_networks',id:'id',totalProperty:'results'},[{name:'id',mapping:'carrier_network.id'},{name:'name',mapping:'carrier_network.name'},{name:'prefix',mapping:'carrier_network.prefix'}]),remoteSort:false,autoLoad:true,sortInfo:{field:'name',direction:'ASC'}});var lists_ds=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:'/carrier_networks?format=ext_json&ignore_paging=true',method:'GET'}),reader:new Ext.data.JsonReader({root:'carrier_networks',id:'id',totalProperty:'results'},[{name:'id',mapping:'carrier_network.id'},{name:'name',mapping:'carrier_network.name'},{name:'prefix',mapping:'carrier_network.prefix'}]),remoteSort:false,autoLoad:true,sortInfo:{field:'name',direction:'ASC'}});function merge_array(source1,source2){new_array={};for(var property in source1)
new_array[property]=source1[property];for(var property in source2)
new_array[property]=source2[property];return new_array;}
function findURL(b){var c=/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/~.=\+]+/;var a=/http:\/\/bit\.ly\/([a-zA-Z0-9]{1,8})?/;b=b.replace(a,"");if(c.test(b)){return b.match(c)[0];}else{return false}}
TxtSrv.SmsPanel=Ext.extend(Ext.Panel,{blankText:"An SMS message is required",maxLengthText:"The max length of a TextServ SMS message is 700 characters",maxLength:700,height:150,name:undefined,layout:'form',defaultType:'label',allowBlank:false,labelText:'Sms Message',bodyStyle:'background:none;',include_picture:false,picture_id:'#',border:false,message_at_bottom:"",insert_smiley:function(smiley_text){var cmp=Ext.getCmp(this.id+'_text_area');cmp.setValue(cmp.getValue()+" "+smiley_text);},clear:function(){var cmp=Ext.getCmp(this.id+'_text_area');cmp.setRawValue("");Ext.getCmp(this.id+'_sms_count').getEl().update("<table width='100%'><tr><td align='left' style='font-size:9px;color=#FFFFFF;'>Used: 0 -"+this.maxLength+" remaining</td></tr>"+this.message_at_bottom+"</table>");},initComponent:function(){var sms_panel=this;function handleText(t,event){var v=t.getValue(),cc=v.length?v.length:0;var r=sms_panel.maxLength-cc;if(r>=0){Ext.getCmp(sms_panel.id+'_sms_count').getEl().update("<table width='100%'><tr><td align='left' style='font-size:9px;color=#FFFFFF;'>Used: "+cc+" -"+r+" remaining</td></tr>"+sms_panel.message_at_bottom+"</table>");}else{Ext.getCmp(sms_panel.id+'_sms_count').getEl().update("<table width='100%'><tr><td align='left' style='font-size:9px;color=#FFFFFF;'>Used: "+cc+" -"+Math.abs(r)+" too many</td></tr>"+sms_panel.message_at_bottom+"</table>");}}
var items;if(this.include_picture)
items=[{border:false,id:sms_panel.id+'_sms_label',bodyStyle:'background:none;padding-bottom:10px;',html:sms_panel.labelText},{id:sms_panel.id+'_text_area',name:sms_panel.name,hideLabel:true,xtype:'textarea',allowBlank:sms_panel.allowBlank,blankText:sms_panel.blankText,anchor:'100%',maxLength:sms_panel.maxLength,maxLengthText:sms_panel.maxLengthText,enableKeyEvents:true,height:53,listeners:{'keydown':{fn:handleText,buffer:1},'specialkey':{fn:handleText,buffer:1}}},{xtype:'fileuploadfield',anchor:'100%',id:this.picture_id,emptyText:'Optionally Select a Picture to Send',hideLabel:true,name:'image_attachment[uploaded_data]',buttonText:'',buttonCfg:{iconCls:'upload-icon'}},{border:false,id:sms_panel.id+'_sms_count',bodyStyle:'background:none;padding-bottom:5px;',html:"<table width='100%'><tr><td align='left' style='font-size:9px;color=#FFFFFF;'>Used: 0 - "+sms_panel.maxLength+" remaining</td></tr>"+sms_panel.message_at_bottom+"</table>"}];else{items=[{border:false,id:sms_panel.id+'_sms_label',bodyStyle:'background:none;padding-bottom:10px;',html:sms_panel.labelText},{id:sms_panel.id+'_text_area',name:sms_panel.name,hideLabel:true,xtype:'textarea',allowBlank:sms_panel.allowBlank,blankText:sms_panel.blankText,anchor:'100%',maxLength:sms_panel.maxLength,maxLengthText:sms_panel.maxLengthText,enableKeyEvents:true,height:55,listeners:{'keydown':{fn:handleText,buffer:1},'specialkey':{fn:handleText,buffer:1}}},{border:false,id:sms_panel.id+'_sms_count',bodyStyle:'background:none;padding-bottom:5px;',html:"<table width='100%'><tr><td align='left' style='font-size:9px;color=#FFFFFF;'>Used: 0 - "+sms_panel.maxLength+" remaining</td></tr>"+sms_panel.message_at_bottom+"</table>"}];}
Ext.apply(this,{items:items});TxtSrv.SmsPanel.superclass.initComponent.apply(this,arguments);},onRender:function(){TxtSrv.SmsPanel.superclass.onRender.apply(this,arguments);}});Ext.reg('ts_smspanel',TxtSrv.SmsPanel);TxtMsgGrid=function(viewer,config){this.viewer=viewer;Ext.apply(this,config);this.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:'get_past_messages?format=ext_json',method:'GET'}),reader:new Ext.data.JsonReader({root:'sms_text_messages',id:'id',totalProperty:'results'},[{name:'id',mapping:'sms_text_message.id'},{name:'sender',mapping:'sms_text_message.sender'},{name:'msg',mapping:'sms_text_message.msg'},{name:'image_small_url',mapping:'sms_text_message.image_small_url'},{name:'image_large_url',mapping:'sms_text_message.image_large_url'},{name:'created_at',mapping:'sms_text_message.created_at',type:'date',dateFormat:'c'}]),remoteSort:false,sortInfo:{field:'id',direction:'DESC'}});this.columns=[{id:'Id',header:"Id",dataIndex:'id',sortable:true,hidden:true,width:42},{id:'sender',header:"Sender",dataIndex:'sender',sortable:false,width:420,renderer:this.formatSender},{id:'created_at',header:"Date",dataIndex:'created_at',width:150,renderer:this.formatDate,sortable:false}];TxtMsgGrid.superclass.constructor.call(this,{region:'center',id:'msg-grid',loadMask:{msg:'Loading Previous Messages...'},sm:new Ext.grid.RowSelectionModel({singleSelect:true}),viewConfig:{forceFit:true,enableRowBody:true,getRowClass:this.applyRowClass}});};function show_image_window(image){var win=new Ext.Window({layout:'fit',width:500,height:500,closeAction:'hide',plain:true,html:"<img width='100%' height='100%' src=\'"+image+"\'>"});win.show();win.center();}
Ext.extend(TxtMsgGrid,Ext.grid.GridPanel,{hideMode:'offsets',height:220,width:'100%',applyRowClass:function(record,rowIndex,p,ds){var xf=Ext.util.Format;if(record.data.image_small_url&&record.data.image_small_url.length>0){var func_call_str="javascript:show_image_window('"+record.data.image_large_url+"');"
p.body="<p><a href=\""+func_call_str+"\"><img align='top' style='width:50px;height:50px;float:left;margin:0px 10px 5px 5px' src="+record.data.image_small_url+"></a>"+xf.stripTags(record.data.msg)+"</p>";}else{p.body='<p>'+xf.stripTags(record.data.msg)+'</p>';}
return'x-grid3-row-expanded';},formatDate:function(date){if(!date){return'';}
var now=new Date();var d=now.clearTime(true);var notime=date.clearTime(true).getTime();if(notime==d.getTime()){return'Today '+date.dateFormat('g:i a');}
d=d.add('d',-6);if(d.getTime()<=notime){return date.dateFormat('D g:i a');}
return date.dateFormat('n/j g:i a');},formatSender:function(value,p,record){return String.format('<div class="topic"><b>{0}</b></div>',value,record.data.sender,record.id);},load:function(){this.store.load();},addRecord:function(json){addRecord(json,false);},addRecord:function(json,scroll_to){this.store.addSorted(new this.store.recordType({id:json.id,sender:json.sender,msg:json.msg,created_at:Date.parseDate(json.created_at,'c'),image_small_url:json.image_small_url,image_large_url:json.image_large_url}));if(scroll_to){try{var gridEl=this.getGridEl();var rowEl=this.getView().getRow(this.store.getCount()-1);rowEl.scrollIntoView(gridEl,false);}catch(e){var rowEl=new Ext.Element(this.getView().getRow(this.store.getCount()-1));var gridEl=this.getGridEl();rowEl.scrollIntoView(gridEl,false);}}}});Ext.reg('txtmsggrid',TxtMsgGrid);onunload=function(){if(stomp){stomp.unsubscribe(listen_queue);stomp.reset();connected_to_queue=false;}};Ext.onReady(function(){Ext.state.Manager.setProvider(new Ext.state.CookieProvider());Ext.QuickTips.init();inbound_msg_grid=new TxtMsgGrid({id:'inbound_msg_grid',width:'100%',border:true,autoScroll:true,frame:true,hidden:false,height:'100%',region:'center',hideMode:'offsets'});var appointment_panel=new Ext.Panel({region:'center',width:'100%',height:'100%',border:true,frame:true,height:290,bodyStyle:"background-color:#000000;",layout:'fit',title:'Appointment Reminders',html:"<h1 style='color:#ffffff;'>Coming Soon</h1>"});var contacts_panel=new Ext.Panel({region:'center',width:'100%',height:'100%',border:true,frame:true,height:290,bodyStyle:"background-color:#000000;",layout:'fit',title:'Contacts',html:"<h1 style='color:#ffffff;'>Coming Soon</h1>"});var texting_panel=new Ext.Panel({width:'100%',height:'100%',border:true,bodyStyle:"background-color:#000000;",layout:'border',title:'Realtime Texting',items:[inbound_msg_grid,{region:'north',width:'100%',hideMode:'offsets',id:'usa_send_msg_form',frame:true,xtype:'txtsrvform',fileUpload:true,scope:this,show_cancel:false,cancel_text:'Report network not working',cancel_is_submit:true,ok_text:'Send Message',items:[{layout:'column',xtype:'panel',anchor:'100%',border:false,autoHeight:true,items:[{columnWidth:1,layout:'form',anchor:'100%',bodyStyle:'padding-bottom:5px;',border:false,labelWidth:50,items:[{fieldLabel:'Country',anchor:'100%',name:'country[name]',id:'chat_country',dataIndex:'country[name]',xtype:'combo',store:country_ds,displayField:'name',valueField:'id',hiddenName:'country_id',forceSelection:true,selectOnFocus:true,allowBlank:false,blankText:"A Country is required",triggerAction:'all',emptyText:'Select a Country...',selectOnFocus:true,listeners:{select:{fn:function(){carrier_ds.baseParams.client_restriction=this.value;carrier_ds.baseParams.client_restriction_field='carrier_networks.country_id';carrier_ds.load();Ext.getCmp('chat_carrier').clearValue();}}}}]}]},{layout:'column',xtype:'panel',anchor:'100%',border:false,autoHeight:true,items:[{columnWidth:0.5,layout:'form',anchor:'100%',border:false,labelWidth:50,items:[{id:'chat_number',fieldLabel:'Number',anchor:'100%',name:'phone_number',xtype:'textfield',allowBlank:false,blankText:"Cell Phone Number is required"}]},{columnWidth:0.5,layout:'form',anchor:'100%',border:false,bodyStyle:'padding-left:5px;',labelWidth:50,items:[{fieldLabel:'Carrier',anchor:'100%',id:'chat_carrier',name:'carrier[name]',dataIndex:'carrier[name]',xtype:'combo',store:carrier_ds,displayField:'name',valueField:'id',typeAhead:true,hiddenName:'carrier_id',forceSelection:true,selectOnFocus:true,allowBlank:false,blankText:"A Carrier is required",triggerAction:'all',emptyText:'Select a Carrier...',selectOnFocus:true}]}]},{xtype:'progress',id:'usa_upload_progress',hidden:true,width:'100%'},{id:'usa_msg_field',name:'msg',xtype:'ts_smspanel',include_picture:true,picture_id:'usa_form-file',labelText:'Message',bodyStyle:'padding-top:5px;',allowBlank:false,blankText:"Message is required",message_at_bottom:message_at_bottom}],onOk:function(){if(!connected_to_queue){if(stomp){stomp.connect('10.176.38.209',61613,'guest','guest');}}
if(!sending_disabled){Ext.getCmp('usa_upload_progress').show();Ext.getCmp('usa_upload_progress').wait({text:'Sending Message...'});var submitOptions={url:'send_message',params:{format:'ext_json'},success:function(form,action){Ext.getCmp('usa_msg_field').clear();Ext.getCmp('usa_upload_progress').hide();Ext.getCmp('usa_form-file').reset();Ext.getCmp('usa_upload_progress').reset();if(restrict_messages){Ext.getCmp('usa_send_msg_form').setOkButtonText("Login needed");sending_disabled=true;}},failure:function(form,action){Ext.getCmp('usa_upload_progress').hide();Ext.getCmp('usa_upload_progress').reset();switch(action.failureType){case Ext.form.Action.CLIENT_INVALID:case Ext.form.Action.SERVER_INVALID:break;case Ext.form.Action.CONNECT_FAILURE:case Ext.form.Action.LOAD_FAILURE:alert('Hmm..we ran into a problem, oh well try again I guess');break;}}};Ext.getCmp('usa_send_msg_form').getForm().submit(submitOptions);}},showError:function(msg,title){title=title||'Error';Ext.getCmp('usa_upload_progress').hide();Ext.getCmp('usa_upload_progress').reset();Ext.Msg.show({title:title,msg:msg,modal:true,icon:Ext.Msg.ERROR,buttons:Ext.Msg.OK});}}]});var mainPainel=new Ext.TabPanel({header:false,width:730,height:510,activeTab:activeTab,border:true,renderTo:'content_no_pad',items:[texting_panel,appointment_panel,contacts_panel]});var delay=new Ext.util.DelayedTask(function(){var today=new Date();var record={id:0,sender:'Text4FreeOnline',msg:'Realtime replies will appear here. Choose a Country, Carrier and enter phone number to send a message',created_at:today};country_ds.load();Ext.getCmp('chat_number').focus(true,400);inbound_msg_grid.addRecord(record,false);},this);delay.delay(60);stomp=new STOMPClient();stomp.onopen=function(){};stomp.onclose=function(code){connected_to_queue=false;};stomp.onerror=function(error){};stomp.onerrorframe=function(frame){};stomp.onconnectedframe=function(){connected_to_queue=true;stomp.subscribe("",{exchange:"Text4FreeOnline",routing_key:listen_queue});stomp.subscribe("t4fbroadcast"+listen_queue,{exchange:"t4fbroadcast",routing_key:"#"});};stomp.onmessageframe=function(frame){var jsonData=Ext.util.JSON.decode(frame.body);if(jsonData.id=="broadcast"){try{if(jsonData.num_texts_all_time){var dom=xGetElementById('msgs_all_time');dom.innerHTML=jsonData.num_texts_all_time;dom=xGetElementById('msgs_today');dom.innerHTML=jsonData.num_texts_today;}
if(jsonData.num_people_all_time){var dom=xGetElementById('users_all_time');dom.innerHTML=jsonData.num_people_all_time;dom=xGetElementById('users_today');dom.innerHTML=jsonData.num_people_today;}
if(jsonData.num_users_all_time){var dom=xGetElementById('free_users_all_time');dom.innerHTML=jsonData.num_users_all_time;dom=xGetElementById('free_users_today');dom.innerHTML=jsonData.num_users_today;}
if(jsonData.country){ShowEvents(jsonData);}}catch(e){}}else{inbound_msg_grid.addRecord(jsonData);count_received=count_received+1;var dom=Ext.getDom('received_message_frame');dom.src='message_received?'+(new Date().getTime());}};var parentObj=xGetElementById(mapParent);map=new Map(parentObj);Ext.EventManager.onWindowResize(function(){ClearAll();});if(stomp){stomp.connect('10.176.38.209',61613,'guest','guest');}});