op_panel-0.30/ 0000755 0001750 0001750 00000000000 11217744023 013110 5 ustar alerios alerios op_panel-0.30/init/ 0000755 0001750 0001750 00000000000 11217744023 014053 5 ustar alerios alerios op_panel-0.30/init/op_panel_suse.sh 0000644 0001750 0001750 00000011613 11217744021 017243 0 ustar alerios alerios #!/bin/bash
#
# /etc/init.d/fop
#
# LSB compliant service control script; see http://www.linuxbase.org/spec/
#
# System startup script for daemon spamd
#
### BEGIN INIT INFO
# Provides: fop
# Required-Start:
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start Flash Operator Panel
### END INIT INFO
#
# Note on Required-Start: It does specify the init script ordering,
# not real dependencies. Depencies have to be handled by admin
# resp. the configuration tools (s)he uses.
# Source SuSE config (if still necessary, most info has been moved)
test -r /etc/rc.config && . /etc/rc.config
# Check for missing binaries (stale symlinks should not happen)
FOP_BIN=/usr/local/fop/op_server.pl
# Check for existence of needed config file and read it
#
# Later, we may want to make startup behaviour (user ID, firewalling, ...)
# configurable, as there are security implications (read README.spamd).
#FOP_CONFIG=/etc/sysconfig/fop
#test -r $FOP_CONFIG || exit 6
#. $FOP_CONFIG
test -x $FOP_BIN || exit 5
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_failed set local and overall rc status to
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
# rc_active checks whether a service is activated by symlinks
. /etc/rc.status
FOP_ARGS="-d -p /var/run/fop.pid"
# First reset status of this service
rc_reset
# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.
case "$1" in
start)
echo -n "Starting Flash Operator Panel server "
## Start daemon with startproc(8). If this fails
## the echo return value is set appropriate.
# NOTE: startproc returns 0, even if service is
# already running to match LSB spec.
startproc -p /var/run/fop.pid $FOP_BIN $FOP_ARGS
# Remember status and be verbose
rc_status -v
;;
stop)
echo -n "Shutting down op_server.pl "
## Stop daemon with killproc(8) and if this fails
## set echo the echo return value.
killproc -p /var/run/fop.pid -TERM $FOP_BIN
# Remember status and be verbose
rc_status -v
;;
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
$0 status >/dev/null && $0 restart
# Remember status and be quiet
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
# Remember status and be quiet
rc_status
;;
force-reload)
## Signal the daemon to reload its config. Most daemons
## do this on signal 1 (SIGHUP).
## If it does not support it, restart.
echo -n "Reload service op_server.pl "
## if it supports it:
killproc -HUP $FOP_BIN
touch /var/run/fop.pid
rc_status -v
## Otherwise:
#$0 stop && $0 start
#rc_status
;;
reload)
## Like force-reload, but if daemon does not support
## signalling, do nothing (!)
# If it supports signalling:
echo -n "Reload service op_server.pl "
killproc -HUP $FOP_BIN
touch /var/run/fop.pid
rc_status -v
## Otherwise if it does not support reload:
#rc_failed 3
#rc_status -v
;;
status)
echo -n "Checking for service fop "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
# Return value is slightly different for the status command:
# 0 - service running
# 1 - service dead, but /var/run/ pid file exists
# 2 - service dead, but /var/lock/ lock file exists
# 3 - service not running
# NOTE: checkproc returns LSB compliant status values.
checkproc $FOP_BIN
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|reload}"
exit 1
;;
esac
rc_exit
op_panel-0.30/init/op_panel_redhat.sh 0000755 0001750 0001750 00000001543 11217744021 017537 0 ustar alerios alerios #!/bin/bash
#
# chkconfig: 2345 99 15
# description: Flash Operator Panel
# processname: op_server.pl
# source function library
. /etc/rc.d/init.d/functions
DAEMON=/usr/local/fop/op_server.pl
OPTIONS="-d -c /etc/asterisk/fop"
RETVAL=0
case "$1" in
start)
echo -n "Starting Flash Operator Panel: "
daemon $DAEMON $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/op_server.pl
;;
stop)
echo -n "Shutting dows Flash Operator Panel: "
killproc op_server.pl
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/op_server.pl
;;
restart)
$0 stop
$0 start
RETVAL=$?
;;
reload)
echo -n "Reloading Flash Operator Panel configuration: "
killproc op_server.pl -HUP
RETVAL=$?
echo
;;
status)
status op_server.pl
RETVAL=$?
;;
*)
echo "Usage: op_panel {start|stop|status|restart|reload}"
exit 1
esac
exit $RETVAL
op_panel-0.30/init/op_panel_debian.sh 0000755 0001750 0001750 00000003753 11217744021 017517 0 ustar alerios alerios #! /bin/sh
#
# skeleton example file to build /etc/init.d/ scripts.
# This file should be used to construct scripts for /etc/init.d.
#
# Author: Miquel van Smoorenburg .
# Ian Murdock .
#
# You may remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.
#
# Version: @(#)skeleton 1.9.4 21-Mar-2004 miquels@cistron.nl
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/operator/bin/op_server.pl
NAME=op_panel
DESC="Flash Operator Panel"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
OPTIONS="-d -p $PIDFILE"
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
# Read config file if it is present.
#if [ -r /etc/default/$NAME ]
#then
# . /etc/default/$NAME
#fi
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
start-stop-daemon --start --pidfile $PIDFILE --startas $DAEMON -- $OPTIONS
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
start-stop-daemon --stop --pidfile $PIDFILE
echo "."
;;
reload)
# If the daemon can reload its config files on the fly
# for example by sending it SIGHUP, do it here.
#
# If the daemon responds to changes in its config file
# directly anyway, make this a do-nothing entry.
#
echo -n "Reloading $DESC configuration..."
start-stop-daemon --stop --pidfile $PIDFILE --signal HUP
echo "done."
;;
restart|force-reload)
#
# If the "reload" option is implemented, move the "force-reload"
# option to the "reload" entry above. If not, "force-reload" is
# just the same as "restart".
#
echo -n "Restarting $DESC: $NAME"
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON
sleep 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --startas $DAEMON -- $OPTIONS
echo "."
;;
*)
# echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
op_panel-0.30/extensions.conf.sample 0000644 0001750 0001750 00000001302 11217744022 017431 0 ustar alerios alerios #
# Example entry for setting a callerid text comming
# from the flash operator panel
# You have to modify line 1 and 3 to match the channel
# name for that extension: temp=clid should remain untouched.
#
# If the variable does not exist in the database
# (if was not set by the operator panel) the line
# 1 jumps to priority n+101, to perform a normal
# dial without setting the CallerIDName
exten => 11,1,DBget(temp=clid/SIP/11)
exten => 11,2,SetCIDName(${temp})
exten => 11,3,DBdel(clid/SIP/11)
exten => 11,4,Dial(SIP/11,30,TrH)
exten => 11,5,Hangup
; gets here if there was not 'info' provided
exten => 11,102,Dial(SIP/11,30,TrH)
; busy from the dial
exten => 11,105,Busy
exten => 11,203,Busy
op_panel-0.30/RECIPES 0000644 0001750 0001750 00000004731 11217744022 014131 0 ustar alerios alerios RECIPE 1
--------
Set DND (Do not disturb) from your dialplan and
reflect the status on FOP:
# Example on setting DND state from the dialplan
# *78 Sets DND ON
# *79 Sets DND OFF
#
# This example only sets the dnd db value and
# signals FOP to display the status on the button
# you might have to add a check in your stdexten
# macro to honour the DND status
in extensions.conf:
exten => *78,1,Set(DB(dnd/${CUT(CHANNEL|-|1)})=Break)
exten => *78,n,UserEvent(ASTDB|Channel: ${CHANNEL}^Family: dnd^Value: Break)
exten => *78,n,Hangup
exten => *79,1,Set(DB(dnd/${CUT(CHANNEL|-|1)})=)
exten => *79,n,UserEvent(ASTDB|Channel: ${CHANNEL}^Family: dnd^Value: ^)
exten => *79,n,Hangup
in op_astdb.cfg:
[dnd]
settext=DND: ${value}|
fopledcolor=0x001020^0|0x00A000^0
in op_buttons.cfg
[SIP/1234]
..
astdbkey=SIP/1234
RECIPE 2
--------
How to monitor rxfax. This is just a barebones sample, you can
customize it for your needs. You have to Goto to the fax context
from your dialplan:
in extensions.conf:
exten => fax,1,Goto(rxfax,s,1)
[rxfax]
exten => s,1,Set(FAXFILE=/var/spool/fax/fax-${TIMESTAMP}.tif)
exten => s,2,Set(LOCALSTATIONID=My Company)
exten => s,3,UserEvent(Newexten|Channel: FAX/FAX-${UNIQUEID}^State: Up^Uniqueid: 1234)
exten => s,4,rxfax(${FAXFILE})
exten => s,5,Hangup()
exten => t,1,Hangup()
exten => h,1,UserEvent(Hangup|Channel: FAX/FAX-${UNIQUEID}^State: Down^Uniqueid: 1234)
in op_buttons.cfg:
[FAX/FAX]
Position=1
Label="Fax"
RECIPE 3
--------
How to monitor voicemailmain (users entering the voicemail application)
You have to define a regular extensions that performs a 'Goto' to the
vmail context (similar to the fax case above)
in extensions.conf:
[vmail]
exten => s,1,SetLanguage(es)
exten => s,2,UserEvent(Newexten|Channel: VMAIL/VMAIL-${UNIQUEID}^State: Up^Uniqueid: 4321)
exten => s,3,VoicemailMain(${CALLERIDNUM}@internos)
exten => t,1,Hangup
exten => h,1,NoOp(Hangup en voicemail)
exten => h,2,UserEvent(Hangup|Channel: VMAIL/VMAIL-${UNIQUEID}^State: Down^Uniqueid: 4321)
exten => h,3,Hangup
in op_buttons.cfg:
[VMAIL/VMAIL]
Position=1
Label="Voicemail"
RECIPE 4
--------
Show day/night mode based on an asterisk db value:
in extensions.conf:
exten => 80,1,DBPut(daymode/DAYMODE=Day);
exten => 80,2,UserEvent(ASTDB|Family: daymode^Channel: daymode^Value: Day)
exten => 80,3,Hangup
;
exten => 81,1,DBPut(daymode/DAYMODE=Night);
exten => 81,2,UserEvent(ASTDB|Family: daymode^Channel: daymode^Value: Night)
exten => 81,3,Hangup
in op_astdb.cfg:
[daymode]
setlabel=${value}
op_panel-0.30/ming-source/ 0000755 0001750 0001750 00000000000 11217744026 015343 5 ustar alerios alerios op_panel-0.30/ming-source/comunicator.pl 0000755 0001750 0001750 00000111160 11217744021 020221 0 ustar alerios alerios #!/usr/bin/perl -w
# Flash Operator Panel. http://www.asternic.org
#
# Copyright (c) 2004 Nicolas Gudino. All rights reserved.
#
# Nicolas Gudino
#
# This program is free software, distributed under the terms of
# the GNU General Public License.
#
# THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
use SWF qw(:ALL);
use SWF::Constants qw(:Text :Button :DisplayItem :Fill);
SWF::setScale(1);
SWF::useSWFVersion(6);
my $movie = new SWF::Movie();
$movie->setDimension(100, 100);
$movie->setBackground(0xFF, 0xFF, 0xFF);
$movie->setRate(30);
$movie->add(new SWF::Action(<<"EndOfActionScript"));
var dummyVar=(getTimer()+random(100000));
if(context != undefined) {
context = context.toUpperCase();
colaEvento(0,"debug","contexto leido "+context);
if(context == "DEFAULT") { context=""; }
} else {
colaEvento(0,"debug","context undefined");
context="";
}
var archivo = "variables"+context+".txt?rand="+dummyVar;
vr = new LoadVars ();
vr.onLoad = function (success)
{
if (success == true) {
colaEvento(0,"debug","Ok al leer "+archivo);
nextFrame();
} else {
colaEvento(0,"debug","Fallo al leer "+archivo);
stop();
}
};
vr.load(archivo);
EndOfActionScript
$movie->nextFrame();
$movie->add(new SWF::Action(<<"EndOfActionScript"));
function conecta() {
_global.sock = new XMLSocket;
_global.sock.onConnect = handleConnect;
_global.sock.onClose = handleDisconnect;
_global.sock.onXML = handleXML;
if(_global.port == undefined) {
_global.port = 4445;
}
if(_global.server == undefined) {
_global.sock.connect(null, _global.port);
_global.server_print = "default";
} else {
_global.sock.connect(_global.server, _global.port);
_global.server_print = _global.server;
}
}
function handleConnect(connectionStatus){
if (connectionStatus) {
colaEvento(0,"debug","Conectado! con contexto: "+context);
_global.reconecta = 0;
if(_global.enable_crypto==1) {
envia_comando("contexto", 0, 0);
} else {
envia_comando("contexto", 1, 0);
}
if(restrict != undefined) {
envia_comando("restrict",restrict,0);
}
} else {
colaEvento(0,"debug","No pude conectar!");
_global.reconecta = 1;
}
}
function handleXML(doc){
var e = doc.firstChild;
if (e != null) {
if (e.nodeName == "response") {
var numeroboton = e.attributes.btn; // btn is the button number
var comando = e.attributes.cmd;
var textofinal = e.attributes.data;
if (_global.key != undefined) {
if(_global.enable_crypto == 1) {
comando = decrypt(comando, _global.key);
if (textofinal.length > 0) {
textofinal = decrypt(textofinal, _global.key);
}
}
}
var botonparte = numeroboton.split("@");
var boton_numero = botonparte[0];
var boton_contexto = botonparte[1];
var timernumber = 0;
if (boton_contexto == undefined) {
boton_contexto = "";
}
if (_root.context == undefined) {
_root.context = "";
}
if (comando == "key") {
_global.key = textofinal;
return;
}
if (comando == "restrict") {
_global.restrict = numeroboton;
_global.mybutton = numeroboton;
}
if (comando == "version") {
if(textofinal != _global.swfversion)
{
_global.statusline=vr.version_mismatch;
} else {
_global.statusline="";
}
}
if (_root.context == boton_contexto) {
if(_global.restrict != undefined) {
if(_global.restrict == boton_numero) {
colaEvento(boton_numero,comando,textofinal);
}
} else {
colaEvento(boton_numero,comando,textofinal);
}
}
// endif root.context
}
// endif == response
}
// endiff e != null
}
function colaEvento(boton_numero,comando,textofinal) {
if(_global.VersionFlash == "MAC") {
// GetURL method for MAC
jsQueue.push("javascript: docommand('"+boton_numero+"','"+comando+"','"+textofinal+"')");
} else {
// FSCommand method for anything else
jsQueue.push("newevent;"+boton_numero+"|"+comando+"|"+textofinal);
}
}
function handleDisconnect(){
delete _global.key;
_global.reconecta = 1;
colaEvento(0,"debug","Attempt reconnection");
}
Inicia_Variables = function () {
_global.jsQueue = new Array();
var flashVersion = System.capabilities.version;
var datos = flashVersion.split(" ");
_global.VersionFlash = datos[0];
_global.server = vr.server;
_global.port = vr.port;
_global.enable_crypto = Number(vr.enable_crypto);
if (isNaN(_global.enable_crypto)) {
_global.enable_crypto=0;
} else {
if(_global.enable_crypto != 0) {
_global.enable_crypto = 1;
}
}
};
recarga = function () {
if(_global.restart == 1) {
// Send command to restart Asterisk
envia_comando("restart","1","1");
} else {
// Reloads FLASH client
delete _global.key;
var incontext = context;
var inbutton = mybutton;
var inrestrict = _global.restrict;
var indial = dial;
var innohighlight = nohighlight;
for (var a in _root) {
if (typeof (_root[a]) == "object") {
removeMovieClip(_root[a]);
}
if (typeof (_root[a]) == "movieclip") {
removeMovieClip(_root[a]);
}
}
_global.context = incontext;
_global.mybutton = inbutton;
_global.restrict = inrestrict;
_global.dial = indial;
_global.nohighlight = inhighlight;
stop();
gotoAndPlay(1);
}
};
_root.onEnterFrame = function() {
if(_global.jsQueue.length>0) {
if(_global.VersionFlash == "MAC") {
getURL(jsQueue.shift());
} else {
var partes = jsQueue.shift().split(";");
var comando=partes[0];
var params=partes[1];
getURL("FSCommand:"+comando,params);
}
}
};
Timers = function () {
if (_global.reconecta == 1) {
delete setInterval;
delete _global.key;
recarga();
return;
}
};
setInterval(Timers, 10000);
function ExtraeNumeroClip(name) {
var destino = "";
name = name._name;
for (var s = 0; s"9") {
} else {
destino = destino+""+c;
}
if (c == ".") {
destino = "";
}
}
return destino;
}
envia_comando = function (comando, origen, destino) {
if (comando != "bogus" && comando != "contexto" && comando != "restrict") {
if (_global.restrict!=0) {
if(comando == "cortar") {
origen_number = ExtraeNumeroClip(origen);
} else {
origen_number = origen;
}
if(_global.restrict != undefined) {
if (_global.restrict == origen_number ) {
} else {
return;
}
}
}
}
message = new XML();
message_data = message.createElement("msg");
if (_root.context.length>0) {
agrega_contexto = "@"+context;
}
if (agrega_contexto == undefined) {
agrega_contexto = "";
}
if (_level0.claveinput.secret == undefined) {
_level0.claveinput.secret = "";
}
if (_global.claveingresada == undefined && ( comando != "contexto" && comando != "bogus" && comando != "dial" && comando != "restrict")) {
_root.codebox._visible = true;
Selection.setFocus(_root.codebox.claveform);
_root.codebox.swapDepths(_root.log);
return;
}
// var clave=_level0.claveinput.secret+_global.key;
var clave = _global.claveingresada+_global.key;
var md5clave = "";
var md5clave = calcMD5(clave);
if (comando == "contexto" || comando == "restrict") {
md5clave = "";
}
message_data.attributes.data = origen+agrega_contexto+"|"+comando+destino+"|"+md5clave;
message.appendChild(message_data);
_global.sock.send(message);
var clave = "";
};
function LTrim(str) {
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(0)) != -1) {
var j = 0, i = s.length;
while (j=0 && whitespace.indexOf(s.charAt(i)) != -1) {
i--;
}
s = s.substring(0, i+1);
}
return s;
}
function Trim(str) {
return RTrim(LTrim(str));
}
function setDND(obj, item) {
var nroboton = ExtraeNumeroClip(obj);
envia_comando("dnd", nroboton, nroboton);
}
function genera_selecttimeout() {
_global.positionselect = 0;
test = attachMovie("option","optionselected", getNextHighestDepth(), {_x:800, _y:6});
test._visible = true;
test.legend = "No timeout";
test.onPress = function() {
_root.despliega_select();
};
for (a=0; a<5; a++) {
var b=a+1;
if (_global.opcionesTimeout[a] != undefined) {
testa = attachMovie("option","option"+a, getNextHighestDepth(), {_x:800, _y:(b*22)+6});
testa.legend = _global.opcionesTimeout[a];
testa._visible = false;
testa.onRollOver = function() {
this.legend = "* "+this.legend;
};
testa.onRollOut = function() {
this.legend = this.legend.substring(2, this.legend.length);
};
testa.onPress = function() {
this.legend = this.legend.substring(2, this.legend.length);
var posicion = ExtraeNumeroClip(this);
_global.timeout_value = _global.opcionesTimeoutSecs[posicion];
_root.muestra_selecttimeout(0);
_root.selectbox1.gotoAndStop(1);
_root.optionselected._visible=true;
_root.optionselected.legend = this.legend;
};
}
}
};
function muestra_selecttimeout(value) {
for (a=0; a<5; a++) {
var v = eval("_root.option"+a);
if(value) {
v._visible = true;
} else {
v._visible = false;
}
}
};
function despliega_select() {
_root.optionselected._visible=false;
_root.selectbox1.gotoAndStop(2);
_root.muestra_selecttimeout(1);
};
function base64_decode(opString) {
if ( opString == undefined ) {
return;
}
var str = opString;
var base64s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var bits, bit1, bit2, bit3, bit4, i = 0;
var decOut = "";
for (i=0; i> 16, (bits & 0xff00) >> 8, bits & 0xff);
}
if (str.charCodeAt(i-2) == 61) {
return decOut.substring(0, decOut.length-2);
} else if (str.charCodeAt(i-1) == 61) {
return decOut.substring(0, decOut.length-1);
} else {
return decOut.substring(0, decOut.length);
}
};
// MD5 ROUTINE
/*
* Convert a 32-bit number to a hex string with ls-byte first
*/
var hex_chr = "0123456789abcdef";
//
// somehow the expression (bitAND(b, c) | bitAND((~b), d)) didn't return coorect results on Mac
// for:
// b&c = a8a20450, ((~b)&d) = 0101c88b, (bitAND(b, c) | bitAND((~b), d)) = a8a20450 <-- !!!
// looks like the OR is not executed at all.
//
// let's try to trick the P-code compiler into working with us... Prayer beads are GO!
//
function bitOR(a, b) {
var lsb = (a & 0x1) | (b & 0x1);
var msb31 = (a >>> 1) | (b >>> 1);
return (msb31 << 1) | lsb;
}
//
// will bitXOR be the only one working...?
// Nope. XOR fails too if values with bit31 set are XORed.
//
// Note however that OR (and AND and XOR?!) works alright for the statement
// (msb31 << 1) | lsb
// even if the result of the left-shift operation has bit 31 set.
// So there might be an extra condition here (Guessmode turned on):
// Mac Flash fails (OR, AND and XOR) if either one of the input operands has bit31 set
// *and* both operands have one or more bits both set to 1. In other words: when both
// input bit-patterns 'overlap'.
// Stuff to munch on for the MM guys, I guess...
//
function bitXOR(a, b) {
var lsb = (a & 0x1) ^ (b & 0x1);
var msb31 = (a >>> 1) ^ (b >>> 1);
return (msb31 << 1) | lsb;
}
//
// bitwise AND for 32-bit integers. This uses 31 + 1-bit operations internally
// to work around bug in some AS interpreters. (Mac Flash!)
//
function bitAND(a, b) {
var lsb = (a & 0x1) & (b & 0x1);
var msb31 = (a >>> 1) & (b >>> 1);
return (msb31 << 1) | lsb;
// return (a & b);
}
//
// Add integers, wrapping at 2^32. This uses 16-bit operations internally
// to work around bugs in some AS interpreters. (Mac Flash!)
//
function addme(x, y) {
var lsw = (x & 0xFFFF)+(y & 0xFFFF);
var msw = (x >> 16)+(y >> 16)+(lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
function rhex(num) {
str = "";
for (j=0; j<=3; j++) {
str += hex_chr.charAt((num >> (j*8+4)) & 0x0F)+hex_chr.charAt((num >> (j*8)) & 0x0F);
}
return str;
}
/*
* Convert a string to a sequence of 16-word blocks, stored as an array.
* Append padding bits and the length, as described in the MD5 standard.
*/
function str2blks_MD5(str) {
nblk = ((str.length+8) >> 6)+1;
// 1 + (len + 8)/64
blks = new Array(nblk*16);
for (i=0; i> 2] |= str.charCodeAt(i) << (((str.length*8+i)%4)*8);
}
blks[i >> 2] |= 0x80 << (((str.length*8+i)%4)*8);
var l = str.length*8;
blks[nblk*16-2] = (l & 0xFF);
blks[nblk*16-2] |= ((l >>> 8) & 0xFF) << 8;
blks[nblk*16-2] |= ((l >>> 16) & 0xFF) << 16;
blks[nblk*16-2] |= ((l >>> 24) & 0xFF) << 24;
return blks;
}
/*
* Bitwise rotate a 32-bit number to the left
*/
function rol(num, cnt) {
return (num << cnt) | (num >>> (32-cnt));
}
/*
* These functions implement the basic operation for each round of the
* algorithm.
*/
function cmn(q, a, b, x, s, t) {
return addme(rol((addme(addme(a, q), addme(x, t))), s), b);
}
function ff(a, b, c, d, x, s, t) {
return cmn(bitOR(bitAND(b, c), bitAND((~b), d)), a, b, x, s, t);
}
function gg(a, b, c, d, x, s, t) {
return cmn(bitOR(bitAND(b, d), bitAND(c, (~d))), a, b, x, s, t);
}
function hh(a, b, c, d, x, s, t) {
return cmn(bitXOR(bitXOR(b, c), d), a, b, x, s, t);
}
function ii(a, b, c, d, x, s, t) {
return cmn(bitXOR(c, bitOR(b, (~d))), a, b, x, s, t);
}
/*
* Take a string and return the hex representation of its MD5.
*/
function calcMD5(str) {
x = str2blks_MD5(str);
a = 1732584193;
b = -271733879;
c = -1732584194;
d = 271733878;
var step;
for (i=0; i=ls) {
break;
}
var pepe=s.charAt(is);
if (c2b[s.charAt(is)] == null) {
b[is] = 0xF7;
} else {
b[is] = c2b[s.charAt(is)];
}
is++;
}
return b;
}
function bytes2str(b) {
var ib = 0;
var lb = b.length;
var s = '';
while (1) {
if (ib>=lb) {
break;
}
if (b2c[0xFF & b[ib]]!=undefined) {
s += b2c[0xFF & b[ib]];
}
ib++;
}
return s;
}
function ascii2bytes(a) {
var ia = -1;
var la = a.length;
var ib = 0;
var b = new Array();
var carry;
while (1) {
// reads 4 chars and produces 3 bytes
while (1) {
ia++;
if (ia>=la) {
return b;
}
if (a2b[a.charAt(ia)] != null) {
break;
}
}
b[ib] = a2b[a.charAt(ia)] << 2;
while (1) {
ia++;
if (ia>=la) {
return b;
}
if (a2b[a.charAt(ia)] != null) {
break;
}
}
carry = a2b[a.charAt(ia)];
b[ib] |= carry >>> 4;
ib++;
carry = 0xF & carry;
if (carry == 0 && ia == (la-1)) {
return b;
}
b[ib] = carry << 4;
while (1) {
ia++;
if (ia>=la) {
return b;
}
if (a2b[a.charAt(ia)] != null) {
break;
}
}
carry = a2b[a.charAt(ia)];
b[ib] |= carry >>> 2;
ib++;
carry = 3 & carry;
if (carry == 0 && ia == (la-1)) {
return b;
}
b[ib] = carry << 6;
while (1) {
ia++;
if (ia>=la) {
return b;
}
if (a2b[a.charAt(ia)] != null) {
break;
}
}
b[ib] |= a2b[a.charAt(ia)];
ib++;
}
return b;
}
function bytes2ascii(b) {
var ib = 0;
var lb = b.length;
var s = '';
var b1;
var b2;
var b3;
var carry;
while (1) {
// reads 3 bytes and produces 4 chars
if (ib>=lb) {
break;
}
b1 = 0xFF & b[ib];
s += b2a[63 & (b1 >>> 2)];
carry = 3 & b1;
ib++;
if (ib>=lb) {
s += b2a[carry << 4];
break;
}
b2 = 0xFF & b[ib];
s += b2a[(0xF0 & (carry << 4)) | (b2 >>> 4)];
carry = 0xF & b2;
ib++;
if (ib>=lb) {
s += b2a[carry << 2];
break;
}
b3 = 0xFF & b[ib];
s += b2a[(60 & (carry << 2)) | (b3 >>> 6)]+b2a[63 & b3];
ib++;
if (ib%36 == 0) {
s += "\n";
}
}
return s;
}
function bytes2blocks(bytes) {
var blocks = new Array();
var ibl = 0;
var iby = 0;
var nby = bytes.length;
while (1) {
blocks[ibl] = (0xFF & bytes[iby]) << 24;
iby++;
if (iby>=nby) {
break;
}
blocks[ibl] |= (0xFF & bytes[iby]) << 16;
iby++;
if (iby>=nby) {
break;
}
blocks[ibl] |= (0xFF & bytes[iby]) << 8;
iby++;
if (iby>=nby) {
break;
}
blocks[ibl] |= 0xFF & bytes[iby];
iby++;
if (iby>=nby) {
break;
}
ibl++;
}
return blocks;
}
function blocks2bytes(blocks) {
var bytes = new Array();
var iby = 0;
var ibl = 0;
var nbl = blocks.length;
while (1) {
if (ibl>=nbl) {
break;
}
bytes[iby] = 0xFF & (blocks[ibl] >>> 24);
iby++;
bytes[iby] = 0xFF & (blocks[ibl] >>> 16);
iby++;
bytes[iby] = 0xFF & (blocks[ibl] >>> 8);
iby++;
bytes[iby] = 0xFF & blocks[ibl];
iby++;
ibl++;
}
return bytes;
}
function digest_pad(bytearray) {
var newarray = new Array();
var ina = 0;
var iba = 0;
var nba = bytearray.length;
var npads = 15-(nba%16);
newarray[ina] = npads;
ina++;
while (iba0) {
newarray[ina] = 0;
ina++;
ip--;
}
return newarray;
}
function pad(bytearray) {
var newarray = new Array();
var ina = 0;
var iba = 0;
var nba = bytearray.length;
var npads = 7-(nba%8);
newarray[ina] = (0xF8 & rand_byte()) | (7 & npads);
ina++;
while (iba0) {
newarray[ina] = rand_byte();
ina++;
ip--;
}
return newarray;
}
function rand_byte() {
return Math.floor(256*Math.random());
if (!rand_byte_already_called) {
var now = new Date();
seed = now.milliseconds;
rand_byte_already_called = true;
}
seed = (1029*seed+221591)%1048576;
return Math.floor(seed/4096);
}
function unpad(bytearray) {
var iba = 0;
var newarray = new Array();
var ina = 0;
var npads = 0x7 & bytearray[iba];
iba++;
var nba = bytearray.length-npads;
while (iba=nbl) {
break;
}
v0[0] = blocks[ibl];
ibl++;
v0[1] = blocks[ibl];
ibl++;
v1[0] = blocks[ibl];
ibl++;
v1[1] = blocks[ibl];
ibl++;
c0 = tea_code(xor_blocks(v0, c0), key);
c1 = tea_code(xor_blocks(v1, c1), key);
swap = c0[0];
c0[0] = c0[1];
c0[1] = c1[0];
c1[0] = c1[1];
c1[1] = swap;
}
var concat = new Array();
concat[0] = c0[0];
concat[1] = c0[1];
concat[2] = c1[0];
concat[3] = c1[1];
return concat;
}
function encrypt(str, keystr) {
var key = new Array();
key = binarydigest(keystr);
var blocks = new Array();
blocks = bytes2blocks(pad(str2bytes(str)));
var ibl = 0;
var nbl = blocks.length;
// Initial Value for CBC mode = "abcdbcde". Retain for interoperability.
var c = new Array();
c[0] = 0x61626364;
c[1] = 0x62636465;
var v = new Array();
var cblocks = new Array();
var icb = 0;
while (1) {
if (ibl>=nbl) {
break;
}
v[0] = blocks[ibl];
ibl++;
v[1] = blocks[ibl];
ibl++;
c = tea_code(xor_blocks(v, c), key);
cblocks[icb] = c[0];
icb++;
cblocks[icb] = c[1];
icb++;
}
return binary2ascii(cblocks);
}
function decrypt(ascii, keystr) {
var key = new Array();
key = binarydigest(keystr);
var cblocks = new Array();
cblocks = ascii2binary(ascii);
var icbl = 0;
var ncbl = cblocks.length;
var lastc = new Array();
lastc[0] = 0x61626364;
lastc[1] = 0x62636465;
var v = new Array();
var c = new Array();
var blocks = new Array();
var ibl = 0;
while (1) {
if (icbl>=ncbl) {
break;
}
c[0] = cblocks[icbl];
icbl++;
c[1] = cblocks[icbl];
icbl++;
v = xor_blocks(lastc, tea_decode(c, key));
blocks[ibl] = v[0];
ibl++;
blocks[ibl] = v[1];
ibl++;
lastc[0] = c[0];
lastc[1] = c[1];
}
return bytes2str(unpad(blocks2bytes(blocks)));
}
function xor_blocks(blk1, blk2) {
var blk = new Array();
blk[0] = blk1[0] ^ blk2[0];
blk[1] = blk1[1] ^ blk2[1];
return blk;
}
function tea_code(v, k) {
var v0 = v[0];
var v1 = v[1];
var k0 = k[0];
var k1 = k[1];
var k2 = k[2];
var k3 = k[3];
var sum = 0;
var n = 32;
while (n-->0) {
sum -= 1640531527;
// TEA magic number 0x9e3779b9
sum = sum | 0;
v0 += ((v1 << 4)+k0) ^ (v1+sum) ^ ((v1 >>> 5)+k1);
v1 += ((v0 << 4)+k2) ^ (v0+sum) ^ ((v0 >>> 5)+k3);
}
var w = new Array();
w[0] = v0 | 0;
w[1] = v1 | 0;
return w;
}
function tea_decode(v, k) {
var v0 = v[0];
var v1 = v[1];
var k0 = k[0];
var k1 = k[1];
var k2 = k[2];
var k3 = k[3];
var sum = 0;
var n = 32;
sum = -957401312;
while (n-->0) {
v1 -= ((v0 << 4)+k2) ^ (v0+sum) ^ ((v0 >>> 5)+k3);
v0 -= ((v1 << 4)+k0) ^ (v1+sum) ^ ((v1 >>> 5)+k1);
sum += 1640531527;
sum = sum | 0;
}
var w = new Array();
w[0] = v0 | 0;
w[1] = v1 | 0;
return w;
}
Key.addListener(Key);
Key.onKeyDown = function(){
var incremento = 1;
var tecla = Key.getCode();
if(tecla == 16) {
_global.shift = 1;
}
if(tecla == 40) // DOWN
{
// Select next button DOWN
myapaga = eval('_root.resaltado'+_global.rectanguloprendido);
dif1 = (_global.rectanguloprendido) % _root.cuantas_filas;
incremento = 1;
if(dif1 == 0) {
// It changed the column, increment it again
incremento = incremento - _root.cuantas_filas;
}
proximo = _global.rectanguloprendido + incremento;
var myresa = eval('_root.resaltado'+proximo);
if(_global.rectanguloprendido != _global.restrict) {
myapaga._visible = false;
}
myresa._visible = true;
_global.rectanguloprendido = proximo;
_root.makeStatus(proximo);
}
if(tecla == 38) // UP
{
// Select next button UP
myapaga = eval('_root.resaltado'+_global.rectanguloprendido);
dif1 = (_global.rectanguloprendido-1) % _root.cuantas_filas;
incremento = -1;
if(dif1 == 0) {
// It changed the column, increment it again
incremento = incremento + _root.cuantas_filas;
}
proximo = _global.rectanguloprendido + incremento;
var myresa = eval('_root.resaltado'+proximo);
if(_global.rectanguloprendido != _global.restrict) {
myapaga._visible = false;
}
myresa._visible = true;
_global.rectanguloprendido = proximo;
_root.makeStatus(proximo);
}
if(tecla == 37) // LEFT
{
if (_root.superdetails._visible == true) {
var tab = _root.superdetails.tab1._currentframe;
if(tab == 2) {
_root.superdetails.tab1.gotoAndStop(1);
_root.superdetails.tab2.gotoAndStop(2);
_root.superdetails.texto = _global.superdetailstexttab1;
} else {
_root.superdetails.tab1.gotoAndStop(2);
_root.superdetails.tab2.gotoAndStop(1);
_root.superdetails.texto = _global.superdetailstexttab2;
}
} else {
// Select next button on the LEFT
myapaga = eval('_root.resaltado'+_global.rectanguloprendido);
incremento = _root.cuantas_filas;
diferencia = _global.rectanguloprendido % _root.cuantas_filas;
proximo = _global.rectanguloprendido - incremento;
if(proximo < 1) {
proximo = ((_root.cuantas_columnas - 1) * _root.cuantas_filas)+diferencia;
}
var myresa = eval('_root.resaltado'+proximo);
if(_global.rectanguloprendido != _global.restrict) {
myapaga._visible = false;
}
myresa._visible = true;
_global.rectanguloprendido = proximo;
_root.makeStatus(proximo);
}
}
if(tecla == 39) // RIGHT
{
if(_root.detail._visible == true) {
_root.superdetails._visible = true;
_root.detail._visible = false;
} else if (_root.superdetails._visible == true) {
var tab = _root.superdetails.tab1._currentframe;
if(tab == 2) {
_root.superdetails.tab1.gotoAndStop(1);
_root.superdetails.tab2.gotoAndStop(2);
_root.superdetails.texto = _global.superdetailstexttab1;
} else {
_root.superdetails.tab1.gotoAndStop(2);
_root.superdetails.tab2.gotoAndStop(1);
_root.superdetails.texto = _global.superdetailstexttab2;
}
} else {
// Select next button on the RIGHT
myapaga = eval('_root.resaltado'+_global.rectanguloprendido);
total = _root.cuantas_filas * _root.cuantas_columnas;
incremento = _root.cuantas_filas;
diferencia = _global.rectanguloprendido % _root.cuantas_filas;
proximo = _global.rectanguloprendido + incremento;
if(proximo > total) {
proximo = 1+diferencia-1;
}
var myresa = eval('_root.resaltado'+proximo);
if(_global.rectanguloprendido != _global.restrict) {
myapaga._visible = false;
}
myresa._visible = true;
_global.rectanguloprendido = proximo;
_root.makeStatus(proximo);
}
}
if(tecla == 9) // TAB
{
myapaga = eval('_root.resaltado'+_global.rectanguloprendido);
total = _root.cuantas_filas * _root.cuantas_columnas;
if(_global.shift == 1) {
incremento = -1;
} else {
incremento = 1;
}
proximo = _global.rectanguloprendido + incremento;
if(proximo > total) {
proximo = 1;
}
if(proximo < 1) {
proximo = total;
}
var myresa = eval('_root.resaltado'+proximo);
if(_global.rectanguloprendido == _global.restrict) {
myapaga._visible = false;
}
myresa._visible = true;
_global.rectanguloprendido = proximo;
_root.makeStatus(proximo);
}
if(tecla == 27) // ESC
{
_root.codebox._visible = false;
_root.log._visible = false;
_root.detail._visible = false;
_root.superdetails._visible = false;
}
if(tecla == 18) // ALT
{
var myon = _global.rectanguloprendido;
if(myon>0) {
var myclip = eval('_level0.rectangulo'+myon+'.flecha'+myon);
_root.displaydetails(myclip);
}
}
if(tecla == 13) // ENTER
{
if(_root.codebox._visible == true) {
// The security code box is visible, sends code and hides it
_global.claveingresada = _root.codebox.claveform.text;
_root.codebox._visible = false;
_root.envia_comando('bogus', 0, 0);
} else {
// The security code is not visible, open detail windows of
// highlighted button
var myon = _global.rectanguloprendido;
if(myon>0) {
var myclip = eval('_level0.rectangulo'+myon+'.flecha'+myon);
_root.displaydetails(myclip);
}
}
}
};
Key.onKeyUp = function(){
var tecla = Key.getCode();
if(tecla == 16) {
_global.shift = 0;
}
};
Inicia_Variables();
conecta();
EndOfActionScript
# Saves the movie
$movie->nextFrame();
$movie->save("comunicator.swf",9);
op_panel-0.30/ming-source/README 0000644 0001750 0001750 00000000311 11217744021 016211 0 ustar alerios alerios I used MING from CVS as of 10/5/2004
You can find instructions and a ming perl mini howto at:
http://todbot.com/ming
My thanks to Tod E. Kurt for his advice and help for
porting the client to Ming.
op_panel-0.30/ming-source/operator_panel.pl 0000755 0001750 0001750 00001227076 11217744023 020731 0 ustar alerios alerios #!/usr/bin/perl -w
# Flash Operator Panel. http://www.asternic.org
#
# Copyright (c) 2004 Nicolas Gudino. All rights reserved.
#
# Nicolas Gudino
#
# This program is free software, distributed under the terms of
# the GNU General Public License.
#
# THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
use SWF qw(:ALL);
use SWF::Constants qw(:Text :Button :DisplayItem :Fill);
$stage_width = 996;
$stage_height = 600;
SWF::setScale(2);
SWF::useSWFVersion(7);
my $movie = new SWF::Movie();
$movie->setDimension($stage_width * 10, $stage_height * 10);
$movie->setBackground(0xFF, 0xFF, 0xFF);
$movie->setRate(20);
$fuente="/usr/src/ming/util/fonts/Arial.fdb";
$fuente_nombre="Arial";
sub maketextfield {
$name = shift;
$font = shift;
$str = shift;
$txtfield = new SWF::TextField( SWFTEXTFIELD_MULTILINE | SWFTEXTFIELD_WORDWRAP | SWFTEXTFIELD_USEFONT );
$txtfield->setHeight(254);
$txtfield->setBounds(200,30);
$txtfield->setName($name);
$txtfield->setColor(0x00, 0x00, 0x00);
$txtfield->setFont(new SWF::Font($font));
$txtfield->addChars("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff\x100\x101\x102\x103\x104\x105\x106\x107\x108\x109\x110\x111\x112\x113\x114\x115\x116\x116\x118\x119\x11a\x11b\x11c\x11d\x11e\x11f\x120\x121\x122\x123\x124\x125\x126\x127\x128\x129\x12a\x12b\x12c\x12d\x12e\x12f\x130\x131\x132\x133\x134\x135\x136\x137\x138\x139\x13a\x13b\x13c\x13d\x13e\x13f\x140\x141\x142\x143\x144\x145\x146\x147\x148\x149\x14a\x14b\x14c\x14d\x14e\x14f\x150\x151\x152\x153\x154\x155\x156\x157\x158\x159\x15a\x15b\x15c\x15d\x15e\x15f\x160\x161\x162\x163\x164\x165\x166\x167\x168\x169\x16a\x16b\x16c\x16d\x16e\x16f\x170\x171\x172\x173\x174\x175\x176\x177\x178\x179\x17a\x17b\x17c\x17d\x17e\x17f\x180\x181\x182\x183\x184\x185\x186\x187\x188\x189\x18a\x18b\x18c\x18d\x18e\x18f\x190\x191\x192\x193\x194\x195\x196\x197\x198\x199\x19a\x19b\x19c\x19d\x19e\x19f\x1a0\x1a1\x1a2\x1a3\x1a4\x1a5\x1a6\x1a7\x1a8\x1a9\x1aa\x1ab\x1ac\x1ad\x1ae\x1af\x1b0\x1b1\x1b2\x1b3\x1b4\x1b5\x1b6\x1b7\x1b8\x1b9\x1ba\x1bb\x1bc\x1bd\x1be\x1bf\x1c0\x1c1\x1c2\x1c3\x1c4\x1c5\x1c6\x1c7\x1c8\x1c9\x1ca\x1cb\x1cc\x1cd\x1ce\x1cf\x1d0\x1d1\x1d2\x1d3\x1d4\x1d5\x1d6\x1d7\x1d8\x1d9\x1da\x1db\x1dc\x1dd\x1de\x1df\x1e0\x1e1\x1e2\x1e3\x1e4\x1e5\x1e6\x1e7\x1e8\x1e9\x1ea\x1eb\x1ec\x1ed\x1ee\x1ef\x1f0\x1f1\x1f2\x1f3\x1f4\x1f5\x1f6\x1f7\x1f8\x1f9\x1fa\x1fb\x1fc\x1fd\x1fe\x1ff\x200\x201\x202\x203\x204\x205\x206\x207\x208\x209\x20a\x20b\x20c\x20d\x20e\x20f\x210\x211\x212\x213\x214\x215\x216\x217\x218\x219\x21a\x21b\x21c\x21d\x21e\x21f\x220\x221\x222\x223\x224\x225\x226\x227\x228\x229\x22a\x22b\x22c\x22d\x22e\x22f\x230\x231\x232\x233\x234\x235\x236\x237\x238\x239\x23a\x23b\x23c\x23d\x23e\x23f\x240\x241\x242\x243\x244\x245\x246\x247\x248\x249\x24a\x24b\x24c\x24d\x24e\x24f\x250\x251\x252\x253\x254\x255\x256\x257\x258\x259\x25a\x25b\x25c\x25d\x25e\x25f\x260\x261\x262\x263\x264\x265\x266\x267\x268\x269\x26a\x26b\x26c\x26d\x26e\x26f\x270\x271\x272\x273\x274\x275\x276\x277\x278\x279\x27a\x27b\x27c\x27d\x27e\x27f\x280\x281\x282\x283\x284\x285\x286\x287\x288\x289\x28a\x28b\x28c\x28d\x28e\x28f\x290\x291\x292\x293\x294\x295\x296\x297\x298\x299\x29a\x29b\x29c\x29d\x29e\x29f\x2a0\x2a1\x2a2\x2a3\x2a4\x2a5\x2a6\x2a7\x2a8\x2a9\x2aa\x2ab\x2ac\x2ad\x2ae\x2af\x2b0\x2b1\x2b2\x2b3\x2b4\x2b5\x2b6\x2b7\x2b8\x2b9");
$txtfield->addString($str);
return $txtfield;
}
$txtv = maketextfield("txtv",$fuente,"Nico");
$txt=$movie->add($txtv);
$txt->moveTo(-2400,-2800);
#$txt->moveTo(10,10);
$txt->setName("textoload");
#################################################
## SELECT TIMEOUT BOX
#################################################
$dropbox1 = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(5600, 0);
$s1->setRightFill(0xf2, 0xf2, 0xf6);
#$s1->setLine(1, 0xbe, 0xbe, 0xbe);
$s1->drawLine(0, 3400);
$s1->drawLine(-5600, 0);
#$s1->setLine(1, 0xf2, 0xf2, 0xf6);
$s1->drawLine(0, -3400);
$s1->drawLine(5600, 0);
### MovieClip 2 ###
$s2 = new SWF::MovieClip(); # 1 frames
$s2->add($s1);
$s2->nextFrame(); # end of clip frame 1
$i1 = $dropbox1->add($s2);
#$i1->scaleTo(0.714279, 0.105881);
$i1->scaleTo(0.328, 0.0635);
$i1->setName('bg');
### Shape 3 ###
# Scroll DOWN #
$s3 = new SWF::Shape();
$s3->movePenTo(320, 0);
$s3->setRightFill(0x6f, 0x7f, 0x7f);
$s3->setLine(1, 0xbe, 0xbe, 0xbe);
$s3->drawLine(0, 340);
$s3->drawLine(-320, 0);
$s3->setLine(0,0,0,0);
$s3->drawLine(0, -340);
$s3->drawLine(320, 0);
$s3->setLeftFill();
$s3->setRightFill();
$s3->setLine(0,0,0,0);
$s3->movePenTo(160, 220);
$s3->setRightFill(0x7f, 0x7f, 0x7f);
$s3->drawLine(-80, -80);
$s3->drawLine(160, 0);
$s3->drawLine(-80, 80);
### MovieClip 4 ###
$s4 = new SWF::MovieClip(); # 1 frames
$s4->add($s3);
$s4->add(new SWF::Action("
this.onPress = function() {
if(_parent._currentframe == 1) {
_root.despliega_select();
} else {
var incremento = 1;
var cuantashay = _global.opcionesTimeout.length;
cuantashay = cuantashay - 4;
if (_global.positionselect < cuantashay) {
for(a=0;a<5;a++) {
var indice = a + _global.positionselect;
if (_global.opcionesTimeout[indice] != undefined) {
_root['option'+a].legend = _global.opcionesTimeout[indice];
incremento = 1;
} else {
incremento = 0;
}
}
_global.positionselect=_global.positionselect+incremento;
}
}
};
"));
$s4->nextFrame(); # end of clip frame 1
### END SCROLL DOWN #####
#### SCROLL UP ######
### Shape 5 ###
$s5 = new SWF::Shape();
$s5->movePenTo(320, 0);
$s5->setRightFill(0x6f, 0x7f, 0x7f);
$s5->setLine(1, 0xbe, 0xbe, 0xbe);
$s5->drawLine(0, 340);
$s5->drawLine(-320, 0);
$s5->setLine(0,0,0,0);
$s5->drawLine(0, -340);
$s5->drawLine(320, 0);
$s5->setLeftFill();
$s5->setRightFill();
$s5->setLine(0,0,0,0);
$s5->movePenTo(160, 140);
$s5->setRightFill(0x7f, 0x7f, 0x7f);
$s5->drawLine(-80, 80);
$s5->drawLine(160, 0);
$s5->drawLine(-80, -80);
### MovieClip 6 ###
$s6 = new SWF::MovieClip(); # 1 frames
$s6->add($s5);
$s6->add(new SWF::Action("
this.onPress = function() {
var incremento = 1;
if (_global.positionselect > 0) {
for(a=0;a<5;a++) {
var indice = a + _global.positionselect - 1;
if (_global.opcionesTimeout[indice] != undefined) {
_root['option'+a].legend = _global.opcionesTimeout[indice];
incremento = -1;
} else {
incremento = 0;
}
}
_global.positionselect=_global.positionselect+incremento;
}
};
"));
$s6->nextFrame(); # end of clip frame 1
##### END SCROLL UP ######
$i3 = $dropbox1->add($s4);
$i3->moveTo(1640, 10);
$i3->scaleTo(0.6, 0.6);
$i3->setName('ScrollDown');
$dropbox1->nextFrame(); # end of frame 1
$dropbox1->remove($i3);
$i1 = $dropbox1->add($s2);
$i1->scaleTo(0.328, 0.4);
$i1->setName('bg');
$i3 = $dropbox1->add($s4);
$i3->moveTo(1640,1160);
$i3->scaleTo(0.6, 0.6);
$i3->setName('ScrollDown');
$i3 = $dropbox1->add($s6);
$i3->moveTo(1640, 10);
$i3->scaleTo(0.6, 0.6);
$i3->setName('ScrollUp');
$option = new SWF::MovieClip();
$i3 = $option->add($s2);
$i3->scaleTo(0.29, 0.0635);
$i3->setName('bg');
$font_general = new SWF::Font($fuente);
$s8 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_USEFONT | SWFTEXTFIELD_NOSELECT );
$s8->setBounds(1411, 398);
$s8->setFont($font_general);
#$s8->setFont(new SWF::Font("_sans"));
$s8->setHeight(180);
$s8->setColor(0x00, 0x00, 0x00, 0xff);
$s8->align(SWFTEXTFIELD_ALIGN_LEFT);
$s8->setName('legend');
$s8->addString('Select Timeout');
$i3 = $option->add($s8);
$i3->moveTo(70,10);
$option->nextFrame();
$dropbox1->nextFrame(); # end of frame 2
##################################################
# END SELECT TIMEOUT BOX
##################################################
## MovieCLIP progress graphic
##
$progressclip = new SWF::Sprite();
### Shape 2 ###
$s2 = new SWF::Shape();
$s2->movePenTo(140, -53);
$s2->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s2->setRightFill();
#$s2->setLine(0,0,0,0);
$s2->drawLine(140, -62);
$s2->drawLine(-40, -70);
$s2->drawLine(-124, 91);
$s2->drawCurve(16, 19, 8, 22);
$s2->movePenTo(95, -115);
$s2->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s2->setRightFill();
#$s2->setLine(0,255,255,255);
$s2->drawLine(90, -125);
$s2->drawLine(-70, -40);
$s2->drawLine(-62, 140);
$s2->drawLine(42, 25);
$s2->movePenTo(40, -300);
$s2->setLeftFill(0xff, 0xff, 0xff);
$s2->setRightFill();
#$s2->setLine(0,255,255,255);
$s2->drawLine(-80, 0);
$s2->drawLine(16, 152);
$s2->drawLine(23, -1);
$s2->drawLine(26, 2);
$s2->drawLine(15, -153);
$s2->movePenTo(148, -24);
$s2->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s2->setRightFill();
#$s2->setLine(0,255,255,255);
$s2->drawLine(2, 24);
$s2->drawLine(-2, 25);
$s2->drawLine(152, 15);
$s2->drawLine(0, -80);
$s2->drawLine(-152, 16);
$s2->movePenTo(280, 115);
$s2->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s2->setRightFill();
#$s2->setLine(0,0,0,0);
$s2->drawLine(-140, -62);
$s2->drawCurve(-8, 22, -16, 20);
$s2->drawLine(124, 90);
$s2->drawLine(40, -70);
$s2->movePenTo(53, 141);
$s2->setLeftFill(0xff, 0xff, 0xff, 0x8d);
$s2->setRightFill();
#$s2->setLine(0,0,0,0);
$s2->drawLine(62, 139);
$s2->drawLine(70, -40);
$s2->drawLine(-90, -124);
$s2->drawLine(-42, 25);
$s2->movePenTo(25, 149);
$s2->setLeftFill(0xff, 0xff, 0xff, 0x99);
$s2->setRightFill();
#$s2->setLine(0,0,0,0);
$s2->drawLine(-26, 2);
$s2->drawLine(-23, -2);
$s2->drawLine(-16, 151);
$s2->drawLine(80, 0);
$s2->drawLine(-15, -151);
$s2->movePenTo(-239, -185);
$s2->setLeftFill();
$s2->setRightFill(0xff, 0xff, 0xff, 0xcc);
#$s2->setLine(0,0,0,0);
$s2->drawLine(123, 90);
$s2->drawCurve(-17, 19, -8, 23);
$s2->drawLine(-138, -62);
$s2->drawLine(40, -70);
$s2->movePenTo(-53, -140);
$s2->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s2->setRightFill();
#$s2->setLine(0,0,0,0);
$s2->drawLine(-62, -140);
$s2->drawLine(-70, 40);
$s2->drawLine(90, 124);
$s2->drawCurve(19, -16, 23, -8);
$s2->movePenTo(-148, -24);
$s2->setLeftFill();
$s2->setRightFill(0xff, 0xff, 0xff, 0xc0);
#$s2->setLine(0,0,0,0);
$s2->drawLine(-2, 24);
$s2->drawLine(2, 25);
$s2->drawLine(-152, 15);
$s2->drawLine(0, -80);
$s2->drawLine(152, 16);
$s2->movePenTo(-141, 53);
$s2->setLeftFill(0xff, 0xff, 0xff, 0xb3);
$s2->setRightFill();
#$s2->setLine(0,0,0,0);
$s2->drawLine(-138, 62);
$s2->drawLine(40, 70);
$s2->drawLine(123, -89);
$s2->drawLine(-25, -43);
$s2->movePenTo(-95, 117);
$s2->setLeftFill(0xff, 0xff, 0xff, 0xa6);
$s2->setRightFill();
#$s2->setLine(0,0,0,0);
$s2->drawLine(-90, 123);
$s2->drawLine(70, 40);
$s2->drawLine(62, -138);
$s2->drawCurve(-23, -9, -19, -16);
### Shape 3 ###
$s3 = new SWF::Shape();
$s3->movePenTo(116, -94);
$s3->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s3->setRightFill();
#$s3->setLine(0,0,0,0);
$s3->drawCurve(16, 19, 8, 22);
$s3->drawLine(140, -62);
$s3->drawLine(-40, -70);
$s3->drawLine(-124, 90);
$s3->drawLine(0, 1);
$s3->movePenTo(185, -240);
$s3->setLeftFill(0xff, 0xff, 0xff);
$s3->setRightFill();
#$s3->setLine(0,0,0,0);
$s3->drawLine(-69, -40);
$s3->drawLine(-63, 140);
$s3->drawLine(42, 25);
$s3->drawLine(90, -125);
$s3->movePenTo(40, -300);
$s3->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s3->setRightFill();
#$s3->setLine(0,0,0,0);
$s3->drawLine(-80, 0);
$s3->drawLine(16, 152);
$s3->drawLine(23, -1);
$s3->drawLine(25, 2);
$s3->drawLine(16, -153);
$s3->movePenTo(148, -24);
$s3->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s3->setRightFill();
#$s3->setLine(0,0,0,0);
$s3->drawLine(2, 24);
$s3->drawLine(-2, 24);
$s3->drawLine(152, 16);
$s3->drawLine(1, -80);
$s3->drawLine(-153, 16);
$s3->movePenTo(280, 116);
$s3->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s3->setRightFill();
#$s3->setLine(0,0,0,0);
$s3->drawLine(-140, -63);
$s3->drawCurve(-8, 22, -16, 20);
$s3->drawLine(124, 90);
$s3->drawLine(40, -69);
$s3->movePenTo(95, 116);
$s3->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s3->setRightFill();
#$s3->setLine(0,0,0,0);
$s3->drawLine(-41, 25);
$s3->drawLine(62, 139);
$s3->drawLine(69, -40);
$s3->drawLine(-90, -124);
$s3->movePenTo(40, 300);
$s3->setLeftFill();
$s3->setRightFill(0xff, 0xff, 0xff, 0x8d);
#$s3->setLine(0,0,0,0);
$s3->drawLine(-80, 0);
$s3->drawLine(16, -151);
$s3->drawLine(23, 2);
$s3->drawLine(25, -2);
$s3->drawLine(16, 151);
$s3->movePenTo(-240, -184);
$s3->setLeftFill();
$s3->setRightFill(0xff, 0xff, 0xff, 0xc0);
#$s3->setLine(0,0,0,0);
$s3->drawLine(124, 89);
$s3->drawCurve(-17, 19, -8, 23);
$s3->drawLine(-139, -62);
$s3->drawLine(40, -69);
$s3->movePenTo(-52, -140);
$s3->setLeftFill(0xff, 0xff, 0xff, 0xcc);
$s3->setRightFill();
#$s3->setLine(0,0,0,0);
$s3->drawLine(-63, -140);
$s3->drawLine(-69, 40);
$s3->drawLine(89, 124);
$s3->drawCurve(19, -16, 23, -8);
$s3->drawLine(1, 0);
$s3->movePenTo(-148, -24);
$s3->setLeftFill();
$s3->setRightFill(0xff, 0xff, 0xff, 0xb3);
#$s3->setLine(0,0,0,0);
$s3->drawLine(-2, 24);
$s3->drawLine(2, 24);
$s3->drawLine(-151, 16);
$s3->drawLine(0, -80);
$s3->drawLine(151, 16);
$s3->movePenTo(-141, 53);
$s3->setLeftFill(0xff, 0xff, 0xff, 0xa6);
$s3->setRightFill();
#$s3->setLine(0,0,0,0);
$s3->drawLine(-139, 62);
$s3->drawLine(40, 70);
$s3->drawLine(124, -89);
$s3->drawLine(-25, -43);
$s3->movePenTo(-95, 117);
$s3->setLeftFill(0xff, 0xff, 0xff, 0x99);
$s3->setRightFill();
#$s3->setLine(0,0,0,0);
$s3->drawLine(-89, 123);
$s3->drawLine(69, 40);
$s3->drawLine(62, -138);
$s3->drawCurve(-23, -9, -19, -16);
### Shape 4 ###
$s4 = new SWF::Shape();
$s4->movePenTo(25, -147);
$s4->setLeftFill(0xff, 0xff, 0xff, 0xcc);
$s4->setRightFill();
#$s4->setLine(0,0,0,0);
$s4->drawLine(16, -153);
$s4->drawLine(-81, 0);
$s4->drawLine(16, 152);
$s4->drawLine(23, -1);
$s4->drawLine(25, 2);
$s4->drawLine(1, 0);
$s4->movePenTo(116, -94);
$s4->setLeftFill(0xff, 0xff, 0xff);
$s4->setRightFill();
#$s4->setLine(0,0,0,0);
$s4->drawCurve(16, 19, 8, 22);
$s4->drawLine(0, 1);
$s4->drawLine(140, -63);
$s4->drawLine(-40, -69);
$s4->drawLine(-124, 89);
$s4->drawLine(0, 1);
$s4->movePenTo(185, -240);
$s4->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s4->setRightFill();
#$s4->setLine(0,0,0,0);
$s4->drawLine(-69, -40);
$s4->drawLine(-63, 140);
$s4->drawLine(41, 25);
$s4->drawLine(91, -125);
$s4->movePenTo(148, -24);
$s4->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s4->setRightFill();
#$s4->setLine(0,0,0,0);
$s4->drawLine(2, 24);
$s4->drawLine(-2, 24);
$s4->drawLine(152, 16);
$s4->drawLine(0, -80);
$s4->drawLine(-152, 16);
$s4->movePenTo(280, 116);
$s4->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s4->setRightFill();
#$s4->setLine(0,0,0,0);
$s4->drawLine(-140, -63);
$s4->drawCurve(-8, 22, -16, 20);
$s4->drawLine(124, 90);
$s4->drawLine(40, -69);
$s4->movePenTo(95, 116);
$s4->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s4->setRightFill();
#$s4->setLine(0,0,0,0);
$s4->drawLine(-41, 25);
$s4->drawLine(-1, 0);
$s4->drawLine(63, 139);
$s4->drawLine(69, -40);
$s4->drawLine(-90, -124);
$s4->movePenTo(24, 149);
$s4->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s4->setRightFill();
#$s4->setLine(0,0,0,0);
$s4->drawLine(-25, 2);
$s4->drawLine(-23, -2);
$s4->drawLine(-16, 151);
$s4->drawLine(81, 0);
$s4->drawLine(-16, -151);
$s4->drawLine(-1, 0);
$s4->movePenTo(-239, -184);
$s4->setLeftFill();
$s4->setRightFill(0xff, 0xff, 0xff, 0xb3);
#$s4->setLine(0,0,0,0);
$s4->drawLine(123, 89);
$s4->drawCurve(-17, 19, -8, 23);
$s4->drawLine(-138, -62);
$s4->drawLine(40, -69);
$s4->movePenTo(-53, -140);
$s4->setLeftFill(0xff, 0xff, 0xff, 0xc0);
$s4->setRightFill();
#$s4->setLine(0,0,0,0);
$s4->drawLine(-62, -140);
$s4->drawLine(-69, 40);
$s4->drawLine(89, 124);
$s4->drawCurve(19, -16, 23, -8);
$s4->movePenTo(-148, -24);
$s4->setLeftFill();
$s4->setRightFill(0xff, 0xff, 0xff, 0xa6);
#$s4->setLine(0,0,0,0);
$s4->drawLine(-2, 24);
$s4->drawLine(2, 24);
$s4->drawLine(0, 1);
$s4->drawLine(-152, 15);
$s4->drawLine(0, -80);
$s4->drawLine(152, 16);
$s4->movePenTo(-141, 53);
$s4->setLeftFill(0xff, 0xff, 0xff, 0x99);
$s4->setRightFill();
#$s4->setLine(0,0,0,0);
$s4->drawLine(-139, 63);
$s4->drawLine(40, 69);
$s4->drawLine(124, -89);
$s4->drawLine(-25, -43);
$s4->movePenTo(-95, 117);
$s4->setLeftFill(0xff, 0xff, 0xff, 0x8d);
$s4->setRightFill();
#$s4->setLine(0,0,0,0);
$s4->drawLine(-89, 123);
$s4->drawLine(69, 40);
$s4->drawLine(62, -138);
$s4->drawCurve(-23, -9, -19, -16);
### Shape 5 ###
$s5 = new SWF::Shape();
$s5->movePenTo(25, -147);
$s5->setLeftFill(0xff, 0xff, 0xff, 0xc0);
$s5->setRightFill();
#$s5->setLine(0,0,0,0);
$s5->drawLine(15, -153);
$s5->drawLine(-80, 0);
$s5->drawLine(16, 152);
$s5->drawLine(23, -1);
$s5->drawLine(25, 2);
$s5->drawLine(1, 0);
$s5->movePenTo(95, -115);
$s5->setLeftFill(0xff, 0xff, 0xff, 0xcc);
$s5->setRightFill();
#$s5->setLine(0,0,0,0);
$s5->drawLine(90, -124);
$s5->drawLine(-69, -41);
$s5->drawLine(-63, 140);
$s5->drawLine(41, 25);
$s5->drawLine(1, 0);
$s5->movePenTo(140, -53);
$s5->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s5->setRightFill();
#$s5->setLine(0,0,0,0);
$s5->drawLine(140, -62);
$s5->drawLine(-40, -69);
$s5->drawLine(-124, 89);
$s5->drawLine(0, 1);
$s5->drawLine(24, 41);
$s5->movePenTo(148, -24);
$s5->setLeftFill(0xff, 0xff, 0xff);
$s5->setRightFill();
#$s5->setLine(0,0,0,0);
$s5->drawLine(2, 24);
$s5->drawLine(-2, 24);
$s5->drawLine(0, 1);
$s5->drawLine(152, 15);
$s5->drawLine(0, -80);
$s5->drawLine(-152, 16);
$s5->movePenTo(280, 115);
$s5->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s5->setRightFill();
#$s5->setLine(0,0,0,0);
$s5->drawLine(-140, -62);
$s5->drawCurve(-8, 22, -16, 20);
$s5->drawLine(124, 90);
$s5->drawLine(40, -70);
$s5->movePenTo(95, 116);
$s5->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s5->setRightFill();
#$s5->setLine(0,0,0,0);
$s5->drawLine(-41, 25);
$s5->drawLine(62, 139);
$s5->drawLine(69, -40);
$s5->drawLine(-90, -124);
$s5->movePenTo(24, 149);
$s5->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s5->setRightFill();
#$s5->setLine(0,0,0,0);
$s5->drawLine(-25, 2);
$s5->drawLine(-23, -2);
$s5->drawLine(-16, 151);
$s5->drawLine(80, 0);
$s5->drawLine(-15, -151);
$s5->drawLine(-1, 0);
$s5->movePenTo(-239, -185);
$s5->setLeftFill();
$s5->setRightFill(0xff, 0xff, 0xff, 0xa6);
#$s5->setLine(0,0,0,0);
$s5->drawLine(123, 90);
$s5->drawCurve(-17, 19, -8, 23);
$s5->drawLine(-139, -62);
$s5->drawLine(41, -70);
$s5->movePenTo(-52, -140);
$s5->setLeftFill(0xff, 0xff, 0xff, 0xb3);
$s5->setRightFill();
#$s5->setLine(0,0,0,0);
$s5->drawLine(-63, -139);
$s5->drawLine(-69, 40);
$s5->drawLine(89, 123);
$s5->drawCurve(19, -16, 23, -8);
$s5->drawLine(1, 0);
$s5->movePenTo(-148, -24);
$s5->setLeftFill();
$s5->setRightFill(0xff, 0xff, 0xff, 0x99);
#$s5->setLine(0,0,0,0);
$s5->drawLine(-2, 24);
$s5->drawLine(2, 24);
$s5->drawLine(0, 1);
$s5->drawLine(-152, 15);
$s5->drawLine(0, -80);
$s5->drawLine(152, 16);
$s5->movePenTo(-141, 53);
$s5->setLeftFill(0xff, 0xff, 0xff, 0x8d);
$s5->setRightFill();
#$s5->setLine(0,0,0,0);
$s5->drawLine(-138, 62);
$s5->drawLine(40, 70);
$s5->drawLine(123, -89);
$s5->drawLine(-25, -43);
$s5->movePenTo(-53, 142);
$s5->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s5->setRightFill();
#$s5->setLine(0,0,0,0);
$s5->drawCurve(-23, -9, -19, -16);
$s5->drawLine(-89, 123);
$s5->drawLine(69, 40);
$s5->drawLine(62, -138);
### Shape 6 ###
$s6 = new SWF::Shape();
$s6->movePenTo(25, -147);
$s6->setLeftFill(0xff, 0xff, 0xff, 0xb3);
$s6->setRightFill();
#$s6->setLine(0,0,0,0);
$s6->drawLine(15, -152);
$s6->drawLine(-80, 0);
$s6->drawLine(16, 151);
$s6->drawLine(23, -1);
$s6->drawLine(25, 2);
$s6->drawLine(1, 0);
$s6->movePenTo(95, -115);
$s6->setLeftFill(0xff, 0xff, 0xff, 0xc0);
$s6->setRightFill();
#$s6->setLine(0,0,0,0);
$s6->drawLine(90, -125);
$s6->drawLine(-69, -40);
$s6->drawLine(-63, 140);
$s6->drawLine(41, 25);
$s6->drawLine(1, 0);
$s6->movePenTo(140, -52);
$s6->setLeftFill(0xff, 0xff, 0xff, 0xcc);
$s6->setRightFill();
#$s6->setLine(0,0,0,0);
$s6->drawLine(140, -63);
$s6->drawLine(-40, -69);
$s6->drawLine(-124, 89);
$s6->drawLine(0, 1);
$s6->drawLine(24, 41);
$s6->drawLine(0, 1);
$s6->movePenTo(148, -24);
$s6->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s6->setRightFill();
#$s6->setLine(0,0,0,0);
$s6->drawLine(2, 24);
$s6->drawLine(-2, 24);
$s6->drawLine(152, 16);
$s6->drawLine(0, -80);
$s6->drawLine(-152, 16);
$s6->movePenTo(280, 116);
$s6->setLeftFill(0xff, 0xff, 0xff);
$s6->setRightFill();
#$s6->setLine(0,0,0,0);
$s6->drawLine(-140, -63);
$s6->drawCurve(-8, 22, -16, 20);
$s6->drawLine(124, 90);
$s6->drawLine(40, -69);
$s6->movePenTo(95, 116);
$s6->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s6->setRightFill();
#$s6->setLine(0,0,0,0);
$s6->drawLine(-41, 25);
$s6->drawLine(62, 139);
$s6->drawLine(69, -40);
$s6->drawLine(-90, -124);
$s6->movePenTo(24, 149);
$s6->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s6->setRightFill();
#$s6->setLine(0,0,0,0);
$s6->drawLine(-25, 2);
$s6->drawLine(-23, -2);
$s6->drawLine(-16, 151);
$s6->drawLine(80, 0);
$s6->drawLine(-15, -151);
$s6->drawLine(-1, 0);
$s6->movePenTo(-240, -184);
$s6->setLeftFill();
$s6->setRightFill(0xff, 0xff, 0xff, 0x99);
#$s6->setLine(0,0,0,0);
$s6->drawLine(124, 89);
$s6->drawCurve(-17, 19, -8, 23);
$s6->drawLine(-139, -62);
$s6->drawLine(40, -69);
$s6->movePenTo(-52, -140);
$s6->setLeftFill(0xff, 0xff, 0xff, 0xa6);
$s6->setRightFill();
#$s6->setLine(0,0,0,0);
$s6->drawLine(-63, -140);
$s6->drawLine(-69, 40);
$s6->drawLine(89, 124);
$s6->drawCurve(19, -16, 23, -8);
$s6->drawLine(1, 0);
$s6->movePenTo(-148, -24);
$s6->setLeftFill();
$s6->setRightFill(0xff, 0xff, 0xff, 0x8d);
#$s6->setLine(0,0,0,0);
$s6->drawLine(-2, 24);
$s6->drawLine(2, 24);
$s6->drawLine(-151, 16);
$s6->drawLine(0, -80);
$s6->drawLine(151, 16);
$s6->movePenTo(-95, 117);
$s6->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s6->setRightFill();
#$s6->setLine(0,0,0,0);
$s6->drawLine(-89, 123);
$s6->drawLine(69, 40);
$s6->drawLine(62, -138);
$s6->drawCurve(-23, -9, -19, -16);
$s6->movePenTo(-141, 54);
$s6->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s6->setRightFill();
#$s6->setLine(0,0,0,0);
$s6->drawLine(-139, 62);
$s6->drawLine(41, 69);
$s6->drawLine(123, -89);
$s6->drawLine(-25, -42);
### Shape 7 ###
$s7 = new SWF::Shape();
$s7->movePenTo(25, -147);
$s7->setLeftFill(0xff, 0xff, 0xff, 0xa6);
$s7->setRightFill();
#$s7->setLine(0,0,0,0);
$s7->drawLine(16, -153);
$s7->drawLine(-81, 0);
$s7->drawLine(16, 152);
$s7->drawLine(23, -1);
$s7->drawLine(25, 2);
$s7->drawLine(1, 0);
$s7->movePenTo(95, -115);
$s7->setLeftFill(0xff, 0xff, 0xff, 0xb3);
$s7->setRightFill();
#$s7->setLine(0,0,0,0);
$s7->drawLine(90, -124);
$s7->drawLine(-70, -40);
$s7->drawLine(-62, 139);
$s7->drawLine(41, 25);
$s7->drawLine(1, 0);
$s7->movePenTo(140, -52);
$s7->setLeftFill(0xff, 0xff, 0xff, 0xc0);
$s7->setRightFill();
#$s7->setLine(0,0,0,0);
$s7->drawLine(140, -63);
$s7->drawLine(-40, -69);
$s7->drawLine(-124, 90);
$s7->drawLine(24, 41);
$s7->drawLine(0, 1);
$s7->movePenTo(300, -40);
$s7->setLeftFill();
$s7->setRightFill(0xff, 0xff, 0xff, 0xcc);
#$s7->setLine(0,0,0,0);
$s7->drawLine(0, 81);
$s7->drawLine(-152, -16);
$s7->drawLine(0, -1);
$s7->drawLine(2, -24);
$s7->drawLine(-2, -24);
$s7->drawLine(152, -16);
$s7->movePenTo(280, 116);
$s7->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s7->setRightFill();
#$s7->setLine(0,0,0,0);
$s7->drawLine(-140, -63);
$s7->drawCurve(-8, 22, -16, 20);
$s7->drawLine(124, 90);
$s7->drawLine(40, -69);
$s7->movePenTo(95, 116);
$s7->setLeftFill(0xff, 0xff, 0xff);
$s7->setRightFill();
#$s7->setLine(0,0,0,0);
$s7->drawLine(-41, 25);
$s7->drawLine(-1, 0);
$s7->drawLine(63, 139);
$s7->drawLine(69, -40);
$s7->drawLine(-90, -124);
$s7->movePenTo(24, 149);
$s7->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s7->setRightFill();
#$s7->setLine(0,0,0,0);
$s7->drawLine(-25, 2);
$s7->drawLine(-23, -2);
$s7->drawLine(-16, 151);
$s7->drawLine(81, 0);
$s7->drawLine(-16, -151);
$s7->drawLine(-1, 0);
$s7->movePenTo(-239, -184);
$s7->setLeftFill();
$s7->setRightFill(0xff, 0xff, 0xff, 0x8d);
#$s7->setLine(0,0,0,0);
$s7->drawLine(123, 89);
$s7->drawCurve(-17, 19, -8, 23);
$s7->drawLine(-138, -62);
$s7->drawLine(40, -69);
$s7->movePenTo(-53, -140);
$s7->setLeftFill(0xff, 0xff, 0xff, 0x99);
$s7->setRightFill();
#$s7->setLine(0,0,0,0);
$s7->drawLine(-62, -140);
$s7->drawLine(-69, 40);
$s7->drawLine(89, 124);
$s7->drawCurve(19, -16, 23, -8);
$s7->movePenTo(-300, -40);
$s7->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s7->setRightFill();
#$s7->setLine(0,0,0,0);
$s7->drawLine(0, 81);
$s7->drawLine(152, -16);
$s7->drawLine(0, -1);
$s7->drawLine(-2, -24);
$s7->drawLine(2, -24);
$s7->drawLine(-152, -16);
$s7->movePenTo(-141, 53);
$s7->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s7->setRightFill();
#$s7->setLine(0,0,0,0);
$s7->drawLine(-139, 63);
$s7->drawLine(40, 69);
$s7->drawLine(124, -89);
$s7->drawLine(-25, -43);
$s7->movePenTo(-53, 142);
$s7->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s7->setRightFill();
#$s7->setLine(0,0,0,0);
$s7->drawCurve(-23, -9, -19, -16);
$s7->drawLine(-89, 123);
$s7->drawLine(69, 40);
$s7->drawLine(62, -138);
### Shape 8 ###
$s8 = new SWF::Shape();
$s8->movePenTo(25, -147);
$s8->setLeftFill(0xff, 0xff, 0xff, 0x99);
$s8->setRightFill();
#$s8->setLine(0,0,0,0);
$s8->drawLine(15, -153);
$s8->drawLine(-80, 0);
$s8->drawLine(16, 152);
$s8->drawLine(23, -1);
$s8->drawLine(25, 2);
$s8->drawLine(1, 0);
$s8->movePenTo(95, -115);
$s8->setLeftFill(0xff, 0xff, 0xff, 0xa6);
$s8->setRightFill();
#$s8->setLine(0,0,0,0);
$s8->drawLine(90, -124);
$s8->drawLine(-69, -41);
$s8->drawLine(-63, 140);
$s8->drawLine(41, 25);
$s8->drawLine(1, 0);
$s8->movePenTo(140, -52);
$s8->setLeftFill(0xff, 0xff, 0xff, 0xb3);
$s8->setRightFill();
#$s8->setLine(0,0,0,0);
$s8->drawLine(140, -63);
$s8->drawLine(-40, -69);
$s8->drawLine(-124, 90);
$s8->drawLine(24, 41);
$s8->drawLine(0, 1);
$s8->movePenTo(300, -40);
$s8->setLeftFill();
$s8->setRightFill(0xff, 0xff, 0xff, 0xc0);
#$s8->setLine(0,0,0,0);
$s8->drawLine(0, 80);
$s8->drawLine(-152, -15);
$s8->drawLine(0, -1);
$s8->drawLine(2, -24);
$s8->drawLine(-2, -24);
$s8->drawLine(152, -16);
$s8->movePenTo(240, 185);
$s8->setLeftFill();
$s8->setRightFill(0xff, 0xff, 0xff, 0xcc);
#$s8->setLine(0,0,0,0);
$s8->drawLine(-124, -90);
$s8->drawCurve(16, -20, 8, -22);
$s8->drawLine(140, 63);
$s8->drawLine(-40, 69);
$s8->movePenTo(95, 116);
$s8->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s8->setRightFill();
#$s8->setLine(0,0,0,0);
$s8->drawLine(-41, 25);
$s8->drawLine(62, 139);
$s8->drawLine(69, -40);
$s8->drawLine(-90, -124);
$s8->movePenTo(24, 149);
$s8->setLeftFill(0xff, 0xff, 0xff);
$s8->setRightFill();
#$s8->setLine(0,0,0,0);
$s8->drawLine(-25, 2);
$s8->drawLine(-23, -2);
$s8->drawLine(-16, 151);
$s8->drawLine(80, 0);
$s8->drawLine(-15, -151);
$s8->drawLine(-1, 0);
$s8->movePenTo(-280, -115);
$s8->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s8->setRightFill();
#$s8->setLine(0,0,0,0);
$s8->drawLine(139, 62);
$s8->drawCurve(8, -23, 17, -19);
$s8->drawLine(-124, -89);
$s8->drawLine(-40, 69);
$s8->movePenTo(-52, -140);
$s8->setLeftFill(0xff, 0xff, 0xff, 0x8d);
$s8->setRightFill();
#$s8->setLine(0,0,0,0);
$s8->drawLine(-63, -139);
$s8->drawLine(-69, 40);
$s8->drawLine(89, 123);
$s8->drawCurve(19, -16, 23, -8);
$s8->drawLine(1, 0);
$s8->movePenTo(-300, -40);
$s8->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s8->setRightFill();
#$s8->setLine(0,0,0,0);
$s8->drawLine(0, 80);
$s8->drawLine(152, -15);
$s8->drawLine(0, -1);
$s8->drawLine(-2, -24);
$s8->drawLine(2, -24);
$s8->drawLine(-152, -16);
$s8->movePenTo(-140, 54);
$s8->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s8->setRightFill();
#$s8->setLine(0,0,0,0);
$s8->drawLine(-140, 62);
$s8->drawLine(40, 69);
$s8->drawLine(124, -89);
$s8->drawCurve(-17, -20, -7, -22);
$s8->movePenTo(-53, 142);
$s8->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s8->setRightFill();
#$s8->setLine(0,0,0,0);
$s8->drawCurve(-23, -9, -19, -16);
$s8->drawLine(-89, 123);
$s8->drawLine(69, 40);
$s8->drawLine(62, -138);
### Shape 9 ###
$s9 = new SWF::Shape();
$s9->movePenTo(25, -147);
$s9->setLeftFill(0xff, 0xff, 0xff, 0x8d);
$s9->setRightFill();
#$s9->setLine(0,0,0,0);
$s9->drawLine(15, -152);
$s9->drawLine(-80, 0);
$s9->drawLine(16, 151);
$s9->drawLine(23, -1);
$s9->drawLine(25, 2);
$s9->drawLine(1, 0);
$s9->movePenTo(95, -115);
$s9->setLeftFill(0xff, 0xff, 0xff, 0x99);
$s9->setRightFill();
#$s9->setLine(0,0,0,0);
$s9->drawLine(90, -125);
$s9->drawLine(-69, -40);
$s9->drawLine(-63, 140);
$s9->drawLine(41, 25);
$s9->drawLine(1, 0);
$s9->movePenTo(140, -52);
$s9->setLeftFill(0xff, 0xff, 0xff, 0xa6);
$s9->setRightFill();
#$s9->setLine(0,0,0,0);
$s9->drawLine(140, -63);
$s9->drawLine(-40, -69);
$s9->drawLine(-124, 89);
$s9->drawLine(0, 1);
$s9->drawLine(24, 41);
$s9->drawLine(0, 1);
$s9->movePenTo(300, -40);
$s9->setLeftFill();
$s9->setRightFill(0xff, 0xff, 0xff, 0xb3);
#$s9->setLine(0,0,0,0);
$s9->drawLine(0, 80);
$s9->drawLine(-152, -15);
$s9->drawLine(0, -1);
$s9->drawLine(2, -24);
$s9->drawLine(-2, -24);
$s9->drawLine(152, -16);
$s9->movePenTo(240, 185);
$s9->setLeftFill();
$s9->setRightFill(0xff, 0xff, 0xff, 0xc0);
#$s9->setLine(0,0,0,0);
$s9->drawLine(-124, -90);
$s9->drawCurve(16, -20, 8, -22);
$s9->drawLine(140, 63);
$s9->drawLine(-40, 69);
$s9->movePenTo(95, 116);
$s9->setLeftFill(0xff, 0xff, 0xff, 0xcc);
$s9->setRightFill();
#$s9->setLine(0,0,0,0);
$s9->drawLine(-41, 25);
$s9->drawLine(-1, 0);
$s9->drawLine(62, 139);
$s9->drawLine(70, -40);
$s9->drawLine(-90, -124);
$s9->movePenTo(24, 149);
$s9->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s9->setRightFill();
#$s9->setLine(0,0,0,0);
$s9->drawLine(-25, 2);
$s9->drawLine(-23, -2);
$s9->drawLine(-16, 151);
$s9->drawLine(80, 0);
$s9->drawLine(-15, -151);
$s9->drawLine(-1, 0);
$s9->movePenTo(-280, -115);
$s9->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s9->setRightFill();
#$s9->setLine(0,0,0,0);
$s9->drawLine(139, 62);
$s9->drawCurve(8, -23, 17, -19);
$s9->drawLine(-124, -89);
$s9->drawLine(-40, 69);
$s9->movePenTo(-53, -140);
$s9->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s9->setRightFill();
#$s9->setLine(0,0,0,0);
$s9->drawLine(-62, -140);
$s9->drawLine(-70, 41);
$s9->drawLine(90, 123);
$s9->drawCurve(19, -16, 23, -8);
$s9->movePenTo(-300, -40);
$s9->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s9->setRightFill();
#$s9->setLine(0,0,0,0);
$s9->drawLine(0, 80);
$s9->drawLine(152, -15);
$s9->drawLine(0, -1);
$s9->drawLine(-2, -24);
$s9->drawLine(2, -24);
$s9->drawLine(-152, -16);
$s9->movePenTo(-95, 117);
$s9->setLeftFill(0xff, 0xff, 0xff);
$s9->setRightFill();
#$s9->setLine(0,0,0,0);
$s9->drawLine(-89, 123);
$s9->drawLine(69, 40);
$s9->drawLine(62, -138);
$s9->drawCurve(-23, -9, -19, -16);
$s9->movePenTo(-141, 54);
$s9->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s9->setRightFill();
#$s9->setLine(0,0,0,0);
$s9->drawLine(-139, 62);
$s9->drawLine(41, 69);
$s9->drawLine(123, -89);
$s9->drawLine(-25, -42);
### Shape 10 ###
$s10 = new SWF::Shape();
$s10->movePenTo(95, -115);
$s10->setLeftFill(0xff, 0xff, 0xff, 0x8d);
$s10->setRightFill();
#$s10->setLine(0,0,0,0);
$s10->drawLine(90, -124);
$s10->drawLine(-70, -40);
$s10->drawLine(-62, 139);
$s10->drawLine(41, 25);
$s10->drawLine(1, 0);
$s10->movePenTo(140, -52);
$s10->setLeftFill(0xff, 0xff, 0xff, 0x99);
$s10->setRightFill();
#$s10->setLine(0,0,0,0);
$s10->drawLine(140, -63);
$s10->drawLine(-40, -69);
$s10->drawLine(-124, 90);
$s10->drawLine(24, 41);
$s10->drawLine(0, 1);
$s10->movePenTo(300, -40);
$s10->setLeftFill();
$s10->setRightFill(0xff, 0xff, 0xff, 0xa6);
#$s10->setLine(0,0,0,0);
$s10->drawLine(0, 81);
$s10->drawLine(-152, -16);
$s10->drawLine(0, -1);
$s10->drawLine(2, -24);
$s10->drawLine(-2, -24);
$s10->drawLine(152, -16);
$s10->movePenTo(40, -300);
$s10->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s10->setRightFill();
#$s10->setLine(0,0,0,0);
$s10->drawLine(-80, 0);
$s10->drawLine(16, 152);
$s10->drawLine(23, -1);
$s10->drawLine(25, 2);
$s10->drawLine(16, -153);
$s10->movePenTo(240, 185);
$s10->setLeftFill();
$s10->setRightFill(0xff, 0xff, 0xff, 0xb3);
#$s10->setLine(0,0,0,0);
$s10->drawLine(-124, -90);
$s10->drawCurve(16, -20, 8, -22);
$s10->drawLine(140, 62);
$s10->drawLine(-40, 70);
$s10->movePenTo(95, 116);
$s10->setLeftFill(0xff, 0xff, 0xff, 0xc0);
$s10->setRightFill();
#$s10->setLine(0,0,0,0);
$s10->drawLine(-41, 25);
$s10->drawLine(-1, 0);
$s10->drawLine(63, 139);
$s10->drawLine(69, -40);
$s10->drawLine(-90, -124);
$s10->movePenTo(24, 149);
$s10->setLeftFill(0xff, 0xff, 0xff, 0xcc);
$s10->setRightFill();
#$s10->setLine(0,0,0,0);
$s10->drawLine(-25, 2);
$s10->drawLine(-23, -2);
$s10->drawLine(-16, 151);
$s10->drawLine(80, 0);
$s10->drawLine(-15, -151);
$s10->drawLine(-1, 0);
$s10->movePenTo(-280, -115);
$s10->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s10->setRightFill();
#$s10->setLine(0,0,0,0);
$s10->drawLine(139, 62);
$s10->drawCurve(8, -23, 16, -19);
$s10->drawLine(-123, -89);
$s10->drawLine(-40, 69);
$s10->movePenTo(-53, -140);
$s10->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s10->setRightFill();
#$s10->setLine(0,0,0,0);
$s10->drawLine(-62, -140);
$s10->drawLine(-69, 40);
$s10->drawLine(89, 124);
$s10->drawCurve(19, -16, 23, -8);
$s10->movePenTo(-300, -40);
$s10->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s10->setRightFill();
#$s10->setLine(0,0,0,0);
$s10->drawLine(0, 81);
$s10->drawLine(152, -16);
$s10->drawLine(0, -1);
$s10->drawLine(-2, -24);
$s10->drawLine(2, -24);
$s10->drawLine(-152, -16);
$s10->movePenTo(-141, 53);
$s10->setLeftFill(0xff, 0xff, 0xff);
$s10->setRightFill();
#$s10->setLine(0,0,0,0);
$s10->drawLine(-139, 63);
$s10->drawLine(40, 69);
$s10->drawLine(124, -89);
$s10->drawLine(-25, -43);
$s10->movePenTo(-53, 142);
$s10->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s10->setRightFill();
#$s10->setLine(0,0,0,0);
$s10->drawCurve(-23, -9, -19, -16);
$s10->drawLine(-89, 123);
$s10->drawLine(69, 40);
$s10->drawLine(62, -138);
### Shape 11 ###
$s11 = new SWF::Shape();
$s11->movePenTo(25, -147);
$s11->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s11->setRightFill();
#$s11->setLine(0,0,0,0);
$s11->drawLine(15, -153);
$s11->drawLine(-80, 0);
$s11->drawLine(16, 152);
$s11->drawLine(23, -1);
$s11->drawLine(25, 2);
$s11->drawLine(1, 0);
$s11->movePenTo(95, -115);
$s11->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s11->setRightFill();
#$s11->setLine(0,0,0,0);
$s11->drawLine(90, -125);
$s11->drawLine(-70, -40);
$s11->drawLine(-62, 140);
$s11->drawLine(41, 25);
$s11->drawLine(1, 0);
$s11->movePenTo(140, -52);
$s11->setLeftFill(0xff, 0xff, 0xff, 0x8d);
$s11->setRightFill();
#$s11->setLine(0,0,0,0);
$s11->drawLine(140, -63);
$s11->drawLine(-40, -69);
$s11->drawLine(-124, 90);
$s11->drawLine(24, 41);
$s11->drawLine(0, 1);
$s11->movePenTo(300, -40);
$s11->setLeftFill();
$s11->setRightFill(0xff, 0xff, 0xff, 0x99);
#$s11->setLine(0,0,0,0);
$s11->drawLine(0, 80);
$s11->drawLine(-152, -15);
$s11->drawLine(0, -1);
$s11->drawLine(2, -24);
$s11->drawLine(-2, -24);
$s11->drawLine(152, -16);
$s11->movePenTo(240, 185);
$s11->setLeftFill();
$s11->setRightFill(0xff, 0xff, 0xff, 0xa6);
#$s11->setLine(0,0,0,0);
$s11->drawLine(-124, -90);
$s11->drawCurve(16, -20, 8, -22);
$s11->drawLine(140, 63);
$s11->drawLine(-40, 69);
$s11->movePenTo(53, 141);
$s11->setLeftFill(0xff, 0xff, 0xff, 0xb3);
$s11->setRightFill();
#$s11->setLine(0,0,0,0);
$s11->drawLine(62, 139);
$s11->drawLine(70, -40);
$s11->drawLine(-90, -124);
$s11->drawLine(-41, 25);
$s11->drawLine(-1, 0);
$s11->movePenTo(24, 149);
$s11->setLeftFill(0xff, 0xff, 0xff, 0xc0);
$s11->setRightFill();
#$s11->setLine(0,0,0,0);
$s11->drawLine(-25, 2);
$s11->drawLine(-23, -2);
$s11->drawLine(-16, 151);
$s11->drawLine(80, 0);
$s11->drawLine(-15, -151);
$s11->drawLine(-1, 0);
$s11->movePenTo(-280, -115);
$s11->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s11->setRightFill();
#$s11->setLine(0,0,0,0);
$s11->drawLine(139, 62);
$s11->drawCurve(8, -23, 17, -19);
$s11->drawLine(-124, -89);
$s11->drawLine(-40, 69);
$s11->movePenTo(-53, -140);
$s11->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s11->setRightFill();
#$s11->setLine(0,0,0,0);
$s11->drawLine(-62, -140);
$s11->drawLine(-69, 40);
$s11->drawLine(89, 124);
$s11->drawCurve(19, -16, 23, -8);
$s11->movePenTo(-300, -40);
$s11->setLeftFill(0xff, 0xff, 0xff);
$s11->setRightFill();
#$s11->setLine(0,0,0,0);
$s11->drawLine(0, 80);
$s11->drawLine(152, -15);
$s11->drawLine(0, -1);
$s11->drawLine(-2, -24);
$s11->drawLine(2, -24);
$s11->drawLine(-152, -16);
$s11->movePenTo(-95, 117);
$s11->setLeftFill(0xff, 0xff, 0xff, 0xcc);
$s11->setRightFill();
#$s11->setLine(0,0,0,0);
$s11->drawLine(-90, 123);
$s11->drawLine(70, 40);
$s11->drawLine(62, -138);
$s11->drawCurve(-23, -9, -19, -16);
$s11->movePenTo(-140, 54);
$s11->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s11->setRightFill();
#$s11->setLine(0,0,0,0);
$s11->drawLine(-140, 62);
$s11->drawLine(40, 69);
$s11->drawLine(124, -89);
$s11->drawCurve(-17, -20, -7, -22);
### Shape 12 ###
$s12 = new SWF::Shape();
$s12->movePenTo(95, -115);
$s12->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s12->setRightFill();
#$s12->setLine(0,0,0,0);
$s12->drawLine(90, -125);
$s12->drawLine(-69, -40);
$s12->drawLine(-63, 140);
$s12->drawLine(41, 25);
$s12->drawLine(1, 0);
$s12->movePenTo(140, -53);
$s12->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s12->setRightFill();
#$s12->setLine(0,0,0,0);
$s12->drawLine(140, -62);
$s12->drawLine(-40, -70);
$s12->drawLine(-124, 90);
$s12->drawLine(0, 1);
$s12->drawLine(24, 41);
$s12->movePenTo(300, -40);
$s12->setLeftFill();
$s12->setRightFill(0xff, 0xff, 0xff, 0x8d);
#$s12->setLine(0,0,0,0);
$s12->drawLine(0, 80);
$s12->drawLine(-152, -15);
$s12->drawLine(0, -1);
$s12->drawLine(2, -24);
$s12->drawLine(-2, -24);
$s12->drawLine(152, -16);
$s12->movePenTo(40, -300);
$s12->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s12->setRightFill();
#$s12->setLine(0,0,0,0);
$s12->drawLine(-80, 0);
$s12->drawLine(16, 152);
$s12->drawLine(23, -1);
$s12->drawLine(25, 2);
$s12->drawLine(16, -153);
$s12->movePenTo(240, 185);
$s12->setLeftFill();
$s12->setRightFill(0xff, 0xff, 0xff, 0x99);
#$s12->setLine(0,0,0,0);
$s12->drawLine(-124, -90);
$s12->drawCurve(16, -20, 8, -22);
$s12->drawLine(140, 63);
$s12->drawLine(-40, 69);
$s12->movePenTo(95, 116);
$s12->setLeftFill(0xff, 0xff, 0xff, 0xa6);
$s12->setRightFill();
#$s12->setLine(0,0,0,0);
$s12->drawLine(-41, 25);
$s12->drawLine(-1, 0);
$s12->drawLine(62, 139);
$s12->drawLine(70, -40);
$s12->drawLine(-90, -124);
$s12->movePenTo(40, 300);
$s12->setLeftFill();
$s12->setRightFill(0xff, 0xff, 0xff, 0xb3);
#$s12->setLine(0,0,0,0);
$s12->drawLine(-80, 0);
$s12->drawLine(16, -151);
$s12->drawLine(23, 2);
$s12->drawLine(25, -2);
$s12->drawLine(16, 151);
$s12->movePenTo(-280, -115);
$s12->setLeftFill(0xff, 0xff, 0xff);
$s12->setRightFill();
#$s12->setLine(0,0,0,0);
$s12->drawLine(139, 62);
$s12->drawCurve(8, -23, 17, -19);
$s12->drawLine(-124, -89);
$s12->drawLine(-40, 69);
$s12->movePenTo(-53, -140);
$s12->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s12->setRightFill();
#$s12->setLine(0,0,0,0);
$s12->drawLine(-62, -140);
$s12->drawLine(-70, 41);
$s12->drawLine(90, 123);
$s12->drawCurve(19, -16, 23, -8);
$s12->movePenTo(-300, -40);
$s12->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s12->setRightFill();
#$s12->setLine(0,0,0,0);
$s12->drawLine(0, 80);
$s12->drawLine(152, -15);
$s12->drawLine(0, -1);
$s12->drawLine(-2, -24);
$s12->drawLine(2, -24);
$s12->drawLine(-152, -16);
$s12->movePenTo(-95, 117);
$s12->setLeftFill(0xff, 0xff, 0xff, 0xc0);
$s12->setRightFill();
#$s12->setLine(0,0,0,0);
$s12->drawLine(-89, 123);
$s12->drawLine(69, 40);
$s12->drawLine(62, -138);
$s12->drawCurve(-23, -9, -19, -16);
$s12->movePenTo(-141, 53);
$s12->setLeftFill(0xff, 0xff, 0xff, 0xcc);
$s12->setRightFill();
#$s12->setLine(0,0,0,0);
$s12->drawLine(-139, 62);
$s12->drawLine(40, 70);
$s12->drawLine(124, -89);
$s12->drawLine(-25, -43);
### Shape 13 ###
$s13 = new SWF::Shape();
$s13->movePenTo(140, -52);
$s13->setLeftFill(0xff, 0xff, 0xff, 0x73);
$s13->setRightFill();
#$s13->setLine(0,0,0,0);
$s13->drawLine(140, -63);
$s13->drawLine(-40, -69);
$s13->drawLine(-124, 89);
$s13->drawLine(0, 1);
$s13->drawLine(24, 41);
$s13->drawLine(0, 1);
$s13->movePenTo(94, -115);
$s13->setLeftFill(0xff, 0xff, 0xff, 0x66);
$s13->setRightFill();
#$s13->setLine(0,0,0,0);
$s13->drawLine(91, -125);
$s13->drawLine(-69, -40);
$s13->drawLine(-63, 140);
$s13->drawLine(41, 25);
$s13->movePenTo(148, -24);
$s13->setLeftFill(0xff, 0xff, 0xff, 0x80);
$s13->setRightFill();
#$s13->setLine(0,0,0,0);
$s13->drawLine(2, 24);
$s13->drawLine(-2, 24);
$s13->drawLine(152, 16);
$s13->drawLine(0, -80);
$s13->drawLine(-152, 16);
$s13->movePenTo(40, -300);
$s13->setLeftFill(0xff, 0xff, 0xff, 0x5a);
$s13->setRightFill();
#$s13->setLine(0,0,0,0);
$s13->drawLine(-80, 0);
$s13->drawLine(16, 152);
$s13->drawLine(23, -1);
$s13->drawLine(25, 2);
$s13->drawLine(16, -153);
$s13->movePenTo(240, 185);
$s13->setLeftFill();
$s13->setRightFill(0xff, 0xff, 0xff, 0x8d);
#$s13->setLine(0,0,0,0);
$s13->drawLine(-124, -90);
$s13->drawCurve(16, -20, 8, -22);
$s13->drawLine(140, 62);
$s13->drawLine(-40, 70);
$s13->movePenTo(95, 116);
$s13->setLeftFill(0xff, 0xff, 0xff, 0x99);
$s13->setRightFill();
#$s13->setLine(0,0,0,0);
$s13->drawLine(-41, 25);
$s13->drawLine(-1, 0);
$s13->drawLine(63, 139);
$s13->drawLine(69, -40);
$s13->drawLine(-90, -124);
$s13->movePenTo(24, 149);
$s13->setLeftFill(0xff, 0xff, 0xff, 0xa6);
$s13->setRightFill();
#$s13->setLine(0,0,0,0);
$s13->drawLine(-25, 2);
$s13->drawLine(-23, -2);
$s13->drawLine(-16, 151);
$s13->drawLine(80, 0);
$s13->drawLine(-15, -151);
$s13->drawLine(-1, 0);
$s13->movePenTo(-280, -115);
$s13->setLeftFill(0xff, 0xff, 0xff, 0xe6);
$s13->setRightFill();
#$s13->setLine(0,0,0,0);
$s13->drawLine(139, 62);
$s13->drawCurve(8, -23, 16, -19);
$s13->drawLine(-123, -89);
$s13->drawLine(-40, 69);
$s13->movePenTo(-53, -140);
$s13->setLeftFill(0xff, 0xff, 0xff);
$s13->setRightFill();
#$s13->setLine(0,0,0,0);
$s13->drawLine(-62, -140);
$s13->drawLine(-69, 40);
$s13->drawLine(89, 124);
$s13->drawCurve(19, -16, 23, -8);
$s13->movePenTo(-148, -24);
$s13->setLeftFill();
$s13->setRightFill(0xff, 0xff, 0xff, 0xcc);
#$s13->setLine(0,0,0,0);
$s13->drawLine(-2, 24);
$s13->drawLine(2, 24);
$s13->drawLine(0, 1);
$s13->drawLine(-152, 15);
$s13->drawLine(0, -80);
$s13->drawLine(152, 16);
$s13->movePenTo(-95, 117);
$s13->setLeftFill(0xff, 0xff, 0xff, 0xb3);
$s13->setRightFill();
#$s13->setLine(0,0,0,0);
$s13->drawLine(-89, 123);
$s13->drawLine(69, 40);
$s13->drawLine(62, -138);
$s13->drawCurve(-23, -9, -19, -16);
$s13->movePenTo(-141, 53);
$s13->setLeftFill(0xff, 0xff, 0xff, 0xc0);
$s13->setRightFill();
#$s13->setLine(0,0,0,0);
$s13->drawLine(-139, 63);
$s13->drawLine(40, 69);
$s13->drawLine(124, -89);
$s13->drawLine(-25, -43);
### MovieClip 1 ###
$s1 = new SWF::MovieClip(); # 14 frames
$s1->add(new SWF::Action("
this.gotoAndPlay(random(12) + 1);
;
"));
$j1 = $s1->add($s2);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 1
$s1->nextFrame(); # end of clip frame 2
$s1->remove($j1);
$j1 = $s1->add($s3);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 3
$s1->remove($j1);
$j1 = $s1->add($s4);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 4
$s1->remove($j1);
$j1 = $s1->add($s5);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 5
$s1->remove($j1);
$j1 = $s1->add($s6);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 6
$s1->remove($j1);
$j1 = $s1->add($s7);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 7
$s1->remove($j1);
$j1 = $s1->add($s8);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 8
$s1->remove($j1);
$j1 = $s1->add($s9);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 9
$s1->remove($j1);
$j1 = $s1->add($s10);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 10
$s1->remove($j1);
$j1 = $s1->add($s11);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 11
$s1->remove($j1);
$j1 = $s1->add($s12);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 12
$s1->remove($j1);
$j1 = $s1->add($s13);
$j1->multColor(1.000000, 1.000000, 1.000000);
$j1->addColor(0x00, 0x00, 0x00);
$s1->nextFrame(); # end of clip frame 13
$s1->add(new SWF::Action("
this.gotoAndPlay(2);
;
"));
$s1->nextFrame(); # end of clip frame 14
$s14 = new SWF::MovieClip(); # 1 frames
$j1 = $s14->add($s1);
$j1->scaleTo(0.666672);
$j1->moveTo(200, 200);
$j1->multColor(0.000000, 0.000000, 0.000000);
$j1->addColor(0x81, 0xac, 0xdb);
$s14->nextFrame(); # end of clip frame 1
$i1 = $progressclip->add($s14);
$i1->moveTo(20, 20);
$i1->multColor(1.000000, 1.000000, 1.000000);
$i1->addColor(0x00, 0x00, 0x00);
$progressclip->nextFrame(); # end of frame 1
$i1 = $movie->add($progressclip);
$i1->scaleTo(0.5);
$i1->moveTo(4700,2550);
$movie->nextFrame();
$movie->nextFrame();
$movie->nextFrame();
$movie->add(new SWF::Action(< 4) {
_root.preload.text="background";
}
var totalTotal = _root.getBytesTotal() + fondo.mihijo.getBytesTotal();
var totalLoaded = _root.getBytesLoaded() + fondo.mihijo.getBytesLoaded();
if (totalLoaded < totalTotal){
var percent = Math.floor(totalLoaded*100/totalTotal);
//_root.preload.text=percent+ "% ";
prevFrame();
play();
} else {
_root.preload.text="";
nextFrame();
}
ENDSCRIPT
));
$movie->nextFrame( );
$movie->remove($i1);
$movie->add(new SWF::Action(<<"EndOfActionScript"));
_root.createEmptyMovieClip("soundHolder", -14345);
_root.soundHolder.mySound = new Sound(_root.soundHolder);
//_root.soundHolder.mySound.loadSound("pepe.mp3", true);
//_root.soundHolder.mySound.stop();
dummyVar=(getTimer()+random(100000));
if(context != undefined) {
context = context.toUpperCase();
if(context == "DEFAULT") { context=""; }
} else {
context="";
}
if(nohighlight != undefined) {
_global.nohighlight = Number(nohighlight);
} else {
_global.nohighlight = 0;
}
if(mybutton != undefined) {
mybutton = Number(mybutton);
}
if(restrict != undefined) {
_global.restrict = restrict;
} else {
delete _global.restrict;
}
if(dial != undefined) {
// dial = Number(dial);
dial = dial;
_root.logea("dial "+dial);
} else {
dial = 0;
}
var archivo = "variables"+context+".txt?aldope="+dummyVar;
vr = new LoadVars ();
vr.onLoad = function (success)
{
if (success == true) {
nextFrame();
} else {
with (_root['preload']) {
text = "Couldn't load "+archivo;
errorconfiguration=1;
multiline = true;
wordWrap = true;
// border = true;
// prevFrame();
}
stop();
}
};
vr.load(archivo);
EndOfActionScript
$movie->nextFrame();
#$font_general = new SWF::Font($fuente);
# Ventana INPUT del security code
$codebox = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$g = new SWF::Gradient();
$g->addEntry(0.000000, 0xff, 0xff, 0xff);
$g->addEntry(0.015686, 0xe2, 0xe2, 0xe2);
$g->addEntry(0.964706, 0x9d, 0x9d, 0x9d);
$g->addEntry(1.000000, 0x5a, 0x5a, 0x5a);
$f2 = $s1->addFill($g, SWFFILL_LINEAR_GRADIENT);
$f2->scaleTo(0.24, 0.24);
$f2->moveTo(-35, 37);
$s1->movePenTo(2074, -1915);
$s1->setLeftFill(0x66, 0x66, 0x66, 0x39);
$s1->setLine(20, 0xc5, 0xc5, 0xc5, 0x39);
$s1->drawCurve(-29, -31, -41, 0);
$s1->drawLine(-3939, 0);
$s1->drawCurve(-41, 0, -30, 31);
$s1->drawCurve(-29, 32, 0, 44);
$s1->drawLine(0, 3945);
$s1->drawCurve(0, 44, 29, 31);
$s1->drawCurve(30, 33, 41, 0);
$s1->drawLine(3939, 0);
$s1->drawCurve(41, 0, 29, -33);
$s1->drawCurve(30, -31, 0, -44);
$s1->drawLine(0, -3945);
$s1->drawCurve(0, -44, -30, -32);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(2005, -2023);
$s1->setLeftFill($f2);
$s1->setLine(20, 0x66, 0x66, 0x66);
$s1->drawCurve(-29, -31, -41, 0);
$s1->drawLine(-3939, 0);
$s1->drawCurve(-41, 0, -30, 31);
$s1->drawCurve(-29, 33, 0, 44);
$s1->drawLine(0, 3966);
$s1->drawCurve(0, 44, 29, 32);
$s1->drawCurve(30, 32, 41, 0);
$s1->drawLine(3939, 0);
$s1->drawCurve(41, 0, 29, -32);
$s1->drawCurve(30, -32, 0, -44);
$s1->drawLine(0, -3966);
$s1->drawCurve(0, -44, -30, -33);
### MovieClip 2 ###
$s2 = new SWF::MovieClip(); # 1 frames
$s2->add($s1);
$s2->nextFrame(); # end of clip frame 1
$i1 = $codebox->add($s2);
$i1->scaleTo(1.427750, 0.540558);
$i1->moveTo(5509, 3957);
$i1->setName('inputCode');
### Shape 3 ###
$s3 = new SWF::Shape();
$s3->movePenTo(3094, 4290);
$s3->setRightFill(0xcc, 0xcc, 0xcc);
$s3->setLine(20, 0x99, 0x99, 0x99);
$s3->drawLine(0, -580);
$s3->drawLine(4713, 0);
$s3->setLine(20, 0xcc, 0xcc, 0xcc);
$s3->drawLine(0, 580);
$s3->drawLine(-4713, 0);
$i4 = $codebox->add($s3);
$s5 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_MULTILINE | SWFTEXTFIELD_NOSELECT | SWFTEXTFIELD_USEFONT );
$s5->setBounds(5650, 653);
$s5->setFont($font_general);
$s5->setHeight(320);
$s5->setColor(0x00, 0x00, 0x00, 0xff);
$s5->align(SWFTEXTFIELD_ALIGN_CENTER);
$s5->setName('title');
$s5->addString('Please enter the security code:');
$i5 = $codebox->add($s5);
$i5->moveTo(2704, 3067);
$s6 = new SWF::TextField( SWFTEXTFIELD_PASSWORD | SWFTEXTFIELD_USEFONT );
$s6->setBounds(4579, 398);
$s6->setFont($font_general);
$s6->setHeight(320);
$s6->setColor(0x00, 0x00, 0x00, 0xff);
$s6->align(SWFTEXTFIELD_ALIGN_LEFT);
$i6 = $codebox->add($s6);
$i6->moveTo(3189, 3821);
$i6->setName('claveform');
### Shape 7 ###
$s7 = new SWF::Shape();
$s7->movePenTo(-500, 200);
$s7->setRightFill(0xcc, 0xcc, 0xcc);
$s7->setLine(20, 0x99, 0x99, 0x99);
$s7->drawLine(0, -400);
$s7->drawLine(1000, 0);
$s7->setLine(20, 0x00, 0x00, 0x00);
$s7->drawLine(0, 400);
$s7->drawLine(-1000, 0);
$s8 = new SWF::Text;
$s8->setFont($font_general);
$s8->setHeight(280);
$s8->setColor(0x00, 0x00, 0x33, 0xff);
$s8->moveTo(-180,100);
$s8->addString('OK');
### Shape 9 ###
$s9 = new SWF::Shape();
$s9->movePenTo(-500, 200);
$s9->setRightFill(0xcc, 0xcc, 0xcc);
$s9->setLine(20, 0x99, 0x99, 0x99);
$s9->drawLine(0, -400);
$s9->drawLine(1000, 0);
$s9->setLine(20, 0x00, 0x00, 0x00);
$s9->drawLine(0, 400);
$s9->drawLine(-1000, 0);
$s11 = new SWF::Shape();
$s11->movePenTo(500, -200);
$s11->setRightFill(0xcc, 0xcc, 0xcc);
$s11->setLine(20, 0x99, 0x99, 0x99);
$s11->drawLine(0, 400);
$s11->drawLine(-1000, 0);
$s11->setLine(20, 0x00, 0x00, 0x00);
$s11->drawLine(0, -400);
$s11->drawLine(1000, 0);
### Button2 13 ###
$s13 = new SWF::Button();
$s13->addShape($s7, SWFBUTTON_UP);
$s13->addShape($s8, SWFBUTTON_UP);
$s13->addShape($s9, SWFBUTTON_OVER);
$s13->addShape($s8, SWFBUTTON_OVER);
$s13->addShape($s11, SWFBUTTON_HIT | SWFBUTTON_DOWN);
$s13->addShape($s8, SWFBUTTON_HIT | SWFBUTTON_DOWN);
$a = new SWF::Action("
_global.claveingresada = this.claveform.text;
_root.LocalSave('auth','clave',_global.claveingresada);
this._visible = false;
_root.envia_comando('bogus', 0, 0);
;
");
$s13->addAction($a, SWFBUTTON_MOUSEUP);
$i7 = $codebox->add($s13);
$i7->moveTo(5454, 4725);
### Shape 14 ###
$s14 = new SWF::Shape();
$s14->movePenTo(228, -228);
$s14->setRightFill(0x99, 0x99, 0x99);
$s14->setLine(20, 0x00, 0x00, 0x00);
$s14->drawLine(0, 456);
$s14->drawLine(-456, 0);
$s14->setLine(20, 0xcc, 0xcc, 0xcc);
$s14->drawLine(0, -456);
$s14->drawLine(456, 0);
$s14->setLeftFill();
$s14->setRightFill();
$s14->movePenTo(120, 132);
$s14->setLine(60, 0xcc, 0xcc, 0xcc);
$s14->drawLine(-120, -117);
$s14->drawLine(-112, 121);
$s14->movePenTo(-120, -102);
$s14->drawLine(120, 117);
$s14->drawLine(112, -120);
$s14->setLeftFill();
$s14->setRightFill();
$s14->movePenTo(120, 102);
$s14->setLine(60, 0x00, 0x00, 0x00);
$s14->drawLine(-120, -117);
$s14->drawLine(-112, 121);
$s14->movePenTo(-120, -132);
$s14->drawLine(120, 117);
$s14->drawLine(112, -120);
### Shape 15 ###
$s15 = new SWF::Shape();
$s15->movePenTo(228, -228);
$s15->setRightFill(0x99, 0x99, 0x99);
$s15->setLine(20, 0x00, 0x00, 0x00);
$s15->drawLine(0, 456);
$s15->drawLine(-456, 0);
$s15->setLine(20, 0xcc, 0xcc, 0xcc);
$s15->drawLine(0, -456);
$s15->drawLine(456, 0);
$s15->setLeftFill();
$s15->setRightFill();
$s15->movePenTo(120, 132);
$s15->setLine(60, 0xcc, 0xcc, 0xcc);
$s15->drawLine(-120, -117);
$s15->drawLine(-112, 121);
$s15->movePenTo(-120, -102);
$s15->drawLine(120, 117);
$s15->drawLine(112, -120);
$s15->setLeftFill();
$s15->setRightFill();
$s15->movePenTo(120, 102);
$s15->setLine(60, 0x00, 0x00, 0x00);
$s15->drawLine(-120, -117);
$s15->drawLine(-112, 121);
$s15->movePenTo(-120, -132);
$s15->drawLine(120, 117);
$s15->drawLine(112, -120);
### Shape 16 ###
$s16 = new SWF::Shape();
$s16->movePenTo(228, -228);
$s16->setRightFill(0x99, 0x99, 0x99);
$s16->setLine(20, 0x00, 0x00, 0x00);
$s16->drawLine(0, 456);
$s16->drawLine(-456, 0);
$s16->setLine(20, 0xcc, 0xcc, 0xcc);
$s16->drawLine(0, -456);
$s16->drawLine(456, 0);
$s16->setLeftFill();
$s16->setRightFill();
$s16->movePenTo(120, 132);
$s16->setLine(60, 0xcc, 0xcc, 0xcc);
$s16->drawLine(-120, -117);
$s16->drawLine(-112, 121);
$s16->movePenTo(-120, -102);
$s16->drawLine(120, 117);
$s16->drawLine(112, -120);
$s16->setLeftFill();
$s16->setRightFill();
$s16->movePenTo(122, 120);
$s16->setLine(60, 0x00, 0x00, 0x00);
$s16->drawLine(-120, -117);
$s16->drawLine(-112, 121);
$s16->movePenTo(-118, -114);
$s16->drawLine(120, 117);
$s16->drawLine(112, -120);
### Button2 17 ###
$s17 = new SWF::Button();
$s17->addShape($s14, SWFBUTTON_UP);
$s17->addShape($s15, SWFBUTTON_OVER);
$s17->addShape($s16, SWFBUTTON_DOWN);
$s17->addShape($s16, SWFBUTTON_HIT);
$a = new SWF::Action("
this._visible = false;
");
$s17->addAction($a, SWFBUTTON_MOUSEUP);
$i10 = $codebox->add($s17);
$i10->scaleTo(0.657883);
$i10->moveTo(8118, 3100);
$codebox->nextFrame(); # end of frame 1
# FIN DE Ventana INPUT del security code
$i1=$movie->add($codebox);
$i1->scaleTo(0.5);
$i1->setDepth(101);
$i1->moveTo(2400,500);
$i1->setName("codebox");
$fin = $movie->add($dropbox1); # XXXX
$fin->setName("selectbox1");
$fin->moveTo(8000,60);
#
# Number Dialer Catcher
#
# We can control movie playback from javascript, but just
# the frame number. This bogus movieclip sets a global variable
# with the number constructed from javascript while setting
# the frame of the movieclip.
#
$numdial = new SWF::Sprite();
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar+="0";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 1
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar+="1";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 2
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar+="2";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 3
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar+="3";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 4
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar+="4";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 5
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar+="5";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 6
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar+="6";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 7
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar+="7";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 8
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar+="8";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 9
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar+="9";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 10
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
_global.numero_a_discar="";
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 11
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
if(_root.dial!=0) {
_root.logea("Dial Number "+_global.numero_a_discar);
_root.logea("Restrict "+_global.restrict);
_root.logea("Dialing from "+_root.dial);
if(_global.restrict != undefined)
{
_root.envia_comando("dial",_global.restrict,_global.numero_a_discar);
} else {
_root.envia_comando("dial",_root.dial,_global.numero_a_discar);
}
} else {
_root.logea("Dial not defined in index.html "+numero_a_discar);
}
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 13
$numdial->add(new SWF::Action(<<"EndOfActionScript"));
stop();
EndOfActionScript
$numdial->nextFrame(); # End Frame 13
$i1 = $movie->add($numdial);
$i1->moveTo(-2000,-2000);
$i1->setName("numdial");
# Detail Window movieclip
$detail_window = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$g = new SWF::Gradient();
$g->addEntry(0.000000, 0xff, 0xff, 0xff);
$g->addEntry(0.015686, 0xe2, 0xe2, 0xe2);
$g->addEntry(0.964706, 0x9d, 0x9d, 0x9d);
$g->addEntry(1.000000, 0x5a, 0x5a, 0x5a);
$f2 = $s1->addFill($g, SWFFILL_LINEAR_GRADIENT);
$f2->scaleTo(0.24, 0.24);
$f2->moveTo(-35, 37);
$s1->movePenTo(2074, -1915);
$s1->setLeftFill(0x66, 0x66, 0x66, 0x39);
$s1->setLine(20, 0xc5, 0xc5, 0xc5, 0x39);
$s1->drawCurve(-29, -31, -41, 0);
$s1->drawLine(-3939, 0);
$s1->drawCurve(-41, 0, -30, 31);
$s1->drawCurve(-29, 32, 0, 44);
$s1->drawLine(0, 3945);
$s1->drawCurve(0, 44, 29, 31);
$s1->drawCurve(30, 33, 41, 0);
$s1->drawLine(3939, 0);
$s1->drawCurve(41, 0, 29, -33);
$s1->drawCurve(30, -31, 0, -44);
$s1->drawLine(0, -3945);
$s1->drawCurve(0, -44, -30, -32);
$s1->setLeftFill();
$s1->setRightFill();
$s1->setLine(0,0,0,0);
$s1->movePenTo(2005, -2023);
$s1->setLeftFill($f2);
$s1->setLine(20, 0x66, 0x66, 0x66);
$s1->drawCurve(-29, -31, -41, 0);
$s1->drawLine(-3939, 0);
$s1->drawCurve(-41, 0, -30, 31);
$s1->drawCurve(-29, 33, 0, 44);
$s1->drawLine(0, 3966);
$s1->drawCurve(0, 44, 29, 32);
$s1->drawCurve(30, 32, 41, 0);
$s1->drawLine(3939, 0);
$s1->drawCurve(41, 0, 29, -32);
$s1->drawCurve(30, -32, 0, -44);
$s1->drawLine(0, -3966);
$s1->drawCurve(0, -44, -30, -33);
$s3 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_USEFONT );
$s3->setBounds(3112, 377);
$s3->setFont($font_general);
$s3->setHeight(280);
$s3->setColor(0x33, 0x33, 0x33, 0xff);
$s3->align(SWFTEXTFIELD_ALIGN_LEFT);
$s3->setName('title');
$s3->addString('Last call details:');
$s5 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_USEFONT );
$s5->setBounds(907, 330);
$s5->setFont($font_general);
$s5->setHeight(260);
$s5->setColor(0x33, 0x33, 0x33, 0xff);
$s5->align(SWFTEXTFIELD_ALIGN_LEFT);
$s5->setName('label');
$s5->addString('From:');
$s6 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_USEFONT );
$s6->setBounds(1097, 330);
$s6->setFont($font_general);
$s6->setHeight(260);
$s6->setColor(0x33, 0x33, 0x33, 0xff);
$s6->align(SWFTEXTFIELD_ALIGN_LEFT);
$s6->setName('duration_label');
$s6->addString('Duration:');
$s7 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_USEFONT );
$s7->setBounds(2517, 330);
$s7->setFont($font_general);
$s7->setHeight(260);
$s7->setColor(0x33, 0x33, 0x33, 0xff);
$s7->align(SWFTEXTFIELD_ALIGN_LEFT);
$s7->setName('clid');
$s8 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_USEFONT );
$s8->setBounds(2116, 330);
$s8->setFont($font_general);
$s8->setHeight(260);
$s8->setColor(0x33, 0x33, 0x33, 0xff);
$s8->align(SWFTEXTFIELD_ALIGN_LEFT);
$s8->setName('duration');
### Shape 9 ###
$s9 = new SWF::Shape();
$s9->movePenTo(142, -141);
$s9->setRightFill(0x33, 0x33, 0x33);
$s9->drawCurve(58, 58, 0, 83);
$s9->drawCurve(0, 83, -58, 59);
$s9->drawCurve(-59, 58, -83, 0);
$s9->drawCurve(-83, 0, -58, -58);
$s9->drawCurve(-59, -59, 0, -83);
$s9->drawCurve(0, -83, 59, -58);
$s9->drawCurve(58, -59, 83, 0);
$s9->drawCurve(83, 0, 59, 59);
$s9->setLeftFill();
$s9->setRightFill();
$s9->setLine(0,0,0,0);
$s9->movePenTo(-43, -137);
$s9->setRightFill(0xff, 0xff, 0xff);
$s9->drawLine(192, 136);
$s9->drawLine(-192, 139);
$s9->drawLine(0, -67);
$s9->drawLine(-66, -1);
$s9->drawLine(0, -143);
$s9->drawLine(66, 0);
$s9->drawLine(0, -64);
### Button2 10 ###
$s10 = new SWF::Button();
$s10->addShape($s9, SWFBUTTON_HIT | SWFBUTTON_DOWN | SWFBUTTON_OVER | SWFBUTTON_UP);
$a = new SWF::Action("
_root.superdetails._visible = true;
_root.detail._visible = false;
//_root.superdetails.tab1.gotoAndStop(1);
//_root.superdetails.tab2.gotoAndStop(2);
if(_global.superdetailstexttab1 == undefined) {
_global.superdetailstexttab1 = 'no data';
}
if(_global.superdetailstexttab1 == 'no data') {
_root.superdetails.tab1.gotoAndStop(2);
_root.superdetails.tab2.gotoAndStop(1);
_root.superdetails.texto = _global.superdetailstexttab2;
} else {
_root.superdetails.tab1.gotoAndStop(1);
_root.superdetails.tab2.gotoAndStop(2);
_root.superdetails.texto = _global.superdetailstexttab1;
}
");
$s10->addAction($a, SWFBUTTON_MOUSEUP);
### Shape 11 ###
$s11 = new SWF::Shape();
$s11->movePenTo(228, -228);
$s11->setRightFill(0x99, 0x99, 0x99);
$s11->setLine(20, 0x00, 0x00, 0x00);
$s11->drawLine(0, 456);
$s11->drawLine(-456, 0);
$s11->setLine(20, 0xcc, 0xcc, 0xcc);
$s11->drawLine(0, -456);
$s11->drawLine(456, 0);
$s11->setLeftFill();
$s11->setRightFill();
$s11->setLine(0,0,0,0);
$s11->movePenTo(120, 132);
$s11->setLine(60, 0xcc, 0xcc, 0xcc);
$s11->drawLine(-120, -117);
$s11->drawLine(-112, 121);
$s11->movePenTo(-120, -102);
$s11->drawLine(120, 117);
$s11->drawLine(112, -120);
$s11->setLeftFill();
$s11->setRightFill();
$s11->setLine(0,0,0,0);
$s11->movePenTo(120, 102);
$s11->setLine(60, 0x00, 0x00, 0x00);
$s11->drawLine(-120, -117);
$s11->drawLine(-112, 121);
$s11->movePenTo(-120, -132);
$s11->drawLine(120, 117);
$s11->drawLine(112, -120);
### Shape 12 ###
$s12 = new SWF::Shape();
$s12->movePenTo(228, -228);
$s12->setRightFill(0x99, 0x99, 0x99);
$s12->setLine(20, 0x00, 0x00, 0x00);
$s12->drawLine(0, 456);
$s12->drawLine(-456, 0);
$s12->setLine(20, 0xcc, 0xcc, 0xcc);
$s12->drawLine(0, -456);
$s12->drawLine(456, 0);
$s12->setLeftFill();
$s12->setRightFill();
$s12->setLine(0,0,0,0);
$s12->movePenTo(120, 132);
$s12->setLine(60, 0xcc, 0xcc, 0xcc);
$s12->drawLine(-120, -117);
$s12->drawLine(-112, 121);
$s12->movePenTo(-120, -102);
$s12->drawLine(120, 117);
$s12->drawLine(112, -120);
$s12->setLeftFill();
$s12->setRightFill();
$s12->setLine(0,0,0,0);
$s12->movePenTo(120, 102);
$s12->setLine(60, 0x00, 0x00, 0x00);
$s12->drawLine(-120, -117);
$s12->drawLine(-112, 121);
$s12->movePenTo(-120, -132);
$s12->drawLine(120, 117);
$s12->drawLine(112, -120);
### Shape 13 ###
$s13 = new SWF::Shape();
$s13->movePenTo(228, -228);
$s13->setRightFill(0x99, 0x99, 0x99);
$s13->setLine(20, 0x00, 0x00, 0x00);
$s13->drawLine(0, 456);
$s13->drawLine(-456, 0);
$s13->setLine(20, 0xcc, 0xcc, 0xcc);
$s13->drawLine(0, -456);
$s13->drawLine(456, 0);
$s13->setLeftFill();
$s13->setRightFill();
$s13->setLine(0,0,0,0);
$s13->movePenTo(120, 132);
$s13->setLine(60, 0xcc, 0xcc, 0xcc);
$s13->drawLine(-120, -117);
$s13->drawLine(-112, 121);
$s13->movePenTo(-120, -102);
$s13->drawLine(120, 117);
$s13->drawLine(112, -120);
$s13->setLeftFill();
$s13->setRightFill();
$s13->setLine(0,0,0,0);
$s13->movePenTo(122, 120);
$s13->setLine(60, 0x00, 0x00, 0x00);
$s13->drawLine(-120, -117);
$s13->drawLine(-112, 121);
$s13->movePenTo(-118, -114);
$s13->drawLine(120, 117);
$s13->drawLine(112, -120);
### Button2 14 ###
$s14 = new SWF::Button();
$s14->addShape($s11, SWFBUTTON_UP);
$s14->addShape($s12, SWFBUTTON_OVER);
$s14->addShape($s13, SWFBUTTON_DOWN);
$s14->addShape($s13, SWFBUTTON_HIT);
$a = new SWF::Action("
_root.detail._visible = false;
this._visible = false;
_root.superdetails._visible = false;
");
$s14->addAction($a, SWFBUTTON_MOUSEUP);
$j2 = $detail_window->add($s1);
$j2->scaleTo(0.950256, 0.391327);
$j2->moveTo(2036, 737);
$j3 = $detail_window->add($s3);
$j3->moveTo(163, 37);
$j4 = $detail_window->add($s5);
$j4->moveTo(207, 523);
$j5 = $detail_window->add($s6);
$j5->moveTo(207, 979);
$j6 = $detail_window->add($s7);
$j6->moveTo(1402, 526);
$j7 = $detail_window->add($s8);
$j7->moveTo(1404, 995);
$j8 = $detail_window->add($s10);
$j8->scaleTo(0.800003);
$j8->moveTo(3746, 1267);
$j11 = $detail_window->add($s14);
$j11->scaleTo(0.561401);
$j11->moveTo(3720, 180);
$detail_window->nextFrame(); # end of clip frame 1
$i1=$movie->add($detail_window);
$i1->scaleTo(0.5);
$i1->setName("detail");
# Superdetail window
$superdetails = new SWF::Sprite();
$s1 = new SWF::Shape();
$g = new SWF::Gradient();
$g->addEntry(0.000000, 0xff, 0xff, 0xff);
$g->addEntry(0.015686, 0xe2, 0xe2, 0xe2);
$g->addEntry(0.964706, 0x9d, 0x9d, 0x9d);
$g->addEntry(1.000000, 0x5a, 0x5a, 0x5a);
$f2 = $s1->addFill($g, SWFFILL_LINEAR_GRADIENT);
$f2->scaleTo(0.25, 0.25);
$f2->moveTo(-35, 37);
$s1->movePenTo(2074, -1915);
$s1->setLeftFill(0x66, 0x66, 0x66, 0x39);
$s1->setLine(20, 0xc5, 0xc5, 0xc5, 0x39);
$s1->drawCurve(-29, -31, -41, 0);
$s1->drawLine(-3939, 0);
$s1->drawCurve(-41, 0, -30, 31);
$s1->drawCurve(-29, 32, 0, 44);
$s1->drawLine(0, 3945);
$s1->drawCurve(0, 44, 29, 31);
$s1->drawCurve(30, 33, 41, 0);
$s1->drawLine(3939, 0);
$s1->drawCurve(41, 0, 29, -33);
$s1->drawCurve(30, -31, 0, -44);
$s1->drawLine(0, -3945);
$s1->drawCurve(0, -44, -30, -32);
$s1->setLeftFill();
$s1->setRightFill();
$s1->setLine(0,0,0,0);
$s1->movePenTo(2005, -2023);
$s1->setLeftFill($f2);
$s1->setLine(20, 0x66, 0x66, 0x66);
$s1->drawCurve(-29, -31, -41, 0);
$s1->drawLine(-3939, 0);
$s1->drawCurve(-41, 0, -30, 31);
$s1->drawCurve(-29, 33, 0, 44);
$s1->drawLine(0, 3966);
$s1->drawCurve(0, 44, 29, 32);
$s1->drawCurve(30, 32, 41, 0);
$s1->drawLine(3939, 0);
$s1->drawCurve(41, 0, 29, -32);
$s1->drawCurve(30, -32, 0, -44);
$s1->drawLine(0, -3966);
$s1->drawCurve(0, -44, -30, -33);
$s3 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_MULTILINE | SWFTEXTFIELD_USEFONT );
$s3->setBounds(4939, 4740);
$s3->setFont($font_general);
$s3->setHeight(260);
$s3->setColor(0x00, 0x00, 0x00, 0xff);
$s3->align(SWFTEXTFIELD_ALIGN_LEFT);
$s3->setName('texto');
### Shape 4 ###
$s4 = new SWF::Shape();
$s4->movePenTo(228, -228);
$s4->setRightFill(0x99, 0x99, 0x99);
$s4->setLine(20, 0x00, 0x00, 0x00);
$s4->drawLine(0, 456);
$s4->drawLine(-456, 0);
$s4->setLine(20, 0xcc, 0xcc, 0xcc);
$s4->drawLine(0, -456);
$s4->drawLine(456, 0);
$s4->setLeftFill();
$s4->setRightFill();
$s4->setLine(0,0,0,0);
$s4->movePenTo(120, 132);
$s4->setLine(60, 0xcc, 0xcc, 0xcc);
$s4->drawLine(-120, -117);
$s4->drawLine(-112, 121);
$s4->movePenTo(-120, -102);
$s4->drawLine(120, 117);
$s4->drawLine(112, -120);
$s4->setLeftFill();
$s4->setRightFill();
$s4->setLine(0,0,0,0);
$s4->movePenTo(120, 102);
$s4->setLine(60, 0x00, 0x00, 0x00);
$s4->drawLine(-120, -117);
$s4->drawLine(-112, 121);
$s4->movePenTo(-120, -132);
$s4->drawLine(120, 117);
$s4->drawLine(112, -120);
### Shape 5 ###
$s5 = new SWF::Shape();
$s5->movePenTo(228, -228);
$s5->setRightFill(0x99, 0x99, 0x99);
$s5->setLine(20, 0x00, 0x00, 0x00);
$s5->drawLine(0, 456);
$s5->drawLine(-456, 0);
$s5->setLine(20, 0xcc, 0xcc, 0xcc);
$s5->drawLine(0, -456);
$s5->drawLine(456, 0);
$s5->setLeftFill();
$s5->setRightFill();
$s5->setLine(0,0,0,0);
$s5->movePenTo(120, 132);
$s5->setLine(60, 0xcc, 0xcc, 0xcc);
$s5->drawLine(-120, -117);
$s5->drawLine(-112, 121);
$s5->movePenTo(-120, -102);
$s5->drawLine(120, 117);
$s5->drawLine(112, -120);
$s5->setLeftFill();
$s5->setRightFill();
$s5->setLine(0,0,0,0);
$s5->movePenTo(120, 102);
$s5->setLine(60, 0x00, 0x00, 0x00);
$s5->drawLine(-120, -117);
$s5->drawLine(-112, 121);
$s5->movePenTo(-120, -132);
$s5->drawLine(120, 117);
$s5->drawLine(112, -120);
### Shape 6 ###
$s6 = new SWF::Shape();
$s6->movePenTo(228, -228);
$s6->setRightFill(0x99, 0x99, 0x99);
$s6->setLine(20, 0x00, 0x00, 0x00);
$s6->drawLine(0, 456);
$s6->drawLine(-456, 0);
$s6->setLine(20, 0xcc, 0xcc, 0xcc);
$s6->drawLine(0, -456);
$s6->drawLine(456, 0);
$s6->setLeftFill();
$s6->setRightFill();
$s6->setLine(0,0,0,0);
$s6->movePenTo(120, 132);
$s6->setLine(60, 0xcc, 0xcc, 0xcc);
$s6->drawLine(-120, -117);
$s6->drawLine(-112, 121);
$s6->movePenTo(-120, -102);
$s6->drawLine(120, 117);
$s6->drawLine(112, -120);
$s6->setLeftFill();
$s6->setRightFill();
$s6->setLine(0,0,0,0);
$s6->movePenTo(122, 120);
$s6->setLine(60, 0x00, 0x00, 0x00);
$s6->drawLine(-120, -117);
$s6->drawLine(-112, 121);
$s6->movePenTo(-118, -114);
$s6->drawLine(120, 117);
$s6->drawLine(112, -120);
### Button2 7 ###
$s7 = new SWF::Button();
$s7->addShape($s4, SWFBUTTON_UP);
$s7->addShape($s5, SWFBUTTON_OVER);
$s7->addShape($s6, SWFBUTTON_DOWN);
$s7->addShape($s6, SWFBUTTON_HIT);
$a = new SWF::Action("
this._visible = false;
_root.detail._visible = false;
");
$s7->addAction($a, SWFBUTTON_MOUSEUP);
$s8 = new SWF::Shape();
$s8->movePenTo(228, -228);
$s8->setRightFill(0xdd, 0xdd, 0xdd);
$s8->setLine(40, 0xdd, 0xdd, 0xdd);
$s8->drawLine(-1640, 0);
$s8->setLine(40, 0x00, 0x00, 0x00);
$s8->drawLine(0, -600);
$s8->setLine(40, 0x00, 0x00, 0x00);
$s8->drawLine(1640, 0);
$s8->setLine(40, 0x00, 0x00, 0x00);
$s8->drawLine(0, 600);
$s8b = new SWF::Shape();
$s8b->movePenTo(228, -228);
$s8b->setRightFill(0xdd, 0xdd, 0xdd);
$s8b->setLine(40, 0x00, 0x00, 0x00);
$s8b->drawLine(-1640, 0);
$s8b->setLine(40, 0x00, 0x00, 0x00);
$s8b->drawLine(0, -600);
$s8b->setLine(40, 0x00, 0x00, 0x00);
$s8b->drawLine(1640, 0);
$s8b->setLine(40, 0x00, 0x00, 0x00);
$s8b->drawLine(0, 600);
$s8a = new SWF::Action("
stop();
onRelease = function() {
var tab = this._name.substring(3,4);
if(tab == 1) {
gotoAndStop(1);
_parent.tab2.gotoAndStop(2);
_parent.texto = _global.superdetailstexttab1;
} else {
gotoAndStop(1);
_parent.tab1.gotoAndStop(2);
_parent.texto = _global.superdetailstexttab2;
}
};
");
$fs3 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_NOSELECT | SWFTEXTFIELD_USEFONT );
$fs3->setBounds(939, 200);
$fs3->setName('titlefs3');
$fs3->setFont($font_general);
$fs3->setHeight(220);
$fs3->setColor(0x00, 0x00, 0x00, 0xff);
$fs3->align(SWFTEXTFIELD_ALIGN_LEFT);
$fs3->addString('Queue');
$fs2 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_NOSELECT | SWFTEXTFIELD_USEFONT );
$fs2->setBounds(939, 200);
$fs2->setName('titlefs2');
$fs2->setFont($font_general);
$fs2->setHeight(220);
$fs2->setColor(0x00, 0x00, 0x00, 0xff);
$fs2->align(SWFTEXTFIELD_ALIGN_LEFT);
$fs2->addString('Call');
$sptab = new SWF::Sprite();
$sptab->add($s8);
$sptab->add($s8a);
$sptab->nextFrame();
$sptab->add($s8b);
$sptab->add($s8a);
$sptab->nextFrame();
$s9 = new SWF::Shape();
$s9->movePenTo(1, 1);
$s9->setRightFill(0xdd, 0xdd, 0xdd);
$s9->setLine(40, 0x00, 0x00, 0x00);
$s9->drawLine(-8000, 0);
$s9->setLine(40, 0x00, 0x00, 0x00);
$s9->drawLine(0, -7700);
$s9->setLine(40, 0x00, 0x00, 0x00);
$s9->drawLine(8000, 0);
$s9->setLine(40, 0x00, 0x00, 0x00);
$s9->drawLine(0, 7700);
$j2 = $superdetails->add($s1);
$j2->scaleTo(1.349503, 1.391388);
$j5 = $superdetails->add($s9);
$j5->scaleTo(0.657898);
$j5->moveTo(2565, 2700);
$j5 = $superdetails->add($sptab);
$j5->scaleTo(0.657898);
$j5->moveTo(-1740, -2214);
$j5->setName("tab1");
$j5 = $superdetails->add($sptab);
$j5->scaleTo(0.657898);
$j5->moveTo(-620, -2214);
$j5->setName("tab2");
$j3 = $superdetails->add($s3);
$j3->moveTo(-2540, -2200);
$j3->setName('textos');
$j4 = $superdetails->add($s7);
$j4->scaleTo(0.657898);
$j4->moveTo(2472, -2610);
$ia = $superdetails->add($fs2);
$ia->moveTo(-2580,-2680);
$ia = $superdetails->add($fs3);
$ia->moveTo(-1460,-2680);
$superdetails->nextFrame(); # end of clip frame 1
$i1 = $movie->add($superdetails);
$i1->scaleTo(0.5);
$i1->setName("superdetails");
$i1->moveTo(4900,3000);
$ventana_debug = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(120, -120);
$s1->setRightFill(0x99, 0xcc, 0xcc, 0x03);
$s1->drawLine(0, 240);
$s1->drawLine(-240, 0);
$s1->drawLine(0, -240);
$s1->drawLine(240, 0);
### Button2 3 ###
$s3 = new SWF::Button();
$s3->addShape($s1, SWFBUTTON_HIT | SWFBUTTON_DOWN | SWFBUTTON_OVER | SWFBUTTON_UP);
$a = new SWF::Action("
beginDrag(this, 0);
var este = this.getDepth();
var aquel = _level0.codebox.getDepth();
if(aquel > este)
{
swapDepths(_level0.codebox);
;
}
");
$s3->addAction($a, SWFBUTTON_MOUSEDOWN);
$a = new SWF::Action("
endDrag();
");
$s3->addAction($a, SWFBUTTON_MOUSEUPOUTSIDE | SWFBUTTON_MOUSEUP);
### Shape 4 ###
$s4 = new SWF::Shape();
$g = new SWF::Gradient();
$g->addEntry(0.000000, 0xff, 0xff, 0xff);
$g->addEntry(0.015686, 0xe2, 0xe2, 0xe2);
$g->addEntry(0.964706, 0x9d, 0x9d, 0x9d);
$g->addEntry(1.000000, 0x5a, 0x5a, 0x5a);
$f2 = $s4->addFill($g, SWFFILL_LINEAR_GRADIENT);
$f2->scaleTo(0.25, 0.25);
$f2->moveTo(-35, 37);
$s4->movePenTo(2074, -1915);
$s4->setLeftFill(0x66, 0x66, 0x66, 0x39);
$s4->setLine(20, 0xc5, 0xc5, 0xc5, 0x39);
$s4->drawCurve(-29, -31, -41, 0);
$s4->drawLine(-3939, 0);
$s4->drawCurve(-41, 0, -30, 31);
$s4->drawCurve(-29, 32, 0, 44);
$s4->drawLine(0, 3945);
$s4->drawCurve(0, 44, 29, 31);
$s4->drawCurve(30, 33, 41, 0);
$s4->drawLine(3939, 0);
$s4->drawCurve(41, 0, 29, -33);
$s4->drawCurve(30, -31, 0, -44);
$s4->drawLine(0, -3945);
$s4->drawCurve(0, -44, -30, -32);
$s4->setLeftFill();
$s4->setRightFill();
$s4->setLine(0,0,0,0);
$s4->movePenTo(2005, -2023);
$s4->setLeftFill($f2);
$s4->setLine(20, 0x66, 0x66, 0x66);
$s4->drawCurve(-29, -31, -41, 0);
$s4->drawLine(-3939, 0);
$s4->drawCurve(-41, 0, -30, 31);
$s4->drawCurve(-29, 33, 0, 44);
$s4->drawLine(0, 3966);
$s4->drawCurve(0, 44, 29, 32);
$s4->drawCurve(30, 32, 41, 0);
$s4->drawLine(3939, 0);
$s4->drawCurve(41, 0, 29, -32);
$s4->drawCurve(30, -32, 0, -44);
$s4->drawLine(0, -3966);
$s4->drawCurve(0, -44, -30, -33);
$s6 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_NOSELECT | SWFTEXTFIELD_USEFONT );
$s6->setBounds(8104, 398);
$s6->setFont($font_general);
$s6->setHeight(320);
$s6->setColor(0x00, 0x00, 0x00, 0xff);
$s6->align(SWFTEXTFIELD_ALIGN_LEFT);
$s6->setName("title");
$s6->addString('Debug Window');
### Shape 7 ###
$s7 = new SWF::Shape();
$s7->movePenTo(228, -228);
$s7->setRightFill(0x99, 0x99, 0x99);
$s7->setLine(20, 0x00, 0x00, 0x00);
$s7->drawLine(0, 456);
$s7->drawLine(-456, 0);
$s7->setLine(20, 0xcc, 0xcc, 0xcc);
$s7->drawLine(0, -456);
$s7->drawLine(456, 0);
$s7->setLeftFill();
$s7->setRightFill();
$s7->setLine(0,0,0,0);
$s7->movePenTo(120, 132);
$s7->setLine(60, 0xcc, 0xcc, 0xcc);
$s7->drawLine(-120, -117);
$s7->drawLine(-112, 121);
$s7->movePenTo(-120, -102);
$s7->drawLine(120, 117);
$s7->drawLine(112, -120);
$s7->setLeftFill();
$s7->setRightFill();
$s7->setLine(0,0,0,0);
$s7->movePenTo(120, 102);
$s7->setLine(60, 0x00, 0x00, 0x00);
$s7->drawLine(-120, -117);
$s7->drawLine(-112, 121);
$s7->movePenTo(-120, -132);
$s7->drawLine(120, 117);
$s7->drawLine(112, -120);
### Shape 8 ###
$s8 = new SWF::Shape();
$s8->movePenTo(228, -228);
$s8->setRightFill(0x99, 0x99, 0x99);
$s8->setLine(20, 0x00, 0x00, 0x00);
$s8->drawLine(0, 456);
$s8->drawLine(-456, 0);
$s8->setLine(20, 0xcc, 0xcc, 0xcc);
$s8->drawLine(0, -456);
$s8->drawLine(456, 0);
$s8->setLeftFill();
$s8->setRightFill();
$s8->setLine(0,0,0,0);
$s8->movePenTo(120, 132);
$s8->setLine(60, 0xcc, 0xcc, 0xcc);
$s8->drawLine(-120, -117);
$s8->drawLine(-112, 121);
$s8->movePenTo(-120, -102);
$s8->drawLine(120, 117);
$s8->drawLine(112, -120);
$s8->setLeftFill();
$s8->setRightFill();
$s8->setLine(0,0,0,0);
$s8->movePenTo(120, 102);
$s8->setLine(60, 0x00, 0x00, 0x00);
$s8->drawLine(-120, -117);
$s8->drawLine(-112, 121);
$s8->movePenTo(-120, -132);
$s8->drawLine(120, 117);
$s8->drawLine(112, -120);
### Shape 9 ###
$s9 = new SWF::Shape();
$s9->movePenTo(228, -228);
$s9->setRightFill(0x99, 0x99, 0x99);
$s9->setLine(20, 0x00, 0x00, 0x00);
$s9->drawLine(0, 456);
$s9->drawLine(-456, 0);
$s9->setLine(20, 0xcc, 0xcc, 0xcc);
$s9->drawLine(0, -456);
$s9->drawLine(456, 0);
$s9->setLeftFill();
$s9->setRightFill();
$s9->setLine(0,0,0,0);
$s9->movePenTo(120, 132);
$s9->setLine(60, 0xcc, 0xcc, 0xcc);
$s9->drawLine(-120, -117);
$s9->drawLine(-112, 121);
$s9->movePenTo(-120, -102);
$s9->drawLine(120, 117);
$s9->drawLine(112, -120);
$s9->setLeftFill();
$s9->setRightFill();
$s9->setLine(0,0,0,0);
$s9->movePenTo(122, 120);
$s9->setLine(60, 0x00, 0x00, 0x00);
$s9->drawLine(-120, -117);
$s9->drawLine(-112, 121);
$s9->movePenTo(-118, -114);
$s9->drawLine(120, 117);
$s9->drawLine(112, -120);
### Button2 10 ###
$s10 = new SWF::Button();
$s10->addShape($s7, SWFBUTTON_UP);
$s10->addShape($s8, SWFBUTTON_OVER);
$s10->addShape($s9, SWFBUTTON_DOWN);
$s10->addShape($s9, SWFBUTTON_HIT);
$a = new SWF::Action("
this._visible = false;
");
$s10->addAction($a, SWFBUTTON_MOUSEUP);
### Shape 11 ###
$s11 = new SWF::Shape();
$s11->movePenTo(3825, -1782);
$s11->setRightFill(0xf0, 0xf0, 0xf0);
$s11->setLine(20, 0x66, 0x66, 0x66);
$s11->drawLine(0, 3620);
$s11->drawLine(-8158, 0);
$s11->drawLine(0, -3620);
$s11->drawLine(8158, 0);
$s13 = new SWF::TextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_MULTILINE | SWFTEXTFIELD_USEFONT );
$s13->setBounds(8000, 3606);
$s13->setFont($font_general);
$s13->setHeight(320);
$s13->setColor(0x00, 0x00, 0x00, 0xff);
$s13->align(SWFTEXTFIELD_ALIGN_LEFT);
$s13->setRightMargin(80);
$s13->setIndentation(40);
$s13->setName('logcontent');
### MovieClip 14 ###
$j2 = $ventana_debug->add($s4);
$j2->scaleTo(2.121078, 1.087326);
$j2->moveTo(0, -87);
$j3 = $ventana_debug->add($s3);
$j3->scaleTo(34.419983, 1.277756);
$j3->moveTo(-233, -2030);
$j5 = $ventana_debug->add($s6);
$j5->moveTo(-4323, -2220);
$j5->setName('title');
$j6 = $ventana_debug->add($s10);
$j6->scaleTo(0.657898);
$j6->moveTo(4015, -2031);
$ventana_debug->add($s11);
$j11 = $ventana_debug->add($s13);
#$j11->scaleTo(1.289948, 0.945129);
#$j11->scaleTo(1.2, 0.9);
$j11->moveTo(-4281, -1710);
$j11->setName('Field1');
$ventana_debug->nextFrame(); # end of ventana_debug
####################################################
$i1=$movie->add($ventana_debug);
$i1->scaleTo(0.5);
$i1->setDepth(100);
$i1->moveTo(5000,2500);
$i1->setName("log");
$ledcolor = new SWF::Sprite();
$s1 = new SWF::Shape();
$s1->movePenTo(524, 125);
$s1->setLeftFill(255, 0x00, 0x00);
$s1->drawCurve(-112, -86, -125, 0);
$s1->drawCurve(-127, 0, -66, 86);
$s1->drawLine(-21, 33);
$s1->drawCurve(-38, 76, 27, 99);
$s1->drawLine(11, 35);
$s1->drawCurve(37, 99, 96, 73);
$s1->drawLine(13, 10);
$s1->drawCurve(107, 75, 118, 1);
$s1->drawCurve(118, -1, 65, -75);
$s1->drawLine(9, -10);
$s1->drawCurve(66, -86, -33, -121);
$s1->drawCurve(-33, -122, -112, -86);
$i1 = $ledcolor->add($s1);
$i1->scaleTo(0.5);
$i1->moveTo(-185, -174);
$ledcolor->nextFrame(); # end of frame 1
$ledsombra = new SWF::Sprite();
$s2 = new SWF::Shape();
$s2->movePenTo(216, -124);
$s2->setRightFill(0x00, 0x00, 0x00, 0x32);
$s2->drawCurve(30, 58, -21, 78);
$s2->drawLine(-8, 25);
$s2->drawCurve(-26, 71, -68, 52);
$s2->drawLine(-1, 1);
$s2->drawLine(-8, 6);
$s2->drawCurve(-77, 54, -84, 0);
$s2->drawCurve(-94, -1, -50, -60);
$s2->drawLine(-6, -6);
$s2->drawLine(0, -2);
$s2->drawCurve(-54, -68, 25, -95);
$s2->drawCurve(23, -87, 80, -62);
$s2->drawCurve(80, -62, 90, 1);
$s2->drawCurve(99, -1, 52, 70);
$s2->drawLine(0, 1);
$s2->drawLine(18, 27);
$s2->movePenTo(191, -146);
$s2->setLeftFill(0x00, 0x00, 0x00, 0x32);
$s2->setRightFill(0x00, 0x00, 0x00, 0x65);
$s2->drawLine(16, 25);
$s2->drawCurve(29, 57, -20, 74);
$s2->drawLine(-7, 24);
$s2->drawCurve(-26, 68, -66, 51);
$s2->drawLine(0, 1);
$s2->drawCurve(-5, 2, -4, 4);
$s2->drawCurve(-73, 52, -82, 0);
$s2->drawCurve(-89, -1, -49, -57);
$s2->drawLine(-4, -7);
$s2->drawLine(-1, -1);
$s2->drawCurve(-52, -64, 25, -91);
$s2->drawCurve(22, -85, 78, -59);
$s2->drawCurve(77, -60, 87, 1);
$s2->drawCurve(95, -1, 49, 66);
$s2->drawLine(0, 1);
$s2->movePenTo(184, -141);
$s2->setLeftFill(0x00, 0x00, 0x00, 0x65);
$s2->setRightFill(0x00, 0x00, 0x00, 0x98);
$s2->drawLine(15, 25);
$s2->drawCurve(28, 53, -19, 71);
$s2->drawLine(-8, 23);
$s2->drawLine(0, -1);
$s2->drawCurve(-24, 67, -64, 49);
$s2->drawLine(-9, 7);
$s2->drawCurve(-71, 50, -79, 0);
$s2->drawCurve(-85, -1, -46, -54);
$s2->drawLine(-5, -6);
$s2->drawLine(-1, -1);
$s2->drawCurve(-48, -61, 24, -87);
$s2->drawCurve(21, -81, 75, -58);
$s2->drawCurve(75, -58, 84, 1);
$s2->drawCurve(89, -1, 48, 62);
$s2->drawLine(0, 1);
$s2->movePenTo(177, -135);
$s2->setLeftFill(0x00, 0x00, 0x00, 0x98);
$s2->setRightFill(0x00, 0x00, 0x00, 0xcb);
$s2->drawLine(14, 22);
$s2->drawCurve(26, 52, -18, 66);
$s2->drawLine(-7, 23);
$s2->drawCurve(-24, 63, -61, 48);
$s2->drawLine(-9, 6);
$s2->drawCurve(-69, 49, -76, 0);
$s2->drawCurve(-80, -1, -43, -51);
$s2->drawLine(-6, -6);
$s2->drawLine(-1, 0);
$s2->drawCurve(-45, -59, 22, -81);
$s2->drawCurve(21, -79, 73, -56);
$s2->drawCurve(72, -56, 81, 1);
$s2->drawCurve(85, -1, 45, 59);
$s2->drawLine(0, 1);
$s2->movePenTo(183, -108);
$s2->setLeftFill(0x00, 0x00, 0x00, 0xcb);
$s2->setRightFill(0x00, 0x00, 0x00);
$s2->drawCurve(24, 47, -17, 63);
$s2->drawLine(-6, 22);
$s2->drawCurve(-23, 62, -60, 46);
$s2->drawLine(-8, 5);
$s2->drawCurve(-66, 48, -74, 0);
$s2->drawCurve(-76, 0, -41, -49);
$s2->drawLine(-5, -6);
$s2->drawLine(-1, 0);
$s2->drawCurve(-42, -55, 21, -77);
$s2->drawCurve(21, -77, 70, -53);
$s2->drawCurve(69, -54, 78, 1);
$s2->drawCurve(80, -1, 43, 56);
$s2->drawLine(13, 22);
$i2 = $ledsombra->add($s2);
#$i2->scaleTo(1.574982, -1.574982);
$i2->scaleTo(0.72, -0.72);
$i2->rotateTo(-180);
#$i2->moveTo(369, 348);
#$i2->moveTo(185, 174);
$i2->multColor(1.000000, 1.000000, 1.000000, 0.351562);
$i2->addColor(0x00, 0x00, 0x00);
$ledsombra->nextFrame();
$ledbrillo = new SWF::Sprite();
$s4 = new SWF::Shape();
$g = new SWF::Gradient();
$g->addEntry(0.368627, 0x00, 0x00, 0x00, 0x00);
$g->addEntry(0.913725, 0x00, 0x00, 0x00, 0x99);
$f1 = $s4->addFill($g, SWFFILL_RADIAL_GRADIENT);
$f1->skewXTo(0.234316);
$f1->scaleTo(0.06, -0.06);
$f1->rotateTo(165.488144);
$f1->moveTo(383, 415);
$g = new SWF::Gradient();
$g->addEntry(0.000000, 0xff, 0xff, 0xff);
$g->addEntry(0.282353, 0xff, 0xff, 0xff, 0x8d);
$g->addEntry(1.000000, 0xff, 0xff, 0xff, 0x00);
$f2 = $s4->addFill($g, SWFFILL_RADIAL_GRADIENT);
$f2->skewXTo(0.234808);
$f2->scaleTo(0.030644, -0.027754);
$f2->rotateTo(165.465546);
$f2->moveTo(405, 500);
$g = new SWF::Gradient();
$g->addEntry(0.196078, 0xff, 0xff, 0xff);
$g->addEntry(0.921569, 0xff, 0xff, 0xff, 0x00);
$f3 = $s4->addFill($g, SWFFILL_RADIAL_GRADIENT);
$f3->skewXTo(0.103049);
$f3->scaleTo(0.015, -0.009);
$f3->rotateTo(170.450867);
$f3->moveTo(291, 115);
$s4->movePenTo(669, 336);
$s4->setRightFill($f1);
$s4->drawCurve(-34, -124, -113, -85);
$s4->drawCurve(-110, -86, -126, 0);
$s4->drawCurve(-126, 0, -67, 86);
$s4->drawCurve(-66, 85, 34, 124);
$s4->drawCurve(32, 119, 112, 88);
$s4->drawCurve(113, 85, 126, 0);
$s4->drawCurve(126, 0, 65, -85);
$s4->drawCurve(65, -88, -31, -119);
$s4->setLeftFill();
$s4->setRightFill();
#brillo grande inferior
$s4->movePenTo(286, 41);
$s4->setRightFill($f2);
$s4->drawCurve(-126, -2, -65, 88);
$s4->drawCurve(-65, 85, 31, 122);
$s4->drawCurve(34, 121, 110, 86);
$s4->drawCurve(113, 85, 126, 0);
$s4->drawCurve(126, 0, 65, -85);
$s4->drawCurve(67, -86, -33, -121);
$s4->drawCurve(-32, -122, -112, -85);
$s4->drawCurve(-113, -88, -126, 2);
$s4->setLeftFill();
$s4->setRightFill();
# brillo superior
$s4->movePenTo(184, 57);
$s4->setRightFill($f3);
$s4->drawCurve(-32, 24, 9, 34);
$s4->drawCurve(9, 34, 45, 23);
$s4->drawCurve(45, 25, 53, 0);
$s4->drawCurve(54, 0, 32, -25);
$s4->drawCurve(32, -23, -10, -34);
$s4->drawCurve(-8, -34, -45, -24);
$s4->drawCurve(-45, -24, -54, 0);
$s4->drawCurve(-53, 0, -32, 24);
$i6 = $ledbrillo->add($s4);
$i6->scaleTo(0.5);
$i6->moveTo(-185, -174);
$ledbrillo->nextFrame();
# Icons movieclips
####### Arrow
my $fle = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(5642, 3859);
$s1->setRightFill(0x33, 0x33, 0x33);
$s1->drawCurve(58, 58, 0, 83);
$s1->drawCurve(0, 83, -58, 59);
$s1->drawCurve(-59, 58, -83, 0);
$s1->drawCurve(-83, 0, -58, -58);
$s1->drawCurve(-59, -59, 0, -83);
$s1->drawCurve(0, -83, 59, -58);
$s1->drawCurve(58, -59, 83, 0);
$s1->drawCurve(83, 0, 59, 59);
$s1->movePenTo(5543, 3930);
$s1->setLeftFill(0x33, 0x33, 0x33);
$s1->setRightFill(0xff, 0xff, 0xff);
$s1->drawLine(66, 0);
$s1->drawLine(0, 144);
$s1->drawLine(-66, -1);
$s1->drawLine(0, 65);
$s1->drawLine(-191, -136);
$s1->drawLine(191, -139);
$s1->drawLine(0, 67);
$i1 = $fle->add($s1);
$i1->moveTo(-2750,-2000);
$i1->scaleTo(0.5);
$fle->nextFrame(); # end of frame 1
$fle->remove($i1);
### Shape 2 ###
$s2 = new SWF::Shape();
$s2->movePenTo(5500, 3800);
$s2->setRightFill(0x33, 0x33, 0x33);
$s2->drawCurve(83, 0, 59, 59);
$s2->drawCurve(58, 58, 0, 83);
$s2->drawCurve(0, 83, -58, 59);
$s2->drawCurve(-59, 58, -83, 0);
$s2->drawCurve(-83, 0, -58, -58);
$s2->drawCurve(-59, -59, 0, -83);
$s2->drawCurve(0, -83, 59, -58);
$s2->drawCurve(58, -59, 83, 0);
$s2->movePenTo(5457, 3927);
$s2->setLeftFill(0x33, 0x33, 0x33);
$s2->setRightFill(0xff, 0xff, 0xff);
$s2->drawLine(0, -64);
$s2->drawLine(192, 136);
$s2->drawLine(-192, 139);
$s2->drawLine(0, -67);
$s2->drawLine(-66, -1);
$s2->drawLine(0, -143);
$s2->drawLine(66, 0);
$i1 = $fle->add($s2);
$i1->moveTo(-2750,-2000);
$i1->scaleTo(0.5);
$fle->nextFrame(); # end of frame 2
$fle->remove($i1);
### Shape 3 ###
$s3 = new SWF::Shape();
$s3->movePenTo(5500, 3800);
$s3->setRightFill(0x33, 0x33, 0x33);
$s3->drawCurve(83, 0, 59, 59);
$s3->drawCurve(58, 58, 0, 83);
$s3->drawCurve(0, 83, -58, 59);
$s3->drawCurve(-59, 58, -83, 0);
$s3->drawCurve(-83, 0, -58, -58);
$s3->drawCurve(-59, -59, 0, -83);
$s3->drawCurve(0, -83, 59, -58);
$s3->drawCurve(58, -59, 83, 0);
$s3->movePenTo(5574, 3891);
$s3->setLeftFill(0x33, 0x33, 0x33);
$s3->setRightFill(0xff, 0xff, 0xff);
$s3->drawLine(-1, 66);
$s3->drawLine(65, 0);
$s3->drawLine(-136, 192);
$s3->drawLine(-139, -192);
$s3->drawLine(67, 0);
$s3->drawLine(0, -66);
$s3->drawLine(144, 0);
$i1 = $fle->add($s3);
$i1->moveTo(-2750,-2000);
$i1->scaleTo(0.5);
$fle->nextFrame(); # end of frame 3
$fle->remove($i1);
# Icon 3 Shape
my $s_icon2 = new SWF::Shape();
$s_icon2->movePenTo(3339, 2660);
$s_icon2->setRightFill(0xcc, 0xcc, 0xcc, 0x00);
$s_icon2->drawLine(-6639, 0);
$s_icon2->drawLine(0, -5340);
$s_icon2->drawLine(6639, 0);
$s_icon2->drawLine(0, 5340);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(2622, -2528);
$s_icon2->setLeftFill(0x00, 0x00, 0x00);
$s_icon2->drawCurve(-129, -82, -182, -26);
$s_icon2->drawLine(-329, -25);
$s_icon2->drawCurve(-648, -45, -912, 195);
$s_icon2->drawCurve(-744, 158, -633, 349);
$s_icon2->drawCurve(-748, 412, -329, 551);
$s_icon2->drawCurve(-141, 237, -51, 287);
$s_icon2->drawCurve(-53, 294, 58, 257);
$s_icon2->drawCurve(62, 279, 180, 170);
$s_icon2->drawCurve(200, 189, 319, 26);
$s_icon2->drawCurve(216, 17, 238, -98);
$s_icon2->drawCurve(235, -96, 173, -175);
$s_icon2->drawCurve(184, -185, 55, -214);
$s_icon2->drawCurve(61, -239, -116, -229);
$s_icon2->drawCurve(-52, -105, -126, -100);
$s_icon2->drawCurve(-62, -49, -166, -106);
$s_icon2->drawCurve(-3, 282, -101, 178);
$s_icon2->drawCurve(-125, 220, -251, 0);
$s_icon2->drawCurve(111, -550, 272, -330);
$s_icon2->drawCurve(277, -329, 620, -295);
$s_icon2->drawCurve(993, -472, 807, -4);
$s_icon2->drawCurve(-80, 192, -228, 70);
$s_icon2->drawCurve(-106, 32, -335, 29);
$s_icon2->drawCurve(-279, 25, -118, 70);
$s_icon2->drawCurve(-172, 104, -2, 258);
$s_icon2->drawCurve(-51, 5, -120, 41);
$s_icon2->drawCurve(-110, 39, -59, -2);
$s_icon2->drawCurve(-69, -4, -107, -35);
$s_icon2->drawLine(-170, -51);
$s_icon2->drawCurve(-196, -41, -128, 171);
$s_icon2->drawCurve(-95, 129, 38, 131);
$s_icon2->drawCurve(28, 96, 120, 135);
$s_icon2->drawLine(203, 230);
$s_icon2->drawCurve(103, 137, 3, 119);
$s_icon2->drawCurve(4, 185, -112, 228);
$s_icon2->drawCurve(-69, 140, -157, 226);
$s_icon2->drawLine(-125, 142);
$s_icon2->drawCurve(-84, 96, -4, 62);
$s_icon2->drawCurve(-2, 71, 112, 115);
$s_icon2->drawCurve(60, 62, 107, 92);
$s_icon2->drawCurve(600, 600, 500, 150);
$s_icon2->drawCurve(831, 245, 809, -555);
$s_icon2->drawCurve(237, -169, 36, -34);
$s_icon2->drawCurve(152, -145, -45, -132);
$s_icon2->drawCurve(-160, 62, -299, 191);
$s_icon2->drawCurve(-296, 188, -165, 62);
$s_icon2->drawCurve(-374, 141, -411, -83);
$s_icon2->drawCurve(-389, -79, -326, -256);
$s_icon2->drawCurve(-108, -86, -212, -211);
$s_icon2->drawCurve(-202, -200, -118, -89);
$s_icon2->drawLine(0, -20);
$s_icon2->drawCurve(183, -140, 118, -250);
$s_icon2->drawCurve(115, -245, 11, -262);
$s_icon2->drawCurve(12, -278, -114, -206);
$s_icon2->drawCurve(-126, -229, -259, -89);
$s_icon2->drawCurve(62, -182, 144, -25);
$s_icon2->drawCurve(148, -25, 106, 172);
$s_icon2->drawCurve(124, -21, 161, -65);
$s_icon2->drawCurve(187, -75, 68, -73);
$s_icon2->drawCurve(37, -39, 30, -107);
$s_icon2->drawCurve(32, -118, 27, -39);
$s_icon2->drawCurve(88, -134, 149, 2);
$s_icon2->drawCurve(145, 3, 92, 126);
$s_icon2->drawCurve(154, -44, 210, -119);
$s_icon2->drawCurve(241, -136, 68, -108);
$s_icon2->drawCurve(30, -49, 16, -93);
$s_icon2->drawLine(21, -151);
$s_icon2->drawCurve(-666, 0, -553, 127);
$s_icon2->drawCurve(-597, 137, -544, 302);
$s_icon2->drawCurve(-689, 377, -228, 437);
$s_icon2->drawCurve(-183, 355, 0, 704);
$s_icon2->drawCurve(369, 0, 209, -219);
$s_icon2->drawCurve(181, -192, 81, -388);
$s_icon2->drawCurve(213, 220, -59, 276);
$s_icon2->drawCurve(-53, 246, -237, 183);
$s_icon2->drawCurve(-238, 184, -270, -1);
$s_icon2->drawCurve(-302, -2, -198, -247);
$s_icon2->drawCurve(-232, -292, 179, -487);
$s_icon2->drawCurve(141, -381, 296, -316);
$s_icon2->drawCurve(363, -387, 717, -320);
$s_icon2->drawCurve(1330, -603, 950, 93);
$s_icon2->drawCurve(243, 22, 222, 130);
$s_icon2->drawCurve(220, 128, 130, 192);
$s_icon2->drawCurve(138, 204, -4, 219);
$s_icon2->drawCurve(-5, 242, -181, 217);
$s_icon2->drawCurve(-82, 99, -151, 23);
$s_icon2->drawCurve(-138, 21, -158, -47);
$s_icon2->drawCurve(-155, -46, -114, -93);
$s_icon2->drawCurve(-122, -99, -33, -118);
$s_icon2->drawCurve(-17, -55, 31, -76);
$s_icon2->drawLine(56, -129);
$s_icon2->drawLine(20, 0);
$s_icon2->drawCurve(53, 265, 224, 122);
$s_icon2->drawCurve(215, 117, 268, -64);
$s_icon2->drawCurve(-38, -177, -122, -27);
$s_icon2->drawLine(-126, -17);
$s_icon2->drawCurve(-86, -12, -68, -34);
$s_icon2->drawCurve(-217, -105, -63, -288);
$s_icon2->drawCurve(-320, 171, 54, 289);
$s_icon2->drawCurve(43, 235, 263, 245);
$s_icon2->drawCurve(-32, -19, -244, -117);
$s_icon2->drawCurve(-173, -83, -85, -75);
$s_icon2->drawCurve(-45, -38, -98, -166);
$s_icon2->drawCurve(-79, -133, -104, -36);
$s_icon2->drawCurve(-165, -56, -79, 193);
$s_icon2->drawCurve(-32, 79, 1, 87);
$s_icon2->drawCurve(0, 89, 35, 55);
$s_icon2->drawLine(20, 0);
$s_icon2->drawCurve(26, -54, 24, -26);
$s_icon2->drawCurve(112, -131, 75, 74);
$s_icon2->drawLine(63, 87);
$s_icon2->drawCurve(43, 67, 30, 29);
$s_icon2->drawCurve(35, 37, 81, 34);
$s_icon2->drawLine(131, 53);
$s_icon2->drawCurve(1018, 508, 332, 841);
$s_icon2->drawCurve(107, 286, 33, 129);
$s_icon2->drawCurve(69, 266, -46, 159);
$s_icon2->drawCurve(-39, 133, -133, 137);
$s_icon2->drawCurve(-61, 63, -180, 150);
$s_icon2->drawCurve(-374, 306, -372, 148);
$s_icon2->drawCurve(-452, 179, -402, -76);
$s_icon2->drawCurve(-469, -88, -484, -377);
$s_icon2->drawLine(-405, -339);
$s_icon2->drawCurve(-254, -217, -168, -119);
$s_icon2->drawCurve(-80, 281, 251, 280);
$s_icon2->drawCurve(88, 99, 154, 125);
$s_icon2->drawLine(247, 198);
$s_icon2->drawCurve(536, 454, 708, 42);
$s_icon2->drawCurve(699, 41, 597, -374);
$s_icon2->drawCurve(223, -143, 283, -294);
$s_icon2->drawCurve(357, -370, 117, -99);
$s_icon2->drawCurve(-95, -688, -323, -580);
$s_icon2->drawCurve(-372, -668, -550, -263);
$s_icon2->drawLine(179, 13);
$s_icon2->drawLine(184, 26);
$s_icon2->drawCurve(224, 25, 129, -78);
$s_icon2->drawCurve(208, -128, 96, -235);
$s_icon2->drawCurve(88, -215, -23, -261);
$s_icon2->drawCurve(-21, -252, -117, -218);
$s_icon2->drawCurve(-121, -225, -186, -119);
$s_icon2->movePenTo(-782, -2506);
$s_icon2->drawCurve(-149, -33, -83, -2);
$s_icon2->drawCurve(-259, -6, -25, 266);
$s_icon2->drawCurve(-290, -76, -185, 73);
$s_icon2->drawCurve(-225, 89, 0, 294);
$s_icon2->drawCurve(-141, -25, -128, 24);
$s_icon2->drawCurve(-129, 24, -80, 69);
$s_icon2->drawCurve(-187, 161, 165, 287);
$s_icon2->drawLine(-230, 10);
$s_icon2->drawCurve(-136, 18, -71, 65);
$s_icon2->drawCurve(-126, 109, 28, 183);
$s_icon2->drawCurve(28, 181, 147, 74);
$s_icon2->drawLine(0, 20);
$s_icon2->drawCurve(-194, 18, -117, 128);
$s_icon2->drawCurve(-106, 116, -3, 155);
$s_icon2->drawCurve(-2, 157, 103, 106);
$s_icon2->drawCurve(116, 118, 203, 1);
$s_icon2->drawLine(0, 20);
$s_icon2->drawCurve(-208, 97, -38, 224);
$s_icon2->drawCurve(-40, 230, 186, 139);
$s_icon2->drawCurve(74, 54, 107, 12);
$s_icon2->drawCurve(35, 4, 164, 0);
$s_icon2->drawLine(-60, 137);
$s_icon2->drawCurve(-28, 79, 11, 64);
$s_icon2->drawCurve(29, 212, 260, 95);
$s_icon2->drawCurve(212, 77, 236, -28);
$s_icon2->drawCurve(179, -21, 199, -113);
$s_icon2->drawCurve(41, -23, 301, -199);
$s_icon2->drawCurve(-117, -134, -83, 14);
$s_icon2->drawCurve(-75, 15, -83, 46);
$s_icon2->drawLine(-138, 86);
$s_icon2->drawCurve(-173, 108, -151, -15);
$s_icon2->drawCurve(-126, -12, -90, -60);
$s_icon2->drawCurve(-86, -57, -28, -82);
$s_icon2->drawCurve(-30, -85, 40, -84);
$s_icon2->drawCurve(43, -92, 117, -68);
$s_icon2->drawLine(0, -20);
$s_icon2->drawCurve(-701, 0, 91, -340);
$s_icon2->drawCurve(24, -81, 83, -89);
$s_icon2->drawCurve(100, -97, 43, -53);
$s_icon2->drawCurve(-151, -41, -72, -29);
$s_icon2->drawCurve(-123, -49, -64, -84);
$s_icon2->drawCurve(-149, -193, 200, -133);
$s_icon2->drawCurve(161, -107, 218, -3);
$s_icon2->drawLine(0, -20);
$s_icon2->drawCurve(-72, -45, -65, -75);
$s_icon2->drawCurve(-215, -237, 221, -118);
$s_icon2->drawCurve(159, -85, 292, 0);
$s_icon2->drawLine(-82, -164);
$s_icon2->drawCurve(-50, -100, -2, -76);
$s_icon2->drawCurve(-2, -184, 225, -21);
$s_icon2->drawLine(351, 25);
$s_icon2->drawCurve(-50, -142, -4, -38);
$s_icon2->drawCurve(-19, -292, 267, 5);
$s_icon2->drawCurve(148, 2, 298, 85);
$s_icon2->drawCurve(-113, -272, 214, -40);
$s_icon2->drawCurve(100, -19, 319, 51);
$s_icon2->drawLine(40, -120);
$s_icon2->drawLine(-224, -45);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(2838, -1701);
$s_icon2->setLeftFill(0xb8, 0xb8, 0xd9);
$s_icon2->drawCurve(-9, -387, -364, -223);
$s_icon2->drawCurve(-310, -190, -413, 0);
$s_icon2->drawCurve(-688, 0, -717, 217);
$s_icon2->drawCurve(-699, 212, -596, 377);
$s_icon2->drawCurve(-609, 384, -171, 390);
$s_icon2->drawLine(20, 0);
$s_icon2->drawCurve(317, -418, 522, -307);
$s_icon2->drawCurve(396, -235, 625, -224);
$s_icon2->drawCurve(782, -281, 518, -12);
$s_icon2->drawCurve(1039, -30, 257, 547);
$s_icon2->drawCurve(64, 137, 0, 323);
$s_icon2->drawCurve(33, -55, 5, -80);
$s_icon2->drawCurve(3, -35, -5, -110);
$s_icon2->movePenTo(-598, -2341);
$s_icon2->drawCurve(-225, -62, -86, -5);
$s_icon2->drawCurve(-200, -11, -49, 138);
$s_icon2->drawLine(520, 40);
$s_icon2->drawLine(40, -100);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(1782, -2181);
$s_icon2->setLeftFill(0xb8, 0xb8, 0xd9);
$s_icon2->drawCurve(-965, 4, -1075, 586);
$s_icon2->drawCurve(-670, 361, -210, 489);
$s_icon2->drawLine(20, 0);
$s_icon2->drawCurve(385, -610, 887, -381);
$s_icon2->drawCurve(806, -347, 802, -2);
$s_icon2->drawLine(20, -100);
$s_icon2->movePenTo(-1669, -2135);
$s_icon2->drawCurve(-97, 52, -32, 102);
$s_icon2->drawCurve(154, -93, 165, 20);
$s_icon2->drawCurve(126, 15, 195, 98);
$s_icon2->drawCurve(-23, -101, -91, -64);
$s_icon2->drawCurve(-85, -59, -111, -9);
$s_icon2->drawCurve(-113, -8, -88, 47);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(1822, -1981);
$s_icon2->setLeftFill(0xb8, 0xb8, 0xd9);
$s_icon2->drawLine(-640, 380);
$s_icon2->drawCurve(-51, -103, -88, -29);
$s_icon2->drawCurve(-79, -25, -90, 37);
$s_icon2->drawCurve(-85, 35, -65, 76);
$s_icon2->drawCurve(-66, 79, -16, 90);
$s_icon2->drawLine(20, 0);
$s_icon2->drawCurve(49, -114, 94, -53);
$s_icon2->drawCurve(104, -59, 113, 52);
$s_icon2->drawCurve(28, 15, 55, 46);
$s_icon2->drawCurve(53, 38, 44, -2);
$s_icon2->drawCurve(69, -4, 117, -80);
$s_icon2->drawLine(174, -123);
$s_icon2->drawLine(171, -101);
$s_icon2->drawCurve(104, -75, -15, -80);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(-2338, -1501);
$s_icon2->setLeftFill(0xb8, 0xb8, 0xd9);
$s_icon2->drawLine(20, 0);
$s_icon2->drawCurve(83, -105, 157, -8);
$s_icon2->drawCurve(86, -4, 194, 37);
$s_icon2->drawCurve(-31, -85, -86, -36);
$s_icon2->drawCurve(-78, -34, -96, 16);
$s_icon2->drawCurve(-96, 16, -68, 56);
$s_icon2->drawCurve(-74, 61, -11, 86);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(1782, -1661);
$s_icon2->setLeftFill(0xb8, 0xb8, 0xd9);
$s_icon2->drawLine(-100, 220);
$s_icon2->drawLine(20, 0);
$s_icon2->drawLine(80, -100);
$s_icon2->drawCurve(45, 260, 236, 116);
$s_icon2->drawCurve(218, 108, 261, -64);
$s_icon2->drawCurve(-29, -71, -184, -32);
$s_icon2->drawCurve(-229, -40, -38, -21);
$s_icon2->drawCurve(-95, -50, -69, -119);
$s_icon2->drawCurve(-69, -140, -47, -67);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(-2598, -1361);
$s_icon2->setLeftFill(0xb8, 0xb8, 0xd9);
$s_icon2->drawLine(100, 0);
$s_icon2->drawLine(-100, -220);
$s_icon2->drawLine(0, 220);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(1242, -1541);
$s_icon2->setLeftFill(0xff, 0xff, 0xff);
$s_icon2->drawLine(-60, 40);
$s_icon2->drawLine(120, 240);
$s_icon2->drawLine(20, 0);
$s_icon2->drawLine(-80, -280);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(1982, -861);
$s_icon2->setLeftFill(0xb8, 0xb8, 0xd9);
$s_icon2->drawCurve(181, 126, 206, 18);
$s_icon2->drawCurve(235, 20, 154, -144);
$s_icon2->drawCurve(131, -130, -7, -90);
$s_icon2->drawCurve(-188, 202, -230, 24);
$s_icon2->drawCurve(-132, 14, -350, -60);
$s_icon2->drawLine(0, 20);
$s_icon2->movePenTo(722, -1241);
$s_icon2->drawLine(20, 180);
$s_icon2->drawLine(40, 0);
$s_icon2->drawLine(40, -120);
$s_icon2->drawLine(-100, -60);
$s_icon2->movePenTo(-595, -849);
$s_icon2->drawCurve(41, 83, 106, 120);
$s_icon2->drawCurve(131, 148, 36, 52);
$s_icon2->drawCurve(84, 122, 19, 123);
$s_icon2->drawLine(20, 0);
$s_icon2->drawCurve(48, -216, -203, -264);
$s_icon2->drawCurve(-252, -280, -73, -140);
$s_icon2->drawCurve(-17, 132, 60, 120);
$s_icon2->movePenTo(-2778, -901);
$s_icon2->drawLine(20, 0);
$s_icon2->drawCurve(73, -138, 162, -29);
$s_icon2->drawCurve(99, -17, 206, 24);
$s_icon2->drawCurve(-55, -80, -91, -23);
$s_icon2->drawCurve(-84, -21, -92, 30);
$s_icon2->drawCurve(-89, 30, -65, 66);
$s_icon2->drawCurve(-68, 71, -16, 87);
$s_icon2->movePenTo(-2858, -721);
$s_icon2->drawLine(-200, -280);
$s_icon2->drawCurve(-47, 325, 247, -25);
$s_icon2->drawLine(0, -20);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(1102, -795);
$s_icon2->setLeftFill(0x00, 0x00, 0x00);
$s_icon2->drawCurve(-299, 24, -163, 104);
$s_icon2->drawCurve(-189, 120, -83, 266);
$s_icon2->drawCurve(-82, 264, 53, 286);
$s_icon2->drawCurve(51, 274, 161, 235);
$s_icon2->drawCurve(163, 237, 236, 137);
$s_icon2->drawCurve(251, 146, 281, 0);
$s_icon2->drawLine(340, -16);
$s_icon2->drawCurve(185, -36, 108, -128);
$s_icon2->drawCurve(216, -256, -19, -343);
$s_icon2->drawCurve(-18, -315, -203, -281);
$s_icon2->drawCurve(-203, -282, -294, -119);
$s_icon2->drawCurve(-320, -129, -312, 119);
$s_icon2->drawCurve(-213, 81, -41, 294);
$s_icon2->drawCurve(-37, 261, 107, 210);
$s_icon2->drawCurve(236, 471, 668, 49);
$s_icon2->drawLine(-60, -260);
$s_icon2->drawCurve(-204, -19, -180, -124);
$s_icon2->drawCurve(-195, -133, -55, -184);
$s_icon2->drawCurve(-69, -228, 153, -170);
$s_icon2->drawCurve(156, -172, 234, 64);
$s_icon2->drawCurve(164, 47, 156, 173);
$s_icon2->drawCurve(152, 168, 76, 212);
$s_icon2->drawCurve(81, 226, -43, 182);
$s_icon2->drawCurve(-48, 206, -202, 98);
$s_icon2->drawCurve(-171, 82, -325, -75);
$s_icon2->drawCurve(-207, -47, -189, -174);
$s_icon2->drawCurve(-184, -168, -102, -227);
$s_icon2->drawCurve(-108, -238, 23, -218);
$s_icon2->drawCurve(26, -242, 184, -162);
$s_icon2->drawCurve(156, -140, 223, -12);
$s_icon2->drawCurve(98, -5, 320, 41);
$s_icon2->drawCurve(-32, -107, -152, -45);
$s_icon2->drawCurve(-119, -34, -137, 12);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(997, -640);
$s_icon2->setLeftFill(0xb8, 0xb8, 0xd9);
$s_icon2->drawCurve(-267, 49, -108, 250);
$s_icon2->drawCurve(225, -156, 192, -34);
$s_icon2->drawCurve(159, -28, 304, 38);
$s_icon2->drawLine(0, -100);
$s_icon2->drawCurve(-345, -48, -160, 29);
$s_icon2->movePenTo(-838, -601);
$s_icon2->drawLine(-20, -180);
$s_icon2->drawLine(0, 180);
$s_icon2->drawLine(20, 0);
$s_icon2->movePenTo(-698, -661);
$s_icon2->drawLine(140, 480);
$s_icon2->drawLine(20, 0);
$s_icon2->drawCurve(41, -332, -201, -148);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(1422, -641);
$s_icon2->setLeftFill(0xff, 0xff, 0xff);
$s_icon2->drawLine(0, 20);
$s_icon2->drawLine(60, 0);
$s_icon2->drawLine(-60, -20);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(-2978, -361);
$s_icon2->setLeftFill(0xb8, 0xb8, 0xd9);
$s_icon2->drawLine(20, 0);
$s_icon2->drawCurve(148, -149, 272, 29);
$s_icon2->drawCurve(-113, -105, -147, 35);
$s_icon2->drawCurve(-151, 36, -29, 154);
$s_icon2->movePenTo(-878, -581);
$s_icon2->drawLine(0, 60);
$s_icon2->drawLine(20, 0);
$s_icon2->drawLine(-20, -60);
$s_icon2->movePenTo(-1498, -561);
$s_icon2->drawLine(-80, 799);
$s_icon2->drawCurve(587, 0, 113, -379);
$s_icon2->drawCurve(-189, 151, -116, 54);
$s_icon2->drawCurve(-157, 74, -198, 0);
$s_icon2->drawLine(40, -699);
$s_icon2->setLeftFill();
$s_icon2->setRightFill();
$s_icon2->movePenTo(3262, 1358);
$s_icon2->setLeftFill(0xb8, 0xb8, 0xd9);
$s_icon2->drawCurve(-86, 165, -193, 189);
$s_icon2->drawCurve(-112, 109, -229, 187);
$s_icon2->drawCurve(-629, 502, -708, 55);
$s_icon2->drawCurve(-743, 57, -640, -458);
$s_icon2->drawCurve(-197, -141, -249, -270);
$s_icon2->drawCurve(-333, -360, -81, -75);
$s_icon2->drawCurve(-13, 109, 53, 89);
$s_icon2->drawCurve(21, 35, 112, 127);
$s_icon2->drawCurve(276, 313, 351, 260);
$s_icon2->drawCurve(645, 481, 791, -73);
$s_icon2->drawCurve(742, -68, 638, -523);
$s_icon2->drawCurve(253, -204, 108, -111);
$s_icon2->drawCurve(210, -217, 33, -178);
$s_icon2->drawLine(-20, 0);
$s_icon2->movePenTo(1002, -141);
$s_icon2->drawCurve(217, -130, 198, 37);
$s_icon2->drawCurve(176, 34, 142, 160);
$s_icon2->drawCurve(128, 145, 73, 217);
$s_icon2->drawCurve(70, 210, -4, 206);
$s_icon2->drawCurve(122, -229, -122, -321);
$s_icon2->drawCurve(-115, -301, -225, -148);
$s_icon2->drawCurve(-182, -119, -191, 20);
$s_icon2->drawCurve(-212, 22, -75, 197);
$s_icon2->movePenTo(715, 67);
$s_icon2->drawCurve(-9, -110, -24, -58);
$s_icon2->drawCurve(-37, 463, 266, 293);
$s_icon2->drawCurve(261, 287, 470, 36);
$s_icon2->drawCurve(-21, -95, -230, -77);
$s_icon2->drawLine(-185, -61);
$s_icon2->drawCurve(-99, -37, -45, -37);
$s_icon2->drawCurve(-261, -203, -63, -230);
$s_icon2->drawCurve(-13, -46, -10, -125);
$s_icon2->movePenTo(302, -101);
$s_icon2->drawCurve(-83, 436, 216, 406);
$s_icon2->drawCurve(216, 409, 411, 174);
$s_icon2->drawCurve(281, 122, 321, -39);
$s_icon2->drawCurve(375, -45, 103, -264);
$s_icon2->drawCurve(-223, 155, -254, 35);
$s_icon2->drawCurve(-241, 33, -238, -79);
$s_icon2->drawCurve(-233, -78, -192, -171);
$s_icon2->drawCurve(-196, -173, -120, -242);
$s_icon2->drawCurve(-59, -117, -21, -227);
$s_icon2->drawCurve(-24, -239, -39, -96);
$s_icon2->movePenTo(-2258, -441);
$s_icon2->drawLine(0, 140);
$s_icon2->drawLine(20, 0);
$s_icon2->drawLine(-20, -140);
$s_icon2->movePenTo(-2278, -201);
$s_icon2->drawCurve(0, 568, 246, 224);
$s_icon2->drawCurve(166, 146, 238, 49);
$s_icon2->drawCurve(227, 47, 234, -52);
$s_icon2->drawCurve(237, -54, 174, -140);
$s_icon2->drawCurve(188, -151, 70, -218);
$s_icon2->drawLine(-20, 0);
$s_icon2->drawCurve(-128, 172, -184, 124);
$s_icon2->drawCurve(-189, 127, -204, 47);
$s_icon2->drawCurve(-472, 109, -320, -339);
$s_icon2->drawCurve(-109, -115, -53, -204);
$s_icon2->drawLine(-41, -169);
$s_icon2->drawCurve(-27, -100, -33, -71);
$s_icon2->movePenTo(-3318, -281);
$s_icon2->drawCurve(-27, 225, 136, 145);
$s_icon2->drawCurve(147, 158, 204, -129);
$s_icon2->drawLine(0, -20);
$s_icon2->drawCurve(-188, -5, -105, -110);
$s_icon2->drawCurve(-31, -34, -136, -230);
$s_icon2->movePenTo(-2722, 231);
$s_icon2->drawCurve(-60, 81, -16, 106);
$s_icon2->drawLine(20, 0);
$s_icon2->drawLine(220, -240);
$s_icon2->drawCurve(-89, -49, -75, 102);
$s_icon2->movePenTo(-3138, 518);
$s_icon2->drawCurve(0, 134, 17, 70);
$s_icon2->drawCurve(26, 104, 77, 65);
$s_icon2->drawCurve(96, 85, 141, 10);
$s_icon2->drawCurve(159, 11, 44, -119);
$s_icon2->drawCurve(-222, 0, -117, -85);
$s_icon2->drawCurve(-87, -64, -134, -211);
$s_icon2->movePenTo(-2398, 998);
$s_icon2->drawLine(20, 0);
$s_icon2->drawLine(180, -160);
$s_icon2->drawCurve(-80, -32, -56, 57);
$s_icon2->drawCurve(-46, 47, -18, 88);
$s_icon2->movePenTo(-598, -21);
$s_icon2->drawLine(20, 0);
$s_icon2->drawLine(-20, -60);
$s_icon2->drawLine(0, 60);
$s_icon2->movePenTo(-578, -161);
$s_icon2->drawLine(0, 60);
$s_icon2->drawLine(20, 0);
$s_icon2->drawLine(-20, -60);
$s_icon2->movePenTo(-168, 562);
$s_icon2->drawCurve(94, -131, -24, -93);
$s_icon2->drawLine(-260, 380);
$s_icon2->drawLine(20, 20);
$s_icon2->drawCurve(101, -81, 69, -95);
$s_icon2->movePenTo(-698, 818);
$s_icon2->drawLine(-60, 60);
$s_icon2->drawLine(0, 20);
$s_icon2->drawCurve(307, 308, 131, 122);
$s_icon2->drawCurve(265, 244, 228, 154);
$s_icon2->drawCurve(599, 403, 570, -75);
$s_icon2->drawCurve(309, -39, 351, -191);
$s_icon2->drawCurve(294, -154, 122, -85);
$s_icon2->drawCurve(275, -191, 9, -156);
$s_icon2->drawLine(-390, 293);
$s_icon2->drawCurve(-232, 175, -178, 85);
$s_icon2->drawCurve(-430, 205, -467, -64);
$s_icon2->drawCurve(-434, -60, -409, -284);
$s_icon2->drawCurve(-184, -127, -256, -250);
$s_icon2->drawCurve(-315, -306, -105, -87);
$s_icon2->movePenTo(-1658, 1431);
$s_icon2->drawCurve(-313, 133, -261, -74);
$s_icon2->drawCurve(-262, -75, -184, -277);
$s_icon2->drawCurve(0, 267, 181, 123);
$s_icon2->drawCurve(158, 107, 265, -18);
$s_icon2->drawCurve(240, -17, 240, -109);
$s_icon2->drawCurve(239, -109, 117, -144);
$s_icon2->drawCurve(-86, -8, -129, 78);
$s_icon2->drawLine(-205, 123);
$s_icon2->movePenTo(-898, 1298);
$s_icon2->drawLine(-20, -60);
$s_icon2->drawLine(0, 60);
$s_icon2->drawLine(20, 0);
# icon3 Movieclip
my $i_icon2 = new SWF::Sprite();
my $item = $i_icon2->add($s_icon2);
$item->scaleTo(0.5);
$i_icon2->nextFrame();
# icon1 Shapes
my $s_icon1 = new SWF::Shape();
$s_icon1->movePenTo(6960, 2721);
$s_icon1->setLeftFill(0xab, 0x97, 0xfd);
$s_icon1->setRightFill(0x01, 0x01, 0x01);
$s_icon1->drawCurve(-210, 0, -370, -108);
$s_icon1->drawCurve(-397, -117, -183, -12);
$s_icon1->drawCurve(-191, -13, -375, 85);
$s_icon1->drawCurve(-367, 83, -187, -18);
$s_icon1->drawCurve(-80, -8, -114, -61);
$s_icon1->drawCurve(-142, -76, -44, -15);
$s_icon1->drawCurve(-17, 176, 7, 76);
$s_icon1->drawCurve(13, 135, 80, 93);
$s_icon1->drawCurve(70, 80, 122, 54);
$s_icon1->drawCurve(120, 52, 130, 9);
$s_icon1->drawCurve(309, 19, 106, -214);
$s_icon1->drawCurve(-302, 0, -158, -220);
$s_icon1->drawCurve(64, -12, 125, 24);
$s_icon1->drawCurve(127, 24, 64, -10);
$s_icon1->drawCurve(45, -7, 102, -38);
$s_icon1->drawCurve(93, -34, 60, -4);
$s_icon1->drawCurve(228, -17, 308, 73);
$s_icon1->drawCurve(177, 42, 347, 102);
$s_icon1->drawLine(343, 97);
$s_icon1->drawCurve(193, 67, 117, 99);
$s_icon1->drawCurve(91, 75, 54, 126);
$s_icon1->drawCurve(24, 54, 51, 174);
$s_icon1->drawCurve(41, 141, 45, 72);
$s_icon1->drawCurve(66, 103, 115, 49);
$s_icon1->drawCurve(356, 155, 280, -58);
$s_icon1->drawCurve(334, -69, 90, -368);
$s_icon1->drawCurve(31, -119, -31, -141);
$s_icon1->drawCurve(-226, 104, -217, -10);
$s_icon1->drawCurve(-189, -10, -248, -104);
$s_icon1->drawLine(0, -40);
$s_icon1->drawCurve(68, -13, 102, 16);
$s_icon1->drawLine(179, 32);
$s_icon1->drawCurve(223, 38, 121, -90);
$s_icon1->drawCurve(262, -193, -276, -280);
$s_icon1->drawCurve(-161, -164, -318, -170);
$s_icon1->drawCurve(-330, -173, -454, -126);
$s_icon1->drawLine(-816, -194);
$s_icon1->drawCurve(-357, -91, -179, -40);
$s_icon1->drawCurve(-311, -70, -233, -2);
$s_icon1->drawCurve(-268, 0, -168, 30);
$s_icon1->drawCurve(-229, 42, -175, 111);
$s_icon1->drawCurve(-112, 68, -41, 105);
$s_icon1->drawCurve(-46, 117, 75, 103);
$s_icon1->drawCurve(142, 191, 288, -44);
$s_icon1->drawCurve(81, -12, 163, -46);
$s_icon1->drawCurve(159, -45, 71, -10);
$s_icon1->drawCurve(256, -37, 349, 65);
$s_icon1->drawLine(595, 142);
$s_icon1->drawCurve(179, 44, 67, 25);
$s_icon1->drawCurve(146, 53, 68, 78);
$s_icon1->movePenTo(8890, 3055);
$s_icon1->setLeftFill(0x01, 0x01, 0x01);
$s_icon1->setRightFill();
$s_icon1->drawLine(-184, -161);
$s_icon1->drawCurve(-44, -46, -92, -148);
$s_icon1->drawCurve(-79, -126, -75, -60);
$s_icon1->drawCurve(-365, -300, -771, -257);
$s_icon1->drawCurve(-573, -192, -402, -78);
$s_icon1->drawCurve(-544, -105, -461, 45);
$s_icon1->drawCurve(-503, 48, -237, 96);
$s_icon1->drawCurve(-60, 23, -111, 68);
$s_icon1->drawCurve(-111, 67, -58, 22);
$s_icon1->drawCurve(-40, 15, -82, 3);
$s_icon1->drawCurve(-82, 3, -40, 15);
$s_icon1->drawCurve(-53, 20, -119, 105);
$s_icon1->drawCurve(-107, 94, -71, 11);
$s_icon1->drawCurve(-56, 9, -118, -51);
$s_icon1->drawCurve(-129, -61, -43, -17);
$s_icon1->drawCurve(-527, -190, -273, 164);
$s_icon1->drawCurve(-188, 109, 28, 283);
$s_icon1->drawCurve(13, 121, 53, 108);
$s_icon1->drawCurve(54, 110, 80, 59);
$s_icon1->drawCurve(258, 187, 355, -123);
$s_icon1->drawCurve(333, -116, 174, -288);
$s_icon1->drawCurve(-23, 128, -126, 169);
$s_icon1->drawCurve(-70, 95, -141, 168);
$s_icon1->drawCurve(-405, 538, -135, 304);
$s_icon1->drawCurve(-244, 549, 214, 409);
$s_icon1->drawCurve(103, 203, 218, 138);
$s_icon1->drawCurve(114, 73, 315, 136);
$s_icon1->drawLine(980, 430);
$s_icon1->drawCurve(1131, 483, 649, 193);
$s_icon1->drawCurve(888, 261, 572, -261);
$s_icon1->drawCurve(214, -102, 246, -247);
$s_icon1->drawLine(400, -427);
$s_icon1->drawLine(377, -387);
$s_icon1->drawCurve(216, -246, 67, -207);
$s_icon1->drawCurve(46, -139, 10, -207);
$s_icon1->drawLine(7, -354);
$s_icon1->drawCurve(16, -277, -3, -138);
$s_icon1->drawCurve(-6, -239, -77, -166);
$s_icon1->drawLine(-27, -51);
$s_icon1->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1->drawLine(14, 85);
$s_icon1->drawCurve(23, 232, -120, 314);
$s_icon1->drawCurve(-250, 661, -643, 925);
$s_icon1->drawCurve(-183, 258, -82, 85);
$s_icon1->drawCurve(-159, 165, -206, 66);
$s_icon1->drawCurve(-309, 97, -361, -54);
$s_icon1->drawCurve(-207, -31, -443, -136);
$s_icon1->drawCurve(-1336, -403, -844, -343);
$s_icon1->drawCurve(-396, -159, -159, -91);
$s_icon1->drawCurve(-296, -170, -149, -234);
$s_icon1->drawCurve(-275, -428, 295, -570);
$s_icon1->drawCurve(100, -194, 198, -266);
$s_icon1->drawLine(302, -405);
$s_icon1->drawCurve(37, -55, 111, -125);
$s_icon1->drawCurve(102, -115, 40, -68);
$s_icon1->drawCurve(14, -23, 11, -42);
$s_icon1->drawLine(18, -69);
$s_icon1->drawCurve(27, -78, 76, -8);
$s_icon1->drawCurve(64, -7, 23, 86);
$s_icon1->drawCurve(18, 68, -15, 63);
$s_icon1->drawLine(-57, 248);
$s_icon1->drawCurve(-23, 149, 44, 99);
$s_icon1->drawCurve(45, 104, 161, 111);
$s_icon1->drawCurve(77, 54, 187, 101);
$s_icon1->drawCurve(362, 200, 568, 165);
$s_icon1->drawCurve(323, 95, 647, 170);
$s_icon1->drawCurve(227, 67, 465, 162);
$s_icon1->drawCurve(420, 137, 288, 34);
$s_icon1->drawCurve(199, 24, 202, -62);
$s_icon1->drawCurve(198, -60, 156, -128);
$s_icon1->drawCurve(161, -133, 79, -177);
$s_icon1->drawCurve(84, -190, -26, -210);
$s_icon1->drawCurve(-8, -72, -55, -83);
$s_icon1->drawLine(-90, -145);
$s_icon1->drawLine(50, 14);
$s_icon1->setLeftFill();
$s_icon1->drawCurve(221, 72, 55, 223);
$s_icon1->movePenTo(8526, 5034);
$s_icon1->setLeftFill(0xff, 0xff, 0xff);
$s_icon1->drawCurve(-3, 3, 7, 14);
$s_icon1->drawCurve(3, -24, -7, 7);
$s_icon1->movePenTo(7747, 4921);
$s_icon1->setLeftFill(0x01, 0x01, 0x01);
$s_icon1->drawCurve(101, 43, 112, 17);
$s_icon1->drawCurve(30, -58, 61, -105);
$s_icon1->drawCurve(51, -93, 18, -84);
$s_icon1->drawCurve(-86, -31, -274, -69);
$s_icon1->drawLine(-95, 113);
$s_icon1->drawCurve(-55, 71, -4, 56);
$s_icon1->drawCurve(-2, 78, 143, 62);
$s_icon1->movePenTo(7403, 4394);
$s_icon1->drawCurve(-98, -20, -82, 50);
$s_icon1->drawCurve(-98, 58, -2, 82);
$s_icon1->drawCurve(-2, 71, 68, 67);
$s_icon1->drawCurve(64, 63, 85, 24);
$s_icon1->drawCurve(92, 26, 60, -38);
$s_icon1->drawCurve(104, -64, 12, -88);
$s_icon1->drawCurve(10, -77, -62, -69);
$s_icon1->drawCurve(-60, -66, -91, -19);
$s_icon1->movePenTo(7011, 4245);
$s_icon1->drawCurve(-112, -53, -59, 12);
$s_icon1->drawCurve(-118, 23, -15, 111);
$s_icon1->drawCurve(-14, 99, 66, 102);
$s_icon1->drawCurve(68, 104, 90, 8);
$s_icon1->drawCurve(106, 10, 80, -140);
$s_icon1->drawCurve(22, -41, 55, -159);
$s_icon1->drawCurve(-17, -5, -152, -71);
$s_icon1->movePenTo(6604, 4692);
$s_icon1->setLeftFill(0xff, 0x01, 0x01);
$s_icon1->setRightFill(0x01, 0x01, 0x01);
$s_icon1->drawCurve(-115, 19, -29, 150);
$s_icon1->drawCurve(117, 56, 163, 44);
$s_icon1->drawCurve(75, -146, 25, -74);
$s_icon1->drawCurve(-150, -63, -86, 14);
$s_icon1->movePenTo(6543, 4644);
$s_icon1->setLeftFill(0x01, 0x01, 0x01);
$s_icon1->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1->drawCurve(-89, 47, -29, 96);
$s_icon1->drawCurve(-32, 103, 87, 54);
$s_icon1->drawCurve(56, 31, 64, 19);
$s_icon1->drawCurve(76, 27, 104, 0);
$s_icon1->drawCurve(83, -157, 3, -80);
$s_icon1->drawCurve(4, -65, -114, -42);
$s_icon1->drawCurve(-142, -71, -71, 38);
$s_icon1->movePenTo(6969, 4928);
$s_icon1->drawCurve(-70, 113, 21, 40);
$s_icon1->drawCurve(27, 56, 110, 23);
$s_icon1->drawCurve(93, 18, -10, 43);
$s_icon1->drawLine(90, -13);
$s_icon1->drawCurve(31, -11, 39, -56);
$s_icon1->drawLine(68, -93);
$s_icon1->drawCurve(42, -62, -10, -45);
$s_icon1->drawCurve(-13, -48, -129, -57);
$s_icon1->drawCurve(-129, -57, -49, 22);
$s_icon1->drawCurve(-45, 19, -66, 108);
$s_icon1->movePenTo(7029, 5315);
$s_icon1->drawCurve(-83, -34, -46, -7);
$s_icon1->drawCurve(-70, -13, -104, 114);
$s_icon1->drawCurve(-103, 114, 20, 68);
$s_icon1->drawCurve(24, 74, 140, 45);
$s_icon1->drawCurve(139, 46, 64, -41);
$s_icon1->drawCurve(66, -39, 42, -103);
$s_icon1->drawCurve(36, -86, 6, -92);
$s_icon1->drawCurve(-41, -9, -90, -37);
$s_icon1->movePenTo(7193, 5081);
$s_icon1->setLeftFill(0xff, 0xff, 0xff);
$s_icon1->setRightFill(0x01, 0x01, 0x01);
$s_icon1->drawCurve(65, -18, 82, -142);
$s_icon1->drawLine(-260, -80);
$s_icon1->drawLine(-100, 200);
$s_icon1->drawCurve(160, 55, 53, -15);
$s_icon1->movePenTo(6552, 5178);
$s_icon1->setLeftFill(0x01, 0x01, 0x01);
$s_icon1->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1->drawCurve(-74, -72, -198, -45);
$s_icon1->drawCurve(-144, 202, 61, 112);
$s_icon1->drawCurve(55, 100, 248, 66);
$s_icon1->drawCurve(140, -215, -58, -109);
$s_icon1->drawLine(-23, -32);
$s_icon1->setRightFill(0xff, 0xff, 0xff);
$s_icon1->drawCurve(-12, 47, -67, 149);
$s_icon1->drawCurve(-160, -16, -120, -64);
$s_icon1->drawCurve(41, -157, 90, -17);
$s_icon1->drawCurve(63, -12, 158, 63);
$s_icon1->setLeftFill(0xc9, 0xc9, 0xc9);
$s_icon1->drawLine(8, 3);
$s_icon1->drawLine(-1, 4);
$s_icon1->movePenTo(7232, 5819);
$s_icon1->setLeftFill(0x01, 0x01, 0x01);
$s_icon1->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1->drawCurve(77, 40, 124, -28);
$s_icon1->drawCurve(125, -28, 52, -72);
$s_icon1->drawCurve(61, -82, -88, -95);
$s_icon1->drawCurve(-26, -28, -81, -32);
$s_icon1->drawCurve(-93, -38, -23, -15);
$s_icon1->drawCurve(-93, 85, -27, 38);
$s_icon1->drawCurve(-37, 55, -17, 42);
$s_icon1->drawCurve(-43, 112, 89, 46);
$s_icon1->movePenTo(7007, 5486);
$s_icon1->setLeftFill(0xff, 0xff, 0xff);
$s_icon1->setRightFill(0x01, 0x01, 0x01);
$s_icon1->drawCurve(38, -69, 15, -56);
$s_icon1->drawLine(-200, -60);
$s_icon1->drawCurve(-125, 199, -15, 41);
$s_icon1->drawLine(220, 60);
$s_icon1->drawLine(67, -115);
$s_icon1->movePenTo(7826, 5260);
$s_icon1->setLeftFill(0x01, 0x01, 0x01);
$s_icon1->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1->drawCurve(50, -84, 4, -115);
$s_icon1->drawCurve(-223, -60, -72, 26);
$s_icon1->drawCurve(-73, 26, -132, 188);
$s_icon1->drawCurve(72, 96, 89, 33);
$s_icon1->drawCurve(83, 30, 77, -31);
$s_icon1->drawCurve(77, -30, 48, -79);
$s_icon1->movePenTo(7796, 5107);
$s_icon1->setLeftFill(0xff, 0xff, 0xff);
$s_icon1->setRightFill(0x01, 0x01, 0x01);
$s_icon1->drawCurve(-63, -129, -129, 70);
$s_icon1->drawCurve(-117, 63, -27, 110);
$s_icon1->drawLine(140, 53);
$s_icon1->drawCurve(74, 20, 77, -52);
$s_icon1->drawCurve(82, -56, -37, -79);
$s_icon1->movePenTo(7350, 6527);
$s_icon1->drawLine(2, -9);
$s_icon1->drawCurve(-1, -8, -5, 7);
$s_icon1->drawCurve(-3, 20, 7, -10);
$s_icon1->movePenTo(3956, 3921);
$s_icon1->drawCurve(-277, 390, -59, 210);
$s_icon1->drawCurve(175, 97, 290, 110);
$s_icon1->drawLine(475, 186);
$s_icon1->drawCurve(345, 163, 131, -46);
$s_icon1->drawCurve(56, -21, 58, -77);
$s_icon1->drawLine(90, -126);
$s_icon1->drawCurve(324, -399, -61, -141);
$s_icon1->drawCurve(-33, -74, -242, -61);
$s_icon1->drawLine(-328, -75);
$s_icon1->drawCurve(-306, -105, -234, -108);
$s_icon1->drawLine(-117, -59);
$s_icon1->drawCurve(-75, -35, -45, 4);
$s_icon1->drawCurve(-49, 4, -49, 62);
$s_icon1->drawCurve(-28, 34, -41, 67);
$s_icon1->movePenTo(3904, 3788);
$s_icon1->setLeftFill(0x01, 0x01, 0x01);
$s_icon1->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1->drawLine(-114, 173);
$s_icon1->drawLine(-195, 276);
$s_icon1->drawCurve(-125, 202, 23, 102);
$s_icon1->drawCurve(17, 70, 131, 75);
$s_icon1->drawLine(199, 95);
$s_icon1->drawCurve(519, 256, 421, 97);
$s_icon1->drawCurve(254, 61, 99, -54);
$s_icon1->drawCurve(66, -38, 79, -117);
$s_icon1->drawLine(112, -185);
$s_icon1->drawCurve(111, -145, 56, -85);
$s_icon1->drawCurve(101, -154, -8, -106);
$s_icon1->drawCurve(-6, -78, -78, -50);
$s_icon1->drawCurve(-31, -20, -115, -46);
$s_icon1->drawCurve(-240, -90, -480, -166);
$s_icon1->drawCurve(-208, -66, -252, -101);
$s_icon1->drawCurve(-63, -31, -34, -13);
$s_icon1->drawCurve(-61, -23, -39, 17);
$s_icon1->drawCurve(-61, 29, -78, 115);
$s_icon1->movePenTo(5780, 4921);
$s_icon1->drawCurve(65, -21, 75, 18);
$s_icon1->drawCurve(44, 11, 96, 32);
$s_icon1->drawLine(-100, -100);
$s_icon1->drawLine(-104, 3);
$s_icon1->drawCurve(-48, 9, -28, 48);
$s_icon1->movePenTo(5952, 4584);
$s_icon1->drawCurve(-9, 69, 44, 70);
$s_icon1->drawCurve(44, 68, 69, 31);
$s_icon1->drawCurve(74, 33, 66, -31);
$s_icon1->drawCurve(118, -56, 23, -85);
$s_icon1->drawCurve(21, -73, -53, -71);
$s_icon1->drawCurve(-51, -68, -85, -24);
$s_icon1->drawCurve(-92, -26, -78, 43);
$s_icon1->drawCurve(-80, 43, -11, 77);
$s_icon1->movePenTo(5936, 5301);
$s_icon1->drawCurve(86, -14, 50, -116);
$s_icon1->drawCurve(45, -105, -17, -85);
$s_icon1->drawCurve(-98, 97, -62, 123);
$s_icon1->drawLine(-240, -100);
$s_icon1->drawLine(39, -87);
$s_icon1->drawCurve(21, -52, 0, -41);
$s_icon1->drawLine(-67, 83);
$s_icon1->drawCurve(-38, 53, -2, 40);
$s_icon1->drawCurve(-5, 70, 113, 73);
$s_icon1->drawCurve(106, 69, 69, -8);
$s_icon1->movePenTo(6104, 6526);
$s_icon1->setLeftFill(0xff, 0xff, 0xff);
$s_icon1->setRightFill();
$s_icon1->drawLine(9, 1);
$s_icon1->drawCurve(0, -20, -10, 10);
$s_icon1->drawLine(1, 9);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(3686, 2737);
$s_icon1->setLeftFill(0xec, 0xec, 0xec);
$s_icon1->drawCurve(-3, 20, 7, -10);
$s_icon1->drawLine(2, -9);
$s_icon1->drawCurve(-1, -8, -5, 7);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(5820, 3007);
$s_icon1->setLeftFill(0xff, 0xff, 0xff);
$s_icon1->drawCurve(354, 77, 366, 147);
$s_icon1->drawCurve(97, 41, 103, 107);
$s_icon1->drawCurve(125, 131, 55, 37);
$s_icon1->drawCurve(70, 49, 132, 42);
$s_icon1->drawLine(218, 63);
$s_icon1->drawLine(-20, -140);
$s_icon1->drawCurve(-180, -6, -119, -122);
$s_icon1->drawLine(-100, -113);
$s_icon1->drawCurve(-64, -70, -64, -43);
$s_icon1->drawCurve(-237, -156, -383, -72);
$s_icon1->drawCurve(-397, -74, -256, 76);
$s_icon1->drawCurve(48, 20, 97, -1);
$s_icon1->drawLine(155, 7);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(8720, 3541);
$s_icon1->setLeftFill(0xee, 0xeb, 0xff);
$s_icon1->drawLine(0, 80);
$s_icon1->drawCurve(15, -39, -15, -41);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(8700, 3621);
$s_icon1->setLeftFill(0xee, 0xeb, 0xff);
$s_icon1->drawLine(0, 60);
$s_icon1->drawCurve(12, -29, -12, -31);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(8686, 3697);
$s_icon1->setLeftFill(0xff, 0xff, 0xff);
$s_icon1->drawCurve(-3, 20, 7, -10);
$s_icon1->drawLine(2, -9);
$s_icon1->drawCurve(-1, -8, -5, 7);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(9280, 3701);
$s_icon1->setLeftFill(0xff, 0xff, 0xff);
$s_icon1->drawCurve(-21, 153, -121, 227);
$s_icon1->drawCurve(-145, 250, -57, 110);
$s_icon1->drawCurve(-382, 775, -301, 465);
$s_icon1->drawCurve(-200, 310, -149, 131);
$s_icon1->drawCurve(-214, 188, -290, 27);
$s_icon1->drawCurve(-207, 22, -262, -62);
$s_icon1->drawCurve(-61, -15, -390, -118);
$s_icon1->drawLine(-1420, -477);
$s_icon1->drawLine(-823, -263);
$s_icon1->drawCurve(-464, -160, -333, -167);
$s_icon1->drawCurve(-552, -271, -68, -425);
$s_icon1->drawCurve(-58, 139, 79, 165);
$s_icon1->drawCurve(68, 143, 131, 96);
$s_icon1->drawCurve(229, 171, 372, 166);
$s_icon1->drawCurve(213, 96, 426, 174);
$s_icon1->drawCurve(1304, 565, 856, 225);
$s_icon1->drawCurve(402, 106, 154, 20);
$s_icon1->drawCurve(318, 41, 246, -94);
$s_icon1->drawCurve(344, -134, 314, -351);
$s_icon1->drawCurve(175, -197, 317, -471);
$s_icon1->drawLine(186, -263);
$s_icon1->drawCurve(112, -158, 66, -108);
$s_icon1->drawCurve(189, -311, 40, -280);
$s_icon1->drawCurve(47, -317, -70, -123);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(7013, 4251);
$s_icon1->setLeftFill(0xec, 0xec, 0xec);
$s_icon1->drawLine(10, 3);
$s_icon1->drawCurve(10, -7, -20, 4);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(6693, 4691);
$s_icon1->setLeftFill(0xb8, 0x01, 0x01);
$s_icon1->drawLine(10, 3);
$s_icon1->drawCurve(10, -7, -20, 4);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(7093, 4791);
$s_icon1->setLeftFill(0xec, 0xec, 0xec);
$s_icon1->drawLine(10, 3);
$s_icon1->drawCurve(10, -7, -20, 4);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(3890, 4811);
$s_icon1->setLeftFill(0xec, 0xec, 0xec);
$s_icon1->drawLine(16, 3);
$s_icon1->drawCurve(7, -7, -23, 4);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(6033, 4931);
$s_icon1->setLeftFill(0xec, 0xec, 0xec);
$s_icon1->drawLine(10, 3);
$s_icon1->drawCurve(10, -7, -20, 4);
$s_icon1->movePenTo(6453, 4931);
$s_icon1->drawLine(10, 3);
$s_icon1->drawCurve(10, -7, -20, 4);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(5773, 5131);
$s_icon1->setLeftFill(0xec, 0xec, 0xec);
$s_icon1->drawLine(10, 3);
$s_icon1->drawCurve(10, -7, -20, 4);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(4780, 5141);
$s_icon1->setLeftFill(0xdd, 0xdd, 0xdd);
$s_icon1->drawCurve(41, 20, 59, 0);
$s_icon1->drawCurve(-40, -15, -60, -5);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(5913, 5311);
$s_icon1->setLeftFill(0xec, 0xec, 0xec);
$s_icon1->drawLine(10, 3);
$s_icon1->drawCurve(10, -7, -20, 4);
$s_icon1->setLeftFill();
$s_icon1->setRightFill();
$s_icon1->movePenTo(7260, 5721);
$s_icon1->setLeftFill(0xff, 0xff, 0xff);
$s_icon1->drawCurve(85, 31, 31, 2);
$s_icon1->drawCurve(78, 7, 26, -59);
$s_icon1->drawCurve(23, -51, -26, -61);
$s_icon1->drawCurve(-27, -62, -49, -2);
$s_icon1->drawCurve(-57, -1, -54, 96);
$s_icon1->drawCurve(-17, 29, -13, 71);
my $s_icon1_f2 = new SWF::Shape();
$s_icon1_f2->movePenTo(8877, 3643);
$s_icon1_f2->setLeftFill(0xc9, 0xc9, 0xc9);
$s_icon1_f2->setRightFill(0x01, 0x01, 0x01);
$s_icon1_f2->drawCurve(82, -165, -25, -185);
$s_icon1_f2->drawCurve(-8, -64, -54, -71);
$s_icon1_f2->drawCurve(-47, -63, -518, -190);
$s_icon1_f2->drawCurve(-613, -225, -866, -239);
$s_icon1_f2->drawCurve(-1929, -534, -108, 38);
$s_icon1_f2->drawLine(-178, 16);
$s_icon1_f2->drawCurve(-71, 5, -160, 230);
$s_icon1_f2->drawCurve(-73, 104, -51, 158);
$s_icon1_f2->drawCurve(-51, 161, 17, 85);
$s_icon1_f2->drawLine(11, 98);
$s_icon1_f2->drawCurve(8, 53, 135, 163);
$s_icon1_f2->drawCurve(16, 27, 87, 41);
$s_icon1_f2->drawLine(327, 147);
$s_icon1_f2->drawCurve(493, 229, 265, 68);
$s_icon1_f2->drawLine(955, 232);
$s_icon1_f2->drawCurve(235, 63, 445, 138);
$s_icon1_f2->drawCurve(413, 120, 284, 30);
$s_icon1_f2->drawCurve(194, 20, 200, -54);
$s_icon1_f2->drawCurve(194, -52, 155, -112);
$s_icon1_f2->drawCurve(158, -118, 78, -154);
$s_icon1_f2->movePenTo(9166, 3350);
$s_icon1_f2->setLeftFill(0x01, 0x01, 0x01);
$s_icon1_f2->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1_f2->drawCurve(9, 35, 5, 50);
$s_icon1_f2->drawCurve(23, 234, -120, 312);
$s_icon1_f2->drawCurve(-251, 663, -642, 923);
$s_icon1_f2->drawCurve(-183, 258, -82, 85);
$s_icon1_f2->drawCurve(-159, 165, -206, 66);
$s_icon1_f2->drawCurve(-308, 97, -362, -54);
$s_icon1_f2->drawCurve(-214, -33, -436, -134);
$s_icon1_f2->drawCurve(-1342, -405, -838, -341);
$s_icon1_f2->drawCurve(-399, -160, -156, -90);
$s_icon1_f2->drawCurve(-297, -170, -148, -234);
$s_icon1_f2->drawCurve(-275, -429, 295, -569);
$s_icon1_f2->drawCurve(103, -199, 195, -261);
$s_icon1_f2->drawCurve(221, -289, 81, -116);
$s_icon1_f2->drawCurve(39, -58, 109, -122);
$s_icon1_f2->drawCurve(100, -114, 42, -69);
$s_icon1_f2->drawCurve(15, -25, 10, -40);
$s_icon1_f2->drawLine(18, -69);
$s_icon1_f2->drawCurve(27, -79, 76, -7);
$s_icon1_f2->drawCurve(64, -7, 23, 86);
$s_icon1_f2->drawCurve(18, 68, -15, 63);
$s_icon1_f2->drawLine(-57, 248);
$s_icon1_f2->drawCurve(-23, 149, 44, 99);
$s_icon1_f2->drawCurve(45, 104, 161, 111);
$s_icon1_f2->drawCurve(79, 56, 185, 99);
$s_icon1_f2->drawCurve(363, 201, 567, 164);
$s_icon1_f2->drawCurve(346, 102, 624, 163);
$s_icon1_f2->drawCurve(240, 72, 452, 157);
$s_icon1_f2->drawCurve(420, 137, 288, 34);
$s_icon1_f2->drawCurve(198, 24, 203, -62);
$s_icon1_f2->drawCurve(197, -60, 157, -128);
$s_icon1_f2->drawCurve(161, -134, 79, -176);
$s_icon1_f2->drawCurve(84, -189, -26, -211);
$s_icon1_f2->drawCurve(-8, -73, -55, -82);
$s_icon1_f2->drawLine(-90, -145);
$s_icon1_f2->drawLine(50, 14);
$s_icon1_f2->setRightFill();
$s_icon1_f2->drawCurve(-98, -84, -1940, -604);
$s_icon1_f2->drawCurve(-453, -141, -353, -106);
$s_icon1_f2->drawLine(-226, -67);
$s_icon1_f2->drawCurve(-962, -282, -76, 30);
$s_icon1_f2->drawLine(-181, 18);
$s_icon1_f2->drawCurve(-166, 15, -46, 28);
$s_icon1_f2->drawCurve(-107, 65, -62, 24);
$s_icon1_f2->drawCurve(-41, 15, -81, 3);
$s_icon1_f2->drawCurve(-81, 3, -41, 15);
$s_icon1_f2->drawCurve(-53, 20, -119, 105);
$s_icon1_f2->drawCurve(-106, 94, -72, 11);
$s_icon1_f2->drawCurve(-55, 9, -119, -51);
$s_icon1_f2->drawCurve(-131, -62, -41, -16);
$s_icon1_f2->drawCurve(-401, -145, -254, 61);
$s_icon1_f2->drawLine(-295, 512);
$s_icon1_f2->drawCurve(17, 87, 39, 80);
$s_icon1_f2->drawCurve(55, 111, 79, 58);
$s_icon1_f2->drawCurve(257, 187, 356, -123);
$s_icon1_f2->drawCurve(333, -115, 174, -289);
$s_icon1_f2->drawCurve(-22, 127, -127, 170);
$s_icon1_f2->drawLine(-211, 263);
$s_icon1_f2->drawCurve(-406, 540, -134, 302);
$s_icon1_f2->drawCurve(-244, 549, 214, 409);
$s_icon1_f2->drawCurve(104, 203, 217, 138);
$s_icon1_f2->drawCurve(109, 70, 320, 139);
$s_icon1_f2->drawLine(980, 430);
$s_icon1_f2->drawCurve(1128, 482, 652, 194);
$s_icon1_f2->drawCurve(888, 261, 572, -261);
$s_icon1_f2->drawCurve(215, -102, 245, -247);
$s_icon1_f2->drawCurve(139, -140, 261, -287);
$s_icon1_f2->drawLine(377, -387);
$s_icon1_f2->drawCurve(215, -245, 68, -208);
$s_icon1_f2->drawCurve(45, -136, 11, -210);
$s_icon1_f2->drawLine(7, -354);
$s_icon1_f2->drawCurve(16, -271, -3, -144);
$s_icon1_f2->drawCurve(-6, -237, -77, -168);
$s_icon1_f2->drawLine(-27, -51);
$s_icon1_f2->setLeftFill(0xc9, 0xc9, 0xc9);
$s_icon1_f2->drawCurve(-55, -223, -221, -72);
$s_icon1_f2->movePenTo(8530, 5051);
$s_icon1_f2->setLeftFill(0xff, 0xff, 0xff);
$s_icon1_f2->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1_f2->drawCurve(3, -24, -7, 7);
$s_icon1_f2->drawCurve(-3, 3, 7, 14);
$s_icon1_f2->movePenTo(7606, 4781);
$s_icon1_f2->setLeftFill(0x01, 0x01, 0x01);
$s_icon1_f2->drawCurve(-2, 78, 143, 62);
$s_icon1_f2->drawCurve(101, 43, 112, 17);
$s_icon1_f2->drawCurve(30, -58, 61, -105);
$s_icon1_f2->drawCurve(51, -93, 18, -84);
$s_icon1_f2->drawCurve(-86, -31, -274, -69);
$s_icon1_f2->drawLine(-95, 113);
$s_icon1_f2->drawCurve(-55, 71, -4, 56);
$s_icon1_f2->movePenTo(7490, 4777);
$s_icon1_f2->drawCurve(104, -64, 12, -88);
$s_icon1_f2->drawCurve(10, -77, -62, -69);
$s_icon1_f2->drawCurve(-60, -66, -91, -19);
$s_icon1_f2->drawCurve(-98, -20, -82, 50);
$s_icon1_f2->drawCurve(-98, 58, -2, 82);
$s_icon1_f2->drawCurve(-2, 71, 68, 67);
$s_icon1_f2->drawCurve(64, 63, 85, 24);
$s_icon1_f2->drawCurve(92, 26, 60, -38);
$s_icon1_f2->movePenTo(7011, 4245);
$s_icon1_f2->drawCurve(-112, -53, -59, 12);
$s_icon1_f2->drawCurve(-118, 23, -15, 111);
$s_icon1_f2->drawCurve(-14, 99, 66, 102);
$s_icon1_f2->drawCurve(68, 104, 90, 8);
$s_icon1_f2->drawCurve(106, 10, 80, -140);
$s_icon1_f2->drawCurve(22, -41, 55, -159);
$s_icon1_f2->drawCurve(-17, -5, -152, -71);
$s_icon1_f2->movePenTo(7080, 4801);
$s_icon1_f2->drawCurve(-45, 19, -66, 108);
$s_icon1_f2->drawCurve(-70, 113, 21, 40);
$s_icon1_f2->drawCurve(27, 56, 110, 23);
$s_icon1_f2->drawCurve(93, 18, -10, 43);
$s_icon1_f2->drawLine(90, -13);
$s_icon1_f2->drawCurve(31, -11, 39, -56);
$s_icon1_f2->drawLine(68, -93);
$s_icon1_f2->drawCurve(42, -62, -10, -45);
$s_icon1_f2->drawCurve(-13, -48, -129, -57);
$s_icon1_f2->drawCurve(-129, -57, -49, 22);
$s_icon1_f2->movePenTo(6900, 5274);
$s_icon1_f2->drawCurve(-70, -13, -104, 114);
$s_icon1_f2->drawCurve(-103, 114, 20, 68);
$s_icon1_f2->drawCurve(24, 74, 140, 45);
$s_icon1_f2->drawCurve(139, 46, 64, -41);
$s_icon1_f2->drawCurve(66, -39, 42, -103);
$s_icon1_f2->drawCurve(36, -86, 6, -92);
$s_icon1_f2->drawCurve(-41, -9, -90, -37);
$s_icon1_f2->drawCurve(-83, -34, -46, -7);
$s_icon1_f2->movePenTo(7193, 5081);
$s_icon1_f2->setLeftFill(0xff, 0xff, 0xff);
$s_icon1_f2->setRightFill(0x01, 0x01, 0x01);
$s_icon1_f2->drawCurve(65, -18, 82, -142);
$s_icon1_f2->drawLine(-260, -80);
$s_icon1_f2->drawLine(-100, 200);
$s_icon1_f2->drawCurve(160, 55, 53, -15);
$s_icon1_f2->movePenTo(6552, 5178);
$s_icon1_f2->setLeftFill(0x01, 0x01, 0x01);
$s_icon1_f2->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1_f2->drawCurve(-74, -72, -198, -45);
$s_icon1_f2->drawCurve(-144, 202, 61, 112);
$s_icon1_f2->drawCurve(55, 100, 248, 66);
$s_icon1_f2->drawCurve(140, -215, -58, -109);
$s_icon1_f2->drawLine(-23, -32);
$s_icon1_f2->setRightFill(0xff, 0xff, 0xff);
$s_icon1_f2->drawCurve(-12, 47, -67, 149);
$s_icon1_f2->drawCurve(-160, -16, -120, -64);
$s_icon1_f2->drawCurve(41, -157, 90, -17);
$s_icon1_f2->drawCurve(63, -12, 158, 63);
$s_icon1_f2->setLeftFill(0xc9, 0xc9, 0xc9);
$s_icon1_f2->drawLine(8, 3);
$s_icon1_f2->drawLine(-1, 4);
$s_icon1_f2->movePenTo(7186, 5661);
$s_icon1_f2->setLeftFill(0x01, 0x01, 0x01);
$s_icon1_f2->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1_f2->drawCurve(-43, 112, 89, 46);
$s_icon1_f2->drawCurve(77, 40, 124, -28);
$s_icon1_f2->drawCurve(125, -28, 52, -72);
$s_icon1_f2->drawCurve(61, -82, -88, -95);
$s_icon1_f2->drawCurve(-26, -28, -81, -32);
$s_icon1_f2->drawCurve(-93, -38, -23, -15);
$s_icon1_f2->drawCurve(-93, 85, -27, 38);
$s_icon1_f2->drawCurve(-37, 55, -17, 42);
$s_icon1_f2->movePenTo(7007, 5486);
$s_icon1_f2->setLeftFill(0xff, 0xff, 0xff);
$s_icon1_f2->setRightFill(0x01, 0x01, 0x01);
$s_icon1_f2->drawCurve(38, -69, 15, -56);
$s_icon1_f2->drawLine(-200, -60);
$s_icon1_f2->drawCurve(-125, 199, -15, 41);
$s_icon1_f2->drawLine(220, 60);
$s_icon1_f2->drawLine(67, -115);
$s_icon1_f2->movePenTo(7826, 5260);
$s_icon1_f2->setLeftFill(0x01, 0x01, 0x01);
$s_icon1_f2->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1_f2->drawCurve(50, -84, 4, -115);
$s_icon1_f2->drawCurve(-223, -60, -72, 26);
$s_icon1_f2->drawCurve(-73, 26, -132, 188);
$s_icon1_f2->drawCurve(72, 96, 89, 33);
$s_icon1_f2->drawCurve(83, 30, 77, -31);
$s_icon1_f2->drawCurve(77, -30, 48, -79);
$s_icon1_f2->movePenTo(7796, 5107);
$s_icon1_f2->setLeftFill(0xff, 0xff, 0xff);
$s_icon1_f2->setRightFill(0x01, 0x01, 0x01);
$s_icon1_f2->drawCurve(-63, -129, -129, 70);
$s_icon1_f2->drawCurve(-117, 63, -27, 110);
$s_icon1_f2->drawLine(140, 53);
$s_icon1_f2->drawCurve(74, 20, 77, -52);
$s_icon1_f2->drawCurve(82, -56, -37, -79);
$s_icon1_f2->movePenTo(7346, 6517);
$s_icon1_f2->drawCurve(-3, 20, 7, -10);
$s_icon1_f2->drawLine(2, -9);
$s_icon1_f2->drawCurve(-1, -8, -5, 7);
$s_icon1_f2->movePenTo(3904, 3788);
$s_icon1_f2->setLeftFill(0x01, 0x01, 0x01);
$s_icon1_f2->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1_f2->drawLine(-114, 173);
$s_icon1_f2->drawLine(-195, 276);
$s_icon1_f2->drawCurve(-125, 202, 23, 102);
$s_icon1_f2->drawCurve(17, 70, 131, 75);
$s_icon1_f2->drawLine(199, 95);
$s_icon1_f2->drawCurve(519, 256, 421, 97);
$s_icon1_f2->drawCurve(254, 61, 99, -54);
$s_icon1_f2->drawCurve(66, -38, 79, -117);
$s_icon1_f2->drawLine(112, -185);
$s_icon1_f2->drawCurve(111, -145, 56, -85);
$s_icon1_f2->drawCurve(101, -154, -8, -106);
$s_icon1_f2->drawCurve(-6, -78, -78, -50);
$s_icon1_f2->drawCurve(-31, -20, -115, -46);
$s_icon1_f2->drawCurve(-240, -90, -480, -166);
$s_icon1_f2->drawCurve(-208, -66, -252, -101);
$s_icon1_f2->drawCurve(-63, -31, -34, -13);
$s_icon1_f2->drawCurve(-61, -23, -39, 17);
$s_icon1_f2->drawCurve(-61, 29, -78, 115);
$s_icon1_f2->movePenTo(3956, 3921);
$s_icon1_f2->setLeftFill(0xff, 0xff, 0xff);
$s_icon1_f2->setRightFill(0x01, 0x01, 0x01);
$s_icon1_f2->drawCurve(-277, 390, -59, 210);
$s_icon1_f2->drawCurve(175, 97, 290, 110);
$s_icon1_f2->drawLine(475, 186);
$s_icon1_f2->drawCurve(345, 163, 131, -46);
$s_icon1_f2->drawCurve(56, -21, 58, -77);
$s_icon1_f2->drawLine(90, -126);
$s_icon1_f2->drawCurve(324, -399, -61, -141);
$s_icon1_f2->drawCurve(-33, -74, -242, -61);
$s_icon1_f2->drawLine(-328, -75);
$s_icon1_f2->drawCurve(-306, -105, -234, -108);
$s_icon1_f2->drawLine(-117, -59);
$s_icon1_f2->drawCurve(-75, -35, -45, 4);
$s_icon1_f2->drawCurve(-49, 4, -49, 62);
$s_icon1_f2->drawCurve(-28, 34, -41, 67);
$s_icon1_f2->movePenTo(5952, 4584);
$s_icon1_f2->setLeftFill(0x01, 0x01, 0x01);
$s_icon1_f2->setRightFill(0xc9, 0xc9, 0xc9);
$s_icon1_f2->drawCurve(-9, 69, 44, 70);
$s_icon1_f2->drawCurve(44, 68, 69, 31);
$s_icon1_f2->drawCurve(74, 33, 66, -31);
$s_icon1_f2->drawCurve(118, -56, 23, -85);
$s_icon1_f2->drawCurve(21, -73, -53, -71);
$s_icon1_f2->drawCurve(-51, -68, -85, -24);
$s_icon1_f2->drawCurve(-92, -26, -78, 43);
$s_icon1_f2->drawCurve(-80, 43, -11, 77);
$s_icon1_f2->movePenTo(6072, 5171);
$s_icon1_f2->drawCurve(45, -105, -17, -85);
$s_icon1_f2->drawCurve(-98, 97, -62, 123);
$s_icon1_f2->drawLine(-240, -100);
$s_icon1_f2->drawLine(39, -87);
$s_icon1_f2->drawCurve(21, -52, 0, -41);
$s_icon1_f2->drawLine(-67, 83);
$s_icon1_f2->drawCurve(-38, 53, -2, 40);
$s_icon1_f2->drawCurve(-5, 70, 113, 73);
$s_icon1_f2->drawCurve(106, 69, 69, -8);
$s_icon1_f2->drawCurve(86, -14, 50, -116);
$s_icon1_f2->movePenTo(6104, 6526);
$s_icon1_f2->setLeftFill(0xff, 0xff, 0xff);
$s_icon1_f2->setRightFill();
$s_icon1_f2->drawLine(9, 1);
$s_icon1_f2->drawCurve(0, -20, -10, 10);
$s_icon1_f2->drawLine(1, 9);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(3686, 2737);
$s_icon1_f2->setLeftFill(0xec, 0xec, 0xec);
$s_icon1_f2->drawCurve(-3, 20, 7, -10);
$s_icon1_f2->drawLine(2, -9);
$s_icon1_f2->drawCurve(-1, -8, -5, 7);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(9280, 3701);
$s_icon1_f2->setLeftFill(0xff, 0xff, 0xff);
$s_icon1_f2->drawCurve(-21, 153, -121, 227);
$s_icon1_f2->drawCurve(-145, 250, -57, 110);
$s_icon1_f2->drawCurve(-382, 775, -301, 465);
$s_icon1_f2->drawCurve(-200, 310, -149, 131);
$s_icon1_f2->drawCurve(-214, 188, -290, 27);
$s_icon1_f2->drawCurve(-207, 22, -262, -62);
$s_icon1_f2->drawCurve(-61, -15, -390, -118);
$s_icon1_f2->drawLine(-1420, -477);
$s_icon1_f2->drawLine(-823, -263);
$s_icon1_f2->drawCurve(-464, -160, -333, -167);
$s_icon1_f2->drawCurve(-552, -271, -68, -425);
$s_icon1_f2->drawCurve(-58, 139, 79, 165);
$s_icon1_f2->drawCurve(68, 143, 131, 96);
$s_icon1_f2->drawCurve(229, 171, 372, 166);
$s_icon1_f2->drawCurve(213, 96, 426, 174);
$s_icon1_f2->drawCurve(1304, 565, 856, 225);
$s_icon1_f2->drawCurve(402, 106, 154, 20);
$s_icon1_f2->drawCurve(318, 41, 246, -94);
$s_icon1_f2->drawCurve(344, -134, 314, -351);
$s_icon1_f2->drawCurve(175, -197, 317, -471);
$s_icon1_f2->drawLine(186, -263);
$s_icon1_f2->drawCurve(112, -158, 66, -108);
$s_icon1_f2->drawCurve(189, -311, 40, -280);
$s_icon1_f2->drawCurve(47, -317, -70, -123);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(7013, 4251);
$s_icon1_f2->setLeftFill(0xec, 0xec, 0xec);
$s_icon1_f2->drawLine(10, 3);
$s_icon1_f2->drawCurve(10, -7, -20, 4);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(6780, 5021);
$s_icon1_f2->setLeftFill(0x01, 0x01, 0x01);
$s_icon1_f2->drawCurve(83, -157, 3, -80);
$s_icon1_f2->drawCurve(4, -65, -114, -42);
$s_icon1_f2->drawCurve(-142, -71, -71, 38);
$s_icon1_f2->drawCurve(-89, 47, -29, 96);
$s_icon1_f2->drawCurve(-32, 103, 87, 54);
$s_icon1_f2->drawCurve(56, 31, 64, 19);
$s_icon1_f2->drawCurve(76, 27, 104, 0);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(6460, 4861);
$s_icon1_f2->setLeftFill(0xff, 0x01, 0x01);
$s_icon1_f2->drawCurve(117, 56, 163, 44);
$s_icon1_f2->drawCurve(75, -146, 25, -74);
$s_icon1_f2->drawCurve(-150, -63, -86, 14);
$s_icon1_f2->drawCurve(-115, 19, -29, 150);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(6693, 4691);
$s_icon1_f2->setLeftFill(0xb8, 0x01, 0x01);
$s_icon1_f2->drawLine(10, 3);
$s_icon1_f2->drawCurve(10, -7, -20, 4);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(7093, 4791);
$s_icon1_f2->setLeftFill(0xec, 0xec, 0xec);
$s_icon1_f2->drawLine(10, 3);
$s_icon1_f2->drawCurve(10, -7, -20, 4);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(3890, 4811);
$s_icon1_f2->setLeftFill(0xec, 0xec, 0xec);
$s_icon1_f2->drawLine(16, 3);
$s_icon1_f2->drawCurve(7, -7, -23, 4);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(5780, 4921);
$s_icon1_f2->setLeftFill(0x01, 0x01, 0x01);
$s_icon1_f2->drawCurve(65, -21, 75, 18);
$s_icon1_f2->drawCurve(44, 11, 96, 32);
$s_icon1_f2->drawLine(-100, -100);
$s_icon1_f2->drawLine(-104, 3);
$s_icon1_f2->drawCurve(-48, 9, -28, 48);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(6033, 4931);
$s_icon1_f2->setLeftFill(0xec, 0xec, 0xec);
$s_icon1_f2->drawLine(10, 3);
$s_icon1_f2->drawCurve(10, -7, -20, 4);
$s_icon1_f2->movePenTo(6453, 4931);
$s_icon1_f2->drawLine(10, 3);
$s_icon1_f2->drawCurve(10, -7, -20, 4);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(5773, 5131);
$s_icon1_f2->setLeftFill(0xec, 0xec, 0xec);
$s_icon1_f2->drawLine(10, 3);
$s_icon1_f2->drawCurve(10, -7, -20, 4);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(4780, 5141);
$s_icon1_f2->setLeftFill(0xdd, 0xdd, 0xdd);
$s_icon1_f2->drawCurve(41, 20, 59, 0);
$s_icon1_f2->drawCurve(-40, -15, -60, -5);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(7120, 5181);
$s_icon1_f2->setLeftFill(0xec, 0xec, 0xec);
$s_icon1_f2->drawLine(0, 40);
$s_icon1_f2->drawLine(26, -11);
$s_icon1_f2->drawLine(14, -29);
$s_icon1_f2->drawLine(-40, 0);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(5913, 5311);
$s_icon1_f2->setLeftFill(0xec, 0xec, 0xec);
$s_icon1_f2->drawLine(10, 3);
$s_icon1_f2->drawCurve(10, -7, -20, 4);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(7260, 5721);
$s_icon1_f2->setLeftFill(0xff, 0xff, 0xff);
$s_icon1_f2->drawCurve(85, 31, 31, 2);
$s_icon1_f2->drawCurve(78, 7, 26, -59);
$s_icon1_f2->drawCurve(23, -51, -26, -61);
$s_icon1_f2->drawCurve(-27, -62, -49, -2);
$s_icon1_f2->drawCurve(-57, -1, -54, 96);
$s_icon1_f2->drawCurve(-17, 29, -13, 71);
$s_icon1_f2->setLeftFill();
$s_icon1_f2->setRightFill();
$s_icon1_f2->movePenTo(1674, 4251);
$s_icon1_f2->setLeftFill(0xab, 0x97, 0xfd);
$s_icon1_f2->setRightFill(0x00, 0x00, 0x00);
$s_icon1_f2->drawCurve(-18, 232, 61, 198);
$s_icon1_f2->drawCurve(36, 126, 92, 66);
$s_icon1_f2->drawCurve(101, 76, 118, -47);
$s_icon1_f2->drawCurve(222, -87, 31, -290);
$s_icon1_f2->drawCurve(10, -81, -2, -170);
$s_icon1_f2->drawCurve(-2, -164, 8, -72);
$s_icon1_f2->drawCurve(30, -256, 154, -321);
$s_icon1_f2->drawCurve(32, -65, 259, -473);
$s_icon1_f2->drawCurve(89, -161, 41, -59);
$s_icon1_f2->drawCurve(89, -127, 94, -46);
$s_icon1_f2->drawCurve(-55, 203, -200, 330);
$s_icon1_f2->drawCurve(-216, 353, -58, 174);
$s_icon1_f2->drawCurve(-63, 180, -15, 385);
$s_icon1_f2->drawCurve(-15, 376, -65, 176);
$s_icon1_f2->drawCurve(-29, 75, -89, 94);
$s_icon1_f2->drawCurve(-109, 118, -27, 39);
$s_icon1_f2->drawCurve(166, 61, 76, 14);
$s_icon1_f2->drawCurve(133, 22, 111, -53);
$s_icon1_f2->drawCurve(95, -47, 84, -104);
$s_icon1_f2->drawCurve(82, -103, 41, -123);
$s_icon1_f2->drawCurve(99, -294, -179, -157);
$s_icon1_f2->drawCurve(-79, 292, -252, 95);
$s_icon1_f2->drawCurve(4, -65, 55, -114);
$s_icon1_f2->drawCurve(56, -117, 8, -64);
$s_icon1_f2->drawCurve(5, -45, -11, -109);
$s_icon1_f2->drawCurve(-9, -99, 13, -59);
$s_icon1_f2->drawCurve(42, -224, 150, -278);
$s_icon1_f2->drawCurve(86, -160, 189, -310);
$s_icon1_f2->drawLine(182, -306);
$s_icon1_f2->drawCurve(115, -169, 126, -87);
$s_icon1_f2->drawCurve(95, -69, 136, -19);
$s_icon1_f2->drawLine(240, -14);
$s_icon1_f2->drawCurve(146, -2, 82, -26);
$s_icon1_f2->drawCurve(116, -37, 78, -98);
$s_icon1_f2->drawCurve(241, -304, 17, -285);
$s_icon1_f2->drawCurve(20, -341, -333, -182);
$s_icon1_f2->drawCurve(-107, -60, -144, -8);
$s_icon1_f2->drawCurve(43, 246, -66, 207);
$s_icon1_f2->drawCurve(-59, 180, -164, 212);
$s_icon1_f2->drawLine(-39, -10);
$s_icon1_f2->drawCurve(5, -69, 42, -95);
$s_icon1_f2->drawLine(77, -164);
$s_icon1_f2->drawCurve(95, -205, -56, -141);
$s_icon1_f2->drawCurve(-119, -303, -342, 195);
$s_icon1_f2->drawCurve(-200, 112, -247, 263);
$s_icon1_f2->drawCurve(-252, 275, -240, 406);
$s_icon1_f2->drawCurve(-66, 115, -332, 623);
$s_icon1_f2->drawCurve(-180, 321, -85, 163);
$s_icon1_f2->drawCurve(-148, 282, -62, 224);
$s_icon1_f2->drawCurve(-70, 259, -14, 170);
$s_icon1_f2->movePenTo(1610, 4252);
$s_icon1_f2->setLeftFill(0x00, 0x00, 0x00);
$s_icon1_f2->setRightFill();
$s_icon1_f2->drawCurve(-16, 242, 71, 209);
$s_icon1_f2->drawCurve(41, 133, 104, 72);
$s_icon1_f2->drawCurve(45, 31, 171, 72);
$s_icon1_f2->drawCurve(159, 66, -2, 3);
$s_icon1_f2->drawCurve(191, 70, 76, 13);
$s_icon1_f2->drawCurve(148, 24, 122, -53);
$s_icon1_f2->drawCurve(105, -48, 91, -107);
$s_icon1_f2->drawCurve(87, -103, 46, -132);
$s_icon1_f2->drawCurve(116, -339, -213, -135);
$s_icon1_f2->drawCurve(-93, -59, -91, -26);
$s_icon1_f2->drawCurve(-51, -12, -7, -64);
$s_icon1_f2->drawCurve(-9, -79, 11, -59);
$s_icon1_f2->drawCurve(18, -98, 86, -148);
$s_icon1_f2->drawLine(161, -268);
$s_icon1_f2->drawCurve(100, -178, 193, -304);
$s_icon1_f2->drawCurve(83, -140, 130, -173);
$s_icon1_f2->drawCurve(145, -193, 65, -40);
$s_icon1_f2->drawCurve(42, -30, 209, -3);
$s_icon1_f2->drawLine(351, 2);
$s_icon1_f2->drawCurve(56, 0, 138, -119);
$s_icon1_f2->drawCurve(107, -94, 64, -77);
$s_icon1_f2->drawCurve(262, -315, 13, -299);
$s_icon1_f2->drawCurve(7, -151, -260, -172);
$s_icon1_f2->drawCurve(-123, -80, -176, -79);
$s_icon1_f2->drawCurve(-500, -222, -227, 120);
$s_icon1_f2->drawCurve(-219, 115, -269, 273);
$s_icon1_f2->drawCurve(-277, 286, -257, 419);
$s_icon1_f2->drawCurve(-88, 149, -340, 619);
$s_icon1_f2->drawCurve(-182, 312, -105, 191);
$s_icon1_f2->drawCurve(-159, 295, -65, 233);
$s_icon1_f2->drawCurve(-73, 273, -12, 177);
# Icon1 Movieclip
my $i_icon1 = new SWF::Sprite();
$item = $i_icon1->add($s_icon1);
$item->scaleTo(0.5);
$item->moveTo(-3000, -2100);
$i_icon1->nextFrame();
$i_icon1->remove($item);
$item = $i_icon1->add($s_icon1_f2);
$item->scaleTo(0.5);
$item->moveTo(-3000, -2100);
$i_icon1->nextFrame();
$envelope = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(8722, 1745);
$s1->setLeftFill(0x00, 0x00, 0x00);
$s1->drawCurve(-7, -42, 6, -35);
$s1->drawCurve(3, -14, -68, -18);
$s1->drawLine(-40, -15);
$s1->drawLine(0, -2);
$s1->drawLine(-5, -2);
$s1->drawCurve(-11, -9, 7, -9);
$s1->drawLine(10, -12);
$s1->drawLine(-7, 7);
$s1->drawLine(-15, 17);
$s1->drawCurve(-372, -133, -468, -40);
$s1->drawCurve(-301, -26, -578, 7);
$s1->drawCurve(-1570, 19, -1710, 381);
$s1->drawCurve(-751, 162, -409, 194);
$s1->drawCurve(-136, 59, -73, 40);
$s1->drawCurve(-132, 72, -29, 76);
$s1->drawCurve(-41, 106, 107, 251);
$s1->drawLine(165, 376);
$s1->drawCurve(96, 223, 43, 161);
$s1->drawCurve(153, 581, 43, 714);
$s1->drawCurve(21, 339, 3, 741);
$s1->drawLine(-1, 0);
$s1->drawCurve(-14, 37, 15, 145);
$s1->drawLine(0, 43);
$s1->drawLine(4, -4);
$s1->drawCurve(24, 194, 71, 65);
$s1->drawCurve(34, 31, 27, 39);
$s1->setRightFill(0xff, 0xff, 0xff);
$s1->drawCurve(8, -74, 37, -92);
$s1->drawCurve(30, -75, 49, -88);
$s1->drawLine(78, -126);
$s1->drawLine(110, -195);
$s1->drawCurve(252, -493, 132, -246);
$s1->drawCurve(226, -424, 193, -297);
$s1->drawCurve(114, -212, 78, -119);
$s1->drawCurve(143, -219, 129, -17);
$s1->drawCurve(81, -12, 149, 47);
$s1->drawLine(230, 75);
$s1->drawLine(641, 180);
$s1->drawCurve(397, 96, 262, -36);
$s1->drawCurve(153, -20, 215, -136);
$s1->drawCurve(121, -76, 211, -165);
$s1->drawLine(128, -121);
$s1->drawCurve(88, -78, 64, 6);
$s1->drawCurve(89, 6, 125, 95);
$s1->drawLine(186, 156);
$s1->drawCurve(272, 221, 181, 245);
$s1->drawCurve(167, 227, 153, 337);
$s1->drawCurve(25, 55, 109, 192);
$s1->drawLine(14, 29);
$s1->drawCurve(37, 75, 14, 55);
$s1->setRightFill(0x33, 0x33, 0x33);
$s1->drawLine(62, -139);
$s1->setRightFill();
$s1->drawLine(8, -17);
$s1->drawLine(2, 16);
$s1->setRightFill(0x33, 0x33, 0x33);
$s1->drawLine(12, 0);
$s1->setRightFill(0xff, 0xff, 0xff);
$s1->drawLine(-8, -29);
$s1->drawLine(-14, -43);
$s1->drawCurve(-175, -524, -586, -670);
$s1->drawLine(-250, -216);
$s1->drawCurve(-173, -149, -24, -95);
$s1->drawCurve(-16, -68, 116, -105);
$s1->drawCurve(62, -56, 112, -81);
$s1->drawCurve(343, -294, 317, -316);
$s1->drawLine(115, -125);
$s1->drawLine(42, -49);
$s1->drawCurve(75, -80, 67, -43);
$s1->drawCurve(21, -13, 20, -10);
$s1->drawCurve(168, 451, 15, 659);
$s1->drawCurve(8, 339, -51, 791);
$s1->drawCurve(-26, 317, -13, 83);
$s1->drawCurve(-41, 252, -81, 74);
$s1->setRightFill(0x33, 0x33, 0x33);
$s1->drawCurve(38, 1, 5, 9);
$s1->drawCurve(12, 23, -21, 49);
$s1->setRightFill();
$s1->drawLine(63, -55);
$s1->drawLine(27, -80);
$s1->drawCurve(82, -72, 40, -254);
$s1->drawCurve(13, -82, 26, -318);
$s1->drawCurve(51, -773, -8, -357);
$s1->drawCurve(-8, -325, -63, -346);
$s1->drawLine(-53, -306);
$s1->drawCurve(-30, -156, -36, -97);
$s1->drawLine(4, -26);
$s1->drawCurve(7, -40, -11, -42);
$s1->drawLine(-20, -64);
$s1->setRightFill(0xff, 0xff, 0xff);
$s1->drawCurve(-25, 107, -69, 111);
$s1->drawCurve(-78, 127, -128, 131);
$s1->drawLine(-104, 100);
$s1->drawCurve(-112, 101, -201, 160);
$s1->drawLine(-276, 228);
$s1->drawCurve(-104, 93, -224, 227);
$s1->drawCurve(-209, 214, -128, 117);
$s1->drawCurve(-409, 376, -366, 113);
$s1->drawCurve(-200, 62, -323, -54);
$s1->drawLine(-517, -118);
$s1->drawCurve(-873, -199, -527, -258);
$s1->drawCurve(-115, -55, -627, -345);
$s1->drawCurve(-340, -188, -265, -110);
$s1->drawLine(-153, -58);
$s1->drawCurve(28, 111, 153, 92);
$s1->drawLine(136, 74);
$s1->drawLine(123, 59);
$s1->drawLine(696, 405);
$s1->drawCurve(418, 225, 326, 74);
$s1->drawCurve(-35, 163, -200, 233);
$s1->drawLine(-165, 187);
$s1->drawCurve(-91, 102, -49, 75);
$s1->drawCurve(-253, 386, -404, 834);
$s1->drawCurve(-13, 26, -101, 276);
$s1->drawLine(-1, 5);
$s1->drawCurve(-37, 98, -38, 70);
$s1->drawCurve(-37, 66, -36, 39);
$s1->drawLine(-1, -316);
$s1->drawCurve(14, -791, -13, -211);
$s1->drawCurve(-45, -735, -141, -536);
$s1->drawCurve(-72, -266, -52, -121);
$s1->drawCurve(-167, -318, -35, -85);
$s1->drawCurve(-109, -256, 31, -82);
$s1->drawCurve(28, -76, 133, -72);
$s1->drawCurve(77, -42, 132, -57);
$s1->drawCurve(412, -195, 748, -161);
$s1->drawCurve(1708, -380, 1572, -20);
$s1->drawCurve(567, -7, 312, 26);
$s1->drawCurve(386, 33, 319, 96);
$s1->drawLine(139, 46);
$s1->setLeftFill();
$s1->drawLine(17, 6);
$s1->drawLine(-7, 38);
$s1->movePenTo(8579, 5100);
$s1->setLeftFill(0x33, 0x33, 0x33);
$s1->setRightFill();
$s1->drawLine(-10, 1);
$s1->movePenTo(8614, 5100);
$s1->setRightFill(0xff, 0xff, 0xff);
$s1->drawLine(-19, 14);
$s1->drawLine(-4, -14);
$s1->movePenTo(8648, 5182);
$s1->setLeftFill();
$s1->setRightFill(0x33, 0x33, 0x33);
$s1->drawLine(-30, 53);
$s1->drawCurve(-59, 95, 5, 18);
$s1->drawCurve(15, 55, -11, 35);
$s1->drawCurve(-17, 57, -122, 37);
$s1->drawCurve(-141, 33, -36, 13);
$s1->drawCurve(-315, 111, -665, 189);
$s1->drawCurve(-916, 264, -1272, 173);
$s1->drawLine(-1105, 136);
$s1->drawLine(-1075, 127);
$s1->drawLine(-32, 4);
$s1->drawLine(0, -4);
$s1->drawCurve(-2, -19, -25, -47);
$s1->drawLine(-23, -39);
$s1->setRightFill(0xf0, 0xf0, 0xf0);
$s1->drawLine(-4, 1);
$s1->drawLine(-3, 0);
$s1->drawLine(0, -1);
$s1->drawLine(1, -9);
$s1->setLeftFill(0xff, 0xff, 0xff);
$s1->drawLine(6, 9);
$s1->setRightFill(0x33, 0x33, 0x33);
$s1->drawLine(1100, -130);
$s1->drawLine(1105, -136);
$s1->drawCurve(1272, -174, 916, -263);
$s1->drawCurve(673, -192, 307, -108);
$s1->drawLine(177, -46);
$s1->drawCurve(123, -38, 16, -56);
$s1->drawCurve(11, -33, -15, -57);
$i1 = $envelope->add($s1);
$i1->scaleTo(0.5);
$i1->moveTo(-2620, -1800);
$envelope->nextFrame(); # end of frame 1
$telefono3 = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(7575, 1918);
$s1->setRightFill(0x99, 0x99, 0x99, 0x00);
$s1->drawCurve(534, 752, 0, 980);
$s1->drawCurve(0, 1239, -855, 875);
$s1->drawCurve(-855, 876, -1210, 0);
$s1->drawCurve(-966, 0, -739, -558);
$s1->drawCurve(-187, -141, -173, -177);
$s1->drawCurve(-855, -875, 0, -1239);
$s1->drawCurve(0, -1239, 855, -876);
$s1->drawCurve(855, -875, 1210, 0);
$s1->drawCurve(1210, 0, 855, 875);
$s1->drawCurve(179, 183, 142, 200);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(8001, 3420);
$s1->setLeftFill(0x00, 0x00, 0x00);
$s1->drawCurve(98, 665, -296, 644);
$s1->drawCurve(-342, 737, -687, 446);
$s1->drawCurve(-697, 454, -805, 0);
$s1->drawCurve(-673, 0, -404, -219);
$s1->drawCurve(-527, -286, 140, -586);
$s1->drawCurve(530, 95, 272, -641);
$s1->drawCurve(76, -198, -14, -463);
$s1->drawCurve(-14, -433, 136, -269);
$s1->drawCurve(129, -249, 220, -249);
$s1->drawCurve(125, -143, 255, -259);
$s1->drawCurve(443, -478, 73, -532);
$s1->drawCurve(-966, 127, -641, 1138);
$s1->drawCurve(-478, 839, -205, 1169);
$s1->drawCurve(-32, 164, -83, 320);
$s1->drawCurve(-67, 280, 0, 170);
$s1->drawCurve(4, 478, 516, 235);
$s1->drawCurve(1119, 518, 1052, -426);
$s1->drawCurve(949, -385, 557, -982);
$s1->drawCurve(551, -975, -132, -1040);
$s1->drawCurve(-150, -1142, -948, -716);
$s1->drawCurve(-558, -419, -628, -103);
$s1->drawCurve(-1174, -184, -1011, 549);
$s1->drawCurve(-1056, 576, -314, 1105);
$s1->drawCurve(-188, 709, 73, 777);
$s1->drawCurve(97, 1050, 645, -13);
$s1->drawCurve(-505, -907, -42, -730);
$s1->drawCurve(-38, -726, 359, -627);
$s1->drawCurve(338, -587, 606, -375);
$s1->drawCurve(603, -371, 701, -65);
$s1->drawCurve(736, -68, 658, 297);
$s1->drawCurve(677, 300, 428, 644);
$s1->drawCurve(391, 590, 118, 770);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(6224, 1529);
$s1->setLeftFill(0x00, 0x00, 0x00);
$s1->drawLine(-419, 1023);
$s1->drawCurve(356, -52, 139, -341);
$s1->drawCurve(140, -340, -216, -290);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(4920, 4347);
$s1->setLeftFill(0x00, 0x00, 0x00);
$s1->drawLine(-558, 954);
$s1->drawCurve(397, -27, 213, -300);
$s1->drawCurve(226, -324, -278, -303);
$i4 = $telefono3->add($s1);
$i4->scaleTo(0.5);
$i4->moveTo(-2620, -1800);
$telefono3->nextFrame(); # end of frame 1
### Shape 1 ###
$telefono4 = new SWF::Sprite();
$s1 = new SWF::Shape();
$s1->movePenTo(8338, 3364);
$s1->setLeftFill(0x00, 0x00, 0x00);
$s1->drawCurve(301, -19, 150, -103);
$s1->drawCurve(138, -96, 48, -167);
$s1->drawCurve(44, -155, -37, -181);
$s1->drawCurve(-36, -176, -99, -146);
$s1->drawCurve(-51, -75, -139, -135);
$s1->drawCurve(-141, -134, -79, -50);
$s1->drawCurve(-106, -67, -122, -53);
$s1->drawCurve(-49, -21, -58, -15);
$s1->drawLine(-5230, 0);
$s1->drawCurve(-275, 97, -202, 205);
$s1->drawCurve(-172, 171, -152, 382);
$s1->drawLine(-45, 91);
$s1->drawCurve(-27, 54, 0, 43);
$s1->drawCurve(-3, 172, 66, 126);
$s1->drawCurve(78, 149, 155, 31);
$s1->drawCurve(190, 38, 174, 9);
$s1->setRightFill(0x00, 0x33, 0x99, 0x00);
$s1->drawLine(298, -10);
$s1->drawCurve(414, -51, 126, -252);
$s1->drawCurve(33, -66, 11, -101);
$s1->drawLine(11, -180);
$s1->drawCurve(15, -225, 114, -90);
$s1->drawCurve(86, -70, 209, -15);
$s1->drawLine(170, -9);
$s1->drawLine(149, -15);
$s1->drawLine(0, 587);
$s1->drawLine(2285, 0);
$s1->drawLine(0, -616);
$s1->drawLine(352, 24);
$s1->drawCurve(221, 21, 84, 114);
$s1->drawCurve(66, 90, 43, 170);
$s1->drawLine(67, 299);
$s1->drawCurve(44, 168, 71, 89);
$s1->drawCurve(91, 113, 161, 23);
$s1->drawCurve(281, 39, 239, -10);
$s1->drawLine(38, -2);
$s1->setLeftFill();
$s1->setLine(20, 0xcc, 0xcc, 0xcc, 0x00);
$s1->drawLine(0, 1760);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawCurve(75, 104, 58, 98);
$s1->drawCurve(96, 167, 40, 101);
$s1->drawCurve(63, 159, -11, 130);
$s1->drawCurve(-15, 199, -132, 16);
$s1->drawLine(14, 28);
$s1->drawLine(-314, 95);
$s1->drawLine(-486, 19);
$s1->drawLine(-4671, 0);
$s1->drawLine(-514, -85);
$s1->drawLine(-114, -74);
$s1->drawCurve(-68, -45, -28, -53);
$s1->drawCurve(-97, -173, 100, -266);
$s1->drawCurve(59, -160, 159, -243);
$s1->drawCurve(45, -68, 62, -74);
$s1->setRightFill(0x00, 0x33, 0x99, 0x00);
$s1->setLine(20, 0xcc, 0xcc, 0xcc, 0x00);
$s1->drawLine(0, -1660);
$s1->movePenTo(8338, 5124);
$s1->setLeftFill(0x00, 0x00, 0x00);
$s1->drawCurve(-149, -207, -220, -232);
$s1->drawCurve(-388, -388, -184, -199);
$s1->drawLine(-246, -288);
$s1->drawCurve(-161, -182, -121, -58);
$s1->drawLine(128, 179);
$s1->drawCurve(73, 106, 35, 86);
$s1->drawCurve(117, 301, -82, 325);
$s1->drawCurve(-78, 311, -232, 236);
$s1->drawLine(-165, 168);
$s1->drawCurve(-113, 100, -83, 16);
$s1->drawLine(-14, 43);
$s1->drawCurve(-57, -5, -95, 42);
$s1->drawLine(-148, 65);
$s1->drawCurve(-239, 83, -276, 26);
$s1->drawCurve(-304, 29, -309, -82);
$s1->drawCurve(-308, -81, -253, -176);
$s1->drawCurve(-263, -183, -157, -251);
$s1->drawCurve(-168, -269, -21, -312);
$s1->drawCurve(-16, -209, 190, -362);
$s1->drawLine(77, -125);
$s1->drawCurve(48, -84, -1, -48);
$s1->drawLine(-1029, 1028);
$s1->drawLine(-302, 293);
$s1->drawCurve(-94, 94, -71, 85);
$s1->movePenTo(6484, 5069);
$s1->setLeftFill(0x00, 0x33, 0x99, 0x00);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(-15, 13);
$s1->drawCurve(-400, 316, -564, 0);
$s1->drawCurve(-438, 0, -339, -190);
$s1->drawCurve(-98, -55, -90, -71);
$s1->drawLine(-15, -13);
$s1->drawCurve(-385, -312, 1, -437);
$s1->drawCurve(-1, -447, 400, -316);
$s1->drawCurve(400, -316, 565, 0);
$s1->drawCurve(550, 0, 393, 301);
$s1->drawLine(21, 15);
$s1->drawCurve(400, 316, 0, 447);
$s1->drawCurve(-1, 437, -384, 312);
$s1->movePenTo(5501, 1760);
$s1->setLeftFill(0x00, 0x00, 0x00);
$s1->setRightFill();
$s1->drawLine(-4, 0);
$s1->drawLine(0, 6);
$s1->drawLine(4, -6);
$i1 = $telefono4->add($s1);
$i1->scaleTo(0.5);
$i1->moveTo(-2720, -1890);
$telefono4->nextFrame(); # end of frame 1
$telefono4->remove($i1);
### Shape 2 ###
$s2 = new SWF::Shape();
$s2->movePenTo(8338, 5128);
$s2->setLeftFill(0x00, 0x00, 0x00);
$s2->setRightFill(0x00, 0x33, 0x99, 0x00);
$s2->drawCurve(-151, -210, -223, -236);
$s2->drawCurve(-388, -388, -184, -199);
$s2->drawLine(-246, -288);
$s2->drawCurve(-161, -182, -121, -58);
$s2->drawLine(128, 179);
$s2->drawCurve(73, 106, 35, 86);
$s2->drawCurve(117, 301, -82, 325);
$s2->drawCurve(-78, 311, -232, 236);
$s2->drawLine(-165, 168);
$s2->drawCurve(-113, 100, -83, 16);
$s2->drawLine(-14, 43);
$s2->drawCurve(-57, -5, -95, 42);
$s2->drawLine(-148, 65);
$s2->drawCurve(-239, 83, -276, 26);
$s2->drawCurve(-304, 29, -309, -82);
$s2->drawCurve(-308, -81, -253, -176);
$s2->drawCurve(-263, -183, -157, -251);
$s2->drawCurve(-168, -269, -21, -312);
$s2->drawCurve(-16, -209, 190, -362);
$s2->drawLine(77, -125);
$s2->drawCurve(48, -84, -1, -48);
$s2->drawLine(-1029, 1028);
$s2->drawLine(-302, 293);
$s2->drawCurve(-91, 90, -69, 83);
$s2->setRightFill();
$s2->drawCurve(-65, 77, -47, 71);
$s2->drawCurve(-159, 243, -59, 160);
$s2->drawCurve(-100, 266, 97, 173);
$s2->drawCurve(28, 53, 68, 45);
$s2->drawLine(114, 74);
$s2->drawLine(514, 85);
$s2->drawLine(4671, 0);
$s2->drawLine(486, -19);
$s2->drawLine(314, -95);
$s2->drawLine(-14, -28);
$s2->drawCurve(132, -16, 15, -199);
$s2->drawCurve(11, -130, -63, -159);
$s2->drawCurve(-40, -101, -96, -167);
$s2->drawCurve(-56, -94, -72, -101);
$s2->setLeftFill(0x00, 0x33, 0x99, 0x00);
$s2->drawLine(0, -3048);
$s2->drawLine(-2669, 0);
$s2->setRightFill(0x00, 0x00, 0x00);
$s2->drawLine(-162, 131);
$s2->drawCurve(-130, 97, -144, -15);
$s2->drawCurve(-113, -12, -149, -87);
$s2->drawLine(-178, -114);
$s2->setRightFill();
$s2->drawLine(-688, 0);
$s2->setRightFill(0x00, 0x00, 0x00);
$s2->drawCurve(-154, 146, -75, 52);
$s2->drawLine(436, 433);
$s2->drawLine(-1609, 1617);
$s2->drawLine(-44, -44);
$s2->setRightFill();
$s2->drawLine(0, 706);
$s2->movePenTo(5669, 2080);
$s2->setLeftFill(0x00, 0x00, 0x00);
$s2->drawCurve(124, -108, 101, -109);
$s2->drawLine(25, -28);
$s2->drawCurve(199, -226, 32, -179);
$s2->drawCurve(29, -165, -84, -152);
$s2->drawCurve(-79, -140, -154, -101);
$s2->drawCurve(-149, -99, -174, -32);
$s2->drawLine(-282, -13);
$s2->drawCurve(-194, 4, -91, 21);
$s2->drawCurve(-122, 28, -124, 49);
$s2->drawCurve(-49, 20, -52, 31);
$s2->drawLine(-1193, 1199);
$s2->setRightFill(0x00, 0x33, 0x99, 0x00);
$s2->drawLine(-773, 776);
$s2->setRightFill();
$s2->drawLine(-1715, 1724);
$s2->drawCurve(-125, 263, 3, 288);
$s2->drawCurve(0, 241, 162, 377);
$s2->drawLine(33, 96);
$s2->drawCurve(20, 56, 30, 31);
$s2->drawCurve(120, 123, 135, 43);
$s2->drawCurve(161, 49, 131, -88);
$s2->drawCurve(161, -108, 128, -116);
$s2->drawCurve(115, -106, 88, -112);
$s2->drawCurve(255, -328, -89, -268);
$s2->drawCurve(-24, -69, -64, -79);
$s2->drawLine(-119, -135);
$s2->drawCurve(-149, -169, 16, -143);
$s2->drawCurve(12, -110, 136, -159);
$s2->drawLine(113, -126);
$s2->drawLine(95, -116);
$s2->drawLine(371, 369);
$s2->movePenTo(4105, 2080);
$s2->drawLine(36, -34);
$s2->drawCurve(170, -142, 140, 21);
$s2->drawCurve(110, 16, 151, 90);
$s2->drawLine(81, 49);
$s2->movePenTo(6464, 3554);
$s2->setLeftFill(0x00, 0x33, 0x99, 0x00);
$s2->setRightFill(0x00, 0x00, 0x00);
$s2->drawCurve(400, 316, 0, 447);
$s2->drawCurve(-1, 437, -384, 312);
$s2->drawLine(-15, 13);
$s2->drawCurve(-400, 316, -564, 0);
$s2->drawCurve(-438, 0, -339, -190);
$s2->drawCurve(-98, -55, -90, -71);
$s2->drawLine(-15, -13);
$s2->drawCurve(-385, -312, 1, -437);
$s2->drawCurve(-1, -447, 400, -316);
$s2->drawCurve(400, -316, 565, 0);
$s2->drawCurve(550, 0, 393, 301);
$s2->drawLine(21, 15);
$s2->movePenTo(2659, 2856);
$s2->setLeftFill();
$s2->setRightFill(0x00, 0x33, 0x99, 0x00);
$s2->drawLine(0, -776);
$s2->drawLine(773, 0);
$i1 = $telefono4->add($s2);
$i1->scaleTo(0.5);
$i1->moveTo(-2720, -1890);
$telefono4->nextFrame(); # end of frame 2
$telefono4->remove($i1);
$conference1 = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(7708, 2179);
$s1->setLeftFill(0x06, 0x04, 0x07);
$s1->drawCurve(-94, -8, -225, 66);
$s1->drawCurve(-209, 62, -92, -23);
$s1->drawCurve(-122, -31, -248, -183);
$s1->drawCurve(-230, -168, -160, -18);
$s1->drawCurve(0, -285, -17, -118);
$s1->drawCurve(-34, -233, -116, -138);
$s1->drawCurve(-43, -50, -111, -68);
$s1->drawCurve(-110, -66, -39, -49);
$s1->drawCurve(-30, -36, -17, -78);
$s1->drawCurve(-18, -84, -22, -32);
$s1->drawCurve(-65, -97, -133, -15);
$s1->drawCurve(-127, -15, -95, 67);
$s1->drawCurve(-65, 46, -27, 104);
$s1->drawCurve(-32, 117, -33, 36);
$s1->drawCurve(-47, 51, -73, 40);
$s1->drawLine(-124, 62);
$s1->drawCurve(-146, 77, -43, 144);
$s1->drawCurve(-20, 66, 3, 224);
$s1->drawCurve(2, 199, -42, 67);
$s1->drawCurve(-25, 42, -64, 28);
$s1->drawLine(-107, 40);
$s1->drawCurve(-123, 57, -237, 157);
$s1->drawCurve(-84, -177, -230, -160);
$s1->drawCurve(-244, -171, -183, 21);
$s1->drawCurve(-68, 7, -117, 64);
$s1->drawCurve(-116, 64, -59, 5);
$s1->drawCurve(-59, 4, -105, -25);
$s1->drawCurve(-120, -29, -39, -3);
$s1->drawCurve(-172, -12, -35, 232);
$s1->drawCurve(-14, 83, 57, 86);
$s1->drawCurve(80, 121, 10, 30);
$s1->drawCurve(15, 49, -10, 100);
$s1->drawCurve(-10, 110, 5, 41);
$s1->drawCurve(23, 212, 177, 208);
$s1->drawCurve(32, 37, 181, 138);
$s1->drawCurve(148, 113, 29, 75);
$s1->drawCurve(22, 54, -39, 125);
$s1->drawLine(-56, 178);
$s1->drawCurve(-35, 154, -5, 205);
$s1->drawCurve(-3, 119, 3, 242);
$s1->drawCurve(-314, 56, -182, 207);
$s1->drawCurve(-200, 225, 76, 292);
$s1->drawCurve(-84, 43, -60, 82);
$s1->drawCurve(-59, 81, -12, 89);
$s1->drawCurve(-30, 211, 225, 64);
$s1->drawLine(139, -6);
$s1->drawCurve(92, -17, 42, 19);
$s1->drawCurve(61, 27, 65, 48);
$s1->drawLine(105, 80);
$s1->drawCurve(124, 86, 152, -8);
$s1->drawCurve(78, -3, 205, -89);
$s1->drawCurve(188, -83, 79, 12);
$s1->drawCurve(59, 8, 93, 81);
$s1->drawLine(139, 120);
$s1->drawCurve(82, 60, 219, 94);
$s1->drawCurve(206, 90, 86, 70);
$s1->drawCurve(54, 47, 9, 169);
$s1->drawCurve(11, 214, 9, 30);
$s1->drawCurve(47, 153, 129, 76);
$s1->drawLine(117, 63);
$s1->drawCurve(73, 40, 51, 44);
$s1->drawCurve(34, 30, 27, 51);
$s1->drawLine(41, 84);
$s1->drawCurve(50, 93, 115, 6);
$s1->drawCurve(147, 10, 58, -77);
$s1->drawCurve(56, -112, 69, -65);
$s1->drawCurve(28, -29, 72, -20);
$s1->drawLine(110, -37);
$s1->drawCurve(164, -85, 96, -225);
$s1->drawCurve(17, -41, 15, -81);
$s1->drawLine(28, -142);
$s1->drawCurve(37, -176, 83, -44);
$s1->drawCurve(34, -19, 208, -99);
$s1->drawCurve(148, -71, 90, -61);
$s1->drawLine(112, -88);
$s1->drawCurve(76, -58, 52, -3);
$s1->drawCurve(41, -5, 54, 41);
$s1->drawLine(85, 70);
$s1->drawCurve(145, 112, 195, 58);
$s1->drawCurve(237, 76, 199, -119);
$s1->drawLine(90, -74);
$s1->drawCurve(56, -50, 41, -10);
$s1->drawLine(125, 10);
$s1->drawCurve(78, 16, 50, -26);
$s1->drawCurve(176, -86, -36, -142);
$s1->drawCurve(-9, -35, -41, -94);
$s1->drawCurve(-38, -86, -8, -52);
$s1->drawCurve(-7, -47, 12, -110);
$s1->drawCurve(11, -102, -16, -61);
$s1->drawCurve(-108, -386, -592, -254);
$s1->drawCurve(44, -191, -8, -349);
$s1->drawLine(-12, -119);
$s1->drawCurve(-6, -76, 22, -39);
$s1->drawCurve(42, -77, 165, -101);
$s1->drawCurve(167, -102, 49, -86);
$s1->drawCurve(55, -93, -7, -182);
$s1->drawCurve(-6, -190, 35, -72);
$s1->drawCurve(21, -45, 45, -53);
$s1->drawLine(71, -86);
$s1->drawCurve(77, -102, -34, -114);
$s1->drawCurve(-55, -175, -157, 10);
$s1->drawLine(-141, 23);
$s1->drawLine(-144, 12);
$s1->drawCurve(-66, -6, -134, -99);
$s1->drawCurve(-134, -98, -89, -7);
$s1->movePenTo(7475, 2574);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->setRightFill(0x06, 0x04, 0x07);
$s1->drawLine(76, -16);
$s1->drawCurve(82, -14, 35, 92);
$s1->drawLine(-180, 40);
$s1->drawLine(320, 580);
$s1->drawLine(200, -40);
$s1->drawLine(-160, 140);
$s1->drawLine(60, 300);
$s1->drawLine(20, 20);
$s1->drawCurve(80, -27, 98, -68);
$s1->drawCurve(107, -77, 73, -89);
$s1->drawCurve(190, -234, -152, -172);
$s1->drawCurve(-24, -28, -86, 11);
$s1->drawLine(-126, 4);
$s1->drawCurve(-200, -78, 8, -176);
$s1->drawCurve(7, -139, 125, -167);
$s1->drawCurve(-164, -145, -234, -11);
$s1->drawCurve(-219, -11, -203, 107);
$s1->drawCurve(127, 165, 56, 25);
$s1->drawCurve(37, 15, 47, -7);
$s1->movePenTo(8069, 2800);
$s1->drawCurve(62, 82, 101, -5);
$s1->drawCurve(117, -7, 99, -134);
$s1->drawCurve(-55, 15, -23, -20);
$s1->drawCurve(-20, -20, -2, -55);
$s1->drawLine(-160, 160);
$s1->drawLine(-80, -120);
$s1->drawLine(300, -120);
$s1->drawLine(-40, 60);
$s1->drawLine(100, 80);
$s1->drawCurve(91, -115, -70, -84);
$s1->drawCurve(-63, -76, -138, -5);
$s1->drawLine(23, 60);
$s1->drawLine(-15, 15);
$s1->drawCurve(-15, 15, -24, -12);
$s1->drawLine(-29, -38);
$s1->drawCurve(-150, 45, -37, 105);
$s1->drawCurve(-34, 91, 62, 83);
$s1->movePenTo(6728, 2876);
$s1->drawLine(-60, 200);
$s1->drawLine(100, -200);
$s1->drawLine(-40, 0);
$s1->movePenTo(6768, 2597);
$s1->drawCurve(-162, 217, -18, 202);
$s1->drawLine(233, -397);
$s1->drawLine(307, -283);
$s1->drawCurve(-187, 26, -173, 235);
$s1->movePenTo(7268, 3396);
$s1->drawCurve(-87, -292, -133, -88);
$s1->drawCurve(22, 110, 55, 103);
$s1->drawCurve(65, 122, 78, 45);
$s1->movePenTo(7268, 3716);
$s1->drawLine(-260, -20);
$s1->drawCurve(14, 75, 106, 7);
$s1->drawCurve(104, 6, 36, -68);
$s1->movePenTo(7248, 3596);
$s1->setLeftFill(0x06, 0x04, 0x07);
$s1->setRightFill(0xfa, 0xfc, 0xfa);
$s1->drawLine(0, 40);
$s1->drawLine(-240, 0);
$s1->drawLine(0, -40);
$s1->drawLine(240, 0);
$s1->movePenTo(7908, 3736);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->setRightFill(0x06, 0x04, 0x07);
$s1->drawCurve(-377, 104, -523, -4);
$s1->drawCurve(165, 80, 310, -16);
$s1->drawCurve(340, -20, 85, -144);
$s1->movePenTo(7808, 3316);
$s1->drawLine(-820, 180);
$s1->drawCurve(142, 59, 293, -57);
$s1->drawCurve(303, -61, 82, -121);
$s1->movePenTo(8267, 5159);
$s1->drawCurve(-150, -97, -69, -32);
$s1->drawCurve(-255, -119, -45, 265);
$s1->drawLine(360, 200);
$s1->drawLine(-20, -140);
$s1->drawLine(440, 260);
$s1->drawLine(-20, -280);
$s1->drawLine(-40, 60);
$s1->drawCurve(-59, -26, -142, -91);
$s1->movePenTo(8488, 5176);
$s1->drawCurve(-77, -155, -168, -129);
$s1->drawCurve(-158, -121, -177, -55);
$s1->drawCurve(-22, 132, 234, 153);
$s1->drawCurve(178, 115, 190, 60);
$s1->movePenTo(8228, 5636);
$s1->drawLine(240, 120);
$s1->drawLine(-20, -80);
$s1->drawLine(60, -20);
$s1->drawCurve(-39, -43, -73, -27);
$s1->drawCurve(-72, -28, -68, 3);
$s1->drawCurve(-170, 6, 38, 169);
$s1->drawCurve(33, 130, 231, 90);
$s1->drawCurve(-12, -38, 2, -20);
$s1->drawLine(-30, -22);
$s1->drawLine(100, -20);
$s1->drawLine(-18, 71);
$s1->drawLine(-2, 29);
$s1->drawCurve(132, 10, 35, -91);
$s1->drawCurve(32, -86, -59, -113);
$s1->drawLine(-20, 20);
$s1->drawLine(0, 40);
$s1->drawLine(-20, 20);
$s1->drawLine(-40, 0);
$s1->drawLine(0, 100);
$s1->drawLine(-240, -120);
$s1->drawLine(-25, 17);
$s1->drawLine(-35, 3);
$s1->drawLine(36, -89);
$s1->drawLine(4, -31);
$s1->movePenTo(7648, 4836);
$s1->drawCurve(-122, 198, -43, 128);
$s1->drawCurve(-65, 189, 50, 165);
$s1->drawLine(60, -320);
$s1->drawLine(160, -360);
$s1->drawLine(-40, 0);
$s1->movePenTo(7528, 4796);
$s1->drawLine(-80, 200);
$s1->drawLine(120, -200);
$s1->drawLine(-40, 0);
$s1->movePenTo(7408, 4736);
$s1->drawLine(-80, 220);
$s1->drawLine(140, -220);
$s1->drawLine(-60, 0);
$s1->movePenTo(7055, 5518);
$s1->drawCurve(-12, 225, 145, 113);
$s1->drawLine(-97, -380);
$s1->drawLine(37, -340);
$s1->drawLine(-43, 186);
$s1->drawCurve(-27, 115, -3, 81);
$s1->movePenTo(7609, 5363);
$s1->drawCurve(-49, 80, -2, 53);
$s1->drawCurve(-9, 112, 142, 124);
$s1->drawCurve(68, 59, 169, 105);
$s1->drawLine(-40, 79);
$s1->drawCurve(-241, -105, -179, -274);
$s1->drawLine(-220, 240);
$s1->drawCurve(187, 258, 260, 46);
$s1->drawCurve(255, 45, 258, -170);
$s1->drawCurve(-153, -185, -22, -52);
$s1->drawCurve(-58, -138, 133, -124);
$s1->drawLine(-420, -280);
$s1->drawLine(-79, 127);
$s1->movePenTo(6655, 3654);
$s1->drawCurve(-130, -240, -117, -118);
$s1->drawLine(400, 800);
$s1->drawLine(320, -140);
$s1->drawLine(-300, 100);
$s1->drawCurve(-54, -181, -119, -221);
$s1->movePenTo(5368, 776);
$s1->setLeftFill(0x06, 0x04, 0x07);
$s1->setRightFill(0xfa, 0xfc, 0xfa);
$s1->drawLine(20, 100);
$s1->drawLine(40, 0);
$s1->drawLine(20, -100);
$s1->drawLine(-80, 0);
$s1->movePenTo(5648, 876);
$s1->drawLine(20, -100);
$s1->drawLine(-100, 80);
$s1->drawLine(80, 20);
$s1->movePenTo(5488, 776);
$s1->drawLine(0, 300);
$s1->drawLine(100, -60);
$s1->drawCurve(-55, -32, -6, -73);
$s1->drawLine(1, -135);
$s1->drawLine(-40, 0);
$s1->movePenTo(5448, 652);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->setRightFill(0x06, 0x04, 0x07);
$s1->drawCurve(-85, 35, -29, 106);
$s1->drawCurve(-28, 97, 29, 108);
$s1->drawCurve(29, 112, 72, 53);
$s1->drawCurve(79, 61, 103, -42);
$s1->drawCurve(79, -33, 29, -106);
$s1->drawCurve(28, -98, -26, -108);
$s1->drawCurve(-27, -112, -69, -54);
$s1->drawCurve(-79, -61, -105, 42);
$s1->movePenTo(5361, 1221);
$s1->drawCurve(-97, -82, -56, -123);
$s1->drawCurve(-261, 108, -73, 204);
$s1->drawCurve(-47, 127, 1, 341);
$s1->drawLine(280, -60);
$s1->drawCurve(-16, -158, 6, -81);
$s1->drawCurve(8, -143, 102, -38);
$s1->drawLine(40, 400);
$s1->drawLine(580, 0);
$s1->drawLine(0, -400);
$s1->drawLine(120, 20);
$s1->drawLine(0, 420);
$s1->drawLine(280, 60);
$s1->drawCurve(0, -316, -55, -160);
$s1->drawCurve(-85, -246, -240, -78);
$s1->drawCurve(-30, 167, -84, 78);
$s1->drawCurve(-75, 69, -105, -14);
$s1->drawCurve(-100, -13, -93, -82);
$s1->movePenTo(4178, 2602);
$s1->drawCurve(109, -305, -159, -121);
$s1->drawLine(-4, 340);
$s1->drawLine(-196, 480);
$s1->drawCurve(63, -55, 70, -106);
$s1->drawCurve(74, -114, 43, -119);
$s1->movePenTo(3847, 2376);
$s1->drawLine(221, -160);
$s1->drawCurve(-123, -258, -273, -120);
$s1->drawCurve(-290, -126, -235, 144);
$s1->drawLine(65, 107);
$s1->drawCurve(42, 64, 6, 49);
$s1->drawCurve(16, 190, -144, 58);
$s1->drawCurve(-122, 50, -163, -58);
$s1->drawLine(-20, 60);
$s1->drawLine(-80, -20);
$s1->drawCurve(-34, 265, 174, 256);
$s1->drawCurve(161, 236, 259, 123);
$s1->drawCurve(3, -18, 50, -119);
$s1->drawCurve(38, -92, -18, -45);
$s1->drawCurve(-19, -48, -49, -42);
$s1->drawLine(-91, -67);
$s1->drawCurve(-114, -82, 0, -107);
$s1->drawLine(380, 220);
$s1->drawLine(167, -214);
$s1->drawCurve(100, -140, -14, -106);
$s1->drawCurve(-5, -44, -114, -125);
$s1->drawCurve(-105, -116, 14, -29);
$s1->drawCurve(29, -49, 104, 69);
$s1->drawCurve(170, 114, 14, 180);
$s1->movePenTo(3928, 2736);
$s1->drawLine(-101, 200);
$s1->drawLine(141, -200);
$s1->drawLine(-40, 0);
$s1->movePenTo(3767, 2516);
$s1->drawLine(-140, 320);
$s1->drawCurve(68, -44, 47, -98);
$s1->drawCurve(49, -104, -24, -74);
$s1->movePenTo(3827, 2676);
$s1->drawLine(-80, 220);
$s1->drawLine(120, -200);
$s1->drawLine(-40, -20);
$s1->movePenTo(3307, 3296);
$s1->drawCurve(47, 136, 292, 56);
$s1->drawCurve(253, 47, 169, -39);
$s1->drawLine(-321, -37);
$s1->drawLine(-440, -163);
$s1->movePenTo(3964, 3390);
$s1->drawCurve(75, 6, 89, -20);
$s1->drawLine(-281, -60);
$s1->drawCurve(13, 63, 104, 11);
$s1->movePenTo(3867, 3196);
$s1->drawCurve(109, 116, 192, -56);
$s1->drawLine(-301, -60);
$s1->movePenTo(3467, 2916);
$s1->drawCurve(77, 120, 252, 59);
$s1->drawCurve(180, 40, 212, 1);
$s1->drawLine(-361, -87);
$s1->drawLine(-360, -133);
$s1->movePenTo(5868, 2416);
$s1->drawLine(-680, -20);
$s1->drawLine(20, 360);
$s1->drawLine(460, 0);
$s1->drawLine(176, -30);
$s1->drawLine(24, -310);
$s1->movePenTo(6348, 3296);
$s1->drawLine(-60, 240);
$s1->drawCurve(100, -126, -40, -114);
$s1->movePenTo(6328, 3022);
$s1->drawLine(240, -146);
$s1->drawLine(-320, 120);
$s1->drawLine(80, 200);
$s1->drawLine(0, -174);
$s1->movePenTo(2802, 1907);
$s1->setLeftFill(0xff, 0xff, 0xff);
$s1->setRightFill();
$s1->drawLine(-2, -1);
$s1->drawLine(2, 0);
$s1->drawLine(0, 1);
$s1->movePenTo(2894, 1941);
$s1->setRightFill(0x06, 0x04, 0x07);
$s1->drawLine(-118, -51);
$s1->drawLine(33, -6);
$s1->drawLine(13, -1);
$s1->drawLine(21, 4);
$s1->drawLine(3, 1);
$s1->drawLine(4, 1);
$s1->drawLine(0, 1);
$s1->drawLine(6, 3);
$s1->drawLine(12, 11);
$s1->drawLine(26, 37);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(-2, 1);
$s1->drawLine(-1, 1);
$s1->drawLine(-2, 2);
$s1->drawLine(-6, 2);
$s1->drawCurve(-22, 11, -24, -3);
$s1->drawLine(-18, -4);
$s1->drawLine(-15, -6);
$s1->setRightFill();
$s1->drawLine(-5, -3);
$s1->drawLine(-2, -1);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(-5, -4);
$s1->drawLine(-6, -4);
$s1->drawLine(-24, -19);
$s1->drawLine(82, 17);
$s1->setRightFill(0xfa, 0xfc, 0xfa);
$s1->drawLine(4, -4);
$s1->drawLine(12, 5);
$s1->drawLine(-1, 2);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(35, 7);
$s1->movePenTo(2804, 1945);
$s1->setLeftFill();
$s1->drawLine(-5, -3);
$s1->drawLine(-2, -1);
$s1->movePenTo(2605, 1962);
$s1->setLeftFill(0xff, 0xff, 0xff);
$s1->setRightFill(0x06, 0x04, 0x07);
$s1->drawCurve(9, 89, 104, 99);
$s1->drawCurve(106, 98, 111, 22);
$s1->drawCurve(127, 26, 58, -100);
$s1->drawCurve(35, -60, -38, -86);
$s1->drawCurve(-34, -76, -78, -69);
$s1->drawCurve(-78, -68, -76, -22);
$s1->drawCurve(-83, -24, -41, 45);
$s1->drawCurve(-133, 24, 11, 102);
$s1->movePenTo(2844, 1931);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(15, 3);
$s1->movePenTo(2909, 1955);
$s1->setRightFill(0xff, 0xff, 0xff);
$s1->drawLine(9, 2);
$s1->drawLine(-8, -3);
$s1->drawLine(-1, 1);
$s1->movePenTo(2703, 2064);
$s1->setLeftFill(0x06, 0x04, 0x07);
$s1->drawCurve(15, 19, 49, 13);
$s1->drawLine(-80, -100);
$s1->drawCurve(0, 49, 16, 19);
$s1->movePenTo(2707, 1976);
$s1->setLeftFill(0x00, 0x00, 0x00);
$s1->drawLine(60, 120);
$s1->drawCurve(23, -68, -83, -52);
$s1->movePenTo(5046, 5838);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->setRightFill(0x06, 0x04, 0x07);
$s1->drawCurve(-272, 156, -6, 381);
$s1->drawLine(40, 0);
$s1->drawCurve(25, -257, 81, -120);
$s1->drawCurve(147, -234, 413, -25);
$s1->drawCurve(132, -9, 213, 12);
$s1->drawLine(309, 14);
$s1->drawCurve(-87, -36, -141, -5);
$s1->drawLine(-232, 1);
$s1->drawCurve(-413, 0, -209, 122);
$s1->movePenTo(5588, 5636);
$s1->drawLine(500, 20);
$s1->drawLine(20, -520);
$s1->drawLine(-520, -20);
$s1->drawLine(0, 520);
$s1->movePenTo(5028, 5116);
$s1->drawLine(-20, 640);
$s1->drawLine(460, -120);
$s1->drawLine(-20, -520);
$s1->drawLine(-420, 0);
$s1->movePenTo(5908, 5836);
$s1->drawLine(220, 40);
$s1->drawLine(0, -40);
$s1->drawLine(-220, 0);
$s1->movePenTo(3247, 4776);
$s1->drawLine(0, 40);
$s1->drawCurve(292, 7, 74, 215);
$s1->drawCurve(67, 195, -133, 243);
$s1->drawCurve(138, -82, 26, -122);
$s1->drawCurve(24, -109, -67, -117);
$s1->drawCurve(-63, -110, -116, -76);
$s1->drawCurve(-119, -78, -123, -6);
$s1->movePenTo(3807, 4796);
$s1->drawLine(101, 300);
$s1->drawCurve(22, -64, -33, -99);
$s1->drawCurve(-34, -97, -56, -40);
$s1->movePenTo(3852, 4712);
$s1->drawCurve(134, 147, 57, 188);
$s1->drawCurve(59, 198, -44, 191);
$s1->drawCurve(-21, 92, -84, 94);
$s1->drawLine(-146, 154);
$s1->drawCurve(208, -57, 70, -181);
$s1->drawCurve(61, -158, -51, -225);
$s1->drawCurve(-46, -203, -118, -192);
$s1->drawCurve(-116, -187, -128, -84);
$s1->drawCurve(-122, -75, -158, -24);
$s1->drawCurve(-200, -31, -40, 117);
$s1->drawCurve(188, -46, 187, 69);
$s1->drawCurve(175, 64, 135, 149);
$s1->movePenTo(4548, 4996);
$s1->drawLine(-300, -600);
$s1->drawLine(-361, 160);
$s1->drawLine(227, 440);
$s1->drawLine(77, 166);
$s1->drawLine(357, -166);
$s1->movePenTo(3707, 4836);
$s1->drawCurve(-19, 202, 139, 78);
$s1->drawLine(-120, -280);
$s1->movePenTo(6108, 6055);
$s1->drawCurve(-414, -49, -216, 50);
$s1->drawCurve(-356, 81, -14, 338);
$s1->drawLine(57, -143);
$s1->drawCurve(32, -85, 51, -49);
$s1->drawCurve(126, -125, 284, -1);
$s1->drawLine(450, 23);
$s1->drawLine(0, -40);
$s1->movePenTo(6328, 6136);
$s1->drawCurve(-28, -147, -72, -73);
$s1->drawLine(80, 459);
$s1->drawCurve(48, -88, -28, -151);
$s1->movePenTo(5828, 6675);
$s1->drawLine(20, -140);
$s1->drawLine(-680, -20);
$s1->drawCurve(-1, 86, -22, 47);
$s1->drawCurve(-20, 41, -25, -5);
$s1->drawCurve(-25, -6, -10, -48);
$s1->drawCurve(-12, -54, 15, -81);
$s1->drawLine(-240, -60);
$s1->drawCurve(-1, 271, 58, 140);
$s1->drawCurve(81, 199, 222, 50);
$s1->drawCurve(20, -114, 15, -53);
$s1->drawCurve(25, -88, 63, -55);
$s1->drawCurve(166, -153, 161, 134);
$s1->drawCurve(66, 56, 42, 91);
$s1->drawCurve(41, 90, 1, 92);
$s1->drawCurve(244, -24, 110, -209);
$s1->drawCurve(41, -79, 33, -125);
$s1->drawLine(52, -223);
$s1->drawCurve(-171, 27, -56, 27);
$s1->drawCurve(-94, 43, 1, 143);
$s1->drawLine(-120, 0);
$s1->movePenTo(6128, 5975);
$s1->drawLine(-220, -39);
$s1->drawLine(0, 39);
$s1->drawLine(220, 0);
$s1->movePenTo(5330, 6929);
$s1->drawCurve(-43, 89, 11, 116);
$s1->drawCurve(9, 117, 59, 73);
$s1->drawCurve(64, 81, 98, -14);
$s1->drawCurve(97, -14, 48, -100);
$s1->drawCurve(43, -91, -12, -118);
$s1->drawCurve(-12, -119, -60, -72);
$s1->drawCurve(-66, -81, -98, 19);
$s1->drawCurve(-92, 15, -46, 99);
$s1->movePenTo(5448, 7255);
$s1->setLeftFill(0x06, 0x04, 0x07);
$s1->setRightFill(0xfa, 0xfc, 0xfa);
$s1->drawLine(0, -80);
$s1->drawLine(-80, 80);
$s1->drawLine(80, 0);
$s1->movePenTo(5548, 7255);
$s1->drawLine(0, -320);
$s1->drawLine(-120, 0);
$s1->drawLine(60, 320);
$s1->drawLine(60, 0);
$s1->movePenTo(5588, 7255);
$s1->drawLine(80, -100);
$s1->drawCurve(-53, 10, -15, 20);
$s1->drawCurve(-15, 19, 3, 51);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(6048, 1896);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->drawLine(-601, -7);
$s1->drawLine(-260, -133);
$s1->drawCurve(129, 185, 264, 16);
$s1->drawLine(468, -21);
$s1->drawLine(0, -40);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(5531, 2332);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->drawCurve(-300, -2, -184, -144);
$s1->drawCurve(-66, -49, -80, -129);
$s1->drawCurve(-82, -131, -52, -41);
$s1->drawCurve(26, 412, 472, 81);
$s1->drawCurve(162, 28, 249, -6);
$s1->drawLine(372, -15);
$s1->drawLine(0, -40);
$s1->drawLine(-517, 36);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(6268, 1856);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->drawLine(-100, 320);
$s1->drawCurve(153, -175, -53, -145);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(5828, 2176);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->drawLine(0, 40);
$s1->drawLine(220, -20);
$s1->drawLine(-220, -20);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(7107, 2908);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->drawCurve(162, -165, 179, -47);
$s1->drawCurve(-53, -49, -68, 20);
$s1->drawCurve(-44, 13, -75, 56);
$s1->drawCurve(-376, 251, 16, 229);
$s1->drawLine(259, -308);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(7241, 3614);
$s1->setRightFill(0x63, 0x62, 0x63);
$s1->drawLine(7, 22);
$s1->drawLine(-16, 0);
$s1->drawCurve(-15, 14, -35, 4);
$s1->drawCurve(-75, 9, -59, -27);
$s1->drawLine(184, 0);
$s1->drawCurve(8, -9, 1, -13);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(3147, 4535);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->drawCurve(-81, 15, -120, 58);
$s1->drawCurve(-132, 64, -98, 82);
$s1->drawCurve(-262, 217, 143, 180);
$s1->drawCurve(34, 44, 64, 9);
$s1->drawLine(120, 2);
$s1->drawCurve(157, -1, 51, 133);
$s1->drawCurve(41, 97, -91, 116);
$s1->drawLine(-66, 89);
$s1->drawCurve(-30, 51, 6, 47);
$s1->drawCurve(12, 96, 172, 61);
$s1->drawCurve(151, 54, 187, -49);
$s1->drawCurve(81, -22, 241, -103);
$s1->drawLine(-160, -240);
$s1->drawLine(-200, 117);
$s1->drawCurve(-126, 47, -34, -124);
$s1->drawCurve(298, -29, -77, -246);
$s1->drawCurve(-22, -71, -79, -153);
$s1->drawCurve(-79, -154, -21, -67);
$s1->drawLine(-360, 140);
$s1->drawCurve(-5, -101, 114, -64);
$s1->drawCurve(67, -38, 144, -37);
$s1->drawLine(-40, -220);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(2787, 5288);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->drawLine(-188, 11);
$s1->drawCurve(-116, 13, -50, 53);
$s1->drawCurve(-98, 100, 56, 120);
$s1->drawCurve(56, 120, 140, -10);
$s1->drawCurve(90, -8, 89, -49);
$s1->drawCurve(100, -53, 37, -74);
$s1->drawCurve(43, -81, -33, -73);
$s1->drawCurve(-35, -76, -91, 7);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(2447, 5395);
$s1->setLeftFill(0x06, 0x04, 0x07);
$s1->drawLine(40, 80);
$s1->drawLine(60, -100);
$s1->drawLine(-100, 20);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(5768, 6155);
$s1->setLeftFill(0xfa, 0xfc, 0xfa);
$s1->drawLine(100, 320);
$s1->drawCurve(87, -58, -43, -124);
$s1->drawCurve(-43, -122, -101, -16);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(2522, 5549);
$s1->setLeftFill(0x06, 0x04, 0x07);
$s1->drawLine(40, 80);
$s1->drawLine(60, -100);
$s1->drawLine(-100, 20);
$i1 = $conference1->add($s1);
$i1->scaleTo(0.5);
$i1->moveTo(-2720, -1890);
$conference1->nextFrame(); # end of frame 1
$conference2 = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(6139, 1671);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawCurve(28, -75, 62, -60);
$s1->drawCurve(112, -109, 158, 0);
$s1->drawCurve(158, 0, 112, 109);
$s1->drawCurve(62, 60, 28, 75);
$s1->setRightFill(0x99, 0x99, 0x99, 0x00);
$s1->drawLine(504, 0);
$s1->drawCurve(33, 0, 23, 23);
$s1->drawCurve(24, 24, 0, 33);
$s1->drawLine(0, 3987);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(0, 823);
$s1->drawLine(0, 12);
$s1->drawLine(-305, 0);
$s1->drawLine(0, -123);
$s1->setRightFill(0x99, 0x99, 0x99, 0x00);
$s1->drawLine(-122, 0);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(0, 123);
$s1->drawLine(-928, 0);
$s1->drawLine(0, -123);
$s1->setRightFill(0x99, 0x99, 0x99, 0x00);
$s1->drawLine(-122, 0);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(0, 123);
$s1->drawLine(-354, 0);
$s1->drawLine(0, -12);
$s1->drawLine(0, -111);
$s1->setRightFill(0x99, 0x99, 0x99, 0x00);
$s1->drawLine(-217, 0);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(0, 111);
$s1->drawLine(0, 12);
$s1->drawLine(-305, 0);
$s1->drawLine(0, -123);
$s1->setRightFill(0x99, 0x99, 0x99, 0x00);
$s1->drawLine(-122, 0);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(0, 123);
$s1->drawLine(-928, 0);
$s1->drawLine(0, -123);
$s1->setRightFill(0x99, 0x99, 0x99, 0x00);
$s1->drawLine(-122, 0);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(0, 123);
$s1->drawLine(-354, 0);
$s1->drawLine(0, -12);
$s1->drawLine(0, -813);
$s1->drawCurve(0, -166, 117, -117);
$s1->drawLine(2, -2);
$s1->setRightFill(0x99, 0x99, 0x99, 0x00);
$s1->drawLine(0, -864);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawCurve(-62, 43, -57, 44);
$s1->drawCurve(-9, -41, 0, -45);
$s1->drawLine(0, -1238);
$s1->drawCurve(0, -166, 117, -117);
$s1->drawLine(11, -10);
$s1->setRightFill(0x99, 0x99, 0x99, 0x00);
$s1->drawLine(0, -1318);
$s1->drawCurve(0, -33, 23, -24);
$s1->drawCurve(24, -23, 33, 0);
$s1->drawLine(2376, 0);
$s1->setLeftFill(0x00, 0x00, 0x00);
$s1->drawCurve(-22, 60, 0, 69);
$s1->drawCurve(0, 155, 112, 109);
$s1->drawCurve(112, 109, 158, 0);
$s1->drawCurve(158, 0, 112, -109);
$s1->drawCurve(112, -109, 0, -155);
$s1->drawCurve(0, -69, -22, -60);
$s1->movePenTo(7441, 2773);
$s1->setLeftFill(0x99, 0x99, 0x99, 0x00);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawLine(0, 730);
$s1->drawLine(-398, 25);
$s1->drawLine(0, -506);
$s1->drawCurve(0, -25, -18, -18);
$s1->drawCurve(-17, -17, -25, 0);
$s1->drawLine(-1, 0);
$s1->drawCurve(-25, 0, -18, 17);
$s1->drawCurve(-17, 18, 0, 25);
$s1->drawLine(0, 517);
$s1->drawLine(-429, 53);
$s1->drawLine(-385, 64);
$s1->drawLine(0, -634);
$s1->drawCurve(0, -25, -18, -18);
$s1->drawCurve(-17, -17, -25, 0);
$s1->drawLine(-1, 0);
$s1->drawCurve(-25, 0, -18, 17);
$s1->drawCurve(-17, 18, 0, 25);
$s1->drawLine(0, 658);
$s1->drawCurve(-193, 38, -184, 47);
$s1->drawLine(0, -992);
$s1->drawCurve(0, -166, 117, -117);
$s1->drawCurve(117, -117, 166, 0);
$s1->drawLine(1031, 0);
$s1->drawCurve(166, 0, 117, 117);
$s1->drawCurve(117, 117, 0, 166);
$s1->movePenTo(6796, 4533);
$s1->drawCurve(112, 109, 0, 155);
$s1->drawCurve(0, 155, -112, 109);
$s1->drawCurve(-112, 109, -158, 0);
$s1->drawCurve(-158, 0, -112, -109);
$s1->drawCurve(-112, -109, 0, -155);
$s1->drawCurve(0, -155, 112, -109);
$s1->drawCurve(112, -109, 158, 0);
$s1->drawCurve(158, 0, 112, 109);
$s1->movePenTo(7138, 6450);
$s1->drawLine(0, -532);
$s1->drawCurve(0, -25, -18, -18);
$s1->drawCurve(-18, -18, -25, 0);
$s1->drawCurve(-25, 0, -18, 18);
$s1->drawCurve(-18, 18, 0, 25);
$s1->drawLine(0, 532);
$s1->movePenTo(5612, 6450);
$s1->drawLine(0, -702);
$s1->drawCurve(0, -166, 117, -117);
$s1->drawCurve(117, -117, 166, 0);
$s1->drawLine(1031, 0);
$s1->drawCurve(166, 0, 117, 117);
$s1->drawCurve(113, 113, 4, 160);
$s1->movePenTo(4511, 2774);
$s1->drawCurve(-158, 0, -112, -109);
$s1->drawCurve(-112, -109, 0, -155);
$s1->drawCurve(0, -155, 112, -109);
$s1->drawCurve(112, -109, 158, 0);
$s1->drawCurve(158, 0, 112, 109);
$s1->drawCurve(112, 109, 0, 155);
$s1->drawCurve(0, 155, -112, 109);
$s1->drawCurve(-112, 109, -158, 0);
$s1->movePenTo(3683, 4599);
$s1->setLeftFill(0x00, 0x00, 0x00);
$s1->setRightFill(0x99, 0x99, 0x99, 0x00);
$s1->drawCurve(62, -43, 66, -42);
$s1->drawLine(142, -88);
$s1->drawLine(0, -839);
$s1->drawCurve(0, -25, 17, -18);
$s1->drawCurve(18, -17, 25, 0);
$s1->drawLine(1, 0);
$s1->drawCurve(25, 0, 17, 17);
$s1->drawCurve(18, 18, 0, 25);
$s1->drawLine(0, 769);
$s1->drawCurve(365, -204, 421, -156);
$s1->drawLine(0, -409);
$s1->drawCurve(0, -25, 17, -18);
$s1->drawCurve(18, -17, 25, 0);
$s1->drawLine(1, 0);
$s1->drawCurve(25, 0, 17, 17);
$s1->drawCurve(18, 18, 0, 25);
$s1->drawLine(0, 365);
$s1->drawCurve(197, -69, 208, -59);
$s1->drawLine(0, -462);
$s1->drawCurve(0, -166, -117, -117);
$s1->drawCurve(-117, -117, -166, 0);
$s1->drawLine(-1031, 0);
$s1->drawCurve(-158, 0, -114, 107);
$s1->movePenTo(3683, 5463);
$s1->setLeftFill(0x99, 0x99, 0x99, 0x00);
$s1->setRightFill(0x00, 0x00, 0x00);
$s1->drawCurve(116, -115, 165, 0);
$s1->drawLine(1031, 0);
$s1->drawCurve(166, 0, 117, 117);
$s1->drawCurve(117, 117, 0, 166);
$s1->drawLine(0, 702);
$s1->movePenTo(5090, 6450);
$s1->drawLine(0, -532);
$s1->drawCurve(0, -25, -18, -18);
$s1->drawCurve(-18, -18, -25, 0);
$s1->drawCurve(-25, 0, -18, 18);
$s1->drawCurve(-18, 18, 0, 25);
$s1->drawLine(0, 532);
$s1->movePenTo(6088, 6450);
$s1->drawLine(0, -532);
$s1->drawCurve(0, -25, -18, -18);
$s1->drawCurve(-18, -18, -25, 0);
$s1->drawCurve(-25, 0, -18, 18);
$s1->drawCurve(-18, 18, 0, 25);
$s1->drawLine(0, 532);
$s1->movePenTo(4784, 4530);
$s1->drawCurve(112, 109, 0, 155);
$s1->drawCurve(0, 155, -112, 109);
$s1->drawCurve(-112, 109, -158, 0);
$s1->drawCurve(-158, 0, -112, -109);
$s1->drawCurve(-134, -130, 0, -133);
$s1->drawCurve(0, -135, 134, -130);
$s1->drawCurve(112, -109, 158, 0);
$s1->drawCurve(158, 0, 112, 109);
$s1->movePenTo(4040, 6450);
$s1->drawLine(0, -532);
$s1->drawCurve(0, -25, -18, -18);
$s1->drawCurve(-18, -18, -25, 0);
$s1->drawCurve(-25, 0, -18, 18);
$s1->drawCurve(-18, 18, 0, 25);
$s1->drawLine(0, 532);
$i1 = $conference2->add($s1);
$i1->scaleTo(0.5);
$i1->moveTo(-2720, -1890);
$conference2->nextFrame(); # end of frame 1
# status log toolbar
# $statusbar = new SWF::Sprite();
### Shape 1 ###
# $s1 = new SWF::Shape();
# $s1->movePenTo(19920, 0);
# $s1->setRightFill(0xcc, 0xcc, 0xcc);
# $s1->drawLine(0, 600);
# $s1->setLine(20, 0x00, 0x00, 0x00);
# $s1->drawLine(-19920, 0);
# $s1->setLine(20, 0xcc, 0xcc, 0xcc);
# $s1->drawLine(0, -600);
# $s1->setLine(20, 0x99, 0x99, 0x99);
# $s1->drawLine(19920, 0);
# $i1 = $statusbar->add($s1);
# $i1->scaleTo(0.5);
# $statusbar->nextFrame(); # end of frame 1
$extrainfo = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(5400, 0);
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, 600);
$s1->setLine(20, 0x99, 0x99, 0x99);
$s1->drawLine(-5400, 0);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, -600);
$s1->setLine(20, 0x99, 0x99, 0x99);
$s1->drawLine(5400, 0);
$s1->setLeftFill();
$s1->setRightFill();
$s1->movePenTo(5367, 91);
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->setLine(20, 0xff, 0xff, 0xff);
$s1->drawLine(0, 400);
$s1->drawLine(-3900, 0);
$s1->setLine(20, 0x66, 0x66, 0x66);
$s1->drawLine(0, -400);
$s1->setLine(20, 0x99, 0x99, 0x99);
$s1->drawLine(3900, 0);
$i2 = $extrainfo->add($s1);
$i2->scaleTo(0.5);
#$s3 = new SWF::TextField(SWFTEXTFIELD_USEFONT );
#$s3->setBounds(3740, 398);
#$s3->setFont($font_general);
#$s3->setHeight(320);
###$s3->setColor(0x00, 0x00, 0x00, 0xff);
#$s3->align(SWFTEXTFIELD_ALIGN_LEFT);
#$s3->setName('clidvalue');
#$i3 = $extrainfo->add($s3);
#$i3->scaleTo(0.5, 0.5);
#$i3->moveTo(770, 65);
#$i3->setName('clid_text');
$extrainfo->nextFrame();
$boton_ayuda = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(439, 222);
$s1->setLeftFill(0xff, 0xa8, 0x37);
$s1->setRightFill(0x79, 0x79, 0x79);
$s1->drawCurve(-1, 24, -16, 23);
$s1->drawLine(-34, 35);
$s1->drawCurve(-32, 29, 2, 32);
$s1->drawLine(0, 9);
$s1->drawLine(-78, 0);
$s1->drawLine(-2, -13);
$s1->drawCurve(-2, -41, 37, -35);
$s1->drawLine(24, -27);
$s1->drawLine(10, -25);
$s1->drawCurve(0, -28, -42, -1);
$s1->drawCurve(-34, 0, -25, 15);
$s1->drawLine(-20, -53);
$s1->drawCurve(42, -21, 57, 1);
$s1->drawCurve(55, 0, 31, 23);
$s1->drawCurve(27, 20, 1, 33);
$s1->movePenTo(418, 82);
$s1->setLeftFill(0x79, 0x79, 0x79);
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->drawCurve(-46, -21, -49, -1);
$s1->drawCurve(-51, -1, -46, 19);
$s1->drawCurve(-44, 18, -35, 34);
$s1->drawCurve(-35, 33, -20, 44);
$s1->drawCurve(-21, 46, -2, 49);
$s1->drawCurve(-3, 50, 19, 46);
$s1->drawCurve(17, 45, 33, 36);
$s1->drawCurve(33, 35, 44, 21);
$s1->drawCurve(45, 22, 49, 3);
$s1->drawCurve(50, 2, 47, -17);
$s1->drawCurve(45, -16, 36, -33);
$s1->drawCurve(36, -33, 22, -43);
$s1->drawCurve(22, -45, 4, -49);
$s1->drawLine(0, -15);
$s1->drawLine(0, -2);
$s1->drawCurve(0, -50, -19, -45);
$s1->drawCurve(-19, -44, -34, -34);
$s1->drawCurve(-34, -35, -44, -19);
$s1->movePenTo(518, 404);
$s1->setRightFill(0xff, 0xa8, 0x37);
$s1->drawCurve(-21, 44, -38, 32);
$s1->drawCurve(-37, 32, -50, 12);
$s1->drawLine(-98, 3);
$s1->drawCurve(-47, -10, -39, -29);
$s1->drawCurve(-39, -29, -24, -43);
$s1->drawCurve(-25, -43, -2, -51);
$s1->drawCurve(-2, -50, 19, -47);
$s1->drawCurve(28, -72, 72, -37);
$s1->drawCurve(71, -38, 77, 16);
$s1->drawCurve(76, 15, 50, 62);
$s1->drawCurve(49, 61, 1, 78);
$s1->drawLine(0, 1);
$s1->drawCurve(-1, 49, -20, 44);
$s1->movePenTo(278, 410);
$s1->setLeftFill(0xff, 0xa8, 0x37);
$s1->setRightFill(0x79, 0x79, 0x79);
$s1->drawCurve(15, -12, 23, 0);
$s1->drawCurve(24, 0, 15, 12);
$s1->drawCurve(14, 12, 0, 20);
$s1->drawCurve(0, 20, -14, 12);
$s1->drawCurve(-15, 13, -23, 0);
$s1->drawLine(-1, 0);
$s1->drawCurve(-23, 0, -15, -13);
$s1->drawCurve(-15, -13, 0, -19);
$s1->drawCurve(0, -20, 15, -12);
$s1->movePenTo(640, 600);
$s1->setLeftFill();
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->setLine(20, 0x99, 0x99, 0x99); # raya inferior
$s1->drawLine(-640, 0);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, -600);
$s1->setLine(20, 0x99, 0x99, 0x99);
$s1->drawLine(640, 0);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, 600);
### Shape 2 ###
$s2 = new SWF::Shape();
$s2->movePenTo(439, 221);
$s2->setLeftFill(0x79, 0x79, 0x79);
$s2->setRightFill(0xff, 0xa8, 0x37);
$s2->drawCurve(-1, 25, -16, 23);
$s2->drawLine(-34, 35);
$s2->drawCurve(-32, 28, 1, 32);
$s2->drawLine(0, 9);
$s2->drawLine(-78, 0);
$s2->drawLine(-1, -13);
$s2->drawCurve(-2, -40, 37, -36);
$s2->drawLine(24, -26);
$s2->drawLine(10, -25);
$s2->drawCurve(0, -29, -42, 0);
$s2->drawCurve(-34, 0, -25, 14);
$s2->drawLine(-20, -53);
$s2->drawCurve(42, -20, 57, 0);
$s2->drawCurve(55, 0, 31, 23);
$s2->drawCurve(27, 21, 1, 32);
$s2->movePenTo(515, 157);
$s2->setLeftFill(0xcc, 0xcc, 0xcc);
$s2->drawLine(25, 40);
$s2->drawLine(9, 17);
$s2->drawLine(8, 23);
$s2->drawLine(11, 72);
$s2->drawLine(0, 2);
$s2->drawLine(0, 15);
$s2->drawLine(-16, 71);
$s2->drawLine(-10, 23);
$s2->drawCurve(-22, 43, -36, 33);
$s2->drawCurve(-36, 33, -45, 16);
$s2->drawCurve(-47, 17, -50, -2);
$s2->drawCurve(-49, -3, -45, -22);
$s2->drawCurve(-44, -21, -33, -35);
$s2->drawLine(-29, -39);
$s2->drawLine(-21, -42);
$s2->drawLine(-1, -1);
$s2->drawLine(-13, -46);
$s2->setRightFill();
$s2->drawLine(-3, -50);
$s2->drawCurve(2, -49, 22, -45);
$s2->drawCurve(20, -44, 35, -34);
$s2->drawLine(18, -15);
$s2->setRightFill(0xff, 0xa8, 0x37);
$s2->drawLine(61, -36);
$s2->drawCurve(46, -19, 50, 1);
$s2->drawLine(1, 0);
$s2->drawLine(4, 0);
$s2->drawLine(69, 13);
$s2->setRightFill();
$s2->drawLine(22, 8);
$s2->drawCurve(44, 20, 34, 34);
$s2->drawLine(19, 22);
$s2->setLeftFill(0xff, 0xa8, 0x37);
$s2->drawLine(-19, -21);
$s2->drawCurve(-34, -35, -44, -19);
$s2->drawLine(-22, -9);
$s2->movePenTo(539, 311);
$s2->setRightFill(0x79, 0x79, 0x79);
$s2->drawCurve(-1, 49, -20, 44);
$s2->drawCurve(-21, 44, -38, 32);
$s2->drawCurve(-37, 32, -50, 12);
$s2->drawLine(-98, 3);
$s2->drawCurve(-47, -10, -39, -29);
$s2->drawCurve(-39, -29, -24, -43);
$s2->drawCurve(-25, -43, -2, -51);
$s2->drawCurve(-2, -50, 19, -47);
$s2->drawCurve(28, -72, 72, -37);
$s2->drawCurve(71, -38, 77, 16);
$s2->drawCurve(76, 15, 50, 62);
$s2->drawCurve(49, 61, 1, 78);
$s2->drawLine(0, 1);
$s2->movePenTo(165, 114);
$s2->setRightFill();
$s2->drawCurve(-10, 7, -8, 9);
$s2->drawCurve(-35, 33, -20, 44);
$s2->drawCurve(-21, 46, -2, 49);
$s2->drawLine(2, 49);
$s2->movePenTo(278, 409);
$s2->setLeftFill(0x79, 0x79, 0x79);
$s2->setRightFill(0xff, 0xa8, 0x37);
$s2->drawCurve(15, -12, 23, 0);
$s2->drawCurve(24, 0, 14, 12);
$s2->drawCurve(15, 12, 0, 20);
$s2->drawCurve(0, 19, -14, 13);
$s2->drawCurve(-15, 12, -23, 1);
$s2->drawLine(-1, 0);
$s2->drawCurve(-24, -1, -14, -12);
$s2->drawCurve(-15, -13, 0, -19);
$s2->drawCurve(0, -20, 15, -12);
$s2->movePenTo(640, 600);
$s2->setLeftFill();
$s2->setRightFill(0xcc, 0xcc, 0xcc);
$s2->setLine(20, 0x99, 0x99, 0x99); # raya inferior
$s2->drawLine(-640, 0);
$s2->setLine(20, 0xcc, 0xcc, 0xcc);
$s2->drawLine(0, -600);
$s2->setLine(20, 0x99, 0x99, 0x99);
$s2->drawLine(640, 0);
$s2->setLine(20, 0xcc, 0xcc, 0xcc);
$s2->drawLine(0, 600);
$i1 = $boton_ayuda->add($s1);
$i1->scaleTo(0.5);
$boton_ayuda->nextFrame(); # end of frame 1
$boton_ayuda->remove($i1);
$i1 = $boton_ayuda->add($s2);
$i1->scaleTo(0.5);
$boton_ayuda->nextFrame(); # end of frame 1
$boton_debug = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(415, 159);
$s1->setLeftFill(0x79, 0x79, 0x79);
$s1->setRightFill(0xff, 0xa8, 0x37);
$s1->drawCurve(-10, 0, 0, 10);
$s1->drawCurve(3, 58, -32, 23);
$s1->drawLine(-23, 11);
$s1->drawLine(-9, 1);
$s1->drawLine(-4, 1);
$s1->drawLine(-17, -2);
$s1->drawLine(-21, 4);
$s1->drawCurve(-3, -3, -4, 0);
$s1->drawCurve(-14, -1, -16, -10);
$s1->drawCurve(-34, -22, 3, -60);
$s1->drawCurve(0, -10, -10, 0);
$s1->drawCurve(-10, 0, 0, 10);
$s1->drawCurve(-3, 66, 39, 30);
$s1->drawLine(27, 15);
$s1->drawLine(-50, 3);
$s1->drawCurve(-26, -8, -21, -22);
$s1->drawLine(-15, 1);
$s1->drawCurve(-7, 7, 7, 7);
$s1->drawCurve(26, 26, 33, 10);
$s1->drawLine(33, 3);
$s1->drawLine(-6, 18);
$s1->drawLine(-2, 1);
$s1->drawCurve(-34, 25, -29, -17);
$s1->drawCurve(-8, -5, -5, 9);
$s1->drawCurve(-6, 9, 9, 5);
$s1->drawCurve(34, 20, 38, -21);
$s1->drawCurve(1, 33, 21, 24);
$s1->drawCurve(22, 25, 31, 0);
$s1->drawCurve(30, 0, 22, -25);
$s1->drawCurve(20, -23, 2, -31);
$s1->drawLine(66, -2);
$s1->drawCurve(9, -5, -5, -9);
$s1->drawCurve(-6, -9, -8, 5);
$s1->drawCurve(-26, 16, -31, -20);
$s1->drawLine(-7, -23);
$s1->drawLine(26, -3);
$s1->drawCurve(33, -10, 26, -26);
$s1->drawCurve(7, -7, -7, -7);
$s1->drawLine(-14, -1);
$s1->drawCurve(-22, 22, -25, 8);
$s1->drawLine(-40, 1);
$s1->drawLine(-7, -6);
$s1->drawLine(22, -12);
$s1->drawCurve(40, -29, -2, -68);
$s1->drawCurve(-1, -10, -10, 0);
$s1->movePenTo(416, 81);
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->drawCurve(-46, -20, -49, -1);
$s1->drawCurve(-50, -1, -46, 19);
$s1->drawCurve(-45, 17, -34, 34);
$s1->drawCurve(-36, 34, -20, 44);
$s1->drawCurve(-21, 45, -2, 49);
$s1->drawCurve(-2, 50, 18, 46);
$s1->drawCurve(17, 45, 34, 36);
$s1->drawCurve(33, 35, 44, 21);
$s1->drawCurve(44, 21, 50, 3);
$s1->drawCurve(49, 3, 47, -17);
$s1->drawCurve(45, -16, 36, -33);
$s1->drawCurve(36, -33, 22, -43);
$s1->drawCurve(22, -44, 4, -49);
$s1->drawLine(0, -16);
$s1->drawLine(0, -1);
$s1->drawCurve(-1, -50, -19, -45);
$s1->drawCurve(-19, -45, -33, -34);
$s1->drawCurve(-34, -34, -44, -20);
$s1->movePenTo(537, 310);
$s1->setRightFill(0xff, 0xa8, 0x37);
$s1->drawCurve(-1, 49, -20, 44);
$s1->drawCurve(-21, 44, -38, 32);
$s1->drawCurve(-37, 32, -50, 12);
$s1->drawCurve(-49, 12, -48, -10);
$s1->drawCurve(-48, -9, -39, -29);
$s1->drawCurve(-39, -29, -24, -43);
$s1->drawCurve(-24, -43, -2, -51);
$s1->drawCurve(-3, -50, 19, -46);
$s1->drawCurve(29, -73, 72, -37);
$s1->drawCurve(70, -37, 77, 15);
$s1->drawCurve(76, 15, 50, 62);
$s1->drawCurve(49, 61, 1, 78);
$s1->drawLine(0, 1);
$s1->movePenTo(277, 206);
$s1->setLeftFill(0xff, 0xa8, 0x37);
$s1->setRightFill(0x79, 0x79, 0x79);
$s1->drawCurve(0, -19, 13, -12);
$s1->drawCurve(13, -13, 18, 0);
$s1->drawCurve(18, 0, 13, 13);
$s1->drawCurve(13, 12, 0, 19);
$s1->drawCurve(0, 18, -13, 13);
$s1->drawCurve(-13, 12, -18, 1);
$s1->drawCurve(-18, -1, -13, -12);
$s1->drawCurve(-13, -13, 0, -18);
$s1->movePenTo(640, 600);
$s1->setLeftFill();
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->setLine(20, 0x99, 0x99, 0x99); # raya inferior
$s1->drawLine(-640, 0);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, -600);
$s1->setLine(20, 0x99, 0x99, 0x99);
$s1->drawLine(640, 0);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, 600);
### Shape 2 ###
$s2 = new SWF::Shape();
$s2->movePenTo(366, 554);
$s2->setLeftFill(0xff, 0xa8, 0x37);
$s2->drawLine(35, -10);
$s2->drawCurve(45, -16, 36, -33);
$s2->drawCurve(36, -33, 22, -43);
$s2->drawCurve(22, -44, 4, -49);
$s2->drawLine(0, -16);
$s2->drawLine(0, -1);
$s2->drawCurve(-1, -50, -19, -45);
$s2->drawCurve(-19, -45, -33, -34);
$s2->drawCurve(-34, -34, -44, -20);
$s2->drawCurve(-46, -20, -49, -1);
$s2->drawLine(-39, 2);
$s2->setRightFill(0xcc, 0xcc, 0xcc);
$s2->drawLine(-38, 9);
$s2->drawLine(-18, 6);
$s2->drawLine(-1, 1);
$s2->drawLine(-42, 21);
$s2->drawLine(-37, 30);
$s2->drawCurve(-36, 34, -20, 44);
$s2->drawCurve(-21, 45, -2, 49);
$s2->drawCurve(-2, 50, 18, 46);
$s2->drawCurve(17, 45, 34, 36);
$s2->drawCurve(33, 35, 44, 21);
$s2->drawLine(46, 17);
$s2->drawLine(48, 7);
$s2->drawLine(1, 0);
$s2->drawLine(60, -4);
$s2->setLeftFill();
$s2->drawLine(37, -10);
$s2->drawCurve(44, -17, 37, -32);
$s2->drawCurve(36, -33, 22, -43);
$s2->drawCurve(22, -44, 4, -49);
$s2->drawLine(0, -16);
$s2->drawLine(0, -1);
$s2->drawCurve(0, -50, -19, -45);
$s2->drawCurve(-19, -45, -34, -34);
$s2->drawCurve(-34, -34, -44, -20);
$s2->drawCurve(-46, -20, -49, -1);
$s2->drawLine(-41, 2);
$s2->movePenTo(407, 169);
$s2->setLeftFill(0xff, 0xa8, 0x37);
$s2->setRightFill(0x79, 0x79, 0x79);
$s2->drawCurve(3, 58, -32, 23);
$s2->drawLine(-23, 11);
$s2->drawLine(-9, 1);
$s2->drawLine(-4, 1);
$s2->drawLine(-18, -2);
$s2->drawLine(-21, 3);
$s2->drawLine(-6, -2);
$s2->drawLine(-30, -11);
$s2->drawCurve(-34, -22, 3, -60);
$s2->drawCurve(0, -10, -10, 0);
$s2->drawCurve(-11, 0, 0, 10);
$s2->drawCurve(-3, 66, 39, 30);
$s2->drawLine(27, 15);
$s2->drawLine(-50, 3);
$s2->drawCurve(-26, -8, -21, -22);
$s2->drawCurve(-7, -7, -7, 7);
$s2->drawCurve(-8, 7, 8, 8);
$s2->drawCurve(26, 26, 33, 10);
$s2->drawLine(32, 3);
$s2->drawLine(-6, 18);
$s2->drawLine(-1, 1);
$s2->drawCurve(-35, 25, -28, -17);
$s2->drawCurve(-9, -5, -5, 9);
$s2->drawCurve(-6, 8, 9, 6);
$s2->drawCurve(34, 20, 39, -21);
$s2->drawCurve(1, 33, 21, 24);
$s2->drawCurve(21, 25, 31, 0);
$s2->drawCurve(31, 0, 22, -25);
$s2->drawCurve(19, -23, 3, -31);
$s2->drawLine(66, -2);
$s2->drawCurve(9, -6, -5, -8);
$s2->drawCurve(-6, -9, -8, 5);
$s2->drawCurve(-27, 16, -31, -20);
$s2->drawLine(-7, -23);
$s2->drawLine(27, -3);
$s2->drawCurve(33, -10, 26, -26);
$s2->drawCurve(7, -8, -7, -7);
$s2->drawCurve(-8, -7, -6, 7);
$s2->drawCurve(-22, 22, -26, 8);
$s2->drawLine(-39, 1);
$s2->drawLine(-6, -6);
$s2->drawLine(21, -12);
$s2->drawCurve(40, -29, -2, -68);
$s2->drawCurve(-1, -10, -10, 0);
$s2->drawCurve(-11, 0, 1, 10);
$s2->movePenTo(537, 310);
$s2->drawCurve(-1, 49, -20, 44);
$s2->drawCurve(-21, 44, -38, 32);
$s2->drawCurve(-37, 32, -50, 12);
$s2->drawCurve(-49, 12, -48, -10);
$s2->drawCurve(-48, -9, -39, -29);
$s2->drawCurve(-39, -29, -24, -43);
$s2->drawCurve(-24, -43, -2, -51);
$s2->drawCurve(-3, -50, 19, -46);
$s2->drawCurve(29, -73, 72, -37);
$s2->drawCurve(70, -37, 77, 15);
$s2->drawCurve(76, 15, 50, 62);
$s2->drawCurve(49, 61, 1, 78);
$s2->drawLine(0, 1);
$s2->movePenTo(279, 206);
$s2->setLeftFill(0x79, 0x79, 0x79);
$s2->setRightFill(0xff, 0xa8, 0x37);
$s2->drawCurve(0, -19, 13, -12);
$s2->drawCurve(12, -13, 19, 0);
$s2->drawCurve(18, 0, 13, 13);
$s2->drawCurve(12, 12, 1, 19);
$s2->drawCurve(-1, 18, -12, 13);
$s2->drawCurve(-13, 12, -18, 1);
$s2->drawCurve(-19, -1, -12, -12);
$s2->drawCurve(-13, -13, 0, -18);
$s2->movePenTo(640, 0);
$s2->setLeftFill();
$s2->setRightFill(0xcc, 0xcc, 0xcc);
$s2->setLine(20, 0xcc, 0xcc, 0xcc);
$s2->drawLine(0, 600);
$s2->setLine(20, 0x99, 0x99, 0x99); # raya inferior
$s2->drawLine(-640, 0);
$s2->setLine(20, 0xcc, 0xcc, 0xcc); # raya izq
$s2->drawLine(0, -600);
$s2->setLine(20, 0x99, 0x99, 0x99); # raya sup
$s2->drawLine(640, 0);
$i1 = $boton_debug->add($s1);
$i1->scaleTo(0.5);
$boton_debug->nextFrame();
$boton_debug->remove($i1);
$i1 = $boton_debug->add($s2);
$i1->scaleTo(0.5);
$boton_debug->nextFrame();
$boton_debug->remove($i1);
$boton_debug->nextFrame();
$boton_reload = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(424, 154);
$s1->setLeftFill(0x79, 0x79, 0x79);
$s1->setRightFill(0xff, 0xa8, 0x37);
$s1->drawLine(-71, -37);
$s1->drawCurve(-8, -4, -6, 4);
$s1->drawCurve(-7, 4, -1, 9);
$s1->drawLine(-1, 11);
$s1->drawLine(-52, 5);
$s1->drawCurve(-53, 12, -36, 39);
$s1->drawCurve(-37, 39, -6, 56);
$s1->drawCurve(-7, 53, 25, 49);
$s1->drawCurve(23, 47, 49, 26);
$s1->drawCurve(49, 25, 52, -6);
$s1->drawCurve(56, -7, 41, -37);
$s1->drawCurve(42, -37, 12, -55);
$s1->drawCurve(5, -25, -2, -28);
$s1->drawCurve(-2, -12, -6, -7);
$s1->drawCurve(-8, -8, -10, 1);
$s1->drawCurve(-11, -1, -8, 8);
$s1->drawCurve(-9, 8, 1, 11);
$s1->drawCurve(5, 45, -23, 37);
$s1->drawCurve(-24, 37, -43, 14);
$s1->drawLine(-76, -2);
$s1->drawCurve(-38, -14, -22, -33);
$s1->drawCurve(-22, -33, 2, -40);
$s1->drawCurve(2, -41, 25, -30);
$s1->drawCurve(26, -31, 39, -9);
$s1->drawLine(37, -3);
$s1->drawLine(-2, 16);
$s1->drawCurve(0, 8, 8, 5);
$s1->drawCurve(7, 4, 7, -4);
$s1->drawLine(78, -43);
$s1->drawLine(7, -9);
$s1->drawLine(0, -3);
$s1->drawLine(0, -5);
$s1->drawLine(-7, -9);
$s1->movePenTo(496, 135);
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->drawCurve(-34, -34, -44, -20);
$s1->drawCurve(-46, -20, -50, -1);
$s1->drawCurve(-50, -1, -46, 19);
$s1->drawCurve(-44, 17, -35, 34);
$s1->drawCurve(-35, 34, -20, 44);
$s1->drawCurve(-22, 45, -2, 49);
$s1->drawCurve(-2, 50, 18, 46);
$s1->drawCurve(18, 45, 33, 36);
$s1->drawCurve(33, 35, 44, 21);
$s1->drawCurve(45, 21, 49, 3);
$s1->drawCurve(50, 3, 47, -17);
$s1->drawCurve(44, -16, 37, -33);
$s1->drawCurve(36, -33, 22, -43);
$s1->drawCurve(22, -44, 4, -49);
$s1->drawLine(0, -16);
$s1->drawLine(0, -1);
$s1->drawCurve(-1, -50, -19, -45);
$s1->drawCurve(-19, -45, -33, -34);
$s1->movePenTo(539, 310);
$s1->setRightFill(0xff, 0xa8, 0x37);
$s1->drawCurve(-1, 49, -20, 44);
$s1->drawCurve(-22, 44, -37, 32);
$s1->drawCurve(-38, 32, -49, 12);
$s1->drawCurve(-49, 12, -49, -10);
$s1->drawCurve(-47, -9, -40, -29);
$s1->drawCurve(-39, -29, -23, -43);
$s1->drawCurve(-25, -43, -2, -51);
$s1->drawCurve(-3, -50, 19, -46);
$s1->drawCurve(29, -73, 72, -37);
$s1->drawCurve(71, -37, 76, 15);
$s1->drawCurve(76, 15, 51, 62);
$s1->drawCurve(49, 61, 1, 78);
$s1->drawLine(0, 1);
$s1->movePenTo(640, 0);
$s1->setLeftFill();
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, 600);
$s1->setLine(20, 0x99, 0x99, 0x99); # raya inferior
$s1->drawLine(-640, 0);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, -600);
$s1->setLine(20, 0x99, 0x99, 0x99);
$s1->drawLine(640, 0);
### Shape 2 ###
$s2 = new SWF::Shape();
$s2->movePenTo(424, 154);
$s2->setLeftFill(0xff, 0xa8, 0x37);
$s2->setRightFill(0x79, 0x79, 0x79);
$s2->drawLine(-71, -37);
$s2->drawCurve(-8, -4, -6, 4);
$s2->drawCurve(-7, 4, -1, 9);
$s2->drawLine(-1, 11);
$s2->drawLine(-53, 4);
$s2->drawCurve(-52, 13, -36, 39);
$s2->drawCurve(-37, 39, -6, 56);
$s2->drawCurve(-7, 53, 24, 49);
$s2->drawCurve(23, 47, 50, 26);
$s2->drawCurve(49, 25, 52, -6);
$s2->drawCurve(56, -7, 41, -37);
$s2->drawCurve(42, -37, 12, -55);
$s2->drawCurve(5, -25, -2, -28);
$s2->drawCurve(-2, -12, -6, -7);
$s2->drawCurve(-8, -8, -11, 1);
$s2->drawCurve(-10, -1, -8, 8);
$s2->drawCurve(-9, 8, 1, 11);
$s2->drawCurve(5, 45, -23, 37);
$s2->drawCurve(-24, 37, -43, 14);
$s2->drawLine(-76, -2);
$s2->drawCurve(-38, -14, -22, -33);
$s2->drawCurve(-22, -33, 2, -40);
$s2->drawCurve(1, -41, 26, -30);
$s2->drawCurve(25, -31, 40, -9);
$s2->drawLine(37, -3);
$s2->drawLine(-2, 16);
$s2->drawCurve(0, 8, 8, 5);
$s2->drawCurve(7, 4, 7, -4);
$s2->drawLine(78, -43);
$s2->drawLine(7, -9);
$s2->drawLine(0, -3);
$s2->drawLine(0, -5);
$s2->drawLine(-7, -9);
$s2->movePenTo(152, 495);
$s2->setRightFill(0xcc, 0xcc, 0xcc);
$s2->drawLine(60, 39);
$s2->drawCurve(44, 21, 50, 3);
$s2->drawCurve(50, 3, 47, -17);
$s2->drawCurve(44, -16, 37, -33);
$s2->drawLine(46, -55);
$s2->drawLine(12, -21);
$s2->drawLine(10, -22);
$s2->drawLine(16, -71);
$s2->drawLine(0, -16);
$s2->drawLine(0, -1);
$s2->drawCurve(-1, -50, -19, -45);
$s2->drawCurve(-19, -45, -33, -34);
$s2->drawCurve(-34, -34, -44, -20);
$s2->drawCurve(-46, -20, -50, -1);
$s2->drawCurve(-50, -1, -46, 19);
$s2->drawCurve(-44, 17, -35, 34);
$s2->drawLine(-44, 56);
$s2->setRightFill();
$s2->drawLine(-11, 22);
$s2->drawLine(-10, 23);
$s2->setRightFill(0xcc, 0xcc, 0xcc);
$s2->drawLine(-14, 71);
$s2->drawCurve(-2, 50, 18, 46);
$s2->drawLine(35, 62);
$s2->setRightFill();
$s2->drawLine(16, 19);
$s2->drawLine(17, 17);
$s2->setLeftFill(0xcc, 0xcc, 0xcc);
$s2->drawLine(-17, -17);
$s2->drawLine(-16, -19);
$s2->movePenTo(539, 310);
$s2->setLeftFill(0xff, 0xa8, 0x37);
$s2->setRightFill(0x79, 0x79, 0x79);
$s2->drawCurve(-1, 49, -20, 44);
$s2->drawCurve(-22, 44, -37, 32);
$s2->drawCurve(-38, 32, -49, 12);
$s2->drawCurve(-49, 12, -49, -10);
$s2->drawCurve(-47, -9, -40, -29);
$s2->drawCurve(-39, -29, -23, -43);
$s2->drawCurve(-25, -43, -2, -51);
$s2->drawCurve(-3, -50, 19, -46);
$s2->drawCurve(29, -73, 72, -37);
$s2->drawCurve(71, -37, 76, 15);
$s2->drawCurve(76, 15, 51, 62);
$s2->drawCurve(49, 61, 1, 78);
$s2->drawLine(0, 1);
$s2->movePenTo(103, 185);
$s2->setLeftFill();
$s2->setRightFill(0xcc, 0xcc, 0xcc);
$s2->setLine(20, 0xcc, 0xcc, 0xcc);
$s2->drawLine(-12, 22);
$s2->drawLine(-9, 23);
$s2->movePenTo(640, 0);
$s2->drawLine(0, 600);
#$s2->setLine(20, 0x00, 0x00, 0x00);
$s2->setLine(20, 0x99, 0x99, 0x99); # raya inferior
$s2->drawLine(-640, 0);
$s2->setLine(20, 0xcc, 0xcc, 0xcc);
$s2->drawLine(0, -600);
$s2->setLine(20, 0x99, 0x99, 0x99);
$s2->drawLine(640, 0);
$i1 = $boton_reload->add($s1);
$i1->scaleTo(0.5);
$boton_reload->nextFrame(); # end of frame 1
$boton_reload->remove($i1);
$i1 = $boton_reload->add($s2);
$i1->scaleTo(0.5);
$boton_reload->nextFrame(); # end of frame 2
$boton_reload->remove($i1);
$boton_security = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(493, 135);
$s1->setLeftFill(0x79, 0x79, 0x79);
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->drawCurve(-34, -34, -44, -19);
$s1->drawCurve(-45, -21, -50, -1);
$s1->drawCurve(-49, -1, -46, 19);
$s1->drawCurve(-45, 18, -35, 34);
$s1->drawCurve(-35, 33, -20, 44);
$s1->drawCurve(-21, 45, -2, 49);
$s1->drawCurve(-2, 50, 18, 46);
$s1->drawCurve(17, 44, 34, 36);
$s1->drawCurve(33, 35, 43, 21);
$s1->drawCurve(45, 22, 49, 3);
$s1->drawCurve(49, 3, 47, -17);
$s1->drawCurve(45, -17, 36, -32);
$s1->drawCurve(36, -33, 22, -43);
$s1->drawCurve(22, -45, 4, -48);
$s1->drawLine(0, -16);
$s1->drawLine(0, -1);
$s1->drawCurve(-1, -50, -19, -45);
$s1->drawCurve(-19, -45, -33, -34);
$s1->movePenTo(536, 310);
$s1->setRightFill(0xff, 0xa8, 0x37);
$s1->drawCurve(-1, 48, -20, 45);
$s1->drawCurve(-21, 43, -38, 33);
$s1->drawCurve(-37, 31, -49, 13);
$s1->drawCurve(-49, 11, -49, -9);
$s1->drawCurve(-47, -10, -39, -29);
$s1->drawCurve(-39, -29, -24, -42);
$s1->drawCurve(-24, -43, -2, -51);
$s1->drawCurve(-3, -50, 19, -46);
$s1->drawCurve(28, -72, 72, -37);
$s1->drawCurve(71, -37, 76, 15);
$s1->drawCurve(76, 15, 50, 61);
$s1->drawCurve(49, 61, 1, 78);
$s1->drawLine(0, 1);
$s1->movePenTo(446, 290);
$s1->setLeftFill(0xff, 0xa8, 0x37);
$s1->setRightFill(0x79, 0x79, 0x79);
$s1->drawLine(0, 129);
$s1->drawCurve(0, 17, -17, 13);
$s1->drawCurve(-17, 13, -23, 0);
$s1->drawLine(-143, 0);
$s1->drawCurve(-23, 0, -17, -13);
$s1->drawCurve(-16, -13, 0, -17);
$s1->drawLine(0, -129);
$s1->drawCurve(-1, -15, 12, -11);
$s1->drawLine(1, -8);
$s1->drawCurve(7, -50, 32, -35);
$s1->drawCurve(35, -40, 49, 5);
$s1->drawCurve(49, 5, 31, 42);
$s1->drawCurve(25, 35, 4, 46);
$s1->drawCurve(12, 11, 0, 15);
$s1->movePenTo(382, 200);
$s1->setLeftFill(0x79, 0x79, 0x79);
$s1->setRightFill(0xff, 0xa8, 0x37);
$s1->drawCurve(15, 22, 6, 26);
$s1->drawLine(-14, -1);
$s1->drawLine(-143, 0);
$s1->drawLine(-14, 1);
$s1->drawCurve(5, -26, 16, -21);
$s1->drawCurve(25, -35, 40, -1);
$s1->drawCurve(39, -1, 25, 36);
$s1->movePenTo(323, 345);
$s1->drawLine(14, 75);
$s1->drawLine(-40, 0);
$s1->drawLine(14, -75);
$s1->drawCurve(-8, -2, -6, -6);
$s1->drawCurve(-8, -8, 0, -12);
$s1->drawCurve(0, -13, 8, -8);
$s1->drawCurve(9, -9, 12, 1);
$s1->drawCurve(12, -1, 8, 9);
$s1->drawCurve(9, 8, 0, 13);
$s1->drawCurve(0, 12, -9, 8);
$s1->drawLine(-15, 8);
$s1->movePenTo(640, 600);
$s1->setLeftFill();
$s1->setRightFill(0xcc, 0xcc, 0xcc);
#$s1->setLine(20, 0x00, 0x00, 0x00);
$s1->setLine(20, 0x99, 0x99, 0x99); # raya inferior
$s1->drawLine(-640, 0);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, -600);
$s1->setLine(20, 0x99, 0x99, 0x99);
$s1->drawLine(640, 0);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, 600);
### Shape 2 ###
$s2 = new SWF::Shape();
$s2->movePenTo(495, 136);
$s2->setLeftFill(0xff, 0xa8, 0x37);
$s2->setRightFill(0xcc, 0xcc, 0xcc);
$s2->drawCurve(-34, -35, -44, -19);
$s2->drawCurve(-46, -21, -49, -1);
$s2->drawCurve(-50, -1, -46, 19);
$s2->drawCurve(-45, 18, -35, 34);
$s2->drawCurve(-35, 33, -20, 45);
$s2->drawCurve(-21, 45, -2, 49);
$s2->drawCurve(-2, 50, 18, 47);
$s2->drawCurve(17, 44, 34, 36);
$s2->drawCurve(33, 35, 44, 21);
$s2->drawCurve(44, 22, 50, 3);
$s2->drawCurve(49, 3, 47, -17);
$s2->drawCurve(45, -17, 36, -33);
$s2->drawCurve(36, -33, 22, -43);
$s2->drawCurve(22, -44, 4, -49);
$s2->drawLine(1, -16);
$s2->drawLine(0, -1);
$s2->drawCurve(-1, -50, -19, -45);
$s2->drawCurve(-19, -45, -34, -34);
$s2->movePenTo(539, 311);
$s2->setRightFill(0x79, 0x79, 0x79);
$s2->drawCurve(-1, 49, -21, 44);
$s2->drawCurve(-21, 44, -38, 32);
$s2->drawCurve(-37, 32, -50, 12);
$s2->drawLine(-97, 3);
$s2->drawCurve(-48, -10, -39, -29);
$s2->drawCurve(-39, -29, -24, -43);
$s2->drawCurve(-24, -43, -2, -51);
$s2->drawCurve(-3, -50, 19, -47);
$s2->drawCurve(29, -72, 72, -37);
$s2->drawCurve(70, -38, 77, 16);
$s2->drawCurve(76, 15, 50, 62);
$s2->drawCurve(50, 61, 1, 78);
$s2->drawLine(0, 1);
$s2->movePenTo(448, 291);
$s2->setLeftFill(0x79, 0x79, 0x79);
$s2->setRightFill(0xff, 0xa8, 0x37);
$s2->drawLine(0, 129);
$s2->drawCurve(0, 18, -17, 13);
$s2->drawCurve(-17, 12, -23, 1);
$s2->drawLine(-144, 0);
$s2->drawCurve(-23, -1, -17, -12);
$s2->drawCurve(-17, -13, 1, -18);
$s2->drawLine(0, -129);
$s2->drawCurve(-1, -15, 12, -12);
$s2->drawLine(1, -8);
$s2->drawCurve(7, -50, 32, -35);
$s2->drawCurve(36, -40, 49, 6);
$s2->drawCurve(49, 4, 31, 42);
$s2->drawCurve(25, 35, 4, 46);
$s2->drawCurve(12, 12, 0, 15);
$s2->movePenTo(319, 165);
$s2->setLeftFill(0xff, 0xa8, 0x37);
$s2->setRightFill(0x79, 0x79, 0x79);
$s2->drawCurve(39, -1, 26, 37);
$s2->drawCurve(15, 21, 5, 26);
$s2->drawLine(-13, -1);
$s2->drawLine(-144, 0);
$s2->drawLine(-13, 1);
$s2->drawCurve(4, -26, 16, -21);
$s2->drawCurve(26, -35, 39, -1);
$s2->movePenTo(324, 346);
$s2->drawLine(15, 76);
$s2->drawLine(-41, 0);
$s2->drawLine(14, -76);
$s2->drawCurve(-8, -2, -5, -6);
$s2->drawCurve(-9, -9, 0, -12);
$s2->drawCurve(0, -12, 9, -8);
$s2->drawCurve(8, -9, 12, 0);
$s2->drawCurve(12, 0, 9, 9);
$s2->drawLine(9, 20);
$s2->drawCurve(-1, 12, -8, 9);
$s2->drawLine(-16, 8);
$s2->movePenTo(640, 0);
$s2->setLeftFill();
$s2->setRightFill(0xcc, 0xcc, 0xcc);
$s2->drawLine(0, 600);
#$s2->setLine(20, 0x00, 0x00, 0x00);
$s2->setLine(20, 0x99, 0x99, 0x99); # raya inferior
$s2->drawLine(-640, 0);
$s2->setLine(20, 0xcc, 0xcc, 0xcc);
$s2->drawLine(0, -600);
$s2->setLine(20, 0x99, 0x99, 0x99);
$s2->drawLine(640, 0);
$i1 = $boton_security->add($s1);
$i1->scaleTo(0.5);
$boton_security->add(new SWF::Action("stop();"));
$boton_security->nextFrame(); # end of frame 1
$boton_security->remove($i1);
$i1 = $boton_security->add($s2);
$i1->scaleTo(0.5);
$boton_security->add(new SWF::Action("stop();"));
$boton_security->nextFrame(); # end of frame 1
$boton_security->remove($i1);
$boton_security_unlock = new SWF::Sprite();
### Shape 1 ###
$s1 = new SWF::Shape();
$s1->movePenTo(493, 135);
$s1->setLeftFill(0x79, 0x79, 0x79);
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->drawCurve(-34, -34, -44, -19);
$s1->drawCurve(-45, -21, -50, -1);
$s1->drawCurve(-49, -1, -46, 19);
$s1->drawCurve(-45, 18, -35, 34);
$s1->drawCurve(-35, 33, -20, 44);
$s1->drawCurve(-21, 45, -2, 49);
$s1->drawCurve(-2, 50, 18, 46);
$s1->drawCurve(17, 44, 34, 36);
$s1->drawCurve(33, 35, 43, 21);
$s1->drawCurve(45, 22, 49, 3);
$s1->drawCurve(49, 3, 47, -17);
$s1->drawCurve(45, -17, 36, -32);
$s1->drawCurve(36, -33, 22, -43);
$s1->drawCurve(22, -45, 4, -48);
$s1->drawLine(0, -16);
$s1->drawLine(0, -1);
$s1->drawCurve(-1, -50, -19, -45);
$s1->drawCurve(-19, -45, -33, -34);
$s1->movePenTo(536, 310);
$s1->setRightFill(0xff, 0xa8, 0x37);
$s1->drawCurve(-1, 48, -20, 45);
$s1->drawCurve(-21, 43, -38, 33);
$s1->drawCurve(-37, 31, -49, 13);
$s1->drawCurve(-49, 11, -49, -9);
$s1->drawCurve(-47, -10, -39, -29);
$s1->drawCurve(-39, -29, -24, -42);
$s1->drawCurve(-24, -43, -2, -51);
$s1->drawCurve(-3, -50, 19, -46);
$s1->drawCurve(28, -72, 72, -37);
$s1->drawCurve(71, -37, 76, 15);
$s1->drawCurve(76, 15, 50, 61);
$s1->drawCurve(49, 61, 1, 78);
$s1->drawLine(0, 1);
$s1->movePenTo(446, 290);
$s1->setLeftFill(0xff, 0xa8, 0x37);
$s1->setRightFill(0x79, 0x79, 0x79);
$s1->drawLine(0, 129);
$s1->drawCurve(0, 17, -17, 13);
$s1->drawCurve(-17, 13, -23, 0);
$s1->drawLine(-143, 0);
$s1->drawCurve(-23, 0, -17, -13);
$s1->drawCurve(-16, -13, 0, -17);
$s1->drawLine(0, -129);
$s1->drawCurve(-1, -15, 12, -11);
$s1->drawLine(1, -8);
$s1->drawCurve(7, -50, 32, -35);
$s1->drawCurve(35, -40, 49, 5);
$s1->drawCurve(49, 5, 31, 42);
$s1->drawCurve(25, 35, 4, 46);
$s1->drawCurve(12, 11, 0, 15);
$s1->movePenTo(382, 200);
$s1->setLeftFill(0x79, 0x79, 0x79);
$s1->setRightFill(0xff, 0xa8, 0x37);
$s1->drawCurve(15, 22, 6, 26);
$s1->drawLine(-14, -1);
$s1->drawLine(-143, 0);
$s1->drawLine(-14, 1);
$s1->drawCurve(5, -26, 16, -21);
$s1->drawCurve(25, -35, 40, -1);
$s1->drawCurve(39, -1, 25, 36);
$s1->movePenTo(323, 345);
$s1->drawLine(14, 75);
$s1->drawLine(-40, 0);
$s1->drawLine(14, -75);
$s1->drawCurve(-8, -2, -6, -6);
$s1->drawCurve(-8, -8, 0, -12);
$s1->drawCurve(0, -13, 8, -8);
$s1->drawCurve(9, -9, 12, 1);
$s1->drawCurve(12, -1, 8, 9);
$s1->drawCurve(9, 8, 0, 13);
$s1->drawCurve(0, 12, -9, 8);
$s1->drawLine(-15, 8);
$s1->movePenTo(640, 600);
$s1->setLeftFill();
$s1->setRightFill(0xcc, 0xcc, 0xcc);
$s1->setLine(20, 0x99, 0x99, 0x99);
$s1->drawLine(-640, 0);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, -600);
$s1->setLine(20, 0x99, 0x99, 0x99);
$s1->drawLine(640, 0);
$s1->setLine(20, 0xcc, 0xcc, 0xcc);
$s1->drawLine(0, 600);
# Agregado
$s1b = new SWF::Shape();
$s1b->movePenTo(430,135);
$s1b->setLine(0,0xFF,0xa8,0x37);
$s1b->setRightFill(0xFF,0xa8,0x37,0xFF);
$s1b->drawLine(0,110);
$s1b->drawLine(-110,0);
$s1b->drawLine(0,-110);
$s1b->drawLine(110,0);
### Shape 2 ###
$s2 = new SWF::Shape();
$s2->movePenTo(495, 136);
$s2->setLeftFill(0xff, 0xa8, 0x37);
$s2->setRightFill(0xcc, 0xcc, 0xcc);
$s2->drawCurve(-34, -35, -44, -19);
$s2->drawCurve(-46, -21, -49, -1);
$s2->drawCurve(-50, -1, -46, 19);
$s2->drawCurve(-45, 18, -35, 34);
$s2->drawCurve(-35, 33, -20, 45);
$s2->drawCurve(-21, 45, -2, 49);
$s2->drawCurve(-2, 50, 18, 47);
$s2->drawCurve(17, 44, 34, 36);
$s2->drawCurve(33, 35, 44, 21);
$s2->drawCurve(44, 22, 50, 3);
$s2->drawCurve(49, 3, 47, -17);
$s2->drawCurve(45, -17, 36, -33);
$s2->drawCurve(36, -33, 22, -43);
$s2->drawCurve(22, -44, 4, -49);
$s2->drawLine(1, -16);
$s2->drawLine(0, -1);
$s2->drawCurve(-1, -50, -19, -45);
$s2->drawCurve(-19, -45, -34, -34);
$s2->movePenTo(539, 311);
$s2->setRightFill(0x79, 0x79, 0x79);
$s2->drawCurve(-1, 49, -21, 44);
$s2->drawCurve(-21, 44, -38, 32);
$s2->drawCurve(-37, 32, -50, 12);
$s2->drawLine(-97, 3);
$s2->drawCurve(-48, -10, -39, -29);
$s2->drawCurve(-39, -29, -24, -43);
$s2->drawCurve(-24, -43, -2, -51);
$s2->drawCurve(-3, -50, 19, -47);
$s2->drawCurve(29, -72, 72, -37);
$s2->drawCurve(70, -38, 77, 16);
$s2->drawCurve(76, 15, 50, 62);
$s2->drawCurve(50, 61, 1, 78);
$s2->drawLine(0, 1);
$s2->movePenTo(448, 291);
$s2->setLeftFill(0x79, 0x79, 0x79);
$s2->setRightFill(0xff, 0xa8, 0x37);
$s2->drawLine(0, 129);
$s2->drawCurve(0, 18, -17, 13);
$s2->drawCurve(-17, 12, -23, 1);
$s2->drawLine(-144, 0);
$s2->drawCurve(-23, -1, -17, -12);
$s2->drawCurve(-17, -13, 1, -18);
$s2->drawLine(0, -129);
$s2->drawCurve(-1, -15, 12, -12);
$s2->drawLine(1, -8);
$s2->drawCurve(7, -50, 32, -35);
$s2->drawCurve(36, -40, 49, 6);
$s2->drawCurve(49, 4, 31, 42);
$s2->drawCurve(25, 35, 4, 46);
$s2->drawCurve(12, 12, 0, 15);
$s2->movePenTo(319, 165);
$s2->setLeftFill(0xff, 0xa8, 0x37);
$s2->setRightFill(0x79, 0x79, 0x79);
$s2->drawCurve(39, -1, 26, 37);
$s2->drawCurve(15, 21, 5, 26);
$s2->drawLine(-13, -1);
$s2->drawLine(-144, 0);
$s2->drawLine(-13, 1);
$s2->drawCurve(4, -26, 16, -21);
$s2->drawCurve(26, -35, 39, -1);
$s2->movePenTo(324, 346);
$s2->drawLine(15, 76);
$s2->drawLine(-41, 0);
$s2->drawLine(14, -76);
$s2->drawCurve(-8, -2, -5, -6);
$s2->drawCurve(-9, -9, 0, -12);
$s2->drawCurve(0, -12, 9, -8);
$s2->drawCurve(8, -9, 12, 0);
$s2->drawCurve(12, 0, 9, 9);
$s2->drawLine(9, 20);
$s2->drawCurve(-1, 12, -8, 9);
$s2->drawLine(-16, 8);
$s2->movePenTo(640, 0);
$s2->setLeftFill();
$s2->setRightFill(0xcc, 0xcc, 0xcc);
$s2->drawLine(0, 600);
$s2->setLine(20, 0x99, 0x99, 0x99);
$s2->drawLine(-640, 0);
$s2->setLine(20, 0xcc, 0xcc, 0xcc);
$s2->drawLine(0, -600);
$s2->setLine(20, 0x99, 0x99, 0x99);
$s2->drawLine(640, 0);
# Agregado
$s2b = new SWF::Shape();
$s2b->movePenTo(430,135);
$s2b->setLine(0,0x79,0x79,0x79);
$s2b->setRightFill(0x79,0x79,0x79,0xFF);
$s2b->drawLine(0,110);
$s2b->drawLine(-110,0);
$s2b->drawLine(0,-110);
$s2b->drawLine(110,0);
$i1 = $boton_security_unlock->add($s1);
$i1->scaleTo(0.5);
$i1 = $boton_security_unlock->add($s1b);
$i1->scaleTo(0.5);
$boton_security_unlock->add(new SWF::Action("stop();"));
$boton_security_unlock->nextFrame(); # end of frame 1
$boton_security_unlock->remove($i1);
$i1 = $boton_security_unlock->add($s2);
$i1->scaleTo(0.5);
$i1 = $boton_security_unlock->add($s2b);
$i1->scaleTo(0.5);
$boton_security_unlock->add(new SWF::Action("stop();"));
$boton_security_unlock->nextFrame(); # end of frame 1
$boton_security_unlock->remove($i1);
# Exports all Movieclips for Actionscript
$movie->addExport($ledcolor,"ledcolor");
$movie->addExport($ledsombra,"ledsombra");
$movie->addExport($ledbrillo,"ledbrillo");
$movie->addExport($fle, "arrow");
$movie->addExport($i_icon1, "telefono1");
$movie->addExport($i_icon2, "telefono2");
$movie->addExport($telefono3, "telefono3");
$movie->addExport($telefono4, "telefono4");
$movie->addExport($conference2, "telefono5");
$movie->addExport($conference1, "telefono6");
$movie->addExport($envelope, "sobre");
# $movie->addExport($statusbar, "logtext");
$movie->addExport($extrainfo, "infotext");
$movie->addExport($boton_ayuda, "boton_ayuda");
$movie->addExport($boton_debug, "boton_debug");
$movie->addExport($boton_reload,"boton_reload");
$movie->addExport($boton_security,"boton_security");
$movie->addExport($boton_security_unlock,"boton_security_unlock");
$movie->addExport($option,"option");
$movie->writeExports();
# Adds ActionScript
$movie->add(new SWF::Action(<<"EndOfActionScript"));
/*
XMLSocket.prototype.onData = function(msg)
{
trace("MSG: " + msg)
msgArea.htmlText += msg
}
*/
function conecta() {
_global.sock = new XMLSocket;
_global.sock.onConnect = handleConnect;
_global.sock.onClose = handleDisconnect;
_global.sock.onXML = handleXML;
if(_global.port == undefined) {
_global.port = 4445;
}
if(_global.server == undefined) {
_global.sock.connect(null, _global.port);
_global.server_print = "default";
} else {
_global.sock.connect(_global.server, _global.port);
_global.server_print = _global.server;
}
}
function logea(texto) {
if(buttondebug._visible != true) {
return;
}
var fecha = new Date();
var hora = fecha.getHours();
var minutos = fecha.getMinutes();
var segundos = fecha.getSeconds();
if (hora<10) {
hora = "0"+hora;
}
if (minutos<10) {
minutos = "0"+minutos;
}
if (segundos<10) {
segundos = "0"+segundos;
}
var textologea = hora+":"+minutos+":"+segundos+" "+texto;
_global.loglines.push(textologea);
//if (_global.loglines.length>35) {
_global.loglines.shift();
//}
_level0.log.Field1.text = "";
var acount=-1;
while (++acount < _global.loglines.length) {
// for (var acount=0; acount<_global.loglines.length; acount++) {
_level0.log.Field1.text = _level0.log.Field1.text+_global.loglines[acount]+"\n";
}
log.logcontent.scroll = log.logcontent.maxscroll;
};
function handleConnect(connectionStatus){
if (connectionStatus) {
for (var a in _root) {
if (typeof (_root[a]) == "movieclip") {
if (a.substring(0, 10) == "rectangulo") {
for (var b in _root[a]) {
if (_root[a][b]._name.substring(0, 7) == "casicol") {
var numero=ExtraeNumeroClip(_root[a][b]);
_root[a][b].changeledcolor(0,_global.colorlibre[numero],_global.color[1]);
}
}
}
}
}
logea("Connected to server "+server_print+" on port "+port);
_global.reconecta = 0;
if(_global.enable_crypto==1) {
envia_comando("contexto", 0, 0);
} else {
envia_comando("contexto", 1, 0);
}
if(restrict != undefined) {
envia_comando("restrict",restrict,0);
}
} else {
logea("Error connecting to "+server);
logea(" on port "+port);
for (var a in _root) {
if (typeof (_root[a]) == "movieclip") {
if (a.substring(0, 10) == "rectangulo") {
for (var b in _root[a]) {
if (_root[a][b]._name.substring(0, 7) == "casicol") {
var numero=ExtraeNumeroClip(_root[a][b]);
_root[a][b].changeledcolor(3,_global.colorlibre[numero],_global.color[1]);
}
}
}
}
}
_global.reconecta = 1;
}
}
function handleXML(doc){
var e = doc.firstChild;
if (e != null) {
if (e.nodeName == "response") {
var numeroboton = e.attributes.btn; // btn is the button number
var comando = e.attributes.cmd;
var textofinal = e.attributes.data;
if (_global.key != undefined) {
if(_global.enable_crypto == 1) {
comando = decrypt(comando, _global.key);
if (textofinal.length > 0) {
textofinal = decrypt(textofinal, _global.key);
}
}
}
logea(numeroboton+"|"+comando+"|"+textofinal.substring(0,20));
var botonparte = numeroboton.split("@");
var boton_numero = botonparte[0];
var boton_contexto = botonparte[1];
var timernumber = 0;
if (boton_contexto == undefined) {
boton_contexto = "";
}
if (_root.context == undefined) {
_root.context = "";
}
if (comando == "key") {
_global.key = textofinal;
return;
}
if (comando == "incorrect") {
_global.authorized = false;
_root.codebox._visible = true;
Selection.setFocus(_root.codebox.claveform);
_root.codebox.swapDepths(_root.log);
SecurityCode_Unlocked();
return;
}
if (comando == "correct") {
_global.authorized = true;
SecurityCode_Locked();
return;
}
if (comando == "reload") {
logea("Recarga!");
_root.recarga();
// return;
}
if (comando == "showdetails") {
var myclip = eval('_level0.rectangulo'+boton_numero+'.flecha'+boton_numero);
_root.displaydetails(myclip);
}
if (comando == "restrict") {
_global.restrict = numeroboton;
_global.mybutton = numeroboton;
logea("Set restriction for button "+_global.restrict);
var myresa = eval('_root.resaltado'+_global.restrict);
myresa._visible = true;
return;
}
if (comando == "version") {
logea("Version "+textofinal);
logea("Top "+_root._y);
logea("Left "+_root._x);
if(textofinal != _global.swfversion)
{
_global.statusline=vr.version_mismatch;
} else {
_global.statusline="";
}
}
if (_root.context == boton_contexto) {
var botonazo = eval("rectangulo"+boton_numero+".casicol"+boton_numero);
var statusclid = eval("rectangulo"+boton_numero+".statusprint"+boton_numero);
var timerprint = eval("rectangulo"+boton_numero+".timer"+boton_numero);
var flechita = eval("rectangulo"+boton_numero+".flecha"+boton_numero);
var telefonito = eval("rectangulo"+boton_numero+".tele"+boton_numero);
var sobrecito = eval("rectangulo"+boton_numero+".sobrecito"+boton_numero);
if (_global.rectanguloprendido!=0) {
makeStatus(_global.rectanguloprendido);
}
if (comando == "setalpha") {
var myboton = eval('_root.rectangulo'+boton_numero);
myboton._alpha = textofinal;
}
if (comando == "flip") {
var myboton = eval('_root.rectangulo'+boton_numero);
myboton.flip(textofinal);
}
if (comando == "monitor") {
createCircle(_root["rectangulo"+boton_numero]["circle"+boton_numero],11,0,0,'0xff0000');
}
if (comando == "stopmonitor") {
createCircle(_root["rectangulo"+boton_numero]["circle"+boton_numero],11,0,0,'0x00ff00');
}
if (comando == "settext") {
_global.ipboton[boton_numero]=textofinal;
setclid(statusclid,textofinal);
}
if (comando == "setstatus") {
_global.texto_tip[boton_numero] = textofinal;
}
if (comando == "setlabel") {
set_button_label_text(boton_numero,textofinal);
//var botref = eval("rectangulo"+boton_numero+".textoprint");
//var botshref = eval("rectangulo"+boton_numero+".textosh");
//botref.text = textofinal;
//botshref.text = textofinal;
}
if (comando == "fopledcolor") {
if(textofinal!="")
{
var partes = textofinal.split("^");
var fcolor = partes[0];
var fstate = Number(partes[1]);
if(fcolor == "ledcolor_paused") {
fcolor = ledcolor_paused;
}
if(fcolor == "ledcolor_agent") {
fcolor = ledcolor_agent;
}
_global.color[fstate]=fcolor;
if(fstate!=1) {
_global.colorlibre[boton_numero]=fcolor;
}
_global.color[fstate] = fcolor;
botonazo.changeledcolor(0,_global.colorlibre[boton_numero],_global.color[1]);
}
}
if (comando == "foppopup") {
logea("fop popup");
if(textofinal!="")
{
var partes = textofinal.split("^");
var url = partes[0];
var target = partes[1];
var posi = partes[2];
if(posi == "" || posi == mybutton) {
popup_window(url,target);
/*
partes = url.split("?");
url = partes[0];
parametros = partes[1];
logea("url "+url);
logea("parametros "+parametros);
logea("target "+target);
logea("posi "+posi);
var cadauno = parametros.split("&");
if (url != "") {
if (target == undefined || target == "") {
target = "_self";
}
var c = new LoadVars();
for (var aget in cadauno) {
partes = cadauno[aget].split("=");
c[partes[0]]=partes[1];
logea("c."+partes[0]);
logea("es igual a "+partes[1]);
}
c.send(url, target, 'GET');
logea("Abro "+url+" en target "+target);
}
*/
}
}
}
if (comando == "state") {
if(textofinal == "ringing") {
botonazo.changeledcolor(3,_global.colorlibre[boton_numero],_global.color[1]);
if (enable_animation == 1) {
telefonito.shake(_global.shakepixels);
}
}
if(textofinal == "free") {
createCircle(_root["rectangulo"+boton_numero]["circle"+boton_numero],11,0,0,'0x00ff00');
botonazo.changeledcolor(0,_global.colorlibre[boton_numero],_global.color[1]);
if (enable_animation == 1) {
telefonito.shake();
telefonito.gotoAndStop(1);
}
}
if(textofinal == "busy") {
_root["rectangulo"+boton_numero]._alpha = 100;
_root["resaltado"+boton_numero]._alpha = 100;
botonazo.changeledcolor(1,_global.colorlibre[boton_numero],_global.color[1]);
if (enable_animation == 1) {
telefonito.shake();
telefonito.gotoAndStop(2);
}
flechita._visible = true;
}
}
if (comando == "meetmemute") {
_root["rectangulo"+boton_numero]._alpha = 40;
logea("muted "+boton_numero);
_global.meetmemute[boton_numero]=0;
statusclid.text = "Conference "+_global.meetmeroom[boton_numero]+" muted";
}
if (comando == "meetmeunmute") {
_root["rectangulo"+boton_numero]._alpha = 100;
logea("Unmuted "+boton_numero);
_global.meetmemute[boton_numero] = 1;
statusclid.text = "Conference "+_global.meetmeroom[boton_numero];
}
if (comando.substring(0,11) == "changelabel") {
var changeled = comando.substring(11,12);
var botref = eval("rectangulo"+boton_numero+".textoprint");
var botshref = eval("rectangulo"+boton_numero+".textosh");
var cual = eval("rectangulo"+boton_numero);
var casillero = eval("rectangulo"+boton_numero+".casilla"+boton_numero);
if(textofinal == "original") {
labeltexto=_global.labels[boton_numero];
_global.colorlibre[boton_numero] = _global.color[0];
} else if (textofinal == "labeloriginal") {
labeltexto=_global.labels[boton_numero];
} else if (textofinal == ".") {
labeltexto=botref.text;
if(changeled == 1) {
_global.colorlibre[boton_numero] = _global.color[2];
}
} else {
labeltexto=textofinal;
if(changeled == 1) {
_global.colorlibre[boton_numero] = _global.color[2];
}
}
if(changeled == 1) {
if(_global.valorchangeledcolor[boton_numero] == "0") {
botonazo.changeledcolor(0,_global.colorlibre[boton_numero],_global.color[1],boton_numero);
} else {
logea("esta ocupado "+boton_numero+" no cambio led '"+_global.valorchangeledcolor[boton_numero]+"'");
}
}
set_button_label_text(boton_numero,labeltexto);
//botref.text = labeltexto;
//botshref.text = labeltexto;
return;
}
if (comando == "voicemailcount") {
_global.texto_mail[boton_numero] = textofinal;
return;
}
if (comando.substr(0, 4) == "info") {
var texto = base64_decode(textofinal);
var queue = comando.substr(4);
if(queue != "" ) {
if(_global.queuemember[boton_numero]==undefined) {
_global.queuemember[boton_numero]="";
}
if(queue=="qstat") {
queuemember[boton_numero] = new Object();
queuemember[boton_numero]["qstat"]=texto;
} else if (queue=="qstat2") {
var lugar = queuemember[boton_numero]["qstat"].indexOf("Agents Logged");
var str1= queuemember[boton_numero]["qstat"].slice(0,lugar);
str1 = str1+texto;
queuemember[boton_numero]["qstat"]=str1;
} else {
var lineas = texto.split("\n");
for (val in lineas) {
campos = lineas[val].split("=");
if(Trim(campos[0])=="CallsTaken") {
var id1 = eval("queuemember."+boton_numero);
if(typeof(id1)!='object') {
queuemember[boton_numero] = new Object();
}
queuemember[boton_numero][queue] = vr.tab_queue_text + ": "+queue+"\n"+vr.calls_taken_text+": "+campos[1]+"\n\n";
}
}
}
} else {
_global.st_direction[boton_numero] = texto;
}
if(flechita._visible == false) {
flechita._visible = true;
flechita.gotoAndStop(3);
}
return;
}
if (comando == "meetmeuser") {
partes = textofinal.split(",");
_global.meetmemember[boton_numero] = partes[0];
_global.meetmeroom[boton_numero] = partes[1];
_global.meetmemute[boton_numero] = 1;
return;
}
if (comando == "desocupado" || comando == "corto") {
createCircle(_root["rectangulo"+boton_numero]["circle"+boton_numero],11,0,0,'0x00ff00');
_global.meetmemember[boton_numero] = 0;
_global.meetmeroom[boton_numero] = 0;
_root["rectangulo"+boton_numero]._alpha = 100;
botonazo.changeledcolor(0,_global.colorlibre[boton_numero],_global.color[1],boton_numero);
if (enable_animation == 1) {
telefonito.shake();
telefonito.gotoAndStop(1);
}
_global.st_duration[boton_numero] = eval("rectangulo"+boton_numero+".timer"+boton_numero+".text");
_global.texto_tip[boton_numero] = "";
timerprint.text = "";
// logea(boton_numero+" pongo timer_type stop y valor 0");
timer_type[boton_numero] = "STOP";
inicio_timer[boton_numero] = 0;
//if (_global.ipboton[boton_numero] != undefined) {
// setclid(statusclid,_global.ipboton[boton_numero]);
//} else {
statusclid.text = "";
//}
flechita.gotoAndStop(3);
linkeado[boton_numero]="";
return;
}
if (comando == "timeout") {
var timeout = Number(textofinal);
inicio_timer[boton_numero] = Math.floor(getTimer());
mytimeout = Math.floor(timeout)*1000;
inicio_timer[boton_numero] += mytimeout;
timer_type[boton_numero] = "DOWN";
logea("TIMEOUT "+timer_type[boton_numero]);
}
if (comando == "linked") {
if (textofinal.indexof("@") == -1) {
sdo_boton = textofinal;
} else {
var boton2parte = textofinal.split("@");
sdo_boton = boton2parte[0];
}
linkeado[boton_numero]=sdo_boton;
return;
}
if (comando == "clidnum") {
var clidnum = base64_decode(textofinal);
_global.clidnumber[boton_numero]=clidnum;
}
if (comando == "clidname") {
//var clidname = base64_decode(textofinal);
_global.clidname[boton_numero]=textofinal;
//var clidname = base64_decode(textofinal);
}
if (comando == "setvar") {
if(_global.chanvars[boton_numero].length == undefined ) {
_global.chanvars[boton_numero] = new Array;
}
chanvars[boton_numero].push(textofinal);
}
if (comando == "ringing") {
// if (timer_type[boton_numero]!="UP") {
inicio_timer[boton_numero]=getTimer();
botonazo.changeledcolor(3,_global.colorlibre[boton_numero],_global.color[1],boton_numero);
if (enable_animation == 1) {
telefonito.shake(_global.shakepixels);
}
_global.texto_tip[boton_numero] = textofinal;
var clnumber = extract_text_inside_delimiters(textofinal,"[","]");
if(clnumber != "") {
setclid(statusclid,clnumber);
_global.st_originclid[boton_numero] = clnumber;
_global.st_destinationclid[boton_numero] = undefined;
}
flechita._visible = true;
flechita.gotoAndStop(1);
// CRM, redirige a url
if (boton_numero == mybutton) {
if (url != "") {
if (target == "") {
target = "_self";
}
var c = new LoadVars();
//c.clid = clidnumber;
c.clid = _global.clidnumber[boton_numero];
c.clidname = _global.clidname[boton_numero];
var a=-1;
while (++a < chanvars[boton_numero].length) {
var datossplit = chanvars[boton_numero][a].split("=");
var mivar = datossplit[0];
var mival = datossplit[1];
c[mivar]=mival;
logea("mivar "+mivar+" has val "+mival);
}
delete chanvars[boton_numero];
c.send(url, target, 'GET');
logea("Open url "+url+" in target "+target+" with clid "+c.clid);
}
} else {
logea("No popup mybutton "+mybutton+" <> boton_numero "+boton_numero);
}
return;
// }
return;
}
if (comando == "voicemail") {
if (textofinal == "1") {
sobrecito._visible = true;
sobrecito._alpha = 100;
// sobrecito.glow(1);
} else {
sobrecito._visible = true;
sobrecito._alpha = _global.nomailalpha;
// sobrecito.glow(0);
}
return;
}
if (comando == "park") {
var mytext = extract_text_inside_delimiters(textofinal,"[","]");
setclid(statusclid,mytext);
var mytimeout = extract_text_inside_delimiters(textofinal,"(",")");
inicio_timer[boton_numero] = Math.floor(getTimer());
mytimeout = Math.floor(mytimeout)*1000;
inicio_timer[boton_numero] += mytimeout;
timer_type[boton_numero] = "DOWN";
_global.st_destinationclid[boton_numero] = mytext;
_global.st_originclid[boton_numero] = undefined;
botonazo.changeledcolor(3,_global.colorlibre[boton_numero],_global.color[1],boton_numero);
return;
}
if (comando == "ip") {
_global.ipboton[boton_numero]=textofinal;
if(statusclid.text == "") {
setclid(statusclid,textofinal);
}
};
if (comando == "state") {
if(textofinal == "busy") {
botonazo.changeledcolor(1,_global.colorlibre[boton_numero],_global.color[1],boton_numero);
return;
}
}
if (comando.substr(0, 7) == "ocupado") {
var flecha_frame = comando.substr(7, 1);
if (flecha_frame == 3) { // Parked channel
var mytext = extract_text_inside_delimiters(textofinal,"[","]");
setclid(statusclid,mytext);
_global.st_destinationclid[boton_numero] = mytext;
_global.st_originclid[boton_numero] = undefined;
botonazo.changeledcolor(3,_global.colorlibre[boton_numero],_global.color[1],boton_numero);
return;
}
flecha_frame = Number(flecha_frame);
_root["rectangulo"+boton_numero]._alpha = 100;
_root["resaltado"+boton_numero]._alpha = 100;
botonazo.changeledcolor(1,_global.colorlibre[boton_numero],_global.color[1],boton_numero);
if (enable_animation == 1) {
telefonito.shake();
telefonito.gotoAndStop(2);
}
flechita._visible = true;
if (flechita._currentframe>=1) {
if (textofinal != undefined) {
var myclid = extract_text_inside_delimiters(textofinal,"[","]");
if(myclid != "") {
setclid(statusclid,myclid);
_global.st_destinationclid[boton_numero] = myclid;
_global.st_originclid[boton_numero] = undefined;
}
//var timernumber = extract_text_inside_delimiters(textofinal,"(",")");
//if (isNaN(timernumber)) { timernumber = "0"; }
//timernumber = Number(timernumber);
}
}
if (flecha_frame>0) {
flechita.gotoAndStop(flecha_frame);
_global.st_direction[boton_numero] = flecha_frame;
}
if (statusclid.text.substring(0, 6) == "Parked") {
setclid(statusclid,"");
}
if (textofinal != "") {
_global.texto_tip[boton_numero] = textofinal;
}
return;
}
if (comando == "settimer") {
var timerpartes = textofinal.split("@");
var segundos = Number(timerpartes[0]);
if (isNaN(segundos)) {
segundos=0;
}
var type = timerpartes[1];
if(type == undefined) {
type="UP";
}
if(timer_type[boton_numero] != type)
{
// logea(boton_numero+" cambio de tipo vino "+type+" y era "+timer_type[boton_numero]);
if(type=="DOWN")
{
inicio_timer[boton_numero] = getTimer()+(segundos*1000);
} else if (type == "UP") {
inicio_timer[boton_numero] = getTimer()-(segundos*1000);
} else if (type == "IDLE") {
inicio_timer[boton_numero] = getTimer()-(segundos*1000);
} else if (type == "STOP") {
inicio_timer[boton_numero] = 0;
logea("tipo stop, pongo inicio_timer en cero");
}
} else {
// logea(boton_numero+" timer tipo no cambio era igual "+type);
}
timer_type[boton_numero]=type;
}
if (comando == "noregistrado") {
_root["rectangulo"+boton_numero]._alpha = dimm_noregister;
_root["resaltado"+boton_numero]._alpha = dimm_noregister;
_global.texto_tip[boton_numero] = "";
return;
}
if (comando == "unreachable") {
_root["rectangulo"+boton_numero]._alpha = dimm_lagged;
_root["resaltado"+boton_numero]._alpha = dimm_lagged;
_global.texto_tip[boton_numero] = "";
return;
}
if (comando == "registrado") {
if( _global.meetmemember[boton_numero]==0 || _global.meetmemember[boton_numero] == undefined ) {
_root["rectangulo"+boton_numero]._alpha = 100;
_root["resaltado"+boton_numero]._alpha = 100;
} else {
logea("No alpha muted o unmuted "+boton_numero);
logea(_global.meetmemember[boton_numero]);
}
return;
}
}
// endif root.context
}
// endif == response
}
// endiff e != null
}
function setclid(statusclid,textofinal) {
statusclid.text = textofinal;
if(_global.clid_centered == 1) {
clidExtent = fmtClid.getTextExtent ( textofinal );
cordx = (_global.ancho_a_centrar - clidExtent.textFieldWidth) / 2;
if(cordx<0) { cordx = 0; }
statusclid._x = cordx;
}
}
function popup_window(url,target) {
logea("popup");
if (url != "") {
if (target == "") {
target = "_self";
}
partes = url.split("?");
url = partes[0];
parametros = partes[1];
var c = new LoadVars();
var cadauno = parametros.split("&");
for (var aget in cadauno) {
partes = cadauno[aget].split("=");
c[partes[0]]=partes[1];
}
c.send(url, target, 'GET');
logea("Open url "+url+" in target "+target);
}
}
function set_button_label_text(btn_number,text) {
var botref = eval("rectangulo"+btn_number+".textoprint");
var botshref = eval("rectangulo"+btn_number+".textosh");
var lTextExtent = fmtLabel.getTextExtent ( text );
var lWidth = lTextExtent.textFieldWidth + _global.label_extent_x;
var lHeight = lTextExtent.textFieldHeight + _global.label_extent_y;
botref._width = lWidth;
botref._height = lHeight;
botref.text = text;
botshref._width = lWidth;
botshref._height= lHeight;
botshref.text = text;
}
function extract_text_inside_delimiters(inputText,start_char,end_char) {
var outputText="";
var start_delimiter = inputText.lastIndexOf(start_char);
start_delimiter++;
if (start_delimiter>0) {
var end_delimiter = inputText.indexOf(end_char, start_delimiter);
outputText = inputText.substring(start_delimiter, end_delimiter);
outputText = only_allowed_chars(outputText);
outputText = Trim(outputText);
}
return outputText;
};
function handleDisconnect(){
logea("Lost connection to "+server+" on port "+port);
delete _global.key;
for (var b in timer_type) {
timer_type[b] = "STOP";
inicio_timer[b] = 0;
}
for (var a in _root) {
if (typeof (_root[a]) == "movieclip") {
if (a.substring(0, 10) == "rectangulo") {
for (b in _root[a]) {
if (_root[a][b]._name.substring(0, 7) == "casicol") {
var numero = _root[a][b]._name.substring(7,1);
_root[a][b].changeledcolor(3,_global.color[0],_global.color[1],numero);
}
}
}
}
_root.log.gotoAndPlay(1);
}
_global.reconecta = 1;
}
function createCircle(tMC, r, x, y, color) {
// constant used in calculation
var A = Math.tan(22.5 * Math.PI/180);
// variables for each of 8 segments
var endx;
var endy;
var cx;
var cy;
color_normalizado = parseInt(color,16);
with (tMC) {
lineStyle(1,color_normalizado,100);
beginFill(color_normalizado, 100);
moveTo(x+r, y);
for (var angle = 45; angle<=360; angle += 45) {
// endpoint
endx = r*Math.cos(angle*Math.PI/180);
endy = r*Math.sin(angle*Math.PI/180);
// control:
// (angle-90 is used to give the correct sign)
cx =endx + r* A *Math.cos((angle-90)*Math.PI/180);
cy =endy + r* A *Math.sin((angle-90)*Math.PI/180);
curveTo(cx+x, cy+y, endx+x, endy+y);
}
endFill();
}
}
function createSquare(tMC, tW, tH, lW, lC, fC, f2C, cRad) {
tW -= lW;
tH -= lW;
with (tMC) {
var zerox = 0;
var zeroy = (tH/2)*-1;
lineStyle(lW, parseInt(lC, 16), 50);
moveTo(cRad+lW+zerox, zeroy);
colors = [parseInt(fC, 16), parseInt(f2C, 16)];
alphas = [100, 100];
ratios = [0, 0xFF];
matrix = {a:200, b:0, c:0, d:0, e:200, f:0, g:200, h:200, i:1};
matrix = {matrixType:"box", x:1, y:1, w:tW, h:tH, r:(45/180)*Math.PI};
if(fC != "transparent") {
beginGradientFill("linear", colors, alphas, ratios, matrix);
}
//
lineTo(cRad+lW+zerox, zeroy);
curveTo(lW+zerox, zeroy, lW+zerox, cRad+zeroy);
lineTo(lW+zerox, tH-cRad+zeroy);
curveTo(lW+zerox, tH+zeroy, cRad+lW+zerox, tH+zeroy);
lineTo(tW-cRad+zerox, tH+zeroy);
//
curveTo(tW+zerox, tH+zeroy, tW+zerox, tH-cRad+zeroy);
lineTo(tW+zerox, cRad+zeroy);
curveTo(tW+zerox, zeroy, tW-cRad+zerox, zeroy);
lineTo(cRad+lW+zerox, zeroy);
endFill();
}
};
dibuja = function () {
_root.preload._visible=false;
contador = 1;
depth = -10000;
cantidad_botones = 1;
// Draw rectangles bellow buttons
var a=-1;
while (++a <= vr.total_rectangles) {
v = eval("vr.rect_"+a);
if (v != undefined) {
var datos = v.split(",");
var rect_x = Number(datos[0]);
var rect_y = Number(datos[1]);
var rect_width = Number(datos[2]);
var rect_height = Number(datos[3]);
var line_width = Number(datos[4]);
var line_color = datos[5];
var fade_color1 = datos[6];
var fade_color2 = datos[7];
var rnd_border = Number(datos[8]);
var alpha = Number(datos[9]);
offsetboton = (rect_height/2);
if(datos[10]=="bottom") {
rect_y += offsetboton;
cusl = createEmptyMovieClip("dibujo"+a, depth);
createSquare(cusl, rect_width, rect_height, line_width, line_color, fade_color1, fade_color2, rnd_border);
cusl._x = rect_x;
cusl._y = rect_y;
cusl._visible = true;
cusl._alpha = alpha;
cusl.useHandCursor = false;
depth++;
}
}
}
var a=0;
while (++a <= _root.cuantas_columnas) {
depth++;
var b=0;
while (++b <= _root.cuantas_filas) {
var coordenada_y = (b*(alto_boton+separacion))-alto_boton+30;
var coordenada_x = (a*(ancho_boton+separacion))-ancho_boton;
var coordenada_x = coordenada_x-separacion;
var offsetboton = (alto_boton/2);
var v = eval("vr.texto"+contador);
var lurl = eval("vr.url"+contador);
lurl = base64_decode(lurl);
var lalarm = eval("vr.alarm"+contador);
if(lalarm != null) {
lalarm = base64_decode(lalarm);
var partes = lalarm.split("^");
segundos_alarma = partes[0];
url_alarma = partes[1];
target_alarma = partes[2];
timeralarm[contador] = partes[0];
urlalarm[contador] = partes[1];
targetalarm[contador] = partes[2];
logea("alarma "+contador+" = "+lalarm);
}
if(lurl != null) {
logea("url "+lurl);
}
var ltarget = eval("vr.target"+contador);
if (v != undefined) {
// El boton esta definido en la configuracion, lo muestro
if(lurl != "0" && lurl != null) {
fmtLabel.url = lurl;
} else {
fmtLabel.url = undefined;
}
if(ltarget != "0") {
fmtLabel.target = ltarget;
} else {
fmtLabel.target = undefined;
}
// Guardo el label original en un array
_global.labels[contador] = v;
var ima = eval("vr.bg"+contador);
cuel = createEmptyMovieClip("resaltado"+contador, getNextHighestDepth());
if(_root["nodraw_"+contador] == undefined || ima != undefined) {
createSquare(cuel, ancho_boton+4, alto_boton+4, ancho_linea, color_linea, resaltado_color, resaltado_color, btn_round_border);
}
with(cuel) {
_x = coordenada_x-2;
_y = coordenada_y+offsetboton;
_visible = false;
useHandCursor = false;
}
if(ima != undefined) {
cauel = createEmptyMovieClip("resaltadobg"+contador, getNextHighestDepth());
with(cauel) {
_x = coordenada_x;
_y = coordenada_y;
_visible = true;
useHandCursor = false;
}
loadMovie(ima,cauel);
}
cual = createEmptyMovieClip("rectangulo"+contador, getNextHighestDepth());
with(cual) {
useHandCursor = false;
//menu = myMenu;
_visible = true;
_x = coordenada_x;
_y = coordenada_y+offsetboton;
}
led_margin_left = Number(vr.led_margin_left);
led_margin_top = Number(vr.led_margin_top);
if(_root["nodraw_"+contador] == undefined) {
createSquare(cual, ancho_boton, alto_boton, ancho_linea, color_linea, boton1_fade, boton2_fade, btn_round_border);
}
var lTextExtent = fmtClid.getTextExtent ( "XXXXXXXXXXXXXXXXXXXX" );
var textWidth = lTextExtent.textFieldWidth + 10;
var textHeight = lTextExtent.textFieldHeight + 2;
cual.createTextField("statusprint"+contador, depth, clid_margin_left, clid_margin_top-offsetboton, 1, 1);
depth++;
with (cual["statusprint"+contador]) {
selectable = false;
setNewTextFormat(fmtClid);
text = "000000000000000000000000000000000000";
border = false;
_width = vr.btn_width - clid_margin_left * 2;
_width = textWidth;
_height = textHeight + 5;
text = "";
if(use_embed_fonts==1) {
embedFonts = true;
}
}
cual.createTextField("timer"+contador, depth, timer_margin_left, timer_margin_top-offsetboton, 1, 1);
depth++;
cual["timer"+contador].selectable = false;
cual["timer"+contador].border = false;
cual["timer"+contador].setNewTextFormat(fmtTimer);
cual["timer"+contador].text = "00:00:00";
cual["timer"+contador]._width = cual["timer"+contador].textWidth+15;
cual["timer"+contador]._height = cual["timer"+contador].textHeight+15;
cual["timer"+contador].text = "";
cual["timer"+contador].tabIndex = contador;
if(use_embed_fonts==1) {
cual["timer"+contador].embedFonts = true;
}
var lTextExtent = fmtLabel.getTextExtent ( v );
var lWidth = lTextExtent.textFieldWidth + _global.label_extent_x;
var lHeight = lTextExtent.textFieldHeight + _global.label_extent_y;
cual.createTextField("textobg", depth, label_margin_left, label_margin_top-offsetboton, 1, 1);
with (cual["textobg"]) {
setNewTextFormat(fmtLabel);
_width = vr.btn_width - label_margin_left * 2;
_height = lHeight;
}
depth++;
if (label_shadow == 1) {
cual.createTextField("textosh", depth, label_margin_left+1, label_margin_top+1-offsetboton, 1, 1);
with (cual["textosh"]) {
//setNewTextFormat(fmtLabelsh);
_width = lWidth;
_height = lHeight;
selectable = false;
border = showborders;
multiline = true;
wordWrap = true;
if(use_embed_fonts==1) {
embedFonts = true;
htmlText = v;
html = true;
} else {
text = v;
}
}
cual["textosh"].setTextFormat(fmtLabelsh);
depth++;
}
cual.createTextField("textoprint", depth, label_margin_left, label_margin_top-offsetboton, 1, 1);
with (cual["textoprint"]) {
setNewTextFormat(fmtLabel);
_width = lWidth;
_height = lHeight;
border = showborders;
selectable = false;
multiline = true;
wordWrap = true;
if(use_embed_fonts==1) {
embedFonts = true;
htmlText = v;
html = true;
} else {
text = v;
}
}
cual["textoprint"].setTextFormat(fmtLabel);
depth++;
casilli = cual.attachMovie("ledsombra","casish"+contador, depth, {_x:led_margin_left, _y:led_margin_top-offsetboton+1});
casilli._xscale = led_scale;
casilli._yscale = led_scale;
depth++;
casilli = cual.attachMovie("ledcolor","casicol"+contador, depth, {_x:led_margin_left, _y:led_margin_top-offsetboton+1});
casilli._xscale = led_scale;
casilli._yscale = led_scale;
_global.colorlibre[contador]=_global.color[0];
casilli.changeledcolor(0,_global.color[0],_global.color[1],contador);
depth++;
casilli = cual.attachMovie("ledbrillo","casilla"+contador, depth, {_x:led_margin_left, _y:led_margin_top-offsetboton+1});
casilli._xscale = led_scale;
casilli._yscale = led_scale;
depth++;
circle = cual.createEmptyMovieClip("circle"+contador, depth);
createCircle(circle,11,0,0,'0x00ff00');
circle._xscale = arrow_scale;
circle._yscale = arrow_scale;
circle._x = arrow_margin_left;
circle._y = arrow_margin_top - offsetboton + 1;
depth++;
flechi = cual.attachMovie("arrow", "flecha"+contador, depth, {_x:arrow_margin_left, _y:arrow_margin_top-offsetboton+1});
depth++;
// flechi._visible = false;
flechi.gotoAndStop(3);
flechi._xscale = arrow_scale;
flechi._yscale = arrow_scale;
flechi.onRelease = function() {
doubleClick(this);
};
flechi.onEnterFrame = function() {
if(this.hitTest(clip_arrastrado)) {
this._xscale = arrow_scale * 1.5;
this._yscale = arrow_scale * 1.5;
this.hitted = 1;
_global.flechahit = this;
} else {
if(this.hitted == 1) {
this.hitted = 0;
_global.flechahit = undefined;
}
}
if(this.hitted == 0) {
this._xscale = arrow_scale;
this._yscale = arrow_scale;
this.hitted = -1;
}
};
// createCircle(cual,12*(arrow_scale/100),arrow_margin_left,arrow_margin_top-offsetboton+1,'0xff0000');
// var tama = (arrow_scale * 6 / 100) * 2;
// createCircle(_root["rectangulo"+contador]["flecha"+contador],tama,0,0,'0xff0000');
w = Number(eval("vr.icono"+contador));
if (w<0) {
w = 1;
}
top = Number(eval("vr.icon"+w+"_margin_top"));
left = Number(eval("vr.icon"+w+"_margin_left"));
escala = Number(eval("vr.icon"+w+"_scale"));
telef = cual.attachMovie("telefono"+w, "tele"+contador, depth, {_x:ancho_boton+left, _y:top-offsetboton});
telef.gotoAndStop(1);
depth++;
sobrec = cual.attachMovie("sobre", "sobrecito"+contador, depth, {_x:ancho_boton+mail_margin_left, _y:mail_margin_top-offsetboton});
depth++;
sobrec._xscale = mail_scale;
sobrec._yscale = mail_scale;
sobrec._visible = false;
sobrec._alpha = _global.nomailalpha;
sobrec.onRollOut = function() {
this._xscale = mail_scale;
this._yscale = mail_scale;
};
sobrec.onEnterFrame = function() {
if(this.hitTest(clip_arrastrado)) {
this._xscale = mail_scale * 1.5;
this._yscale = mail_scale * 1.5;
this.hitted = 1;
_global.sobrehit = this;
} else {
if(this.hitted == 1) {
this.hitted = 0;
_global.sobrehit = undefined;
}
}
if(this.hitted == 0) {
this._xscale = mail_scale;
this._yscale = mail_scale;
this.hitted = -1;
}
};
sobrec.onRollOver = function() {
// this._xscale = mail_scale * 1.5;
// this._yscale = mail_scale * 1.5;
var origen = ExtraeNumeroClip(this);
makeStatusMail(origen);
};
sobrec.onRelease = function() {
doubleClick(this);
};
telef.onPress = function() {
dragClip(this);
};
casilli.onRelease = function() {
doubleClick(this);
};
telef._xscale = escala;
telef._yscale = escala;
inicio_timer[cantidad_botones] = 0;
timer_type[contador] = "STOP";
cantidad_botones++;
ultimo = contador;
}
contador++;
}
}
// Draw rectangles over buttons
var a=0;
while (++a <= vr.total_rectangles) {
v = eval("vr.rect_"+a);
if (v != undefined) {
var datos = v.split(",");
var rect_x = Number(datos[0]);
var rect_y = Number(datos[1]);
var rect_width = Number(datos[2]);
var rect_height = Number(datos[3]);
var line_width = Number(datos[4]);
var line_color = datos[5];
var fade_color1 = datos[6];
var fade_color2 = datos[7];
var rnd_border = Number(datos[8]);
var alpha = Number(datos[9]);
offsetboton = (rect_height/2);
if(datos[10]=="top") {
rect_y += offsetboton;
cusl = createEmptyMovieClip("dibujo"+a, getNextHighestDepth());
createSquare(cusl, rect_width, rect_height, line_width, line_color, fade_color1, fade_color2, rnd_border);
cusl._x = rect_x;
cusl._y = rect_y;
cusl._visible = true;
cusl._alpha = alpha;
cusl.useHandCursor = false;
}
}
}
// Draw IMAGES
var a3=0;
while (++a3 <= vr.total_images) {
v3 = eval("vr.image_"+a3);
if (v3 != undefined) {
ima = eval("image"+a3);
var datos3 = v3.split(",");
var image_x = Number(datos3[0]);
var image_y = Number(datos3[1]);
var image_src = datos3[2];
var image_url = datos3[3];
var image_target = datos3[4];
logea("coord x "+image_x);
logea("coord y "+image_y);
logea("image src "+image_src);
barin = createEmptyMovieClip("image"+a3,getNextHighestDepth());
loadMovie(image_src, "image"+a3);
barin._x = image_x;
barin._y = image_y;
}
}
// Draw TEXT LEGENDS
var a=0;
while (++a <= vr.total_legends) {
v = eval("vr.legend_"+a);
if (v != undefined) {
var datos = v.split(",");
var legend_x = Number(datos[0]);
var legend_y = Number(datos[1]);
var legend_fontsize = Number(datos[3]);
var legend_fontfamily = datos[4];
var legend_fontcolor = parseInt(datos[5], 16);
var legend_embedfonts = Number(datos[6]);
var legend_no_base64 = Number(datos[7]);
var legend_url = datos[8];
var legend_target = datos[9];
if(legend_no_base64==0) {
var legend_text = base64_decode(datos[2]);
} else {
var legend_text = datos[2];
}
var fmtLege = new TextFormat();
fmtLege.size = legend_fontsize;
fmtLege.color = legend_fontcolor;
if(legend_embedfonts == 1) {
fmtLege.font = "$fuente_nombre";
} else {
fmtLege.font = legend_fontfamily;
}
if(legend_url != "no") {
fmtLege.url = legend_url;
fmtLege.underline = true;
logea("legend url "+fmtLege.url);
}
if(legend_target != "NONTARFOP") {
fmtLege.target = legend_target;
}
createTextField("lege"+a, getNextHighestDepth(), legend_x, legend_y, 10, 10);
_root["lege"+a].setNewTextFormat(fmtLege);
if(legend_embedfonts == 1) {
_root["lege"+a].embedFonts = true;
} else {
_root["lege"+a].embedFonts = false;
}
_root["lege"+a].htmlText = legend_text;
_root["lege"+a].html = true;
_root["lege"+a].border = false;
_root["lege"+a].selectable = false;
_root["lege"+a].multiline = true;
_root["lege"+a].wordWrap = true;
var lTextExtent = fmtLege.getTextExtent ( legend_text );
var lWidth = lTextExtent.textFieldWidth + 40;
var lHeight = lTextExtent.textFieldHeight + 40;
_root["lege"+a]._width = lWidth;
_root["lege"+a]._height = lHeight;
_root["lege"+a].setTextFormat(fmtLege);
}
}
ultimo++;
attachMovie("telefono1", "tele"+ultimo, getNextHighestDepth(), {_x:1, _y:1, _visible:false});
_global.masalto = ultimo;
_root.onMouseMove = function() {
if(_global.nohighlight == 1) {
return;
}
var columna = int((_xmouse+ancho_boton+separacion)/(ancho_boton+separacion));
var fila = Math.floor((_ymouse-30-separacion)/(alto_boton+separacion))+1;
var boton = 1;
if (columna<1) {
columna = 1;
boton = -1;
} else if (columna>cuantas_columnas) {
columna = cuantas_columnas;
boton = -1;
}
if (fila>cuantas_filas) {
fila = cuantas_filas;
boton = -1;
} else if (fila<1) {
fila = 1;
boton = -1;
}
if(boton!=-1) {
boton = ((columna*cuantas_filas)-cuantas_filas)+fila;
if (boton!=_global.rectanguloprendido) {
var a=0;
while (++a < _global.otrosprendidos.length) {
var prendeme = eval("resaltado"+_global.otrosprendidos[a]);
prendeme._visible = false;
}
//var myresa = eval("resaltado"+boton);
//var myapaga = eval("resaltado"+_global.rectanguloprendido);
if(_global.rectanguloprendido != _global.restrict) {
//myapaga._visible = false;
_root["resaltado"+_global.rectanguloprendido]._visible = false;
}
//myresa._visible = true;
_root["resaltado"+boton]._visible = true;
_global.rectanguloprendido = boton;
makeStatus(boton);
var botresa = linkeado[boton].split(",");
for (b in botresa) {
//var prendeme = eval("resaltado"+botresa[b]);
//prendeme._visible = true;
_root["resaltado"+botresa[b]]._visible = true;
_global.otrosprendidos.push(botresa[b]);
}
}
} else {
//var myapaga = eval("resaltado"+_global.rectanguloprendido);
//myapaga._visible = false;
_root["resaltado"+_global.rectanguloprendido]._visible = false;
for (b in _global.otrosprendidos) {
//var prendeme = eval("resaltado"+_global.otrosprendidos[b]);
if(_global.otrosprendidos[b]!=_global.restrcit) {
//prendeme._visible = false;
_root["resaltado"+_global.otrosprendidos[b]]._visible = false;
}
}
}
};
_root.detail.swapDepths(getNextHighestDepth());
_root.superdetails.swapDepths(getNextHighestDepth());
_root.log.swapDepths(getNextHighestDepth());
_root.codebox.swapDepths(getNextHighestDepth());
_root.selectbox1.swapDepths(getNextHighestDepth());
if(vr.totaltimes > 0) {
genera_selecttimeout();
_root.selectbox1._visible = true;
} else {
_root.selectbox1._visible = false;
}
if(defined(_root.margintop))
{
_root._y+=_root.margintop;
}
if(defined(_root.marginleft))
{
_root._x+=_root.marginleft;
}
};
Inicia_Variables = function () {
lastclick=0;
doubleclickduration=300;
_global.swfversion="0.30";
_global.frames = 0;
_global.step=2;
_global.statusline="";
_global.server = vr.server;
_global.port = vr.port;
_global.clid_centered = Number(vr.clid_centered);
_global.shakepixels = Number(vr.shake_pixels);
_global.nomailalpha = Number(vr.nomail_alpha);
if (Number(vr.show_borders)==1) {
_global.showborders = true;
} else {
_global.showborders = false;
}
_root.log._visible = false;
_root.log._alpha = 100;
_root.codebox._visible = false;
_root.codebox._alpha = 100;
_root.detail._visible = false;
_root.superdetails._visible = false;
_root.superdetails.tab1.gotoAndStop(1);
_root.superdetails.tab2.gotoAndStop(2);
_root.superdetails._alpha = 90;
_global.logwindow = 1;
_global.margenbar = 2;
_global.chanvars = new Array();
_global.loglines = new Array();
_global.texto_tip = new Array();
_global.texto_mail = new Array();
_global.timeralarm = new Array();
_global.urlalarm = new Array();
_global.targetalarm = new Array();
_global.st_originclid = new Array();
_global.st_destinationclid = new Array();
_global.ipboton = new Array();
_global.st_direction = new Array();
_global.queuemember = new Object();
_global.superdetailstexttab1 = "";
_global.superdetailstexttab2 = "";
_global.st_duration = new Array();
_global.meetmemember = new Array();
_global.meetmeroom = new Array();
_global.meetmemute = new Array();
_global.linkeado = new Array();
_global.authorized = false;
_global.wait5seconds = 1;
_global.rectanguloprendido = 1;
_global.otrosprendidos = new Array();
_global.colorlibre = new Array();
_global.labels = new Array();
_global.clidnumber = new Array();
_global.clidname = new Array();
_global.enable_crypto = Number(vr.enable_crypto);
_global.label_extent_x = Number(vr.label_extent_x);
_global.label_extent_y = Number(vr.label_extent_y);
if (isNaN(_global.label_extent_x)) {
_global.label_extent_x = 10;
}
if (isNaN(_global.label_extent_y)) {
_global.label_extent_y = 5;
}
_global.enable_label_background = Number(vr.enable_label_background);
_global.restart = Number(vr.restart);
_global.nosecurity = vr.nosecurity;
_global.valorchangeledcolor = new Array();
if(_global.nosecurity == 1) {
_global.claveingresada="";
}
_global.claveingresada = LocalLoad("auth","clave");
_root.codebox.claveform.text = _global.claveingresada;
_global.timeout_value = 0;
if (isNaN(_global.enable_crypto)) {
_global.enable_crypto=0;
} else {
if(_global.enable_crypto != 0) {
_global.enable_crypto = 1;
}
}
_global.led_color = Number(vr.led_color);
if (_global.led_color>1 || _global.led_color<0) {
_global.led_color = 0;
}
// ancho_pantalla = System.capabilities.screenResolutionX;
// alto_pantalla = System.capabilities.screenResolutionY;
ancho_pantalla_real = $stage_width;
alto_pantalla_real = $stage_height;
ancho_boton = Number(_root.vr.btn_width);
alto_boton = Number(_root.vr.btn_height);
if (ancho_boton<=0) {
ancho_boton = 200;
}
if (alto_boton<=0) {
alto_boton = 80;
}
separacion = Number(_root.vr.btn_padding);
ancho_linea = Number(_root.vr.btn_line_width);
color_linea = _root.vr.btn_line_color;
boton1_fade = _root.vr.btn_fadecolor_1;
boton2_fade = _root.vr.btn_fadecolor_2;
ledcolor_busy = _root.vr.ledcolor_busy;
ledcolor_ready = _root.vr.ledcolor_ready;
ledcolor_agent = _root.vr.ledcolor_agent;
ledcolor_paused = _root.vr.ledcolor_paused;
_global.resaltado_color = _root.vr.btn_highlight_color;
if(ledcolor_busy==undefined) {
ledcolor_busy="0xC00000";
}
if(ledcolor_ready==undefined) {
ledcolor_ready="0x00A000";
}
if(ledcolor_agent==undefined) {
ledcolor_agent="0xC0A000";
}
if(_global.resaltado_color==undefined) {
_global.resaltado_color="FF0000";
}
// Fills 30 elements in loglines (for debug window)
for (i=0; i<30; i++) {
_global.loglines.push("");
}
_global.color = new Array();
_global.color[0] = ledcolor_ready;
_global.color[1] = ledcolor_busy;
_global.color[2] = ledcolor_agent;
btn_round_border = Number(_root.vr.btn_round_border);
label_margin_top = Number(_root.vr.label_margin_top);
label_margin_left = Number(_root.vr.label_margin_left);
clid_margin_top = Number(_root.vr.clid_margin_top);
clid_margin_left = Number(_root.vr.clid_margin_left);
timer_margin_top = Number(_root.vr.timer_margin_top);
timer_margin_left = Number(_root.vr.timer_margin_left);
if(_root.vr.dimm_noregister_by == undefined) {
dimm_noregister = 20;
} else {
dimm_noregister = Number(_root.vr.dimm_noregister_by);
}
if(_root.vr.dimm_lagged_by == undefined) {
dimm_lagged = 60;
} else {
dimm_lagged = Number(_root.vr.dimm_lagged_by);
}
if(_root.vr.label_font_color == undefined) {
_root.vr.label_font_color='000000';
}
if(_root.vr.label_shadow_color == undefined) {
_root.vr.label_shadow_color='dddddd';
}
label_font_color = parseInt(_root.vr.label_font_color, 16);
label_shadow_color = parseInt(_root.vr.label_shadow_color, 16);
clid_font_color = parseInt(_root.vr.clid_font_color, 16);
timer_font_color = parseInt(_root.vr.timer_font_color, 16);
label_font_size = Number(_root.vr.label_font_size);
arrow_margin_left = Number(vr.arrow_margin_left);
arrow_margin_top = Number(vr.arrow_margin_top);
led_scale = Number(_root.vr.led_scale);
arrow_scale = Number(_root.vr.arrow_scale);
// phone_scale = Number(phone_scale);
mail_margin_left = Number(_root.vr.mail_margin_left);
mail_margin_top = Number(_root.vr.mail_margin_top);
mail_scale = Number(_root.vr.mail_scale);
show_security_code = Number(_root.vr.show_security_code);
show_clid_info = Number(_root.vr.show_clid_info);
show_btn_help = Number(_root.vr.show_btn_help);
show_btn_debug = Number(_root.vr.show_btn_debug);
show_btn_reload = Number(_root.vr.show_btn_reload);
show_status = Number(_root.vr.show_status);
use_embed_fonts = Number(_root.vr.use_embed_fonts);
enable_animation = Number(_root.vr.enable_animation);
label_shadow = Number(_root.vr.label_shadow);
_level0.detail.duration_label = _root.vr.detail_duration;
_level0.detail.title = _root.vr.detail_title;
_level0.codebox.title = _root.vr.security_code_title;
_level0.superdetails.titlefs2 = _root.vr.tab_call_text;
_level0.superdetails.titlefs3 = _root.vr.tab_queue_text;
_level0.log.title = _root.vr.debug_window_title;
orden_barra = [["security", vr.show_security_code], ["clid", vr.show_clid_info], ["status", vr.show_status], ["help", vr.show_btn_help], ["debug", vr.show_btn_debug], ["reload", vr.show_btn_reload]];
orden_barra.sort(ordenaArray);
// cuantas_filas = math.floor((alto_pantalla_real-30)/(alto_boton+separacion));
cuantas_filas = (alto_pantalla_real-30)/(alto_boton+separacion);
cuantas_filas = Math.floor(_root.cuantas_filas);
// cuantas_columnas = math.floor((ancho_pantalla_real+separacion)/(ancho_boton+separacion));
cuantas_columnas = (ancho_pantalla_real+separacion)/(ancho_boton+separacion);
cuantas_columnas = Math.floor(Number(_root.cuantas_columnas));
max_en_pantalla = cuantas_columnas * cuantas_filas;
if(_root.vr.highestpos == undefined) {
_root.vr.highestpos = 2;
}
_global.highpos = Number(_root.vr.highestpos);
cuantas_columnas = Math.ceil(_global.highpos / cuantas_filas);
_global.max_scroll_left = 996 - ( cuantas_columnas * (ancho_boton+separacion)) + separacion;
if(_global.highpos <= max_en_pantalla) {
_global.scrolling = 0;
} else {
_global.scrolling = 1;
}
fmtLabel = new TextFormat();
fmtLabel.size = vr.label_font_size;
if(use_embed_fonts==1) {
fmtLabel.font = "$fuente_nombre";
} else {
fmtLabel.font = vr.label_font_family;
}
fmtLabel.color = label_font_color;
fmtLabelsh = new TextFormat();
fmtLabelsh.color = label_shadow_color;
fmtLabelsh.size = vr.label_font_size;
if(use_embed_fonts==1) {
fmtLabelsh.font = "$fuente_nombre";
} else {
fmtLabelsh.font = vr.label_font_family;
}
fmtLabelsh._alpha = 90;
fmtClid = new TextFormat();
fmtClid.size = vr.clid_font_size;
fmtClid.color = clid_font_color;
if(use_embed_fonts==1) {
fmtClid.font = "$fuente_nombre";
} else {
fmtClid.font = vr.clid_font_family;
}
fmtTimer = new TextFormat();
fmtTimer.size = vr.timer_font_size;
fmtTimer.color = timer_font_color;
if(use_embed_fonts==1) {
fmtTimer.font = "$fuente_nombre";
} else {
fmtTimer.font = vr.timer_font_family;
}
_global.ancho_a_centrar = vr.btn_width - clid_margin_left * 2;
timer_type = new Array();
inicio_timer = new Array();
/* Custom context menu is not working in MING
var myMenu;
myMenu = new ContextMenu();
myMenu.customItems.push(new ContextMenuItem("Toggle DND", setDND));
myMenu.hideBuiltInItems();
*/
var i=0;
while (++i < orden_barra.length) {
// for (i=0; i0) {
if (orden_barra[i][0] == "security") {
Barra_SecurityCode();
}
if (orden_barra[i][0] == "clid") {
Barra_InfoText();
}
if (orden_barra[i][0] == "help") {
Barra_BotonHelp();
}
if (orden_barra[i][0] == "debug") {
Barra_BotonDebug();
}
if (orden_barra[i][0] == "reload") {
Barra_BotonReload();
}
if (orden_barra[i][0] == "status") {
Barra_Status();
}
}
}
_global.opcionesTimeout = new Array();
_global.opcionesTimeoutSecs = new Array();
var a=0;
while (++a <= vr.totaltimes) {
//for (a=1; a<=vr.totaltimes; a++) {
v = eval("vr.timeout_"+a);
if (v != undefined) {
var datos = v.split(",");
_global.opcionesTimeoutSecs.push(Number(datos[0]));
_global.opcionesTimeout.push(datos[1]);
}
}
datosnod = vr.nodraw.split(',');
for (var elem in datosnod) {
_root["nodraw_"+datosnod[elem]] = 1;
}
};
function ordenaArray(a, b) {
return a[1]>b[1];
}
function SecurityCode_Locked() {
if(show_security_code != 0) {
var x=_root.claveinput._x;
var mydepth = _level0.claveinput.getDepth();
// _level0.claveinput.unloadMovie();
mymc = attachMovie("boton_security", "claveinput", mydepth);
mymc.gotoAndStop(1);
mymc._x = x;
mymc._y = 1;
mymc.onPress = function() {
_root.codebox._visible = true;
Selection.setFocus(_root.codebox.claveform);
_root.codebox.swapDepths(_root.log);
};
mymc.onRollOver = function() {
_root.statusbar.status.text = "Open Security Code Input Box";
mymc.gotoAndStop(2);
};
mymc.onRollOut = function() {
_root.statusbar.status.text = _global.statusline;
mymc.gotoAndStop(1);
};
}
}
function SecurityCode_Unlocked() {
if(show_security_code != 0) {
var x=_root.claveinput._x;
var mydepth = _level0.claveinput.getDepth();
// _level0.claveinput.unloadMovie();
mymc = attachMovie("boton_security_unlock", "claveinput", mydepth);
mymc._x = x;
mymc._y = 1;
mymc.onPress = function() {
_root.codebox._visible = true;
Selection.setFocus(_root.codebox.claveform);
_root.codebox.swapDepths(_root.log);
};
mymc.onRollOver = function() {
_level0.statusbar.status.text = "Open Security Code input box";
mymc.gotoAndStop(2);
};
mymc.onRollOut = function() {
_level0.statusbar.status.text = _global.statusline;
mymc.gotoAndStop(1);
};
}
}
function Barra_SecurityCode() {
attachMovie("boton_security_unlock", "claveinput", getNextHighestDepth());
claveinput.gotoAndStop(1);
claveinput._x = _global.margenbar;
_global.margen_claveinput = _global.margenbar;
claveinput._y = 1;
claveinput._visible = true;
claveinput.onPress = function() {
_root.codebox._visible = true;
Selection.setFocus(_root.codebox.claveform);
_root.codebox.swapDepths(_root.log);
};
claveinput.onRollOver = function() {
_level0.statusbar.status.text = vr.btn_security_text;
claveinput.gotoAndStop(2);
};
claveinput.onRollOut = function() {
_level0.statusbar.status.text = _global.statusline;
claveinput.gotoAndStop(1);
};
_global.margenbar = _global.margenbar+claveinput._width;
}
function Barra_BotonReload() {
attachMovie("boton_reload", "buttonreload", getNextHighestDepth());
buttonreload.gotoAndStop(1);
_global.margen_buttonreload = _global.margenbar;
buttonreload._x = _global.margenbar;
buttonreload._y = 1;
buttonreload._visible = true;
buttonreload.label.text = vr.btn_reload_label;
buttonreload.onRelease = function() {
_root.recarga();
};
buttonreload.onRollOver = function() {
if(_global.restart == 1) {
_level0.statusbar.status.text = vr.btn_restart_text;
} else {
_level0.statusbar.status.text = vr.btn_reload_text;
}
buttonreload.gotoAndStop(2);
};
buttonreload.onRollOut = function() {
_level0.statusbar.status.text = _global.statusline;
buttonreload.gotoAndStop(1);
};
_global.margenbar = _global.margenbar+buttonreload._width;
}
function Barra_BotonDebug() {
attachMovie("boton_debug", "buttondebug", getNextHighestDepth());
buttondebug.gotoAndStop(1);
_global.margen_buttondebug = _global.margenbar;
buttondebug._x = _global.margenbar;
buttondebug._y = 1;
buttondebug._visible = true;
buttondebug.label.text = vr.btn_log_label;
buttondebug.onPress = function() {
MuestraLog();
};
buttondebug.onRollOver = function() {
_level0.statusbar.status.text = vr.btn_debug_text + " (" +_global.swfversion + ")";
buttondebug.gotoAndStop(2);
};
buttondebug.onRollOut = function() {
_level0.statusbar.status.text = _global.statusline;
buttondebug.gotoAndStop(1);
};
_global.margenbar = _global.margenbar+buttondebug._width;
}
function Barra_BotonHelp() {
attachMovie("boton_ayuda", "buttonhelp", getNextHighestDepth());
buttonhelp.gotoAndStop(1);
_global.margen_buttonhelp = _global.margenbar;
buttonhelp._x = _global.margenbar;
buttonhelp._y = 1;
buttonhelp._visible = true;
buttonhelp.label.text = vr.btn_help_label;
buttonhelp.onPress = function() {
buttonhelp.gotoAndStop(2);
url = "help_"+vr.lang+".html";
winName = "fophelp";
w = 400;
h = 300;
toolbar = 0;
location = 0;
directories = 0;
status = 0;
menubar = 0;
scrollbars = 1;
resizable = 0;
getURL("javascript:var myWin1;if (!myWin1 || myWin1.closed){myWin1=window.open('"+url+"', '"+winName+"', '"+"width="+w+", height="+h+", toolbar="+toolbar+", location="+location+", directories="+directories+", status="+status+", menubar="+menubar+", scrollbars="+scrollbars+", resizable="+resizable+", top='+((screen.height/2)-("+h/2+"))+', left='+((screen.width/2)-("+w/2+"))+'"+"')} else{myWin1.focus();};void(0);",'');
};
buttonhelp.onRollOver = function() {
_level0.statusbar.status.text = vr.btn_help_text;
buttonhelp.gotoAndStop(2);
};
buttonhelp.onRollOut = function() {
_level0.statusbar.status.text = _global.statusline;
buttonhelp.gotoAndStop(1);
};
_global.margenbar = _global.margenbar+buttonhelp._width;
}
function Barra_Status() {
ancho = 0;
var j=0;
while (++j < orden_barra.length) {
// for (j=0; j0) {
if (orden_barra[j][0] == "security") {
ancho = ancho+32.5;
}
if (orden_barra[j][0] == "clid") {
ancho = ancho+272.5;
}
if (orden_barra[j][0] == "help") {
ancho = ancho+32.5;
}
if (orden_barra[j][0] == "debug") {
ancho = ancho+32.5;
}
if (orden_barra[j][0] == "reload") {
ancho = ancho+32.5;
}
}
}
ancho_status = ancho_pantalla_real-(ancho+2);
bar = createEmptyMovieClip("statusbar",30000);
_global.margen_statusbar = _global.margenbar;
bar._visible = true;
bar._border = true;
createSquare(_level0.statusbar, ancho_status, 30, 0, "0x999999", "0xcccccc", "0xcccccc", 0);
bar._x = _global.margenbar;
bar._y = 16;
fmtStatus = new TextFormat();
fmtStatus.size = 16;
if(use_embed_fonts==1) {
fmtStatus.font = "$fuente_nombre";
} else {
fmtStatus.font = vr.label_font_family;
}
statusTextExtent = fmtStatus.getTextExtent ( "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" );
statusWidth = statusTextExtent.textFieldWidth;
statusHeight = statusTextExtent.textFieldHeight;
bar.createTextField("status", getNextHighestDepth(), 3, 3, statusWidth, statusHeight);
bar.status.setNewTextFormat(fmtStatus);
bar.status.text = "Asterisk Flash Operator Panel";
bar.status.border = false;
bar.status._y = -10;
bar.status.selectable = false;
if(use_embed_fonts==1) {
bar.status.embedFonts = true;
}
}
function Barra_InfoText() {
fmtInfo = new TextFormat();
fmtInfo.size = 16;
if(use_embed_fonts==1) {
fmtInfo.font = "$fuente_nombre";
} else {
fmtInfo.font = vr.label_font_family;
}
attachMovie("infotext", "infotext1", getNextHighestDepth());
_global.margen_infotext1 = _global.margenbar;
infotext1._x = _global.margenbar;
infotext1._y = 1;
infotext1._visible = true;
infoTextExtent = fmtInfo.getTextExtent ( vr.clid_label );
infoWidth = infoTextExtent.textFieldWidth + 20;
infoHeight = infoTextExtent.textFieldHeight;
infotext1.createTextField("cclid", getNextHighestDepth(), 3, 3, infoWidth, infoHeight);
infotext1.cclid.setNewTextFormat(fmtInfo);
infotext1.cclid.text = vr.clid_label;
infotext1.cclid.border = false;
if(use_embed_fonts==1) {
infotext1.cclid.embedFonts = true;
}
inputtext = "XXXXXXXXXXXXXXXXXXX";
infoTextExtent = fmtInfo.getTextExtent ( inputtext );
infoWidth = infoTextExtent.textFieldWidth;
infoHeight = infoTextExtent.textFieldHeight;
infotext1.createTextField("clid_text", getNextHighestDepth()+1, 74, 3, 195, infoHeight);
infotext1.clid_text.setNewTextFormat(fmtInfo);
infotext1.clid_text.text = "";
infotext1.clid_text.border = false;
infotext1.clid_text.type = "input";
if(use_embed_fonts==1) {
infotext1.clid_text.embedFonts = true;
}
_global.margenbar = _global.margenbar+infotext1._width;
}
recarga = function () {
if(_global.restart == 1) {
// Send command to restart Asterisk
envia_comando("restart","1","1");
} else {
// Reloads FLASH client
delete _global.key;
var incontext = context;
var inbutton = mybutton;
var inrestrict = _global.restrict;
var indial = dial;
var innohighlight = nohighlight;
for (var a in _root) {
if (typeof (_root[a]) == "object") {
removeMovieClip(_root[a]);
}
if (typeof (_root[a]) == "movieclip") {
removeMovieClip(_root[a]);
}
}
_global.context = incontext;
_global.mybutton = inbutton;
_global.restrict = inrestrict;
_global.dial = indial;
_global.nohighlight = inhighlight;
stop();
gotoAndPlay(1);
}
};
Detiene_Peliculas = function () {
// Detiene todos las peliculas al inicio
selectbox1.gotoAndStop(1);
for (a in _root) {
if (typeof (a) == "movieclip") {
_root[a].stop();
if (a.substring(0, 10) == "rectangulo") {
for (b in _root[a]) {
if (typeof (_root[a][b]) == "movieclip") {
_root[a][b].stop();
}
if(b.substring(0,7) == "casicol") {
var numero = b.substring(7,8);
_root[a][b].changeledcolor(0,_global.colorlibre[numero],_global.color[1],numero);
}
}
}
}
}
_root._y = _root.margintop;
_root._x = _root.marginleft;
};
_root.onEnterFrame = function() {
if(_global.scrolling == 1) {
// _level0.statusbar.status.text = _xmouse+":"+_ymouse;
// Nico SCROLL
var limite_der = 986 + (_root._x * -1);
var limite_der_top = 986 + (_root._x * -1) + 10;
var limite_izq = 10 + (_root._x * -1);
var limite_izq_top = 10 + (_root._x * -1) - 10;
if(_xmouse > limite_der && _xmouse <= limite_der_top) {
_root._x -= _global.step;
claveinput._x += _global.step;
infotext1._x += _global.step;
_level0.statusbar._x += _global.step;
buttonhelp._x += _global.step;
buttondebug._x += _global.step;
buttonreload._x += _global.step;
optionselected._x += _global.step;
selectbox1._x += _global.step;
_root.fondo.mihijo._x += _global.step;
_root.option0._x += _global.step;
_root.option1._x += _global.step;
_root.option2._x += _global.step;
_root.option3._x += _global.step;
_root.option4._x += _global.step;
_root.codebox._x += _global.step;
_root.superdetails._x += _global.step;
_global.step+=2;
} else if (_xmouse < limite_izq && _xmouse>= limite_izq_top) {
_root._x += _global.step;
claveinput._x -= _global.step;
infotext1._x -= _global.step;
_level0.statusbar._x -= _global.step;
buttonhelp._x -= _global.step;
buttondebug._x -= _global.step;
buttonreload._x -= _global.step;
optionselected._x -= _global.step;
selectbox1._x -= _global.step;
_root.fondo.mihijo._x -= _global.step;
_root.option0._x -= _global.step;
_root.option1._x -= _global.step;
_root.option2._x -= _global.step;
_root.option3._x -= _global.step;
_root.option4._x -= _global.step;
_root.codebox._x -= _global.step;
_root.superdetails._x -= _global.step;
_global.step+=2;
} else {
_global.step=2;
}
if(_root._x>0) {
_root._x = 0;
buttondebug._x = _global.margen_buttondebug;
buttonreload._x = _global.margen_buttonreload;
buttonhelp._x = _global.margen_buttonhelp;
claveinput._x = _global.margen_claveinput;
infotext1._x = _global.margen_infotext1;
_level0.statusbar._x = _global.margen_statusbar;
optionselected._x = 800;
selectbox1._x = 800;
_root.option0._x = 800;
_root.option1._x = 800;
_root.option2._x = 800;
_root.option3._x = 800;
_root.option4._x = 800;
_root.codebox._x = 240;
_root.superdetails._x = 490;
_root.fondo.mihijo._x = 1;
} else if(_root._x < _global.max_scroll_left) {
_root._x = _global.max_scroll_left;
buttondebug._x = _global.margen_buttondebug + ( _global.max_scroll_left * -1);
buttonreload._x = _global.margen_buttonreload + ( _global.max_scroll_left * -1);
buttonhelp._x = _global.margen_buttonhelp + (_global.max_scroll_left * -1);
claveinput._x = _global.margen_claveinput + (_global.max_scroll_left * -1);
infotext1._x = _global.margen_infotext1 + (_global.max_scroll_left * -1);
_level0.statusbar._x = _global.margen_statusbar + (_global.max_scroll_left * -1);
optionselected._x = 800 + (_global.max_scroll_left * -1);
selectbox1._x = 800 + (_global.max_scroll_left * -1);
_root.option0._x = 800 + (_global.max_scroll_left * -1);
_root.option1._x = 800 + (_global.max_scroll_left * -1);
_root.option2._x = 800 + (_global.max_scroll_left * -1);
_root.option3._x = 800 + (_global.max_scroll_left * -1);
_root.option4._x = 800 + (_global.max_scroll_left * -1);
// for (var a=0; a<5; a++) {
// var v = eval("_root.option"+a);
// v._x = 800 + (_global.max_scroll_left * -1);
// }
_root.codebox._x = 240 + (_global.max_scroll_left * -1);
_root.superdetails._x = 490 + (_global.max_scroll_left * -1);
_root.fondo.mihijo._x = 1 + (_global.max_scroll_left * -1);
}
}
if (lastclick>0) {
if ((getTimer()-lastclick)>doubleclickduration) {
lastclick = 0;
logea ("single click "+lastclip);
var clip=lastclip;
var numeroclip = ExtraeNumeroClip(clip);
/* new_way op_actions
if (_global.authorized == true) {
envia_comando("singleclick",clip,"");
} else {
_root.codebox._visible = true;
Selection.setFocus(_root.codebox.claveform);
_root.codebox.swapDepths(_root.log);
return;
}
*/
// Un solo click
if (clip._name.substring(0, 7) != "casilla") {
if (_global.authorized == true) {
if (_root.context.length>0) {
boton_numero_con_contexto = numeroclip+"@"+context;
} else {
boton_numero_con_contexto = numeroclip;
}
if (_global.meetmemember[numeroclip]>0) {
var statusclid = eval("rectangulo"+numeroclip+".statusprint"+numeroclip);
if (_global.meetmemute[numeroclip]>0) {
logea("envio meetmemute");
envia_comando("meetmemute"+boton_numero_con_contexto+"-", _global.meetmemember[numeroclip], _global.meetmeroom[numeroclip]);
statusclid.text = "Conference "+_global.meetmeroom[numeroclip]+" muted";
_global.meetmemute[numeroclip]=0;
} else {
logea("envio meetmeunmute");
envia_comando("meetmeunmute"+boton_numero_con_contexto+"-", _global.meetmemember[numeroclip], _global.meetmeroom[numeroclip]);
statusclid.text = "Conference "+_global.meetmeroom[numeroclip];
_global.meetmemute[numeroclip]=1;
}
} else {
logea("no es meetmemember, empiezo record");
envia_comando("startmonitor",numeroclip,numeroclip);
}
} else {
// Not authorized
envia_comando("bogus", 0, 0);
logea("no esta autorizado");
}
} else {
logea("single click en led no hace nada "+clip._name);
}
}
}
};
Timers = function () {
if (_global.reconecta == 1) {
delete setInterval;
delete _global.key;
if (_global.wait5seconds>9) {
_global.wait5seconds = 0;
recarga();
} else {
_global.wait5seconds += 1;
}
return;
}
var floor = Math.floor;
for (var a in timer_type) {
var v = eval("texto"+a);
if (v != "") {
if (timer_type[a] == "UP" || timer_type[a] == "IDLE") {
// calculate values
var elapsedTime = getTimer()-inicio_timer[a];
// ALARMA TIMER
var segundos = floor( elapsedTime / 1000);
if( segundos == timeralarm[a]) {
popup_window(urlalarm[a],targetalarm[a]);
logea(segundos);
}
// hours
var elapsedHours = floor(elapsedTime/3600000);
var remaining = elapsedTime-(elapsedHours*3600000);
// minutes
var elapsedM = floor(remaining/60000);
remaining = remaining-(elapsedM*60000);
// seconds
var elapsedS = floor(remaining/1000);
if (elapsedHours<0) {
elapsedHours = Math.abs(elapsedHours);
}
if (elapsedM<0) {
elapsedM = Math.abs(elapsedM);
}
if (elapsedS<0) {
elapsedS = Math.abs(elapsedS);
}
if (elapsedHours<10) {
var hours = "0"+elapsedHours.toString();
} else {
var hours = elapsedHours.toString();
}
if (elapsedM<10) {
var minutes = "0"+elapsedM.toString();
} else {
var minutes = elapsedM.toString();
}
if (elapsedS<10) {
var seconds = "0"+elapsedS.toString();
} else {
var seconds = elapsedS.toString();
}
var statusclid = eval("rectangulo"+a+".timer"+a);
statusclid.text = hours+":"+minutes+":"+seconds;
} else if (timer_type[a] == "DOWN") {
// calculate values
var elapsedTime = inicio_timer[a]-getTimer();
if(elapsedTime < 0) {
elapsedTime=0;
}
// hours
var elapsedHours = floor(elapsedTime/3600000);
var remaining = elapsedTime-(elapsedHours*3600000);
// minutes
var elapsedM = floor(remaining/60000);
remaining = remaining-(elapsedM*60000);
// seconds
var elapsedS = floor(remaining/1000);
// output to text box
// add a 0 on the front of the numbers if the number is less than 10
if (elapsedHours<10) {
var hours = "0"+elapsedHours.toString();
} else {
var hours = elapsedHours.toString();
}
if (elapsedM<10) {
var minutes = "0"+elapsedM.toString();
} else {
var minutes = elapsedM.toString();
}
if (elapsedS<10) {
var seconds = "0"+elapsedS.toString();
} else {
var seconds = elapsedS.toString();
}
var statusclid = eval("rectangulo"+a+".timer"+a);
statusclid.text = hours+":"+minutes+":"+seconds;
}
}
}
};
setInterval(Timers, 1000);
function LocalSave(record,field,value) {
var so = Object(SharedObject.getLocal(record));
so.data[field] = value;
so.flush();
};
function LocalLoad(record,field) {
return Object(SharedObject.getLocal(record)).data[field];
};
MovieClip.prototype.changeledcolor = function(value,color1,color2,nroboton) {
this.start = 1;
this.color = 0;
var button_number = ExtraeNumeroClip(this);
_global.valorchangeledcolor[nroboton] = Number(value);
colorhex1 = color1;
colorhex2 = color2;
color1 = parseInt(color1, 16);
color2 = parseInt(color2, 16);
this.arraycolor = new Array();
this.arraycolor[0] = color1;
this.arraycolor[1] = color2;
var myColor = new Color(this);
if (value==3) {
this.onEnterFrame = function() {
this.start+=1;
myColor.setRGB(this.arraycolor[this.color]);
if(_global.enable_label_background == 1) {
_root["rectangulo"+button_number]["textobg"].background = 1;
_root["rectangulo"+button_number]["textobg"].backgroundColor = this.arraycolor[this.color];
}
if(this.start>10) {
this.color = this.color +1;
if(this.color > 1) {
this.color = 0;
}
this.start = 0;
}
};
} else if (value==0 || value==1) {
myColor.setRGB(this.arraycolor[value]);
if(_global.enable_label_background == 1) {
_root["rectangulo"+button_number]["textobg"].background = 1;
_root["rectangulo"+button_number]["textobg"].backgroundColor = this.arraycolor[value];
}
delete this.onEnterFrame ;
} else {
myColor.setRGB(_global.color[0]);
if(_global.enable_label_background == 1) {
_root["rectangulo"+button_number]["textobg"].background = 1;
_root["rectangulo"+button_number]["textobg"].backgroundColor = _global.color[0];
}
delete this.onEnterFrame ;
}
};
MovieClip.prototype.beginDrag = function(target, lock, l, t, r, b) {
if (typeof(target) == "string") {
target = eval(target);
} else if (!(target instanceof MovieClip)) {
b = r;
r = t;
t = l;
l = lock;
lock = target;
target = this;
}
if (target.dragMethod) {
target.endDrag();
}
target.dragMethod = {MM:target.onMouseMove};
ASSetPropFlags(target, "dragMethod", 1, 1);
target.addProperty("onMouseMove", arguments.callee.getMM, arguments.callee.setMM);
ASSetPropFlags(target, "onMouseMove", 3);
var constrain = (arguments.length>1);
var off_x = 0, off_y = 0;
if (!lock) {
off_x = target._parent._xmouse-target._x;
off_y = target._parent._ymouse-target._y;
}
target.dragMethod.drag = function() {
target._x = target._parent._xmouse-off_x;
target._y = target._parent._ymouse-off_y;
if (constrain) {
if (typeof(l) == "object") {
t = l.ymin;
r = l.xmax;
b = l.ymax;
l = l.xmin;
}
if (target._xr) {
target._x = r;
}
if (target._yb) {
target._y = b;
}
}
updateAfterEvent();
};
};
MovieClip.prototype.beginDrag.getMM = function() {
this.dragMethod.drag();
return this.dragMethod.MM;
};
MovieClip.prototype.beginDrag.setMM = function(f) {
this.dragMethod.MM = f;
};
MovieClip.prototype.endDrag = function(target) {
if (arguments.length) {
if (typeof(target) == "string") {
target = eval(target);
}
} else {
target = this;
}
ASSetPropFlags(target, "onMouseMove", 0, 3);
delete target.onMouseMove;
if (target.dragMethod.MM) {
target.onMouseMove = target.dragMethod.MM;
}
delete target.dragMethod;
target.startDrag();
// for _droptarget
target.stopDrag();
};
MovieClip.prototype.flip = function(value) {
this.TCG = 100;
if (value) {
this.onEnterFrame = function() {
this._yscale = this._xscale*Math.sin(this.TCG/180*Math.PI);
this.TCG += 10;
if (this._yscale == this._xscale*-1) {
this.stop();
delete this.onEnterFrame;
this._yscale = this._xscale;
}
};
} else {
delete this.onEnterFrame ;
this._yscale = this.originalScale;
}
};
MovieClip.prototype.shake = function(value) {
if (value) {
this.orgX = this._x;
this.orgY = this._y;
this.toggle = -1;
this.onEnterFrame = function() {
this.seconds = getTimer();
this.modulo = this.seconds%2000;
if (this.modulo<100) {
if (this.viejotoggle == this.toggle) {
this.toggle = this.toggle*-1;
} else {
this.viejotoggle = this.toggle;
}
}
if (this.toggle>0) {
this._x = this.orgX+Math.random()*(value*2)-value;
this._y = this.orgY+Math.random()*(value*2)-value;
this._rotation = this._rotation-Math.random()*3+Math.random()*3;
updateAfterEvent();
} else {
this._x = this.orgX;
this._y = this.orgY;
this._rotation = 0;
}
};
} else {
delete this.onEnterFrame;
this._x = this.orgX;
this._y = this.orgY;
this._rotation = 0;
}
};
function makeStatusMail(origen) {
if(_global.texto_mail[origen]!=undefined) {
_level0.statusbar.status.text = _global.texto_mail[origen];
}
}
function makeStatus(nroboton) {
if (_global.texto_tip[nroboton] == undefined) {
_global.texto_tip[nroboton] = _global.statusline;
}
_level0.statusbar.status.text = _global.texto_tip[nroboton];
}
function displaydetails(clip) {
var button_number = ExtraeNumeroClip(clip);
// _root["rectangulo"+pepe].flip(1);
// _root["resaltado"+pepe].flip(1);
if (clip._currentframe>=3) {
_root.detail._x = clip._parent._x;
// FIXME get actual screen width or canvas size and
// details windows widht to perform calculation of x asis.
if ((_root.detail._x+200)>960) {
_root.detail._x = 960-200;
}
_root.detail._y = clip._parent._y;
if ((_root.detail._y+100)>600) {
_root.detail._y = 600-100;
}
_root.detail._alpha = 90;
_root.detail._visible = true;
ind = clip._name.substring(6);
ind = ExtraeNumeroClip(clip);
if (st_originclid[ind] != undefined) {
_level0.detail.label = vr.detail_from;
_level0.detail.clid = st_originclid[ind];
} else if (st_destinationclid[ind] != undefined) {
_level0.detail.label = vr.detail_to;
_level0.detail.clid = st_destinationclid[ind];
} else {
_root.detail.label = "Status:";
_root.detail.clid = "none";
_root.detail._visible = false;
_root.superdetails.texto = _global.st_direction[ind];
_root.superdetails._visible = true;
_root.detail._visible = false;
}
if (st_duration[ind] != "") {
_root.detail.duration = st_duration[ind];
} else if (st_duration[ind] == "" && (st_originclid[ind] != "" || st_destinationclid[ind] != "")) {
_root.detail.duration = "not answered";
} else {
_root.detail.duration = "";
}
var id = eval("queuemember." + ind);
_global.superdetailstexttab2 = "";
for (var a in id) {
_global.superdetailstexttab2 += _global.queuemember[ind][a];
}
_global.superdetailstexttab1 = _global.st_direction[ind];
if (_global.superdetailstexttab1 == undefined)
{
_global.superdetailstexttab1 = vr.no_data_text;
_root.superdetails.tab1.gotoAndStop(2);
_root.superdetails.tab2.gotoAndStop(1);
_root.superdetails.texto = _global.superdetailstexttab2;
} else {
_root.superdetails.tab1.gotoAndStop(1);
_root.superdetails.tab2.gotoAndStop(2);
_root.superdetails.texto = _global.superdetailstexttab1;
}
} // end if currentframe>=3
}
function doubleClick(clip) {
// Funcion que detecta doble click y corta llamada
if (lastclick == 0) {
lastclick = getTimer();
lastclip = clip;
} else {
if(lastclip == clip) {
logea ("double click "+clip);
lastclick = 0;
if (_global.claveingresada == undefined) {
_root.codebox._visible = true;
Selection.setFocus(_root.codebox.claveform);
_root.codebox.swapDepths(_root.log);
return;
}
var numeroclip = ExtraeNumeroClip(clip);
if (defined(_global.restrict)) {
if (_global.restrict == numeroclip) {
logea("Authorized double click"+_global.restrict);
} else {
logea("Button Restriction in effect "+_global.restrict);
return;
}
}
/* op_actions new_way
if (_global.authorized == true) {
envia_comando("doubleclick",clip,"");
} else {
_root.codebox._visible = true;
Selection.setFocus(_root.codebox.claveform);
_root.codebox.swapDepths(_root.log);
return;
}
*/
/* old_way */
if (clip._name.substring(0, 7) == "casilla") {
envia_comando("cortar",clip,"");
} else if (clip._name.substring(0,9)=="sobrecito") {
envia_comando("voicemail",clip,"0");
} else {
displaydetails(clip);
}
/* end */
}
}
}
function dragStop(clip, x, y) {
clip_arrastrado = undefined;
clip._parent.swapDepths("_level0.tele"+masalto);
// clip.stopDrag();
clip.endDrag();
clip._x = x;
clip._y = y;
var destino = "";
var origen = "";
var origencompleto = "";
//var origen = "" + eval(clip._name);
//origen = origen.substring(12);
origen = ExtraeNumeroClip(clip);
var columna = int((_xmouse+ancho_boton+separacion)/(ancho_boton+separacion));
var fila = int((_ymouse-30-separacion)/(alto_boton+separacion))+1;
if (columna<1) {
columna = 0;
}
if (columna>cuantas_columnas) {
columna = 0;
}
if (fila>cuantas_filas) {
fila = 0;
}
if (fila<1) {
fila = 0;
}
if(columna>0 && fila>0) {
destino = ((columna*cuantas_filas)-cuantas_filas)+fila;
}
logea("droptarget "+clip._droptarget+" clip "+clip);
logea("sobrehit "+_global.sobrehit);
/* USANDO DROPTARGET
for (s=1; s"9") {
} else {
destino = destino+""+c;
}
}
*/
clip._x = x;
clip._y = y;
flechita_frame = _root["rectangulo"+origen]["flecha"+origen]._currentframe;
if(timer_type[origen]=="UP"||timer_type[origen]=="DOWN")
{
f_origen = 0;
} else {
f_origen = 1;
}
if(timer_type[destino]=="UP"||timer_type[destino]=="DOWN")
{
f_destino = 0;
} else {
f_destino = 1;
}
// f_origen = timer_type[origen];
// f_destino = timer_type[destino];
var extraclid = Trim(infotext1.clid_text.text);
if (extraclid == undefined) {
extraclid = "";
}
logea("f_origen "+f_origen+" f_destino "+f_destino);
logea("origen "+origen+" destino "+destino);
var done=0;
if (_global.sobrehit != undefined) {
var sobrecito = eval("rectangulo"+destino+".sobrecito"+destino);
if(sobrecito._visible == true) {
logea("como esta sobrecito: "+sobrecito._visible);
destino = ExtraeNumeroClip(_global.sobrehit);
logea("transfiero "+origen+" a destino voicemail "+destino);
logea("_global.sobrehit = "+_global.sobrehit);
envia_comando("tovoicemail", origen, destino);
done = 1;
}
}
//NICOX
if (_global.flechahit != undefined) {
var sobrecito = eval("rectangulo"+destino+".flecha"+destino);
if(sobrecito._visible == true) {
logea("como esta sobrecito: "+flecha._visible);
destino = ExtraeNumeroClip(_global.flechahit);
logea("transfiero "+origen+" a destino voicemail "+destino);
logea("_global.flechahit = "+_global.flechahit);
envia_comando("tospy", origen, destino);
done = 1;
}
}
if (destino!="" && origen!=destino && done!=1) {
if (f_origen==1 && f_destino==0) {
// tranferencia 3 way a meetme
logea("Attempt to conference "+origen+" with "+destino);
envia_comando("conference", origen, destino);
} else if ((f_origen==0 || flechita_frame == 1 || f_origen==-1) && (f_destino==1 || f_destino == 0)) {
// transferencia normal
logea("Attempt to transfer "+origen+" to "+destino);
if (extraclid != "" && extraclid != "undefined") {
extraclid = only_allowed_chars(extraclid);
var comando = "ctransferir-"+extraclid+"-";
infotext1.clidvalue = "";
} else {
var comando = "transferir";
}
if(_global.timeout_value>0) {
comando= comando+"+"+_global.timeout_value+"+";
logea("transfiero con timeout "+_global.timeout_value);
}
logea("comando "+comando);
envia_comando(comando, origen, destino);
} else {
// originar llamado
logea("Attempt to origin call from "+origen+" to "+destino);
logea("f_origen "+f_origen+" f_destino "+f_destino);
logea("timeout "+_global.timeout_value);
logea("extraclid "+extraclid);
if (extraclid != "" && extraclid != "undefined") {
extraclid = only_allowed_chars(extraclid);
var comando = "coriginate-"+extraclid+"-";
infotext1.clid_text.text = "";
} else {
var comando = "originate";
}
if(_global.timeout_value > 0) {
comando= comando+"+"+_global.timeout_value+"+";
logea("origino con timeout "+_global.timeout_value);
}
envia_comando(comando, origen, destino);
}
} else {
logea("drag to itself or single click");
}
}
function only_allowed_chars(str) {
allowed = "-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789)(,";
var temp = new String("");
for (a=0; a"9") {
} else {
destino = destino+""+c;
}
if (c == ".") {
destino = "";
}
}
return destino;
}
function dragClip(clip) {
clip_arrastrado = clip;
var numeroclip = ""+eval(clip._name);
numeroclip = numeroclip.substring(12);
startX = clip._x;
startY = clip._y;
clip._parent.swapDepths("_level0.tele"+masalto);
clip.beginDrag(true);
clip.onRelease = function() {
dragStop(clip, startX, startY);
};
clip.onReleaseOutside = function() {
dragStop(clip, startX, startY);
};
}
envia_comando = function (comando, origen, destino) {
if (comando != "bogus" && comando != "contexto" && comando != "restrict") {
if (_global.restrict!=0) {
if(comando == "cortar") {
origen_number = ExtraeNumeroClip(origen);
} else {
origen_number = origen;
}
logea("Origen "+origen_number);
logea("Destino "+destino);
logea("Restrict "+_global.restrict);
if(_global.restrict != undefined) {
if (_global.restrict == origen_number || _global.restrict == destino ) {
logea("Authorized envia_comando");
} else {
logea("Button restriction in effect envia_comando "+_global.restrict);
return;
}
} else {
// logea("global_restrict not defined?");
}
}
}
message = new XML();
message_data = message.createElement("msg");
if (_root.context.length>0) {
agrega_contexto = "@"+context;
}
if (agrega_contexto == undefined) {
agrega_contexto = "";
}
if (_level0.claveinput.secret == undefined) {
_level0.claveinput.secret = "";
}
if (_global.claveingresada == undefined && ( comando != "contexto" && comando != "bogus" && comando != "dial" && comando != "restrict")) {
_root.codebox._visible = true;
Selection.setFocus(_root.codebox.claveform);
_root.codebox.swapDepths(_root.log);
return;
}
// var clave=_level0.claveinput.secret+_global.key;
var clave = _global.claveingresada+_global.key;
var md5clave = "";
var md5clave = calcMD5(clave);
if (comando == "contexto" || comando == "restrict") {
md5clave = "";
}
message_data.attributes.data = origen+agrega_contexto+"|"+comando+destino+"|"+md5clave;
message.appendChild(message_data);
_global.sock.send(message);
var clave = "";
};
function LTrim(str) {
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(0)) != -1) {
var j = 0, i = s.length;
while (j=0 && whitespace.indexOf(s.charAt(i)) != -1) {
i--;
}
s = s.substring(0, i+1);
}
return s;
}
function Trim(str) {
return RTrim(LTrim(str));
}
function setDND(obj, item) {
var nroboton = ExtraeNumeroClip(obj);
logea(item.caption+" for button "+nroboton);
envia_comando("dnd", nroboton, nroboton);
}
function genera_selecttimeout() {
_global.positionselect = 0;
test = attachMovie("option","optionselected", getNextHighestDepth(), {_x:800, _y:6});
test._visible = true;
test.legend = "No timeout";
test.onPress = function() {
_root.despliega_select();
};
for (a=0; a<5; a++) {
var b=a+1;
if (_global.opcionesTimeout[a] != undefined) {
testa = attachMovie("option","option"+a, getNextHighestDepth(), {_x:800, _y:(b*22)+6});
testa.legend = _global.opcionesTimeout[a];
testa._visible = false;
testa.onRollOver = function() {
this.legend = "* "+this.legend;
};
testa.onRollOut = function() {
this.legend = this.legend.substring(2, this.legend.length);
};
testa.onPress = function() {
this.legend = this.legend.substring(2, this.legend.length);
var posicion = ExtraeNumeroClip(this);
_global.timeout_value = _global.opcionesTimeoutSecs[posicion];
_root.logea("timeout "+_global.timeout_value);
_root.muestra_selecttimeout(0);
_root.selectbox1.gotoAndStop(1);
_root.optionselected._visible=true;
_root.optionselected.legend = this.legend;
};
}
}
};
function muestra_selecttimeout(value) {
for (a=0; a<5; a++) {
var v = eval("_root.option"+a);
if(value) {
v._visible = true;
} else {
v._visible = false;
}
}
};
function despliega_select() {
_root.optionselected._visible=false;
_root.selectbox1.gotoAndStop(2);
_root.muestra_selecttimeout(1);
};
function base64_decode(opString) {
if ( opString == undefined ) {
return;
}
var str = opString;
var base64s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var bits, bit1, bit2, bit3, bit4, i = 0;
var decOut = "";
for (i=0; i> 16, (bits & 0xff00) >> 8, bits & 0xff);
}
if (str.charCodeAt(i-2) == 61) {
return decOut.substring(0, decOut.length-2);
} else if (str.charCodeAt(i-1) == 61) {
return decOut.substring(0, decOut.length-1);
} else {
return decOut.substring(0, decOut.length);
}
};
// MD5 ROUTINE
/*
* Convert a 32-bit number to a hex string with ls-byte first
*/
var hex_chr = "0123456789abcdef";
//
// somehow the expression (bitAND(b, c) | bitAND((~b), d)) didn't return coorect results on Mac
// for:
// b&c = a8a20450, ((~b)&d) = 0101c88b, (bitAND(b, c) | bitAND((~b), d)) = a8a20450 <-- !!!
// looks like the OR is not executed at all.
//
// let's try to trick the P-code compiler into working with us... Prayer beads are GO!
//
function bitOR(a, b) {
var lsb = (a & 0x1) | (b & 0x1);
var msb31 = (a >>> 1) | (b >>> 1);
return (msb31 << 1) | lsb;
}
//
// will bitXOR be the only one working...?
// Nope. XOR fails too if values with bit31 set are XORed.
//
// Note however that OR (and AND and XOR?!) works alright for the statement
// (msb31 << 1) | lsb
// even if the result of the left-shift operation has bit 31 set.
// So there might be an extra condition here (Guessmode turned on):
// Mac Flash fails (OR, AND and XOR) if either one of the input operands has bit31 set
// *and* both operands have one or more bits both set to 1. In other words: when both
// input bit-patterns 'overlap'.
// Stuff to munch on for the MM guys, I guess...
//
function bitXOR(a, b) {
var lsb = (a & 0x1) ^ (b & 0x1);
var msb31 = (a >>> 1) ^ (b >>> 1);
return (msb31 << 1) | lsb;
}
//
// bitwise AND for 32-bit integers. This uses 31 + 1-bit operations internally
// to work around bug in some AS interpreters. (Mac Flash!)
//
function bitAND(a, b) {
var lsb = (a & 0x1) & (b & 0x1);
var msb31 = (a >>> 1) & (b >>> 1);
return (msb31 << 1) | lsb;
// return (a & b);
}
//
// Add integers, wrapping at 2^32. This uses 16-bit operations internally
// to work around bugs in some AS interpreters. (Mac Flash!)
//
function addme(x, y) {
var lsw = (x & 0xFFFF)+(y & 0xFFFF);
var msw = (x >> 16)+(y >> 16)+(lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
function rhex(num) {
str = "";
for (j=0; j<=3; j++) {
str += hex_chr.charAt((num >> (j*8+4)) & 0x0F)+hex_chr.charAt((num >> (j*8)) & 0x0F);
}
return str;
}
/*
* Convert a string to a sequence of 16-word blocks, stored as an array.
* Append padding bits and the length, as described in the MD5 standard.
*/
function str2blks_MD5(str) {
nblk = ((str.length+8) >> 6)+1;
// 1 + (len + 8)/64
blks = new Array(nblk*16);
for (i=0; i> 2] |= str.charCodeAt(i) << (((str.length*8+i)%4)*8);
}
blks[i >> 2] |= 0x80 << (((str.length*8+i)%4)*8);
var l = str.length*8;
blks[nblk*16-2] = (l & 0xFF);
blks[nblk*16-2] |= ((l >>> 8) & 0xFF) << 8;
blks[nblk*16-2] |= ((l >>> 16) & 0xFF) << 16;
blks[nblk*16-2] |= ((l >>> 24) & 0xFF) << 24;
return blks;
}
/*
* Bitwise rotate a 32-bit number to the left
*/
function rol(num, cnt) {
return (num << cnt) | (num >>> (32-cnt));
}
/*
* These functions implement the basic operation for each round of the
* algorithm.
*/
function cmn(q, a, b, x, s, t) {
return addme(rol((addme(addme(a, q), addme(x, t))), s), b);
}
function ff(a, b, c, d, x, s, t) {
return cmn(bitOR(bitAND(b, c), bitAND((~b), d)), a, b, x, s, t);
}
function gg(a, b, c, d, x, s, t) {
return cmn(bitOR(bitAND(b, d), bitAND(c, (~d))), a, b, x, s, t);
}
function hh(a, b, c, d, x, s, t) {
return cmn(bitXOR(bitXOR(b, c), d), a, b, x, s, t);
}
function ii(a, b, c, d, x, s, t) {
return cmn(bitXOR(c, bitOR(b, (~d))), a, b, x, s, t);
}
/*
* Take a string and return the hex representation of its MD5.
*/
function calcMD5(str) {
x = str2blks_MD5(str);
a = 1732584193;
b = -271733879;
c = -1732584194;
d = 271733878;
var step;
for (i=0; i=ls) {
break;
}
var pepe=s.charAt(is);
if (c2b[s.charAt(is)] == null) {
b[is] = 0xF7;
} else {
b[is] = c2b[s.charAt(is)];
}
is++;
}
return b;
}
function bytes2str(b) {
var ib = 0;
var lb = b.length;
var s = '';
while (1) {
if (ib>=lb) {
break;
}
if (b2c[0xFF & b[ib]]!=undefined) {
s += b2c[0xFF & b[ib]];
}
ib++;
}
return s;
}
function ascii2bytes(a) {
var ia = -1;
var la = a.length;
var ib = 0;
var b = new Array();
var carry;
while (1) {
// reads 4 chars and produces 3 bytes
while (1) {
ia++;
if (ia>=la) {
return b;
}
if (a2b[a.charAt(ia)] != null) {
break;
}
}
b[ib] = a2b[a.charAt(ia)] << 2;
while (1) {
ia++;
if (ia>=la) {
return b;
}
if (a2b[a.charAt(ia)] != null) {
break;
}
}
carry = a2b[a.charAt(ia)];
b[ib] |= carry >>> 4;
ib++;
carry = 0xF & carry;
if (carry == 0 && ia == (la-1)) {
return b;
}
b[ib] = carry << 4;
while (1) {
ia++;
if (ia>=la) {
return b;
}
if (a2b[a.charAt(ia)] != null) {
break;
}
}
carry = a2b[a.charAt(ia)];
b[ib] |= carry >>> 2;
ib++;
carry = 3 & carry;
if (carry == 0 && ia == (la-1)) {
return b;
}
b[ib] = carry << 6;
while (1) {
ia++;
if (ia>=la) {
return b;
}
if (a2b[a.charAt(ia)] != null) {
break;
}
}
b[ib] |= a2b[a.charAt(ia)];
ib++;
}
return b;
}
function bytes2ascii(b) {
var ib = 0;
var lb = b.length;
var s = '';
var b1;
var b2;
var b3;
var carry;
while (1) {
// reads 3 bytes and produces 4 chars
if (ib>=lb) {
break;
}
b1 = 0xFF & b[ib];
s += b2a[63 & (b1 >>> 2)];
carry = 3 & b1;
ib++;
if (ib>=lb) {
s += b2a[carry << 4];
break;
}
b2 = 0xFF & b[ib];
s += b2a[(0xF0 & (carry << 4)) | (b2 >>> 4)];
carry = 0xF & b2;
ib++;
if (ib>=lb) {
s += b2a[carry << 2];
break;
}
b3 = 0xFF & b[ib];
s += b2a[(60 & (carry << 2)) | (b3 >>> 6)]+b2a[63 & b3];
ib++;
if (ib%36 == 0) {
s += "\n";
}
}
return s;
}
function bytes2blocks(bytes) {
var blocks = new Array();
var ibl = 0;
var iby = 0;
var nby = bytes.length;
while (1) {
blocks[ibl] = (0xFF & bytes[iby]) << 24;
iby++;
if (iby>=nby) {
break;
}
blocks[ibl] |= (0xFF & bytes[iby]) << 16;
iby++;
if (iby>=nby) {
break;
}
blocks[ibl] |= (0xFF & bytes[iby]) << 8;
iby++;
if (iby>=nby) {
break;
}
blocks[ibl] |= 0xFF & bytes[iby];
iby++;
if (iby>=nby) {
break;
}
ibl++;
}
return blocks;
}
function blocks2bytes(blocks) {
var bytes = new Array();
var iby = 0;
var ibl = 0;
var nbl = blocks.length;
while (1) {
if (ibl>=nbl) {
break;
}
bytes[iby] = 0xFF & (blocks[ibl] >>> 24);
iby++;
bytes[iby] = 0xFF & (blocks[ibl] >>> 16);
iby++;
bytes[iby] = 0xFF & (blocks[ibl] >>> 8);
iby++;
bytes[iby] = 0xFF & blocks[ibl];
iby++;
ibl++;
}
return bytes;
}
function digest_pad(bytearray) {
var newarray = new Array();
var ina = 0;
var iba = 0;
var nba = bytearray.length;
var npads = 15-(nba%16);
newarray[ina] = npads;
ina++;
while (iba0) {
newarray[ina] = 0;
ina++;
ip--;
}
return newarray;
}
function pad(bytearray) {
var newarray = new Array();
var ina = 0;
var iba = 0;
var nba = bytearray.length;
var npads = 7-(nba%8);
newarray[ina] = (0xF8 & rand_byte()) | (7 & npads);
ina++;
while (iba0) {
newarray[ina] = rand_byte();
ina++;
ip--;
}
return newarray;
}
function rand_byte() {
return Math.floor(256*Math.random());
if (!rand_byte_already_called) {
var now = new Date();
seed = now.milliseconds;
rand_byte_already_called = true;
}
seed = (1029*seed+221591)%1048576;
return Math.floor(seed/4096);
}
function unpad(bytearray) {
var iba = 0;
var newarray = new Array();
var ina = 0;
var npads = 0x7 & bytearray[iba];
iba++;
var nba = bytearray.length-npads;
while (iba=nbl) {
break;
}
v0[0] = blocks[ibl];
ibl++;
v0[1] = blocks[ibl];
ibl++;
v1[0] = blocks[ibl];
ibl++;
v1[1] = blocks[ibl];
ibl++;
c0 = tea_code(xor_blocks(v0, c0), key);
c1 = tea_code(xor_blocks(v1, c1), key);
swap = c0[0];
c0[0] = c0[1];
c0[1] = c1[0];
c1[0] = c1[1];
c1[1] = swap;
}
var concat = new Array();
concat[0] = c0[0];
concat[1] = c0[1];
concat[2] = c1[0];
concat[3] = c1[1];
return concat;
}
function encrypt(str, keystr) {
var key = new Array();
key = binarydigest(keystr);
var blocks = new Array();
blocks = bytes2blocks(pad(str2bytes(str)));
var ibl = 0;
var nbl = blocks.length;
// Initial Value for CBC mode = "abcdbcde". Retain for interoperability.
var c = new Array();
c[0] = 0x61626364;
c[1] = 0x62636465;
var v = new Array();
var cblocks = new Array();
var icb = 0;
while (1) {
if (ibl>=nbl) {
break;
}
v[0] = blocks[ibl];
ibl++;
v[1] = blocks[ibl];
ibl++;
c = tea_code(xor_blocks(v, c), key);
cblocks[icb] = c[0];
icb++;
cblocks[icb] = c[1];
icb++;
}
return binary2ascii(cblocks);
}
function decrypt(ascii, keystr) {
var key = new Array();
key = binarydigest(keystr);
var cblocks = new Array();
cblocks = ascii2binary(ascii);
var icbl = 0;
var ncbl = cblocks.length;
var lastc = new Array();
lastc[0] = 0x61626364;
lastc[1] = 0x62636465;
var v = new Array();
var c = new Array();
var blocks = new Array();
var ibl = 0;
while (1) {
if (icbl>=ncbl) {
break;
}
c[0] = cblocks[icbl];
icbl++;
c[1] = cblocks[icbl];
icbl++;
v = xor_blocks(lastc, tea_decode(c, key));
blocks[ibl] = v[0];
ibl++;
blocks[ibl] = v[1];
ibl++;
lastc[0] = c[0];
lastc[1] = c[1];
}
return bytes2str(unpad(blocks2bytes(blocks)));
}
function xor_blocks(blk1, blk2) {
var blk = new Array();
blk[0] = blk1[0] ^ blk2[0];
blk[1] = blk1[1] ^ blk2[1];
return blk;
}
function tea_code(v, k) {
var v0 = v[0];
var v1 = v[1];
var k0 = k[0];
var k1 = k[1];
var k2 = k[2];
var k3 = k[3];
var sum = 0;
var n = 32;
while (n-->0) {
sum -= 1640531527;
// TEA magic number 0x9e3779b9
sum = sum | 0;
v0 += ((v1 << 4)+k0) ^ (v1+sum) ^ ((v1 >>> 5)+k1);
v1 += ((v0 << 4)+k2) ^ (v0+sum) ^ ((v0 >>> 5)+k3);
}
var w = new Array();
w[0] = v0 | 0;
w[1] = v1 | 0;
return w;
}
function tea_decode(v, k) {
var v0 = v[0];
var v1 = v[1];
var k0 = k[0];
var k1 = k[1];
var k2 = k[2];
var k3 = k[3];
var sum = 0;
var n = 32;
sum = -957401312;
while (n-->0) {
v1 -= ((v0 << 4)+k2) ^ (v0+sum) ^ ((v0 >>> 5)+k3);
v0 -= ((v1 << 4)+k0) ^ (v1+sum) ^ ((v1 >>> 5)+k1);
sum += 1640531527;
sum = sum | 0;
}
var w = new Array();
w[0] = v0 | 0;
w[1] = v1 | 0;
return w;
}
Key.addListener(Key);
Key.onKeyDown = function(){
var incremento = 1;
var tecla = Key.getCode();
if(tecla == 16) {
_global.shift = 1;
}
if(tecla == 40) // DOWN
{
// Select next button DOWN
myapaga = eval('_root.resaltado'+_global.rectanguloprendido);
dif1 = (_global.rectanguloprendido) % _root.cuantas_filas;
incremento = 1;
if(dif1 == 0) {
// It changed the column, increment it again
incremento = incremento - _root.cuantas_filas;
}
proximo = _global.rectanguloprendido + incremento;
var myresa = eval('_root.resaltado'+proximo);
if(_global.rectanguloprendido != _global.restrict) {
myapaga._visible = false;
}
myresa._visible = true;
_global.rectanguloprendido = proximo;
_root.makeStatus(proximo);
}
if(tecla == 38) // UP
{
// Select next button UP
myapaga = eval('_root.resaltado'+_global.rectanguloprendido);
dif1 = (_global.rectanguloprendido-1) % _root.cuantas_filas;
incremento = -1;
if(dif1 == 0) {
// It changed the column, increment it again
incremento = incremento + _root.cuantas_filas;
}
proximo = _global.rectanguloprendido + incremento;
var myresa = eval('_root.resaltado'+proximo);
if(_global.rectanguloprendido != _global.restrict) {
myapaga._visible = false;
}
myresa._visible = true;
_global.rectanguloprendido = proximo;
_root.makeStatus(proximo);
}
if(tecla == 37) // LEFT
{
if (_root.superdetails._visible == true) {
var tab = _root.superdetails.tab1._currentframe;
if(tab == 2) {
_root.superdetails.tab1.gotoAndStop(1);
_root.superdetails.tab2.gotoAndStop(2);
_root.superdetails.texto = _global.superdetailstexttab1;
} else {
_root.superdetails.tab1.gotoAndStop(2);
_root.superdetails.tab2.gotoAndStop(1);
_root.superdetails.texto = _global.superdetailstexttab2;
}
} else {
// Select next button on the LEFT
myapaga = eval('_root.resaltado'+_global.rectanguloprendido);
incremento = _root.cuantas_filas;
diferencia = _global.rectanguloprendido % _root.cuantas_filas;
proximo = _global.rectanguloprendido - incremento;
if(proximo < 1) {
proximo = ((_root.cuantas_columnas - 1) * _root.cuantas_filas)+diferencia;
}
var myresa = eval('_root.resaltado'+proximo);
if(_global.rectanguloprendido != _global.restrict) {
myapaga._visible = false;
}
myresa._visible = true;
_global.rectanguloprendido = proximo;
_root.makeStatus(proximo);
}
}
if(tecla == 39) // RIGHT
{
if(_root.detail._visible == true) {
_root.superdetails._visible = true;
_root.detail._visible = false;
} else if (_root.superdetails._visible == true) {
var tab = _root.superdetails.tab1._currentframe;
if(tab == 2) {
_root.superdetails.tab1.gotoAndStop(1);
_root.superdetails.tab2.gotoAndStop(2);
_root.superdetails.texto = _global.superdetailstexttab1;
} else {
_root.superdetails.tab1.gotoAndStop(2);
_root.superdetails.tab2.gotoAndStop(1);
_root.superdetails.texto = _global.superdetailstexttab2;
}
} else {
// Select next button on the RIGHT
myapaga = eval('_root.resaltado'+_global.rectanguloprendido);
total = _root.cuantas_filas * _root.cuantas_columnas;
incremento = _root.cuantas_filas;
diferencia = _global.rectanguloprendido % _root.cuantas_filas;
proximo = _global.rectanguloprendido + incremento;
if(proximo > total) {
proximo = 1+diferencia-1;
}
var myresa = eval('_root.resaltado'+proximo);
if(_global.rectanguloprendido != _global.restrict) {
myapaga._visible = false;
}
myresa._visible = true;
_global.rectanguloprendido = proximo;
_root.makeStatus(proximo);
}
}
if(tecla == 9) // TAB
{
myapaga = eval('_root.resaltado'+_global.rectanguloprendido);
total = _root.cuantas_filas * _root.cuantas_columnas;
if(_global.shift == 1) {
incremento = -1;
} else {
incremento = 1;
}
proximo = _global.rectanguloprendido + incremento;
if(proximo > total) {
proximo = 1;
}
if(proximo < 1) {
proximo = total;
}
var myresa = eval('_root.resaltado'+proximo);
if(_global.rectanguloprendido == _global.restrict) {
myapaga._visible = false;
}
myresa._visible = true;
_global.rectanguloprendido = proximo;
_root.makeStatus(proximo);
}
if(tecla == 27) // ESC
{
_root.codebox._visible = false;
_root.log._visible = false;
_root.detail._visible = false;
_root.superdetails._visible = false;
}
if(tecla == 18) // ALT
{
var myon = _global.rectanguloprendido;
if(myon>0) {
var myclip = eval('_level0.rectangulo'+myon+'.flecha'+myon);
_root.displaydetails(myclip);
}
}
if(tecla == 13) // ENTER
{
if(_root.codebox._visible == true) {
// The security code box is visible, sends code and hides it
_global.claveingresada = _root.codebox.claveform.text;
_root.codebox._visible = false;
_root.envia_comando('bogus', 0, 0);
} else {
// The security code is not visible, open detail windows of
// highlighted button
var myon = _global.rectanguloprendido;
if(myon>0) {
var myclip = eval('_level0.rectangulo'+myon+'.flecha'+myon);
_root.displaydetails(myclip);
}
}
}
};
Key.onKeyUp = function(){
var tecla = Key.getCode();
if(tecla == 16) {
_global.shift = 0;
}
};
// loadMovieNum("icono1.swf",1);
Inicia_Variables();
dibuja();
Detiene_Peliculas();
conecta();
EndOfActionScript
# Saves the movie
$movie->nextFrame();
$movie->save("operator_panel.swf",9);
op_panel-0.30/op_lang_gl.cfg 0000644 0001750 0001750 00000002037 11217744022 015673 0 ustar alerios alerios ; Language configuration file
; Contributed by Roberto Salgado
dialing=A marcar
calling=A chamar a $1
incoming=A recibir chamada de $1
parked=Aparcado en $1
registered=Rexistrado
notregistered=Non rexistrado
reachable =Alcanzable $1
unreachable=Non alcanzable $1
lagged=Demorado $1
newold=Novos $1, Vellos $2
waitingonqueue=$1 usuario$2 a espera
memberonconference=$1 participante$2
version_mismatch=Versión incorrecta entre Cliente e Servidor!
; client side
clid_label=CLID
detail_title=Detalles último chamado
detail_from=De:
detail_to=A:
detail_duration=Duración:
security_code_title=Ingrese o código de seguridade
btn_security_text=Abre fiestra de ingreso de código
btn_restart_text=Reinicia Asterisk
btn_reload_text=Recarga a configuración
btn_debug_text=Abre/Pecha fiestra de Debug
btn_help_text=Abre axuda
tab_call_text=Chamada
tab_queue_text=Cola
calls_taken_text=Chamados atendidos
no_data_text=Non hai datos
debug_window_title=Fiestra de Debug
idle=Inactivo
paused=Pausa
channels=$1 chamada$2 en curso
op_panel-0.30/op_lang_ca.cfg 0000644 0001750 0001750 00000001710 11217744022 015651 0 ustar alerios alerios ; Language configuration file
dialing=Marcant
calling=Trucant a $1
incoming=Rebent una trucada de $1
parked=Aparcat a $1
registered=Registrat
notregistered=No registrat
reachable =Assolible $1
unreachable=No assolible $1
lagged=Enderrarit $1
newold=Nous $1, Vells $2
waitingonqueue=$1 usuari$2 a l'espera
memberonconference=$1 participant$2
version_mismatch=Versio incorrecte entre Client i Servidor!
; client side
clid_label=CLID
detail_title=Detalls ultima trucada
detail_from=De:
detail_to=Per:
detail_duration=Duracio:
security_code_title=Introdueixi el codi de seguretat
btn_security_text=Obrir finestra d'ingres de codi
btn_restart_text=Reinicia Asterisk
btn_reload_text=Recarrega la configuracio
btn_debug_text=Obrir/Tancar finestra de Debug
btn_help_text=Obrir ajuda
tab_call_text=Trucada
tab_queue_text=Cua
calls_taken_text=Trucades ateses
no_data_text=No hi ha dades
debug_window_title=Finestra de Debug
paused=Paused
idle=Idle
channels=$1 channel$2 in use
op_panel-0.30/op_lang_ru.cfg 0000644 0001750 0001750 00000002511 11217744022 015714 0 ustar alerios alerios ; Language configuration file
dialing=Идёт набор
calling=Набор $1
incoming=Входящий звонок от $1
parked=Паркован на $1
registered=Зарегистрирован
notregistered=Не зарегистрирован
reachable=Доступен $1
unreachable=Не доступен $1
lagged=Зависание $1
newold=Новый $1, Старый $2
waitingonqueue=$1 пользователь$2 ожидает
memberonconference=$1 участник$2
version_mismatch=Несоответствие версий клиента и сервера!
; client side
clid_label=Инфо
detail_title=Подробности последнего звонка
detail_from=От:
detail_to=К:
detail_duration=Длительность:
security_code_title=Пожалуйста введите код безопасности
btn_security_text=Открыть поле ввода кода безопасности
btn_restart_text=Перезапустить Asterisk
btn_reload_text=Перезагрузить конфигурацию
btn_debug_text=Открыть/Закрыть Окно Отладки
btn_help_text=Открыть окно помощи
tab_call_text=Звонок
tab_queue_text=Очередь
calls_taken_text=Принято звонков
no_data_text=Нет данных
debug_window_title=Окно Отладки
op_panel-0.30/CHANGES 0000644 0001750 0001750 00000107130 11217744023 014105 0 ustar alerios alerios Version .29
2008-05-29 13:26 +0000 [r77] root :
* trunk/op_server.pl, trunk/ming-source/operator_panel.pl: Fix -
prefix in extension when using wildcard server
2008-05-14 11:39 +0000 [r76] root :
* trunk/op_server.pl: Remove some debug print lines
2008-05-07 18:52 +0000 [r75] root :
* trunk/op_server.pl: Add new event for dhtml client
2008-05-06 14:19 +0000 [r74] root :
* trunk/op_buttons.cfg: Fix regexp sample in op_buttons.cfg
2008-04-10 19:44 +0000 [r73] root :
* trunk/op_server.pl: Serve policy file from server to make new
flash clients happy. Also formatting fixes using perltidy and
line lenght of 140
Version .28
2008-03-30 [r70]
* Remove dhtmltooltip and replace with wz_tooltip
2008-02-19 [r69]
* Add sample crossdomain.xml file needed by some flash players
2008-01-28 [r68]
* New langague added 'gallego'
2007-12-04 [r67]
* Fix reverse transfer for park
2007-11-29 [r66]
* Add extra event for meetmejoin because sometimes there are no
newexten events when redirecting to meetme in attendant transfers
2007-11-29 [r65]
* Add support for channel in voicemailext, so you can use it to
launch a macro via local when double clicking on the mailbox icon
2007-11-29 [r64]
* Add parkexten and parktimeout to op_server.cfg and support for
Park command via manager together with updates for Asterisk 1.4
compatibility.
2007-11-29 [r63]
* Make it work with asterisk 1.4 originateresponse change (for
attendant transfers)
2007-11-23 [r62]
* add SpyExt command and drop action to arrow
2007-11-07 [r61]
* Honour label_extent when renaming label
2007-08-13 [r60]
* Fix 'waiting on queue' for normal buttons and some formatting
fixes
2007-08-06 [r59]
* Fix clidtext for queue summary buttons
2007-08-06 [r58]
* Add support for QUEUE_PRIO for queue join events
2007-08-06 [r57]
* Fix for groupcount and timers
2007-08-06 [r56]
* Fix timer issue
2007-08-02 [r55]
* Remove delay in syswrite because it makes asterisk 1.2.7 unhappy
2007-08-02 [r54]
* Example new buttons config for groupcount
2007-08-02 [r53]
* Ooops! Format clid fixed
2007-08-02 [r52]
* Ooops! Set version to 0.30
2007-08-02 [r51]
* no_label_counter in op_buttons.cfg (prevents counting on multiple
position labels). Fixes on groupcount. Added count to
op_buttons.cfg to set number of sessions for group_count buttons
2007-07-17 [r50]
* Fix restrict for panel_context
2007-07-17 [r49]
* Fix flash client for multiple passvars values
2007-06-29 [r48]
* Added optional amportal.conf parsing
2007-06-28 [r47]
* Added date variables replacement for monitor_filename (%Y %m %d
%h %i %s)
2007-06-21 [r46]
* Add Monitoring to FOP actions by single clicking on the arrow
2007-06-15 [r45]
* Add 1ms delay to syswrite, it makes some asterisk versions
happier
2007-05-30 [r44]
* Add include support to op_server.cfg
2007-05-14 [r43]
* Add passvars parameter to op_server.cfg to pass extra values to
popups
2007-05-14 [r42]
* Support for patched valetparking
2007-04-30 [r41]
* Fix for regexp buttons when coupled with Local channels
2007-04-27 [r40]
* Remove AsyncGoto from channel name so parking with zap works
better.
2007-04-27 [r39]
* More split optimizations
2007-04-27 [r37-38]
* Proper debug instead of print
* Slight change to redhat init script in preparation of .spec
2007-04-26 [r36]
* Russian language files. Thanks Eugene Malikov.
2007-04-26 [r35]
* recompute_queues optimizations and some perl tidyup
2007-04-26 [r34]
* More regexp optimizations and debugs
2007-04-26 [r33]
* Remove unused vars and optimize erase_instances_for_trunk_buttons
2007-04-26 [r32]
* Remove more unused vars
2007-04-26 [r31]
* Remove unused var and optimize some regexps
2007-04-24 [r30]
* Fix split contexto order. Replace nada with undef. Fix
recompute_queues states
2007-04-23 [r29]
* Improve and optimize perl splits. Use warnings pragma instead of
-w.
2007-04-19 [r28]
* Change nonblocking perl perl code (LINworks GmbH)
2007-04-19 [r27]
* Improve perl code (LINworks GmbH)
2007-04-19 [r26]
* Improve perl code (LINworks GmbH)
2007-04-13 [r25]
* Fixed persistent clid-label for recompute queues
2007-03-23 [r23-24]
* Fix on flash client for unregistration events
* Registration caching to not flood flash clients with repited
registered events. Changed debug level for digest_event_block and
try to make some sense out of it
2007-03-23 [r22]
* Starting with digest_event_block clean ups
2007-03-23 [r21]
* Fix voicemail count (ticket #1)
2007-03-20 [r20]
* Fix Did/Trunk free routine and remove debug lines
2007-03-20 [r19]
* Fix trunk matching for CLID and DID buttons
2007-03-20 [r18]
* Add (experimental) DID buttons for matching FreePBX FROM_DID
lines
2007-03-20 [r17]
* Trunkify CLID buttons
2007-03-19 [r12]
* Make clid on busy buttons show up when 1st load instead of
permanent text
2007-03-16 [r11]
* Add onData prototype (commented) into the flash client... will
experiment to see if it is faster than standard flash XML
processing
2007-03-16 [r10]
* refactoring of digest_event_block, first pass...
2007-03-16 [r9]
* If/elseif refactoring plus fixing newexten duplication in
procesabloque
2007-03-16 [r8]
* Refactoring if-elseif, setting clid on newexten prio 1 for
showing dialed number. Changing settext to setclid
2007-03-15 [r7]
* Set svn version to op_server.pl
2007-03-15 [r6] nicolas:
* Update docs
2007-03-14 [r5]
* Update documentation. Make settext to be persistent overriding
callerid values sent by regular states. Do not default to state
up for events without state
2007-03-14 [r4]
* Reorganize svn, remove compiled flash movies from repository
2007-03-14 [r3]
* fix autosip crash after asterisk restart
Version .27
Mon Feb 26 20:33:03 ART 2007 nicolas@house.com.ar
* sample config update with alarm
Mon Feb 26 20:31:40 ART 2007 nicolas@house.com.ar
* new .swf
Mon Feb 26 20:31:05 ART 2007 nicolas@house.com.ar
* timer alarms for buttons
Mon Feb 26 19:23:48 ART 2007 nicolas@house.com.ar
* queuestatus fixes
Mon Feb 26 19:19:36 ART 2007 nicolas@house.com.ar
* multiserver mionitoring, no security code fixes, userevent updates for 1.4, doc updates
Tue Jan 23 19:09:50 ART 2007 nicolas@house.com.ar
* some callerid modifications
Tue Jan 23 17:35:10 ART 2007 nicolas@house.com.ar
* reload when asterisk reload
Fri Jan 19 16:22:12 ART 2007 nicolas@house.com.ar
* callerid name in clidformat and some documentation updates
Fri Dec 22 20:57:39 ART 2006 nicolas@house.com.ar
* Exception for mISDN sessions
Thu Dec 21 20:18:28 ART 2006 nicolas@house.com.ar
* updated CHANGES
Thu Dec 21 20:16:08 ART 2006 nicolas@house.com.ar
* restructure some if blocks, formatting fixes
Thu Dec 21 20:14:51 ART 2006 nicolas@house.com.ar
* fix big memory leak
Thu Dec 21 20:08:27 ART 2006 nicolas@house.com.ar
* updated swf back to new version
Mon Dec 11 12:23:31 ART 2006 nicolas@house.com.ar
* link fix
Mon Nov 20 11:40:40 ART 2006 nicolas@house.com.ar
* defaults to free after fopledcolor
Fri Nov 17 21:02:38 ART 2006 nicolas@house.com.ar
* update docs and binary swf
Fri Nov 17 21:00:38 ART 2006 nicolas@house.com.ar
* fix event order to give precedence to astdb fopledcolors
Fri Nov 17 21:00:04 ART 2006 nicolas@house.com.ar
* update docs on astdbkey and groupcount features
Fri Nov 17 20:58:56 ART 2006 nicolas@house.com.ar
* update ming source for flash client adding images and textexten
Fri Nov 17 20:57:07 ART 2006 nicolas@house.com.ar
* add park support to dhtml panel (thanks Jeremy)
Thu Nov 16 14:46:07 ART 2006 nicolas@house.com.ar
* add CHANGES file that was somewhat forgotten
Thu Nov 16 14:43:18 ART 2006 nicolas@house.com.ar
* Improve Autosip buttons
Tue Nov 14 14:18:57 ART 2006 nicolas@house.com.ar
* fix groupcount outbound label
Mon Nov 13 20:57:26 ART 2006 nicolas@house.com.ar
* groupcount example button
Mon Nov 13 20:47:37 ART 2006 nicolas@house.com.ar
* add norwegian lang
Mon Nov 13 20:46:29 ART 2006 nicolas@house.com.ar
* doc formatting fix
Mon Nov 13 20:46:05 ART 2006 nicolas@house.com.ar
* assorted fixes
Mon Nov 13 20:45:37 ART 2006 nicolas@house.com.ar
* groupcount button feature
Mon Nov 13 20:44:52 ART 2006 nicolas@house.com.ar
* add image primitive
Mon Nov 13 20:43:03 ART 2006 nicolas@house.com.ar
* lang updates
Mon Nov 13 20:41:47 ART 2006 nicolas@house.com.ar
* docs update
Fri Oct 20 15:46:47 ART 2006 nicolas@house.com.ar
* add images
Wed Oct 11 18:29:05 ART 2006 nicolas@house.com.ar
* config doc and style update
Wed Oct 11 18:22:26 ART 2006 nicolas@house.com.ar
* config and lang updates
Wed Oct 11 18:19:17 ART 2006 nicolas@house.com.ar
* Agent fixes
Mon Oct 9 17:37:19 ART 2006 nicolas@house.com.ar
* Fix ASTDB
Mon Oct 9 17:36:54 ART 2006 nicolas@house.com.ar
* new swf
Thu Sep 14 19:00:16 ART 2006 nicolas@house.com.ar
* clidname
Mon Aug 28 16:55:23 ART 2006 nicolas@house.com.ar
* comment config
Sat Sep 9 13:13:42 ART 2006 nicolas@house.com.ar
* Fix reverse transfer for trunk buttons
Sat Sep 9 13:13:29 ART 2006 nicolas@house.com.ar
* typo in dhtml panel
Sat Sep 9 13:12:55 ART 2006 nicolas@house.com.ar
* doc update
Mon Aug 28 16:45:20 ART 2006 nicolas@house.com.ar
* Assorted patches, show borders, paused, attendant transfers
Thu Jun 1 10:12:09 ART 2006 nicolas@house.com.ar
* auto_sip buttons entry in doc and config
Thu Jun 1 10:08:18 ART 2006 nicolas@house.com.ar
* fix warning when computing queue positions
Thu Jun 1 10:07:27 ART 2006 nicolas@house.com.ar
* add queue_object hash to keep track of agent status per queue (talking, ready, unavailable)
Thu Jun 1 10:06:02 ART 2006 nicolas@house.com.ar
* first pass at auto_sip buttons
Thu Jun 1 10:04:31 ART 2006 nicolas@house.com.ar
* fix crash on meetme transfers to voicemail
Thu Jun 1 09:59:22 ART 2006 nicolas@house.com.ar
* rename hash to better name and remove some comments for queue-agents
Thu Jun 1 09:57:16 ART 2006 nicolas@house.com.ar
* flash client optimization on debug window
Fri May 19 17:41:26 ART 2006 nicolas@house.com.ar
* tovoicemail fix and label renaming fix
Fri May 19 17:39:43 ART 2006 nicolas@house.com.ar
* queue position fix
Version .26
Tue May 9 19:24:08 ART 2006 nicolas@house.com.ar
* New dhtml client
Tue May 9 15:05:22 ART 2006 nicolas@house.com.ar
* assorted client fixes, removed scriptable actions for now,
add side scrolling when you have buttons that do not fit
on the screen.
Tue May 9 15:03:27 ART 2006 nicolas@house.com.ar
* remove scriptable actions and assorted bug fixes
Sat Apr 29 15:41:14 ART 2006 nicolas@house.com.ar
* ming client updates
Sat Apr 29 15:40:06 ART 2006 nicolas@house.com.ar
* formatting fixes. Add includes to op_style.cfg
Sat Apr 29 13:04:58 ART 2006 nicolas@house.com.ar
* set clid format on link event
Sat Apr 29 13:04:43 ART 2006 nicolas@house.com.ar
* fix auto counters when using regexp butons
Sat Apr 29 13:03:25 ART 2006 nicolas@house.com.ar
* scriptable actions, tovoicemail actions, formatting fixes
Sat Apr 29 12:58:54 ART 2006 nicolas@house.com.ar
* includes style, simplify read configs, formatting fixes, removed comments
Sat Apr 29 12:57:22 ART 2006 nicolas@house.com.ar
* log fake events
Sat Apr 29 12:52:48 ART 2006 nicolas@house.com.ar
* transfer to voicemail
Sat Apr 29 11:40:50 ART 2006 nicolas@house.com.ar
* agent status updates, paused and some formatting fixes
Sat Apr 29 11:13:04 ART 2006 nicolas@house.com.ar
* clid privacy per button
Sat Apr 29 11:02:16 ART 2006 nicolas@house.com.ar
* background jpg for buttons
Thu Mar 23 14:47:57 ART 2006 nicolas@house.com.ar
* remove duplicated code
Thu Mar 23 14:47:18 ART 2006 nicolas@house.com.ar
* suse init fixes
Thu Mar 23 14:46:39 ART 2006 nicolas@house.com.ar
* configurable dimm/alpha
Thu Mar 16 16:14:36 ART 2006 nicolas@house.com.ar
tagged 0.26
Version .25
Mon Mar 13 17:01:23 ART 2006 nicolas@house.com.ar
* documentation updates
Mon Mar 13 16:56:00 ART 2006 nicolas@house.com.ar
* queueagent optimizations
Fri Mar 10 17:33:25 ART 2006 nicolas@house.com.ar
* clean internal state when connecting to server
Fri Mar 10 17:07:09 ART 2006 nicolas@house.com.ar
* add_server_to_fake_events
We need to add the server header to fake events!
Fri Mar 10 17:06:44 ART 2006 nicolas@house.com.ar
* formatting_fixes
Fri Mar 10 17:05:03 ART 2006 nicolas@house.com.ar
* update docs
Mon Feb 27 19:40:37 ART 2006 nicolas@house.com.ar
* updated docs
Mon Feb 27 19:27:28 ART 2006 nicolas@house.com.ar
* do not send settimer for nonexistant queues
Mon Feb 27 19:25:36 ART 2006 nicolas@house.com.ar
* Clear counter when there are no calls in queue
Mon Feb 27 17:27:41 ART 2006 nicolas@house.com.ar
* restrict to channel name same as mybutton
Tue Feb 21 17:26:13 ART 2006 nicolas@house.com.ar
* fix meetme sccp
Tue Feb 21 16:09:02 ART 2006 nicolas@house.com.ar
* Catalan language
Mon Feb 20 16:10:40 ART 2006 nicolas@house.com.ar
* suse_init
Mon Feb 20 15:55:22 ART 2006 nicolas@house.com.ar
* link_buttons
Add url and target to the button definition so you can hyperlink
to anything you want from any button.
Also added the enable_label_background that sets the background
color on the labels to the led colors depeding on state.
Thu Feb 2 17:51:42 ART 2006 nicolas@house.com.ar
* listen_addr
Add listen_addr parameter to select the ip address the server will bind to
Tue Jan 31 20:49:13 ART 2006 nicolas@house.com.ar
* NewSwf
Tue Jan 31 20:47:11 ART 2006 nicolas@house.com.ar
* fontfix
Fix several font issues on the flash client
Tue Jan 31 20:41:04 ART 2006 nicolas@house.com.ar
* Remove channel from queue hash on rename.. fix for queue buttons
Tue Jan 31 20:32:40 ART 2006 nicolas@house.com.ar
* Ignore & from trunk sessions, fix TRUNK problem.
Tue Dec 27 00:33:17 ART 2005 nicolas@house.com.ar
* Fixed trunk sticky problem
- Fixed choppig the last character from op_server.cfg
when there was no end of line
- Fixed text on buttons when using crypto and the text
was empty
- Changed the mute/unmute to gray out a button when muted
- Fixed agentlogoff for channels with a hypen in the name
- New states for sccp, thanks to Laurent Mele
- New parameter to pass to operator_panel.swf: nohighligh. If set
to 1, button highlighting when mouse over will be disabled.
- New LEGEND attributes: URL, TARGET, NO_BASE64. Url for making an
hyperlink out of the legend to that url, TARGET to use that html
target when clicking the hyperlink, and NO_BASE64 to not convert
the legend to base64 (it is not useful at all)
- Drag&Drop channels into queues. Just drag an unused button into a
queue button and it will be added to that queue. If dragged again,
it will remove it from that queue.
- astmanproxy support
- Added Meetme participants buttons (they show each participant)
- Added Queue position buttons (they show each position on a queue,
with the corresponding timer and callerid)
- Added queue_hide option in op_server.cfg. If set, queue position
buttons won't be displayed if they are unused (so you only see
the actual number of people waiting on the queue)
- Fixed bugs for queue positions when reloading
- Fixed timers when reloading
.24
Sep 12 2005:
- Small bugfix, the security code is now working for everybody
- Added swedish translation
- Improved efficiency of regexp button matching
.23
Sep 9 2005:
- FOP now tries to keep track of the number of agents logged into
each queue, and displays that info in the queue detailed status box.
- Added Mask filter for manager events. The new parameter
is "event_mask" and should be written just below each server
definition. View op_server.cfg for a sample.
- Added Queue Position status. Just change your queue buttons to use
more than one position. Then, instead of having a summary button for
your queue you will have each button position occupied by the person
waiting in that same position on your queue. You can drag them as any
other button to transfer.
- Internationalization support. 'language' configuration directive
in op_server.cfg and op_lang_XX.cfg files and help_XX.html
- Support for command line parameters, start the server with --help
to see the list of supported options
- The web_hostname and port settings in op_server.cfg are now optional
If omited it will connect to the same host where the .swf resides and
port 4445
- Added restriction for mybutton to FOP_Popup userevent, just add the
(optional) Button parameter with the button position (that must be
set in the client's mybutton parameter)
UserEvent(FOP_Popup|URL: page.php?e=${EXTEN}^Target: top^Button: 1)
- Added font and shadow color parameters for button labels, text
legends, clid and timer. In op_style.cfg you have 4 optional new
parameters:
label_font_color = 000000
label_shadow_color = FFFFFF
clid_font_color = 000000
timer_font_color = 4000FF
You have to put the hex color code for each one. To change the color of
a legend use the parameter:
font_color = FF0000
- Improved debian init script. Thanks to Tzafir Cohen.
- It uses a lot less CPU than previous versions on heavy asterisk boxes
- Improved support for parking when using native sip transfers
- Minor bugfixes
.22
Jun 9 2005:
- Minor bugfixes
.21
May 29 2005:
- You can use 'transparent' as a fade_color for a button in
op_style.cfg. That button will only display its borders, with
no background color. You can use the background.jpg in creative
ways now.
- The restrict input parameter can be set to a channel name
instead of just the button possition. The restricted button
will be hightlithed.
- Added margintop and marginleft to the input parameters taken by
operator_panel.swf, to set the global margins for the swf object.
You can experiment by loading the .swf file directly like:
operator_panel.swf?margintop=20&marginleft=40
- Added voicemail_extension parameter to op_server.cfg. If set,
FOP will originate a call to that extension when double clicking
on the MWI icon.
- Added version checking between client & server
- You can disable the icon for a button by using icon=0
- Added support for Zap DND state. You have to define the 'dnd'
family in op_astdb.cfg
- Added astdb checks. See op_astdb.cfg and extensions.conf.sample
for details. You can check for day/time mode or anything that its
stored on asterisk db.
- Changed the PARKXXX buttons to PARK/XXX for consistency. The old
syntax will still work fine.
- Added monitoring for callerid instead of channel name. Use
[CLID/XXXXXX] as the button name in op_buttons.cfg. Its experimental
Commands like originates and others might not work. This kind
of button will work with CVS-HEAD and without using the dial 'o'
flag.
- Added persistent security code. It remembers your last input so
you don't have to complete it the next time you open FOP.
- Added Panel_Context=* to op_buttons.cfg files, with it, that entry
will be added to every panel context defined.
- Fixed callerid on CVS-HEAD, now it works without using
the dial 'o' flag
- Added agent status. It displays Idle status an its
timers, and refresh queue statistics after each agent
call. Set agent_status to 1 in op_server.cfg
- Added the option to change the led color from asterisk's
dialplan:
exten => 1,1,UserEvent(FOP_ledcolor|Color: 0x0000FF^State: 0)
The color can be any hex value. The State is:
0 for available status (channel not in use)
1 for busy status (channel in use)
2 for agent status (channel not in use and logged in agent)
- Added the option to fire screen pops from asterisk's
dialplan:
exten => 1,1,UserEvent(FOP_Popup|URL: page.php?e=${EXTEN}^Target: top)
- Removed some DOWN status events that were redundant
- Added callerid name in screen popups, look at the
mypage.php sample in the html directory
- Initial Status is fetched from op_server.pl memory
instead of querying asterisk every time. Saves lots
of asterisk resources and speeds things up
- Fixed infobox bug when a button has multiple matches
- Background image. Just place a background.jpg file
in the same directory as the .swf file and it will
be displayed as the background. The canvas size is
996x600
- REGEXP buttons. Wildcard buttons are discarded in
favor of the more powerful REGEXP buttons. If you
use wildcard buttons, replace them with a REGEXP
(Ex: if you have [SIP/*] change it to [_SIP/.*])
- The security code is now optional (leave it blank
in op_server.cfg for no security code when performing
actions)
- Added absolute timeout for transferred calls
- Added the option to restart asterisk instead of reload
the panel when hitting the reload button (enable_restart
in op_server.cfg)
- Reworked some button matching routines, now it should
support Modem[i4l], oh323/* and mISDN
.20
Feb 22 2005:
- Added support for monitoring multiple asterisk servers
- Added wildcard buttons (IAX2/*)
- Added Park Slot buttons (PARK701)
- Barge Muted (barge_muted in op_server.cfg)
Will start the 3rd leg muted when barging in
- CallerID Privacy (clid_privacy in op_server.cfg)
Will hide the callerid number in the buttons
- Show IP address of peers (show_ip in op_server.cfg)
Will show the ip address of peers in their buttons
- Text legends (LEGEND primitive in op_buttons.cfg)
- Highlight of linked buttons
- Added Mailbox parameter to the button definition
- You can specify a channel name in the dial parameter
when using click-to-dial features, thus making it easier
to implement
.19
Nov 04 2004:
- Improved call details, now there is a queue/agent information
window and last call details window.
- Bugfixes and visual layout tweaks. You can set the highlight color, etc.
- You can define a distinct style per panel context. See op_style.cfg
- You can include files in op_buttons.cfg with the keyword 'include =>'
- The swf client is compressed and much smaller.
- When op_server.pl recconects, it close flash clients connections to
force a reconnect and update on their status.
.18
Oct 29 2004:
- Ming client is now the default, the new features work with
that client only.
- Led color configurable via op_style.cfg
- More label renaming options
(rename to agent name, rename queuememebers, etc)
- Option to change led color for logged in agents
- New click to dial feature, accesible via javascript
(examples in the html subdir)
- Ability to draw rectangles (see op_buttons.cfg for examples)
- Added polling for IAX presence
.17
Oct 21 2004:
- Mostly a bug fix release. Fixed the reload button in the ming client.
- Added polling of agents status on connect
- Initial take on showing detail info on each agent
.16
Oct 20 2004:
- Bug fixes: parked channel feature works again, ringing state too.
- Encryption is now optional, you can enable or disable it by changing
enable_crypto in op_style.cfg (while is this parameter in op_style
you may ask? well, the client has the ability to request encryption or
not, op_style.cfg sets not only visual parameters, but any client
parameter. I might change the configuration file name to op_client.cfg
in the future. Without encryption the client uses less CPU.
- Include the option for polling voicemail status together with sip
peers (poll_voicemail in op_server.cfg)
- New feature: ability to rename button labels when agents log in (
rename_label_agentlogin and rename_label_callbacklogin inside
op_server.cfg)
- New Ming client included. Ming is a library for generating .swf files
with wrappers in several languages. I used the perl wrapper to produce
a complete client. The source is included in the ming-source directory
The precompiled .swf file is in the html directory together with the
native flash client. Further development might be done exclusively in
Ming.
- The Ming client treats fonts a little diferent. If you enable
use_embed_fonts in op_style.cfg, then all the font_family values will
be overriden by the only embedded font in the .swf. The
embedded font looks uniform compared to system (or browser) fonts. You
*can* use any font_family available in your platform: just disable the
use of embed fonts and select the family for each legend in a button..
but you might end up with chopped text depending of the type of font
you use.
.15
Oct 1st 2004:
- New configuration file format, there is an utility to convert
your old configuration to the new format. See UPGRADE, and don't
forget to backup first. Be sure to run the utility only with
old configuration files, use it once and then remove it just in
case.
- Fixed MessageWaiting when channel was in another context
- MD5 Authentication to Asterisk Manager (md5_auth in op_server.cfg)
- Improved context handling in general. Now you can have a security
code for each context, as well as meetme rooms to use for bargein.
- There is no more auto_conf_exten for finding an empty meetme for
barge-ins. You now have to specify the rooms available for that
feature with the parameter barge_rooms in op_server.cfg
- Timers are now polled from Asterisk on initial connect. (If you open
the panel when a conversation was going, you will see the real duration
of the call)
- TEA Encryption for messages sent from server to client. MD5 used for
hashing the password.
- Many cosmetical changes to the flash movie, as well as optimizations
and rewrites. There are new icons, animations, etc.
- More information available when a call is disconnected, including
queue status information (completed calls, average holdtime, etc)
To get the info double click on the arrow when a call is finished.
- Added ability to mute/unmute meetme participants by clicking on the
arrow.
- Supports for register/unregister/unreachable/lagged realtime events
for SIP and IAX peers
- You can restrict the drag and drop commands to one button only, see
index-restrict.html in the html subdirectory
.14
Jul 28th 2004:
- You can run the op_server.pl dettached from the console by starting it
with the parameter '-d'. There are sample init scripts in the init
directory for redhat and debian.
- You can now drag a parked channel and transfer it to an available
extension just like any other transfer.
- Changed to work well with Asterisk RC1 (IAX2 channel names have changed
from "IAX2[ext@context]" to IAX2/ext@context. Your IAX2 channels in
op_buttons.cfg must be renamed if you use RC1. If you do not user RC1,
it might work as before, but I have not tested it.
- The flash side has a lot of improvements and changes. The fonts _sans
and _serif are now embedded, so they will look consistent in different
client computers (the tradeoff is a bigger swf file). When a channel is
offline, the label text will also be grayed out. When dragging an icon,
there is now visual feedback for the destination button. Added transparent
mask to the icons to make drag easier. If the client looses connection to
the op_server.pl, it will try to reconnect by itself (it does not work
on linux, its a flash bug).
- Also in the flash side, there are new elements. A little arrow showing
the direction of the call. And if you double click that little arrow
after a call is made, you can see the last call status. The new parameters
for op_style.cfg are described in UPGRADE
- There is a new parameter in op_server.cfg: clid_format
You can choose the format for the caller id to be presented in the client
The letter 'x' will be replaced with a number, any other text will be
preserved.
.13
Jul 12th 2004:
- Fixed an annoying bug that prevented the initial status to be displayed
(the context for wich the panel request events was sent after the
status events, so they were ignored by the flash client)
- Fixed another annoying bug, the clid text was of an incorrect height,
and the drag and drop was erratic because of this
- Improved the parking display on the channels. Now you have a flashing
led and a text in the button itself
- Added a timer with the duration of a call to each button
- Still more bugs to clean on the trunk feature, please report feedback
on the mailing list..
.12
Jul 5th 2004:
- Added a caller id display on the button itself
- The status of meetme and queues is queried on initial connect
- The event handling was rewriten. Now the flash client receives the
events for its own context (in previous versions, the events were
broadcasted to all clients)
- Cleaned the debug output a bit.
- You can send a USR1 signal to the server and look at some state
variables.
.11
Jun 29th 2004:
- Added 'trunk' buttons. You can define many buttons for just one user.
It is not well tested, as I do not have the means to test it. It might
introduce bugs!
- Added CRM software integration. You can monitor a button, and when it
rings, a web page is requested in the url and target you specify, with
the clid sent as a GET variable.
- The debug option in op_server.cfg has changed. See the UPGRADE file or
the online documentation, or the comments on op_server.cfg
.10
Jun 22th 2004:
- Added Contexts for the panel. You can have one server and several
different panels.
- Added 'Parked calls' as a status for a defined channel/button
- Fixed important bugs (MWI with contexts not working, transfers not
working in particular situations)
- Totally new webpage, for up to date documentation, go there
- You can send a HUP signal to op_server.pl and it will rewrite the
configuration files for the flash applet.
- New RELOAD button in flash, it will reread the server configuration
and refresh the display.
.09
Jun 8th 2004:
- Added Message Waiting count. When passing the mouse over the envelope
icon the status shows the New and Old messages in that mailbox
- The server sets the CallerID when originating a call.
- Changed the debug parameter in op_server.cfg to a bitmap for greater
control off debug output.
- Changed the way it handles extension numbers (column number 4) in
op_buttons.cfg. Now you can specify the context where the extension
resides by using the syntax:
extension@context
If the extension is not reachable from the default context, you must
specify its context there.
- Changed the way it handles IAX2 channels. To specify an IAX channel you
have to specify its name only, without '@context', eg:
IAX2[john]
.08
Jun 2nd 2004:
- Added "Extra Info" Input box
You can write any text you want in that box. When transferring or
originating a call, that text will be used as the callerid text for
that call. This way you can pass usefull information to the person
you are transferring the call. In order for this feature to work you
need to modify your dialplan ("extensions.conf"). There is an example
extensions.conf provided.
- Configurable layout of the toolbar
The bar at the top of the flash applet is now configurable. There are
new parameters in op_style.cfg to adjust the layout:
clid_label=Extra Info:
security_label=Security Code:
btn_help_label=Help
btn_log_label=Debug
show_security_code=1
show_clid_info=2
show_status=3
show_btn_help=4
show_btn_debug=5
The numbers in the show_xxx varialbes indicates the position in the
toolbar. If you do not want to display an element, set it to 0.
- Added HELP button and text to the flash movie
You can add a help.txt file in the same directory as the flash movie
on your webserver. This file will be displayed inside the help window
of the flash movie. You can use basic html tags. You *must* start the
file with the words "text="
.07
May 19th 2004:
- Added conference buttons
The channel column (first one) in op_buttons.cfg must be named with
the number of the meetme conference. Eg: you have a meetme conference
number 901, the name of the channel must be '901'. Look at the example
config.
- Added tranfer of an empty channel to an already connected call and
automatically conference the three parties together
You have two new parameters in op_server.cfg:
auto_conference_extension
conference_context
Set them up and look at op_server.cfg for an example configuration for
asterisk in extensions.conf and meetme.conf
- Added origination of calls
You can drag an available button to another available button. This
will originate a call from the first channel to the extension defined
in the desintation button.
- More readable output log for op_server.pl
.06
May 12th 2004
- Added voicemail notification:
There is a new parameter in op_buttons.cfg. The last column has the
voicemail context of the extension. You can leave it blank and it will
not check/show the voicemail status for that button (if its a queue
button or an extension without voicemail on).
You also have three new parameters in op_style.cfg:
mail_margin_left
mail_margin_top
mail_scale
to set the placement and size of the voicemail icon in the button.
.05
Apr 17th 2004
- Fixed a typo that prevented the applet from working.
.04
Apr 16th 2004
- Changed configuration files
The configuration files are different: in version .03 the
op_server.cfg had the button configuration and layout. In version
.04 that information is stored in op_buttons.cfg. There are 2 new
parameters in op_buttons.cfg, extension and icon.
op_server.cfg is now used for the parameters of the op_server
itself, like port to listent to, security code, debug level. You
don't have to modify op_server.pl anymore. All configuration is done
in the cfg files.
There is a new configuration file: op_style.cfg with the style and
size of the buttons.
- Added Queues buttons
You can display call queues on a button. Just put the name
of the queue as the channel name.
- Reconnection to Asterisk Manager port
The op_server now tries to reconnect to Asterisk Manager
port in case of disconnection. So if you restart Asterisk
you don't need to restart the op_server.pl, it will reconnect
by itself.
- Totally redone flash movie: operator_panel3.swf
The flash applet in version .04 is totally rewriten. It
has no bitmaps. All graphics are vector based, so you can
change the style and sizes without loosing detail. There
is no timer or status on each button in order to save space.
You can see the status of a channel by passing the mouse
over the red oval.
The new op_server.pl is compatible with the flash applet
of previous versions (operator_panel.swf), with fixed 24
buttons display, timers, and scrolling info on each channel.
op_panel-0.30/op_lang_de.cfg 0000644 0001750 0001750 00000001705 11217744022 015662 0 ustar alerios alerios ; German Language configuration file
dialing=Waehlt
calling=Ruft $1
incoming=Eingehendes Gespraech von $1
parked=Gehalten auf $1
registered=Registriert
notregistered=Nicht registriert
reachable=$1 erreichbar
unreachable=$1 nicht erreichbar
lagged=$1 verzoegert
newold=$1 neue, $2 alte
waitingonqueue=$1 Nutzer warten
memberonconference=$1 Teilnehmer
version_mismatch=Client/Server Versionsfehler!
; client side
clid_label=Info
detail_title=Letzte Anrufdetails
detail_from=Von:
detail_to=An:
detail_duration=Dauer:
security_code_title=Bitte den Sicherheitscode eingeben
btn_security_text=Eingabe Sicherheitscode
btn_restart_text=Asterisk-Neustart
btn_reload_text=Konfiguration neu laden
btn_debug_text=Debug-Fenster ein/aus
btn_help_text=Hilfefenster oeffnen
tab_call_text=Anruf
tab_queue_text=Warteschlange
calls_taken_text=Angenommene Anrufe
no_data_text=Keine Daten vorhanden
debug_window_title=Debug-Fenster
paused=Paused
idle=Idle
channels=$1 channel$2 in use
op_panel-0.30/UPGRADE 0000644 0001750 0001750 00000047425 11217744022 014135 0 ustar alerios alerios Notes on upgrading from an older release
========================================
o Upgrading from version .28 to .29:
No special features, just bugfixing and serving the policy file
from op_server.pl for newer flash clients.
o Upgrading from version .27 to .28:
New parameters in op_buttons.cfg
SpyExt=100@spy
It lets you specify an extension@context to triger a chanspy
action for that call when dropping your phone over the Arrow
no_label_counter=1
To not show increment counter when specifying multiple
positions for a button.
New experimental button type [DID/5555555]
It will try to match Freepbx FROM_DID incoming calls
New paramter "passvars" in op_server.cfg to pass extra values to
popups. It will pass the variable that is set to the channel via Set
in the dialplan before dialing to it in the GET request on the popup.
o Upgrading from version .26 to .27:
ASTDB checks were changes. Now you have to enable it per button using
"astdbkey". Just add that parameter to the button you want to make the
check with the appropiate key to check for, eg:
[SIP/10]
Position=1
Astdbkey=10
...
You can specify the callerid name in clid_format under op_server.cfg
so you can choose to display the name, number or both, like:
clid_format=${CLIDNAME} XXX-XXX-XXXX
New parameter in op_buttons.cfg
groupcount
If set to 1, will show number of channels in use for
the button instead of the last callerid. Useful for
trunk buttons.
New button type
[IMAGE]
To draw a jpg image anywhere on the screen, see op_buttons.cfg
for an example
New parameter in op_style.cfg
clid_centered
If set to 1, it will try to center the clid display
nomail_alpha
Amount of alpha to apply to MWI when there is no voicemail
show_borders
Enable or disable border to button legend (useful for debuging
layout config)
label_extent_x
label_extent_y
If the label does not fit horizontally or vertically, increase
these numbers
o Upgrading from version .25 to .26:
New DTHML client. The directory structure on the tarball has changed
to accommodate the new DHTML client. The former html subdirectory was
renamed to flash, and the new client is inside the dhtml subdirectory.
The new DHTLM client works in a similar way to the flash client, it has
a couple of scripts that read the same config files than the flash
version to draw the buttons. It is not yet complete but it mostly works.
New parameter in op_style.cfg:
shake_pixels
Sets the number of pixels to shake the icon when ringing
dimm_noregister_by
Ammount of alpha dimm to apply when channel is not registred
dimm_lagged_by
Ammount of alpha dimm to apply when channel is lagged
New parameters in op_buttons.cfg:
VoiceMailExt
To set the extension@context to use when transferring directly
to voicemail
Background
To specify a jpg image to use as button background. You have to
set No_rectangle=true on that button for the background to become
active. The .jpg file should be of the same size as the button width
and height as specified in op_style.cfg
Privacy
If set to true, it won't display caller id or dialed number info
for that button.
o Upgrading from version .24 to .25:
Queue buttons now must be defined as:
[QUEUE/SUPPORT]
With this new syntax, queue names with numbers
only as used in AMP will work without collisions.
You have to rename all queue buttons in your config
file to use the new syntax or they won't work.
Added some attributes to LEGENDS in op_buttons.cfg:
URL
TARGET
NO_BASE64
If set, the legend will become an hyperlink to URL@TARGET
If NO_BASE64 is set, the text won't be encoded
Added attributes to any button in op_buttons.cfg:
URL
TARGET
If set, it will add an hyperlink to the button label pointing
to that URL and opening it inside TARGET.
Added enable_label_background to op_style.cfg
This parameter will set the background color to the button label
to the same colors as the led. You can use it together with
"no_rectangle" in the buttons and Icon=0 and a small width, height
and font to fit hundreds of buttons on one screen. I was able to
fit 630 buttons (but only for monitoring as you don't have the led
or icon to transfer or hangup calls)
Added dimm (alpha) for noregistered and lagged buttons to op_style.cfg
dimm_noregister_by=20
dimm_lagged_by=60
Added listen_addr keyword
If you want op_server.pl to bind to only one IP address instead of
all avaialbe addresses.
Added manager_port keyword
If your manager is not running on the default port, you
can specify the port now for each connection with this
option. Example:
manager_port = 5039
Added support for astmanproxy
In op_server.cfg you have to defined the astmanproxy host & port
(the ip address where astmanproxy is listening) & server (the
same ip or name you use in astmanproxy.conf). If you
monitor more than one asterisk server trough astmanproxy, you
will have to enumerate them using the astmanproxy_server keyword.
Example:
astmanproxy_host = 127.0.0.1
astmanproxy_port = 1234
astmanproxy_server = 192.168.10.1
astmanproxy_server = 192.168.10.2
Added buttons for MEETME participants. Just specify more
than one position for a meetme button and they will show
meetme participants indiviually as they join or leave the
conference.
Added [QUEUEAGENT] buttons. They will be taken by static
or dynamic queue members automatically.
Added buttons for QUEUE positions. Just specify more than
one position for the button and they will show each queue
position instead of a queue summary
o Upgrading from version .23 to .24:
Nothing new, just a bug fix release in op_server.pl
o Upgrading from version .22 to .23:
Client and server must be upgraded or it will not work well.
Internationalization support:
Parameter ADDED to op_server.cfg:
language
To set the language to use in the general section
and optionally in every panel context defined.
The language files are named op_lang_XX.cfg where XX is the
language to use defined in the language option. Each panel
context might have a distinct language. The default language
is 'en' (english).
You can create your own language file. If you do, please
send it back to me so I can include it in the tarball.
Some strings include variables, they are represented as
$1 and $2. You can ommit the variables or use them as you
see fit.
The help file is now called help-XX.html. Be sure to add that file
or rename the one you have. Please contribute with translations or
beautifying them if you can.
Parameters REMOVED from op_style.cfg (they were moved to the language
configuration file):
clid_label
detail_title
detail_from
detail_to
detail_duration
Parameters ADDED to op_style.cfg (to set the button label color, the
button label shadow color, and the clid text color):
label_font_color = 000000
label_shadow_color = FFFFFF
clid_font_color = 00DD00
timer_font_color = 200070
New option for LEGENDS in op_buttons.cfg
font_color = 102030
Support for command line options. Run op_server.pl with --help to
see the available options
o Upgrading from version .21 to .22:
Just replace op_server.pl that has minor bugfixes
o Upgrading from version .20 to .21:
New configuration file: op_astdb.cfg used to monitor asterisk
db values and change states for a button based on them.
New option: voicemail_extension parameter in op_server.cfg.
If set, FOP will originate a call to that extension when
double clicking on the MWI icon.
The PARK buttons are now specified as PARK/XXX
instead of PARKXXX to make it more consistent with
channel naming conventions. The old name will still
work.
To enable agent_status (displays agent idle
time and refresh queue status after each
call). In op_server.cfg:
agent_status=1
If there is a background.jpg image in the same
directory as the swf file, it will be used as
the background for the panel. Resolution: 996x600
The syntax for wildcard buttons has changed, if
you have [SIP/*] change it to [_SIP/.*]
The new matching routine allows full regexps to
be used. To use regexps buttons start them with
an underscore followed by your expression.
To disable the security code, leave it blank. In
op_server.cfg:
security_code = ""
To enable timeout on transfers, you have to set the
transfer_timeout paramenter to op_server.cfg
You can set the reload button to perform an asterisk
restart if you set enable_restart to 1 in op_server.cfg
o Upgrading from version .19 to .20:
You can define the server number of a button in op_buttons.cfg
using the 'server' directive. If you leave it empty, it will
default to Server=1
To monitor more than one asterisk box, just repeat the sequence of
connection parameters in op_server.cfg
; Server 1
manager_host=1.2.3.4
manager_user=john
manager_secret=doe
; Server 2
manager_host=1.2.3.5
manager_user=mary
manager_secret=poppins
To add text legends, the format is:
[LEGEND]
x=535
y=50
text=Conferences
font_size=32
font_family=Arial
use_embed_fonts=1
To add park slot buttons, the format is:
[PARK701]
Position=17
Icon=3
Extension=700
Label="Park 701"
You can specify the mailbox for a button with the mailbox parameter:
[SIP/100]
Position=1
Mailbox=100@default
...
The 'old way' still works, by using the combination of Extension and
Voicemail_Context. I recommend you to use the new format as it is more
flexible (you can monitor a mailbox independant from the extension of
that button).
New directives in op_server.cfg
rename_label_wildcard
barge_muted
clid_privacy
show_ip
o Upgrading from version .18 to .19:
In op_style.cfg there is a new paramter to confgure the
highlighting color for the buttons:
btn_highlight_color=ff0000
o Upgrading from version .17 to .18:
The default .swf client is now the ming port. The new features
are available only in the ming port. The flash .swf is included
but it was not tested.
In op_style.cfg there are new parameters (to configure led colors):
ledcolor_ready
ledcolor_busy
ledcolor_agent
The parameter led_color is not used anymore. (It is used by the
flash client only, not the default ming client)
In op_server.cfg there are new options too (all commented in
op_server.cfg itsef):
rename_label_agentlogin
rename_label_callbacklogin
rename_to_agent_name
rename_queue_member
change_led_agent
clicktodial_insecure
It is possible now to draw rectangles, see op_buttons.cfg for
an example.
If you use click-to-dial, the button used to originate the call
must be specified when invoking the .swf file. The parameter used
is 'dial'. See index-clicktodial.html for an example.
o Upgrading from version .16 to .17:
Just replace op_server.pl and your favorite .swf client. Its
mostly a bug fix release. The new features do not require
configuration changes.
o Upgrading from version .15 to .16:
The help window is now a browser windows that loads help.html
(instead of being a flash window that loads the help.txt file)
So you need to put a help.html page in the same location as the
.swf file.
There are a couple of new parameters. In op_server.cfg
poll_voicemail
Will check for voicemail status every poll_interval seconds.
Remeber that poll_interval will also check for sip peers.
rename_label_agentlogin
rename_label_callbacklogin
Both parameters acomplish the same goal: to rename a button
label when an Agent logs in. One of them works with the regular
AgentLogin application. The other one with AgentCallbackLogin.
For the later, you need to have a button with the same extension
and context for the callback for it to work.
There is also a new parameter in op_style.cfg
enable_crypto (1 for enable, 0 for disable)
If you want to encrypt server to client messages, turn this on.
o Upgrading from version .14 to .15:
The format of the configuration file is different. You have to
run ./convert_config_pre_14.pl in order to convert your old
configuration files to the new format. The conversion utility
must reside in the same directory as the old configuration files:
op_server.cfg
op_style.cfg
op_buttons.cfg
When you run the conversion routine, it will backup your old
configuration files and do its thing. Just in case, backup the
files yourself. The conversion program does not have extensive
error checking.
The barge-in functionality has changed also. You no longer need
an auto_conference_extension in your dialplan. The panel will
keep track of the conferences itself. You *do* need to add the
conference room numbers that must be used for barge-in. The
conversion routine adds the parameter, you have to modify it to
suit your needs. The new parameter (in op_server.cfg) is:
barge_rooms
It must have at least two rooms defined, with the format:
"minor-major". Those rooms must be defined in your extensions.conf
under the context defined by conference_context. The extension
number must match the meetme room number. See op_server.cfg for
an example.
To authenticate using MD5 to Asterisk Manager you can add the parameter
auth_md5=1 in op_server.cfg. It is enabled by default.
There are new parameter in op_style.cfg:
enable_animation: it will animate the phone icons when ringing.
use_embed_font: lets you choose between embed fonts or system fonts.
(1 for enable, 0 for disable)
o Upgrading from version .13 to .14:
In Asterisk RC1, the IAX naming convention has changed. There are
no more brackets in IAX2 channel names. If you run RC1 (try it!)
you will have to name your IAX2 channels like:
IAX2/user
You will have to rename your op_buttons.cfg if you use IAX2 channels.
The code for handling the previous naming convention is still there
but I have not tested it. It might or might not work.
There are new elements in op_style that affects the button style:
arrow_scale
arrow_margin_top
arrow_margin_left
The above parameters indicate the size and position of a little
arrow that shows the 'direction' of the call.
detail_title=Last call details
detail_from=From:
detail_to=To:
detail_duration=Duration:
These four parameters are for setting the text displayed in the
detail box when you double click on the little arrow after a call
is made.
led_color
The color scheme for the available/busy led.
0 for leds green/red. (default)
1 for leds grey/green
label_shadow
You can add a shadow to the text label
0 for disabling the shadow (default)
1 for enabling the shadow
There is a new parameter in op_server.cfg:
clid_format
This mask will apply to the callerid field to format the
number as you see fit. Every 'x' will be replaced by a number
from right to left. Any other char will be preserved. Ex:
(xxx) xxx-xxxx
o Upgrading from version .12 to .13:
For the timer to work, you need to add four new parameters to
op_style.cfg
timer_font_size
timer_font_family
timer_margin_top
timer_margin_left
o Upgrading from version .11 to .12:
There are 4 new parameters in op_style.cfg for the caller id
display on each button.
clid_font_size
clid_font_family
clid_margin_top
clid_margin_left
o Upgrading from version .10 to .11:
There are no new parameters in the configuration files. Your .10
configuration should work fine with version .11
The debug level bitmap is now different:
1 Show Manager Events Received
2 Show Commands set to Manager
4 Show Flash events Received
8 Show events sent to Flash Clients
16 1st level Debug on op_server.pl
32 2nd level Debug on op_server.pl
64 3rd level Debug on op_server.pl
o Upgrading from version .09 to .10:
There are 2 new parameters in op_style.cfg for a new element
in the toolbar (a reload button)
btn_reload_label
show_btn_reload
o Upgrading from version .08 to .09:
The debug level (op_server.cfg) is now a bitmap. Now you have more
control of the output produced by debug. The possible values are:
1 Show Manager Events Received
2 Show Commands set to Manager
4 1st level debug on op_server.pl
8 2nd level debug on op_server.pl
16 3rd level debug on op_server.pl
If you want full debug, set the value to 31 in op_server.cfg
If you want to see just the events received and sent, set it to 3 (1+2)
The fade matrix for the buttons is slightly different. Its the first
step towards a visual button layout configurator.
o Upgrading from version .07 to .08:
The offset and size of the icons have changed. You will need to adjust
your op_style.cfg. Now all the icons are aproximatly the same size and
have the same center offset, so the margins and scale parameters will
match from icon to icon. New layout configurations should be simpler.
There are several new parameters in op_style.cfg, related to the
configurability of the toolbar. You have to add them in your current
configuration, if you don't do it you will not see any toolbar. The
parameters to add are:
clid_label=Extra Info:
security_label=Security Code:
btn_help_label=Help
btn_log_label=Debug
show_security_code=1
show_clid_info=2
show_status=3
show_btn_help=4
show_btn_debug=5
The number in show_xxx represents the order in which it is rendered. If
you want to hide an element of the toolbar, set it to 0.
o Upgrading from version .06 to .07:
There are two new parameters in op_server.cfg:
auto_conference_extension = 900
conference_context = conferences
Add them to your existing configuration file. In op_server.cfg there are
also examples of asterisk configuration files to use the 3way auto
conferences.
o Upgrading from previous versions:
There are three new parameters in op_sytle.cfg and a new one in
op_buttons.cfg. See CHANGES. Just add those parameters to your current
config files, and replace op_server.pl with the new one. The fixed 24
buttons flash movie does not support voicemail notifications. There is a
new index.html that scales the applet to the size of the browser window.
Try it and use the one you like more.
op_panel-0.30/LICENSE 0000644 0001750 0001750 00000043130 11217744022 014115 0 ustar alerios alerios
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C) 19yy
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
op_panel-0.30/op_buttons.cfg 0000644 0001750 0001750 00000016215 11217744022 015771 0 ustar alerios alerios [SIP/10] ; Channel name
Position=1 ; Button number in the console
Label="10 Fax" ; Text label for the button
Extension=10 ; Extension to reach that channel
Context=sip ; Context where that extension is defined
Mailbox=10@sip ; The voicemail mailbox to monitor
Icon=1 ; There are 6 icons available
Url=http://www.asternic.org ; Optional, add link to button label
Target=_new ; Optional, open link in this target
No_Rectangle=0 ; Optional: If enabled, it will not draw the button
; rectangle, only the icons inside
Background=bg.jpg ; Optional: it will load that jpg as the button
; background. It should match the size as specified
; in op_style.cfg btn_width and btn_height.
VoiceMailExt=910@vm ; extension@context to use for transferring a call
; directly to voicemail
Privacy=false ; if set to true, it will hide callerid info for
; the button
GroupCount=1 ; Will show number of channels in use instead of clid
Astdbkey=10 ; If using astdb functions, enable it for this button
; using the key provided
SpyExt=20@spy
[SIP/11]
Position=n ; Position 'n' will be the next available
Label="Multiline%0aLabel" ; %0a is the new line character
Extension=11
Context=sip
Icon=1
Server=1 ; If you omit the Server, it will default to 1
[SIP/12]
Position=n
Label="12 Ernest"
Extension=11
Context=sip
Icon=1
Server=2 ; If you monitor more than one server change this
[_SIP/.*] ; You can use REGEXP. Prefix the button with an
Position=1,2 ; underscore followed by your expression
; (you cannot use & and = as they are reserved)
Label="SIP Guest"
Extension=-1 ; If set to -1 you will not be able to transfer
; to this button
Context=internos
Icon=1
[PARK/701]
Position=17
Icon=3
Extension=700
Label="Park 701"
[SIP/16]
Position=6
Label="16 Nicolás" ; you can use unicode for extended characters
Extension=16
Context=internos
Icon=1
Mailbox=16@internos
[CAPI[contr1/NNNNNNNNN]] ; where NNNN is the ISDN number. If you
Position=22,23 ; specify more than one position, the button
; will be considered a 'trunk', each call will be
; displayed in a separate button
Label="External CAPI"
Extension=-1
Context=in-extern
Icon=4
[SIP/17]
Position=7
Label="17 Martin"
Extension=17
Context=internos
Icon=1
Mailbox=17@internos
[IAX2/3002]
Position=3
Label="3002 IAX Client"
Extension=3002
Context=iaxcontext
Icon=1
[901] ; Meetme must be defined by its room number
Position=8
Label="Meetme 901"
Extension=901
Context=conferences
Icon=5
[902]
Position=9
Label="Meetme 902"
Extension=902
Icon=5
[Zap/1]
Position=10
Label="External 1"
Extension=-1
Icon=2
[Zap/2]
Position=11
Label="External 2"
Extension=-1
Icon=2
[QUEUE/SALES] ; queues must be defined by its name
Position=12
Label="Sales Queue"
Extension=-1 ; -1 to disable transfers to this button
Icon=3
Alarm=30^alarm.php?queue=sales^_new^ ; Timer Alarm. If timer reachs 30 seconds, open/popup alarm.php in _new target
[QUEUE/SUPPORT]
Position=13-18 ; each position will be used by users waiting
; on that position number
Label="Support Queue"
Extension=-1 ; -1 to disable transfers to this button
Icon=3
[Local/5555555@sip]
Position=26
Label="Speed Dial"
Extension=5555555
Context=sip
Icon=2
[IAX2/iaxtel]
Position=15,16
Label="Iaxtel"
Extension=-1
Icon=2
[SIP/provider]
Position=20
Label=Sip Provider
Extension=-1
Icon=2
; buttons with panel context will be displayed in their
; own panel, you have to append ?context=NAME when loading
; the swf file
;
;[IAX2/iaxtel]
;Position=15,16
;Label="Iaxtel"
;Extension=-1
;Icon=2
;Panel_context=sip
; You can draw rectangles anywhere in the screen. The canvas sixe is 996x600
;
[rectangle]
x=748
y=35
width=252
height=370
line_width=3
line_color=ffff10
fade_color1=ffff10
fade_color2=ffff3F
rnd_border=2
alpha=30
layer=top ; top = above buttons
; bottom = below buttons
[rectangle]
x=498
y=35
width=252
height=220
line_width=3
line_color=ff1010
fade_color1=ff1010
fade_color2=a01000
rnd_border=2
alpha=20
layer=top
panel_context=* ; The item will be persistant across contexts
[rectangle]
x=498
y=255
width=252
height=295
line_width=3
line_color=10ff10
fade_color1=10ff10
fade_color2=10ff00
rnd_border=2
alpha=20
layer=top
[rectangle]
x=-1
y=35
width=502
height=515
line_width=3
line_color=1010ff
fade_color1=1010ff
fade_color2=1010ff
rnd_border=2
alpha=10
layer=top
; you can include configuration files
;
;include => more_rectangles.cfg
[LEGEND]
x=800
y=50
text=Zap Lines
font_size=32
font_color=000000
font_family=Times New Roman ; only used when use_embed_fonts=0
use_embed_fonts=1 ; if set to 1 it will use an embeded Arial type font
; that looks consistently between platforms/os
[LEGEND]
x=535
y=50
text=Conferences
font_size=32
font_color=FF0000
font_family=Arial
use_embed_fonts=1
[LEGEND]
x=555
y=270
text=Queues
font_size=32
font_color=000000
font_family=Arial
use_embed_fonts=1
[LEGEND]
x=160
y=40
text=Extensions
font_color=000000
font_size=32
font_family=Arial
use_embed_fonts=1
[LEGEND]
x=75
y=75
text=Local
font_size=24
font_family=Arial
font_color=000000
use_embed_fonts=1
[LEGEND]
x=315
y=75
text=Remote
font_color=000000
font_size=24
font_family=Arial
use_embed_fonts=1
[IMAGE]
src=logo.jpg
x=30
y=30
# The entry below will create ONE button
# showing the number of ZAP channels used
# for an E1 trunk (zap/1 to zap/31
#
# Interesting bits: regexp, groupcount, and count
#
# groupcount will count number of channels used
# count will set and limit the number of sessions matched
;[_Zap\/(\d$|1\d$|2\d$|3[01]$)]
;Position=70
;Count=31
;Label=Trama 1
;Icon=2
;groupcount=1
# The following entry same as above but
# for 2nd E1 line (zap/32 to zap/62)
;[_Zap\/(3[2-9]$|4\d$|5\d$|6[012]$)]
;Position=71
;Count=31
;Label=Trama 2
;Icon=2
;groupcount=1
;include => more_legends.cfg
# Experimental auto_sip buttons:
# they match any sip peers as de regexp
# and fill all matching peers starting
# at position 'Starting_Position' and
# substitutes variables found in
# the sip peer entry
#
#[AUTO/SIP/1.$] ; matches SIP/1X
#Context = ${CONTEXT}
#Extension= ${CHANNEL}
#Label = ${CHANNEL}
#Icon = 1
#Starting_Position=1
#Server=1
#Panel_Context=auto
#[AUTO/SIP/.*] ; matches SIP/*
#Context=${CONTEXT}
#Extension=${ACCOUNTCODE}
#Mailbox=${VOICEMAILBOX}
#Label=${CHANNEL}
#Icon=1
#Accountcode=${ACCOUNTCODE}
#Starting_Position=20
#Server=2
#Panel_Context=auto
# Variables for AUTO/SIP buttons:
#
# ${CONTEXT} sip context
# ${CALLERID} full callerid (eg: john <12>)
# ${CLIDNUM} callerid number (eg: 12)
# ${CLIDNAME} callerid name (eg: john)
# ${VOICEMAILBOX} full voicemailbox (eg: 12@default)
# ${VOICEMAILBOXNUM} voicemailbox number (eg: 12)
# ${VOICEMAILBOXCONTEXT} voicemailbox context (eg: default)
# ${ACCOUNTCODE} accountcode
# ${CHANNEL} channel name without "SIP/"
op_panel-0.30/flash/ 0000755 0001750 0001750 00000000000 11277347336 014221 5 ustar alerios alerios op_panel-0.30/flash/help_es.html 0000644 0001750 0001750 00000002052 11217744021 016507 0 ustar alerios alerios
Como realizar acciones:
Transferir llamados: arrastre y suelte el telefono hacia la extension de destino
Cortar llamados: pinche dos veces sobre el óvalo rojo
Originar llamados: arrastre el ícono de una extensión libre hacia su destino
Irrumpir en un llamado: Puede agregar una tercer persona a una conversación en curso arrastrando el ícono del teléfono hacia cualquiera de los botones de la conversación en curso. Los tres serán puestos en una conferencia.
Enmudecer/desenmudecer participantes de una conferencia: pinche sobre la flecha pequeña de un botón
Obtener información sobre el último llamado: pinche dos veces sobre la flecha de un botón inactivo
Puede mandar información adicional al realizar transferencias usando el campo textual del callerid. Para ello, escriba el texto que desee en el casillero y luego realice la transferencia.
Puede determinar el tiempo máximo de un llamado configurando el
op_panel-0.30/flash/index.html 0000644 0001750 0001750 00000002101 11217744021 016172 0 ustar alerios alerios
Asterisk Flash Operator Panel
op_panel-0.30/flash/index-fixed.html 0000644 0001750 0001750 00000002472 11217744021 017302 0 ustar alerios alerios
Asterisk Flash Operator Panel
op_panel-0.30/flash/mypage.php 0000644 0001750 0001750 00000000633 11217744021 016200 0 ustar alerios alerios
if(!isset($_GET['clid'])) {
echo "No caller ID provided ";
} else {
echo "Caller id is: ".$_GET['clid']." ";
}
if(!isset($_GET['clidname'])) {
echo "No caller ID Name provided ";
} else {
echo "Your clid name: ".base64_decode($_GET['clidname'])." ";
}
?>
op_panel-0.30/flash/help_en.html 0000644 0001750 0001750 00000001622 11217744021 016504 0 ustar alerios alerios
How to perform actions:
Transfer calls: by dragging the phone icon to the destination you want
Hangup calls: by double clikcing on the red button
Originate calls: by dragging an available extension to an available destination
Conference calls: You can add a third person to an existing conversation by dragging an available extension to a leg of an already connected call.
Mute/Unmute meetme members: just double click on the arrow of a meetme participant
Get information about last call: double click on the arrow of an available button
You can also write additional information in the Info box before transferring or originating a call. If text is entered in the Info box, it will be used as the Caller ID text for any originated or transferred calls.e.g. "555-1212 Bob Jones/IBM"
op_panel-0.30/flash/index-restrict.html 0000644 0001750 0001750 00000002456 11217744021 020044 0 ustar alerios alerios
Asterisk Flash Operator Panel
op_panel-0.30/flash/index-clicktodial.html 0000644 0001750 0001750 00000005155 11217744021 020466 0 ustar alerios alerios
Перед выполнением каких-либо действий, вам следует ввести код безопасности.
После этого вы сможете:
Переводить звонки: перетащив значок телефона на нужное вам целевой номер
Сбрасывать звонки: двойным кликом на красную кнопку
Инициировать звонки: перетаскиванием свободного внутреннего номера на свободный целевой номер
Конференц-связь: Вы можете добавить третьего собеседника в существующий разговор путем перетаскивания свободного внутреннего номера в зону действующего разговора.
Также Вы можете вписать добавочную информацию в поле информации перед переводом или началом нового звонка.
В таком случае, он показывается как текст АОНа для любого нового или переведенного звонка например:
"740-9982 Николай из Центробанка"
Transfrer les appels en dplacant l'icne vers la nouvelle destination
Racrocher en double-cliquant sur le bouton rouge
Initier des appels en dplacant l'icne vers la destination
Grer les confrences: ajouter des participants en dplacant l'icne vers la salle de confrence
Mute/Unmute un participant d'une confrence en double cliquant sur la flche
Lire les informations sur le dernier appel en double-cliquant sur la flche
Vous pouvez aussi entrer un texte dans la bote Info avant de transfrer ou d'initier un appel; ce texte constituera alors l'identifiant de l'appelant (Caller ID) pour les appels ou transfert suivants.
op_panel-0.30/flash/index-crm.html 0000644 0001750 0001750 00000002630 11217744021 016760 0 ustar alerios alerios
Asterisk Flash Operator Panel
op_panel-0.30/flash/crossdomain.xml 0000644 0001750 0001750 00000000335 11217744021 017247 0 ustar alerios alerios
op_panel-0.30/flash/help_de.html 0000644 0001750 0001750 00000002000 11217744021 016461 0 ustar alerios alerios
Ausfhrung von Aktionen:
Anrufe transferieren: durch Ziehen des Telefon-Icons auf den gewnschten Ziel-Teilnehmer
Anrufe beenden: Doppelklick auf den roten Button
Anruf initiieren: durch Ziehen eines verfgbaren Teilnehmers auf den gewnschten Ziel-Teilnehmer
Konferenzanrufe: Sie knnen eine dritte Person zu einem bestehenden Telefonat hinzufgen, indem Sie einen verfgbaren Teilnehmer auf einen der bereits verbundenen Teilnehmer ziehen.
Stumm-/Lautschaltung von MeetMe-Mitgliedern: Doppelklick auf das Pfeil-Icon des Teilnehmers
Informationen zum letzten Anruf abrufen: Doppelklick auf das Pfeil-Icon des Teilnehmers
Sie knnen auch Zusatzinformationen in die Infobox schreiben, bevor Sie Anrufe transferieren oder initiieren. Wenn in der Infobox Text eingegeben wurde, dann wird er als Caller-ID-Text fr einen transferierten oder initiierten Anruf genutzt, z.B: "555-1212 Bob Jones/IBM"
op_panel-0.30/flash/help_se.html 0000644 0001750 0001750 00000002151 11217744021 016507 0 ustar alerios alerios
Hur man använder Flash Operator Panel:
Flytta samtal: genom att dra telefonikonen till den anknytning du vill
Lägg på samtal: genom att dubbelklicka p&aing; den röda knappen
Skapa samtal: genom att dra en tillgänglig anknytning till en tillgänglig mottagare
Konferenssamtal: Du kan lägga till en tredje person till en existerande konversation genom att dra en tillgänglig anknytning till ett ben av det redan kopplade samtalet.
Stäng av/på mikrofonen för MeetMe medlemmar: bara att dubbelklicka på pilen hos en MeetMe deltagare.
Visa information om senaste samtalet: dubbelklicka på pilen på en tillgänglig knapp
Du kan också skriva extra information i Infoboxen före samtalskoppling eller skapande av samtal. Om text skrivs in i Infoboxen kommer den att användas som CID (nummerpresentation) för samtalet, till exempel: "0877878787 Daniel Nylander"
op_panel-0.30/flash/help_no.html 0000644 0001750 0001750 00000002070 11217744021 016514 0 ustar alerios alerios
Hvordan Flash Operator Panel brukes:
Overføre samtaler: ved å trekke og slippe samtalen på den linjen du ønsker over en linjen det skal overføres til
Legge på samtaler: ved å dobbeltklikke på den røde knappen
Starte samtaler: ved å trekke og slippe en ledig linje over den linjen du vil bruke
Konferansesamtale: en tredjeperson kan legges til en samtale ved å trekke og slippe hans/hennes linje over en eksisterende samtale
Slå av lyd/slå på lyd: dobbeltklikk på pilen til en deltager i en konferansesamtale
Se informasjon om siste samtale: dobbeltklikk på pilen for en ledig linje
Det er også mulig å skrive ekstra informasjon i info-boksen før overføring eller oppstart av en samtale. Hvis det skrives inn tekst, vil denne bli brukt som anropsinformasjon for samtalen (feks "22 12 34 56 Ola Nordmann / Firmanavn")
op_panel-0.30/flash/help_it.html 0000644 0001750 0001750 00000001677 11217744021 016530 0 ustar alerios alerios
Istruzioni:
Trasferimento di una Chiamata: Trascinare l'icona del Telefono sulla destinazione desiderata.
Terminare Chiamata: Cliccare due volte sul pulsante Rosso.
Effettuare una Chiamata: Trascinare l'icona di una estensione disponibile su una Destinazione.
Conferenze: Tu puoi aggiungere persone ad una conferenza Attiva semplicemente trascinando l'icona di una Telefono dentro l'estensione della Conferenza.
Attivare o Sospendere l'audio per le Persone nel Meetme: Per fare questo devi cliccare due volte la Freccetta sul partecipante del meetme.
Informazioni sulle ultime chiamate: Clicca due volte la freccetta sull'estensione desiderata.
PS: Prima di trasferire una chiamta puoi anche scrivere delle informazioni nel INFO-BOX, quello che hai digitato verra' trasmesso alla persona chiamata. Esempio: 555-1212 Bob Jones/IBM
op_panel-0.30/op_astdb.cfg 0000644 0001750 0001750 00000002035 11217744022 015363 0 ustar alerios alerios ; FOP will ask for the value of the asterisk database families
; specified between brackets. If the value is non empty, it will
; send the commands to the flash client. Note that the family
; is case sensitive!
[DND]
setalpha=70|100
fopledcolor=0x001020^0|0x00A000^0
# How it works: when the panel is first started, it will check
# for every family defined in op_astdb.cfg between brakets. The
# key is the astdbkey parameter as defined in op_buttons.cfg
#
# If a value is found and non empty it will perform the actions
# specified in op_astdb.cfg, those actions modify the button for
# that channel in FOP, they are:
#
# settext = sets the text where the callerid is displayed
# setlabel = sets the label for the button
# setalpha = sets the alpha blending for the whole button (0-100)
# flip = flips the button (1)
# state = set the state of the led to: free, busy or ringing
# fopledcolor = sets the led color using hex values like 0x2030a0
#
# If the value is not found or not set, it will use the second
# value defined for that action
op_panel-0.30/op_server.pl 0000755 0001750 0001750 00001462743 11217744023 015475 0 ustar alerios alerios #!/usr/bin/perl
# Flash Operator Panel. http://www.asternic.org
#
# Copyright (c) 2004 Nicols Gudio. All rights reserved.
#
# Nicols Gudio
#
# This program is free software, distributed under the terms of
# the GNU General Public License.
#
# THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
use strict;
use warnings;
use integer;
use constant DEBUG => 1;
use constant BYTES_TO_READ => 256;
use IO::Socket;
use IO::Select;
use Getopt::Long;
use Pod::Usage;
use Fcntl;
use POSIX qw(setsid EWOULDBLOCK);
my $FOP_VERSION = "0.30";
my %datos = ();
my %chanvar = ();
my %monitoring = ();
my %passvar = ();
my %sesbot = ();
my %linkbot = ();
my %cache_hit = ();
my %estadoboton = ();
my %preestadoboton = ();
my %boton_paused = ();
my %boton_agentready = ();
my %boton_agentpaused = ();
my %boton_agentbusy = ();
my %boton_agentlogedof = ();
my %botonled = ();
my %botonalpha = ();
my %botonledcolor = ();
my %botonregistrado = ();
my %boton_ip = ();
my %botonlabel = ();
my %botonlabelonly = ();
my %botonsetlabel = ();
my %botontimer = ();
my %botontimertype = ();
my %botonpark = ();
my %botonmeetme = ();
my %botonclid = ();
my %botonpermanenttext = ();
my %botonqueue = ();
my %botonqueue_count = ();
my %botonqueuemember = ();
my %botonvoicemail = ();
my %botonvoicemailcount = ();
my %botonlinked = ();
my %parked = ();
my %meetme_pos = ();
my %laststatus = ();
my %autenticado = ();
my %auto_conference = ();
my %attendant_transfer = ();
my %attendant_pending = ();
my %pending_uniqueid_attendant = ();
my %mute_other = ();
my %autosip = ();
my %cnt_auto_pos = ();
my $cnt_autosip = 0;
my %autosip_detail = ();
my %buttons = ();
my %buttons_queue = ();
my %buttons_queue_reverse = ();
my %buttons_preserve_case = ();
my %buttons_astdbkey = ();
my %button_server = ();
my %buttons_reverse = ();
my %textos = ();
my %iconos = ();
my %urls = ();
my %alarms = ();
my %targets = ();
my %remote_callerid = ();
my %remote_callerid_name = ();
my %extension_transfer = ();
my %extension_transfer_reverse = ();
my %max_queue_waiting_time_for = ();
my %flash_contexto = ();
my %saved_clidnum = ();
my %saved_clidname = ();
my %keys_socket = ();
my %manager_socket = ();
my %start_muted = ();
my %timeouts = ();
my %no_rectangle = ();
my %background = ();
my %astdbcommands = ();
my %client_queue = ();
my %manager_queue = ();
my %client_queue_nocrypt = ();
my %ip_addy = ();
my %held_channel = ();
my %agents_available_on_queue = ();
my $queue_object = {};
my %is_agent = ();
my %agents_on_queue = ();
my %max_lastcall = ();
my $config = {};
my $cola = {};
my $language = {};
my $global_verbose = 1;
my $help = 0;
my $version = 0;
my $counter_servers = -1;
my %bloque_completo;
my %buferbloque;
my $bloque_final;
my $todo;
my $reload_pending = 0;
my $regexp_buttons = 0;
my $auto_buttons = 0;
my @auto_config = ();
my $queueagent_buttons = 0;
my $defaultlanguage;
my @bloque;
my @respuestas;
my @all_flash_files;
my @masrespuestas;
my @fake_bloque;
my @flash_clients;
my @status_active;
my @panel_contexts;
my %mailbox;
my %tovoicemail;
my %tospy;
my %instancias;
my %agent_to_channel;
my %agent_label;
my %togle_action;
my %togle_response;
my %channel_to_agent;
my %reverse_agents;
my %agents_name;
my @p;
my $m;
my $O;
my @S;
my @key;
my @manager_host = ();
my @manager_port = ();
my @manager_user = ();
my @manager_secret = ();
my @event_mask = ();
my @astmanproxy_servers = ();
my @manager_conectado = ();
my %manager_desconectado;
my %mask_hash;
my $web_hostname;
my $listen_port;
my $park_exten;
my $parktimeout;
my $listen_addr;
my $security_code;
my $flash_dir;
my $astmanproxy_server = "";
my $restrict_channel = "";
my $poll_interval;
my $poll_voicemail;
my $kill_zombies;
my $ren_agentlogin;
my $ren_cbacklogin;
my $ren_agentname;
my $agent_status;
my $ren_queuemember;
my $ren_wildcard;
my $clid_privacy;
my %clid_private;
my %group_count;
my $show_ip;
my $queue_hide;
my $enable_restart;
my $passvars = "";
my $change_led;
my $cdial_nosecure;
my $barge_muted;
my $debuglevel = -1;
my $debuglevel_cache = "";
my $cont_debug_cache = 0;
my $flash_file;
my %barge_rooms;
my %barge_context;
my $first_room;
my $last_room;
my $clid_format;
my $directorio = "";
my $auth_md5 = 1;
my $astmanproxy_host = "";
my $astmanproxy_port = "5038";
my $md5challenge;
my $reverse_transfer;
my %shapes;
my %legends;
my %images;
my %no_encryption = ();
my %total_shapes;
my %total_legends;
my %total_images;
my @serverinclude = ();
my @btninclude = ();
my @styleinclude = ();
my $command = "";
my $daemonized = 0;
my $pidfile = "/var/run/op_panel.pid";
my $logdir = "";
my $confdir = "";
my $tab = "";
my $PADDING = join(
'',
map( chr,
(
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
) )
);
my %a2b = (
A => 000,
B => 001,
C => 002,
D => 003,
E => 004,
F => 005,
G => 006,
H => 007,
I => 010,
J => 011,
K => 012,
L => 013,
M => 014,
N => 015,
O => 016,
P => 017,
Q => 020,
R => 021,
S => 022,
T => 023,
U => 024,
V => 025,
W => 026,
X => 027,
Y => 030,
Z => 031,
a => 032,
b => 033,
c => 034,
d => 035,
e => 036,
f => 037,
g => 040,
h => 041,
i => 042,
j => 043,
k => 044,
l => 045,
m => 046,
n => 047,
o => 050,
p => 051,
q => 052,
r => 053,
s => 054,
t => 055,
u => 056,
v => 057,
w => 060,
x => 061,
y => 062,
z => 063,
'0' => 064,
'1' => 065,
'2' => 066,
'3' => 067,
'4' => 070,
'5' => 071,
'6' => 072,
'7' => 073,
'8' => 074,
'9' => 075,
'+' => 076,
'_' => 077,
);
my %b2a = reverse %a2b;
my $rand_byte_already_called = 0;
$SIG{PIPE} = 'IGNORE';
$SIG{ALRM} = 'alarma_al_minuto';
$SIG{INT} = 'close_all';
$SIG{HUP} = 'generate_configs_onhup';
$SIG{USR1} = 'dump_internal_hashes_to_stdout';
GetOptions(
'p|pidfile=s' => \$pidfile,
'l|logdir=s' => \$logdir,
'c|confdir=s' => \$confdir,
'd|daemon' => \$daemonized,
'V|version' => \$version,
'x|debuglevel=i' => \$debuglevel,
'help|?' => \$help
);
pod2usage(1) if $help;
if ( $version == 1 ) {
print "op_server.pl version $FOP_VERSION\n";
exit 0;
}
if ( $confdir eq "" ) {
# if there is no config directory supplied at the command line
# use the same directory where op_server.pl lives
$directorio = $0;
$directorio =~ s/(.*)\/(.*)/$1/g;
}
else {
$directorio = $confdir;
}
if ( $logdir ne "" ) {
open( STDOUT, ">>$logdir/output.log" )
or die "Can't open output log $logdir/error.log";
open( STDERR, ">>$logdir/error.log" )
or die "Can't open output log $logdir/error.log";
}
if ( $daemonized == 1 ) {
defined( my $pid = fork ) or die "Can't Fork: $!";
exit if $pid;
setsid or die "Can't start a new session: $!";
open MYPIDFILE, ">$pidfile"
or die "Failed to open PID file $pidfile for writing.";
print MYPIDFILE $$;
close MYPIDFILE;
close(STDIN);
if ( $logdir eq "" ) {
close STDOUT;
close STDERR;
}
}
sub read_language_config() {
$/ = "\n";
# tries to read and parse every language file needed
foreach my $ctx (@panel_contexts) {
if ( !defined( $config->{$ctx}{language} ) ) {
$config->{"$ctx"}{language} = $defaultlanguage;
}
my $lang = $config->{$ctx}{language};
$lang =~ tr/A-Z/a-z/;
$lang =~ s/\W//g;
$config->{$ctx}{language} = $lang;
open( CONFIG, "<$directorio/op_lang_$lang.cfg" )
or die("Could not open $directorio/op_lang_$lang.cfg. Aborting...");
while () {
chop;
$_ =~ s/^\s+//g;
$_ =~ s/([^;]*)[;](.*)/$1/g;
$_ =~ s/\s+$//g;
next unless $_ ne "";
my ( $variable_name, $value ) = split( /=/, $_ );
$variable_name =~ tr/A-Z/a-z/;
$variable_name =~ s/\s+//g;
$value =~ s/^\s+//g;
$value =~ s/\s+$//g;
$value =~ s/\"//g;
$language->{$ctx}{$variable_name} = $value;
}
close(CONFIG);
}
$/ = "\0";
}
sub parse_amportal_config {
my $filename = shift;
my %ampconf;
open( AMPCONF, $filename ) || die "Cannot open $filename";
while () {
if ( $_ =~ /^\s*([a-zA-Z0-9]+)\s*=\s*(.*)\s*([;#].*)?/ ) {
$ampconf{$1} = $2;
}
}
close(AMPCONF);
return %ampconf;
}
sub read_server_config() {
my $context = "";
my @distinct_files;
$counter_servers = -1;
$/ = "\n";
@distinct_files = unique(@serverinclude);
foreach my $archivo (@distinct_files) {
open( CONFIG, "<$directorio/$archivo" )
or die("Could not open op_server.cfg. Aborting...");
while () {
chomp;
$_ =~ s/^\s+//g;
$_ =~ s/([^;]*)[;](.*)/$1/g;
$_ =~ s/\s+$//g;
if ( /^#/ || /^;/ || /^$/ ) {
next;
} # Ignores comments and empty lines
if (/^\Q[\E/) {
s/\[(.*)\]/$1/g;
tr/a-z/A-Z/;
$context = $_;
}
else {
if ( $context ne "" ) {
my ( $variable_name, $value ) = split( /=/, $_ );
$variable_name =~ tr/A-Z/a-z/;
$variable_name =~ s/\s+//g;
$value =~ s/^\s+//g;
$value =~ s/\s+$//g;
$value =~ s/\"//g;
$config->{$context}{$variable_name} = $value;
if ( $variable_name eq "manager_host" ) {
$counter_servers++;
$manager_host[$counter_servers] = $value;
}
if ( $variable_name eq "manager_user" ) {
$manager_user[$counter_servers] = $value;
}
if ( $variable_name eq "manager_secret" ) {
$manager_secret[$counter_servers] = $value;
}
if ( $variable_name eq "manager_port" ) {
$manager_port[$counter_servers] = $value;
}
if ( $variable_name eq "event_mask" ) {
$event_mask[$counter_servers] = $value;
}
if ( $variable_name eq "astmanproxy_server" ) {
push @astmanproxy_servers, $value;
}
}
}
}
close(CONFIG);
}
if ( defined( $config->{GENERAL}{use_amportal_conf} ) ) {
if ( $config->{GENERAL}{use_amportal_conf} == 1 ) {
my $freepbx_config = "/etc/amportal.conf";
my %ampconf;
if ( -e $freepbx_config ) {
%ampconf = parse_amportal_config($freepbx_config);
$config->{"GENERAL"}{"web_hostname"} = $ampconf{"AMPWEBADDRESS"};
$config->{"GENERAL"}{"security_code"} = $ampconf{"FOPPASSWORD"};
$config->{"GENERAL"}{"flash_dir"} = $ampconf{"FOPWEBROOT"};
$manager_user[0] = $ampconf{"AMPMGRUSER"};
$manager_secret[0] = $ampconf{"AMPMGRPASS"};
}
}
}
$web_hostname = $config->{GENERAL}{web_hostname};
$listen_port = $config->{GENERAL}{listen_port};
$listen_addr = $config->{GENERAL}{listen_addr};
$security_code = $config->{GENERAL}{security_code};
$flash_dir = $config->{GENERAL}{flash_dir};
$poll_interval = $config->{GENERAL}{poll_interval};
$poll_voicemail = $config->{GENERAL}{poll_voicemail};
$kill_zombies = $config->{GENERAL}{kill_zombies};
$reverse_transfer = $config->{GENERAL}{reverse_transfer};
$auth_md5 = $config->{GENERAL}{auth_md5};
$astmanproxy_host = $config->{GENERAL}{astmanproxy_host};
$astmanproxy_port = $config->{GENERAL}{astmanproxy_port};
$ren_agentlogin = $config->{GENERAL}{rename_label_agentlogin};
$ren_cbacklogin = $config->{GENERAL}{rename_label_callbacklogin};
$ren_wildcard = $config->{GENERAL}{rename_label_wildcard};
$ren_agentname = $config->{GENERAL}{rename_to_agent_name};
$agent_status = $config->{GENERAL}{agent_status};
$ren_queuemember = $config->{GENERAL}{rename_queue_member};
$change_led = $config->{GENERAL}{change_led_agent};
$cdial_nosecure = $config->{GENERAL}{clicktodial_insecure};
$barge_muted = $config->{GENERAL}{barge_muted};
$clid_privacy = $config->{GENERAL}{clid_privacy};
$show_ip = $config->{GENERAL}{show_ip};
$queue_hide = $config->{GENERAL}{queue_hide};
$enable_restart = $config->{GENERAL}{enable_restart};
$defaultlanguage = $config->{GENERAL}{language};
$passvars = $config->{GENERAL}{passvars};
$park_exten = $config->{GENERAL}{parkexten};
$parktimeout = $config->{GENERAL}{parktimeout};
if ( $debuglevel == -1 ) {
$debuglevel = $config->{GENERAL}{debug};
}
my @todos_los_rooms;
foreach my $val ($config) {
while ( my ( $aa, $bb ) = each( %{$val} ) ) {
while ( my ( $cc, $dd ) = each( %{$bb} ) ) {
if ( $cc eq "barge_rooms" ) {
( $first_room, $last_room ) = split( /-/, $dd );
if ( !defined($last_room) ) {
$last_room = $first_room;
}
my @arrayroom = $first_room .. $last_room;
foreach (@arrayroom) {
$barge_context{"$_"} = $aa;
}
push( @todos_los_rooms, @arrayroom );
}
}
}
}
%barge_rooms = map { $todos_los_rooms[$_], 0 } 0 .. $#todos_los_rooms;
$clid_format = $config->{GENERAL}{clid_format};
if ( !defined($flash_dir) ) { $flash_dir = '/var/www/html' }
$flash_file = $flash_dir . "/variables.txt";
push @all_flash_files, $flash_file;
if ( !defined $web_hostname ) {
$web_hostname = "";
}
if ( !defined $listen_port ) {
$listen_port = 4445;
}
if ( !defined $listen_addr ) {
$listen_addr = "0.0.0.0";
}
if ( !defined $astmanproxy_host ) {
$astmanproxy_host = "";
}
else {
@manager_host = ();
@manager_user = ();
@manager_secret = ();
push @manager_host, $astmanproxy_host;
push @manager_user, "astmanproxy";
push @manager_secret, "astmanproxy";
}
if ( defined $astmanproxy_port ) {
@manager_port = ();
push @manager_port, $astmanproxy_port;
}
if ( !defined $security_code ) {
die("Missing security_code in op_server.cfg!");
}
if ( !defined $flash_dir ) { die("Missing flash_dir in op_server.cfg!"); }
if ( !defined $poll_interval ) {
die("Missing poll_interval in op_server.cfg!");
}
if ( !defined $ren_agentlogin ) {
$ren_agentlogin = 0;
}
if ( !defined $defaultlanguage ) {
$defaultlanguage = "en";
$config->{DEFAULT}{language} = "en";
}
if ( !defined $config->{GENERAL}{monitor_filename} ) {
$config->{GENERAL}{monitor_filename} = "\${UNIQUEID}";
}
if ( !defined $config->{GENERAL}{monitor_format} ) {
$config->{GENERAL}{monitor_format} = "wav";
}
if ( !defined $clid_privacy ) {
$clid_privacy = 0;
}
if ( !defined $show_ip ) {
$show_ip = 0;
}
if ( !defined $queue_hide ) {
$queue_hide = 0;
}
if ( !defined $ren_wildcard || $ren_wildcard eq "" ) {
$ren_wildcard = 1;
}
if ( !defined $reverse_transfer || $reverse_transfer eq "" ) {
$reverse_transfer = 0;
}
if ( !defined $barge_muted || $barge_muted eq "" ) {
$barge_muted = 0;
}
if ( !defined $enable_restart || $enable_restart eq "" ) {
$enable_restart = 0;
}
if ( !defined $cdial_nosecure || $cdial_nosecure eq "" ) {
$cdial_nosecure = 0;
}
if ( !defined $agent_status || $agent_status eq "" ) {
$agent_status = 0;
}
if ( !defined $ren_agentname || $ren_agentname eq "" ) {
$ren_agentname = 0;
}
if ( !defined $ren_cbacklogin || $ren_cbacklogin eq "" ) {
$ren_cbacklogin = 0;
}
if ( !defined $ren_queuemember || $ren_queuemember eq "" ) {
$ren_queuemember = 0;
}
if ( !defined $change_led || $change_led eq "" ) {
$change_led = 0;
}
if ( !defined $kill_zombies || $kill_zombies eq "" ) {
$kill_zombies = 0;
}
if ( !defined $poll_voicemail || $poll_voicemail eq "" ) {
$poll_voicemail = 0;
}
if ( !defined $clid_format ) {
$clid_format = "(xxx) xxx-xxxx";
}
if ( !defined $passvars ) {
$passvars = "";
}
if ( !defined $park_exten ) {
$park_exten = "700";
}
if ( !defined $parktimeout ) {
$parktimeout = 45000;
}
else {
$parktimeout = $parktimeout * 1000;
}
if ( !defined $debuglevel ) {
$debuglevel = 0;
}
else {
if ( $daemonized == 1 && $logdir eq "" ) {
$debuglevel = 0;
}
}
$/ = "\0";
}
sub collect_includes {
my $filename = shift;
my $tipo = shift;
my $archivo = $directorio . "/" . $filename;
if ( !-r $archivo ) {
log_debug( "** $archivo not readable... skipping", 16 ) if DEBUG;
return;
}
if ( $tipo eq "buttons" ) {
if ( !grep { $filename eq $_ } @btninclude ) {
push( @btninclude, $filename );
}
else {
log_debug( "** $filename already included", 16 ) if DEBUG;
return;
}
}
if ( $tipo eq "style" ) {
if ( !grep { $filename eq $_ } @styleinclude ) {
push( @styleinclude, $filename );
}
else {
log_debug( "** $filename already included", 16 ) if DEBUG;
return;
}
}
if ( $tipo eq "server" ) {
if ( !grep { $filename eq $_ } @serverinclude ) {
push( @serverinclude, $filename );
}
else {
log_debug( "** $filename already included", 16 ) if DEBUG;
return;
}
}
open( CONFIG, "< $archivo" )
or die("Could not open $filename. Aborting...\n\n");
my @lineas = ;
my $cuantos = @lineas;
foreach my $linea (@lineas) {
$linea =~ s/^\s+//g;
$linea =~ s/([^;]*)[;](.*)/$1/g;
$linea =~ s/\s+$//g;
if ( $linea =~ /^include/ ) {
# store include lines in an array so we can
# process them later excluding duplicates
$linea =~ s/^include//g;
$linea =~ s/^\s+//g;
$linea =~ s/^=>//g;
$linea =~ s/^\s+//g;
$linea =~ s/\s+$//g;
collect_includes( $linea, $tipo );
}
}
close CONFIG;
}
sub read_astdb_config() {
$/ = "\n";
if ( -e "$directorio/op_astdb.cfg" ) {
open( ASTDB, "<$directorio/op_astdb.cfg" )
or die("Could not open op_astdb.cfg. Aborting...");
my $contador = 0;
my $key = "";
while () {
chomp;
$_ =~ s/^\s+//g;
$_ =~ s/([^;]*)[;](.*)/$1/g;
$_ =~ s/\s+$//g;
if ( /^#/ || /^;/ || /^$/ ) {
next;
} # Ignores comments and empty lines
if (/^\Q[\E/) {
s/\[(.*)\]/$1/g;
$key = $_;
}
else {
push @{ $astdbcommands{$key} }, $_;
}
}
}
close(ASTDB);
$/ = "\0";
}
sub read_buttons_config() {
my @btn_cfg = ();
my $contador = -1;
my @distinct_files;
my $no_counter = 0;
my @contextos = ();
my %lastposition = ();
$/ = "\n";
@distinct_files = unique(@btninclude);
foreach my $archivo (@distinct_files) {
open( CONFIG, "< $directorio/$archivo" )
or die("Could not open $directorio/$archivo. Aborting...");
# Read op_buttons.cfg loading it into a hash for easier processing
while () {
chomp;
$_ =~ s/^\s+//g;
$_ =~ s/([^;]*)[;](.*)/$1/g;
$_ =~ s/\s+$//g;
if ( /^#/ || /^;/ || /^$/ ) {
next;
} # Ignores comments and empty lines
if (/^\Q[\E/) {
$contador++;
s/\[(.*)\]/$1/g;
my $channel = $_;
$btn_cfg[$contador]{'channel_preserve_case'} = $channel;
$btn_cfg[$contador]{'channel'} = $channel;
}
else {
next unless ( $contador >= 0 );
my ( $key, $val ) = split( /=/, $_, 2 );
if ( !defined($val) ) { $val = ""; }
$key =~ tr/A-Z/a-z/;
$key =~ s/^\s+//g;
$key =~ s/(.*)\s+/$1/g;
if ( $key ne "label"
&& $key ne "font_family"
&& $key ne "text"
&& $key ne "mailbox"
&& $key ne "voicemail_context" )
{
$val =~ s/^\s+//g;
$val =~ s/(.*)\s+/$1/g;
}
$btn_cfg[$contador]{$key} = $val;
if ( $key eq "panel_context" ) {
push @contextos, $val;
}
}
}
close(CONFIG);
}
# Read now the auto_sip button config files
foreach my $papi ( sort keys %autosip ) {
if ( !defined( $autosip{$papi}{channel} ) ) { next; }
$contador++;
log_debug( "-----", 16 ) if DEBUG;
$btn_cfg[$contador]{'channel_preserve_case'} = $autosip{$papi}{channel};
$btn_cfg[$contador]{'channel'} = $autosip{$papi}{channel};
if ( defined( $cnt_auto_pos{ $autosip{$papi}{autonumber} } ) ) {
$cnt_auto_pos{ $autosip{$papi}{autonumber} }++;
}
else {
$cnt_auto_pos{ $autosip{$papi}{autonumber} } = 0;
}
my $pos = $autosip{$papi}{starting_position} + $cnt_auto_pos{ $autosip{$papi}{autonumber} };
$btn_cfg[$contador]{'position'} = $pos;
$btn_cfg[$contador]{'channel'} = $autosip{$papi}{channel};
my $logblock = "\n[" . $autosip{$papi}{channel} . "]\n";
log_debug( $autosip{$papi}{channel} . " at position $pos", 16 ) if DEBUG;
while ( my ( $key, $val ) = each( %{ $autosip{$papi} } ) ) {
if ( $val eq "" ) {
log_debug( "** Empty value for autosip for key $key, button $papi", 1 ) if DEBUG;
next;
}
$btn_cfg[$contador]{$key} = $val;
$logblock .= "$key=$val\n";
if ( $key eq "panel_context" ) {
push @contextos, $val;
}
}
log_debug( "$logblock", 1 ) if DEBUG;
}
my @uniq2 = unique(@contextos);
@contextos = @uniq2;
@uniq2 = grep { !/\*/ } @contextos;
@contextos = @uniq2;
push @contextos, "DEFAULT";
push @contextos, "GENERAL";
# Convert every element to uppercase
@panel_contexts = map { uc } @contextos;
# Pass to replicate panel_context=* configuration
my @copy_cfg = ();
@copy_cfg = @btn_cfg;
foreach (@copy_cfg) {
my %tmphash = %$_;
if ( defined( $tmphash{panel_context} ) ) {
if ( $tmphash{panel_context} eq "*" ) {
foreach my $contextoahora (@contextos) {
$contador++;
while ( my ( $key, $val ) = each(%tmphash) ) {
if ( $key eq "panel_context" ) {
$val = $contextoahora;
}
$btn_cfg[$contador]{$key} = $val;
}
}
}
}
}
# We finished reading the file, now we populate our
# structures with the relevant data
my %rectangles_counter;
my %legends_counter;
my %images_counter;
my $cont_auto = 0;
CONFIG:
foreach (@btn_cfg) {
my @positions = ();
my %tmphash = %$_;
if ( defined( $tmphash{panel_context} ) ) {
if ( $tmphash{panel_context} eq "*" ) {
# We skip the * panel_context because we already
# expand them to every context possible before
next CONFIG;
}
}
if ( $tmphash{channel} =~ /^AUTO/i ) {
$auto_buttons = 1;
while ( my ( $key, $val ) = each(%tmphash) ) {
$auto_config[$cont_auto]{$key} = $val;
}
$cont_auto++;
next CONFIG;
}
if ( $tmphash{channel} =~ /^_/ ) {
$regexp_buttons = 1;
}
elsif ( $tmphash{channel} =~ /^QUEUEAGENT\//i ) {
$queueagent_buttons = 1;
}
elsif ( $tmphash{channel} =~ /^image$/i ) {
# Image config primitive
if ( defined( $tmphash{panel_context} ) ) {
$tmphash{panel_context} =~ tr/a-z/A-Z/;
$tmphash{panel_context} =~ s/^DEFAULT$//xms;
}
else {
$tmphash{panel_context} = "";
}
my $conttemp = $tmphash{panel_context};
if ( $conttemp eq "" ) { $conttemp = "GENERAL"; }
if ( !defined( $tmphash{src} ) ) {
next CONFIG;
}
if ( !defined( $tmphash{url} ) ) {
$tmphash{url} = "no";
}
if ( !defined( $tmphash{target} ) ) {
$tmphash{target} = "NONTARFOP";
}
$images_counter{$conttemp}++;
if ( $images_counter{$conttemp} > 1 ) {
$images{$conttemp} .= "&";
}
$total_images{$conttemp}++;
$images{$conttemp} .= "image_$images_counter{$conttemp}=" . $tmphash{x} . ",";
$images{$conttemp} .= $tmphash{y} . ",";
$images{$conttemp} .= $tmphash{src} . ",";
$images{$conttemp} .= $tmphash{url} . ",";
$images{$conttemp} .= $tmphash{target};
next CONFIG;
}
elsif ( $tmphash{channel} =~ /^legend$/i ) {
# Legend config primitive
if ( defined( $tmphash{panel_context} ) ) {
$tmphash{panel_context} =~ tr/a-z/A-Z/;
$tmphash{panel_context} =~ s/^DEFAULT$//xms;
}
else {
$tmphash{panel_context} = "";
}
my $conttemp = $tmphash{panel_context};
if ( $conttemp eq "" ) { $conttemp = "GENERAL"; }
if ( !defined( $tmphash{text} ) ) {
$tmphash{text} = "LEGEND";
}
if ( !defined( $tmphash{x} ) ) {
$tmphash{x} = 1;
}
if ( !defined( $tmphash{y} ) ) {
$tmphash{y} = 1;
}
if ( !defined( $tmphash{font_size} ) ) {
$tmphash{font_size} = 16;
}
if ( !defined( $tmphash{font_color} ) ) {
$tmphash{font_color} = "000000";
}
if ( !defined( $tmphash{use_embed_fonts} ) ) {
$tmphash{use_embed_fonts} = 1;
}
if ( !defined( $tmphash{font_family} ) ) {
$tmphash{font_family} = "Arial";
}
if ( !defined( $tmphash{no_base64} ) ) {
$tmphash{no_base64} = 0;
}
if ( $tmphash{no_base64} == 0 ) {
$tmphash{text} = encode_base64( $tmphash{text} );
}
if ( !defined( $tmphash{url} ) ) {
$tmphash{url} = "no";
}
if ( !defined( $tmphash{target} ) ) {
$tmphash{target} = "NONTARFOP";
}
$legends_counter{$conttemp}++;
if ( $legends_counter{$conttemp} > 1 ) {
$legends{$conttemp} .= "&";
}
$total_legends{$conttemp}++;
$legends{$conttemp} .= "legend_$legends_counter{$conttemp}=" . $tmphash{x} . ",";
$legends{$conttemp} .= $tmphash{y} . ",";
$legends{$conttemp} .= $tmphash{text} . ",";
$legends{$conttemp} .= $tmphash{font_size} . ",";
$legends{$conttemp} .= $tmphash{font_family} . ",";
$legends{$conttemp} .= $tmphash{font_color} . ",";
$legends{$conttemp} .= $tmphash{use_embed_fonts} . ",";
$legends{$conttemp} .= $tmphash{no_base64} . ",";
$legends{$conttemp} .= $tmphash{url} . ",";
$legends{$conttemp} .= $tmphash{target};
next CONFIG;
}
elsif ( $tmphash{channel} =~ /^RECTANGLE$/i ) {
# Rectangle config primitive
if ( defined( $tmphash{panel_context} ) ) {
$tmphash{panel_context} =~ tr/a-z/A-Z/;
$tmphash{panel_context} =~ s/^DEFAULT$//;
}
else {
$tmphash{panel_context} = "";
}
my $conttemp = $tmphash{panel_context};
if ( $conttemp eq "" ) { $conttemp = "GENERAL"; }
if ( !defined( $tmphash{x} ) ) {
$tmphash{x} = 1;
}
if ( !defined( $tmphash{y} ) ) {
$tmphash{y} = 1;
}
if ( !defined( $tmphash{width} ) ) {
$tmphash{width} = 1;
}
if ( !defined( $tmphash{height} ) ) {
$tmphash{height} = 1;
}
if ( !defined( $tmphash{line_width} ) ) {
$tmphash{line_width} = 1;
}
if ( !defined( $tmphash{line_color} ) ) {
$tmphash{line_color} = "0x000000";
}
if ( !defined( $tmphash{fade_color1} ) ) {
$tmphash{fade_color1} = "0xd0d0d0";
}
if ( !defined( $tmphash{fade_color2} ) ) {
$tmphash{fade_color2} = "0xd0d000";
}
if ( !defined( $tmphash{rnd_border} ) ) {
$tmphash{rnd_border} = 3;
}
if ( !defined( $tmphash{alpha} ) ) {
$tmphash{alpha} = 100;
}
if ( !defined( $tmphash{layer} ) ) {
$tmphash{layer} = "bottom";
}
$rectangles_counter{$conttemp}++;
if ( $rectangles_counter{$conttemp} > 1 ) {
$shapes{$conttemp} .= "&";
}
$total_shapes{$conttemp}++;
$shapes{$conttemp} .= "rect_$rectangles_counter{$conttemp}=" . $tmphash{x} . ",";
$shapes{$conttemp} .= $tmphash{y} . ",";
$shapes{$conttemp} .= $tmphash{width} . ",";
$shapes{$conttemp} .= $tmphash{height} . ",";
$shapes{$conttemp} .= $tmphash{line_width} . ",";
$shapes{$conttemp} .= $tmphash{line_color} . ",";
$shapes{$conttemp} .= $tmphash{fade_color1} . ",";
$shapes{$conttemp} .= $tmphash{fade_color2} . ",";
$shapes{$conttemp} .= $tmphash{rnd_border} . ",";
$shapes{$conttemp} .= $tmphash{alpha} . ",";
$shapes{$conttemp} .= $tmphash{layer};
next CONFIG;
}
if ( !defined( $tmphash{position} ) ) {
log_debug( "** Ignored button $tmphash{'channel'}, position?", 16 ) if DEBUG;
next CONFIG;
}
if ( !defined( $tmphash{alarm} ) ) {
$tmphash{alarm} = "0";
}
if ( !defined( $tmphash{url} ) ) {
$tmphash{url} = "0";
}
if ( !defined( $tmphash{target} ) ) {
$tmphash{target} = "0";
}
if ( !defined( $tmphash{server} ) ) {
$tmphash{server} = 0;
}
else {
if ( $tmphash{server} eq "*" ) { $tmphash{server} = 0; }
$tmphash{server} = $tmphash{server} - 1;
}
if ( !defined( $tmphash{label} ) ) {
$tmphash{label} = $tmphash{channel};
}
if ( !defined( $tmphash{icon} ) ) {
$tmphash{icon} = "0";
}
# Local channels are case sensitive
my $canal_key = "";
if ( $tmphash{channel} =~ m/^local/i ) {
$canal_key = $tmphash{channel};
}
else {
$canal_key = uc( $tmphash{channel} );
}
my $canal_key_case = $tmphash{channel_preserve_case};
if ( $canal_key =~ m/^PARK\d/ ) {
# Change the PARKXXX tu PARK/XXX
$canal_key =~ s/PARK(.*)/PARK\/$1/g;
$canal_key_case =~ s/PARK(.*)/PARK\/$1/gi;
}
if ( defined( $tmphash{panel_context} ) ) {
$tmphash{panel_context} =~ tr/a-z/A-Z/;
$tmphash{panel_context} =~ s/^DEFAULT$//;
}
else {
$tmphash{panel_context} = "";
}
if ( $tmphash{panel_context} ne "" ) {
# We want to add the context in case we have the same button
# repeated in several panel_contexts. If we do not add it, then
# only the last panel context will prevail.
$canal_key .= "&" . $tmphash{panel_context};
$canal_key_case .= "&" . $tmphash{panel_context};
}
if ( ( $tmphash{position} !~ /,/ )
&& ( $tmphash{position} !~ /-/ )
&& ( $canal_key =~ /^_/ ) )
{
# If it's a regexp button with just one position
# we fake the same position number to populate
# the array and make the button work anyways.
my $pos = $tmphash{position};
$pos =~ s/(\d+),(\d+)/$1/g;
my $countpos = 2;
$tmphash{position} = "";
if ( defined( $tmphash{count} ) ) {
$countpos = $tmphash{count};
}
my $a = 0;
for ( $a = 0 ; $a < $countpos ; $a++ ) {
$tmphash{position} .= "$pos,";
}
$tmphash{position} = substr( $tmphash{position}, 0, -1 );
$no_counter = 1;
}
else {
$no_counter = 0;
}
if ( $tmphash{position} =~ /[,-]/ ) {
my $canalidx = $tmphash{server} . "^" . $tmphash{channel};
if ( defined( $tmphash{panel_context} )
&& $tmphash{panel_context} ne "" )
{
$canalidx .= "&" . $tmphash{panel_context};
}
$instancias{ uc($canalidx) }{""} = 0;
my @ranges = split( /,/, $tmphash{position} );
foreach my $valu (@ranges) {
if ( $valu !~ m/-/ ) {
if ( $valu eq "n" ) {
my $lastpos = $lastposition{ $tmphash{panel_context} };
if ( is_number($lastpos) ) {
$lastpos++;
$lastposition{ $tmphash{panel_context} } = $lastpos;
$valu = $lastpos;
push @positions, $valu;
last;
}
}
push @positions, $valu;
}
else {
my @range2 = split( /-/, $valu );
my $menor = $range2[0] < $range2[1] ? $range2[0] : $range2[1];
my $mayor = $range2[0] > $range2[1] ? $range2[0] : $range2[1];
my @newrange = $menor .. $mayor;
foreach my $valevale (@newrange) {
push @positions, $valevale;
}
}
}
my $count = 0;
foreach my $pos (@positions) {
$count++;
my $indice_contexto = $pos;
my $chan_trunk = $tmphash{channel} . "=" . $count;
my $chan_trunk_case = $tmphash{channel_preserve_case} . "=" . $count;
if ( $tmphash{panel_context} ne "" ) {
$chan_trunk .= "&" . $tmphash{panel_context};
$chan_trunk_case .= "&" . $tmphash{panel_context};
$indice_contexto .= "@" . $tmphash{panel_context};
$pos .= "@" . $tmphash{panel_context};
}
if ( $chan_trunk =~ m/^QUEUE/i ) {
$buttons_queue{ uc("$tmphash{server}^$chan_trunk") } = $pos;
}
$buttons_preserve_case{"$tmphash{server}^$chan_trunk_case"} = $pos;
if ( defined( $tmphash{astdbkey} ) ) {
$buttons_astdbkey{"$tmphash{server}^$chan_trunk_case"} = $tmphash{astdbkey};
}
$buttons{ uc("$tmphash{server}^$chan_trunk") } = $pos;
$textos{$indice_contexto} = $tmphash{label};
if ( !defined( $tmphash{no_label_counter} ) ) { $tmphash{no_label_counter} = 0; }
if ( $no_counter == 0 && $tmphash{no_label_counter} == 0 ) {
$textos{$indice_contexto} .= " " . $count;
}
$iconos{$indice_contexto} = $tmphash{icon};
$urls{$indice_contexto} = $tmphash{url};
$alarms{$indice_contexto} = $tmphash{alarm};
$targets{$indice_contexto} = $tmphash{target};
$button_server{$pos} = $tmphash{server};
# Saves last position for the button@context
$lastposition{ $tmphash{panel_context} } = $pos;
log_debug( qq[** $tmphash{server}^$chan_trunk in position $pos], 16 ) if DEBUG;
}
}
else {
my $lastpos = 0;
$lastpos = $lastposition{ $tmphash{panel_context} }
if defined( $lastposition{ $tmphash{panel_context} } );
if ( $tmphash{position} eq "n" ) {
if ( is_number($lastpos) ) {
$lastpos++;
$lastposition{ $tmphash{panel_context} } = $lastpos;
}
}
else {
$lastpos = $tmphash{position};
$lastposition{ $tmphash{panel_context} } = $lastpos;
}
log_debug( qq[** $tmphash{channel} in next position $lastpos], 16 ) if DEBUG;
if ( $tmphash{panel_context} ne "" ) {
if ( $canal_key =~ m/^QUEUE/i ) {
$buttons_queue{ uc("$tmphash{server}^$canal_key") } = $lastpos . "\@" . $tmphash{panel_context};
}
$buttons{"$tmphash{server}^$canal_key"} = $lastpos . "\@" . $tmphash{panel_context};
$buttons_preserve_case{"$tmphash{server}^$canal_key_case"} = $lastpos . "\@" . $tmphash{panel_context};
if ( defined( $tmphash{astdbkey} ) ) {
$buttons_astdbkey{"$tmphash{server}^$canal_key_case"} = $tmphash{astdbkey};
}
$textos{"$lastpos\@$tmphash{panel_context}"} = $tmphash{label};
$iconos{"$lastpos\@$tmphash{panel_context}"} = $tmphash{icon};
$urls{"$lastpos\@$tmphash{panel_context}"} = $tmphash{url};
$alarms{"$lastpos\@$tmphash{panel_context}"} = $tmphash{alarm};
$targets{"$lastpos\@$tmphash{panel_context}"} = $tmphash{target};
$button_server{ $buttons{"$tmphash{server}^$canal_key"} } = $tmphash{server};
}
else {
if ( $canal_key =~ /^_/ ) {
$canal_key .= "=1";
}
if ( $canal_key =~ m/^QUEUE/i ) {
$buttons_queue{ uc("$tmphash{server}^$canal_key") } = $lastpos;
}
$buttons{"$tmphash{server}^$canal_key"} = $lastpos;
$buttons_preserve_case{"$tmphash{server}^$canal_key_case"} = $lastpos;
if ( defined( $tmphash{astdbkey} ) ) {
$buttons_astdbkey{"$tmphash{server}^$canal_key_case"} = $tmphash{astdbkey};
}
$textos{$lastpos} = $tmphash{label};
$iconos{$lastpos} = $tmphash{icon};
$urls{$lastpos} = $tmphash{url};
$alarms{$lastpos} = $tmphash{alarm};
$targets{$lastpos} = $tmphash{target};
$button_server{ $buttons{"$tmphash{server}^$canal_key"} } = $tmphash{server};
}
}
@positions = unique(@positions);
if ( defined( $tmphash{groupcount} ) ) {
my $count = @positions;
if ( $count == 0 ) {
push @positions, $lastposition{ $tmphash{panel_context} };
}
if ( $tmphash{groupcount} eq "true" || $tmphash{groupcount} eq "1" ) {
my $agre_context = "";
if ( $tmphash{panel_context} ne "" ) {
$agre_context = "\@" . $tmphash{panel_context};
}
foreach my $pos (@positions) {
$group_count{"$pos$agre_context"} = 1;
}
}
}
if ( defined( $tmphash{privacy} ) ) {
my $count = @positions;
if ( $count == 0 ) {
push @positions, $lastposition{ $tmphash{panel_context} };
}
if ( $tmphash{privacy} eq "true" || $tmphash{privacy} eq "1" ) {
my $agre_context = "";
if ( $tmphash{panel_context} ne "" ) {
$agre_context = "\@" . $tmphash{panel_context};
}
foreach my $pos (@positions) {
$clid_private{"$pos$agre_context"} = 1;
}
}
}
if ( defined( $tmphash{no_rectangle} ) ) {
my $count = @positions;
if ( $count == 0 ) {
push @positions, $lastposition{ $tmphash{panel_context} };
}
if ( $tmphash{no_rectangle} eq "true" || $tmphash{no_rectangle} eq "1" ) {
my $pcont = $tmphash{panel_context};
if ( $pcont eq "" ) { $pcont = "GENERAL"; }
foreach my $pos (@positions) {
$pos =~ s/\@$pcont//g;
$no_rectangle{$pcont}{$pos} = 1;
}
}
}
if ( defined( $tmphash{background} ) ) {
my $count = @positions;
if ( $count == 0 ) {
push @positions, $lastposition{ $tmphash{panel_context} };
}
my $pcont = $tmphash{panel_context};
if ( $pcont eq "" ) { $pcont = "GENERAL"; }
foreach my $pos (@positions) {
$pos =~ s/\@$pcont//g;
$background{$pcont} .= "&bg$pos=$tmphash{background}";
}
}
if ( defined( $tmphash{extension} ) ) {
if ( defined( $tmphash{context} ) ) {
$extension_transfer{"$tmphash{server}^$canal_key"} = $tmphash{server} . "^" . $tmphash{extension} . "@" . $tmphash{context};
}
else {
$extension_transfer{"$tmphash{server}^$canal_key"} = $tmphash{server} . "^" . $tmphash{extension};
}
if ( defined( $tmphash{voicemail_context} ) ) {
$mailbox{"$tmphash{server}^$canal_key"} = $tmphash{extension} . "@" . $tmphash{voicemail_context};
}
}
if ( defined( $tmphash{mailbox} ) ) {
$mailbox{"$tmphash{server}^$canal_key"} = $tmphash{mailbox};
}
if ( defined( $tmphash{voicemailext} ) ) {
my $indicevm = $lastposition{ $tmphash{panel_context} };
if ( $tmphash{panel_context} ne "" ) {
$indicevm .= "\@$tmphash{panel_context}";
}
$tovoicemail{$indicevm} = $tmphash{voicemailext};
}
if ( defined( $tmphash{spyext} ) ) {
my $indicespy = $lastposition{ $tmphash{panel_context} };
if ( $tmphash{panel_context} ne "" ) {
$indicespy .= "\@$tmphash{panel_context}";
}
$tospy{$indicespy} = $tmphash{spyext};
}
$/ = "\0";
}
%extension_transfer_reverse = reverse %extension_transfer;
%buttons_reverse = reverse %buttons;
%buttons_queue_reverse = reverse %buttons_queue;
}
sub genera_config {
# This sub generates the file variables.txt that is read by the
# swf movie on load, with info about buttons, layout, etc.
my @textsclients = (
'detail_title', 'detail_from', 'detail_to', 'security_code_title',
'btn_security_text', 'btn_restart_text', 'btn_reload_text', 'btn_debug_text',
'btn_help_text', 'tab_call_text', 'tab_queue_text', 'calls_taken_text',
'no_data_text', 'debug_window_title', 'detail_duration', 'clid_label',
'version_mismatch'
);
$/ = "\n";
my %style_variables;
my @contextos = ();
my @unique_contexts = ();
my $contextoactual = "";
my $highest_position = 0;
my @style_include = ();
foreach my $archi (@styleinclude) {
open( STYLE, "<$directorio/$archi" )
or die("Could not open $archi for reading");
while (