Tcc sistema de automação residencial baseado em plataforma open hardware e open source

  • 1,173 views
Uploaded on

TCC apresentado ao Curso de Sistemas de Informação na Faculdade de Ouro Preto do Oeste - UneOuro

TCC apresentado ao Curso de Sistemas de Informação na Faculdade de Ouro Preto do Oeste - UneOuro

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,173
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
22
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. FACULDADE DE INFORMÁTICA DE OURO PRETO DO OESTE - FIOURO KASSIANO HENRIQUE DE OLIVEIRA PRETTOSISTEMA DE AUTOMAÇÃO RESIDENCIAL BASEADO EM PLATAFORMA OPEN HARDWARE E OPEN SOURCE Ouro Preto do Oeste 2011
  • 2. KASSIANO HENRIQUE DE OLIVEIRA PRETTOSISTEMA DE AUTOMAÇÃO RESIDENCIAL BASEADO EM PLATAFORMA OPEN HARDWARE E OPEN SOURCE Trabalho de Conclusão de Curso apresentado a Faculdade de Informática de Ouro Preto do oeste - FIOURO, para obtenção de grau acadêmico de Bacharel em Sistemas de informação, sob orientação do Professor Me Vagner Schoaba. Ouro Preto do Oeste 2011
  • 3. KASSIANO HENRIQUE DE OLIVEIRA PRETTO SISTEMA DE AUTOMAÇÃO RESIDENCIAL BASEADO EM PLATAFORMA OPEN HARDWARE E OPEN SOURCETrabalho de Conclusão de Curso apresentado à Faculdade de Ouro Preto doOeste – UNEOURO, em 13/12/2011, para obtenção de grau acadêmico de Bacharelem Sistemas de Informação, sob orientação do Professor Me Vagner Schoaba.. AVALIADORES _________________________________,___________ Cleyton Ferrari, Esp – Nota _________________________________,___________ Juliana Braz da Costa, Esp – Nota _________________________________,___________ Vagner Schoaba, Me – Nota ____________________ Média Ouro Preto do Oeste 2011
  • 4. Agradecimentos Agradeço primeiramente a Deus, por ter me dado à oportunidade de estar cursando o nível superior, a minha família que sempre me apoiou e entendeu aqueles momentos que não foi possível estar presente, por motivos maiores de estar me dedicando aos estudos. A todos os meus professores e amigos da faculdade que nos acompanharão.
  • 5. "Ter coragem não é algo que requeira qualificações excepcionais, fórmulas mágicas oucombinações especiais de hora, lugar e circunstância. É uma oportunidade que, mais cedo ou mais tarde, é apresentada para cada um de nós." ( John F. Kennedy )
  • 6. RESUMOO presente trabalho tem como objetivo o desenvolvimento de um sistema para quegerencie aparelhos elétricos de uma residência de maneira digital, assim irá oferecermais conforto e segurança aos usuários. O simples fato de uma pessoa ter que selevantar para ligar ou desligar um interruptor de uma lâmpada, pode serimplementado com um SAR (Sistema de Automação Residencial), que é tudo o quese automatiza em uma residência de maneira manual para automática ou digital. Odesenvolvimento será baseado em plataformas Open Hardware e Open Software,com a intenção de oferecer ao usuário um sistema de baixo custo, assim irá sepropagar em diversos níveis de classes sociais. O sistema será baseado em duasplataformas, cliente e servidor, sendo que a cliente será disponibilizada um site oSAR-WEB, para que o usuário possa utilizar para gerir a sua residência de qualquerplataforma que tenha acesso a internet, a versão servidor que é o SAR-LOCAL seráinstalado no computador que irá ficar o servidor web, sendo que o mesmo iráverificar alterações efetuadas no banco de dados feitas pelo SAR-WEB assimenviando comandos para um microcontrolador Arduíno com as Shields relés etemperatura.Palavras Chaves: Conforto, Segurança, Dispositivo Móvel, Residência.
  • 7. ABSTRACTThis study aims to develop a system to manage appliances in a home so digital, sowill offer more comfort and safety for users. Just because a person has to get up toturn a switch on a lamp, can be implemented with a SAR (Home AutomationSystem), which is all that automates the way home in a manual or automatic digital .The development platforms will be based on Open Hardware and Open Software,with the intention of offering the user a low cost system, and will propagate atdifferent levels of social classes. The system is based on two platforms, one clientand one server, and the customer will be provided a web-site SAR, so that the usercan use to manage your home on any platform that has Internet access, the serverversion what is the SAR-LOCAL will be installed on the computer that will run theweb server, and will check the same changes to the database made by the SAR-WEB so by sending commands to a microcontroller with the Arduíno Shields relaysand temperature.Keywords: Comfort, Safety, Mobile Device, Home.
  • 8. LISTA DE FIGURASFigura 01 – Desenho Gráfico do Arduíno 18Figura 02 – Arduíno Serial 19Figura 03 – Arduíno UNO 20Figura 04 – Arduíno MINI 21Figura 05 – Arduíno LilyPad 22Figura 06 – Arduíno BT 23Figura 07 – Arduíno MEGA 24Figura 08 – Módulo Relé 25Figura 09 – Sensor de Temperatura 26Figura 10 – Diagrama de Caso de Uso 34Figura 11 – Diagrama de Sequência do formulário de Cadastro 35Figura 12 – Diagrama de Sequência do acionamento de dispositivos 35Figura 13 – Diagrama de Entidade Relacional 37Figura 14 – Funcionamento do Sistema 38Figura 15 – Shields Ethernet acoplada no Arduíno MEGA 40Figura 16 – Tela de Login do Sistema 41Figura 17 – Tela Inicial do Sistema 42Figura 18 – Tela de Cadastros 43Figura 19 – Tela de Cômodos Cadastrados 44Figura 20 – Tela de Cadastro de Cômodos 45Figura 21 – Tela de Edição de Cômodos 46Figura 22 – Tela de exibição dos Dispositivos 47Figura 23 – Tela de Edição de Dispositivos 48Figura 24 – Tela de Usuários Cadastrados 49Figura 25 – Tela de Cadastro de Usuarios 50Figura 26 – Tela de Edição de Usuários 51Figura 27 – Tela principal de Gerenciamento 52Figura 28 – Tela de Exibição do Dispositivo Cadastrado ao Cômodo 53Figura 29 – Tela de Gerenciamento do Dispositivo 54Figura 30 – Tela de Exibição do Dispositivo Cadastrado ao Cômodo 55
  • 9. Figura 31 – Tela de Exibição da Temperatura do Ambiente 56Figura 32 – Tela do SAR-LOCAL 57Figura 33 – Tela do SAR-LOCAL em Execução 58Figura 34 – Tela do SAR-LOCAL na Barra de Tarefas 59Figura 35 – Maquete 60
  • 10. LISTA DE ABREVIATURAS E SIGLAS1. PHP - Hypertext Preprocessor2. PIC - Programmable Interface Controller3. I/O - Input/output4. SAR - Sistema de Automação Residencial5. GNU GPL - General Public License6. BSD - Berkeley Software Distribution7. LGPL - Lesser General Public License8. DLL - Dynamic-link library9. USB - Universal Serial Bus10. V – Volts11. PWM - Pulse Width Modulation12. mA – miliAmperes13. Mhz - mega-hertz14. KB - Kilobyte15. HTML - HyperText Markup Language16. HTTP - Hypertext Transfer Protocol17. IMAP - Internet Message Access Protocol18. SNMP - Simple Network Management Protocol19. NNTP - Network News Transfer Protocol20. POP3 - Post Office Protocol21. NCP - Network Control Protocol22. FTP - File Transfer Protocol23. WWW - World Wide Web
  • 11. SUMÁRIOINTRODUÇÃO .................................................................................................................................... 102. AUTOMAÇÃO RESIDENCIAL ..................................................................................................... 112.1 OPEN HARDWARE E OPEN SOURCE ..................................................................................... 132.2 HARDWARE UTILIZADO........................................................................................................ 162.3.1. ARDUÍNO ......................................................................................................................... 162.3.2. VERSÕES ARDUÍNO .......................................................................................................... 18 A. ARDUÍNO SERIAL............................................................................................................................ 19 B. ARDUÍNO UNO ............................................................................................................................... 20 C. ARDUÍNO MINI .............................................................................................................................. 21 D. ARDUÍNO LILYPAD ......................................................................................................................... 22 E. ARDUÍNO BT .................................................................................................................................. 23 F. ARDUÍNO MEGA ............................................................................................................................ 242.3.3. SHIELDS ............................................................................................................................ 25 A. SHIELDS MÓDULO RELÉ ................................................................................................................. 25 B. SHIELDS SENSOR DE TEMPERATURA ............................................................................................. 263. METODOLOGIA E FERRAMENTAS ............................................................................................ 27A. PHP ........................................................................................................................................... 27B. BANCO DE DADOS MYSQL........................................................................................................ 28C. APACHE .................................................................................................................................... 28D. WAMPSERVER 2.1E .................................................................................................................. 29E. C/C++ ........................................................................................................................................ 29F. DIA 0.97.1-1.............................................................................................................................. 29G. INTERNET.................................................................................................................................. 30H. REDES SEM FIO ......................................................................................................................... 31I. DDNS ........................................................................................................................................ 31
  • 12. J. VISUAL BASIC 2008 EXPRESS EDITION ..................................................................................... 32K. JQUERY ..................................................................................................................................... 323.1 MODELAGEM DO SISTEMA .................................................................................................. 33A. UML .......................................................................................................................................... 33B. CASO DE USO............................................................................................................................ 33C. DIAGRAMA DE SEQUÊNCIA ...................................................................................................... 34D. DICIONÁRIO DE DADOS ............................................................................................................ 36E. DIAGRAMA DE ENTIDADE RELACIONAL ................................................................................... 374. FUNCIONAMENTO DO SISTEMA .............................................................................................. 38A. COMPONENTES DO SISTEMA ................................................................................................... 39B. ACESSO AO SISTEMA ................................................................................................................ 39C. PROJETOS FUTUROS ................................................................................................................. 395. RESULTADOS ............................................................................................................................ 41CONCLUSÃO ...................................................................................................................................... 61REFERÊNCIAS BIBLIOGRÁFICAS ......................................................................................................... 62APÊNDICES ........................................................................................................................................ 651. CÓDIGO FONTE DO SISTEMA ................................................................................................... 66
  • 13. 10INTRODUÇÃO Novas tecnologias surgem, e cada vez mais as pessoas procuram facilidadespara o seu dia a dia, porém, muitas dessas tecnologias possuem alto valor deimplantação, que torna difícil a aquisição. Quando fala-se em tecnologia, as pessoas associam este termo aos carros eseus computadores de bordo, celular, tablets e dezenas de outros dispositivosdisponíveis no mercado. Algo que chama a atenção de muitos por oferecer grandeconforto e segurança, são as casas inteligentes que podem ser gerenciadas porpessoas sem mesmo que esteja dentro dela. Muitas ações podem ser executadas, até o simples fato de uma pessoa ligare desligar uma lâmpada pelo interruptor pode ser modificado com a implantação deum sistema de automação residencial, poderá ser manipulado por um sistema que écontrolado por um computador ou até mesmo um dispositivo móvel com acesso arede de internet. Um sistema de automação residencial é composto de placas microcontroladacom chip programável e um sistema lógico para gerenciamento, sendo que placasmicrocontroladoras mais sofisticadas possuem um valor alto de implantação eferramentas mais complexas para a utilização. Visando um baixo custo para a implementação do sistema será utilizado omicrocontrolador Arduíno, que é de código aberto e livre para que pessoas comconhecimento em eletrônica e programação possam utilizar da sua imaginação paradesenvolver projetos. Com as fabricações das Shields podem-se adicionar novoscomponentes que aumentam a capacidade de gerenciamento do Arduíno, comoplacas de rede, Bluetooth, Sensores entre outros. Propondo a implementação de um sistema que será capaz de gerenciar umaresidência, que será utilizado das mais novas tecnologias para que se possa garantirconforto e segurança às pessoas que irão ter acesso ao uso do SAR-WEB.
  • 14. 11 2. AUTOMAÇÃO RESIDENCIAL Domótica que se refere à junção da palavra latina Domus (casa) comRobótica, que se traduz na instalação de tecnologia em uma residência, que a tornaa Automação Residencial. De acordo com ALPHATRON (2011), nos Estados Unidos a AutomaçãoResidencial já esta presente em mais de 5 milhões de residência, é amplamenteutilizado no Canadá, Europa e Ásia. No Brasil ainda é pouco difundido o uso de automação residencial, mas comas novas tecnologias que estão surgindo, logo todos poderão automatizar as suasresidências com um baixo custo. O gerenciamento ocorre com o uso de um controleremoto ou até mesmo um telefone celular, e é um procedimento nominado deAutomação Residencial. A grande comodidade de estar no quarto e poder desligar a luz da sala pelotelefone celular já pode ser implantado por um sistema de automação residencial.Podem-se incluir itens como iluminação, segurança, temperatura de ambientes econtrole de equipamentos diversos. No controle de iluminação, como por exemplo, pode ser ligado e desligadouma luz em um exato momento assim como programar horários para permaneceremligadas durante um período. Ao se afastar da residência, uma pessoa pode programar para que emdeterminada hora as luzes do jardim possam se desligar, permitindo a simulação dapresença de uma pessoa na residência, afastando possíveis invasões por elementosmal intencionadas. Na área de segurança, um sistema de automação residencial pode gerenciarsensores instalados na residência. Assim poderá acionar alarmes ou comunicar ao
  • 15. 12proprietário da residência, através de alertas no telefone celular ou e-mail, apresença de um intruso. A temperatura de um ambiente interno pode variar com o horário e o climadas estações do ano. Em um SAR encontram-se sistemas capazes de fazer a leiturada temperatura de um ambiente, dessa forma pode ser programadas ações deacordo com a temperatura. Como por exemplo, caso a temperatura esteja abaixo de15ºC, um aquecedor poderá ser acionado para permanecer ligado até que atemperatura chegue em 20ºC. A mesma checagem poderá ocorrer quando atemperatura estiver elevada, sendo assim, o sistema poderá acionar o ar-condicionado e reduzi-la até um determinado ponto. Controles de equipamentos podem ser incluídos de acordo com anecessidade. Assim como o ar-condicionado e o aquecedor, outros dispositivospodem ser controlados para diversas finalidades, como, alimentar um animal, ligarou desligar regadores de plantas, filtros de piscinas, aquários e outros. Existe umagama de equipamentos que podem ser acionados e programados para determinadotempo em funcionamento, bastando para isso, estar interligado ao SAR.
  • 16. 13 2.1 OPEN HARDWARE E OPEN SOURCE Para o desenvolvimento do projeto serão utilizadas às plataformas OpenSource e Open Hardware, visando o menor custo possível para a implantação dosistema, assim o SAR irá se popularizar com mais facilidade. Nos Tópicos abaixoserão detalhados o que são cada uma das plataformas. • Open Hardware são placas que tem a disposição às informações paraque possam ser fabricadas, são fornecidos os diagramas, circuito impresso e dadostécnicos, assim pessoas podem produzi-las domesticamente e até mesmocomercializá-la. Segundo MELLIS (2009), o Hardware de código aberto traz as vantagens dese adaptar ao modelo de negócios e o fornecimento de diversas situações para osprojetos. Empresas podem vender kits para a montagem de dispositivos compatíveiscom Arduíno, por exemplo. Para MELLIS (2009), o Hardware de código aberto em longo prazo vai sesustentar, pois é diferente de outros negócios. As empresas têm que fazer um preçojusto para que possam vender. Trabalhando com o código aberto, nos influencia acada vez mais trabalhar com qualidade, pois outras empresas podem fabricar omesmo produto e vender. • Open Source são sistemas que fornecem os códigos para que maispessoas podem modificá-los e melhorá-los, Open Source em português significacódigo aberto e também muito conhecido como sendo Software livre. Em 1998 aempresa OSI (Open Source Initiative) criou o termo Open Source. Para CAMPOS (2006), “Software Livre é o software que pode ser usado,copiado, estudado, modificado e redistribuído sem restrição”. Para SACSTECH CONSULTORIA E SERVIÇOS(2011), um programa comcódigo aberto deve garantir os seguintes requisitos.
  • 17. 14 • Distribuição livre, a Licença não deve restringir de nenhuma maneira a venda ou distribuição do programa gratuitamente. • Código Fonte, deve ser incluído o código fonte junto a distribuição, ou em outra fonte na internet, e deve ser de fácil entendimento para qualquer programador. • Trabalhos derivados, podem ser modificados e distribuídos da mesma maneira que foram distribuídos a licença original. • Integridade do autor do código fonte, a licença pode restringir o código fonte de ser distribuído em uma forma modificada apenas esta permitir a distribuição de atualização do código fonte para o propósito de modificação do programa no momento de sua construção. • Não discriminação contra pessoas ou grupos, A licença não pode discriminatória contra qualquer pessoa ou grupo de pessoas. • Não discriminação contra áreas de atuação, A licença não deve restringir qualquer pessoa de usar o programa em um ramo específico de autuação. • Distribuição da Licença, Os direitos associados ao programa devem ser aplicáveis para todos aqueles cujo programa é redistribuído, sem a necessidade de execução de uma licença adicional para estas partes. Atualmente existem diversos tipos de licenças Open Source, os quais serãodescrito a seguir. Para BORTOLI (2009), GNU GPL - A Licença Pública Geral GNU (GNUGeneral Public License, GPL) é a mais comum existente, e prevê que os softwaressob sua guarda estejam em código-aberto e assim permaneçam após eventuaismodificações. Ou seja, se determinada empresa, usuário ou desenvolvedor forincorporar ou modificar o código, precisará liberar a versão final. Para BORTOLI (2009), BSD - A licença BSD elaborada pela BerkeleySoftware Distribution impõe poucas restrições sobre a forma de utilização,alterações e redistribuição do software licenciado. Ao contrário da GPL, ela prevê
  • 18. 15que um software modificado a partir de um código-aberto possa ser vendido, e nãoobrigatoriamente aberto. Para BORTOLI (2009), Artistic License - Essa licença permite a redistribuiçãode arquivos binários, mas restringe a redistribuição de códigos modificados, a fim deproteger os autores de determinado software. LGPL ou Library GPL. Esta é uma variação da licença GPL que permite odesenvolvimento de programas de código aberto que contenham módulosproprietários. Na GPL "tradicional" todo o código do programa é aberto, isso atendebem à maioria dos projetos colaborativos. A LGPL funciona melhor nestes casos,pois permite que você desenvolva programas "semi abertos" onde parte do códigodo programa está disponível e o restante das funções é proporcionada por algunsbinários que não possuem seu código aberto, estes binários linkados no programano momento da compilação, de uma forma análoga às DLLs do Windows.MORIMOTO (2005).
  • 19. 16 2.2 HARDWARE UTILIZADO Para o desenvolvimento desde trabalho será utilizado uma placamicrocontroladora que é open hardware e open source, para que o projeto não tenhaum custo elevado, assim se tornando um sistema de baixo custo e fácil aquisição.Serão detalhados os modelos de placas Arduíno e ao final a placa a ser utilizada noprojeto e seus componentes para que possam auxiliar no gerenciamento dedispositivos, que são as placas Shields. 2.3 ARDUÍNO No desenvolvimento deste trabalho será utilizado à placa Arduíno, por seruma plataforma de fácil implementação e Baixo custo. Atualmente no Brasil é umatecnologia nova, mas segundo o site Olhar digital possui uma comunidadecolaborativa na web o www.arduino.cc, que já possui mais de vinte mil pessoas detodo o mundo. Segundo BOEIRA (2011), a placa microcontroladora Arduíno foi inventada naItália, em 2005, veio para revolucionar o mundo da tecnologia, pois com ela épossível trazer o mundo real para a tecnologia ou vice versa, tanto se envia sinaiscomo recebe sinal de um objeto do mundo real com auxilio de sensores. Trabalhacom um Microcontrolador PIC, que é o gerenciador da placa, pode ser implementadaem diversas linguagens, uma dela é o PHP, que será utilizada para desenvolver oprojeto. Em 2005 na cidade de Ivrea se iniciou a prototipagem de uma placamicrocontrolada para que as instituições possam reduzir custo na implantação deprojetos estudantis de eletrônica e informática. Assim se deu inicio a plataformaArduíno (Arduino.cc). Conforme o Site Oficial (Arduino.cc), O seu sucesso teve início com orecebimento de uma menção honrosa na categoria Comunidades Digital em 2006
  • 20. 17pela Prix ArsElectronica. Assim obteve um grande volume de vendas com mais de50.000 placas vendidas até outubro de 2008 com o seu microcontrolador AtmelAVR.Arduíno é uma placa open hardware de licença Creative Commons, sendo assim,possui diversas empresas que o fabrica e vende por um preço mais acessível, destaforma estudantes podem desenvolver projetos com o custo reduzido e de ótimaqualidade. Para Werneck (2009), Arduíno é uma placa microcontroladora, computadorfísico baseado numa simples plataforma de hardware livre, que possui suporte paraI/O (entradas/saídas), utilizando uma linguagem de compilação C/C++. O objetivodesta placa é a criação de projetos de baixo custo, assim poderão ser acessíveis ausuários de eletrônica básica e informática. O Arduíno inicialmente foi desenvolvido com uma interface de comunicaçãoserial, porta de comunicação mais comum para computadores da época. Devido àevolução dos meios de comunicação entre dispositivos, o Arduíno, atualmente,possui uma interface de conexão USB, porém, com o surgimento de novas Shields omesmo pode expandir suas interfaces de comunicação para rede ethernet, wireless,Bluetooth, entre outros. De acordo com o site oficial do Arduíno há um questionamento sobre porquêusar o Arduíno? “Há muitos outros microcontroladores e plataformas de microcontroladores disponíveis para a computação física. Parallax Basic Stamp, BX-24 é NetMedia, Phidgets, Handyboard do MIT, e muitos outros oferecem funcionalidade semelhante. Todas essas ferramentas levam os detalhes confusos de programação de microcontroladores e envolvê-lo em um pacote fácil de usar. Arduíno também simplifica o processo de trabalhar com microcontroladores, mas oferece algumas vantagens para os professores, estudantes e amadores interessados em outros sistemas”. O autor WERNECK (2009), passa a ideia que o Arduíno por serimplementada em uma linguagem multi-plataforma, podendo ser desenvolvido emsistemas Linux, Mac e Windows. Sendo assim Não há a necessidade de programarum software para cada sistema operacional. Enquanto a maioria dos outrosmicrocontroladores são limitados para Windows.
  • 21. 18 Possui uma IDE de programação amigável, segundo o site Arduino.cc “atémesmo uma criança de 12 anos pode desenvolver um aplicativo simples para rodarno Arduíno”, mas, suficientemente flexível para que usuários avançados possamdesenvolver e utilizar todo o seu potencial. 2.3.1. VERSÕES ARDUÍNO Até o desenvolvimento deste trabalho foram produzidas comercialmente 11versões do dispositivo que foram encontradas no site oficial (arduíno.cc) , ArduínoSerial, Arduíno UNO, Arduíno EXTREME, Arduíno MINI, Arduíno nano, ArduínoLilyPad, Arduíno NG, Arduíno NG PLUS, ArduínoBT, ArduínoDiecimila, ArduínoDuemilanove, Arduíno MEGA. As versões existentes têm o mesmo objetivo, que é controlar os dispositivosdo mundo real, mas cada placa possui uma característica que é o seu tamanho oucapacidade de gerenciamento. Assim analisando cada uma, poderá identificar qualplaca que será utilizada no projeto a ser desenvolvido. Figura 01 – Desenho Gráfico do Arduíno Fonte: http://www.artificialtourism.com/arduino-workshopNos próximos tópicos serão detalhadas algumas das versões acima, nas quaispossuem diferenças relevantes entre elas.
  • 22. 19 A. ARDUÍNO SERIALPrimeira placa desenvolvida para o uso em projetos pequenos e objetivos.Atualmente não é mais produzida comercialmente, devido a sua interface decomunicação Serial RS232 que é pouco encontrado no mercado. No site oficial doArduíno há dicas de fabricação caseira da placa. Figura 02 - Arduíno Serial Fonte: http://arduino.cc/en/Main/ArduinoBoardSerial Tabela 01 - Descrição do Arduíno Serial. Microcontrolador ATMEGA328 Tensão de funcionamento 5V Tensão de entrada (recomendado) 7-12V Tensão de entrada (limites) 6-20V E / S Digital Pinos 14 (dos quais 6 oferecem saída PWM) Pinos de entrada analógica 6 DC Corrente por pino de E / S 40 mA Corrente DC 3.3V para Pinos 50 mA 32 KB ( ATMEGA328 ), dos quais 0,5 KB utilizado Memória Flash pelo gerenciador de boot SRAM 2 KB ( ATmega328 ) EEPROM 1 KB ( ATMEGA328 ) Velocidade do clock 8 MHz Preço Não possui a venda. Fonte: http://arduino.cc/en/Main/ArduinoBoardSerial
  • 23. 20 B. ARDUÍNO UNO O Arduíno UNO representa a versão 1.0, foi a primeira a ser fabricada com ainterface de comunicação USB. A placa Arduíno UNO é mais indicada parainiciantes devido ao seu baixo custo, mas o que deixa a desejar é a sua poucacapacidade de gerenciamento de dispositivos. Figura 03 - Arduíno UNO Fonte: http://arduino.cc/en/Main/ArduinoBoardUno Tabela 02 - Descrição do Arduíno UNO. Microcontrolador ATMEGA328 Tensão de funcionamento 5V Tensão de entrada (recomendado) 7-12V Tensão de entrada (limites) 6-20V E / S Digital Pinos 14 (dos quais 6 oferecem saída PWM) Pinos de entrada analógica 6 DC Corrente por pino de E / S 40 mA Corrente DC 3.3V para Pinos 50 mA 32KB(ATMEGA328), sendo 0,5KB utilizado pelo Memória Flash gerenciador de boot SRAM 2 KB ( ATMEGA328 ) EEPROM 1 KB ( ATMEGA328 ) Velocidade do clock 16 MHz Preço R$136,00 Fonte: http://arduino.cc/en/Main/ArduinoBoardUno
  • 24. 21 C. ARDUÍNO MINI Placa desenvolvida com um tamanho menor que as anteriores, mas com amesma capacidade de processamento das já desenvolvidas, a diferença é que deveser adicionado Shields para a comunicação com o computador ou outro Arduíno. Éuma placa para projetos pequenos para ser adaptada em locais que as demais nãose adaptam. Figura 04 – Arduíno MINI Fonte: http://arduino.cc/en/Main/ArduinoBoardMini Tabela 03 – Descrição Arduíno MINI Microcontrolador ATMEGA168 Tensão de funcionamento 5V Tensão de entrada V 7-9 E / S Digital Pins 14 (dos quais 6 oferecem saída PWM) Pinos de entrada analógica 8 (dos quais 4 são divididos em pinos) DC Corrente por pino de E / S 40 mA Memória Flash 16 KB (dos quais 2 KB utilizado pelo gerenciador de boot) SRAM 1 KB EEPROM 512 bytes Velocidade do clock 16 MHz Preço R$86,00 Fonte: http://arduino.cc/en/Main/ArduinoBoardMini
  • 25. 22 D. ARDUÍNO LILYPAD Placa desenvolvida no modelo circular com 50mm de diâmetro, para projetosportáteis, devido ser flexível a mesma pode ser montado até mesmo em um tecido,utilizando uma montagem superficial. Figura 05 - Arduíno LilyPad Fonte: http://arduino.cc/en/Main/ArduinoBoardLilyPad Tabela 04 - Descrição ARDUÍNO LILYPAD Microcontrolador ATMEGA168V ou ATMEGA328V Tensão de funcionamento 2,7-5,5 V Tensão de entrada 2,7-5,5 V E / S Digital Pinos 14 (dos quais 6 oferecem saída PWM) Pinos de entrada analógica 6 DC Corrente por pino de E / S 40 mA Memória Flash 16 KB (dos quais 2 KB utilizado pelo gerenciador de boot) SRAM 1 KB EEPROM 512 bytes Velocidade do clock 8 MHz Preço R$110,00 Fonte: http://arduino.cc/en/Main/ArduinoBoardLilyPad
  • 26. 23 E. ARDUÍNO BT Placa desenvolvida com base no Microcontrolador Atmega168, com a mesmacapacidade que o Arduíno UNO, porém com a grande vantagem de possuircomunicação sem fio via Bluetooth. Um exemplo que pode ser implementado comesta placa é um sistema que controle um robô, assim o usuário poderá, através deum meio de comunicação totalmente sem fio, gerenciar o robô à distância. Figura 06 – Arduíno BT. Fonte: http://arduino.cc/en/Main/ArduinoBoardBluetooth Tabela 05 – Descrição Arduíno BT. Microcontrolador ATMEGA168 Tensão de funcionamento 5V Tensão de entrada 1,2-5,5 V E / S Digital Pinos 14 (dos quais 6 oferecem saída PWM) Pinos de entrada analógica 6 DC Corrente por pino de E/S 40 mA Corrente DC 3.3V para Pin 50 mA Memória Flash 16 KB (dos quais 2 KB utilizado pelo gerenciador de boot) SRAM 1 KB EEPROM 512 bytes Velocidade do relógio 16 MHz Preço R$399,00 Fonte: http://arduino.cc/en/Main/ArduinoBoardBluetooth
  • 27. 24 F. ARDUÍNO MEGA O Arduíno MEGA é uma placa modificada com uma grande quantidade deentradas e saída Digitais e analógicas, que possui duas versões microcontroladora,o ATMEGA2560 e o ATMEGA1280, a diferença entre elas é a capacidade dememória flash e gerenciador de boot. Ambas possuem mais capacidade de entradase saídas que as placas anteriores, obtendo um ótimo custo e beneficio, esse é umdos motivos na qual será utilizada a mesma para a construção deste projeto. Figura 07 – Arduíno MEGA. Fonte: http://arduino.cc/en/Main/ArduinoBoardMega2560 Tabela 07 – Descrição Arduíno MEGA. Microcontrolador ATMEGA2560 / ATMEGA1280 Tensão de funcionamento 5V Tensão de entrada (recomendado) 7-12v Tensão de entrada (limites) 6-20V E / S Digital Pins 54 (dos quais 14 oferecem saída PWM) Pinos de entrada analógica 16 DC Corrente por pino de E / S 40 mA Corrente DC 3.3V para Pin 50 mA Memória Flash - ATmega2560 256 KB, dos quais 8KB utilizado pelo gerenciador de boot. Memória Flash – Atmega1280 128 KB, dos quais 4KB utilizado pelo gerenciador de boot. SRAM 8 KB EEPROM 4 KB Velocidade do relógio 16 MHz Preço ATMEGA2560 R$ 220,00 Preço ATMEGA1280 R$ 150,00 Fonte: http://arduino.cc/en/Main/ArduinoBoardMega2560
  • 28. 25 2.3.2. SHIELDS São placas que são usados para que possa ter um maior gerenciamentojunto ao Arduíno, normalmente são instaladas em cima do próprio Arduíno com ointuito de ocupar menos espaços, mas existem certos modelos que devido ao seutamanho e local são instaladas em caixas apropriadas para o uso. A. SHIELDS MÓDULO RELÉ O módulo Relé é uma placa de circuito que possui componentes, borne e umRelé que são projetados para ativar ou desativar um determinado equipamento,como ventiladores, lâmpadas, liberação de portas e diversos equipamentos quenecessitam de energia para operar, de acordo com a Siemens Para MORIMOTO (2005), O Relé é um dispositivo eletromecânico, formadopor um magneto móvel, que se desloca unindo dois contatos metálicos. O módulo Relé que será utilizado neste projeto irá receber uma carga deentrada de 5volts, que acionará o Relé e libera a energia elétrica para acionar umdispositivo, como uma lâmpada ou até mesmo um ventilador, a energia liberadapode variar entre 110volts e 220volts. Figura 08 – Módulo Relé Fonte: http://sbt.siemens.com/FIS/productdoc/catalogs/3125pr.pdf
  • 29. 26 B. SHIELDS SENSOR DE TEMPERATURA De acordo com o Glossário de Termos Técnicos, Sensores são “Sofisticadosinstrumentos científicos capazes de detectar e analisar quase tudo que se possaimaginar”. Existem diversos tipos de sensores, neste projeto serão usados somenteo sensores de Temperatura que analisa a temperatura atual e informam a umdispositivo que será armazenado ou exibido em alguma tela. O sensor de temperatura é um componente eletrônico que recebe atemperatura atual do ambiente e envia ao Arduíno em forma de milivolts, assim osistema irá fazer a conversão e tomará as decisões de acordo com a temperatura. OSensor a ser utilizado será o LM35 devido ser o que mais se adaptou com atecnologia Arduíno. Figura 09 – Sensor de Temperatura Fonte: http://www.robotbase.cc
  • 30. 27 3. METODOLOGIA E FERRAMENTAS Para o desenvolvimento deste projeto, foi utilizado o método dedutivo, e apesquisa teórica para que possa colocar os estudos em prática. Foram pesquisadosdiversos sites para que auxiliassem nos estudos, pois a utilização de plataformasopen hardware e open source são métodos de grande utilização, para se ter umsistema de baixo custo e grande diferencial. Nos tópicos abaixo será detalhado um pouco mais sobre as ferramentas queserão utilizadas para o desenvolvimento do projeto. A. PHP No desenvolvimento da interface deste projeto será utilizada a linguagem descript PHP, pois esta é considerada uma linguagem de fácil compreensão, multiplataforma além do fato de ser uma das linguagens mais utilizadas paraprogramação web. Segundo ULLMAN ( 2001), “PHP é o melhor, mais rápido e maisfácil de aprender que outras linguagens semelhantes”. Para BRAVALHERI (2011), PHP é uma ferramenta de desenvolvimento webde sites dinâmicos, sua linguagem é baseada em scripts. A partir da versão 4 alinguagem PHP recebeu uma Enginer, aplicativo na qual executa os scripts,chamada Zend, que pode ser incorporada em HTML. Foi concebido em 1994 porRasmus Lerdorf que disponibilizou seu código fonte na web, e possibilitava autilização na maior parte dos servidores HTTP. Segundo BRAVALHERI (2011), A vantagem que o PHP possui suporte nativoa uma grande quantidade de banco de dados, como o dBase, Interbase, mSQL,mySQL, Oracle, Sybase, PostgreSQL. Outros serviços podem ser encontradoatravés de protocolos, como o IMAP, SNMP, NNTP, POP3 e, logicamente, HTTP.
  • 31. 28 B. BANCO DE DADOS MYSQL O Banco de Dados MySQL é um sistema gerenciador de dados desenvolvidoinicialmente para a sistemas web, possui uma grande quantidade de programadoresque utilizam em seus projetos para web a nível mundial, sendo também que um dosfatores que influenciam a sua escolha é devido o mesmo ter sua licença gratuitadisponível no site oficial http://www.mysql.com. Segundo SILVA (2001) O MySQL é um servidor de banco de dados desenvolvido em C de médio porte, que conta com um ótimo sistema de segurança. Sua principal característica é a sua conveniência com o ambiente multiusuário e multitarefa ideal para a internet. O servidor de banco de dados pode ser encontrado em diversas plataformas, entre elas: windows, linux, FreeBSD e Unix. Esse gerenciador possui arquitetura cliente/servidor. O MySQL possui eficiente gerenciador de transações críticas para a gestãode e-commerce online, Data Warehousing, sistema de geração de relatórios esistemas de analises. C. APACHE Será utilizado o Servidor Apache para fornecer um serviço de hospedagem doSAR-WEB, sendo um dos mais utilizado por programadores PHP, possui sua licençagratuita e de código aberto para que possa ser alterado. Para FERNANDO (2011), o servidor Apache foi criado para a interpretação delinguagens WEB, muito utilizado por programadores em PHP. Possui a função de lero programa, e converter fazendo os sistemas rodarem em modo usuário, ou seja,transformando tudo o que foi escrito em linhas de comando para uma forma visual ede interação com os utilizadores do sistema. No inicio o servidor Apache foi criadosomente para a plataforma UNIX podendo ser instalado em sistemas operacionaisrelacionados, como Linux e FreeBSD, atualmente já é possível a instalação emplataforma Windows.
  • 32. 29 D. WAMPSERVER 2.1E WAMPSERVER é um pacote de instalação do servidor WEB com Apache,PHP e MySql, que já vem pré-configurado, e possui licença gratuita GNU A grandefacilidade de utilização da ferramenta influenciou a sua escolha. “WAMPSERVER é uma plataforma para desenvolvimento Web noWindows. Ele permite que você desenvolva aplicações Web dinâmicas utilizando oservidor Apache 2, a linguagem de script PHP e banco de dados MySQL. Temtambém o PHPMyAdmin para gerenciar mais facilmente seus bancos dedados.”(WAMPSERV). E. C/C++ A linguagem C/C++ será utilizada para que possam ser compilados oscódigos na placa Arduíno, assim poderá ser gerenciada a placa com a linguagem descript PHP. A Linguagem C++ foi desenvolvida por Dennis M. Ritchie no inicio da décadade 70, herdou idéias e características de outras linguagens de programação, como alinguagem BCPL que foi criada por Martin Richards em 1967 e a linguagem B, quefoi criada por Ken Thompson em 1970. SAADE, (2003). Segundo SAADE, (2003) A linguagem C foi desenvolvida nos Laboratórios Bell, por Bjarne Stroustrup no início da década de 1980, com a sua primeira versão liberada em 1985. C++ baseia-se na linguagem C, a qual Stroustrup adicionou características de orientação a objetos, herdadas da linguagem Simula 67. Assim, excluindo-se detalhes, C torna-se um subconjunto de C++. Isso quer dizer que, um programa C é também um programa C++. F. DIA 0.97.1-1 Será utilizado o Dia para a modelagem dos dados devido ser um programagratuito e de fácil uso, possui suporte a maioria dos diagramas. Segundo o site da
  • 33. 30Info, O DIA é inspirado no programa da Microsoft, o Visio. Ele pode ser usado parao desenho de diferentes tipos de diagramas. Atualmente, tem objetos especiais paraajudar no desenho de diagramas de entidade-relacionamento, UML, gráficos defluxo, diagramas de rede e muitos outros diagramas. G. INTERNET O sistema poderá fornecer um link na internet que o usuário terá o acesso aele como se estivesse em sua residência, possibilitando gerenciá-lo, bastando umaconexão com internet. Possuirá uma ferramenta que fornecera um endereço fixopara o acesso, assim não será necessária à contratação de um endereço fixo para osistema. Segundo ZEVALLOS (2009), A Internet começou em 1969 com o projeto dogoverno americano chamado ARPANET, que tinha como objetivo interligaruniversidades e instituições de pesquisa e militares. Na década de 70 a rede tinhapoucos centros, mas o protocolo NCP, foi visto como inadequado, então, o TCP/IPfoi criado e continua sendo o protocolo base da Internet. No começo a internet tinha poucos fins, Transferência de Arquivos (FTP),acesso de sessões em host (Telnet), e o serviço mais utilizado era o de e-mail. Logona década de 80 se criou a internet que utilizamos hoje. Segundo o Autor Zevallos(2009), Tim Berners-Lee do CERN, lança o WWW no ano de 1991, que foi a basepara que Marc Andreses lança-se o Mosaic para Unix em fevereiro de 1993 e logoem agosto lançaram a versão para o Windows. Como a internet está sendo o principal serviço de conectividade e cada vezmais presente em nossas vidas, a melhor opção do gerenciamento via internetpoderá ser implantado.
  • 34. 31 H. REDES SEM FIO Para a que o sistema tenha um melhor desempenho quando se encontra ousuário em sua residência será utilizado um Access Point, assim o usuário iráconectar na sua rede e utilizar o sistema com a melhor velocidade possível. Access Point é um dispositivo responsável por fazer a interconexão entre doisdispositivos móveis, e se pode utilizar a intranet para o acesso ao sistema. Rede sem fio trata-se de aplicar a tecnologia wireless como meio decomunicação em uma rede local de computadores, substituindo o cabeamentoconvencional HENZE, ALLAN GABRIEL Apud PAHLAVAN, (2002). Segundo MORAES (2007) “cada Access point pode atender a vários usuáriosna mesma rede e sua área de cobertura fica em torno de 100 metros de raio”. O Access Point possui um sistema de gerenciamento da rede, assim poderáutilizá-la com segurança, para que não tenha problemas com invasões de usuáriosmal intencionados. I. DDNS Conexões do tipo ADSL, Cable Modem, Velox, Speedy e outras formas debanda larga, apesar de muito velozes, têm o inconveniente de fornecer umendereçamento com IP Dinâmico. Ou seja, a cada conexão, o computador terá umIP diferente da conexão anterior. Isto inviabiliza a utilização de Servidores Web, Sistemas de Webmail, VPN,Controles Externos e outros serviços que necessitam de um endereço IP Fixo paraconexão de usuários. O DDNS foi desenvolvido pela Winco para resolver este problema de umaforma extremamente simples de usar. Uma vez instalado, o DDNS cria um nome fixo
  • 35. 32que passa a representar o IP da conexão do usuário, mesmo que o IP mude,viabilizando serviços essenciais para sua empresa. O DDNS será utilizado para que o SAR-WEB esteja disponível na rede deinternet, assim possibilitando o uso do em locais que tenha acesso a internet. J. VISUAL BASIC 2008 EXPRESS EDITION Segundo a MICROSOFT(2008) o Visual Basic Express Edition, pode se criaraplicativos para o Windows, encontrando uma série de ferramentas poderosas parao desenvolvimento dos projetos. O Visual Basic é uma linguagem de programaçãoque oferece um ambiente de desenvolvimento integrado totalmente gráfico, tornandoassim a criação de interfaces de aplicações mais simples. A linguagem VB, como éconhecida, faz parte do pacote Microsoft Visual Studio. Será utilizado o Visual Basic para o desenvolvimento de uma aplicação para acomunicação entre o Banco de dados e o Arduíno, será feito verificações nostabelas e verificar se houve alterações, sendo assim efetuando as no Arduíno. A aplicação em Visual Basic irá verificar se existe alguma alteração no bancode dados a cada segundo, se houver irá executar os códigos programados. K. JQUERY JQUERY é uma poderosa biblioteca JavaScript criada para simplificar acriação de efeitos visuais e de interatividade em web sites. Segundo SILVA(2008)Desenvolvedores especialistas em JavaScript, ao conhecerem as maravilhas de quea biblioteca é capaz, com certeza vão se perguntar: "Por que não pensei nissoantes?" Iniciantes, com noções rudimentares de JavaScript, experimentarão umacurva de aprendizado inimaginável para aqueles experientes com a linguagem. Será utilizada uma biblioteca de extensão do JQUERY a JQUERY MOBILE,que é destinada para dispositivos móveis, disponibilizando uma interface atraente efuncional para o usuário.
  • 36. 33 3.1 MODELAGEM DO SISTEMA A modelagem do sistema irá detalhar cada função que o sistema poderá ter,como o acionamento de uma lâmpada, ler e programar a temperatura do ambiente edefinir horários para o acionamento de dispositivos. Será utilizado a UML (Unified Modeling Language) para a modelagem devidoapresenta os diagramas com mais clareza e assim não terá duvidas para odesenvolvimento do sistema. A. UML Para MACORATTI (2006), a UML é um modelo de linguagem paramodelagem de dados, com ela podemos fazer uma modelagem visual de maneiraque os relacionamentos entre os componentes do sistema sejam mais bemvisualizados e compreendidos e documentados. Podemos dizer também que a UMLé uma linguagem para especificar, construir, visualizar e documentar um sistema desoftware que surgiu com a fusão das metodologias já anteriormente usadas e temcomo objetivo. • Modelar sistemas usando os conceitos da orientação a objetos, • Estabelecer um elo explicito entre os artefatos conceituais e os executáveis, • Tratar questões de representar sistemas complexos de missão crítica, • Criar uma linguagem de modelagem que possa ser usada por homens e por máquinas. B. CASO DE USO No Diagrama de caso de uso é onde há possui as interações do sistema como mundo real. Segundo MACORATTI (2006) os diagramas de caso de uso exibem a
  • 37. 34visão externa do sistema e suas interações com o mundo exterior descrevendo seusrequerimentos e suas responsabilidades e possuem três elementos, que são o Atoro qual se interage com o sistema, o caso de uso que é o comportamento da classe,e a interação que é o envio e recebimento de mensagens da comunicação entre oator e o sistema. Figura 10 – Diagrama de Caso de Uso Fonte: Própria C. DIAGRAMA DE SEQUÊNCIA Diagrama de sequência é usado para detalhas os processos do sistema,assim tendo um melhor entendimento do funcionamento do mesmo. Para MACORATTI (2006) Diagrama de sequência é um diagrama de objetos,ou seja, ele contém como primitiva principal um conjunto de objetos de diferentesclasses. O objetivo dos diagramas de sequência é descrever as comunicaçõesnecessárias entre objetos para a realização dos processos em um sistemacomputacional. Na figura 11, irá detalhar como o usuário efetua os cadastros no formulário decadastro do sistema SAR-WEB.
  • 38. 35 Figura 11 – Diagrama de Sequência do formulário de cadastro Fonte: PrópriaNa Figura 12, irá detalhar cada operação de acionamento de dispositivo no SAR. Figura – 12 – Diagrama de Sequência do acionamento de dispositivos Fonte: Própria
  • 39. 36 D. DICIONÁRIO DE DADOS No dicionário de dados será detalhada cada tabela do banco de dados comoas descrições, tipo, atributos e as chaves primárias e secundárias assim ficam demais fácil entendimento cada atributo da tabela.Entidade: TB_UsuárioDescrição: Armazenamento dos dados do Usuário do sistema. Atributo Tipo Dom. Descrição Pk Fk Null Id_Usuario Integer Armazena o código do usuário S N nome_Usuario Varchar Armazena o nome do usuário N login_Usuario Varchar Armazena o login do usuário N senha_Usuario Varchar Armazena a senha do usuário N email_Usuario Varchar Armazena o e-mail do usuário N celular_Usuario Varchar Armazena o número do celular do N usuário Tabela 08 – Tabela Usuários do banco de dados.Entidade: TB_ComodoDescrição: Armazenamento dos dados de cada Cômodo de uma Residência. Atributo Tipo Dom. Descrição Pk Fk Null id_Comodo Integer Armazena o código do cômodo S N nome_Comodo Varchar Armazena o nome do cômodo N Tabela 09 – Tabela Cômodo do banco de dados.Entidade: TB_DispositivoDescrição: Armazenamento dos dados de cada Dispositivo. Atributo Tipo Dom. Descrição Pk Fk Null id_dispositivo Integer Armazena o código do dispositivo S Nnome_dispositivo Varchar Armazena o nome do dispositivo N tipo_Dispositivo Varchar Armazena o tipo do dispositivo Nporta_Dispositivo Varchar Armazena a porta que o dispositivo esta N instalado. id_Comodo Integer Armazena o código do cômodo S N Tabela 10 – Tabela Dispositivo do banco de dados.Entidade: TB_temperaturaDescrição: Armazenamento a Temperatura. Atributo Tipo Dom. Descrição Pk Fk Null id_temperatura Integer Armazena o código do dispositivo S N Temperatura Varchar Armazena o nome do dispositivo NdataTemperatura Varchar Armazena o tipo do dispositivo N Tabela 11 – Tabela Temperatura do banco de dados.
  • 40. 37 E. DIAGRAMA DE ENTIDADE RELACIONAL Modelado os dados, para que possam ser mais bem compreendidos osrelacionamentos entre as tabelas do banco de dados, se tornando um documentomais organizado e de fácil entendimento. Figura 13 – Diagrama de Entidade Relacional Fonte: Própria
  • 41. 38 4. FUNCIONAMENTO DO SISTEMA Para o funcionamento do sistema será necessário a utilização de umaplicativo que foi desenvolvido em Visual Basic (SAR-LOCAL) que fará umacomunicação com o Arduíno da seguinte forma: • Verificando a cada segundo se existe alguma modificação no banco de dados que é manipulado pelo PHP, caso exista irá efetuá-las no Arduíno. • Recebe a temperatura atual do ambiente a cada segundo e armazena na tabela tb_temperatura do Banco de Dados. A imagem abaixo ilustra a montagem dos dispositivos para o funcionamentodo Sistema. Figura 14 – Funcionamento do Sistema.
  • 42. 39 Fonte: Própria A. COMPONENTES DO SISTEMA Na tabela abaixo estão os equipamentos necessários para que o sistemaSAR funcione. Quantidade Descrição Preço Orçamento 1 Arduíno Mega 1280 com Cabo USB R$ 150,00 Mercado Livre 1 Shields Relé 5 v/110 v 8 Relé R$ 150,00 Mercado Livre 1 Pacote Cabos ligação R$ 30,00 Mercado Livre 2 Lâmpada 110 v R$ 18,00 Dom Bosco Mat. 1 Interruptor Paralelo R$5,00 Dom Bosco Mat. 1 Tomada R$8,00 Dom Bosco Mat. 2 Soquete para a Lâmpada R$ 10,00 Dom Bosco Mat. 1 Shields Temperatura LM35 R$ 25,00 Mercado Livre Computador com Sistema 1 Operacional Windows R$ 600,00 Mercado Livre 1 Access Point (Roteador Sem Fio) R$ 100,00 Mercado Livre 1 Tablet Android R$ 300,00 Mercado Livre Total R$ 1.396,00 Tabela de Preços dos Componentes do Sistema B. ACESSO AO SISTEMA O acesso ao sistema por dispositivos móveis será restrito, devido àincompatibilidade do tamanho da tela, não será possível acessar as páginas decadastro, sendo disponíveis somente as de gerenciamento para que possaligar/desligar e ler a temperatura. Já o acesso ao SAR pelo computador serácompleto, não tendo nenhuma restrição. C. PROJETOS FUTUROS Os projetos futuros é a implantação de módulos para que possa agendardispositivos a executar determinadas tarefas em um exato momento, possibilitandomaior segurança e comodidade ao usuário final e tornando o sistema cada vez maisrobusto.
  • 43. 40 Serão implantados sensores de movimento para que detecte oscilações naresidência, assim enviado mensagens para os celulares e emails dos usuários. A implantação de um módulo Shields Ethernet no Arduíno, para que possa secomunicar com a rede local sem a necessidade de um computador, assim serámontado um servidor web diretamente na Shields, possibilitando uma economiamaior de energia. Figura 15 – Shields Ethernet acoplada no Arduíno Mega Fonte: http://blog.derouineau.fr/tag/ethernet-shield/
  • 44. 41 5. RESULTADOS Neste capítulo serão mostradas as telas do sistema em funcionamento comdetalhes de cada uma delas. Página de LOGIN para ter acesso ao sistema SAR-WEB, com os dadoscadastrados no banco de dados. Figura 16 – Tela de Login do Sistema Fonte: SAR-WEB
  • 45. 42 Página inicial do Sistema, com opções de Cadastro, Gerenciamento e fazerLOGOUT, contendo o nome do usuário logado ao sistema. Figura 17 – Tela Inicial do Sistema Fonte: SAR-WEB
  • 46. 43 Tela de Cadastros, nela é exibida todos os cadastros do sistema como:Cômodo, Dispositivo e Usuário. Figura 18 – Tela de Cadastros Fonte: SAR-WEB
  • 47. 44 Nesta Página são exibidos todos os cômodos cadastrados no SAR-WEB,possui as opções de adicionar, excluir e editar cômodos. Figura 19 – Tela de Cômodos Cadastrados Fonte: SAR-WEB
  • 48. 45 Cadastros de Cômodos, nesta página serão cadastrados todos os cômodosexistentes na residência. Figura 20 - Tela de Cadastro de Cômodos Fonte: SAR-WEB
  • 49. 46Tela de Edição do Cômodo Cadastrado no Banco de dados do SAR-WEB. Figura 21 – Tela de Edição de Cômodos Fonte: SAR-WEB
  • 50. 47 Página dos Dispositivos Cadastrados no Banco de Dados do SAR-WEB nelatem as opções somente de Editar, devido os dispositivos já são pré-configurados nosistema. Figura 22 – Tela de exibição dos Dispositivos Fonte: SAR-WEB
  • 51. 48 Página de Edição de Dispositivos, nela só é possível a modificação daDescrição do Dispositivo e o Cômodo que o mesmo se Encontra, devido o tipo,Porta Arduíno está pré – configurado no sistema. Figura 23 – Tela de Edição de Dispositivos Fonte: SAR-WEB
  • 52. 49 Página dos Usuários cadastrados no Banco de Dados SAR-WEB, nela tem asopções de Cadastrar Novo Usuário, Editar e Excluir. Figura 24 – Tela de Usuários Cadastrados Fonte: SAR-WEB
  • 53. 50 Página de Cadastrar Usuário, serão fornecidos pelos usuários os dados paraque efetue o cadastro no Banco de Dados do SAR-WEB, sendo de sumaimportância, devido fica armazenado os dados de login para o usuário utilizar a cadamomento que tenha acesso ao sistema. Figura 25 – Tela de Cadastro de Usuário Fonte: SAR-WEB
  • 54. 51 Página de Edição de Usuários, nela é feita a edição de dados cadastrais dosusuários que estão armazenados no Banco de Dados do SAR-WEB. Figura 26 – Tela de Edição de Usuários Fonte: SAR-WEB
  • 55. 52 Página de Gerenciamento, nela são exibidos todos os Cômodos cadastradono SAR-WEB. Possui uma função especial, a de desligar todos os Dispositivos doSistema. Função importante, pois caso o usuário deseja sair da residência e omesmo não deseja ir desligando todos os dispositivos um de cada vez, basta clicarno botão Desligar Tudo. Figura 27 – Tela principal de Gerenciamento Fonte: SAR-WEB
  • 56. 53 Página para gerenciar dispositivos cadastrados no Cômodo Selecionado, nelaserá exibida todos os dispositivos que estão cadastrados no SAR-WEB e vinculadosao Cômodo desejado, nesse Caso só aparece os Relés. Figura 28 – Tela de Exibição do Dispositivo Cadastrado ao Cômodo Fonte: SAR-WEB
  • 57. 54Página para ligar/desligar o dispositivo cadastrado ao SAR-WEB. Figura 29 – Tela de Gerenciamento do dispositivo Fonte: SAR-WEB
  • 58. 55 Página para gerenciar dispositivos cadastrados no Cômodo Selecionado, nelaserão exibido todos os dispositivos que estão cadastrados no SAR-WEB evinculados ao Cômodo desejado, nesse Caso só aparece a Temperatura. Figura 30 – Tela de Exibição do Dispositivo Cadastrado ao Cômodo Fonte: SAR-WEB
  • 59. 56 Página de exibição da Temperatura atual do ambiente que foi instalado, atemperatura é atualizada a cada segundo, sendo assim informando ao usuário acada variação. Figura 31 – Tela de Exibição da Temperatura do Ambiente Fonte: SAR-WEB
  • 60. 57 Aplicativo em Visual Basic, ele é quem faz a comunicação do banco de dadosao Arduíno, cada modificação feita no banco de dados ele verifica e envia para oArduíno, fazendo as modificações solicitadas pelo usuário. Figura 32 – Tela do SAR-LOCAL Fonte: Própria
  • 61. 58 Sistema SAR-LOCAL em Execução no computador que o Arduíno estáconectado, assim o mesmo irá gerenciar os dispositivos conectados ao Arduínocomo relés e sensor de temperatura. Figura 33 – Tela do SAR-LOCAL em Execução Fonte: Própria
  • 62. 59 Tela do sistema em funcionamento na Barra de Tarefas com menu abertoapós clicar com o botão direito do mouse sobre o ícone. Figura 34 – Tela do SAR-LOCAL na Barra de Tarefas Fonte: Própria
  • 63. 60 A figura abaixo mostra a maquete de uma parede para demonstrar afuncionalidade do sistema, possuindo duas lâmpadas, duas tomadas padrão, umatomada de ar condicionado, um interruptor paralelo, ao lado possui um tablet e umnotebook acessando o SAR-WEB. Figura 35 – Maquete Fonte: Própria
  • 64. 61CONCLUSÃO Este projeto foi desenvolvido para que haja um grande avanço tecnológico emresidências, visando o menor custo possível, assim pessoas de diversas classespoderão adquirir o mesmo para serem implantados em suas residências. No projeto,estão sendo utilizadas plataformas open hardware e open source. A utilização deplataformas open hardware é baseada no Arduíno MEGA1280, junto com as Shieldsse torna um microcontrolador de alto gerenciamento. O simples fato de ligar e desligar uma lâmpada foram implementados paraque um computador e até mesmo um dispositivo móvel possa gerir de forma simplese objetiva. O microcontrolador Arduíno utilizado está cada vez mais se propagandono mundo, trazendo os objetos do mundo real para o mundo virtual, ou seja,tornando tudo digital e garantindo grandes avanços tecnológicos. Visando custo e beneficio usuários poderão implantar o sistematranquilamente, devido ao custo baixo dos recursos a serem utilizados e aquantidade de benefícios que o sistema irá trazer são enormes. A utilização da plataforma web se propiciou, pois se tornou um sistema defácil acesso, sendo que qualquer plataforma com sistema operacional poderáacessar e gerir os dispositivos instalados no SAR. Ressaltando que em projetos futuros serão implementados módulos para quepossa adaptar o SAR com as tecnologias que vão surgindo no mercado, a utilizaçãodos sensores poderá garantir cada vez mais segurança ao usuário, a ShieldsEthernet irá evitar o uso de um computador local com um servidor instalado.
  • 65. 62REFERÊNCIAS BIBLIOGRÁFICASARDUÍNO, Introdução ao Arduíno. Disponível em:http://www.arduino.cc/en/Guide/Introduction. Acessado em 10 de Abril de 2011.ARDUÍNO SERIAL, Arduíno Board – Interface Serial. Disponível em:http://arduino.cc/en/Main/ArduinoBoardSerial. Acessado em 10 de Abril de 2011.ARDUÍNO UNO, Arduíno Board – Interface UNO. Disponível em:http://arduino.cc/en/Main/ArduinoBoardUno. Acessado em 13 de Abril de 2011.ARDUÍNO MINI, Arduíno Board – Interface MINI. Disponível em:http://arduino.cc/en/Main/ArduinoBoardMini. Acessado em 12 de Abril de 2011.ARDUÍNO LILYPAD, Arduíno Board – Interface LILYPAD. Disponível em:http://arduino.cc/en/Main/ArduinoBoardLilyPad. Acessado em 12 de Abril de 2011.ARDUÍNO BLUETOOTH, Arduíno Board – Interface BLUETOOTH. Disponível em:http://arduino.cc/en/Main/ArduinoBoardBluetooth. Acessado em 13 de Abril de 2011.ARDUÍNO MEGA, Arduíno Board – Interface MEGA. Disponível em:http://arduino.cc/en/Main/ArduinoBoardMega2560. Acessado em 13 de Abril de2011.ALECRIM, E. INFOWESTER (2006), Creative Commons: Por que usar?.Disponível em: http://www.infowester.com/creativecommons.php. Acessado em 26Maio 2011.BORTOLI, J. D. GuiFar (2009), Sistemas Operacionais de Código Aberto.Disponível em:http://www.guiafar.com.br/portal/index.php?option=com_content&view=article&id=47%3Asistemas-operacionais-de-codigo-aberto&catid=43%3Atecnologia-da-informacao&Itemid=169&lang=pt. Acessado em 22 Maio 2011.
  • 66. 63BRAVALHERI, Anderson, Curso PHP. Disponível em: UNICAMP:http://www.jr3e.fee.unicamp.br/Home/index.php?option=com_content&view=article&id=55&Itemid=59. Acessado em 16 de maio de 2011.BOEIRA, Marcelo, Arduíno. Disponível em:http://sites.google.com/site/marceloboeirajr/tutoriais/eletronica-senai/arduino.Acessado em 2 de maio de 2011,CAMPOS, Augusto. O que é Software Livre. BR-Linux. Disponível em: BR-Linux:http://br-linux.org/linux/faq-softwarelivre. Acessado em 22 de maio de 2011HENZE, ALLAN GABRIEL Apud PAHLAVAN, 2002. Disponível em ULBRA:http://guaiba.ulbra.tche.br/wp-content/uploads/2011/04/trabalho_allan.pdf. Acessadoem 12 de maio de 2011SANTOS, Nilson Moutinho dos, O que é Domótica. Disponível em:http://www.din.uem.br/ia/intelige/domotica/int.htm. Acessado em 07 de agosto de2011.MACORATTI, José Carlos (2006), UML - Unified Modeling Language e VisualModeler. Disponível em: http://www.macoratti.net/uml_vb.htm. Acessado em 27Maio 2011.MORAES, Alexandre Fernandes , Redes de Computadores: Fundamentos -5ªEdição- São Paulo, 2007-Editora Érica.GREGO, Maurício. O hardware em código aberto. Info Abril, 2009. Disponível em:http://info.abril.com.br/professional/tendencias/hardware-livre-leve-e-solto.shtml?2.Acessado em 22 Maio 2011.MORIMOTO, Carlos. LGPL. hardware, 2005. Disponível em:http://www.hardware.com.br/termos/lgpl. Acessado em 23 Maio 2011.MICROSOFT, Visual Basic 2008 Express Edition. Disponível em:http://codigofonte.uol.com.br/download/programacao/visual-basic/visual-basic-2008-express-edition. Acessado em 24 de novembro de 2011.
  • 67. 64OLHAR DIGITAL (2011), Arduíno: robótica para iniciantes. Disponível emhttp://olhardigital.uol.com.br/produtos/central_de_videos/arduino-robotica-para-iniciantes. Acessado em 29 de abril de 2011.SAADE, J. Programando e C++. São Paulo: Novatec Editora Ltda, 2003.SACSTECH CONSULTORIA E SERVIÇOS, Open Source. Disponível emhttp://www.sacstech.com.br/index.php?option=com_content&view=article&id=28&Itemid=36. Acessado em 22 de Maio de 2011.SIEMENS, Módulo de Relé Suplementar para o Sistema . Disponível emhttp://sbt.siemens.com/FIS/productdoc/catalogs/3125pr.pdf. Acessado em 21 de abrilde 2011.SILVA, M. S. (2008). JQUERY - A Biblioteca do Programador JavaScript.Novatec, edição 2° .WINCO TECNOLOGIA E SISTEMAS, DDNS. Disponível emhttp://www.winco.com.br/ddns. Acessado em 18 de outubro 2011.WERNECK, P. Introdução ao Arduíno.Disponível em:http://www.sabereletronica.com.br/secoes/leitura/1307. Acessado em 14 Maio 2011.ZEVALLOS, Ruben. A História Da Internet. Disponível em:http://www.artigonal.com/ti-artigos/a-historia-da-internet-737117.html . Acessado em26 Abril 2011.
  • 68. 65APÊNDICES
  • 69. 66 1. CÓDIGO FONTE DO SISTEMA-- Estrutura da tabela `tb_dispositivo`--CREATE TABLE `tb_dispositivo` ( `id_Dispositivo` int(2) NOT NULL auto_increment, `descricao_Dispositivo` varchar(45) default NULL, `tipo_Dispositivo` varchar(45) default NULL, `porta_arduino` int(2) default 0, `parametros_Dispositivo` varchar(1) NOT NULL default 0, `id_comodo` int(2) NOT NULL, PRIMARY KEY (`id_Dispositivo`), KEY `fk_comodo` (`id_comodo`), KEY `fk_porta` (`porta_arduino`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;---- Extraindo dados da tabela `tb_dispositivo`--INSERT INTO `tb_dispositivo` (`id_Dispositivo`, `descricao_Dispositivo`, `tipo_Dispositivo`,`porta_arduino`, `parametros_Dispositivo`, `id_comodo`) VALUES(1, Tomada Ar Condicionado, Rele, 31, 0, 6),(2, Tomada 1, Rele, 32, 0, 2),(3, Tomada 2, Rele, 33, 0, 2),(4, Relevazio, Rele, 34, 0, 2),(5, Rele, Rele, 35, 0, 2),(6, Lâmpada Normal, Rele, 36, 1, 6),(7, Lâmpada Com Interruptor Paralelo, ReleParalelo, 37, 1, 6),(8, Temperatura, Temperatura, 5, 0, 6);-- ---------------------------------------------------------- Estrutura da tabela `tb_temperatura`--
  • 70. 67---- Estrutura da tabela `tb_dispositivo`--CREATE TABLE `tb_dispositivo` ( `id_Dispositivo` int(2) NOT NULL auto_increment, `descricao_Dispositivo` varchar(45) default NULL, `tipo_Dispositivo` varchar(45) default NULL, `porta_arduino` int(2) default 0, `parametros_Dispositivo` varchar(1) NOT NULL default 0, `id_comodo` int(2) NOT NULL, PRIMARY KEY (`id_Dispositivo`), KEY `fk_comodo` (`id_comodo`), KEY `fk_porta` (`porta_arduino`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;---- Extraindo dados da tabela `tb_dispositivo`--INSERT INTO `tb_dispositivo` (`id_Dispositivo`, `descricao_Dispositivo`, `tipo_Dispositivo`,`porta_arduino`, `parametros_Dispositivo`, `id_comodo`) VALUES(1, Tomada Ar Condicionado, Rele, 31, 0, 6),(2, Tomada 1, Rele, 32, 0, 2),(3, Tomada 2, Rele, 33, 0, 2),(4, Relevazio, Rele, 34, 0, 2),(5, Rele, Rele, 35, 0, 2),(6, Lâmpada Normal, Rele, 36, 1, 6),(7, Lâmpada Com Interruptor Paralelo, ReleParalelo, 37, 1, 6),(8, Temperatura, Temperatura, 5, 0, 6);-- ------------------------------------------------------------ Estrutura da tabela `tb_temperatura`--CREATE TABLE `tb_temperatura` ( `id_temperatura` int(10) NOT NULL auto_increment, `temperatura` varchar(2) NOT NULL, `dataTemperatura` varchar(20) NOT NULL, PRIMARY KEY (`id_temperatura`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;---- Extraindo dados da tabela `tb_temperatura`---- ------------------------------------------------------------ Estrutura da tabela `tb_usuario`--CREATE TABLE `tb_usuario` ( `id_Usuario` int(11) NOT NULL auto_increment, `nome_Usuario` varchar(28) default NULL, `login_Usuario` varchar(8) default NULL, `senha_Usuario` varchar(8) default NULL, `email_Usuario` varchar(40) default NULL, `celular_Usuario` varchar(10) default NULL, PRIMARY KEY (`id_Usuario`), UNIQUE KEY `login_usuario` (`login_Usuario`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;---- Extraindo dados da tabela `tb_usuario`--INSERT INTO `tb_usuario` (`id_Usuario`, `nome_Usuario`, `login_Usuario`, `senha_Usuario`,`email_Usuario`, `celular_Usuario`) VALUES(7, Kassiano Henrique pretto, pretto, admin, kassiano@sar.com, 0987654321),
  • 71. 68(28, Sar Web, sar, sar, sar@sar.com, 6981188765);PASTA PRINCIPAL DO SISTEMAINDEX.PHP<!--Validar SESSÃO--><?php require validar.php; /*Verifica qual tipo de dispositivo, caso for movel redireciona automaticamente para a paginade gerenciameto*/ require_once(plugin/mobile_device_detect.php); mobile_device_detect(true,true,true,true,true,true,true,DispositivoMovel.php,false);?><!DOCTYPE html><html><head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="plugin/jquery.mobile-1.0a4.1.min.js"></script></head> <!-- fim header --><body><div data-role="page"> <div data-role="header"> <!--Titulo da Pagina--> <h1>Sistema de Automação Residencial</h1> <!--Fazer Logout do sistema--> <a href="logout.php" data-icon="gear" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home" rel="external">sair</a> </div> <!---------------------------------------------------------------------------------> <div data-role="content"> <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> <!--Ir para pagina de Cadastros--> <li><a href="cadastros.php" rel="external">Cadastro</a></li> <!--Ir para pagina de gerenciar--> <li><a href="gerenciar/index.php" rel="external">Gerenciamento</a></li> </ul> </div> <!-- /content --> <!-------------------------------------------------------------------> <div data-role="footer"> <!--Imagem de Rodape--> <div align="center"> <img src="img/By KHOP.png"/> </div> <?php /*Exibir o nome do Usuario Logado*/ echo Usuário :; session_start(); echo $_SESSION[nome_UserLogar]; ?> </div> <!-- fim footer --></div><!-- fim page --></body>
  • 72. 69</html>Login.php<!DOCTYPE html><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <!--Declaração das bibliotecas do Jquery e Jquery Mobile--> <link href="plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body><div data-role="page" id="login"> <div data-role="header"> <h1>Login</h1> </div><!----------Dados para fazer Login no sistema --------------------------------------> <form action="fazerlogin.php" method="POST" > <div data-role="content"> <label for="login">Login :</label> <input id="login" name="login" type="text"/> <label for="senha">Senha :</label> <input id="senha" name="senha" type="password"/> </div><!-----Botoes de Login e Limpar formulario-------------------------------------------><div class="ui-body ui-body-a"> <fieldset class="ui-grid-a"> <div class="ui-block-a"> <a rel="external"><button type="submit" data-theme="a"rel="external">Logar</button></a> </div> <div class="ui-block-b"> <a rel="external"><button type="reset" data-theme="a"rel="external">Limpar</button></a> </div> </fieldset></div> <!--Imagem de Rodape do site--> <div data-role="footer" align="center"> <img src="img/By KHOP.png"/> </div><!-- /footer --></div><!-- /page --></form></body></html>Conecta.php<?php/*Conectar ao Banco de Dados do SAR*/$conectarbanco = mysql_connect("localhost", "root", "");$nomeBD="bdsar";$db = mysql_select_db($nomeBD,$conectarbanco);if (!$conectarbanco){ die("Não Foi possível conectar ao Banco de Dados ". mysql_error());
  • 73. 70}if (!$db) { die("O Banco de Dados ".$nomeBD." Não Foi Encontrado <br/>");}?>FazerLogin.php<!DOCTYPE html><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <!--Declaração dos script jquery e jquery mobile--> <link href="plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body><div data-role="page" > <!--Titulo da Pagina--> <div data-role="header"> <h1>Login</h1> </div><div data-role="content"><?phpinclude "conecta.php"; //pega os dados de login do usuario $loginLogar = $_POST[login]; $senhaLogar = $_POST[senha]; //consulta se o usuario existe $consultaUsuario = mysql_query("SELECT * FROM tb_usuario WHERE login_Usuario =$loginLogar"); $exibirUsuario=mysql_fetch_assoc($consultaUsuario); // faz a contagem de quantos usuario encotrou no banco de dados $row= mysql_num_rows($consultaUsuario); if($row==1){//se encontrou 1 usuario entao irá verificar se a senha é a mesma do usuario if($senhaLogar == $exibirUsuario[senha_Usuario]){ session_start();//inicia as sessões e grava as informações do usuario $_SESSION[id_UserLogar] = $exibirUsuario[id_Usuario]; $_SESSION[nome_UserLogar] = $exibirUsuario[nome_Usuario]; $_SESSION["ultimoAcesso"]= date("Y-n-j H:i:s"); // pegando o horario atual daautenticação mysql_close($conectarbanco);//fecha a conexao com o banco de dados header("Location: index.php"); } else{// caso a senha for invalida exibe a mensagem e envia para a pagina de loginnovamente echo Senha Invalida!!!; echo<meta http-equiv="refresh" content="2; URL=index.php"> <!--rediricionamento automatico da pagina -->; } } else{ echoUsuario não existe!!!;// caso o usuario for invalida exibe a mensagem e enviapara a pagina de login novamente echo <meta http-equiv="refresh" content="2; URL=index.php"> <!--rediricionamentoautomatico da pagina -->; }
  • 74. 71?> </div><!--------------------------------------------------------------------------------------------------------------------> <div data-role="footer" align="center"> <img src="img/By KHOP.png"/> </div><!-- fim footer --></div><!-- fim page --></body></html>Validar.php<?php // Inicia sessões session_start(); // Verifica se existe os dados da sessão de login if( empty ($_SESSION[id_UserLogar]) ){ // Usuário não logado! Redireciona para a página de login!isset($_SESSION[id_UserLogar]) || header("Location: login.php"); exit; } else { //senão, calculamos o tempo transcorrido $dataSalva = $_SESSION["ultimoAcesso"]; $agora = date("Y-n-j H:i:s"); $tempo_transcorrido = (strtotime($agora)-strtotime($dataSalva)); //comparamos o tempo transcorrido if($tempo_transcorrido >= 600) { //se passaram 10 minutos ou mais session_destroy(); // destruo a sessão header("Location: login.php"); //envio ao usuário à página de autenticação //senão, atualizo a data da sessão }else { $_SESSION["ultimoAcesso"] = $agora; } }?>Logout.php<!--Faz Logout do Sistema--><?php//INICIALIZA A SESSÃOsession_start();//DESTRÓI AS VARIÁVEISunset($_SESSION[id_UserLogar]);unset($_SESSION[nome_UserLogar]);//REDIRECIONA PARA A TELA DE LOGINheader("Location: login.php");?>
  • 75. 72Cadastro.php<?php/*Valida se o usuario esta logado*/require validar.php;?><!DOCTYPE html><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body><div data-role="page"> <!--titulo da pagina--> <div data-role="header"> <h1>Sistema de Automação Residencial</h1> </div><!-- /header --> <div data-role="footer" class="ui-bar"> <!--Ir para pagina inicial--> <a href="index.php" data-icon="home" data-iconpos="notext" data-direction="reverse"class="ui-btn-right jqm-home" rel="external">Pagina Inicial</a> <!--Voltar a pagina anterior--> <a data-role="button" data-icon="back" data-iconpos="notext" data-theme="a" data-inline="true"rel="external" onClick="history.go(-1)">Voltar</a> </div><!-- /header --><!-----------------------------------------------------------------------------------------> <div data-role="content"> <!--Links para acessar as paginas de Dispositivos, Comodos e Usuarios--> <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> <li><a href="dispositivo/comodos/indexcomodo.php"rel="external">Comodo</a></li> <li><a href="dispositivo/indexdispositivo.php"rel="external">Dispositivo</a></li> <li><a href="usuario/indexusuario.php" rel="external">Usuário</a></li> </ul> </div><!-- /content --><!---------------------------------------------------------------------------------------> <div data-role="footer"> <div align="center"> <img src="img/By KHOP.png"/> </div> </div><!-- /footer --></div><!-- /page --></body></html>
  • 76. 73DispositivoMovel.php<!--Validar SESSÃO--><?php require validar.php;?><!DOCTYPE html><html><head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="plugin/jquery.mobile-1.0a4.1.min.js"></script></head> <!-- fim header --><body><div data-role="page"> <div data-role="header"> <!--Titulo da Pagina--> <h1>Sistema de Automação Residencial</h1> <!--Fazer Logout do sistema--> <a href="logout.php" data-icon="gear" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home" rel="external">sair</a> </div> <!-------------------------------------------------------------------------------------> <div data-role="content"> <p>Bem vindo Você está acessando de um Dispositivo Móvel</p> <p>Para Dispositivo Móvel está disponivel apenas para gerenciamento!!!</p></div><div class="ui-body ui-body-a" align="center"> <fieldset class="ui-grid-a"> <div class="ui-block-a" align="center"> <a href="gerenciar/indexgerenciar.php" rel="external"><button type="button" data-theme="a" rel="external">Ir em Gerenciador</button></a> </div> </fieldset></div> <!-- /content --> <!------------------------------------------------------------------------------------> <div data-role="footer" align="center"> <!--Imagem de Rodape--> <img src="img/By KHOP.png"/> </div> <!-- fim footer --></div><!-- fim page --></body></html>
  • 77. 74Pasta usuários do sistema <usuario>Indexusuario.php<?php require validar.php; ?><!DOCTYPE html><html> <head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> <script type="text/javascript" src="../plugin/CMensagem/jquery-impromptu.3.2.js"></script> </head><body><div data-role="page"> <div data-role="header"> <h1>Usuários Cadastros</h1> </div><!-- /header --><!-----------------------------------------------------------------------------------> <div data-role="footer" class="ui-bar"> <!--Botao ir para pagina inicial--> <a href="../index.php?" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home" rel="external">Pagina Inicial</a> <!--Botao Cadastrar Usuario--> <a href="cadastrar-user.php?" data-role="button" data-icon="plus" data-iconpos="notext" data-theme="a" data-inline="true" rel="external">Adicionar</a> </div><div data-role="content"> <?php include "../conecta.php"; $res = mysql_query("SELECT * FROM `tb_usuario`"); /*Executa o comando SQL, nocaso para pegar todos dados */ // Começa a exibição dos resultados echo<form action="" method="post" action="java script:alert("validou");"onsubmit="return teste();">; echo <table align="right"> <div class="ui-grid-c"> <ul data-role="listview" data-inset="true"> <li> <div class="ui-block-a">Ação&nbsp;&nbsp;&nbsp;&nbsp;Nome</div> <div class="ui-block-b">Login</div> <div class="ui-block-c">E-Mail</div> <div>Celular</div> </li>; //$delete=(DELETE FROM tb_usuario WHEREid_usuario=.$_POST[id_usuario]); while($escrever=mysql_fetch_assoc($res)) { echo <li> <div class="ui-block-a">
  • 78. 75 <a href="excluir-user.php?id=.$escrever[id_Usuario]. " rel="external"> <img src="../img/delete.png"title="Excluir"/></a> <a href="editar-user.php?id_user=.$escrever[id_Usuario]." rel="external"> <img src="../img/edit.png" title="Editar"/></a> &nbsp;&nbsp; .$escrever[nome_Usuario]. </div> <div class="ui-block-b">.$escrever[login_Usuario].</div> <div class="ui-block-c">.$escrever[email_Usuario].</div> <div>&nbsp;.$escrever[celular_Usuario].</div> </li>; } echo</ul> </div>; //fim div grid D echo</table>;//fim tabela?></div><!-- /content --><!--------------------------------------------------------------------------><div data-role="footer" align="center"> <img src="../img/By KHOP.png"/></div><!--fim div footer--></div><!-- /page --></body></html>Validar.php<?php//aqui detecta qual tipo de navegador esta utilizando, caso for movel irá redirecionar para a pastagerenciamentorequire_once(../plugin/mobile_device_detect.php);mobile_device_detect(true,true,true,true,true,true,true,gerenciar/index.php,false);// Inicia sessõessession_start();// Verifica se existe os dados da sessão de loginif( empty ($_SESSION[id_UserLogar]) ) { // Usuário não logado! Redireciona para a página de login !isset($_SESSION[id_UserLogar]) || header("Location: irpagelogin.php"); exit;}else { //senão, calculamos o tempo transcorrido $dataSalva = $_SESSION["ultimoAcesso"]; $agora = date("Y-n-j H:i:s"); $tempo_transcorrido = (strtotime($agora)-strtotime($dataSalva)); //comparamos o tempo transcorrido if($tempo_transcorrido >= 600) { //se passaram 10 minutos ou mais session_destroy(); // destruo a sessão header("Location: irpagelogin.php"); //envio ao usuário à página de autenticação //senão, atualizo a data da sessão }else {
  • 79. 76 $_SESSION["ultimoAcesso"] = $agora; }}?>Cadastar-user.php<?php /*verifica se usuario esta logado*/ require validar.php;?><!DOCTYPE html><html> <head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script src="../plugin/jquery-1.5.2.min.js" type="text/javascript"></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> <script type="text/javascript" src="../plugin/Validar/jquery.validate.js"></script> <script type="text/javascript" src="../plugin/Validar/jquery.maskedinput-1.1.4.pack.js"></script><?php//aqui incluir uma pagina que irá validar os campo se estao sendo inseridos corretamente! include validarcadastrouser.php;?><!-------------------------------------------------------------------------------------> </head><body><div data-role="page"> <div data-role="header"> <h1>Cadastro de Usuário</h1> </div><!-- /header --> <div data-role="footer" class="ui-bar"> <!--Botao ir para pagina inicial--> <a href="../index.php?" data-icon="home" data-iconpos="notext" data-direction="reverse"class="ui-btn-right jqm-home" rel="external">Pagina Inicial</a> <!--Botao voltar a pagina anterior--> <a data-role="button" data-icon="back" data-iconpos="notext" data-theme="a" data-inline="true"rel="external" onClick="history.go(-1)">Voltar</a> </div><!-----------Formulario de cadastro de usuario-------------------------------------------------> <form action="gravar-user.php" method="POST" id="formID"> <div data-role="content"> <!--Dados de cadastro do usuario--> <label for="nome">Nome:</label> <input name="nome" type="text" id="nome" value="" /></br> <label for="login">Login:</label> <input name="login" type="text" id="login" value="" c/></br> <label for="senha">Senha: </label> <input name="senha" type="password" id="senha" value="" /></br> <label for="senhaConfirmada">Confirmar Senha:</label> <input name="senhaConfirmada" type="password" id="senhaConfirmada" value=""/></br> <label for="email">E-mail:</label> <input name="email" type="text" id="email" value="" /></br> <label for="phone">Celular: </label> <input name="phone" type="text" id="phone" value="" /></br></div><!-- /content --><!-----------------Botoes do Formulario---------------------------------------> <div class="ui-body ui-body-a">
  • 80. 77 <fieldset class="ui-grid-b"> <div class="ui-block-a"> <button type="submit" data-theme="a" rel="external">Salvar</button> </div> <div class="ui-block-b"> <button type="reset" data-theme="a" rel="external">Limpar</button> </div> <div class="ui-block-c"> <button type="button" data-theme="a" rel="external">Cancelar</button> </div> </fieldset></form> <div data-role="footer"> <div align="center"> <img src="../img/By KHOP.png"/> </div><!-- /Rodapé --></div><!-- /page --></body></html>Gravar-user.php<?phprequire validar.php;?><html> <head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>Cadastro Efetuado Com Sucesso!!!</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script src="../plugin/jquery-1.5.2.min.js" type="text/javascript"></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body><div data-role="page"> <div data-role="header"> <h1>Cadastro de Usuario</h1> </div><!--Fim DIV Data-role=header--> <div data-role="content"> <?php include "../conecta.php"; $nome_User = $_POST[nome]; $login_User = $_POST[login]; $senha_User = $_POST[senha]; $email_User = $_POST[email]; $celular_User =$_POST[phone]; //criando a nossa consulta sql $query = "INSERT INTO tb_usuario(nome_usuario,login_usuario,senha_Usuario,email_Usuario,celular_Usuario) VALUES (".$nome_User.",".$login_User.",".$senha_User.",".$email_User.",".$celular_User.")"; //enviando a consulta pro banco e mostrando a mensagem de sucesso ou falha $consulta = mysql_query($query)or die (mysql_error()); // verifica se o usuario foi cadastrado if($consulta) { echo <p>Bem vindo .$nome_User;</p>;
  • 81. 78 echo <font color=green><b> Você foi cadastrado com sucesso!<br> </font></b>; } else { echo Não foi possivel efetuar o seu cadastro<br>; } ?> <meta http-equiv="refresh" content="2; URL=indexusuario.php"> <!--rediricionamento automaticoda pagina --> </div><!--Fim DIV Data-role=content--> <div data-role="footer" align="center"> <img src="../img/By KHOP.png"/> </div> <!--Fim DIV Footer--></div><!--Fim DIV Data-role=page--></body></html>Editar-user.php<?phprequire validar.php;?><html> <head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> <script type="text/javascript" src="../plugin/Validar/jquery.validate.js"> </script><?phpinclude validarcadastrouser.php;?> </head> <body> <div data-role="page"> <div data-role="header"> <h1>Editar Usuário</h1> </div> <div data-role="footer" class="ui-bar"> <!--Botao ir para pagina inicial--> <a href="../index.php" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home" rel="external">Pagina Inicial</a> <!--Botao voltar a pagina anterior--> <a data-role="button" data-icon="back" data-iconpos="notext" data-theme="a" data-inline="true" rel="external" onClick="history.go(-1)">Voltar</a> </div><!-----------------------------------------------------------------------------------------------------------------> <form action="atualizar-user.php" method="post" id="formID" > <div data-role="content"> <?php include "../conecta.php"; session_start(); $id_Usuario = $_GET[id_user]; $_SESSION[id_usuario] = $id_Usuario;
  • 82. 79 $listarDADOS = mysql_query("SELECT * FROM tb_usuario WHERE id_Usuario=".$id_Usuario."")or die (mysql_error()); $escrever=mysql_fetch_assoc($listarDADOS); echo <label for="nome">Nome:</label> <input type="text" name="nome" id="nome" value=".$escrever[nome_Usuario]."/> <label for="login">Login:</label> <input type="text" name="login" id="login" value=".$escrever[login_Usuario]." /> <label for="senha">Nova Senha:</label> <input type="password" name="senha" id="senha" /> <label for="senhaConfirmada">Confirmar Senha:</label> <input type="password" name="senhaConfirmada" id="senhaConfirmada" value="" /> <label for="email">Email:</label> <input type="text" name="email" id="email" value=".$escrever[email_Usuario]." /> <label for="phone">Celular:</label> <input type="text" name="phone" id="phone" value=".$escrever[celular_Usuario]." /> ; ?> </div><!-- /content --><!----------/pagina-------------------------------------------------> <div class="ui-body ui-body-a"> <fieldset class="ui-grid-a"> <div class="ui-block-a"> <button type="submit" data-theme="a" rel="external">Salvar</button> </div> <div class="ui-block-b"><a href="indexusuario.php" rel="external"> <button type="button" data-theme="a" rel="external">Cancelar</button></a> </div> </fieldset> </div> <div data-role="footer" align="center"> <img src="../img/By KHOP.png"/> </div> </form> </div><!-- /Cabeçalho --> </div><!-- /pagina --> </body></html>Atualizar-user.php<?phprequire validar.php;?><!DOCTYPE html><html>
  • 83. 80 <head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body><div data-role="page"> <div data-role="header"> <h1>Sistema de Automação Residencial</h1> </div><!-- /header --> <meta http-equiv="refresh" content="2; URL=indexusuario.php"> <!--rediricionamento automaticoda pagina --><!---------------------------------------------------------------------------------------><div data-role="content"> <?php /*Inicia a conexao com o banco de dados e coleta os dados para atualizar osdados do usuario*/ include "../conecta.php"; session_start(); $id_User = $_SESSION[id_usuario]; $nome_User = $_POST[nome]; $login_User = $_POST[login]; $senha_User = $_POST[senha]; $email_User = $_POST[email]; $celular_User =$_POST[phone]; /*query para atualizar os dados no banco de dados*/ $query = "UPDATE `bdsar`.`tb_usuario` SET `nome_Usuario` =".$nome_User.", `login_Usuario` = ".$login_User.", `senha_Usuario` = ".$senha_User.", `email_Usuario` = ".$email_User.", `celular_Usuario` = ".$celular_User." WHERE `tb_usuario`.`id_Usuario`=".$id_User." ; "; echo $nome_User.<br>; //enviando a consulta pro banco e mostrando a mensagem de sucesso oufalha $consulta = mysql_query($query)or die (mysql_error()); // verifica se o usuario foi cadastrado if($consulta) { echo <font color=green><b> Seus Dados foram Alterados com sucesso!!!<br> </font></b>; } else { echo Não foi possivel Alterar o seu cadastro<br>; echo Verifique seus dados se persistir contate a equipe do SAR<br>; } ?> </div><!-- /content --><!--------------------------------------------------------------------------------> <div data-role="footer"> <div align="center"> <img src="../img/By KHOP.png"/> </div>
  • 84. 81 </div><!-- /footer --></div><!-- /page --></body></html>Excluir-user.php<?phprequire validar.php;?><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body><div data-role="page"> <div data-role="header"> <h1>Usuarios</h1> </div> <div data-role="content"> <!--Conecta ao banco de dados e deleta o usuario selecionado--> <?php include "../conecta.php"; $id_Usuario = $_GET[id]; $sql = mysql_query("DELETE FROM tb_usuario WHERE id_Usuario=".$id_Usuario."")or die(mysql_error()); echo "<div align=center><b><font face=Arial size=2>Registro removido com sucesso! <meta http-equiv=refresh content=1; URL=indexusuario.php></font></b> </div>"; ?> </div><!--Fim Div Content--> <div data-role="footer" align="center"> <img src="../img/By KHOP.png"/> </div></div><!-- /pagina --></body></html>Validarcadastrouser.php<style type="text/css"> #container {width: 50%; margin: 0 auto; } label {display: inline-block; width: 48%;
  • 85. 82 text-align: right; color:#000; } input {display: inline-block; width: 50%; color:#000; } .error {display: inline-block; width: 80%; color: #f00; }</style> <script type="text/javascript"> $(document).ready( function() { $("#formID").validate({ // Define as regras rules:{ nome:{ // campoNome será obrigatorio (required) e terá tamanho minimo (minLength) required: true, minlength: 3 }, login:{ // campoEmail será obrigatorio (required) e precisará ser um e-mail válido (email) required: true, minlength: 3 }, senha:{ minlength: 3 }, senhaConfirmada:{ // campoMensagem será obrigatorio (required) e terá tamanho minimo (minLength) minlength: 3, equalTo: "#senha" }, email:{ // campoMensagem será obrigatorio (required) e terá tamanho minimo (minLength) required: true, email: true }, phone:{ // campoMensagem será obrigatorio (required) e terá tamanho minimo (minLength) required: true, minlength: 8, phone: true, maxlength:10 } }, // Define as mensagens de erro para cada regra messages:{ nome:{ required: "Digite o seu nome", minlength: "O seu nome deve conter, no mínimo, 4 caracteres" }, login:{ required: "Digite o seu login", minlength: "O seu login deve conter, no mínimo, 3 caracteres" }, senha:{ minlength: "A sua senha deve conter, no mínimo, 3 caracteres" }, senhaConfirmada:{ equalTo: "Senha não confere!!!",
  • 86. 83 minlength: "A sua senha deve conter, no mínimo, 3 caracteres" }, email:{ required: "Digite o seu e-mail para contato", email: "Digite um e-mail válido" }, phone:{ required: "Digite seu Celular!!!", minlength: "Celular invalido deve ter no minimo 8 números!!!", maxlength: "Celular Invalido deve ter no Máximo 10 números!!!" }, }//fim messages }); }); </script>Irpagelogin.php<!--Pagina para informar que o usuario nao está logado e redirecionar para a pagina de login--><!DOCTYPE html><html> <head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body> <div data-role="header"> <h1>Usuário Não Logado!!!</h1> </div> <div data-role="content"> <meta http-equiv="refresh" content="3; URL=../login.php"> <!--rediricionamentoautomatico da pagina --> </div></div><!----------------------------------------------------------------------------------------> <div data-role="footer" align="center"> <img src="../img/By KHOP.png"/> </div><!-- /footer --></div><!-- /page --></body></html>Pasta Gerenciar <gerenciar>Indexgerenciar.php<!--verificar se usuario esta logado--><?phprequire validar.php;?><!DOCTYPE html><html> <head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>SAR - Sistema de Automação Residencial WEB</title>
  • 87. 84 <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body><div data-role="page"> <div data-role="header"> <h1>Sistema de Automação Residencial</h1> </div> <!-- /header --> <div data-role="footer" class="ui-bar"> <!--Botao ir para pagina inicial--> <a href="../index.php" data-icon="home" data-iconpos="notext" rel="external" data-direction="reverse" class="ui-btn-right jqm-home">Pagina Inicial</a> <!--Fazer Logout do sistema--> <a href="../logout.php" data-icon="gear" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home" rel="external">sair</a> </div> <!-------------------------------------------------------------------------> <div data-role="content"> <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> <?php include ../conecta.php; $res = mysql_query("SELECT * FROM `tb_comodo`"); if(mysql_num_rows($res)==0){ echo<li>Não Exitem Comodos Cadastrados!!!</li>; } else{ /*exibir todos os comodos*/ while($escrever=mysql_fetch_array($res)) { echo<li><ahref="exibiDispositivosComodo.php?idComodo=.$escrever[id_Comodo].">.$escrever[nome_Comodo].</a></li>; } } /*fecha a conexao com o mysql*/ @closeMysql; ?> </ul> <!-- botao para desligar todos os equipamentos--> <div id="respDIV"><button id="btdesliga" >Desligar Tudo!!!</button></div> <script type="text/javascript"> $("#btdesliga").click(function(){ // desliga todos os dispositivos $("#respDIV").load("desligarTudo.php"); }); </script> </div> <!-- /content --> <!---------------------------------------------------------><div data-role="footer" align="center"> <img src="../img/By KHOP.png"/></div> <!-- /footer --></div><!-- /page --></body></html>gerenciarDispositivo.php<?php
  • 88. 85 /*verifica se usuario esta logado*/ require validar.php;?><!DOCTYPE html><html> <head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> <script type="text/javascript" src="jquery.iphone-switch.js"></script> </head><body onload="setTimeout(Atualizar(), 5000)"><?php include "../conecta.php"; $id_dispositivo = $_GET[id_disp]; $queryDisp = mysql_query("SELECT * FROM tb_dispositivo WHERE id_Dispositivo =".$id_dispositivo.""); $escrever=mysql_fetch_assoc($queryDisp);?><div data-role="page"> <div data-role="header"> <?php echo<h1> .$escrever[descricao_Dispositivo].</h1> ?> </div><!-- /header --> <div data-role="footer" class="ui-bar"> <a href="../index.php?" data-icon="home" data-iconpos="notext" rel="external" data-direction="reverse" class="ui-btn-right jqm-home">Pagina Inicial</a> <a data-role="button" data-icon="back" data-iconpos="notext" data-theme="a" data-inline="true"rel="external" onClick="history.go(-1)">Voltar</a> </div><!-------------------------------------------------------------------------------------><div data-role="content" align="center"><?php$tipo_dis = $escrever[tipo_Dispositivo];/*Verifica qual tipo de dispositivos está gerenciando, e redireciona para a pagina especifica*/session_start();$_SESSION[ptArduinoAtual] = $escrever[porta_arduino];$_SESSION[parametroD] = $escrever[parametros_Dispositivo];if($tipo_dis =="Rele"){include rele.php;}if($tipo_dis =="Temperatura"){ include temperatura.php;}if($tipo_dis == "ReleParalelo"){ include releParalelo.php;}?></div><!--content--><!--------------------------------------------------------------------------------------> <div data-role="footer"> <div align="center"> <img src="../img/By KHOP.png"/> </div>
  • 89. 86 </div><!-- /footer --></div><!-- /page --></body></html>exibirDispositivosComodo.php<?php /*Verifica se o usuario ta logado, conecta ao banco de dados, e seleciona o Comodo*/ require validar.php; include "../conecta.php"; $idCC = $_GET[idComodo]; $res_disp = mysql_query("SELECT * FROM tb_comodo WHERE id_comodo = ".$idCC); $exibir = $escrever=mysql_fetch_assoc($res_disp);?><!DOCTYPE html><html> <head> <!-- Declaração dos Jquery e Jquery movile, e o titulo da pagina--> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> <script type="text/javascript" src="../plugin/CMensagem/jquery-impromptu.3.2.js"></script> </head><body><div data-role="page"> <div data-role="header"> <?php echo<h1>.$exibir[nome_Comodo].</h1> ?> </div><!-- /header --> <div data-role="footer" class="ui-bar"> <!--Botao ir para pagina inicial--> <a href="../index.php" data-icon="home" data-iconpos="notext" rel="external" data-direction="reverse" class="ui-btn-right jqm-home">Pagina Inicial</a> <!--Botao voltar a pagina anterior--> <a data-role="button" data-icon="back" data-iconpos="notext" data-theme="a" data-inline="true"rel="external" onClick="history.go(-1)">Voltar</a> </div><!-----------------------------------------------------------><div data-role="content"> <ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b"> <?php $consultaDispNoComodo = mysql_query("SELECT * FROM tb_dispositivo WHERE id_comodo =".$idCC); if(mysql_num_rows($consultaDispNoComodo)==0){ echo<li>Não Existe Dispositivo cadastrado neste Comodo!!!</li>; } else{ while($exibirDip = mysql_fetch_assoc($consultaDispNoComodo)){ echo<li><ahref="gerenciarDispositivo.php?id_disp=.$exibirDip[id_Dispositivo]. "rel="external">.$exibirDip[descricao_Dispositivo].</a></li>; } } ?> </ul> </div><!-- /content --><!--------------------------------------------------------------------------> <div data-role="footer" align="center">
  • 90. 87 <img src="../img/By KHOP.png"/> </div><!-- /footer --></div><!-- /page --></body></html>desligarTudo.php<?phpinclude ../conecta.php;/* UPDATE que desliga todos os dispositivos */$queryModificarParametros = mysql_query("UPDATE tb_dispositivo SET parametros_Dispositivo = 0");?>Irpagelogin.php<!--Pagina que verifica redireciona para a pagina de login, informando que o usuario nao esta logado--><!DOCTYPE html><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body><div data-role="page" id="login"> <div data-role="header"> <h1>Usuário Não Logado!!!</h1> </div> <div data-role="content"> <meta http-equiv="refresh" content="1; URL=../login.php"> <!--rediricionamento automaticoda pagina em 1 seg--> </div></div><!------------------------------------------------------------------------------------------------------------------> <div data-role="footer"> <div align="center"> <img src="../img/By KHOP.png"/> </div> </div><!-- /footer --></div><!-- /page --></body></html>jquery.iphone-switch.js/************************************************* jQuery iphoneSwitch plugin ** ** Author: Daniel LaBare ** Date: 2/4/2008 *************************************************/
  • 91. 88jQuery.fn.iphoneSwitch = function(start_state, switched_on_callback, switched_off_callback, options) { var state = start_state == on ? start_state : off; // define default settings var settings = { mouse_over: pointer, mouse_out: default, switch_on_container_path: iphone_switch_container_on.png, switch_off_container_path: iphone_switch_container_off.png, switch_path: iphone_switch.png, switch_height: 41, switch_width: 141 }; if(options) { jQuery.extend(settings, options); } // create the switch return this.each(function() { var container; var image; // make the container container = jQuery(<div class="iphone_switch_container"style="height:+settings.switch_height+px; width:+settings.switch_width+px; position: relative;overflow: hidden"></div>); // make the switch image based on starting state image = jQuery(<img class="iphone_switch"style="height:+settings.switch_height+px; width:+settings.switch_width+px; background-image:url(+settings.switch_path+); background-repeat:none; background-position:+(state == on ? 0 :-53)+px" src="+(state == on ? settings.switch_on_container_path :settings.switch_off_container_path)+" /></div>); // insert into placeholder jQuery(this).html(jQuery(container).html(jQuery(image))); jQuery(this).mouseover(function(){ jQuery(this).css("cursor", settings.mouse_over); }); jQuery(this).mouseout(function(){ jQuery(this).css("background", settings.mouse_out); }); // click handling jQuery(this).click(function() { if(state == on) { jQuery(this).find(.iphone_switch).animate({backgroundPosition: -80},"slow", function() { jQuery(this).attr(src, settings.switch_off_container_path); switched_off_callback(); }); state = off; } else {
  • 92. 89 jQuery(this).find(.iphone_switch).animate({backgroundPosition: 0},"slow", function() { switched_on_callback(); }); jQuery(this).find(.iphone_switch).attr(src,settings.switch_on_container_path); state = on; } }); });};Off.php<!--Pagina para atualizar o Dispositivo solicitado, alterando o campo parametros_Dispositivo para quepossa Desliga-lo--><?phpinclude ../conecta.php;session_start();$queryModificarParametros = mysql_query("UPDATE tb_dispositivo SET parametros_Dispositivo = 0WHERE porta_arduino = ".$_SESSION[ptArduinoAtual]." ");echo Desligado;?>Onn.php<!--Pagina para atualizar o Dispositivo solicitado, alterando o campo parametros_Dispositivo para quepossa liga-lo--><?phpinclude ../conecta.php;session_start();$queryModificarParametros = mysql_query("UPDATE tb_dispositivo SET parametros_Dispositivo = 1WHERE porta_arduino = ".$_SESSION[ptArduinoAtual]." ");echo Ligado;?>offParalelo.php<!--Pagina para atualizar o Dispositivo releParalelo solicitado, alterando o campoparametros_Dispositivo para que possa Desliga-lo--><?phpinclude ../conecta.php;session_start();$queryModificarParametros = mysql_query("UPDATE tb_dispositivo SET parametros_Dispositivo = 0WHERE porta_arduino = ".$_SESSION[ptArduinoAtual]." ");?>onnParalelo.php<!--Pagina para atualizar o Dispositivo solicitado, alterando o campo parametros_Dispositivo para quepossa liga-lo--><?phpinclude ../conecta.php;session_start();$queryModificarParametros = mysql_query("UPDATE tb_dispositivo SET parametros_Dispositivo = 1WHERE porta_arduino = ".$_SESSION[ptArduinoAtual]." ");?>
  • 93. 90Rele.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script src="jquery.iphone-switch.js" type="text/javascript"></script><style>body{font-family:Verdana, Geneva, sans-serif;font-size:14px;}.left{float:left;width:120px;}#ajax{float:left;width:300px;padding-top:5px;font-weight:700;}.clear{clear:both;}</style></head><body><div id="container"> <div class="center" id="1"></div> <div id="ajax"></div> <div class="clear"></div> <script type="text/javascript"> $(#1).iphoneSwitch("on", function() { $(#ajax).load(on.php); }, function() { $(#ajax).load(off.php); }, { switch_on_container_path: iphone_switch_container_off.png }); </script></div></body></html>releParalelo.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script src="jquery.iphone-switch.js" type="text/javascript"></script><style>body{font-family:Verdana, Geneva, sans-serif;
  • 94. 91font-size:14px;}.left{float:left;width:120px;}#ajax{float:left;width:300px;padding-top:5px;font-weight:700;}.clear{clear:both;}</style></head><body><div id="container"> <div class="center" id="1"></div> <div id="ajax"></div> <div class="clear"></div> <script type="text/javascript"> $(#1).iphoneSwitch("on", function() { $(#ajax).load(onParalelo.php); }, function() { $(#ajax).load(offParalelo.php); }, { switch_on_container_path: iphone_switch_container_off.png }); </script></div></body></html>Temperatura.php<?phprequire ../conecta.php;$temperatura = mysql_query(" SELECT `temperatura` FROM `tb_temperatura` WHERE`id_temperatura` = (SELECT MAX(`id_temperatura`) FROM `tb_temperatura` )");$escrever=mysql_fetch_assoc($temperatura);echo<label><font size="+3" color=green><b>A Temperatura Atualé:</br>.$escrever[temperatura].ºC</font></b></label> ;?><script type="text/javascript">function Atualizar() {window.location.reload();}</script></head>Validar.php<?php// Inicia sessõessession_start();
  • 95. 92// Verifica se existe os dados da sessão de loginif( empty ($_SESSION[id_UserLogar]) ){ // Usuário não logado! Redireciona para a página de login !isset($_SESSION[id_UserLogar]) || header("Location: irpagelogin.php"); exit;}else { //senão, calculamos o tempo transcorrido $dataSalva = $_SESSION["ultimoAcesso"]; $agora = date("Y-n-j H:i:s"); $tempo_transcorrido = (strtotime($agora)-strtotime($dataSalva)); //comparamos o tempo transcorrido if($tempo_transcorrido >= 600) { //se passaram 10 minutos ou mais session_destroy(); // destruo a sessão header("Location: irpagelogin.php"); //envio ao usuário à página de autenticação //senão, atualizo a data da sessão }else { $_SESSION["ultimoAcesso"] = $agora; }}?>Pasta Dispositivos <dispositivo>Indexdispositivo.php<?phprequire validar.php;?><!DOCTYPE html><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> <script type="text/javascript" src="../plugin/CMensagem/jquery-impromptu.3.2.js"></script> </head><body><div data-role="page"> <div data-role="header"> <h1>Dispositivos</h1> </div><!-- /header --><!----------------------------------------------------------------------------------------------------------------------------------> <div data-role="footer" class="ui-bar"> <a href="../index.php" data-icon="home" rel="external" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Pagina Inicial</a> </div> <div data-role="content"> <?php include "../conecta.php"; $res = mysql_query("SELECT * FROM tb_dispositivo"); /*Executa o comando SQL, nocaso para pegar todos dados */ // Começa a exibição dos resultados echo<form action="" method="post" action="java script:alert("validou");"onsubmit="return teste();">;
  • 96. 93 echo <table align="right"> <div class="ui-grid-c"> <ul data-role="listview" data-inset="true"> <li> <div class="ui-block-a">Ação&nbsp;&nbsp;&nbsp;&nbsp;Descrição</div> <div class="ui-block-b">Tipo</div> <div class="ui-block-c">Porta Arduíno</div> <div>Comodo</div> </li>; while($escrever=mysql_fetch_assoc($res)) { echo <li> <div class="ui-block-a"> <a href="editar-disp.php?id_disp=.$escrever[id_Dispositivo]." rel="external"> <img src="../img/edit.png" title="Editar"/></a> &nbsp;&nbsp; .$escrever[descricao_Dispositivo]. </div>; //Ebixir os dados atuais da porta do arduino //pegar o idcomodo e mostrar o nomecomodo $dadosCC = mysql_query("SELECT * FROM tb_comodo WHEREid_Comodo = ".$escrever[id_comodo]."") or die (mysql_error()); $dadosC = mysql_fetch_assoc($dadosCC); echo <div class="ui-block-b">.$escrever[tipo_Dispositivo].</div> <div class="ui-block-c">.$escrever[porta_arduino].</div>; echo<div>&nbsp;.$dadosC[nome_Comodo].</div>; echo</li>; } echo</ul> </div> <!--fim div grid D--> </table>;//fim tabela @closeMysql;?> </div><!-- /content --><!----------------------------------------------------------------------------------------> <div data-role="footer" align="center"> <img src="../img/By KHOP.png"/> </div><!-- /footer --></div><!-- /page --></body></html>Editar-disp.php<?phprequire validar.php;?>
  • 97. 94<!DOCTYPE html><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script src="../plugin/jquery-1.5.2.min.js" type="text/javascript"></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><!----------fim script --------------------------------------------------------------------------------------><body><body><div data-role="page"> <div data-role="header"> <h1>Editar de Dispositivo</h1> </div><!-- /header --> <div data-role="footer" class="ui-bar"> <a href="../index.php?" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Pagina Inicial</a> <a data-role="button" data-icon="back" data-iconpos="notext" data-theme="a" data-inline="true"rel="external" onClick="history.go(-1)">Voltar</a> </div><!----------fim cabecalho---------------------------------------------------------------------------------------><form action="atualizar-disp.php" method="post"> <div data-role="content"> <?php include "../conecta.php"; session_start(); $id_dispositivo = $_GET[id_disp]; $_SESSION[id_disp] = $id_dispositivo; // passando o id para a session para quepossa utilizar na hora de atualizar. $listarDADOS = mysql_query("SELECT * FROM tb_dispositivo WHERE id_Dispositivo=".$id_dispositivo."")or die (mysql_error()); $escrever=mysql_fetch_assoc($listarDADOS); echo <div data-role="fieldcontain"> <label for="descricao">Decrição:</label> <input type="text" name="descricao" id="descricao"value=".$escrever[descricao_Dispositivo]."/> </div> <div data-role="fieldcontain"> <label for="tipo">Tipo:</label> <input type="text" name="tipo" id="tipo" disabled value=".$escrever[tipo_Dispositivo]." /> </div> <div data-role="fieldcontain"> <label for="portaA" class="select">Porta Arduíno:</label> <input type="text" name="portaA" id="portaA" disabledvalue=".$escrever[porta_arduino]." /> </div> <div data-role="fieldcontain"> <label for="comodo" class="select">Selecione novo o Comodo:</label> <select name="comodo" id="comodo" data-native-menu="false">;
  • 98. 95 $dadosC = mysql_query("SELECT * FROM tb_comodo WHEREid_Comodo = ".$escrever[id_comodo]."") or die (mysql_error()); $dados = mysql_fetch_assoc($dadosC); $nomeC = $dados[nome_Comodo]; echo<optionvalue=".$dados[id_Comodo].">.$dados[nome_Comodo].</option>; $res = mysql_query("SELECT * FROM tb_comodo"); /*Executa o comandoSQL, no caso para pegar todos dados */ while($escrev=mysql_fetch_assoc($res)) { echo <optionvalue=".$escrev[id_Comodo].">.$escrev[nome_Comodo].</option>; } echo </select> </div>;?></div><!--fim div content--><!----------Botoes-------------------------------------------------------------------------------------> <div class="ui-body ui-body-a"> <fieldset class="ui-grid-a"> <div class="ui-block-a"> <button type="submit" data-theme="a" >Salvar</button> </div> <div class="ui-block-b"> <a href="indexdispositivo.php" rel="external" > <button type="reset" data-theme="a" >Cancelar</button> </a> </div> </fieldset> </div><!--/ div ui body a --><!----------/Botoes--------------------------------------------------------------------------------------> <div data-role="footer" align="center"> <img src="../img/By KHOP.png"/> </div><!-- /Rodapé --></div><!-- /page --></form></body></html>Atualizar-disp.php<?phprequire validar.php;?><!DOCTYPE html><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body><div data-role="page"> <div data-role="header">
  • 99. 96 <h1>Sistema de Automação Residencial</h1> </div><!-- /header --> <meta http-equiv="refresh" content="2; URL=indexdispositivo.php"> <!--rediricionamentoautomatico da pagina --><!-------------------------------------------------------------------------------------------------------------> <div data-role="content"> <?php include "../conecta.php"; session_start(); $id_disp = $_SESSION[id_disp]; $descricao_disp = $_POST[descricao]; $tipo_disp = $_POST[tipo]; $porta_ar = $_POST[porta_arduino]; $id_comodo = $_POST[comodo]; $query = "UPDATE `bdsar`.`tb_dispositivo` SET `descricao_Dispositivo`= ".$descricao_disp.", `id_comodo` = ".$id_comodo." WHERE `tb_dispositivo`.`id_Dispositivo` =".$id_disp.""; //enviando a consulta pro banco e mostrando a mensagem desucesso ou falha $consulta = mysql_query($query)or die (mysql_error()); // verifica se o usuario foi cadastrado if($consulta) { echo <font color=green><b> Dados foram Alterados com sucesso!!!<br>; echo </font></b>; } else { echo Não foi possivel Alterar os Dados<br>; echo Verifique seus dados se persistir contate a equipe doSAR<br>; } @closeMysql; ?> </div><!-- /content --><!------------------------------------------------------------------------------------------------------------------> <div data-role="footer"> <div align="center"> <img src="../img/By KHOP.png"/> </div> </div><!-- /footer --></div><!-- /page --></body></html>Validar.php
  • 100. 97<?php//aqui detecta qual tipo de navegador esta utilizando, caso for movel irá redirecionar para a pastagerenciamentorequire_once(../plugin/mobile_device_detect.php);mobile_device_detect(true,true,true,true,true,true,true,gerenciar/index.php,false);// Inicia sessõessession_start();// Verifica se existe os dados da sessão de loginif( empty ($_SESSION[id_UserLogar]) ){ // Usuário não logado! Redireciona para a página de login !isset($_SESSION[id_UserLogar]) || header("Location: irpagelogin.php"); exit;}else { //senão, calculamos o tempo transcorrido $dataSalva = $_SESSION["ultimoAcesso"]; $agora = date("Y-n-j H:i:s"); $tempo_transcorrido = (strtotime($agora)-strtotime($dataSalva)); //comparamos o tempo transcorrido if($tempo_transcorrido >= 600) { //se passaram 10 minutos ou mais session_destroy(); // destruo a sessão header("Location: irpagelogin.php"); //envio ao usuário à página de autenticação //senão, atualizo a data da sessão }else { $_SESSION["ultimoAcesso"] = $agora; }}?>Irpagelogin.php<!DOCTYPE html><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body> <div data-role="page" id="login"> <div data-role="header"> <h1>Usuário Não Logado!!!</h1> </div> <div data-role="content"> <meta http-equiv="refresh" content="1; URL=../login.php"> <!--rediricionamentoautomatico da pagina -->
  • 101. 98 </div></div><!------------------------------------------------------------------------------------------------------------> <div data-role="footer"> <div align="center"> <img src="../img/By KHOP.png"/> </div> </div><!-- /footer --></div><!-- /page --></body></html>Pasta Comodos <dispositivo/comodos>Indexcomodo.php<?phprequire validar.php;?><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><!---------------------------------------------------------------------------------------------------------------------> <body> <div data-role="page"> <div data-role="header"> <h1>Comodos da Residência</h1> </div> <div data-role="footer" class="ui-bar"> <a href="../../index.php" data-icon="home" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home">Pagina Inicial</a> <a href="cadastrar-comodo.php" data-role="button" data-icon="plus" data-iconpos="notext"rel="external" data-theme="a" data-inline="true">Adicionar</a> </div><!-- /Cabeçalho --> <div data-role="content"> <?php include "../../conecta.php"; $res = mysql_query("SELECT * FROM `tb_comodo`"); /*Executa o comando SQL, nocaso para pegar todos dados dos comodo ($res) */ // Começa a exibição dos resultados // tabela das portas cadastradas echo <table align="right"> <div class="ui-grid-b"> <ul data-role="listview" data-inset="true"> <li> <font size="+1" color="#000000" face="italic"> <div class="ui-block-a">Ação</div> <div >Comodos</div> </font> </li>;
  • 102. 99 while($escrever=mysql_fetch_array($res)) { $nomeComodo = $escrever[nome_Comodo]; echo <li> <div class="ui-block-a"> <a href="excluir-comodo.php?id_Comd=.$escrever[id_Comodo]. "rel="external"> <img src="../../img/delete.png" title="Excluir"/></a> <a href="editar-comodo.php?id_Comd=.$escrever[id_Comodo]."rel="external"> <img src="../../img/edit.png" title="Editar"/></a> </div> <div >&nbsp;.$nomeComodo.</div> </li>; } echo</ul> </div>; //fim div grid c echo</table>;//fim tabela?></div><!--Fim Div Content--><!----------------------------------------------------------------------------------------------------------------------> <div data-role="footer" align="center"> <img src="../../img/By KHOP.png"/> </div><!-- /Rodapé --> </div><!-- /pagina --> </body></html>Cadastrar-comodo.php<?phprequire validar.php;?><html> <head> <title>SAR - Sistema de Automacao Residencial WEB</title> <link href="../../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script src="../../plugin/jquery-1.5.2.min.js" type="text/javascript"></script> <script type="text/javascript" src="../../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head> <body> <div data-role="page"> <div data-role="header"> <h1>Cadastrar Comodos</h1> </div> <div data-role="footer" class="ui-bar"> <a href="../../index.php" data-icon="home" data-iconpos="notext"data-direction="reverse" class="ui-btn-right jqm-home" rel="external">Pagina Inicial</a> <a data-role="button" data-icon="back" data-iconpos="notext" data-theme="a" data-inline="true" rel="external" onClick="history.go(-1)">Voltar</a> </div><!-- /header --> <form action="gravar-comodo.php" method="POST" > <div data-role="content">
  • 103. 100 <div data-role="fieldcontain"> <label for="nome">Nome:</label> <input type="text" name="nome" id="nome" value="" /> </div> </div><!--Fim Div Content--> <div class="ui-body ui-body-a"> <fieldset class="ui-grid-b"> <div class="ui-block-a"> <button type="submit" data-theme="a" >Salvar</button> </div> <div class="ui-block-b"> <button type="reset" data-theme="a" >Limpar</button> </div> <div class="ui-block-c"> <a href="indexcomodo.php" rel="external"><button type="button" data-theme="a">Cancelar</button></a> </a> </div> </fieldset> </div> <div data-role="footer" align="center"> <img src="../../img/By KHOP.png"/> </div><!-- /Rodapé --> </div><!-- /pagina --> </form> </body></html>Gravar-comodo.php<?phprequire validar.php;?><html> <head> <title>Cadastro Efetuado Com Sucesso!!!</title> <link href="../../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script src="../../plugin/jquery-1.5.2.min.js" type="text/javascript"></script> <script type="text/javascript" src="../../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head> <body> <div data-role="page"> <div data-role="header"> <h1>Cadastro</h1> </div><!--Fim DIV Data-role=header--> <?php include "../../conecta.php"; $nome_Comodo = $_POST[nome]; //criando a nossa consulta sql
  • 104. 101 $query = "INSERT INTO tb_comodo (nome_Comodo) VALUES(".$nome_Comodo.")"; //enviando a consulta pro banco e mostrando a mensagem desucesso ou falha $consulta = mysql_query($query)or die (mysql_error()); // verifica se o usuario foi cadastrado if($consulta) { echo <font color=green><b> Comodo cadastrado com sucesso!<br> </font></b>; } else { echo Não foi possivel efetuar o seu cadastro<br>; } ?> <meta http-equiv="refresh" content="2; URL=indexcomodo.php"> <!--rediricionamento automatico da pagina --> <div data-role="footer" align="center"> <img src="../../img/By KHOP.png"/> </div><!-- /Rodapé --> </div><!--Fim DIV Data-role=page--> </body></html>Editar-comodo.php<?phprequire validar.php;?><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head> <body> <div data-role="page"> <div data-role="header"> <h1>Editar Comodo</h1> </div> <div data-role="footer" class="ui-bar"> <a href="../../index.php" data-icon="home" rel="external" data-iconpos="notext" data-direction="reverse" class="ui-btn-right jqm-home" rel="external">PaginaInicial</a> <a data-role="button" data-icon="back" data-iconpos="notext" data-theme="a"data-inline="true" rel="external" onClick="history.go(-1)">Voltar</a> </div><!-- /header -->
  • 105. 102 <form action="atualizar-comodo.php" method="post" > <?php include "../../conecta.php"; session_start(); $id_Comodo = $_GET[id_Comd]; $_SESSION[id_Comodo] = $id_Comodo; $listarDADOS = mysql_query("SELECT * FROM tb_comodoWHERE id_Comodo =".$id_Comodo."")or die (mysql_error()); $escrever=mysql_fetch_assoc($listarDADOS); echo<div data-role="fieldcontain"> <label for="nome">Nome:</label> <input type="text" name="nome" id="nome"value=".$escrever[nome_Comodo]."/> </div> ; ?> </li> <div class="ui-body-a"> <fieldset class="ui-grid-b"> <div class="ui-block-a"> <button type="submit" data-theme="a" >Salvar</button> </div> <div class="ui-block-b"> <button type="reset" data-theme="a" >Limpar</button> </div> <div class="ui-block-c"> <a href="indexcomodo.php" rel="external"><button type="button" data-theme="a">Cancelar</button></a> </div> </fieldset> </div> <div data-role="footer" align="center"> <img src="../../img/By KHOP.png"/> </div> </form> </div><!-- /pagina --> </body></html>Atualizar-comodo.php<?phprequire validar.php;?><!DOCTYPE html><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../../plugin/jquery-1.5.2.min.js" ></script>
  • 106. 103 <script type="text/javascript" src="../../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head><body><div data-role="page"> <div data-role="header"> <h1>Sistema de Automação Residencial</h1> </div><!-- /header --> <meta http-equiv="refresh" content="2; URL=indexcomodo.php"> <!--rediricionamento automatico da pagina --><!---------------------------------------------------------------------------------------------------------------------> <div data-role="content"> <?php include "../../conecta.php"; session_start(); $id_comodo = $_SESSION[id_Comodo]; $nome_Comodo = $_POST[nome]; $query = "UPDATE tb_comodo SET nome_Comodo = ".$nome_Comodo." WHERE id_Comodo =".$id_comodo." ; "; //enviando a consulta pro banco e mostrando a mensagem desucesso ou falha $consulta = mysql_query($query)or die (mysql_error()); // verifica se o usuario foi cadastrado if($consulta) { echo <font color=green><b> Dados foram Alterados com sucesso!!!<br> </font></b>; } else { echo Não foi possivel Alterar os Dados<br>; echo Verifique seus dados se persistir contate a equipe doSAR<br>; } ?> </div><!-- /content --><!----------------------------------------------------------------------------------------------------------------------> <div data-role="footer"> <div align="center"> <img src="../../img/By KHOP.png"/> </div> </div><!-- /footer --></div><!-- /page --></body></html>Irpagelogin.php<!DOCTYPE html><html> <head> <title>SAR - Sistema de Automação Residencial WEB</title> <link href="../../plugin/jquery.mobile-1.0a4.1.min.css" rel="stylesheet"/> <script type="text/javascript" src="../../plugin/jquery-1.5.2.min.js" ></script> <script type="text/javascript" src="../../plugin/jquery.mobile-1.0a4.1.min.js"></script> </head>
  • 107. 104<body> <div data-role="page" id="login"> <div data-role="header"> <h1>Usuário Não Logado!!!</h1> </div> <div data-role="content"> <meta http-equiv="refresh" content="1; URL=../../login.php"> <!--rediricionamentoautomatico da pagina --> </div></div><!----------------------------------------------------------------------------------------------------------------> <div data-role="footer"> <div align="center"> <img src="../img/By KHOP.png"/> </div> </div><!-- /footer --></div><!-- /page --></body></html>Validar.php<?php//aqui detecta qual tipo de navegador esta utilizando, caso for movel irá redirecionar para a pastagerenciamentorequire_once(../../plugin/mobile_device_detect.php);mobile_device_detect(true,true,true,true,true,true,true,gerenciar/index.php,false);// Inicia sessõessession_start();// Verifica se existe os dados da sessão de loginif( empty ($_SESSION[id_UserLogar]) ){ // Usuário não logado! Redireciona para a página de login !isset($_SESSION[id_UserLogar]) || header("Location: irpagelogin.php"); exit;}else { //senão, calculamos o tempo transcorrido $dataSalva = $_SESSION["ultimoAcesso"]; $agora = date("Y-n-j H:i:s"); $tempo_transcorrido = (strtotime($agora)-strtotime($dataSalva)); //comparamos o tempo transcorrido if($tempo_transcorrido >= 600) { //se passaram 10 minutos ou mais session_destroy(); // destruo a sessão header("Location: irpagelogin.php"); //envio ao usuário à página de autenticação //senão, atualizo a data da sessão }else { $_SESSION["ultimoAcesso"] = $agora; }}
  • 108. 105?>Pasta Plugin <plugin>jquery-1.5.2.min.js/*! * jQuery JavaScript Library v1.5.2 * http://jquery.com/ * * Copyright 2011, John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * Includes Sizzle.js * http://sizzlejs.com/ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * * Date: Thu Mar 31 15:28:23 2011 -0400 */(function(a,b){function ci(a){returnd.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cf(a){if(!b_[a]){varb=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";b_[a]=c}return b_[a]}function ce(a,b){varc={};d.each(cd.concat.apply([],cd.slice(0,b)),function(){c[this]=a});return c}function b$(){try{return newa.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bZ(){try{return newa.XMLHttpRequest}catch(b){}}function bY(){d(a).unload(function(){for(var a inbW)bW[a](0,1)})}function bS(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));vare=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h ina.converters)typeof h==="string"&&(f[h.toLowerCase()]=a.converters[h]);l=k,k=e[g];if(k==="*")k=l;elseif(l!=="*"&&l!==k){m=l+" "+k,n=f[m]||f["* "+k];if(!n){p=b;for(o in f){j=o.split("");if(j[0]===l||j[0]==="*"){p=f[j[1]+""+k];if(p){o=f[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&d.error("No conversion from"+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bR(a,c,d){vare=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i ind&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i ind){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}functionbQ(a,b,c,e){if(d.isArray(b)&&b.length)d.each(b,function(b,f){c||bs.test(a)?e(a,f):bQ(a+"["+(typeoff==="object"||d.isArray(f)?b:"")+"]",f,c,e)});else if(c||b==null||typeof b!=="object")e(a,b);elseif(d.isArray(b)||d.isEmptyObject(b))e(a,"");else for(var f in b)bQ(a+"["+f+"]",b[f],c,e)}functionbP(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;varh=a[f],i=0,j=h?h.length:0,k=a===bJ,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeofl==="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bP(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bP(a,c,d,e,"*",g));return l}function bO(a){return function(b,c){typeof b!=="string"&&(c=b,b="*");if(d.isFunction(c)){vare=b.toLowerCase().split(bD),f=0,g=e.length,h,i,j;for(;f<g;f++)h=e[f],j=/^+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bq(a,b,c){vare=b==="width"?bk:bl,f=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")returnf;d.each(e,function(){c||(f-=parseFloat(d.css(a,"padding"+this))||0),c==="margin"?f+=parseFloat(d.css(a,"margin"+this))||0:f-=parseFloat(d.css(a,"border"+this+"Width"))||0});return f}functionbc(a,b){b.src?d.ajax({url:b.src,async:!1,dataType:"script"}):d.globalEval(b.text||b.textContent||b.innerHTML||""),b.parentNode&&b.parentNode.removeChild(b)}functionbb(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"ina?a.querySelectorAll("*"):[]}function ba(a,b){if(b.nodeType===1){varc=b.nodeName.toLowerCase();b.clearAttributes(),b.mergeAttributes(a);if(c==="object")b.outerHTML=a.outerHTML;elseif(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else
  • 109. 106a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(d.expando)}}function _(a,b){if(b.nodeType===1&&d.hasData(a)){varc=d.expando,e=d.data(a),f=d.data(b,e);if(e=e[c]){var g=e.events;f=f[c]=d.extend({},e);if(g){deletef.handle,f.events={};for(var h in g)for(vari=0,j=g[h].length;i<j;i++)d.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function $(a,b){returnd.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Q(a,b,c){if(d.isFunction(b))return d.grep(a,function(a,d){vare=!!b.call(a,d,a);return e===c});if(b.nodeType)return d.grep(a,function(a,d){returna===b===c});if(typeof b==="string"){var e=d.grep(a,function(a){returna.nodeType===1});if(L.test(b))return d.filter(b,e,!c);b=d.filter(b,e)}return d.grep(a,function(a,e){returnd.inArray(a,b)>=0===c})}function P(a){return!a||!a.parentNode||a.parentNode.nodeType===11}functionH(a,b){return(a&&a!=="*"?a+".":"")+b.replace(t,"`").replace(u,"&")}function G(a){varb,c,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=newRegExp("(^|.)"+a.namespace.split(".").join(".(?:.*.)?")+"(.|$)")),a.liveFired=this;vart=s.live.slice(0);for(i=0;i<t.length;i++)g=t[i],g.origType.replace(r,"")===a.type?q.push(g.selector):t.splice(i--,1);f=d(a.target).closest(q,a.currentTarget);for(j=0,k=f.length;j<k;j++){m=f[j];for(i=0;i<t.length;i++){g=t[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,e=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,e=d(a.relatedTarget).closest(g.selector)[0];(!e||e!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){f=p[j];if(c&&f.level>c)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function E(a,c,e){varf=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function y(){return!0}function x(){return!1}function i(a){for(var b ina)if(b!=="toJSON")return!1;return!0}functionh(a,c,e){if(e===b&&a.nodeType===1){e=a.getAttribute("data-"+c);if(typeofe==="string"){try{e=e==="true"?!0:e==="false"?!1:e==="null"?null:d.isNaN(e)?g.test(e)?d.parseJSON(e):e:parseFloat(e)}catch(f){}d.data(a,c,e)}else e=b}return e}var c=a.document,d=function(){functionG(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(G,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[wW]+>)[^>]*$|#([w-]+)$)/,i=/S/,j=/^s+/,k=/s+$/,l=/d/,m=/^<(w+)s*/?>(?:</1>)?$/,n=/^[],:{}s]*$/,o=/(?:["/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"nr]*"|true|false|null|-?d+(?:.d*)?(?:[eE][+-]?d+)?/g,q=/(?:^|:|,)(?:s*[)+/g,r=/(webkit)[ /]([w.]+)/,s=/(opera)(?:.*version)?[ /]([w.]+)/,t=/(msie)([w.]+)/,u=/(mozilla)(?:.*?rv:([w.]+))?/,v=navigator.userAgent,w,x,y,z=Object.prototype.toString,A=Object.prototype.hasOwnProperty,B=Array.prototype.push,C=Array.prototype.slice,D=String.prototype.trim,E=Array.prototype.indexOf,F={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)returnthis;if(a.nodeType){this.context=this[0]=a,this.length=1;returnthis}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeofa==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceofd?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);returnd.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])returnf.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))returnf.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);returnd.makeArray(a,this)},selector:"",jquery:"1.5.2",length:0,size:function(){returnthis.length},toArray:function(){return C.call(this,0)},get:function(a){returna==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){vare=this.constructor();d.isArray(a)?B.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?"":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){returnd.each(this,a,b)},ready:function(a){d.bindReady(),x.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return
  • 110. 107this.pushStack(C.apply(this,arguments),"slice",C.call(arguments).join(","))},map:function(a){returnthis.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){returnthis.prevObject||this.constructor(null)},push:B,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeofi==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeofi!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c ina){e=i[c],f=a[c];if(i===f)continue;l&&f&&(d.isPlainObject(f)||(g=d.isArray(f)))?(g?(g=!1,h=e&&d.isArray(e)?e:[]):h=e&&d.isPlainObject(e)?e:{},i[c]=d.extend(l,h,f)):f!==b&&(i[c]=f)}returni},d.extend({noConflict:function(b){a.$=f,b&&(a.jQuery=e);returnd},isReady:!1,readyWait:1,ready:function(a){a===!0&&d.readyWait--;if(!d.readyWait||a!==!0&&!d.isReady){if(!c.body)returnsetTimeout(d.ready,1);d.isReady=!0;if(a!==!0&&--d.readyWait>0)return;x.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=d._Deferred();if(c.readyState==="complete")returnsetTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",y,!1),a.addEventListener("load",d.ready,!1);elseif(c.attachEvent){c.attachEvent("onreadystatechange",y),a.attachEvent("onload",d.ready);varb=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&G()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){returnd.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"ina},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){returna==null?String(a):F[z.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!A.call(a,"constructor")&&!A.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||A.call(a,c)},isEmptyObject:function(a){for(var b ina)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)returnnull;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))returna.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON:"+b)},parseXML:function(b,c,e){a.DOMParser?(e=newDOMParser,c=e.parseFromString(b,"text/xml")):(c=newActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);returnc},noop:function(){},globalEval:function(a){if(a&&i.test(a)){varb=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){returna.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){varf,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}elsefor(;g<h;)if(c.apply(a[g++],e)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(varj=a[0];g<h&&c.call(j,g,j)!==!1;j=a[++g]){}return a},trim:D?function(a){returna==null?"":D.call(a)}:function(a){returna==null?"":(a+"").replace(j,"").replace(k,"")},makeArray:function(a,b){var c=b||[];if(a!=null){vare=d.type(a);a.length==null||e==="string"||e==="function"||e==="regexp"||d.isWindow(a)?B.call(c,a):d.merge(c,a)}return c},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(varc=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeofc.length==="number")for(var f=c.length;e<f;e++)a[d++]=c[e];elsewhile(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(varf=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,b,c){var d=[],e;for(varf=0,g=a.length;f<g;f++)e=b(a[f],f,c),e!=null&&(d[d.length]=e);returnd.concat.apply([],d)},guid:1,proxy:function(a,c,e){arguments.length===2&&(typeofc==="string"?(e=a,a=e[c],c=b):c&&!d.isFunction(c)&&(e=c,c=b)),!c&&a&&(c=function(){returna.apply(e||this,arguments)}),a&&(c.guid=a.guid=a.guid||c.guid||d.guid++);returnc},access:function(a,c,e,f,g,h){var i=a.length;if(typeof c==="object"){for(var j inc)d.access(a,j,c[j],f,g,e);return a}if(e!==b){f=!h&&f&&d.isFunction(e);for(vark=0;k<i;k++)g(a[k],c,f?e.call(a[k],k,g(a[k],c)):e,h);return a}returni?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();varb=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return newa.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));returnd.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),d.each("Boolean
  • 111. 108Number String Function Array Date RegExp Object".split(" "),function(a,b){F["[object"+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),E&&(d.inArray=function(a,b){returnE.call(b,a)}),i.test("")&&(j=/^[sxA0]+/,k=/[sxA0]+$/),g=d(c),c.addEventListener?y=function(){c.removeEventListener("DOMContentLoaded",y,!1),d.ready()}:c.attachEvent&&(y=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",y),d.ready())});return d}(),e="then done fail isResolved isRejectedpromise".split(" "),f=[].slice;d.extend({_Deferred:function(){var a=[],b,c,e,f={done:function(){if(!e){varc=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=d.type(i),j==="array"?f.done.apply(f,i):j==="function"&&a.push(i);k&&f.resolveWith(k[0],k[1])}returnthis},resolveWith:function(d,f){if(!e&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(d,f)}finally{b=[d,f],c=0}}return this},resolve:function(){f.resolveWith(this,arguments);returnthis},isResolved:function(){return c||b},cancel:function(){e=1,a=[];return this}};returnf},Deferred:function(a){varb=d._Deferred(),c=d._Deferred(),f;d.extend(b,{then:function(a,c){b.done(a).fail(c);returnthis},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,promise:function(a){if(a==null){if(f)return f;f=a={}}var c=e.length;while(c--)a[e[c]]=b[e[c]];returna}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){functioni(a){return function(c){b[a]=arguments.length>1?f.call(arguments,0):c,--g||h.resolveWith(h,f.call(b,0))}}varb=arguments,c=0,e=b.length,g=e,h=e<=1&&a&&d.isFunction(a.promise)?a:d.Deferred();if(e>1){for(;c<e;c++)b[c]&&d.isFunction(b[c].promise)?b[c].promise().then(i(c),h.reject):--g;g||h.resolveWith(h,b)}elseh!==a&&h.resolveWith(h,e?[a]:[]);return h.promise()}}),function(){d.support={};varb=c.createElement("div");b.style.display="none",b.innerHTML=" <link/><table></table><a href=/astyle=color:red;float:left;opacity:.55;>a</a><input type=checkbox/>";vare=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0,reliableMarginRight:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;varj=null;d.support.scriptEval=function(){if(j===null){varb=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,deletea[f]):j=!1,b.removeChild(e)}return j};try{deleteb.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",functionl(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="<input type=radio name=radiotest checked=checked/>";varm=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){vara=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"ina.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<divstyle=width:4px;></div>",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style=padding:0;border:0;display:none></td><td>t</td></tr></table>";vare=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(a.style.width="1px",a.style.marginRight="0",d.support.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(a,null).marginRight,10)||0)===0),b.removeChild(a).style.display="none",a=e=null}});varn=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a inb;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function");returnd};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}}();varg=/^(?:{.*}|[.*])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-
  • 112. 109444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!i(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeofc==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeofc==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;returnh?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){varf=d.expando,g=b.nodeType,h=g?d.cache:b,j=g?b[d.expando]:d.expando;if(!h[j])return;if(c){vark=e?h[j][f]:h[j];if(k){delete k[c];if(!i(k))return}}if(e){delete h[j][f];if(!i(h[j]))return}varl=h[j][f];d.support.deleteExpando||h!=a?deleteh[j]:h[j]=null,l?(h[j]={},g||(h[j].toJSON=d.noop),h[j][f]=l):g&&(d.support.deleteExpando?deleteb[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){varb=d.noData[a.nodeName.toLowerCase()];if(b)returnb!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeofa==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){varf=this[0].attributes,g;for(var i=0,j=f.length;i<j;i++)g=f[i].name,g.indexOf("data-")===0&&(g=g.substr(5),h(this[0],g,e[g]))}}return e}if(typeof a==="object")returnthis.each(function(){d.data(this,a)});vark=a.split(".");k[1]=k[1]?"."+k[1]:"";if(c===b){e=this.triggerHandler("getData"+k[1]+"!",[k[0]]),e===b&&this.length&&(e=d.data(this[0],a),e=h(this[0],a,e));return e===b&&k[1]?this.data(k[0]):e}returnthis.each(function(){varb=d(this),e=[k[0],c];b.triggerHandler("setData"+k[1]+"!",e),d.data(this,a,c),b.triggerHandler("changeData"+k[1]+"!",e)})},removeData:function(a){returnthis.each(function(){d.removeData(this,a)})}}),d.extend({queue:function(a,b,c){if(a){b=(b||"fx")+"queue";var e=d._data(a,b);if(!c)return e||[];!e||d.isArray(c)?e=d._data(a,b,d.makeArray(c)):e.push(c);returne}},dequeue:function(a,b){b=b||"fx";varc=d.queue(a,b),e=c.shift();e==="inprogress"&&(e=c.shift()),e&&(b==="fx"&&c.unshift("inprogress"),e.call(a,function(){d.dequeue(a,b)})),c.length||d.removeData(a,b+"queue",!0)}}),d.fn.extend({queue:function(a,c){typeof a!=="string"&&(c=a,a="fx");if(c===b)return d.queue(this[0],a);returnthis.each(function(b){vare=d.queue(this,a,c);a==="fx"&&e[0]!=="inprogress"&&d.dequeue(this,a)})},dequeue:function(a){returnthis.each(function(){d.dequeue(this,a)})},delay:function(a,b){a=d.fx?d.fx.speeds[a]||a:a,b=b||"fx";returnthis.queue(b,function(){varc=this;setTimeout(function(){d.dequeue(c,b)},a)})},clearQueue:function(a){returnthis.queue(a||"fx",[])}});varj=/[ntr]/g,k=/s+/,l=/r/g,m=/^(?:href|src|style)$/,n=/^(?:button|input)$/i,o=/^(?:button|input|object|select|textarea)$/i,p=/^a(?:rea)?$/i,q=/^(?:radio|checkbox)$/i;d.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"},d.fn.extend({attr:function(a,b){return d.access(this,a,b,!0,d.attr)},removeAttr:function(a,b){returnthis.each(function(){d.attr(this,a,""),this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(d.isFunction(a))return this.each(function(b){varc=d(this);c.addClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"){varb=(a||"").split(k);for(var c=0,e=this.length;c<e;c++){var f=this[c];if(f.nodeType===1)if(f.className){varg=" "+f.className+" ",h=f.className;for(var i=0,j=b.length;i<j;i++)g.indexOf(" "+b[i]+" ")<0&&(h+=""+b[i]);f.className=d.trim(h)}else f.className=a}}returnthis},removeClass:function(a){if(d.isFunction(a))return this.each(function(b){varc=d(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"||a===b){varc=(a||"").split(k);for(var e=0,f=this.length;e<f;e++){varg=this[e];if(g.nodeType===1&&g.className)if(a){var h=(" "+g.className+" ").replace(j," ");for(vari=0,l=c.length;i<l;i++)h=h.replace(" "+c[i]+" "," ");g.className=d.trim(h)}else g.className=""}}returnthis},toggleClass:function(a,b){var c=typeof a,e=typeof b==="boolean";if(d.isFunction(a))returnthis.each(function(c){var e=d(this);e.toggleClass(a.call(this,c,e.attr("class"),b),b)});returnthis.each(function(){if(c==="string"){varf,g=0,h=d(this),i=b,j=a.split(k);while(f=j[g++])i=e?i:!h.hasClass(f),h[i?"addClass":"removeClass"](f)}elseif(c==="undefined"||c==="boolean")this.className&&d._data(this,"__className__",this.className),this.className=this.className||a===!1?"":d._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(j," ").indexOf(b)>-
  • 113. 1101)return!0;return!1},val:function(a){if(!arguments.length){varc=this[0];if(c){if(d.nodeName(c,"option")){vare=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){varf=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(varj=i?f:0,k=i?f+1:h.length;j<k;j++){varm=h[j];if(m.selected&&(d.support.optDisabled?!m.disabled:m.getAttribute("disabled")===null)&&(!m.parentNode.disabled||!d.nodeName(m.parentNode,"optgroup"))){a=d(m).val();if(i)returna;g.push(a)}}if(i&&!g.length&&h.length)return d(h[f]).val();returng}if(q.test(c.type)&&!d.support.checkOn)returnc.getAttribute("value")===null?"on":c.value;return(c.value||"").replace(l,"")}return b}varn=d.isFunction(a);return this.each(function(b){varc=d(this),e=a;if(this.nodeType===1){n&&(e=a.call(this,b,c.val())),e==null?e="":typeofe==="number"?e+="":d.isArray(e)&&(e=d.map(e,function(a){returna==null?"":a+""}));if(d.isArray(e)&&q.test(this.type))this.checked=d.inArray(c.val(),e)>=0;elseif(d.nodeName(this,"select")){varf=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}elsethis.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c ind.attrFn)return d(a)[c](e);varg=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){vari=m.test(c);if(c==="selected"&&!d.support.optSelected){varj=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c ina||a[c]!==b)&&g&&!i){h&&(c==="type"&&n.test(a.nodeName)&&a.parentNode&&d.error("type propertycant bechanged"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){vark=a.getAttributeNode("tabIndex");returnk&&k.specified?k.value:o.test(a.nodeName)||p.test(a.nodeName)&&a.href?0:b}returna[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);returna.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var l=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);returnl===null?b:l}h&&(a[c]=e);return a[c]}});var r=/.(.*)$/,s=/^(?:textarea|input|select)$/i,t=/./g,u=//g,v=/[^ws.|`]/g,w=function(a){returna.replace(v,"$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=x;else if(!f)return;vari,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;varl=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(a){return typeofd!=="undefined"&&d.event.triggered!==a.type?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);varq=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=x);varg,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h int)d.event.remove(a,h+c);return}c=c.split("");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=newRegExp("(^|.)"+d.map(m.slice(0).sort(),w).join(".(?:.*.)?")+"(.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))d.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=d.event.special[h]||{};for(j=f||0;j<p.length;j++){q=p[j];if(e.guid===q.guid){if(l||n.test(q.namespace))f==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(f!=null)break}}if(p.length===0||f!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&d.removeEvent(a,h,s.handle),g=null,deletet[h]}if(d.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,deletes.handle,d.isEmptyObject(s)&&d.removeData(a,b,!0)}}},trigger:function(a,c,e){varf=a.type||a,g=arguments[3];if(!g){a=typeofa==="object"?a[d.expando]?a:d.extend(d.Event(f),a):d.Event(f),f.indexOf("!")>=0&&(a.type=f=f.slice(0,-
  • 114. 1111),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){varb=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)returnb;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;varh=d._data(e,"handle");h&&h.apply(e,c);vari=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){vark,l=a.target,m=f.replace(r,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=a.type,l[m]())}catch(p){}k&&(l["on"+m]=k),d.event.triggered=b}}},handle:function(c){vare,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=newRegExp("(^|.)"+j.join(".(?:.*.)?")+"(.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l<m;l++){varn=f[l];if(e||h.test(n.namespace)){c.handler=n.handler,c.data=n.data,c.handleObj=n;varo=n.handler.apply(this,k);o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}}return c.result},props:"altKey attrChange attrName bubblesbutton cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElementhandler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValuerelatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDeltawhich".split(" "),fix:function(a){if(a[d.expando])return a;var e=a;a=d.Event(e);for(varf=this.props.length,g;f;)g=this.props[--f],a[g]=e[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){varh=c.documentElement,i=c.body;a.pageX=a.clientX+(h&&h.scrollLeft||i&&i.scrollLeft||0)-(h&&h.clientLeft||i&&i.clientLeft||0),a.pageY=a.clientY+(h&&h.scrollTop||i&&i.scrollTop||0)-(h&&h.clientTop||i&&i.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);returna},guid:1e8,proxy:d.proxy,special:{ready:{setup:d.bindReady,teardown:d.noop},live:{add:function(a){d.event.add(this,H(a.origType,a.selector),d.extend({},a,{handler:G,guid:a.handler.guid}))},remove:function(a){d.event.remove(this,H(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){d.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},d.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},d.Event=function(a){if(!this.preventDefault)return newd.Event(a);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?y:x):this.type=a,this.timeStamp=d.now(),this[d.expando]=!0},d.Event.prototype={preventDefault:function(){this.isDefaultPrevented=y;vara=this.originalEvent;a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=y;vara=this.originalEvent;a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=y,this.stopPropagation()},isDefaultPrevented:x,isPropagationStopped:x,isImmediatePropagationStopped:x};var z=function(a){varb=a.relatedTarget;try{if(b&&b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&(a.type=a.data,d.event.handle.apply(this,arguments))}catch(e){}},A=function(a){a.type=a.data,d.event.handle.apply(this,arguments)};d.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){d.event.special[a]={setup:function(c){d.event.add(this,b,c&&c.selector?A:z,a)},teardown:function(a){d.event.remove(this,b,a&&a.selector?A:z)}}}),d.support.submitBubbles||(d.event.special.submit={setup:function(a,b){if(this.nodeName&&this.nodeName.toLowerCase()!=="form")d.event.add(this,"click.specialSubmit",function(a){varb=a.target,c=b.type;(c==="submit"||c==="image")&&d(b).closest("form").length&&E("submit",this,arguments)}),d.event.add(this,"keypress.specialSubmit",function(a){varb=a.target,c=b.type;(c==="text"||c==="password")&&d(b).closest("form").length&&a.keyCode===13&&E("submit",this,arguments)});elsereturn!1},teardown:function(a){d.event.remove(this,".specialSubmit")}});if(!d.support.changeBubbles){v
  • 115. 112ar B,C=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},D=function D(a){varc=a.target,e,f;if(s.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=C(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:D,beforedeactivate:D,click:function(a){varb=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&D.call(this,a)},keydown:function(a){varb=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&D.call(this,a)},beforeactivate:function(a){varb=a.target;d._data(b,"_change_data",C(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var cin B)d.event.add(this,c+".specialChange",B[c]);returns.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");returns.test(this.nodeName)}},B=d.event.special.change.filters,B.focus=B.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function f(a){varc=d.event.fix(a);c.type=b,c.originalEvent={},d.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}vare=0;d.event.special[b]={setup:function(){e++===0&&c.addEventListener(a,f,!0)},teardown:function(){--e===0&&c.removeEventListener(a,f,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;varh=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);returnf.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(vari=0,j=this.length;i<j;i++)d.event.add(this[i],a,h,e);returnthis}}),d.fn.extend({unbind:function(a,b){if(typeof a!=="object"||a.preventDefault)for(vare=0,f=this.length;e<f;e++)d.event.remove(this[e],a,b);else for(var c in a)this.unbind(c,a[c]);returnthis},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){returnarguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){returnthis.each(function(){d.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){varc=d.Event(a);c.preventDefault(),c.stopPropagation(),d.event.trigger(c,b,this[0]);returnc.result}},toggle:function(a){var b=arguments,c=1;while(c<b.length)d.proxy(a,b[c++]);returnthis.click(d.proxy(a,function(e){varf=(d._data(this,"lastToggle"+a.guid)||0)%c;d._data(this,"lastToggle"+a.guid,f+1),e.preventDefault();return b[f].apply(this,arguments)||!1}))},hover:function(a,b){returnthis.mouseenter(a).mouseleave(b||a)}});varF={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};d.each(["live","die"],function(a,c){d.fn[c]=function(a,e,f,g){varh,i=0,j,k,l,m=g||this.selector,n=g?this:d(this.context);if(typeof a==="object"&&!a.preventDefault){for(varo in a)n[c](o,e,a[o],m);return this}d.isFunction(e)&&(f=e,e=b),a=(a||"").split("");while((h=a[i++])!=null){j=r.exec(h),k="",j&&(k=j[0],h=h.replace(r,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,h==="focus"||h==="blur"?(a.push(F[h]+k),h=h+k):h=(F[h]||h)+k;if(c==="live")for(varp=0,q=n.length;p<q;p++)d.event.add(n[p],"live."+H(h,m),{data:e,selector:m,handler:f,origType:h,origHandler:f,preType:l});else n.unbind("live."+H(h,m),f)}return this}}),d.each("blur focus focusin focusout loadresize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseoutmouseenter mouseleave change select submit keydown keypress keyup error".split(""),function(a,b){d.fn[b]=function(a,c){c==null&&(c=a,a=null);returnarguments.length>0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){functionu(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){varj=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!=="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}functiont(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){varj=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}vara=/((?:((?:([^()]+)|[^()]+)+)|[(?:[[^[]]*]|["][^"]*["]|[^[]"]+)+]|.|[^>+~,([]+)+|[>+~])(s*,s*)?((?:.|r|n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=//g,j=/W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;varh=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;vari,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];br
  • 116. 113eak}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[objectArray]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);elsee.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));returne};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){returnk(a,null,null,b)},k.matchesSelector=function(a,b){returnk(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(vare=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){varj=g[1];g.splice(1,1);if(j.substr(j.length-1)!==""){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeofb.getElementsByTagName!=="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n inl.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){varo,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(f){if(f===!0)continue}elseg=o=!0}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);vart=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntaxerror, unrecognized expression: "+a};varl=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[wu00c0-uFFFF-]|.)+)/,CLASS:/.((?:[wu00c0-uFFFF-]|.)+)/,NAME:/[name=["]*((?:[wu00c0-uFFFF-]|.)+)["]*]/,ATTR:/[s*((?:[wu00c0-uFFFF-]|.)+)s*(?:(S?=)s*(?:(["])(.*?)3|(#?(?:[wu00c0-uFFFF-]|.)*)|)|)s*]/,TAG:/^((?:[wu00c0-uFFFF*-]|.)+)/,CHILD:/:(only|nth|last|first)-child(?:(s*(even|odd|(?:[+-]?d+|(?:[+-]?d*)?ns*(?:[+-]s*d+)?))s*))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:((d*)))?(?=[^-]|$)/,PSEUDO:/:((?:[wu00c0-uFFFF-]|.)+)(?:((["]?)((?:([^)]+)|[^()]*)+)2))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){returna.getAttribute("type")}},relative:{"+":function(a,b){var c=typeofb==="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(varf=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1){}a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeofb==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){varg=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=u;typeofb==="string"&&!j.test(b)&&(b=b.toLowerCase(),d=b,g=t),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=u;typeofb==="string"&&!j.test(b)&&(b=b.toLowerCase(),d=b,g=t),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=="undefined"&&!c){var d=b.getElementById(a[1]);returnd&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=="undefined"){varc=[],d=b.getElementsByName(a[1]);for(vare=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);returnc.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=="undefined")returnb.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+"";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+"").replace(/[tnr]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){returna[1].replace(i,"")},TAG:function(a,b){returna[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^+|s*/g,"");var b=/(-?)(d*)(?:n([+-]?d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){varg=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~
  • 117. 114="&&(a[4]=" "+a[4]+" ");returna},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}elseif(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;returnb},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){returna.disabled===!1&&a.type!=="hidden"},disabled:function(a){returna.disabled===!0},checked:function(a){returna.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;returna.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/hd/i.test(a.nodeName)},text:function(a){varb=a.getAttribute("type"),c=a.type;return"text"===c&&(b===c||b===null)},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){returnb===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){returnb%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)returnf(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(varh=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){varc=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;varg=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){vari=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}varj=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){returna.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){returnb==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(""+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){varc=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];returnd==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+"").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)returnf(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return""+(b-0+1)};for(var o in l.match)l.match[o]=newRegExp(l.match[o].source+/(?![^[]*])(?![^(]*))/.source),l.leftMatch[o]=newRegExp(/(^(?:.|r|n)*?)/.source+l.match[o].source.replace(/(d+)/g,n));varp=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}returna};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeofa.length==="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);returnd}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)returna.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){varc,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(a===b){g=!0;return 0}if(h===i)returns(a,b);if(!h)return-1;if(!i)return1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(vark=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(vard=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(newDate).getTime(),e=c.documentElement;a.innerHTML="<aname="+d+"/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeofc.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeofe.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return
  • 118. 115a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){vara=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(vare=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<ahref=#></a>",a.firstChild&&typeofa.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){vara=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<pclass=TEST></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(w+$)|^.([w-]+$)|^#([w-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])returnp(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)returnp(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)returnp([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)returnp([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}elseif(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){varm=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^s*[+~]/.test(b);n?o=o.replace(//g,"$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id="+o+"]"+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e ina)k[e]=a[e];b=null}}(),function(){vara=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){vard=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!=]:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/=s*([^"]]*)s*]/g,"=$1]");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){varf=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}returnk(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class=teste></div><divclass=test></div>";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)returnb.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){returna!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};varv=function(a,b){varc,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);returnk.filter(e,d)};d.find=k,d.expr=k.selectors,d.expr[":"]=d.expr.filters,d.unique=k.uniqueSort,d.text=k.getText,d.isXMLDoc=k.isXML,d.contains=k.contains}();varI=/Until$/,J=/^(?:parents|prevUntil|prevAll)/,K=/,/,L=/^.[^:#[.,]*$/,M=Array.prototype.slice,N=d.expr.match.POS,O={children:!0,contents:!0,next:!0,prev:!0};d.fn.extend({find:function(a){varb=this.pushStack("","find",a),c=0;for(vare=0,f=this.length;e<f;e++){c=b.length,d.find(a,this[e],b);if(e>0)for(var g=c;g<b.length;g++)for(varh=0;h<c;h++)if(b[h]===b[g]){b.splice(g--,1);break}}return b},has:function(a){var b=d(a);returnthis.filter(function(){for(vara=0,c=b.length;a<c;a++)if(d.contains(this,b[a]))return!0})},not:function(a){returnthis.pushStack(Q(this,a,!1),"not",a)},filter:function(a){returnthis.pushStack(Q(this,a,!0),"filter",a)},is:function(a){return!!a&&d.filter(a,this).length>0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){varh,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e<f;e++)i=a[e],j[i]||(j[i]=d.expr.match.POS.test(i)?d(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}varl=N.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e<f;e++){g=this[e];while(g){if(l?l.index(g)>-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeofa==="string")return d.inArray(this[0],a?d(a):this.parent().children());returnd.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeofa==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return
  • 119. 116this.pushStack(P(c[0])||P(e[0])?e:d.unique(e))},andSelf:function(){returnthis.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;returnb&&b.nodeType!==11?b:null},parents:function(a){returnd.dir(a,"parentNode")},parentsUntil:function(a,b,c){returnd.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){returnd.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){returnd.dir(a,"previousSibling")},nextUntil:function(a,b,c){returnd.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){returnd.dir(a,"previousSibling",c)},siblings:function(a){returnd.sibling(a.parentNode.firstChild,a)},children:function(a){returnd.sibling(a.firstChild)},contents:function(a){returnd.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){varf=d.map(this,b,c),g=M.call(arguments);I.test(a)||(e=c),e&&typeofe==="string"&&(f=d.filter(e,f)),f=this.length>1&&!O[a]?d.unique(f):f,(this.length>1||K.test(e))&&J.test(a)&&(f=f.reverse());returnthis.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");returnb.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){varf=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;vare=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){varc=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var R=/jQueryd+="(?:d+|null)"/g,S=/^s+/,T=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([w:]+)[^>]*)/>/ig,U=/<([w:]+)/,V=/<tbody/i,W=/<|&#?w+;/,X=/<(?:script|object|embed|option|style)/i,Y=/checkeds*(?:[^=]|=s*.checked.)/i,Z={option:[1,"<selectmultiple=multiple>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};Z.optgroup=Z.option,Z.tbody=Z.tfoot=Z.colgroup=Z.caption=Z.thead,Z.th=Z.td,d.support.htmlSerialize||(Z._default=[1,"div<div>","</div>"]),d.fn.extend({text:function(a){if(d.isFunction(a))returnthis.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)returnthis.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));returnd.text(this)},wrapAll:function(a){if(d.isFunction(a))returnthis.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){varb=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;returna}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))returnthis.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){varb=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){returnthis.each(function(){d(this).wrapAll(a)})},unwrap:function(){returnthis.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){returnthis.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){returnthis.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)returnthis.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());returnthis.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)returnthis.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());returna}},remove:function(a,b){for(varc=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);returnthis},empty:function(){for(vara=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}returnthis},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){returnd.clone(this,a,b)})},html:function(a){if(a===b)returnthis[0]&&this[0].nodeType===1?this[0].innerHTML.replace(R,""):null;if(typeof
  • 120. 117a!=="string"||X.test(a)||!d.support.leadingWhitespace&&S.test(a)||Z[(U.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){varc=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(T,"<$1></$2>");try{for(varc=0,e=this.length;c<e;c++)this[c].nodeType===1&&(d.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(f){this.empty().append(a)}}returnthis},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(d.isFunction(a))returnthis.each(function(b){var c=d(this),e=c.html();c.replaceWith(a.call(this,b,e))});typeofa!=="string"&&(a=d(a).detach());return this.each(function(){varb=this.nextSibling,c=this.parentNode;d(this).remove(),b?d(b).before(a):d(c).append(a)})}returnthis.length?this.pushStack(d(d.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){returnthis.remove(a,!0)},domManip:function(a,c,e){varf,g,h,i,j=a[0],k=[];if(!d.support.checkClone&&arguments.length===3&&typeofj==="string"&&Y.test(j))return this.each(function(){d(this).domManip(a,c,e,!0)});if(d.isFunction(j))returnthis.each(function(f){varg=d(this);a[0]=j.call(this,f,c?g.html():b),g.domManip(a,c,e)});if(this[0]){i=j&&j.parentNode,d.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?f={fragment:i}:f=d.buildFragment(a,this,k),h=f.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&d.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)e.call(c?$(this[l],g):this[l],f.cacheable||m>1&&l<n?d.clone(h,!0,!0):h)}k.length&&d.each(k,bc)}return this}}),d.buildFragment=function(a,b,e){varf,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeofa[0]==="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!X.test(a[0])&&(d.support.checkClone||!Y.test(a[0]))&&(g=!0,h=d.fragments[a[0]],h&&(h!==1&&(f=h))),f||(f=i.createDocumentFragment(),d.clean(a,i,f,e)),g&&(d.fragments[a[0]]=h?f:1);return{fragment:f,cacheable:g}},d.fragments={},d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(c){vare=[],f=d(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&f.length===1){f[b](this[0]);return this}for(var h=0,i=f.length;h<i;h++){varj=(h>0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}returnthis.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){vare=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){ba(a,e),f=bb(a),g=bb(e);for(h=0;f[h];++h)ba(f[h],g[h])}if(b){_(a,e);if(c){f=bb(a),g=bb(e);for(h=0;f[h];++h)_(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeofb.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);varg=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeofi!=="string"||W.test(i)){if(typeof i==="string"){i=i.replace(T,"<$1></$2>");varj=(U.exec(i)||["",""])[1].toLowerCase(),k=Z[j]||Z._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){varn=V.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]==="<table>"&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&S.test(i)&&m.insertBefore(b.createTextNode(S.exec(i)[0]),m.firstChild),i=m.childNodes}}elsei=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){varb,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(vari=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k inb.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});varbd=/alpha([^)]*)/i,be=/opacity=([^)]*)/,bf=/-([a-z])/ig,bg=/([A-Z]|^ms)/g,bh=/^-?d+(?:px)?$/i,bi=/^-?d/,bj={position:"absolute",visibility:"hidden",display:"block"},bk=["Left","Right"],bl=["Top","Bottom"],bm,bn,bo,bp=function(a,b){returnb.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;returnd.access(this,a,c,!0,function(a,c,e){returne!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){varc=bm(a,"opacity","opacity");return c===""?"1":c}return
  • 121. 118a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){varg,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"inj&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeofe==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"inj)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){varf,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)returnf;if(bm)return bm(a,c,g)},swap:function(a,b,c){var d={};for(var e inb)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){returna.replace(bf,bp)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){varf;if(c){a.offsetWidth!==0?f=bq(a,b,e):d.swap(a,bj,function(){f=bq(a,b,e)});if(f<=0){f=bm(a,b,b),f==="0px"&&bo&&(f=bo(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];returnf===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bh.test(b))returnb;b=parseFloat(b);if(b>=0)returnb+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){returnbe.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;vare=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bd.test(f)?f.replace(bd,e):c.filter+""+e}}),d(function(){d.support.reliableMarginRight||(d.cssHooks.marginRight={get:function(a,b){varc;d.swap(a,{display:"inline-block"},function(){b?c=bm(a,"margin-right","marginRight"):c=a.style.marginRight});returnc}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bn=function(a,c,e){varf,g,h;e=e.replace(bg,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))returnb;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));returnf}),c.documentElement.currentStyle&&(bo=function(a,b){varc,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bh.test(d)&&bi.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));returnd===""?"auto":d}),bm=bn||bo,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){varb=a.offsetWidth,c=a.offsetHeight;returnb===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});varbr=/%20/g,bs=/[]$/,bt=/r?n/g,bu=/#.*$/,bv=/^(.*?):[t]*([^rn]*)r?$/mg,bw=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bx=/^(?:about|app|app-storage|.+-extension|file|widget):$/,by=/^(?:GET|HEAD)$/,bz=/^///,bA=/?/,bB=/<scriptb[^<]*(?:(?!</script>)<[^<]*)*</script>/gi,bC=/^(?:select|textarea)/i,bD=/s+/,bE=/([?&])_=[^&]*/,bF=/(^|-)([a-z])/g,bG=function(a,b,c){return b+c.toUpperCase()},bH=/^([w+.-]+:)(?://([^/?#:]*)(?::(d+))?)?/,bI=d.fn.load,bJ={},bK={},bL,bM;try{bL=c.location.href}catch(bN){bL=c.createElement("a"),bL.href="",bL=bL.href}bM=bH.exec(bL.toLowerCase())||[],d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bI)return bI.apply(this,arguments);if(!this.length)return this;varf=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}varh="GET";c&&(d.isFunction(c)?(e=c,c=b):typeofc==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));vari=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("<div>").append(c.replace(bB,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){returnd.param(this.serializeArray())},serializeArray:function(){return this.map(function(){returnthis.elements?d.makeArray(this.elements):this}).filter(function(){returnthis.name&&!this.disabled&&(this.checked||bC.test(this.nodeName)||bw.test(this.type))}).map(function(a,b){var c=d(this).val();returnc==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bt,"rn")}}):{name:b.name,value:c.replace(bt,"rn")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxErrorajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){returnthis.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){returnd.get(a,b,c,"script")},getJSON:function(a,b,c){return
  • 122. 119d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c ind.ajaxSettings&&(a[c]=d.ajaxSettings[c]);returna},ajaxSettings:{url:bL,isLocal:bx.test(bM[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml,text/xml",html:"text/html",text:"text/plain",json:"application/json,text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"textxml":d.parseXML}},ajaxPrefilter:bO(bJ),ajaxTransport:bO(bK),ajax:function(a,c){functionv(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;varq,t,v,w=l?bR(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;elsetry{t=bS(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};vare=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceofd)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bF,bG)]=b);returnthis},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){varc;if(r===2){if(!n){n={};while(c=bv.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}returnc===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);returnthis},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);returnthis}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}returnthis},e.url=((a||e.url)+"").replace(bu,"").replace(bz,bM[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bD),e.crossDomain==null&&(q=bH.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bM[1]||q[2]!=bM[2]||(q[3]||(q[1]==="http:"?80:443))!=(bM[3]||(bM[1]==="http:"?80:443)))),e.data&&e.processData&&typeofe.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bP(bJ,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!by.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(bA.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){varw=d.now(),x=e.url.replace(bE,"$1_="+w);e.url=x+(x===e.url?(bA.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t ine.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in{success:1,error:1,complete:1})u[t](e[t]);o=bP(bK,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){vare=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bQ(g,a[g],c,f);returne.join("&").replace(br,"+")}}),d.extend({active:0,lastModified:{},etag:{}});varbT=d.now(),bU=/(=)?(&|$)|??/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){returnd.expando+"_"+bT++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeofb.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bU.test(b.url)||f&&bU.test(b.data))){varg,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bU,l),b.url===j&&(f&&(k=k.replace(bU,l)),b.data===k&&(j+=(/?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" wasnot called");returng[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript,application/javascript, application/ecmascript, application/x-
  • 123. 120ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"textscript":function(a){d.globalEval(a);returna}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){vard,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});varbV=d.now(),bW,bX;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bZ()||b$()}:bZ,bX=d.ajaxSettings.xhr(),d.support.ajax=!!bX,d.support.cors=bX&&"withCredentials"inbX,bX=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){varc;return{send:function(e,f){varg=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i ina.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),!a.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i ine)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){varj,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,deletebW[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bW||(bW={},bY()),h=bV++,g.onreadystatechange=bW[h]=c):c()},abort:function(){c&&c(0,1)}}}});var b_={},ca=/^(?:toggle|show|hide)$/,cb=/^([+-]=)?([d+.-]+)([a-z%]*)$/i,cc,cd=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){vare,f;if(a||a===0)return this.animate(ce("show",3),a,b,c);for(varg=0,h=this.length;g<h;g++)e=this[g],f=e.style.display,!d._data(e,"olddisplay")&&f==="none"&&(f=e.style.display=""),f===""&&d.css(e,"display")==="none"&&d._data(e,"olddisplay",cf(e.nodeName));for(g=0;g<h;g++){e=this[g],f=e.style.display;if(f===""||f==="none")e.style.display=d._data(e,"olddisplay")||""}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ce("hide",3),a,b,c);for(vare=0,f=this.length;e<f;e++){varg=d.css(this[e],"display");g!=="none"&&!d._data(this[e],"olddisplay")&&d._data(this[e],"olddisplay",g)}for(e=0;e<f;e++)this[e].style.display="none";return this},_toggle:d.fn.toggle,toggle:function(a,b,c){vare=typeofa==="boolean";d.isFunction(a)&&d.isFunction(b)?this._toggle.apply(this,arguments):a==null||e?this.each(function(){varb=e?a:d(this).is(":hidden");d(this)[b?"show":"hide"]()}):this.animate(ce("toggle",3),a,b,c);returnthis},fadeTo:function(a,b,c,d){returnthis.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,e){var f=d.speed(b,c,e);if(d.isEmptyObject(a))return this.each(f.complete);returnthis[f.queue===!1?"each":"queue"](function(){varb=d.extend({},f),c,e=this.nodeType===1,g=e&&d(this).is(":hidden"),h=this;for(c in a){vari=d.camelCase(c);c!==i&&(a[i]=a[c],delete a[c],c=i);if(a[c]==="hide"&&g||a[c]==="show"&&!g)returnb.complete.call(this);if(e&&(c==="height"||c==="width")){b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(d.css(this,"display")==="inline"&&d.css(this,"float")==="none")if(d.support.inlineBlockNeedsLayout){var j=cf(this.nodeName);j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)}else this.style.display="inline-block"}d.isArray(a[c])&&((b.specialEasing=b.specialEasing||{})[c]=a[c][1],a[c]=a[c][0])}b.overflow!=null&&(this.style.overflow="hidden"),b.curAnim=d.extend({},a),d.each(a,function(c,e){var f=newd.fx(h,b,c);if(ca.test(e))f[e==="toggle"?g?"show":"hide":e](a);else{var i=cb.exec(e),j=f.cur();if(i){vark=parseFloat(i[2]),l=i[3]||(d.cssNumber[c]?"":"px");l!=="px"&&(d.style(h,c,(k||1)+l),j=(k||1)/f.cur()*j,d.style(h,c,j+l)),i[1]&&(k=(i[1]==="-="?-1:1)*k+j),f.custom(j,k,l)}elsef.custom(j,e,"")}});return!0})},stop:function(a,b){varc=d.timers;a&&this.queue([]),this.each(function(){for(var a=c.length-1;a>=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();returnthis}}),d.each({slideDown:ce("show",1),slideUp:ce("hide",1),slideToggle:ce("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof
  • 124. 121a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration ind.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};returne},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];vara,b=d.css(this.elem,this.prop);returnisNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){returne.step(a)}vare=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!cc&&(cc=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){varb=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e inthis.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){varf=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h inthis.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;varj=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(varb=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||d.fx.stop()},interval:13,stop:function(){clearInterval(cc),cc=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){d.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),d.expr&&d.expr.filters&&(d.expr.filters.animated=function(a){return d.grep(d.timers,function(b){return a===b.elem}).length});varcg=/^t(?:able|d|h)$/i,ch=/^(?:body|html)$/i;"getBoundingClientRect"inc.documentElement?d.fn.offset=function(a){var b=this[0],c;if(a)returnthis.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)returnnull;if(b===b.ownerDocument.body)returnd.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(e){}varf=b.ownerDocument,g=f.documentElement;if(!c||!d.contains(g,b))returnc?{top:c.top,left:c.left}:{top:0,left:0};varh=f.body,i=ci(f),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||d.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||d.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:d.fn.offset=function(a){var b=this[0];if(a)returnthis.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)returnnull;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);d.offset.initialize();varc,e=b.offsetParent,f=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(d.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===e&&(l+=b.offsetTop,m+=b.offsetLeft,d.offset.doesNotAddBorder&&(!d.offset.doesAddBorderForTableAndCells||!cg.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),f=e,e=b.offsetParent),d.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;d.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},d.offset={initialize:function(){vara=c.body,b=c.createElement("div"),e,f,g,h,i=parseFloat(d.css(a,"marginTop"))||0,j="<divstyle=position:absolute;top:0;left:0;margin:0;border:5px solid
  • 125. 122#000;padding:0;width:1px;height:1px;><div></div></div><tablestyle=position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;cellpadding=0cellspacing=0><tr><td></td></tr></table>";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),d.offset.initialize=d.noop},bodyOffset:function(a){varb=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");varf=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=(e==="absolute"||e==="fixed")&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"inb?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;vara=this[0],b=this.offsetParent(),c=this.offset(),e=ch.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){vara=this.offsetParent||c.body;while(a&&(!ch.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){varf=this[0],g;if(!f)return null;if(c!==b)returnthis.each(function(){g=ci(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=ci(f);return g?"pageXOffset"ing?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){vare=c.toLowerCase();d.fn["inner"+c]=function(){returnthis[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){returnthis[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)returna==null?null:this;if(d.isFunction(a))return this.each(function(b){varc=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){varg=f.document.documentElement["client"+c];returnf.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)returnMath.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);returnd.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window);jquery.mobile-1.0a4.1.min.css/*! * jQuery Mobile v1.0a4.1 * http://jquerymobile.com/ * * Copyright 2010, jQuery Project * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license *//*! * jQuery Mobile v1.0a4.1 * http://jquerymobile.com/ * * Copyright 2010, jQuery Project
  • 126. 123 * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license */.ui-bar-a{border:1px solid #2a2a2a;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px1px #000;background-image:-moz-linear-gradient(top,#3c3c3c,#111);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3c3c3c),color-stop(1,#111));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#3c3c3c,EndColorStr=#111111)"}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-abutton{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-body-a{border:1px solid#2a2a2a;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-moz-linear-gradient(top,#666,#222);background-image:-webkit-gradient(linear,left top,leftbottom,color-stop(0,#666),color-stop(1,#222));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#666666,EndColorStr=#222222))"}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-abutton{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-br{border-bottom:#828282;border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-btn-up-a{border:1px solid #222;background:#333;font-weight:bold;color:#fff;text-shadow:0 -1px 1px#000;background-image:-moz-linear-gradient(top,#555,#333);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#555),color-stop(1,#333));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#555555,EndColorStr=#333333)"}.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid#000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#666,#444);background-image:-webkit-gradient(linear,left top,leftbottom,color-stop(0,#666),color-stop(1,#444));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#666666,EndColorStr=#444444)"}.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid#000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-moz-linear-gradient(top,#333,#5a5a5a);background-image:-webkit-gradient(linear,left top,leftbottom,color-stop(0,#333),color-stop(1,#5a5a5a));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#333333,EndColorStr=#5a5a5a)"}.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid#456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-moz-linear-gradient(top,#81a8ce,#5e87b0);background-image:-webkit-gradient(linear,lefttop,left bottom,color-stop(0,#81a8ce),color-stop(1,#5e87b0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#81a8ce,EndColorStr=#5e87b0)"}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-bbutton{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#7cc4e7;font-weight:bold}.ui-body-b{border:1px solid#c6c6c6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-moz-linear-gradient(top,#e6e6e6,#ccc);background-image:-webkit-gradient(linear,left top,leftbottom,color-stop(0,#e6e6e6),color-stop(1,#ccc));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#e6e6e6,EndColorStr=#cccccc)"}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-bbutton{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-b{border:1px solid #145072;background:#2567ab;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #145072;background-image:-moz-linear-gradient(top,#4e89c5,#2567ab);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5f9cc5),color-stop(1,#396b9e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#4e89c5,EndColorStr=#2567ab)"}.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid#00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px#014d68;background-image:-moz-linear-gradient(top,#72b0d4,#4b88b6);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#72b0d4),color-stop(1,#4b88b6));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#72b0d4,EndColorStr=#4b88b6)"}.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid#225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px#225377;background-image:-moz-linear-gradient(top,#396b9e,#4e89c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#396b9e),color-stop(1,#4e89c5));-ms-
  • 127. 124filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#396b9e,EndColorStr=#4e89c5)"}.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid#b3b3b3;background:#e9eaeb;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#f0f0f0,#e9eaeb);background-image:-webkit-gradient(linear,left top,leftbottom,color-stop(0,#f0f0f0),color-stop(1,#e9eaeb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#f0f0f0,EndColorStr=#e9eaeb)"}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-cbutton{font-family:Helvetica,Arial,sans-serif}.ui-body-c{border:1px solid #b3b3b3;color:#333;text-shadow:0 1px 0 #fff;background:#f0f0f0;background-image:-moz-linear-gradient(top,#eee,#ddd);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#ddd));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#eeeeee,EndColorStr=#dddddd)"}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-cbutton{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#444;text-shadow:0 1px 1px #f6f6f6;background-image:-moz-linear-gradient(top,#fefefe,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#fdfdfd,EndColorStr=#eeeeee)"}.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid#bbb;background:#dadada;font-weight:bold;color:#101010;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#ededed,#dadada);background-image:-webkit-gradient(linear,lefttop,left bottom,color-stop(0,#ededed),color-stop(1,#dadada));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#ededed,EndColorStr=#dadada)"}.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid#808080;background:#fdfdfd;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#eee,#fdfdfd);background-image:-webkit-gradient(linear,left top,leftbottom,color-stop(0,#eee),color-stop(1,#fdfdfd));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#eeeeee,EndColorStr=#fdfdfd)"}.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid#ccc;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-moz-linear-gradient(top,#ddd,#bbb);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ddd),color-stop(1,#bbb));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#dddddd,EndColorStr=#bbbbbb)"}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-dbutton{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d{border:1px solid #ccc;color:#333;text-shadow:0 1px 0#fff;background:#fff}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-dbutton{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-d{border:1px solid #ccc;background:#fff;font-weight:bold;color:#444;text-shadow:0 1px 1px #fff}.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#222;cursor:pointer;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fdfdfd,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fdfdfd),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#fdfdfd,EndColorStr=#eeeeee)"}.ui-btn-hover-d a.ui-link-inherit{color:#222}.ui-btn-down-d{border:1px solid#aaa;background:#fff;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#eee,#fff);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#eee),color-stop(1,#fff));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#eeeeee, EndColorStr=#ffffff)"}.ui-btn-down-d a.ui-link-inherit{border:1px solid #808080;background:#ced0d2;font-weight:bold;color:#111;text-shadow:none;background-image:-moz-linear-gradient(top,#ccc,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ccc),color-stop(1,#eee));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#cccccc,EndColorStr=#eeeeee)"}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-
  • 128. 125image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceda7),color-stop(1,#fadb4e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#fceda7,EndColorStr=#fadb4e)"}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-dbutton{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e{border:1px solid #f7c942;color:#333;text-shadow:0 1px0 #fff;background:#faeb9e;background-image:-moz-linear-gradient(top,#fff,#faeb9e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(1,#faeb9e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#ffffff, EndColorStr=#faeb9e)"}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-e{border:1px solid #f7c942;background:#fadb4e;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceda7),color-stop(1,#fadb4e));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#fceda7,EndColorStr=#fadb4e)"}.ui-btn-up-e a.ui-link-inherit{color:#333}.ui-btn-hover-e{border:1px solid#e79952;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fcf0b5,#fbe26f);background-image:-webkit-gradient(linear,left top,leftbottom,color-stop(0,#fcf0b5),color-stop(1,#fbe26f));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#fcf0b5,EndColorStr=#fbe26f)"}.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid#f7c942;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-moz-linear-gradient(top,#fadb4e,#fceda7);background-image:-webkit-gradient(linear,lefttop,left bottom,color-stop(0,#fadb4e),color-stop(1,#fceda7));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#fadb4e,EndColorStr=#fceda7)"}.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #155678;background:#4596ce;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-moz-linear-gradient(top,#85bae4,#5393c5);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#85bae4),color-stop(1,#5393c5));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#85bae4,EndColorStr=#5393c5)";outline:0}.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1pxsolid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{cursor:default!important}.ui-icon{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and(min-resolution:240dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:776px 18px;-o-background-size:776px18px;-webkit-background-size:776px 18px;background-size:776px 18px}.ui-icon-alt{background-
  • 129. 126image:url(images/icons-36-black.png)}}.ui-icon-plus{background-position:-0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-180px 50%}.ui-icon-arrow-d{background-position:-216px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-288px 50%}.ui-icon-refresh{background-position:-324px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-396px 50%}.ui-icon-grid{background-position:-432px 50%}.ui-icon-star{background-position:-468px 50%}.ui-icon-alert{background-position:-504px 50%}.ui-icon-info{background-position:-540px 50%}.ui-icon-home{background-position:-576px 50%}.ui-icon-search{background-position:-612px 50%}.ui-icon-checkbox-off{background-position:-684px 50%}.ui-icon-checkbox-on{background-position:-648px 50%}.ui-icon-radio-off{background-position:-756px50%}.ui-icon-radio-on{background-position:-720px 50%}.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-color:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-icon-searchfield{background-image:url(images/icon-search-black.png);background-size:16px 16px}.ui-icon-loading{background-image:url(images/ajax-loader.png);width:40px;height:40px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;background-size:35px 35px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12pxrgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4pxrgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-focus{-moz-box-shadow:0 0 12px#387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus{outline-width:2px}.ui-mobile,.ui-mobile body{height:100%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobilefieldset{border:0}.ui-mobile-viewport{margin:0;overflow-x:hidden;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ui-mobile [data-role=page],.ui-mobile[data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.portrait,.portrait .ui-page{min-height:100%}.landscape,.landscape.ui-page{min-height:100%}.ui-loading .ui-mobile-viewport{overflow:hidden!important}.ui-loading .ui-loader{display:block}.ui-loading .ui-page{overflow:hidden}.ui-loader{display:none;position:absolute;opacity:.85;z-index:100;left:50%;width:200px;margin-left:-130px;margin-top:-35px;padding:10px 30px}.ui-loader h1{font-size:15px;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-
  • 130. 127color:transparent}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-barh6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{display:block}.ui-page.ui-header,.ui-page .ui-footer{position:relative}.ui-header .ui-btn-left{position:absolute;left:10px;top:.4em}.ui-header .ui-btn-right{position:absolute;right:10px;top:.4em}.ui-header .ui-title,.ui-footer .ui-title{text-align:center;font-size:16px;display:block;margin:.6em 90px .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-page-fullscreen .ui-content{padding:0}.ui-icon{width:18px;height:18px}.ui-fullscreen img{max-width:100%}.ui-nojs{position:absolute;left:-9999px}.spin{-webkit-transform:rotate(360deg);-webkit-animation-name:spin;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite}@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.in,.out{-webkit-animation-timing-function:ease-in-out;-webkit-animation-duration:350ms}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;z-index:10}.slideup.out{-webkit-animation-name:dontmove;z-index:0}.slideup.out.reverse{-webkit-transform:translateY(100%);z-index:10;-webkit-animation-name:slideouttobottom}.slideup.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;z-index:10}.slidedown.out{-webkit-animation-name:dontmove;z-index:0}.slidedown.out.reverse{-webkit-transform:translateY(-100%);z-index:10;-webkit-animation-name:slideouttotop}.slidedown.in.reverse{z-index:0;-webkit-animation-name:dontmove}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(-100%)}}@-webkit-keyframesslideouttoright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(100%)}}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframesslideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframesfadeout{from{opacity:1}to{opacity:0}}.fade.in{opacity:1;z-index:10;-webkit-animation-name:fadein}.fade.out{z-index:0;-webkit-animation-name:fadeout}.ui-mobile-viewport-perspective{-webkit-perspective:1000;position:absolute}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.flip{-webkit-animation-duration:.65s;-webkit-backface-visibility:hidden;-webkit-transform:translateX(0)}.flip.in{-webkit-transform:rotateY(0)scale(1);-webkit-animation-name:flipinfromleft}.flip.out{-webkit-transform:rotateY(-180deg) scale(.8);-webkit-animation-name:flipouttoleft}.flip.in.reverse{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromright}.flip.out.reverse{-webkit-transform:rotateY(180deg) scale(.8);-webkit-animation-name:flipouttoright}@-webkit-keyframes flipinfromright{from{-webkit-transform:rotateY(-180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipinfromleft{from{-webkit-transform:rotateY(180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(-180deg) scale(.8)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(180deg) scale(.8)}}@-webkit-keyframesdontmove{from{opacity:1}to{opacity:1}}.pop{-webkit-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);opacity:1;-webkit-animation-name:popin;z-index:10}.pop.out.reverse{-webkit-transform:scale(.2);opacity:0;-webkit-animation-name:popout;z-index:10}.pop.in.reverse{z-index:0;-webkit-animation-name:dontmove}@-webkit-keyframes popin{from{-webkit-transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-webkit-keyframespopout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.2);opacity:0}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px}.ui-grid-solo .ui-block-a{width:100%;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-
  • 131. 128a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%}.ui-grid-d .ui-block-a{clear:left}.ui-header,.ui-footer,.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{position:absolute;overflow:hidden;width:100%;border-left-width:0;border-right-width:0}.ui-header-fixed,.ui-footer-fixed{z-index:1000;-webkit-transform:translateZ(0)}.ui-footer-duplicate,.ui-page-fullscreen .ui-fixed-inline{display:none}.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{opacity:.9}.ui-navbar{overflow:hidden}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsedul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar.ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li .ui-btn:last-child{margin-right:0}.ui-header.ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons.ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded.ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0}.ui-btn:focus,.ui-btn:active{outline:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:13px;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.6em25px;display:block;height:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-bar .ui-btn-inner{padding:.4em 8px .5em}.ui-btn-icon-notext{display:inline-block;width:20px;height:20px;padding:2px 1px 2px 3px;text-indent:-9999px}.ui-btn-icon-notext .ui-btn-inner{padding:0}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-999px}.ui-btn-icon-left .ui-btn-inner{padding-left:33px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-bar .ui-btn-icon-left .ui-btn-inner{padding-left:27px}.ui-btn-icon-right .ui-btn-inner{padding-right:33px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-bar .ui-btn-icon-right .ui-btn-inner{padding-right:27px}.ui-btn-icon-top .ui-btn-inner{padding-top:33px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-bar .ui-btn-icon-top .ui-btn-inner{padding-top:27px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:33px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-bar .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:27px}.ui-btn-icon-notext .ui-icon{display:block}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-icon,.ui-btn-icon-bottom .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-bar.ui-btn-icon-left .ui-icon{left:4px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-bar .ui-btn-icon-right .ui-icon{right:4px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-bar .ui-btn-icon-top .ui-icon{top:4px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-bar .ui-btn-icon-bottom .ui-icon{bottom:4px}.ui-btn-icon-top .ui-icon{top:5px}.ui-btn-icon-bottom .ui-icon{bottom:5px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:0;cursor:pointer;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0)}.ui-collapsible-contain{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading a{text-align:left;margin:0}.ui-collapsible-heading a .ui-btn-inner{padding-left:40px}.ui-collapsible-heading aspan.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px0 1px 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:0}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;left:-9999px}.ui-collapsible-content{display:block;padding:10px 0 10px 8px}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible-contain{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 01em}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-
  • 132. 129weight:normal;margin:0 0 .3em}.ui-controlgroup-controls{display:block;width:95%}.ui-controlgroupli{list-style:none}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{display:inline-block;margin:0-5px 0 0}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{display:inline}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup .ui-checkboxlabel,.ui-controlgroup .ui-radio label{font-size:16px}.min-width-480px .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px .ui-controlgroup-controls{width:60%;display:inline-block}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{margin:15px;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;width:auto}.ui-dialog .ui-content,.ui-dialog .ui-footer{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;z-index:2}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left.ui-btn-inner{padding-left:45px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right.ui-btn-inner{padding-right:45px}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px0 0 0;outline:0!important;z-index:1}.ui-field-contain{background:0;padding:1.5em 0;margin:0;border-bottom-width:1px;overflow:visible}.ui-field-contain:first-child{border-top-width:0}.min-width-480px .ui-field-contain{border-width:0;padding:0;margin:1em 0}.ui-select{display:block;position:relative}.ui-selectselect{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{overflow:hidden}.ui-select .ui-btnselect{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;height:100%;opacity:0;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0)}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0.3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:inline-block;min-height:1em}.ui-select .ui-btn-text{text-overflow:ellipsis;overflow:hidden;display:block}.ui-selectmenu{position:absolute;padding:0;z-index:100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}.min-width-480px label.ui-select{display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px .ui-select{width:60%;display:inline-block}.ui-selectmenu .ui-headerh1:after{content:.;visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:95%}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{padding:0 30px;width:77%;background-position:8px 50%;background-repeat:no-repeat;position:relative}.ui-input-search input.ui-input-text{border:0;width:98%;padding:.4em0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-14px}.ui-input-search .ui-input-clear-hidden{display:none}.min-width-480px label.ui-input-text{vertical-align:top}.min-width-480px label.ui-input-text{display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px input.ui-input-text,.min-width-480px textarea.ui-input-text,.min-width-480px .ui-input-search{width:60%;display:inline-block}.min-width-480px .ui-input-search{width:50%}.min-width-480px .ui-input-search input.ui-input-text{width:98%}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold}.ui-li-divider{counter-reset:listnumbering}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview-inset .ui-li{border-right-
  • 133. 130width:1px;border-left-width:1px}.ui-li:last-child,.ui-li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 75px .7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:60px;padding-left:100px}.ui-li-has-icon .ui-btn-innera.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-thumb,.ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em}.ui-li-thumb,.ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}.min-width-480px .ui-li-aside{width:45%}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:95px}.ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em.5em;top:50%;margin-top:-.9em;right:38px}.ui-li-divider .ui-li-count,.ui-li-static .ui-li-count{right:10px}.ui-li-has-alt .ui-li-count{right:55px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px}.ui-li-link-alt .ui-btn-inner{padding:0;position:static}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-listview-filter-inset{margin:-15px -5px -15px -5px;background:transparent}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{display:block}input.ui-slider-input,.min-width-480px input.ui-slider-input{display:inline-block;width:50px}select.ui-slider-switch{display:none}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:66%}a.ui-slider-handle{position:absolute;z-index:10;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px}a.ui-slider-handle .ui-btn-inner{padding-left:0;padding-right:0}.min-width-480px label.ui-slider{display:inline-block;width:20%;margin:0 2% 0 0}.min-width-480px div.ui-slider{width:45%}div.ui-slider-switch{height:32px;overflow:hidden;margin-left:0}div.ui-slider-inneroffset{margin-left:50%;position:absolute;top:1px;height:100%;width:50%}div.ui-slider-handle-snapping{-webkit-transition:left 100ms linear}div.ui-slider-labelbg{position:absolute;top:0;margin:0;border-width:0}div.ui-slider-switch div.ui-slider-labelbg-a{width:60%;height:100%;left:0}div.ui-slider-switch div.ui-slider-labelbg-b{width:60%;height:100%;right:0}.ui-slider-switch-a div.ui-slider-labelbg-a,.ui-slider-switch-bdiv.ui-slider-labelbg-b{z-index:-1}.ui-slider-switch-a div.ui-slider-labelbg-b,.ui-slider-switch-b div.ui-slider-labelbg-a{z-index:0}div.ui-slider-switch a.ui-slider-handle{z-index:20;width:101%;height:32px;margin-top:-18px;margin-left:-101%}span.ui-slider-label{width:100%;position:absolute;height:32px;font-size:16px;text-align:center;line-height:2;background:0;border-color:transparent}span.ui-slider-label-a{left:-100%;margin-right:-1px}span.ui-slider-label-b{right:-100%;margin-left:-1px}/*modificações*/em { color: red; font-weight: bold; padding-right: .25em; }jquery.mobile-1.0a4.1.min.js/*! * jQuery Mobile v1.0a4.1 * http://jquerymobile.com/ * * Copyright 2010, jQuery Project * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license */(function(a,c){if(a.cleanData){var d=a.cleanData;a.cleanData=function(b){for(varf=0,h;(h=b[f])!=null;f++)a(h).triggerHandler("remove");d(b)}}else{vare=a.fn.remove;a.fn.remove=function(b,f){returnthis.each(function(){if(!f)if(!b||a.filter(b,[this]).length)a("*",this).add([this]).each(function(){a(this).triggerHandler("remove")});return e.call(a(this),b,f)})}}a.widget=function(b,f,h){vari=b.split(".")[0],g;b=b.split(".")[1];g=i+"-"+b;if(!h){h=f;f=a.Widget}a.expr[":"][g]=function(j){return!!a.data(j,b)};a[i]=a[i]||{};a[i][b]=function(j,m){arguments.length&&this._createWidget(j,m)};f=newf;f.options=a.extend(true,{},f.options);a[i][b].prototype=a.extend(true,f,{namespace:i,widgetName:b,wid
  • 134. 131getEventPrefix:a[i][b].prototype.widgetEventPrefix||b,widgetBaseClass:g},h);a.widget.bridge(b,a[i][b])};a.widget.bridge=function(b,f){a.fn[b]=function(h){var i=typeofh==="string",g=Array.prototype.slice.call(arguments,1),j=this;h=!i&&g.length?a.extend.apply(null,[true,h].concat(g)):h;if(i&&h.charAt(0)==="_")return j;i?this.each(function(){var m=a.data(this,b);if(!m)throw"cannot call methods on "+b+" prior toinitialization; attempted to call method "+h+"";if(!a.isFunction(m[h]))throw"no such method "+h+" for"+b+" widget instance";var p=m[h].apply(m,g);if(p!==m&&p!==c){j=p;returnfalse}}):this.each(function(){var m=a.data(this,b);m?m.option(h||{})._init():a.data(this,b,newf(h,this))});returnj}};a.Widget=function(b,f){arguments.length&&this._createWidget(b,f)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(b,f){a.data(f,this.widgetName,this);this.element=a(f);this.options=a.extend(true,{},this.options,this._getCreateOptions(),b);varh=this;this.element.bind("remove."+this.widgetName,function(){h.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){varb={};if(a.metadata)b=a.metadata.get(element)[this.widgetName];returnb},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){returnthis.element},option:function(b,f){var h=b;if(arguments.length===0)returna.extend({},this.options);if(typeof b==="string"){if(f===c)returnthis.options[b];h={};h[b]=f}this._setOptions(h);return this},_setOptions:function(b){varf=this;a.each(b,function(h,i){f._setOption(h,i)});returnthis},_setOption:function(b,f){this.options[b]=f;if(b==="disabled")this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f);return this},enable:function(){returnthis._setOption("disabled",false)},disable:function(){returnthis._setOption("disabled",true)},_trigger:function(b,f,h){vari=this.options[b];f=a.Event(f);f.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase();h=h||{};if(f.originalEvent){b=a.event.props.length;for(var g;b;){g=a.event.props[--b];f[g]=f.originalEvent[g]}}this.element.trigger(f,h);return!(a.isFunction(i)&&i.call(this.element[0],f,h)===false||f.isDefaultPrevented())}}})(jQuery);(function(a,c){a.widget("mobile.widget",{_getCreateOptions:function(){vard=this.element,e={};a.each(this.options,function(b){var f=d.jqmData(b.replace(/[A-Z]/g,function(h){return"-"+h.toLowerCase()}));if(f!==c)e[b]=f});return e}})})(jQuery);(function(a){function c(){var f=d.width(),h=[],i=[],g;e.removeClass("min-width-"+b.join("px min-width-")+"px max-width-"+b.join("px max-width-")+"px");a.each(b,function(j,m){f>=m&&h.push("min-width-"+m+"px");f<=m&&i.push("max-width-"+m+"px")});if(h.length)g=h.join(" ");if(i.length)g+=" "+i.join("");e.addClass(g)}var d=a(window),e=a("html"),b=[320,480,768,1024];a.mobile.media=function(){varf={},h=a("<div id=jquery-mediatest>"),i=a("<body>").append(h);return function(g){if(!(g in f)){varj=document.createElement("style"),m="@media "+g+" { #jquery-mediatest { position:absolute; }}";j.type="text/css";if(j.styleSheet)j.styleSheet.cssText=m;elsej.appendChild(document.createTextNode(m));e.prepend(i).prepend(j);f[g]=h.css("position")==="absolute";i.add(j).remove()}returnf[g]}}();a.mobile.addResolutionBreakpoints=function(f){if(a.type(f)==="array")b=b.concat(f);elseb.push(f);b.sort(function(h,i){return h-i});c()};a(document).bind("mobileinit.htmlclass",function(){d.bind("orientationchange.htmlclassresize.htmlclass",function(f){f.orientation&&e.removeClass("portraitlandscape").addClass(f.orientation);c()})});a(function(){d.trigger("orientationchange.htmlclass")})})(jQuery);(function(a,c){function d(g){var j=g.charAt(0).toUpperCase()+g.substr(1);g=(g+" "+f.join(j+" ")+j).split("");for(var m in g)if(b[m]!==c)return true}vare=a("<body>").prependTo("html"),b=e[0].style,f=["webkit","moz","o"],h=window.palmGetResource||window.PalmServiceBridge,i=window.blackberry;a.mobile.browser={};a.mobile.browser.ie=function(){for(var g=3,j=document.createElement("div"),m=j.all||[];j.innerHTML="<!--[if gt IE "+ ++g+"]><br><![endif]-->",m[0];);return g>4?g:!g}();a.extend(a.support,{orientation:"orientation"in
  • 135. 132window,touch:"ontouchend"in document,cssTransitions:"WebKitTransitionEvent"inwindow,pushState:!!history.pushState,mediaquery:a.mobile.media("onlyall"),cssPseudoElement:!!d("content"),boxShadow:!!d("boxShadow")&&!i,scrollTop:("pageXOffset"inwindow||"scrollTop"in document.documentElement||"scrollTop"ine[0])&&!h,dynamicBaseTag:function(){varg=location.protocol+"//"+location.host+location.pathname+"ui-dir/",j=a("headbase"),m=null,p="";if(j.length)p=j.attr("href");else j=m=a("<base>",{href:g}).appendTo("head");var k=a("<ahref=testurl></a>").prependTo(e)[0].href;j[0].href=p?p:location.pathname;m&&m.remove();returnk.indexOf(g)===0}(),eventCapture:"addEventListener"indocument});e.remove();a.support.boxShadow||a("html").addClass("ui-mobile-nosupport-boxshadow")})(jQuery);(function(a,c,d,e){function b(n){for(;n&&typeof n.originalEvent!=="undefined";)n=n.originalEvent;returnn}function f(n){var v={};for(n=a(n);n&&n.length;){var s=n.data(w),z;for(z ins)if(s[z])v[z]=v.hasVirtualBinding=true;n=n.parent()}return v}functionh(){if(o.touchbindings){G.unbind("touchmove",k).unbind("touchend",q).unbind("scroll",p);o.touchbindings=0}}functioni(){if(t){clearTimeout(t);t=0}t=setTimeout(function(){N=t=0;L.length=0;Q=false;h()},a.vmouse.resetTimerDuration)}function g(n,v,s){var z=false,D;if(!(D=s&&s[n])){if(s=!s)a:{for(s=a(v.target);s&&s.length;){if((D=s.data(w))&&(!n||D[n])){s=s;break a}s=s.parent()}s=null}D=s}if(D){z=v;s=z.type;z=a.Event(z);z.type=n;varH=z.originalEvent,J=a.event.props;if(H)for(n=J.length;n;){D=J[--n];z[D]=H[D]}if(s.search(/^touch/)!==-1){n=b(H);s=n.touches;n=n.changedTouches;if(s=s&&s.length?s[0]:n&&n.length?n[0]:e){n=0;for(H=l.length;n<H;n++){D=l[n];z[D]=s[D]}}}z=z;a(v.target).trigger(z);z=z.isDefaultPrevented()}return z}functionj(n){var v=a(n.target).data(x);if(!Q&&(!N||N!==v))g("v"+n.type,n)}function m(n){var v=b(n).touches;if(v&&v.length===1){vars=n.target;v=f(s);if(v.hasVirtualBinding){N=O++;a(s).data(x,N);if(t){clearTimeout(t);t=0}if(!o.touchbindings){G.bind("touchend",q).bind("touchmove",k).bind("scroll",p);o.touchbindings=1}K=false;s=b(n).touches[0];B=s.pageX;E=s.pageY;if(F){I=c.pageXOffset;R=c.pageYOffset}g("vmouseover",n,v);g("vmousedown",n,v)}}}function p(n){K||g("vmousecancel",n,f(n.target));K=true;i()}function k(n){varv=b(n).touches[0],s=K,z=a.vmouse.moveDistanceThreshold;K=K||F&&(I!==c.pageXOffset||R!==c.pageYOffset)||Math.abs(v.pageX-B)>z||Math.abs(v.pageY-E)>z;v=f(n.target);K&&!s&&g("vmousecancel",n,v);g("vmousemove",n,v);i()}function q(n){h();varv=f(n.target);g("vmouseup",n,v);if(!K)if(g("vclick",n,v)){vars=b(n).changedTouches[0];L.push({touchID:N,x:s.clientX,y:s.clientY});Q=true}g("vmouseout",n,v);K=false;i()}function u(n){n=n.data(w);var v;if(n)for(v in n)if(n[v])return true;return false}function r(){}functiony(n){var v=n.substr(1);return{setup:function(){vars=a(this);u(s)||s.data(w,{});s.data(w)[n]=true;o[n]=(o[n]||0)+1;o[n]===1&&G.bind(v,j);s.bind(v,r);if(C){o.touchstart=(o.touchstart||0)+1;o.touchstart===1&&G.bind("touchstart",m)}},teardown:function(){--o[n];o[n]||G.unbind(v,j);if(C){--o.touchstart;o.touchstart||G.unbind("touchstart",m)}vars=a(this);s.data(w)[n]=false;s.unbind(v,r);u(s)||s.removeData(w)}}}varw="virtualMouseBindings",x="virtualTouchID",A="vmouseover vmousedown vmousemove vmouseupvclick vmouseout vmousecancel".split(" "),l="clientX clientY pageX pageY screenX screenY".split(""),o={},t=0,B=0,E=0,I=0,R=0,K=false,L=[],Q=false,F=a.support.scrollTop,C=a.support.eventCapture,G=a(d),O=1,N=0;a.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(varU=0;U<A.length;U++)a.event.special[A[U]]=y(A[U]);C&&d.addEventListener("click",function(n){varv=L.length,s=n.target;if(v)for(varz=n.clientX,D=n.clientY,H=a.vmouse.clickDistanceThreshold,J=s;J;){for(var P=0;P<v;P++){varT=L[P];if(J===s&&Math.abs(T.x-z)<H&&Math.abs(T.y-D)<H||a(J).data(x)===T.touchID){n.preventDefault();n.stopPropagation();return}}J=J.parentNode}},true)})(jQuery,window,document);(function(a,c){function d(i,g,j){var m=j.type;j.type=g;a.event.handle.call(i,j);j.type=m}a.each("touchstarttouchmove touchend orientationchange tap taphold swipe swipeleft swiperight scrollstartscrollstop".split(" "),function(i,g){a.fn[g]=function(j){returnj?this.bind(g,j):this.trigger(g)};a.attrFn[g]=true});var
  • 136. 133e=a.support.touch,b=e?"touchstart":"mousedown",f=e?"touchend":"mouseup",h=e?"touchmove":"mousemove";a.event.special.scrollstart={enabled:true,setup:function(){function i(p,k){j=k;d(g,j?"scrollstart":"scrollstop",p)}var g=this,j,m;a(g).bind("touchmovescroll",function(p){if(a.event.special.scrollstart.enabled){j||i(p,true);clearTimeout(m);m=setTimeout(function(){i(p,false)},50)}})}};a.event.special.tap={setup:function(){vari=this,g=a(i);g.bind("vmousedown",function(j){functionm(){k=false;clearTimeout(u);g.unbind("vclick",p).unbind("vmousecancel",m)}functionp(r){m();q==r.target&&d(i,"tap",r)}if(j.which&&j.which!==1)return false;vark=true,q=j.target,u;g.bind("vmousecancel",m).bind("vclick",p);u=setTimeout(function(){k&&d(i,"taphold",j)},750)})}};a.event.special.swipe={setup:function(){vari=a(this);i.bind(b,function(g){function j(q){if(p){varu=q.originalEvent.touches?q.originalEvent.touches[0]:q;k={time:(newDate).getTime(),coords:[u.pageX,u.pageY]};Math.abs(p.coords[0]-k.coords[0])>10&&q.preventDefault()}}varm=g.originalEvent.touches?g.originalEvent.touches[0]:g,p={time:(newDate).getTime(),coords:[m.pageX,m.pageY],origin:a(g.target)},k;i.bind(h,j).one(f,function(){i.unbind(h,j);if(p&&k)if(k.time-p.time<1E3&&Math.abs(p.coords[0]-k.coords[0])>30&&Math.abs(p.coords[1]-k.coords[1])<75)p.origin.trigger("swipe").trigger(p.coords[0]>k.coords[0]?"swipeleft":"swiperight");p=k=c})})}};(function(i){function g(){var k=m();if(k!==p){p=k;j.trigger("orientationchange")}}varj=i(window),m,p;i.event.special.orientationchange={setup:function(){if(i.support.orientation)returnfalse;p=m();j.bind("resize",g)},teardown:function(){if(i.support.orientation)returnfalse;j.unbind("resize",g)},add:function(k){var q=k.handler;k.handler=function(u){u.orientation=m();return q.apply(this,arguments)}}};m=function(){vark=document.documentElement;returnk&&k.clientWidth/k.clientHeight<1.1?"portrait":"landscape"}})(jQuery);a.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe",swiperight:"swipe"},function(i,g){a.event.special[i]={setup:function(){a(this).bind(g,a.noop)}}})})(jQuery);(function(a,c,d){function e(m){m=m||location.href;return"#"+m.replace(/^[^#]*#?(.*)$/,"$1")}varb="hashchange",f=document,h,i=a.event.special,g=f.documentMode,j="on"+b inc&&(g===d||g>7);a.fn[b]=function(m){returnm?this.bind(b,m):this.trigger(b)};a.fn[b].delay=50;i[b]=a.extend(i[b],{setup:function(){if(j)returnfalse;a(h.start)},teardown:function(){if(j)return false;a(h.stop)}});h=function(){function m(){varw=e(),x=y(q);if(w!==q){r(q=w,x);a(c).trigger(b)}else if(x!==q)location.href=location.href.replace(/#.*/,"")+x;k=setTimeout(m,a.fn[b].delay)}var p={},k,q=e(),u=function(w){returnw},r=u,y=u;p.start=function(){k||m()};p.stop=function(){k&&clearTimeout(k);k=d};a.browser.msie&&!j&&function(){var w,x;p.start=function(){if(!w){x=(x=a.fn[b].src)&&x+e();w=a(<iframe tabindex="-1"title="empty"/>).hide().one("load",function(){x||r(e());m()}).attr("src",x||"javascript:0").insertAfter("body")[0].contentWindow;f.onpropertychange=function(){try{if(event.propertyName==="title")w.document.title=f.title}catch(A){}}}};p.stop=u;y=function(){return e(w.location.href)};r=function(A,l){varo=w.document,t=a.fn[b].domain;if(A!==l){o.title=f.title;o.open();t&&o.write(<script>document.domain="+t+"</script>);o.close();w.location.hash=A}}}();return p}()})(jQuery,this);(function(a){a.widget("mobile.page",a.mobile.widget,{options:{backBtnText:"Voltar",addBackBtn:true,backBtnTheme:null,degradeInputs:{color:false,date:false,datetime:false,"datetime-local":false,email:false,month:false,number:false,range:"number",search:true,tel:false,time:false,url:false,week:false},keepNative:null},_create:function(){varc=this.element,d=this.options;this.keepNative=":jqmData(role=none),:jqmData(role=nojs)"+(d.keepNative?", "+d.keepNative:"");if(this._trigger("beforeCreate")!==false){c.find(":jqmData(role=page),:jqmData(role=content)").andSelf().each(function(){a(this).addClass("ui-"+a(this).jqmData("role"))});c.find(":jqmData(role=nojs)").addClass("ui-nojs");c.find(":jqmData(role)").andSelf().each(function(){vare=a(this),b=e.jqmData("role"),f=e.jqmData("theme");if(b==="header"||b==="footer"){e.addClass("ui-bar-"+(f||e.parent(":jqmData(role=page)").jqmData("theme")||"a"));e.attr("role",b==="header"?"banner":"contentinfo");f=e.children("a");var h=f.hasClass("ui-btn-left"),i=f.hasClass("ui-btn-right");if(!h)h=f.eq(0).not(".ui-btn-right").addClass("ui-btn-left").length;i||f.eq(1).addClass("ui-btn-right");if(d.addBackBtn&&b==="header"&&a(".ui-page").length>1&&c.jqmData("url")!==a.mobile.path.stripHash(location.hash)&&!h&&e.jqmData("backbtn")!==false){f=a("<a href=# class=ui-btn-left data-"+a.mobile.ns+"rel=back data-
  • 137. 134"+a.mobile.ns+"icon=arrow-l>"+d.backBtnText+"</a>").prependTo(e);d.backBtnTheme&&f.attr("data-"+a.mobile.ns+"theme",d.backBtnTheme)}e.children("h1, h2, h3, h4, h5, h6").addClass("ui-title").attr({tabindex:"0",role:"heading","aria-level":"1"})}else if(b==="content"){f&&e.addClass("ui-body-"+f);e.attr("role","main")}else if(b==="page")e.addClass("ui-body-"+(f||"c"));switch(b){case"header":case "footer":case "page":case "content":e.addClass("ui-"+b);break;case "collapsible":case"fieldcontain":case "navbar":case "listview":case"dialog":e[b]()}});this._enhanceControls();c.find(":jqmData(role=button), .ui-bar > a, .ui-header > a, .ui-footer > a").not(".ui-btn").not(this.keepNative).buttonMarkup();c.find(":jqmData(role=controlgroup)").controlgroup();c.find("a:not(.ui-btn):not(.ui-link-inherit)").not(this.keepNative).addClass("ui-link");c.fixHeaderFooter()}},_typeAttributeRegex:/s+type=["]?w+["]?/,_enhanceControls:function(){varc=this.options,d=this;this.element.find("input").not(this.keepNative).each(function(){varf=this.getAttribute("type"),h=c.degradeInputs[f]||"text";c.degradeInputs[f]&&a(this).replaceWith(a("<div>").html(a(this).clone()).html().replace(d._typeAttributeRegex, type="+h+" data-+a.mobile.ns+type="+f+" ))});var e=this.element.find("input, textarea, select,button"),b=e.not(this.keepNative);e=e.filter("input[type=text]");e.length&&typeofe[0].autocorrect!=="undefined"&&e.each(function(){this.setAttribute("autocorrect","off");this.setAttribute("autocomplete","off")});b.filter("[type=radio], [type=checkbox]").checkboxradio();b.filter("button,[type=button], [type=submit], [type=reset], [type=image]").button();b.filter("input,textarea").not("[type=radio], [type=checkbox], [type=button], [type=submit], [type=reset],[type=image], [type=hidden]").textinput();b.filter("input, select").filter(":jqmData(role=slider),:jqmData(type=range)").slider();b.filter("select:not(:jqmData(role=slider))").selectmenu()}})})(jQuery);(function(a,c){a.extend(a.mobile,{ns:"",subPageUrlKey:"ui-page",nonHistorySelectors:"dialog",activePageClass:"ui-page-active",activeBtnClass:"ui-btn-active",ajaxEnabled:true,hashListeningEnabled:true,ajaxLinksEnabled:true,ajaxFormsEnabled:true,defaultTransition:"slide",loadingMessage:"loading",pageLoadErrorMessage:"Error LoadingPage",metaViewportContent:"width=device-width, minimum-scale=1, maximum-scale=1",gradeA:function(){return a.support.mediaquery||a.mobile.browser.ie&&a.mobile.browser.ie>=7},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91},silentScroll:function(e){e=e||0;a.event.special.scrollstart.enabled=false;setTimeout(function(){c.scrollTo(0,e);a(document).trigger("silentscroll",{x:0,y:e})},20);setTimeout(function(){a.event.special.scrollstart.enabled=true},150)}});a.fn.jqmData=function(e,b){return this.data(e?a.mobile.ns+e:e,b)};a.jqmData=function(e,b,f){returna.data(e,b&&a.mobile.ns+b,f)};a.fn.jqmRemoveData=function(e){returnthis.removeData(a.mobile.ns+e)};a.jqmRemoveData=function(e,b){returna.removeData(e,b&&a.mobile.ns+b)};a.jqmHasData=function(e,b){returna.hasData(e,b&&a.mobile.ns+b)};vard=a.find;a.find=function(e,b,f,h){e=e.replace(/:jqmData(([^)]*))/g,"[data-"+(a.mobile.ns||"")+"$1]");return d.call(this,e,b,f,h)};a.extend(a.find,d);a.find.matches=function(e,b){returna.find(e,null,null,b)};a.find.matchesSelector=function(e,b){returna.find(b,null,null,[e]).length>0}})(jQuery,this);(function(a,c){function d(l){if(i&&(!i.closest(".ui-page-active").length||l))i.removeClass(a.mobile.activeBtnClass);i=null}vare=a(window),b=a("html"),f=a("head"),h={get:function(l){if(l===c)l=location.hash;returnh.stripHash(l).replace(/[^/]*.[^/*]+$/,"")},getFilePath:function(l){varo="&"+a.mobile.subPageUrlKey;returnl&&l.split(o)[0].split(q)[0]},set:function(l){location.hash=l},origin:"",setOrigin:function(){h.origin=h.get(location.protocol+"//"+location.host+location.pathname)},makeAbsolute:function(l){returnh.isPath(window.location.hash)?h.get()+l:l},isPath:function(l){return///.test(l)},clean:function(l){returnl.replace(RegExp("^"+location.protocol+"//"+location.host+location.pathname),"")},stripHash:function(l){return l.replace(/^#/,"")},isExternal:function(l){returnh.hasProtocol(h.clean(l))},hasProtocol:function(l){return/^(:?w+:)/.test(l)},isRelative:function(l){return/^[
  • 138. 135^/|#]/.test(l)&&!h.hasProtocol(l)},isEmbeddedPage:function(l){return/^#/.test(l)}},i=null,g={stack:[],activeIndex:0,getActive:function(){return g.stack[g.activeIndex]},getPrev:function(){return g.stack[g.activeIndex-1]},getNext:function(){returng.stack[g.activeIndex+1]},addNew:function(l,o,t,B){g.getNext()&&g.clearForward();g.stack.push({url:l,transition:o,title:t,page:B});g.activeIndex=g.stack.length-1},clearForward:function(){g.stack=g.stack.slice(0,g.activeIndex+1)},directHashChange:function(l){varo,t,B;a.each(g.stack,function(E,I){if(l.currentUrl===I.url){o=E<g.activeIndex;t=!o;B=E}});this.activeIndex=B!==c?B:this.activeIndex;if(o)l.isBack();else t&&l.isForward()},ignoreNextHashChange:true},j="[tabindex],a,button:visible,select:visible,input",m=null,p=[],k=false,q="&ui-state=dialog",u=f.children("base"),r=location.protocol+"//"+location.host,y=h.get(r+location.pathname),w=y;if(u.length){var x=u.attr("href");if(x)w=x.search(/^[^:/]+://[^/]+/?/)===-1?x.charAt(0)==="/"?r+x:y+x:x;w+=w.charAt(w.length-1)==="/"?" ":"/"}varA=a.support.dynamicBaseTag?{element:u.length?u:a("<base>",{href:w}).prependTo(f),set:function(l){A.element.attr("href",w+h.get(l))},reset:function(){A.element.attr("href",w)}}:c;h.setOrigin();a.fn.animationComplete=function(l){if(a.support.cssTransitions)returna(this).one("webkitAnimationEnd",l);else{setTimeout(l,0);returna(this)}};a.mobile.updateHash=h.set;a.mobile.path=h;a.mobile.base=A;a.mobile.urlstack=g.stack;a.mobile.urlHistory=g;a.mobile.allowCrossDomainPages=false;a.mobile.changePage=function(l,o,t,B,E){function I(){k=false;p.length>0&&a.mobile.changePage.apply(a.mobile,p.pop())}function R(){functionH(){if(B!==false&&C){g.ignoreNextHashChange=false;h.set(C)}var M=l.jqmData("title")||l.find(".ui-header .ui-title").text();if(M&&D==document.title)D=M;!s&&!z&&g.addNew(C,o,D,l);document.title=g.getActive().title;d();a.mobile.silentScroll(l.jqmData("lastScroll"));M=l;varS=M.jqmData("lastClicked");if(S&&S.length)S.focus();else{S=M.find(".ui-title:eq(0)");S.length?S.focus():M.find(j).eq(0).focus()}F&&F.data("page")._trigger("hide",null,{nextPage:l});l.data("page")._trigger("show",null,{prevPage:F||a("")});a.mobile.activePage=l;n!==null&&n.remove();b.removeClass("ui-mobile-rendering");I()}function J(M){a.mobile.pageContainer.addClass(M);V.push(M)}a.mobile.silentScroll();varP=e.scrollTop(),T=["flip"],V=[];if(C.indexOf("&"+a.mobile.subPageUrlKey)>-1)l=a(":jqmData(url="+C+")");if(F){F.jqmData("lastScroll",P).jqmData("lastClicked",i);F.data("page")._trigger("beforehide",null,{nextPage:l})}l.data("page")._trigger("beforeshow",null,{prevPage:F||a("")});if(o&&o!=="none"){a.mobile.pageLoading(true);a.inArray(o,T)>=0&&J("ui-mobile-viewport-perspective");J("ui-mobile-viewport-transitioning");if(F)F.addClass(o+" out "+(t?"reverse":""));l.addClass(a.mobile.activePageClass+" "+o+" in"+(t?"reverse":""));l.animationComplete(function(){l.add(F).removeClass("out in reverse"+o);F&&F.removeClass(a.mobile.activePageClass);H();a.mobile.pageContainer.removeClass(V.join(""));V=[]})}else{a.mobile.pageLoading(true);F&&F.removeClass(a.mobile.activePageClass);l.addClass(a.mobile.activePageClass);H()}}functionK(){if(m||l.jqmData("role")==="dialog"){C=g.getActive().url+q;if(m){l.attr("data-"+a.mobile.ns+"role",m);m=null}}l.page()}varL=a.type(l)==="array",Q=a.type(l)==="object",F=L?l[0]:a.mobile.activePage;l=L?l[1]:l;varC=a.type(l)==="string"?h.stripHash(l):"",G=C,O,N="get",U=false,n=null,v=g.getActive(),s=false,z=false,D=document.title;if(!(v&&g.stack.length>1&&v.url===C&&!L&&!Q))if(k)p.unshift(arguments);else{k=true;E&&g.directHashChange({currentUrl:C,isBack:function(){z=!(s=true);t=true;o=o||v.transition},isForward:function(){z=!(s=false);o=o||g.getActive().transition}});if(Q&&l.url){C=l.url;O=l.data;N=l.type;U=true;if(O&&N==="get"){if(a.type(O)==="object")O=a.param(O);C+="?"+O;O=c}}A&&A.reset();if(window.document.activeElement)a(window.document.activeElement||"").add("input:focus, textarea:focus,select:focus").blur();if(C){l=a(":jqmData(url="+C+")");G=h.getFilePath(C)}else{L=l.attr("data-"+a.mobile.ns+"url");Q=h.getFilePath(L);if(L!==Q)G=Q}if(o===c)o=m&&m==="dialog"?"pop":a.mobile.defaultTransition;if(l.length&&!U){G&&A&&A.set(G);K();R()}else{if(l.length)n=l;a.mobile.pageLoading();a.ajax({url:G,type:N,data:O,dataType:"html",success:function(H){varJ=a("<div></div>"),P,T=H.match(/<title[^>]*>([^<]*)/)&&RegExp.$1,V=RegExp("bdata-"+a.mobile.ns+"url=["]?([^">]*)["]?");if(RegExp(".*(<[^>]+bdata-"+a.mobile.ns+"role=["]?page["]?[^>]*>).*").test(H)&&RegExp.$1&&V.test(RegExp.$1)&&RegExp.$1)P=RegExp.$1;if(P){A&&A.set(P);C=G=h.getFilePath(P)}elseA&&A.set(G);J.get(0).innerHTML=H;l=J.find(":jqmData(role=page),:jqmData(role=dialog)").first();if(T)D=T;if(!a.support.dynamicBaseTag){var M=
  • 139. 136h.get(G);l.find("[src], link[href], a[rel=external], :jqmData(ajax=false), a[target]").each(function(){varS=a(this).is("[href]")?"href":"src",W=a(this).attr(S);W=W.replace(location.protocol+"//"+location.host+location.pathname,"");/^(w+:|#|/)/.test(W)||a(this).attr(S,M+W)})}l.attr("data-"+a.mobile.ns+"url",G).appendTo(a.mobile.pageContainer);K();setTimeout(function(){R()},0)},error:function(){a.mobile.pageLoading(true);d(true);A&&A.set(h.get());I();a("<div class=ui-loader ui-overlay-shadow ui-body-e ui-corner-all><h1>"+a.mobile.pageLoadErrorMessage+"</h1></div>").css({display:"block",opacity:0.96,top:a(window).scrollTop()+100}).appendTo(a.mobile.pageContainer).delay(800).fadeOut(400,function(){a(this).remove()})}})}}};a("form").live("submit",function(l){if(!(!a.mobile.ajaxEnabled||!a.mobile.ajaxFormsEnabled||a(this).is(":jqmData(ajax=false)"))){varo=a(this).attr("method"),t=h.clean(a(this).attr("action")),B=a(this).attr("target");if(!(h.isExternal(t)||B)){if(h.isRelative(t))t=h.makeAbsolute(t);a.mobile.changePage({url:t.length&&t||h.get(),type:o.length&&o.toLowerCase()||"get",data:a(this).serialize()},a(this).jqmData("transition"),a(this).jqmData("direction"),true);l.preventDefault()}}});a("a").live("vclick",function(){a(this).closest(".ui-btn").not(".ui-disabled").addClass(a.mobile.activeBtnClass)});a("a").live("click",function(l){varo=a(this),t=o.attr("href")||"éaqui",B=h.hasProtocol(t);t=h.clean(t);varE=o.is("[rel=external]"),I=h.isEmbeddedPage(t),R=a.mobile.allowCrossDomainPages&&location.protocol==="file:"&&t.search(/^https?:/)!=-1;E=h.isExternal(t)&&!R||E&&!I;I=o.is("[target]");R=o.is(":jqmData(ajax=false)");varK=h.stripHash(t)==a.mobile.activePage.jqmData("url");if(o.is(":jqmData(rel=back)")){window.history.back();return false}if(t.replace(h.get(),"")=="#"||K)l.preventDefault();else{i=o.closest(".ui-btn");if(E||R||I||!a.mobile.ajaxEnabled||!a.mobile.ajaxLinksEnabled)window.setTimeout(function(){d(true)},200);else{E=o.jqmData("transition");I=(I=o.jqmData("direction"))&&I==="reverse"||o.jqmData("back");m=o.attr("data-"+a.mobile.ns+"rel");if(h.isRelative(t)&&!B)t=h.makeAbsolute(t);t=h.stripHash(t);a.mobile.changePage(t,E,I);l.preventDefault()}}});e.bind("hashchange",function(){varl=h.stripHash(location.hash),o=a.mobile.urlHistory.stack.length===0?false:c;if(!a.mobile.hashListeningEnabled||!g.ignoreNextHashChange){if(!g.ignoreNextHashChange)g.ignoreNextHashChange=true}else{if(g.stack.length>1&&l.indexOf(q)>-1)if(a.mobile.activePage.is(".ui-dialog")){vart=function(){l=a.mobile.urlHistory.getActive().page};g.directHashChange({currentUrl:l,isBack:t,isForward:t})}else{g.directHashChange({currentUrl:l,isBack:function(){window.history.back()},isForward:function(){window.history.forward()}});return}l?a.mobile.changePage(l,o,c,false,true):a.mobile.changePage(a.mobile.firstPage,o,true,false,true)}})})(jQuery);(function(a,c){a.fn.fixHeaderFooter=function(){if(!a.support.scrollTop)return this;returnthis.each(function(){var d=a(this);d.jqmData("fullscreen")&&d.addClass("ui-page-fullscreen");d.find(".ui-header:jqmData(position=fixed)").addClass("ui-header-fixed ui-fixed-inlinefade");d.find(".ui-footer:jqmData(position=fixed)").addClass("ui-footer-fixed ui-fixed-inlinefade")})};a.fixedToolbars=function(){functiond(){if(!h&&f=="overlay"){i||a.fixedToolbars.hide(true);a.fixedToolbars.startShowTimer()}}function e(k){var q=0;if(k){varu=k.offsetParent,r=document.body;for(q=k.offsetTop;k&&k!=r;){q+=k.scrollTop||0;if(k==u){q+=u.offsetTop;u=k.offsetParent}k=k.parentNode}}return q}function b(k){varq=a(window).scrollTop(),u=e(k[0]),r=k.css("top")=="auto"?0:parseFloat(k.css("top")),y=window.innerHeight,w=k.outerHeight(),x=k.parents(".ui-page:not(.ui-page-fullscreen)").length;if(k.is(".ui-header-fixed")){r=q-u+r;if(r<u)r=0;return k.css("top",x?r:q)}else{r=q+y-w-(u-r);return k.css("top",x?r:q+y-w)}}if(a.support.scrollTop){var f="inline",h=false,i,g,j=null,m=false,p=true;a(function(){a(document).bind("vmousedown",function(){if(p)j=f}).bind("vclick",function(k){if(p)if(!a(k.target).closest("a,input,textarea,select,button,label,.ui-header-fixed,.ui-footer-fixed").length)if(!m){a.fixedToolbars.toggle(j);j=null}}).bind("scrollstart",function(){m=true;if(j==null)j=f;vark=j=="overlay";if(h=k||!!i){a.fixedToolbars.clearShowTimer();k&&a.fixedToolbars.hide(true)}}).bind("scrollstop",function(k){if(!a(k.target).closest("a,input,textarea,select,button,label,.ui-header-fixed,.ui-footer-fixed").length){m=false;if(h){h=false;a.fixedToolbars.startShowTimer()}j=null}}).bind("silentscroll",d);a(window).bind("resize",d)});a(".ui-page").live("pagebeforeshow",function(k,q){varu=a(k.target).find(":jqmData(role=footer)"),r=u.data("id"),y=q.prevPage;prevFooter=y&&y.find(":jqmData(role=footer)");y=prevFooter.jqmData("id")===r;if(r&&y){g=u;b(g.removeClass("fade inout").appendTo(a.mobile.pageContainer))}});a(".ui-page").live("pageshow",function(){vark=a(this);g&&g.length&&setTimeout(function(){b(g.appendTo(k).addClass("fade"));
  • 140. 137g=null},500);a.fixedToolbars.show(true,this)});return{show:function(k,q){a.fixedToolbars.clearShowTimer();f="overlay";return(q?a(q):a.mobile.activePage?a.mobile.activePage:a(".ui-page-active")).children(".ui-header-fixed:first, .ui-footer-fixed:not(.ui-footer-duplicate):last").each(function(){varu=a(this),r=a(window).scrollTop(),y=e(u[0]),w=window.innerHeight,x=u.outerHeight();r=u.is(".ui-header-fixed")&&r<=y+x||u.is(".ui-footer-fixed")&&y<=r+w;u.addClass("ui-fixed-overlay").removeClass("ui-fixed-inline");!r&&!k&&u.animationComplete(function(){u.removeClass("in")}).addClass("in");b(u)})},hide:function(k){f="inline";return(a.mobile.activePage?a.mobile.activePage:a(".ui-page-active")).children(".ui-header-fixed:first, .ui-footer-fixed:not(.ui-footer-duplicate):last").each(function(){varq=a(this),u=q.css("top");u=u=="auto"?0:parseFloat(u);q.addClass("ui-fixed-inline").removeClass("ui-fixed-overlay");if(u<0||q.is(".ui-header-fixed")&&u!=0)if(k)q.css("top",0);elseq.css("top")!=="auto"&&parseFloat(q.css("top"))!==0&&q.animationComplete(function(){q.removeClass("out reverse");q.css("top",0)}).addClass("outreverse")})},startShowTimer:function(){a.fixedToolbars.clearShowTimer();vark=a.makeArray(arguments);i=setTimeout(function(){i=c;a.fixedToolbars.show.apply(null,k)},100)},clearShowTimer:function(){i&&clearTimeout(i);i=c},toggle:function(k){if(k)f=k;returnf=="overlay"?a.fixedToolbars.hide():a.fixedToolbars.show()},setTouchToggleEnabled:function(k){p=k}}}}()})(jQuery);(function(a,c){a.widget("mobile.checkboxradio",a.mobile.widget,{options:{theme:null},_create:function(){vard=this,e=this.element,b=e.closest("form,fieldset,:jqmData(role=page)").find("label").filter("[for="+e[0].id+"]"),f=e.attr("type"),h="ui-icon-"+f+"-off";if(!(f!="checkbox"&&f!="radio")){a.extend(this,{label:b,inputtype:f,checkedicon:"ui-icon-"+f+"-on",uncheckedicon:h});if(!this.options.theme)this.options.theme=this.element.jqmData("theme");b.buttonMarkup({theme:this.options.theme,icon:this.element.parents(":jqmData(type=horizontal)").length?c:h,shadow:false});e.add(b).wrapAll("<div class=ui-"+f+"></div>");b.bind({vmouseover:function(){if(a(this).parent().is(".ui-disabled"))returnfalse},vclick:function(i){if(e.is(":disabled"))i.preventDefault();else{d._cacheVals();e.attr("checked",f==="radio"&&true||!e.is(":checked"));d._updateAll();returnfalse}}});e.bind({vmousedown:function(){this._cacheVals()},vclick:function(){d._updateAll()},focus:function(){b.addClass("ui-focus")},blur:function(){b.removeClass("ui-focus")}});this.refresh()}},_cacheVals:function(){this._getInputSet().each(function(){a(this).jqmData("cacheVal",a(this).is(":checked"))})},_getInputSet:function(){returnthis.element.closest("form,fieldset,:jqmData(role=page)").find("input[name="+this.element.attr("name")+"][type="+this.inputtype+"]")},_updateAll:function(){vard=this;this._getInputSet().each(function(){if(a(this).is(":checked")||d.inputtype==="checkbox")a(this).trigger("change")}).checkboxradio("refresh")},refresh:function(){var d=this.element,e=this.label,b=e.find(".ui-icon");if(d[0].checked){e.addClass(a.mobile.activeBtnClass);b.addClass(this.checkedicon).removeClass(this.uncheckedicon)}else{e.removeClass(a.mobile.activeBtnClass);b.removeClass(this.checkedicon).addClass(this.uncheckedicon)}d.is(":disabled")?this.disable():this.enable()},disable:function(){this.element.attr("disabled",true).parent().addClass("ui-disabled")},enable:function(){this.element.attr("disabled",false).parent().removeClass("ui-disabled")}})})(jQuery);(function(a){a.widget("mobile.textinput",a.mobile.widget,{options:{theme:null},_create:function(){varc=this.element,d=this.options,e=d.theme;if(!e){e=this.element.closest("[class*=ui-bar-],[class*=ui-body-]");e=e.length?/ui-(bar|body)-([a-z])/.exec(e.attr("class"))[2]:"c"}e=" ui-body-"+e;a("label[for="+c.attr("id")+"]").addClass("ui-input-text");c.addClass("ui-input-text ui-body-"+d.theme);var b=c;if(c.is("[type=search],:jqmData(type=search)")){b=c.wrap(<div class="ui-input-search ui-shadow-inset ui-btn-corner-all ui-btn-shadow ui-icon-searchfield+e+"></div>).parent();var f=a(<a href="#" class="ui-input-clear" title="clear text">cleartext</a>).tap(function(g){c.val("").focus();c.trigger("change");f.addClass("ui-input-clear-hidden");g.preventDefault()}).appendTo(b).buttonMarkup({icon:"delete",iconpos:"notext",corners:true,shadow:true});d=function(){c.val()==""?f.addClass("ui-input-clear-hidden"):f.removeClass("ui-input-clear-hidden")};d();c.keyup(d)}else c.addClass("ui-corner-all ui-shadow-inset"+e);c.focus(function(){b.addClass("ui-focus")}).blur(function(){b.removeClass("ui-focus")});if(c.is("textarea")){var h=function(){varg=c[0].scrollHeight;c[0].clientHeight<g&&c.css({height:g+15})},i;c.keyup(function(){clearTimeout(i);i=setTimeout(h,100)})}},disable:function(){(this.element.attr("disabled",true).is("[type=search],:jqmData(typ
  • 141. 138e=search)")?this.element.parent():this.element).addClass("ui-disabled")},enable:function(){(this.element.attr("disabled",false).is("[type=search],:jqmData(type=search)")?this.element.parent():this.element).removeClass("ui-disabled")}})})(jQuery);(function(a){a.widget("mobile.selectmenu",a.mobile.widget,{options:{theme:null,disabled:false,icon:"arrow-d",iconpos:"right",inline:null,corners:true,shadow:true,iconshadow:true,menuPageTheme:"b",overlayTheme:"a",hidePlaceholderMenuItems:true,closeText:"Close",nativeMenu:true},_create:function(){varc=this,d=this.options,e=this.element.wrap("<div class=ui-select>"),b=e.attr("id"),f=a("label[for="+b+"]").addClass("ui-select"),h=e[0].selectedIndex==-1?0:e[0].selectedIndex,i=(c.options.nativeMenu?a("<div/>"):a("<a>",{href:"#",role:"button",id:m,"aria-haspopup":"true","aria-owns":p})).text(a(e[0].options.item(h)).text()).insertBefore(e).buttonMarkup({theme:d.theme,icon:d.icon,iconpos:d.iconpos,inline:d.inline,corners:d.corners,shadow:d.shadow,iconshadow:d.iconshadow}),g=c.isMultiple=e[0].multiple;d.nativeMenu&&window.opera&&window.opera.version&&e.addClass("ui-select-nativeonly");if(!d.nativeMenu){var j=e.find("option"),m=b+"-button",p=b+"-menu",k=e.closest(".ui-page");h=/ui-btn-up-([a-z])/.exec(i.attr("class"))[1];var q=a("<div data-"+a.mobile.ns+"role=dialog data-"+a.mobile.ns+"theme="+d.menuPageTheme+"><div data-"+a.mobile.ns+"role=header><divclass=ui-title>"+f.text()+"</div></div><div data-"+a.mobile.ns+"role=content></div></div>").appendTo(a.mobile.pageContainer).page(),u=q.find(".ui-content");q.find(".ui-header a");var r=a("<div>",{"class":"ui-selectmenu-screen ui-screen-hidden"}).appendTo(k),y=a("<div>",{"class":"ui-selectmenu ui-selectmenu-hidden ui-overlay-shadowui-corner-all pop ui-body-"+d.overlayTheme}).insertAfter(r),w=a("<ul>",{"class":"ui-selectmenu-list",id:p,role:"listbox","aria-labelledby":m}).attr("data-"+a.mobile.ns+"theme",h).appendTo(y),x=a("<div>",{"class":"ui-header ui-bar-"+h}).prependTo(y),A=a("<h1>",{"class":"ui-title"}).appendTo(x),l=a("<a>",{text:d.closeText,href:"#","class":"ui-btn-left"}).attr("data-"+a.mobile.ns+"iconpos","notext").attr("data-"+a.mobile.ns+"icon","delete").appendTo(x).buttonMarkup()}if(g)c.buttonCount=a("<span>").addClass("ui-li-count ui-btn-up-c ui-btn-corner-all").hide().appendTo(i);d.disabled&&this.disable();e.change(function(){c.refresh()});a.extend(c,{select:e,optionElems:j,selectID:b,label:f,buttonId:m,menuId:p,thisPage:k,button:i,menuPage:q,menuPageContent:u,screen:r,listbox:y,list:w,menuType:void0,header:x,headerClose:l,headerTitle:A,placeholder:""});if(d.nativeMenu)e.appendTo(i).bind("vmousedown",function(){i.addClass(a.mobile.activeBtnClass)}).bind("focusvmouseover",function(){i.trigger("vmouseover")}).bind("vmousemove",function(){i.removeClass(a.mobile.activeBtnClass)}).bind("change blur vmouseout",function(){i.trigger("vmouseout").removeClass(a.mobile.activeBtnClass)});else{c.refresh();e.attr("tabindex","-1").focus(function(){a(this).blur();i.focus()});i.bind("vclickkeydown",function(o){if(o.type=="vclick"||o.keyCode&&(o.keyCode===a.mobile.keyCode.ENTER||o.keyCode===a.mobile.keyCode.SPACE)){c.open();o.preventDefault()}});w.attr("role","listbox").delegate(".ui-li>a","focusin",function(){a(this).attr("tabindex","0")}).delegate(".ui-li>a","focusout",function(){a(this).attr("tabindex","-1")}).delegate("li:not(.ui-disabled, .ui-li-divider)","vclick",function(o){var t=e[0].selectedIndex,B=w.find("li:not(.ui-li-divider)").index(this),E=c.optionElems.eq(B)[0];E.selected=g?!E.selected:true;g&&a(this).find(".ui-icon").toggleClass("ui-icon-checkbox-on",E.selected).toggleClass("ui-icon-checkbox-off",!E.selected);t!==B&&e.trigger("change");g||c.close();o.preventDefault()}).keydown(function(o){vart=a(o.target),B=t.closest("li");switch(o.keyCode){case38:o=B.prev();if(o.length){t.blur().attr("tabindex","-1");o.find("a").first().focus()}return false;case 40:o=B.next();if(o.length){t.blur().attr("tabindex","-1");o.find("a").first().focus()}return false;case13:case 32:t.trigger("vclick");returnfalse}});r.bind("vclick",function(){c.close()});c.headerClose.click(function(){if(c.menuType=="overlay"){c.close();return false}})}},_buildList:function(){varc=this,d=this.options,e=this.placeholder,b=[],f=[],h=c.isMultiple?"checkbox-off":"false";c.list.empty().filter(".ui-listview").listview("destroy");c.select.find("option").each(function(){vari=a(this),g=i.parent(),j=i.text(),m="<ahref=#>"+j+"</a>",p=[],k=[];if(g.is("optgroup")){g=g.attr("label");if(a.inArray(g,b)===-1){f.push("<li data-"+a.mobile.ns+"role=list-divider>"+g+"</li>");b.push(g)}}if(!this.getAttribute("value")||j.length==0||i.jqmData("placeholder")){d.hid
  • 142. 139ePlaceholderMenuItems&&p.push("ui-selectmenu-placeholder");e=c.placeholder=j}if(this.disabled){p.push("ui-disabled");k.push("aria-disabled=true")}f.push("<li data-"+a.mobile.ns+"icon="+h+" class="+p.join(" ")+" "+k.join(" ")+">"+m+"</li>")});c.list.html(f.join(" "));c.list.find("li").attr({role:"option",tabindex:"-1"}).first().attr("tabindex","0");this.isMultiple||this.headerClose.hide();!this.isMultiple&&!e.length?this.header.hide():this.headerTitle.text(this.placeholder);c.list.listview()},refresh:function(c){vard=this,e=this.element,b=this.isMultiple,f=this.optionElems=e.find("option"),h=f.filter(":selected"),i=h.map(function(){returnf.index(this)}).get();if(!d.options.nativeMenu&&(c||e[0].options.length!=d.list.find("li").length))d._buildList();d.button.find(".ui-btn-text").text(function(){if(!b)return h.text();return h.length?h.map(function(){returna(this).text()}).get().join(","):d.placeholder});if(b)d.buttonCount[h.length>1?"show":"hide"]().text(h.length);d.options.nativeMenu||d.list.find("li:not(.ui-li-divider)").removeClass(a.mobile.activeBtnClass).attr("aria-selected",false).each(function(g){if(a.inArray(g,i)>-1){g=a(this).addClass(a.mobile.activeBtnClass);g.find("a").attr("aria-selected",true);b&&g.find(".ui-icon").removeClass("ui-icon-checkbox-off").addClass("ui-icon-checkbox-on")}})},open:function(){function c(){d.list.find(".ui-btn-active").focus()}if(!(this.options.disabled||this.options.nativeMenu)){vard=this,e=d.list.parent().outerHeight(),b=d.list.parent().outerWidth(),f=a(window).scrollTop(),h=d.button.offset().top,i=window.innerHeight,g=window.innerWidth;d.button.addClass(a.mobile.activeBtnClass);setTimeout(function(){d.button.removeClass(a.mobile.activeBtnClass)},300);if(e>i-80||!a.support.scrollTop){f==0&&h>i&&d.thisPage.one("pagehide",function(){a(this).jqmData("lastScroll",h)});d.menuPage.one("pageshow",function(){a(window).one("silentscroll",function(){c()})});d.menuType="page";d.menuPageContent.append(d.list);a.mobile.changePage(d.menuPage,"pop",false,true)}else{d.menuType="overlay";d.screen.height(a(document).height()).removeClass("ui-screen-hidden");varj=h-f,m=f+i-h,p=e/2,k=parseFloat(d.list.parent().css("max-width"));e=j>e/2&&m>e/2?h+d.button.outerHeight()/2-p:j>m?f+i-e-30:f+30;if(b<k)k=(g-b)/2;else{k=d.button.offset().left+d.button.outerWidth()/2-b/2;if(k<30)k=30;else if(k+b>g)k=g-b-30}d.listbox.append(d.list).removeClass("ui-selectmenu-hidden").css({top:e,left:k}).addClass("in");c()}setTimeout(function(){d.isOpen=true},400)}},close:function(){functionc(){setTimeout(function(){d.button.focus()},40);d.listbox.removeAttr("style").append(d.list)}if(!(this.options.disabled||!this.isOpen||this.options.nativeMenu)){vard=this;if(d.menuType=="page"){a.mobile.changePage([d.menuPage,d.thisPage],"pop",true,false);d.menuPage.one("pagehide",c)}else{d.screen.addClass("ui-screen-hidden");d.listbox.addClass("ui-selectmenu-hidden").removeAttr("style").removeClass("in");c()}this.isOpen=false}},disable:function(){this.element.attr("disabled",true);this.button.addClass("ui-disabled").attr("aria-disabled",true);returnthis._setOption("disabled",true)},enable:function(){this.element.attr("disabled",false);this.button.removeClass("ui-disabled").attr("aria-disabled",false);return this._setOption("disabled",false)}})})(jQuery);(function(a){a.fn.buttonMarkup=function(d){return this.each(function(){vare=a(this),b=a.extend({},a.fn.buttonMarkup.defaults,e.jqmData(),d),f,h="ui-btn-inner",i;c&&c();if(!b.theme){f=e.closest("[class*=ui-bar-],[class*=ui-body-]");b.theme=f.length?/ui-(bar|body)-([a-z])/.exec(f.attr("class"))[2]:"c"}f="ui-btn ui-btn-up-"+b.theme;if(b.inline)f+=" ui-btn-inline";if(b.icon){b.icon="ui-icon-"+b.icon;b.iconpos=b.iconpos||"left";i="ui-icon"+b.icon;if(b.shadow)i+=" ui-icon-shadow"}if(b.iconpos){f+=" ui-btn-icon-"+b.iconpos;b.iconpos=="notext"&&!e.attr("title")&&e.attr("title",e.text())}if(b.corners){f+="ui-btn-corner-all";h+=" ui-btn-corner-all"}if(b.shadow)f+=" ui-shadow";e.attr("data-"+a.mobile.ns+"theme",b.theme).addClass(f);b=("<D class="+h+"><D class=ui-btn-text></D>"+(b.icon?"<spanclass="+i+"></span>":"")+"</D>").replace(/D/g,b.wrapperEls);e.wrapInner(b)})};a.fn.buttonMarkup.defaults={corners:true,shadow:true,iconshadow:true,wrapperEls:"span"};var c=function(){a(".ui-btn:not(.ui-disabled)").live({vmousedown:function(){var d=a(this).attr("data-"+a.mobile.ns+"theme");a(this).removeClass("ui-btn-up-"+d).addClass("ui-btn-down-"+d)},"vmousecancel vmouseup":function(){var d=a(this).attr("data-"+a.mobile.ns+"theme");a(this).removeClass("ui-btn-down-"+d).addClass("ui-btn-up-"+d)},"vmouseover focus":function(){var d=a(this).attr("data-
  • 143. 140"+a.mobile.ns+"theme");a(this).removeClass("ui-btn-up-"+d).addClass("ui-btn-hover-"+d)},"vmouseoutblur":function(){var d=a(this).attr("data-"+a.mobile.ns+"theme");a(this).removeClass("ui-btn-hover-"+d).addClass("ui-btn-up-"+d)}});c=null}})(jQuery);(function(a){a.widget("mobile.button",a.mobile.widget,{options:{theme:null,icon:null,iconpos:null,inline:null,corners:true,shadow:true,iconshadow:true},_create:function(){varc=this.element,d=this.options;this.button=a("<div></div>").text(c.text()||c.val()).buttonMarkup({theme:d.theme,icon:d.icon,iconpos:d.iconpos,inline:d.inline,corners:d.corners,shadow:d.shadow,iconshadow:d.iconshadow}).insertBefore(c).append(c.addClass("ui-btn-hidden"));d=c.attr("type");d!=="button"&&d!=="reset"&&c.bind("vclick",function(){vare=a("<input>",{type:"hidden",name:c.attr("name"),value:c.attr("value")}).insertBefore(c);a(document).submit(function(){e.remove()})});this.refresh()},enable:function(){this.element.attr("disabled",false);this.button.removeClass("ui-disabled").attr("aria-disabled",false);returnthis._setOption("disabled",false)},disable:function(){this.element.attr("disabled",true);this.button.addClass("ui-disabled").attr("aria-disabled",true);returnthis._setOption("disabled",true)},refresh:function(){this.element.attr("disabled")?this.disable():this.enable()}})})(jQuery);(function(a){a.widget("mobile.slider",a.mobile.widget,{options:{theme:null,trackTheme:null,disabled:false},_create:function(){var c=this,d=this.element,e=d.parents("[class*=ui-bar-],[class*=ui-body-]").eq(0);e=e.length?e.attr("class").match(/ui-(bar|body)-([a-z])/)[2]:"c";varb=this.options.theme?this.options.theme:e,f=this.options.trackTheme?this.options.trackTheme:e,h=d[0].nodeName.toLowerCase();e=h=="select"?"ui-slider-switch":"";var i=d.attr("id"),g=i+"-label";i=a("[for="+i+"]").attr("id",g);var j=function(){returnh=="input"?parseFloat(d.val()):d[0].selectedIndex},m=h=="input"?parseFloat(d.attr("min")):0,p=h=="input"?parseFloat(d.attr("max")):d.find("option").length-1,k=window.parseFloat(d.attr("step")||1),q=a(<divclass="ui-slider +e+" ui-btn-down-"+f+ ui-btn-corner-all" role="application"></div>),u=a(<a href="#"class="ui-slider-handle"></a>).appendTo(q).buttonMarkup({corners:true,theme:b,shadow:true}).attr({role:"slider","aria-valuemin":m,"aria-valuemax":p,"aria-valuenow":j(),"aria-valuetext":j(),title:j(),"aria-labelledby":g});a.extend(this,{slider:q,handle:u,dragging:false,beforeStart:null});if(h=="select"){q.wrapInner(<div class="ui-slider-inneroffset"></div>);d.find("option");d.find("option").each(function(r){vary=r==0?"b":"a",w=r==0?"right":"left";r=r==0?" ui-btn-down-"+f:" ui-btn-active";a(<div class="ui-slider-labelbg ui-slider-labelbg-+y+r+" ui-btn-corner-"+w+"></div>).prependTo(q);a(<span class="ui-slider-label ui-slider-label-+y+r+" ui-btn-corner-"+w+" role="img">+a(this).text()+"</span>").prependTo(u)})}i.addClass("ui-slider");d.addClass(h=="input"?"ui-slider-input":"ui-slider-switch").change(function(){c.refresh(j(),true)}).keyup(function(){c.refresh(j(),true,true)}).blur(function(){c.refresh(j(),true)});a(document).bind("vmousemove",function(r){if(c.dragging){c.refresh(r);returnfalse}});q.bind("vmousedown",function(r){c.dragging=true;if(h==="select")c.beforeStart=d[0].selectedIndex;c.refresh(r);return false});q.add(document).bind("vmouseup",function(){if(c.dragging){c.dragging=false;if(h==="select"){if(c.beforeStart===d[0].selectedIndex)c.refresh(c.beforeStart===0?1:0);var r=j();r=Math.round(r/(p-m)*100);u.addClass("ui-slider-handle-snapping").css("left",r+"%").animationComplete(function(){u.removeClass("ui-slider-handle-snapping")})}returnfalse}});q.insertAfter(d);this.handle.bind("vmousedown",function(){a(this).focus()}).bind("vclick",false);this.handle.bind("keydown",function(r){var y=j();if(!c.options.disabled){switch(r.keyCode){casea.mobile.keyCode.HOME:case a.mobile.keyCode.END:case a.mobile.keyCode.PAGE_UP:casea.mobile.keyCode.PAGE_DOWN:case a.mobile.keyCode.UP:case a.mobile.keyCode.RIGHT:casea.mobile.keyCode.DOWN:case a.mobile.keyCode.LEFT:r.preventDefault();if(!c._keySliding){c._keySliding=true;a(this).addClass("ui-state-active")}}switch(r.keyCode){casea.mobile.keyCode.HOME:c.refresh(m);break;case a.mobile.keyCode.END:c.refresh(p);break;casea.mobile.keyCode.PAGE_UP:case a.mobile.keyCode.UP:casea.mobile.keyCode.RIGHT:c.refresh(y+k);break;case a.mobile.keyCode.PAGE_DOWN:casea.mobile.keyCode.DOWN:case a.mobile.keyCode.LEFT:c.refresh(y-k)}}}).keyup(function(){if(c._keySliding){c._keySliding=false;a(this).removeClass("ui-state-active")}});this.refresh()},refresh:function(c,d,e){if(!this.options.disabled){varb=this.element,f=b[0].nodeName.toLowerCase(),h=f==="input"?parseFloat(b.attr("min")):0,i=f==="inpu
  • 144. 141t"?parseFloat(b.attr("max")):b.find("option").length-1;if(typeofc==="object"){c=c;if(!this.dragging||c.pageX<this.slider.offset().left-8||c.pageX>this.slider.offset().left+this.slider.width()+8)return;c=Math.round((c.pageX-this.slider.offset().left)/this.slider.width()*100)}else{if(c==null)c=f==="input"?parseFloat(b.val()):b[0].selectedIndex;c=(parseFloat(c)-h)/(i-h)*100}if(!isNaN(c)){if(c<0)c=0;if(c>100)c=100;var g=Math.round(c/100*(i-h))+h;if(g<h)g=h;if(g>i)g=i;this.handle.css("left",c+"%");this.handle.attr({"aria-valuenow":f==="input"?g:b.find("option").eq(g).attr("value"),"aria-valuetext":f==="input"?g:b.find("option").eq(g).text(),title:g});if(f==="select")g===0?this.slider.addClass("ui-slider-switch-a").removeClass("ui-slider-switch-b"):this.slider.addClass("ui-slider-switch-b").removeClass("ui-slider-switch-a");if(!e){if(f==="input")b.val(g);else b[0].selectedIndex=g;d||b.trigger("change")}}}},enable:function(){this.element.attr("disabled",false);this.slider.removeClass("ui-disabled").attr("aria-disabled",false);returnthis._setOption("disabled",false)},disable:function(){this.element.attr("disabled",true);this.slider.addClass("ui-disabled").attr("aria-disabled",true);return this._setOption("disabled",true)}})})(jQuery);(function(a){a.widget("mobile.collapsible",a.mobile.widget,{options:{expandCueText:" click to expandcontents",collapseCueText:" click to collapsecontents",collapsed:false,heading:">:header,>legend",theme:null,iconTheme:"d"},_create:function(){var c=this.element,d=this.options,e=c.addClass("ui-collapsible-contain"),b=c.find(d.heading).eq(0),f=e.wrapInner(<div class="ui-collapsible-content"></div>).find(".ui-collapsible-content");c=c.closest(":jqmData(role=collapsible-set)").addClass("ui-collapsible-set");if(b.is("legend")){b=a(<divrole="heading">+b.html()+"</div>").insertBefore(b);b.next().remove()}b.insertBefore(f);b.addClass("ui-collapsible-heading").append(<span class="ui-collapsible-heading-status"></span>).wrapInner(<ahref="#" class="ui-collapsible-heading-toggle"></a>).find("a:eq(0)").buttonMarkup({shadow:!!!c.length,corners:false,iconPos:"left",icon:"plus",theme:d.theme}).find(".ui-icon").removeAttr("class").buttonMarkup({shadow:true,corners:true,iconPos:"notext",icon:"plus",theme:d.iconTheme});if(c.length)e.jqmData("collapsible-last")&&b.find("a:eq(0), .ui-btn-inner").addClass("ui-corner-bottom");else b.find("a:eq(0)").addClass("ui-corner-all").find(".ui-btn-inner").addClass("ui-corner-all");e.bind("collapse",function(h){if(!h.isDefaultPrevented()){h.preventDefault();b.addClass("ui-collapsible-heading-collapsed").find(".ui-collapsible-heading-status").text(d.expandCueText);b.find(".ui-icon").removeClass("ui-icon-minus").addClass("ui-icon-plus");f.addClass("ui-collapsible-content-collapsed").attr("aria-hidden",true);e.jqmData("collapsible-last")&&b.find("a:eq(0), .ui-btn-inner").addClass("ui-corner-bottom")}}).bind("expand",function(h){if(!h.isDefaultPrevented()){h.preventDefault();b.removeClass("ui-collapsible-heading-collapsed").find(".ui-collapsible-heading-status").text(d.collapseCueText);b.find(".ui-icon").removeClass("ui-icon-plus").addClass("ui-icon-minus");f.removeClass("ui-collapsible-content-collapsed").attr("aria-hidden",false);e.jqmData("collapsible-last")&&b.find("a:eq(0), .ui-btn-inner").removeClass("ui-corner-bottom")}}).trigger(d.collapsed?"collapse":"expand");if(c.length&&!c.jqmData("collapsiblebound")){c.jqmData("collapsiblebound",true).bind("expand",function(h){a(this).find(".ui-collapsible-contain").not(a(h.target).closest(".ui-collapsible-contain")).not("> .ui-collapsible-contain .ui-collapsible-contain").trigger("collapse")});c=c.find(":jqmData(role=collapsible)");c.first().find("a:eq(0)").addClass("ui-corner-top").find(".ui-btn-inner").addClass("ui-corner-top");c.last().jqmData("collapsible-last",true)}b.bind("vmouseup",function(h){b.is(".ui-collapsible-heading-collapsed")?e.trigger("expand"):e.trigger("collapse");h.preventDefault()}).bind("vclick",false)}})})(jQuery);(function(a){a.fn.controlgroup=function(c){return this.each(function(){function d(h){h.removeClass("ui-btn-corner-all ui-shadow").eq(0).addClass(f[0]).end().filter(":last").addClass(f[1]).addClass("ui-controlgroup-last")}vare=a.extend({direction:a(this).jqmData("type")||"vertical",shadow:false},c),b=a(this).find(">legend"),f=e.direction=="horizontal"?["ui-corner-left","ui-corner-right"]:["ui-corner-top","ui-corner-bottom"];a(this).find("input:eq(0)").attr("type");if(b.length){a(this).wrapInner(<div class="ui-controlgroup-controls"></div>);a(<div role="heading" class="ui-controlgroup-label">+b.html()+"</div>").insertBefore(a(this).children(0));b.remove()}a(this).addClass("ui-corner-allui-controlgroup ui-controlgroup-"+e.direction);d(a(this).find(".ui-btn"));d(a(this).find(".ui-btn-inner"));e.shadow&&a(this).addClass("ui-
  • 145. 142shadow")})}})(jQuery);(function(a){a.fn.fieldcontain=function(){return this.addClass("ui-field-contain ui-body ui-br")}})(jQuery);(function(a){a.widget("mobile.listview",a.mobile.widget,{options:{theme:"c",countTheme:"c",headerTheme:"b",dividerTheme:"b",splitIcon:"arrow-r",splitTheme:"b",inset:false},_create:function(){varc=this.element,d=this.options;c.addClass("ui-listview");d.inset&&c.addClass("ui-listview-inset ui-corner-all ui-shadow");this._itemApply(c,c);this.refresh(true)},_itemApply:function(c,d){d.find(".ui-li-count").addClass("ui-btn-up-"+(c.jqmData("counttheme")||this.options.countTheme)+" ui-btn-corner-all");d.find("h1, h2, h3, h4, h5, h6").addClass("ui-li-heading");d.find("p, dl").addClass("ui-li-desc");c.find("li").find(">img:eq(0), >:first>img:eq(0)").addClass("ui-li-thumb").each(function(){a(this).closest("li").addClass(a(this).is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb")});var e=d.find(".ui-li-aside");e.length&&e.each(function(b,f){a(f).prependTo(a(f).parent())});a.support.cssPseudoElement||a.nodeName(d[0],"ol")},_removeCorners:function(c){c.add(c.find(".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb")).removeClass("ui-corner-top ui-corner-bottom ui-corner-br ui-corner-bl ui-corner-tr ui-corner-tl")},refresh:function(c){this._createSubPages();vard=this.options,e=this.element,b=this,f=e.jqmData("dividertheme")||d.dividerTheme,h=e.children("li"),i=a.support.cssPseudoElement||!a.nodeName(e[0],"ol")?0:1;i&&e.find(".ui-li-dec").remove();h.each(function(g){var j=a(this),m="ui-li";if(!(!c&&j.hasClass("ui-li"))){varp=j.jqmData("theme")||d.theme,k=j.find(">a");if(k.length){varq=j.jqmData("icon");j.buttonMarkup({wrapperEls:"div",shadow:false,corners:false,iconpos:"right",icon:k.length>1||q===false?false:q||"arrow-r",theme:p});k.first().addClass("ui-link-inherit");if(k.length>1){m+=" ui-li-has-alt";k=k.last();q=e.jqmData("splittheme")||k.jqmData("theme")||d.splitTheme;k.appendTo(j).attr("title",k.text()).addClass("ui-li-link-alt").empty().buttonMarkup({shadow:false,corners:false,theme:p,icon:false,iconpos:false}).find(".ui-btn-inner").append(a("<span>").buttonMarkup({shadow:true,corners:true,theme:q,iconpos:"notext",icon:e.jqmData("spliticon")||k.jqmData("icon")||d.splitIcon}))}}else if(j.jqmData("role")==="list-divider"){m+=" ui-li-divider ui-btn ui-bar-"+f;j.attr("role","heading");if(i)i=1}else m+=" ui-li-static ui-body-"+p;if(d.inset){if(g===0){m+=" ui-corner-top";j.add(j.find(".ui-btn-inner")).find(".ui-li-link-alt").addClass("ui-corner-tr").end().find(".ui-li-thumb").addClass("ui-corner-tl");j.next().next().length&&b._removeCorners(j.next())}if(g===h.length-1){m+=" ui-corner-bottom";j.add(j.find(".ui-btn-inner")).find(".ui-li-link-alt").addClass("ui-corner-br").end().find(".ui-li-thumb").addClass("ui-corner-bl");j.prev().prev().length&&b._removeCorners(j.prev())}}if(i&&m.indexOf("ui-li-divider")<0)(j.is(".ui-li-static:first")?j:j.find(".ui-link-inherit")).addClass("ui-li-jsnumbering").prepend("<span class=ui-li-dec>"+i++ +". </span>");j.add(j.find(".ui-btn-inner")).addClass(m);c||b._itemApply(e,j)}})},_idStringEscape:function(c){return c.replace(/[^a-zA-Z0-9]/g,"-")},_createSubPages:function(){var c=this.element,d=c.closest(".ui-page"),e=d.jqmData("url"),b=this.options,f=this,h=d.find(":jqmData(role=footer)").jqmData("id");a(c.find("li>ul, li>ol").toArray().reverse()).each(function(i){varg=a(this),j=g.parent(),m=a(g.prevAll().toArray().reverse());m=m.length?m:a("<span>"+a.trim(j.contents()[0].nodeValue)+"</span>");varp=m.first().text();i=e+"&"+a.mobile.subPageUrlKey+"="+f._idStringEscape(p+" "+i);vark=g.jqmData("theme")||b.theme,q=g.jqmData("counttheme")||c.jqmData("counttheme")||b.countTheme;g.wrap("<div data-"+a.mobile.ns+"role=page><div data-"+a.mobile.ns+"role=content></div></div>").parent().before("<div data-"+a.mobile.ns+"role=header data-"+a.mobile.ns+"theme="+b.headerTheme+"><div class=ui-title>"+p+"</div></div>").after(h?a("<div data-"+a.mobile.ns+"role=footer data-"+a.mobile.ns+"id="+h+">"):"").parent().attr("data-"+a.mobile.ns+"url",i).attr("data-"+a.mobile.ns+"theme",k).attr("data-"+a.mobile.ns+"count-theme",q).appendTo(a.mobile.pageContainer).page();g=j.find("a:first");g.length||(g=a("<a></a>").html(m||p).prependTo(j.empty()));g.attr("href","#"+i)}).listview()}})})(jQuery);(function(a){a.mobile.listview.prototype.options.filter=false;a.mobile.listview.prototype.options.filterPlaceholder="Filter items...";a(":jqmData(role=listview)").live("listviewcreate",function(){varc=a(this),d=c.data("listview");if(d.options.filter){var e=a("<form>",{"class":"ui-listview-filter ui-bar-c",role:"search"});a("<input>",{placeholder:d.options.filterPlaceholder}).attr("data-"+a.mobile.ns+"type","search").bind("keyup change",function(){varb=this.value.toLowerCase(),f=c.children();f.show();
  • 146. 143if(b)for(var h=false,i,g=f.length;g>=0;g--){i=a(f[g]);if(i.is("li:jqmData(role=list-divider)")){h||i.hide();h=false}else if(i.text().toLowerCase().indexOf(b)===-1)i.hide();elseh=true}}).appendTo(e).textinput();a(this).jqmData("inset")&&e.addClass("ui-listview-filter-inset");e.insertBefore(c)}})})(jQuery);(function(a){a.widget("mobile.dialog",a.mobile.widget,{options:{closeBtnText:"Close"},_create:function(){this.element.attr("role","dialog").addClass("ui-page ui-dialog ui-body-a").find(":jqmData(role=header)").addClass("ui-corner-top ui-overlay-shadow").prepend("<a href=#data-"+a.mobile.ns+"icon=delete data-"+a.mobile.ns+"rel=back data-"+a.mobile.ns+"iconpos=notext>"+this.options.closeBtnText+"</a>").end().find(.ui-content:not([class*="ui-body-"])).addClass("ui-body-c").end().find(".ui-content,:jqmData(role=footer)").last().addClass("ui-corner-bottom ui-overlay-shadow");this.element.bind("vclicksubmit",function(c){c=c.type=="vclick"?a(c.target).closest("a"):a(c.target).closest("form");c.length&&!c.jqmData("transition")&&c.attr("data-"+a.mobile.ns+"transition",a.mobile.urlHistory.getActive().transition).attr("data-"+a.mobile.ns+"direction","reverse")})},close:function(){window.history.back()}})})(jQuery);(function(a,c){a.widget("mobile.navbar",a.mobile.widget,{options:{iconpos:"top",grid:null},_create:function(){vard=this.element,e=d.find("a"),b=e.filter(":jqmData(icon)").length?this.options.iconpos:c;d.addClass("ui-navbar").attr("role","navigation").find("ul").grid({grid:this.options.grid});b||d.addClass("ui-navbar-noicons");e.buttonMarkup({corners:false,shadow:false,iconpos:b});d.delegate("a","vclick",function(){e.not(".ui-state-persist").removeClass(a.mobile.activeBtnClass);a(this).addClass(a.mobile.activeBtnClass)})}})})(jQuery);(function(a){a.fn.grid=function(c){return this.each(function(){vard=a.extend({grid:null},c),e=a(this).children(),b={solo:1,a:2,b:3,c:4,d:5};d=d.grid;if(!d)if(e.length<=5)for(var f in b){if(b[f]==e.length)d=f}else d="a";b=b[d];a(this).addClass("ui-grid-"+d);e.filter(":nth-child("+b+"n+1)").addClass("ui-block-a");b>1&&e.filter(":nth-child("+b+"n+2)").addClass("ui-block-b");b>2&&e.filter(":nth-child(3n+3)").addClass("ui-block-c");b>3&&e.filter(":nth-child(4n+4)").addClass("ui-block-d");b>4&&e.filter(":nth-child(5n+5)").addClass("ui-block-e")})}})(jQuery);(function(a,c,d){vare=a("html"),b=a("head"),f=a(c);a(c.document).trigger("mobileinit");if(a.mobile.gradeA()){e.addClass("ui-mobile ui-mobile-rendering");a.mobile.metaViewportContent&&!b.find("meta[name=viewport]").length&&a("<meta>",{name:"viewport",content:a.mobile.metaViewportContent}).prependTo(b);varh=a.mobile.loadingMessage?a("<div class=ui-loader ui-body-a ui-corner-all><span class=ui-icon ui-icon-loading spin></span><h1>"+a.mobile.loadingMessage+"</h1></div>"):d;typeofh==="undefined"&&alert(a.mobile.loadingMessage);a.extend(a.mobile,{pageLoading:function(i){if(i)e.removeClass("ui-loading");else{if(a.mobile.loadingMessage){i=a("."+a.mobile.activeBtnClass).first();typeofh==="undefined"&&alert(a.mobile.loadingMessage);h.appendTo(a.mobile.pageContainer).css({top:a.support.scrollTop&&a(c).scrollTop()+a(c).height()/2||i.length&&i.offset().top||100})}e.addClass("ui-loading")}},initializePage:function(){vari=a(":jqmData(role=page)");i.add(":jqmData(role=dialog)").each(function(){var g=a(this);g.jqmData("url")||g.attr("data-"+a.mobile.ns+"url",g.attr("id"))});a.mobile.firstPage=i.first();a.mobile.pageContainer=i.first().parent().addClass("ui-mobile-viewport");a.mobile.pageLoading();!a.mobile.hashListeningEnabled||!a.mobile.path.stripHash(location.hash)?a.mobile.changePage(a.mobile.firstPage,false,true,false,true):f.trigger("hashchange",[true])}});a(a.mobile.initializePage);f.load(a.mobile.silentScroll)}})(jQuery,this);mobile_device_detect.php<?php/*
  • 147. 144 This code is from http://detectmobilebrowsers.mobi/ - please do not republish it without due creditand hyperlink to http://detectmobilebrowsers.mobi/ really, id prefer it if it wasnt republished in full asthat way its main source is its homepage and its always kept up to date For help generating the function call visit http://detectmobilebrowsers.mobi/ and use the functiongenerator. If you need serious help with this please drop me an email to andy@andymoore.info withthe subject DETECTION CODE PAID SUPPORT REUQEST with a detailed outline of what you needand how I can help and I will get back to you with a proposal for integration. Published by Andy Moore - .mobi certified mobile web developer - http://andymoore.info/ This code is free to download and use on non-profit websites, if your website makes a profit or yourequire support using this code please upgrade. Please upgrade for use on commercial websites http://detectmobilebrowsers.mobi/?volume=49999 To submit a support request please forward your PayPal receipt with your questions to the emailaddress you sent the money to and I will endeavour to get back to you. It might take me a few daysbut I reply to all support issues with as much helpful info as I can provide. Though really everything ispublished on the site. The function has eight parameters that can be passed to it which define the way it handles differentscenarios. These paramaters are: * iPhone - Set to true to treat iPhones as mobiles, false to treat them like full browsers or set a URL(including http://) to redirect iPhones and iPods to. * Android - Set to true to treat Android handsets as mobiles, false to treat them like full browsers orset a URL (including http://) to redirect Android and Google mobile users to. * Opera Mini - Set to true to treat Opera Mini like a mobile, false to treat it like full browser or set aURL (including http://) to redirect Opera Mini users to. * Blackberry - Set to true to treat Blackberry like a mobile, false to treat it like full browser or set aURL (including http://) to redirect Blackberry users to. * Palm - Set to true to treat Palm OS like a mobile, false to treat it like full browser or set a URL(including http://) to redirect Palm OS users to. * Windows - Set to true to treat Windows Mobiles like a mobile, false to treat it like full browser orset a URL (including http://) to redirect Windows Mobile users to. * Mobile Redirect URL - This should be full web address (including http://) of the site (or page) youwant to send mobile visitors to. Leaving this blank will make the script return true when it detects amobile. * Desktop Redirect URL - This should be full web address (including http://) of the site (or page) youwant to send non-mobile visitors to. Leaving this blank will make the script return false when it fails todetect a mobile.Change Log: * 25.11.08 - Added Amazons Kindle to the pipe seperated array * 27.11.08 - Added support for Blackberry options * 27.01.09 - Added usage samples & help with PHP in HTML - .zip * 09.03.09 - Added support for Windows Mobile options * 09.03.09 - Removed ppc;=>ppc;, from array to reduce false positives * 09.03.09 - Added support for Palm OS options * 09.03.09 - Added sample .htaccess html.html and help.html files to download * 16.03.09 - Edited sample .htaccess file - now works with GoDaddy * 14.08.09 - Reduced false positives * 14.08.09 - Added Palm Pre * 14.08.09 - Added answer about search engine spiders * 14.08.09 - Added status variable to report back its findings for debugging * 14.08.09 - Added Torch Mobile Iris Browser to Windows Mobile section * 14.08.09 - Added HTC Touch 3G to Windows Mobile section * 14.08.09 - Added help links to PHP header and setup PHP in HTML
  • 148. 145 * 14.08.09 - Added six usage examples * 15.08.09 - Checked against the list of agents in the WURFL - 99.27% detected! o 11,489 mobile user agent strings checked o 99.27% detection rate after a number of small changes o Those user agent strings listed that are not detected are either robots or too generic for useragent detection o Any mobiles not detected by their user agent would most likely return true as theyd bedetected by the headers they add. * 20.11.09 - Removed PDA from the piped array to stop false positives * 22.12.09 - Moved the site to a server hosted at Rackspace * 23.12.09 - Added support for Mozilla Fennec * 23.04.10 - Added support for the Apple iPad o Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML,like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10 o Mozilla/5.0 (iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10(KHTML, like Gecko) Mobile/7D11 o Mozilla/5.0 (iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10(KHTML, like Gecko) Version/4.0.4 Mobile/7B317 Safari/531.21.10 * 23.04.10 - Changed all eregi function calls to preg_match * 23.04.10 - Added two more examples o Added example-7.php which allows switching between desktop and mobile versions o Added example-8.php which shows why the script made the decision it did * No longer using include, using require_once insteadbug fixes with many thanks and much credit to http://www.punchkickinteractive.com/ - thanks Ryan!*/functionmobile_device_detect($iphone=true,$ipad=true,$android=true,$opera=true,$blackberry=true,$palm=true,$windows=true,$mobileredirect=false,$desktopredirect=false){ $mobile_browser = false; // set mobile browser as false till we can prove otherwise $user_agent = $_SERVER[HTTP_USER_AGENT]; // get the user agent value - this should becleaned to ensure no nefarious input gets executed $accept = $_SERVER[HTTP_ACCEPT]; // get the content accept value - this should becleaned to ensure no nefarious input gets executed switch(true){ // using a switch against the following statements which could return true is moreefficient than the previous method of using if statements case (preg_match(/ipad/i,$user_agent)); // we find the word ipad in the user agent $mobile_browser = $ipad; // mobile browser is either true or false depending on the setting of ipadwhen calling the function $status = Apple iPad; if(substr($ipad,0,4)==http){ // does the value of ipad resemble a url $mobileredirect = $ipad; // set the mobile redirect url to the url value stored in the ipad value } // ends the if for ipad being a url break; // break out and skip the rest if weve had a match on the ipad // this goes before the iphoneto catch it else it would return on the iphone instead case (preg_match(/ipod/i,$user_agent)||preg_match(/iphone/i,$user_agent)); // we find the wordsiphone or ipod in the user agent $mobile_browser = $iphone; // mobile browser is either true or false depending on the setting ofiphone when calling the function $status = Apple; if(substr($iphone,0,4)==http){ // does the value of iphone resemble a url $mobileredirect = $iphone; // set the mobile redirect url to the url value stored in the iphone value } // ends the if for iphone being a url break; // break out and skip the rest if weve had a match on the iphone or ipod
  • 149. 146 case (preg_match(/android/i,$user_agent)); // we find android in the user agent $mobile_browser = $android; // mobile browser is either true or false depending on the setting ofandroid when calling the function $status = Android; if(substr($android,0,4)==http){ // does the value of android resemble a url $mobileredirect = $android; // set the mobile redirect url to the url value stored in the androidvalue } // ends the if for android being a url break; // break out and skip the rest if weve had a match on android case (preg_match(/opera mini/i,$user_agent)); // we find opera mini in the user agent $mobile_browser = $opera; // mobile browser is either true or false depending on the setting ofopera when calling the function $status = Opera; if(substr($opera,0,4)==http){ // does the value of opera resemble a rul $mobileredirect = $opera; // set the mobile redirect url to the url value stored in the opera value } // ends the if for opera being a url break; // break out and skip the rest if weve had a match on opera case (preg_match(/blackberry/i,$user_agent)); // we find blackberry in the user agent $mobile_browser = $blackberry; // mobile browser is either true or false depending on the settingof blackberry when calling the function $status = Blackberry; if(substr($blackberry,0,4)==http){ // does the value of blackberry resemble a rul $mobileredirect = $blackberry; // set the mobile redirect url to the url value stored in theblackberry value } // ends the if for blackberry being a url break; // break out and skip the rest if weve had a match on blackberry case (preg_match(/(pre/|palm os|palm|hiptop|avantgo|plucker|xiino|blazer|elaine)/i,$user_agent));// we find palm os in the user agent - the i at the end makes it case insensitive $mobile_browser = $palm; // mobile browser is either true or false depending on the setting ofpalm when calling the function $status = Palm; if(substr($palm,0,4)==http){ // does the value of palm resemble a rul $mobileredirect = $palm; // set the mobile redirect url to the url value stored in the palm value } // ends the if for palm being a url break; // break out and skip the rest if weve had a match on palm os case (preg_match(/(iris|3g_t|windows ce|opera mobi|windows ce; smartphone;|windows ce;iemobile)/i,$user_agent)); // we find windows mobile in the user agent - the i at the end makes it caseinsensitive $mobile_browser = $windows; // mobile browser is either true or false depending on the setting ofwindows when calling the function $status = Windows Smartphone; if(substr($windows,0,4)==http){ // does the value of windows resemble a rul $mobileredirect = $windows; // set the mobile redirect url to the url value stored in the windowsvalue } // ends the if for windows being a url break; // break out and skip the rest if weve had a match on windows case (preg_match(/(mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless|mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk|c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|_
  • 150. 147mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew |d88|htc/|htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u/|me702|8325rc|kddi|phone|lg|sonyericsson|samsung|240x|x320|vx10|nokia|sonycmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|psp|treo)/i,$user_agent)); // check if any of the values listed create a match on the user agent -these are some of the most common terms used in agents to identify them as being mobile devices -the i at the end makes it case insensitive $mobile_browser = true; // set mobile browser to true $status = Mobile matched on piped preg_match; break; // break out and skip the rest if weve preg_match on the user agent returned true case ((strpos($accept,text/vnd.wap.wml)>0)||(strpos($accept,application/vnd.wap.xhtml+xml)>0));// is the device showing signs of support for text/vnd.wap.wml or application/vnd.wap.xhtml+xml $mobile_browser = true; // set mobile browser to true $status = Mobile matched on content accept header; break; // break out and skip the rest if weve had a match on the content accept headers case (isset($_SERVER[HTTP_X_WAP_PROFILE])||isset($_SERVER[HTTP_PROFILE])); // is thedevice giving us a HTTP_X_WAP_PROFILE or HTTP_PROFILE header - only mobile devices woulddo this $mobile_browser = true; // set mobile browser to true $status = Mobile matched on profile headers being set; break; // break out and skip the final step if weve had a return true on the mobile specfic headers case(in_array(strtolower(substr($user_agent,0,4)),array(1207=>1207,3gso=>3gso,4thp=>4thp,501i=>501i,502i=>502i,503i=>503i,504i=>504i,505i=>505i,506i=>506i,6310=>6310,6590=>6590,770s=>770s,802s=>802s,a wa=>a wa,acer=>acer,acs-=>acs-,airn=>airn,alav=>alav,asus=>asus,attw=>attw,au-m=>au-m,aur =>aur ,aus =>aus,abac=>abac,acoo=>acoo,aiko=>aiko,alco=>alco,alca=>alca,amoi=>amoi,anex=>anex,anny=>anny,anyw=>anyw,aptu=>aptu,arch=>arch,argo=>argo,bell=>bell,bird=>bird,bw-n=>bw-n,bw-u=>bw-u,beck=>beck,benq=>benq,bilb=>bilb,blac=>blac,c55/=>c55/,cdm-=>cdm-,chtm=>chtm,capi=>capi,cond=>cond,craw=>craw,dall=>dall,dbte=>dbte,dc-s=>dc-s,dica=>dica,ds-d=>ds-d,ds12=>ds12,dait=>dait,devi=>devi,dmob=>dmob,doco=>doco,dopo=>dopo,el49=>el49,erk0=>erk0,esl8=>esl8,ez40=>ez40,ez60=>ez60,ez70=>ez70,ezos=>ezos,ezze=>ezze,elai=>elai,emul=>emul,eric=>eric,ezwa=>ezwa,fake=>fake,fly-=>fly-,fly_=>fly_,g-mo=>g-mo,g1 u=>g1 u,g560=>g560,gf-5=>gf-5,grun=>grun,gene=>gene,go.w=>go.w,good=>good,grad=>grad,hcit=>hcit,hd-m=>hd-m,hd-p=>hd-p,hd-t=>hd-t,hei-=>hei-,hp i=>hp i,hpip=>hpip,hs-c=>hs-c,htc =>htc ,htc-=>htc-,htca=>htca,htcg=>htcg,htcp=>htcp,htcs=>htcs,htct=>htct,htc_=>htc_,haie=>haie,hita=>hita,huaw=>huaw,hutc=>hutc,i-20=>i-20,i-go=>i-go,i-ma=>i-ma,i230=>i230,iac=>iac,iac-=>iac-,iac/=>iac/,ig01=>ig01,im1k=>im1k,inno=>inno,iris=>iris,jata=>jata,java=>java,kddi=>kddi,kgt=>kgt,kgt/=>kgt/,kpt =>kpt ,kwc-=>kwc-,klon=>klon,lexi=>lexi,lg g=>lg g,lg-a=>lg-a,lg-b=>lg-b,lg-c=>lg-c,lg-d=>lg-d,lg-f=>lg-f,lg-g=>lg-g,lg-k=>lg-k,lg-l=>lg-l,lg-m=>lg-m,lg-o=>lg-o,lg-p=>lg-p,lg-s=>lg-s,lg-t=>lg-t,lg-u=>lg-u,lg-w=>lg-w,lg/k=>lg/k,lg/l=>lg/l,lg/u=>lg/u,lg50=>lg50,lg54=>lg54,lge-=>lge-,lge/=>lge/,lynx=>lynx,leno=>leno,m1-w=>m1-w,m3ga=>m3ga,m50/=>m50/,maui=>maui,mc01=>mc01,mc21=>mc21,mcca=>mcca,medi=>medi,meri=>meri,mio8=>mio8,mioa=>mioa,mo01=>mo01,mo02=>mo02,mode=>mode,modo=>modo,mot =>mot ,mot-=>mot-,mt50=>mt50,mtp1=>mtp1,mtv =>mtv,mate=>mate,maxo=>maxo,merc=>merc,mits=>mits,mobi=>mobi,motv=>motv,mozz=>mozz,n100=>n100,n101=>n101,n102=>n102,n202=>n202,n203=>n203,n300=>n300,n302=>n302,n500=>n500,n502=>n502,n505=>n505,n700=>n700,n701=>n701,n710=>n710,nec-=>nec-,nem-=>nem-,newg=>newg,neon=>neon,netf=>netf,noki=>noki,nzph=>nzph,o2x=>o2 x,o2-x=>o2-x,opwv=>opwv,owg1=>owg1,opti=>opti,oran=>oran,p800=>p800,pand=>pand,pg-1=>pg-
  • 151. 1481,pg-2=>pg-2,pg-3=>pg-3,pg-6=>pg-6,pg-8=>pg-8,pg-c=>pg-c,pg13=>pg13,phil=>phil,pn-2=>pn-2,pt-g=>pt-g,palm=>palm,pana=>pana,pire=>pire,pock=>pock,pose=>pose,psio=>psio,qa-a=>qa-a,qc-2=>qc-2,qc-3=>qc-3,qc-5=>qc-5,qc-7=>qc-7,qc07=>qc07,qc12=>qc12,qc21=>qc21,qc32=>qc32,qc60=>qc60,qci-=>qci-,qwap=>qwap,qtek=>qtek,r380=>r380,r600=>r600,raks=>raks,rim9=>rim9,rove=>rove,s55/=>s55/,sage=>sage,sams=>sams,sc01=>sc01,sch-=>sch-,scp-=>scp-,sdk/=>sdk/,se47=>se47,sec-=>sec-,sec0=>sec0,sec1=>sec1,semc=>semc,sgh-=>sgh-,shar=>shar,sie-=>sie-,sk-0=>sk-0,sl45=>sl45,slid=>slid,smb3=>smb3,smt5=>smt5,sp01=>sp01,sph-=>sph-,spv =>spv,spv-=>spv-,sy01=>sy01,samm=>samm,sany=>sany,sava=>sava,scoo=>scoo,send=>send,siem=>siem,smar=>smar,smit=>smit,soft=>soft,sony=>sony,t-mo=>t-mo,t218=>t218,t250=>t250,t600=>t600,t610=>t610,t618=>t618,tcl-=>tcl-,tdg-=>tdg-,telm=>telm,tim-=>tim-,ts70=>ts70,tsm-=>tsm-,tsm3=>tsm3,tsm5=>tsm5,tx-9=>tx-9,tagt=>tagt,talk=>talk,teli=>teli,topl=>topl,hiba=>hiba,up.b=>up.b,upg1=>upg1,utst=>utst,v400=>v400,v750=>v750,veri=>veri,vk-v=>vk-v,vk40=>vk40,vk50=>vk50,vk52=>vk52,vk53=>vk53,vm40=>vm40,vx98=>vx98,virg=>virg,vite=>vite,voda=>voda,vulc=>vulc,w3c =>w3c ,w3c-=>w3c-,wapj=>wapj,wapp=>wapp,wapu=>wapu,wapm=>wapm,wig =>wig,wapi=>wapi,wapr=>wapr,wapv=>wapv,wapy=>wapy,wapa=>wapa,waps=>waps,wapt=>wapt,winc=>winc,winw=>winw,wonu=>wonu,x700=>x700,xda2=>xda2,xdag=>xdag,yas-=>yas-,your=>your,zte-=>zte-,zeto=>zeto,acs-=>acs-,alav=>alav,alca=>alca,amoi=>amoi,aste=>aste,audi=>audi,avan=>avan,benq=>benq,bird=>bird,blac=>blac,blaz=>blaz,brew=>brew,brvw=>brvw,bumb=>bumb,ccwa=>ccwa,cell=>cell,cldc=>cldc,cmd-=>cmd-,dang=>dang,doco=>doco,eml2=>eml2,eric=>eric,fetc=>fetc,hipt=>hipt,http=>http,ibro=>ibro,idea=>idea,ikom=>ikom,inno=>inno,ipaq=>ipaq,jbro=>jbro,jemu=>jemu,java=>java,jigs=>jigs,kddi=>kddi,keji=>keji,kyoc=>kyoc,kyok=>kyok,leno=>leno,lg-c=>lg-c,lg-d=>lg-d,lg-g=>lg-g,lge-=>lge-,libw=>libw,m-cr=>m-cr,maui=>maui,maxo=>maxo,midp=>midp,mits=>mits,mmef=>mmef,mobi=>mobi,mot-=>mot-,moto=>moto,mwbp=>mwbp,mywa=>mywa,nec-=>nec-,newt=>newt,nok6=>nok6,noki=>noki,o2im=>o2im,opwv=>opwv,palm=>palm,pana=>pana,pant=>pant,pdxg=>pdxg,phil=>phil,play=>play,pluc=>pluc,port=>port,prox=>prox,qtek=>qtek,qwap=>qwap,rozo=>rozo,sage=>sage,sama=>sama,sams=>sams,sany=>sany,sch-=>sch-,sec-=>sec-,send=>send,seri=>seri,sgh-=>sgh-,shar=>shar,sie-=>sie-,siem=>siem,smal=>smal,smar=>smar,sony=>sony,sph-=>sph-,symb=>symb,t-mo=>t-mo,teli=>teli,tim-=>tim-,tosh=>tosh,treo=>treo,tsm-=>tsm-,upg1=>upg1,upsi=>upsi,vk-v=>vk-v,voda=>voda,vx52=>vx52,vx53=>vx53,vx60=>vx60,vx61=>vx61,vx70=>vx70,vx80=>vx80,vx81=>vx81,vx83=>vx83,vx85=>vx85,wap-=>wap-,wapa=>wapa,wapi=>wapi,wapp=>wapp,wapr=>wapr,webc=>webc,whit=>whit,winw=>winw,wmlb=>wmlb,xda-=>xda-,))); // check against a list of trimmed user agents to see if we find amatch $mobile_browser = true; // set mobile browser to true $status = Mobile matched on in_array; break; // break even though its the last statement in the switch so theres nothing to break awayfrom but it seems better to include it than exclude it default; $mobile_browser = false; // set mobile browser to false $status = Desktop / full capability browser; break; // break even though its the last statement in the switch so theres nothing to break awayfrom but it seems better to include it than exclude it } // ends the switch // tell adaptation services (transcoders and proxies) to not alter the content based on user agent asits already being managed by this script, some of them suck though and will disregard this....
  • 152. 149 // header(Cache-Control: no-transform); // http://mobiforge.com/developing/story/setting-http-headers-advise-transcoding-proxies // header(Vary: User-Agent, Accept); // http://mobiforge.com/developing/story/setting-http-headers-advise-transcoding-proxies // if redirect (either the value of the mobile or desktop redirect depending on the value of$mobile_browser) is true redirect else we return the status of $mobile_browser if($redirect = ($mobile_browser==true) ? $mobileredirect : $desktopredirect){ header(Location: .$redirect); // redirect to the right url for this device exit; }else{ // a couple of folkas have asked about the status - thats there to help you debug andunderstand what the script is doing if($mobile_browser==){ return $mobile_browser; // will return either true or false }else{ return array($mobile_browser,$status); // is a mobile so we are returning anarray [0] is true [1] is the $status value } }} // ends function mobile_device_detect?>
  • 153. 150CÓDIGO FONTE DO PROGRAMA EM VISUAL BASICImports MySql.Data.MySqlClientPublic Class Form1 Dim conn As New MySqlConnection Dim myCommand As New MySqlCommand Dim myAdapter As New MySqlDataAdapter Dim myData As New DataTable Dim SQL As String Private Sub armazenarTemperaturaBD() Dim queryAR As String Dim dthoratemp As Date Dim tp As String Dim conn As MySqlConnection conn = New MySqlConnection Fecha a porta serial SerialPort1.Close() Liberar a porta Serial SerialPort1.Dispose() Verificar se a Porta não está aberta If SerialPort1.IsOpen = False Then Try Abrir a Porta Serial SerialPort1.Open() Enviar "T" para o Arduino solicitando a Temeperatura SerialPort1.Write("T") Recebendo a Temperatura e convertendo para String tp = SerialPort1.ReadLine.ToString Recebendo a data atual do Sistema dthoratemp = Date.Now Criar Query para inserir a temperatura no Banco de Dados com a Data e hora da leitura queryAR = "INSERT INTO tb_temperatura (temperatura,dataTemperatura) values (" & tp &"," & dthoratemp & ")" query para conectar ao Banco de Dados conn.ConnectionString = "server=localhost;user id=root;password=;database=bdsar" Conectar ao Banco de Dados conn.Open() Receber os dados da Conexão myCommand.Connection = conn Inserir os dados da query myCommand.CommandText = queryAR Finalizar a consulta myAdapter.SelectCommand = myCommand myAdapter.Fill(myData) Catch ex As Exception TimerVerificarEstado.Stop() MsgBox("VERIFIQUE SE O ARDUÍNO ESTÁ CONECTADO CORRETAMENTE NOCOMPUTADOR OU SE O SERVIDOR WAMPSERVER ESTÁ INICIADO!!!", MsgBoxStyle.Critical) PararToolStripMenuItem.Visible = False ExecutarToolStripMenuItem.Visible = True End Try Limpa os Dados da porta serial SerialPort1.Dispose() fecha a porta serial 5 SerialPort1.Close() Fecha a conexão com o Banco de Dados conn.Close()
  • 154. 151 Libera a Conexão com o Banco de Dados conn.Dispose() End If End Sub Private Sub ligarLed(ByVal liga As String) Try SerialPort1.Close() SerialPort1.Dispose() If SerialPort1.IsOpen = False Then SerialPort1.Open() SerialPort1.Write(liga) End If Catch ex As Exception TimerVerificarEstado.Stop() PararToolStripMenuItem.Visible = False ExecutarToolStripMenuItem.Visible = True MsgBox("NÃO FOI POSSIVEL SE ENVIAR COMANDOS PARA O ARDUÍNO, VERIFIQUE SEESTÁ CONECTADO CORRETAMENTE!!!", MsgBoxStyle.Critical) End Try SerialPort1.Close() End Sub Private Sub desligarLed(ByVal desliga As String) Try SerialPort1.Close() SerialPort1.Dispose() If SerialPort1.IsOpen = False Then SerialPort1.Open() SerialPort1.Write(desliga) End If Catch ex As Exception TimerVerificarEstado.Stop() PararToolStripMenuItem.Visible = False ExecutarToolStripMenuItem.Visible = True MsgBox("NÃO FOI POSSIVEL SE ENVIAR COMANDOS PARA O ARDUÍNO, VERIFIQUE SEESTÁ CONECTADO CORRETAMENTE!!!", MsgBoxStyle.Critical) End Try SerialPort1.Close() End Sub Private Sub limparTB_Temperatura() Dim conn As MySqlConnection conn = New MySqlConnection Dim dr As MySqlDataReader = Nothing Try query para conectar ao Banco de Dados com usuario e senha conn.ConnectionString = "server=localhost;user id=root;password=;database=bdsar" Query para selecionar o dispotivo SQL = "TRUNCATE tb_temperatura" Abrir a conexão com o Banco de dados conn.Open() Conecta ao Banco de dados myCommand.Connection = conn Executa a consulta no Banco de dados myCommand.CommandText = SQL myAdapter.SelectCommand = myCommand myAdapter.Fill(myData) Catch ex As Exception TimerVerificarEstado.Stop() PararToolStripMenuItem.Visible = False
  • 155. 152 ExecutarToolStripMenuItem.Visible = True MsgBox("NÃO FOI POSSIVEL EFETUAR CONEXÃO COM O BANCO DE DADOS!!!",MsgBoxStyle.Critical) End Try End Sub Private Sub VerificarTableMysqlR1() Dim conn As MySqlConnection conn = New MySqlConnection Dim dr As MySqlDataReader = Nothing query para conectar ao Banco de Dados com usuario e senha conn.ConnectionString = "server=localhost;user id=root;password=;database=bdsar" Query para selecionar o dispotivo SQL = "SELECT * FROM tb_dispositivo where porta_arduino = 31" Abrir a conexão com o Banco de dados conn.Open() Conecta ao Banco de dados myCommand.Connection = conn Executa a consulta no Banco de dados myCommand.CommandText = SQL myAdapter.SelectCommand = myCommand myAdapter.Fill(myData) Recebe os dados da consulta dr = myCommand.ExecuteReader dr.Read() Verifica se os parametros do Dispositivos é igual a 1 If (dr("parametros_Dispositivo") = "1") Then Envia "A" para o arduino e liga o LED conforme o Transistor do modulo relé ligarLed("A") Verifica se é igual a 0 os parametros do Dispostivo ElseIf (dr("parametros_Dispositivo") = "0") Then Envia "a" para o arduino e desliga o LED conforme o Transistor do modulo relé desligarLed("a") End If Fecha a conexão com o Banco de Dados conn.Close() Libera a conexão com o Banco de Dados conn.Dispose() End Sub Private Sub VerificarTableMysqlR2() Dim conn As MySqlConnection conn = New MySqlConnection Dim dr As MySqlDataReader = Nothing query para conectar ao Banco de Dados com usuario e senha conn.ConnectionString = "server=localhost;user id=root;password=;database=bdsar" Query para selecionar o dispotivo SQL = "SELECT * FROM tb_dispositivo where porta_arduino = 32" Abrir a conexão com o Banco de dados conn.Open() Conecta ao Banco de dados myCommand.Connection = conn Executa a consulta no Banco de dados myCommand.CommandText = SQL myAdapter.SelectCommand = myCommand myAdapter.Fill(myData) Recebe os dados da consulta dr = myCommand.ExecuteReader dr.Read() Verifica se os parametros do Dispositivos é igual a 1
  • 156. 153 If (dr("parametros_Dispositivo") = "1") Then Envia "B" para o arduino e liga o LED conforme o Transistor do modulo relé ligarLed("B") ElseIf (dr("parametros_Dispositivo") = "0") Then Envia "b" para o arduino e liga o LED conforme o Transistor do modulo relé desligarLed("b") End If Fecha a conexão com o Banco de Dados conn.Close() Libera a conexão com o Banco de Dados conn.Dispose()End SubPrivate Sub VerificarTableMysqlR3() Dim conn As MySqlConnection conn = New MySqlConnection Dim dr As MySqlDataReader = Nothing query para conectar ao Banco de Dados com usuario e senha conn.ConnectionString = "server=localhost;user id=root;password=;database=bdsar" Query para selecionar o dispotivo SQL = "SELECT * FROM tb_dispositivo where porta_arduino = 33" Abrir a conexão com o Banco de dados conn.Open() Conecta ao Banco de dados myCommand.Connection = conn Executa a consulta no Banco de dados myCommand.CommandText = SQL myAdapter.SelectCommand = myCommand myAdapter.Fill(myData) Recebe os dados da consulta dr = myCommand.ExecuteReader dr.Read() Verifica se os parametros do Dispositivos é igual a 1 If (dr("parametros_Dispositivo") = "1") Then Envia "C" para o arduino e liga o LED conforme o Transistor do modulo relé ligarLed("C") ElseIf (dr("parametros_Dispositivo") = "0") Then Envia "c" para o arduino e liga o LED conforme o Transistor do modulo relé desligarLed("c") End If Fecha a conexão com o Banco de Dados conn.Close() Libera a conexão com o Banco de Dados conn.Dispose()End SubPrivate Sub VerificarTableMysqlR4() Dim conn As MySqlConnection conn = New MySqlConnection Dim dr As MySqlDataReader = Nothing query para conectar ao Banco de Dados com usuario e senha conn.ConnectionString = "server=localhost;user id=root;password=;database=bdsar" Query para selecionar o dispotivo SQL = "SELECT * FROM tb_dispositivo where porta_arduino = 34" Abrir a conexão com o Banco de dados conn.Open() Conecta ao Banco de dados myCommand.Connection = conn Executa a consulta no Banco de dados myCommand.CommandText = SQL
  • 157. 154 myAdapter.SelectCommand = myCommand myAdapter.Fill(myData) Recebe os dados da consulta dr = myCommand.ExecuteReader dr.Read() Verifica se os parametros do Dispositivos é igual a 1 If (dr("parametros_Dispositivo") = "1") Then Envia "D" para o arduino e liga o LED conforme o Transistor do modulo relé ligarLed("D") ElseIf (dr("parametros_Dispositivo") = "0") Then Envia "d" para o arduino e liga o LED conforme o Transistor do modulo relé desligarLed("d") End If Fecha a conexão com o Banco de Dados conn.Close() Libera a conexão com o Banco de Dados conn.Dispose()End SubPrivate Sub VerificarTableMysqlR5() Dim conn As MySqlConnection conn = New MySqlConnection Dim dr As MySqlDataReader = Nothing query para conectar ao Banco de Dados com usuario e senha conn.ConnectionString = "server=localhost;user id=root;password=;database=bdsar" Query para selecionar o dispotivo SQL = "SELECT * FROM tb_dispositivo where porta_arduino = 35" Abrir a conexão com o Banco de dados conn.Open() Conecta ao Banco de dados myCommand.Connection = conn Executa a consulta no Banco de dados myCommand.CommandText = SQL myAdapter.SelectCommand = myCommand myAdapter.Fill(myData) Recebe os dados da consulta dr = myCommand.ExecuteReader dr.Read() Verifica se os parametros do Dispositivos é igual a 1 If (dr("parametros_Dispositivo") = "1") Then Envia "E" para o arduino e liga o LED conforme o Transistor do modulo relé ligarLed("E") ElseIf (dr("parametros_Dispositivo") = "0") Then Envia "e" para o arduino e liga o LED conforme o Transistor do modulo relé desligarLed("e") End If Fecha a conexão com o Banco de Dados conn.Close() Libera a conexão com o Banco de Dados conn.Dispose()End SubPrivate Sub VerificarTableMysqlR6() Dim conn As MySqlConnection conn = New MySqlConnection Dim dr As MySqlDataReader = Nothing query para conectar ao Banco de Dados com usuario e senha conn.ConnectionString = "server=localhost;user id=root;password=;database=bdsar" Query para selecionar o dispotivo SQL = "SELECT * FROM tb_dispositivo where porta_arduino = 36"
  • 158. 155 Abrir a conexão com o Banco de dados conn.Open() Conecta ao Banco de dados myCommand.Connection = conn Executa a consulta no Banco de dados myCommand.CommandText = SQL myAdapter.SelectCommand = myCommand myAdapter.Fill(myData) Recebe os dados da consulta dr = myCommand.ExecuteReader dr.Read() Verifica se os parametros do Dispositivos é igual a 1 If (dr("parametros_Dispositivo") = "1") Then Envia "F" para o arduino e liga o LED conforme o Transistor do modulo relé ligarLed("F") ElseIf (dr("parametros_Dispositivo") = "0") Then Envia "f" para o arduino e liga o LED conforme o Transistor do modulo relé desligarLed("f") End If Fecha a conexão com o Banco de Dados conn.Close() Libera a conexão com o Banco de Dados conn.Dispose() End Sub Private Sub VerificarTableMysqlR7() Dim conn As MySqlConnection conn = New MySqlConnection Dim dr As MySqlDataReader = Nothing query para conectar ao Banco de Dados com usuario e senha conn.ConnectionString = "server=localhost;user id=root;password=;database=bdsar" Query para selecionar o dispotivo SQL = "SELECT * FROM tb_dispositivo where porta_arduino = 37" Abrir a conexão com o Banco de dados conn.Open() Conecta ao Banco de dados myCommand.Connection = conn Executa a consulta no Banco de dados myCommand.CommandText = SQL myAdapter.SelectCommand = myCommand myAdapter.Fill(myData) Recebe os dados da consulta dr = myCommand.ExecuteReader dr.Read() Verifica se os parametros do Dispositivos é igual a 1 If (dr("parametros_Dispositivo") = "1") Then Envia "G" para o arduino e liga o LED conforme o Transistor do modulo relé ligarLed("G") ElseIf (dr("parametros_Dispositivo") = "0") Then Envia "g" para o arduino e liga o LED conforme o Transistor do modulo relé desligarLed("g") End If Fecha a conexão com o Banco de Dados conn.Close() Libera a conexão com o Banco de Dados conn.Dispose() End Sub Private Sub TimerVerificarEstado_Tick(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles TimerVerificarEstado.Tick
  • 159. 156 armazenarTemperaturaBD() armazena a temperatura VerificarTableMysqlR1() verifica o rele 1 VerificarTableMysqlR2() verifica o rele 2 VerificarTableMysqlR3() verifica o rele 3 VerificarTableMysqlR4() verifica o rele 4 VerificarTableMysqlR5() verifica o rele 5 VerificarTableMysqlR6() verifica o rele 6 VerificarTableMysqlR7() verifica o rele 7 End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesTimer1.Tick Dim conn As MySqlConnection conn = New MySqlConnection Dim dr As MySqlDataReader = Nothing conn.ConnectionString = "server=localhost;user id=root;password=;database=bdsar" SQL = "SELECT * FROM tb_agendamento where status = 1" conn.Open() abre a conexao myCommand.Connection = conn conectar no Banco de dados myCommand.CommandText = SQL Select no banco de dados myAdapter.SelectCommand = myCommand myAdapter.Fill(myData) dr = myCommand.ExecuteReader recebe os dados da consulta dr.Read() lendo os dados da consulta Label16.Text = dr("horario_ag") If (dr("horario_ag") = Date.Now.ToString) Then MsgBox("Agora estamos no Mesmo Horario!!!") End If Label18.Text = Date.Now conn.Close() conn.Dispose() End Sub Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Button17.Click habilita o timer TimerVerificarEstado.Enabled = True define o intervalo em 1segundo TimerVerificarEstado.Interval = 1000 inicia o timer TimerVerificarEstado.Start() função para limpar a tabela temperatura a cada execução do programa. limparTB_Temperatura() habilitar o menu da barra de tarefas PararToolStripMenuItem.Visible = True desabilita a opc de executar no menu ExecutarToolStripMenuItem.Visible = False desabilita o botao ativar sar Button17.Visible = False esconde o form Me.Hide() End Sub Private Sub NotifyIcon1_MouseMove(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseMove NotifyIcon1.ShowBalloonTip(1000, "SAR-LOCAL", "O SAR-LOCAL está em execução",ToolTipIcon.Info) End Sub
  • 160. 157 Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick Me.Show() Me.WindowState = FormWindowState.Normal End Sub Private Sub FecharToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles FecharToolStripMenuItem.Click Me.Close() End Sub Private Sub PararToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles PararToolStripMenuItem.Click TimerVerificarEstado.Stop() PararToolStripMenuItem.Visible = False ExecutarToolStripMenuItem.Visible = True Button17.Visible = True End Sub Private Sub ExecutarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles ExecutarToolStripMenuItem.Click TimerVerificarEstado.Start() PararToolStripMenuItem.Visible = True ExecutarToolStripMenuItem.Visible = False Button17.Visible = False End Sub Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) HandlesMe.Load Me.MaximizeBox = False Me.MinimizeBox = False End Sub Private Sub Form1_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles MyBase.Resize If (Me.WindowState = FormWindowState.Minimized) Then Me.Hide() End If End SubEnd Class
  • 161. 158CÓDIGO FONTE ARDUÍNOint pino31 = 31;int pino32 = 32;int pino33 = 33;int pino34 = 34;int pino35 = 35;int pino36 = 36;int pino37 = 37;int pinoTemp = 5;float temperatura = 0;void setup(){ Serial.begin(115200); pinMode(pino31,OUTPUT); pinMode(pino32,OUTPUT); pinMode(pino33,OUTPUT); pinMode(pino34,OUTPUT); pinMode(pino35,OUTPUT); pinMode(pino36,OUTPUT); pinMode(pino37,OUTPUT);}void loop(){ int leituras = 20; int aRead = 0; if (Serial.available()>0){ int valor = Serial.read(); if(valor ==65){ digitalWrite(pino31,LOW); }//Luz Ligada A if(valor ==97){ digitalWrite(pino31,HIGH); }//Luz Desligada a if(valor ==66){ digitalWrite(pino32,LOW); }//Luz Ligada B if(valor ==98){ digitalWrite(pino32,HIGH); }//Luz Desligada b if(valor ==67){ digitalWrite(pino33,LOW); }//Luz Ligada C if(valor ==99){ digitalWrite(pino33,HIGH); }//Luz Desligada c if(valor ==68){ digitalWrite(pino34,LOW); }//Luz Ligada D if(valor ==100){ digitalWrite(pino34,HIGH); }//Luz Desligada d if(valor ==69){ digitalWrite(pino35,LOW); }//Luz Ligada E if(valor ==101){ digitalWrite(pino35,HIGH); }//Luz Desligada e if(valor ==70){ digitalWrite(pino36,LOW); }//Luz Ligada F if(valor ==102){ digitalWrite(pino36,HIGH); }//Luz Desligada f if(valor ==71){ digitalWrite(pino37,LOW); }//Luz Ligada G if(valor ==103){ digitalWrite(pino37,HIGH); }//Luz Desligada g if(valor == 84 ) {//aqui é o medidor de temperatura!!! T for (int i = 0; i < leituras; i++){ aRead = aRead + analogRead(pinoTemp); } aRead = aRead / leituras; temperatura = aRead * 0.0048828125; temperatura = temperatura /0.01; Serial.println(long(temperatura)); } }//fim Serial.available}