The last April 2014 at Build 2014, beside the announcement of Xamarin support in Visual Studio, MicroSoft announced another extension that looks promising, the called “Multi-Device Hybrid Apps” which is a plugin for Visual Studio 2013 Update 2. Multi-Device Hybrid Apps with Visual Studio 2013

“Multi-Device Hybrid Apps” allows you to develop for multiple devices with the same source (HTML/JS/CSS) using Visual Studio as your IDE.

 

Note: We’re going to use the CTP 1.1. version of the plugin for the scope of this post, you can download the plugin here, (there’s a lot of broken links for this resource but this one is working today June 16, 2014).

INSTALLATION

Steps for installation:

  1. Windows 8.1
  2. You need Visual Studio 2013 Update 2 — You’ll really need the Update 2, if not you’ll be blocked like in the following image:                                                                  blocked
  3.    Download the plugin from here.
  4. Install the “Tools for Mantaining Store apps for Windows 8″ and “Windows Phone 8.0 SDK” (if you don’t have it, like me, it will take more than a couple of minutes to download and install).                                     Selection                                                                                                                                                                                                    Yeah you will need to install those two items that you always skip : P, bad news: the Windows Phone 8.0 images will take a lot of time to download.
  5. After you have all the requirements, its time to install the plugin, piece of cake.
  6. 6- The instalation will ask you to install a lot of Third Party Dependencies like Joyent Node.js (that you need in order to use the Apache Cordova CLI), Java JDK, iTunes and other stuff that you may need in order to take full advantage of the plugin (or at least that’s what the documentation says, but yeah, I almost have everything installed because of my previous Cordova apps, it’s really nice that this installer does all the dirty work for you, cool MS!). plugins

Notes: In order to test your app in the Windows Phone Emulator your machine should be able to run MS hyper V.3 hyper v

Listening: Babasonicos – Escamas

Config Designer. The “Multi-Device Hybrid Apps” provides a manager for the configuration and plugins of your app, it’s really easy to install or uninstall a plugin via the Config Designer. It’s worth nothing that the Config Designer is just modifing the config.xml file of your application. Finally after a millennium installing all the requirements,  you’re ready to at least launch the sample application.

  1. Open VS 2013
  2. Create a New Project
  3. Choose the “Multi-Device Hybrid Apps” template from the JavaScript or TypeScript templates (same template, different “language”)
    js or ts
    I had trouble installing joyent node.js though
  4. After the solution is created your Solution Explorer should look like this:
    2014-06-17_151224
  5. By default Apache Cordova will serve index.html as the first page or “view” when the app is started up. Feel free to modify this HTML page so you can feel that we did something :P
    sample
  6. Next Build your App
  7. Pressing F5 will launch a chrome browser with Apache Ripple simulator, with this simulator you’ll be able to see how you app will be “rendered” in a variety of devices like Nexus 4, Nokia N8, iPhone 3g, iPhone 4g, iPhone 5 and even ipads and other tablets, this is a nice feature that will help you to speed up your development, also maybe it will be useful for regression testing with tools like selenium. Although the ability to see how the apps will be “rendered” across multiple devices in the simulator is really useful, there’s a big need for a debugger, this will be covered in another section.

DEBUGGING WITH THE APACHE RIPPLE SIMULATOR

It’s possible to debug apps with the Ripple simulator, for this version of the Multiple-Device hybrid Apps plugin you can debug out of the box:

Let’s try it quickly:

  1. Go to Visual Studio
  2. Open the file index.js
  3. add the following function:
        function demoFunction() {
    
            var randomObject = {
                hello: "World"
            };
    
            console.log(randomObject);
    
        };
    
    

    After adding the function just bellow the “onResume” function, add a breakpoint in the console.log line.

  4. At the end of the “onDeviceReady” function add the following call:
         // TODO: Cordova has been loaded. Perform any initialization that requires Cordova here.
         demoFunction();
    
  5. Press F5 in Visual Studio and lets see what happen.

debug

As you can see, we can inspect the value of the plain JavaScript object “randomObject” using the Visual Studio debugger, this will be very useful for quick debugging with the Simulator.

On the JavaScript Console VS Output this will look like this:

2014-06-17_172850

DEBUGGING ON DEVICE EMULATORS

NOTE ON SUPPORT FOR DEBUGGIN ON EMULATORS

Debugging with Visual Studio Debugging tools:

  • Android 4.4 devices
  • Windows 8.0 (Store)

JavaScript Console Output in Visual Studio (not the browser console, if you try to open the browser developers tools, the simulator will close the window):

  • Android 4.4 devices
  • Android 4.4 devices
  • Windows 8.0 (Store)

The content of this two lists means that is not possible to Launch or debug with the iOS Emulator from Windows, which is something to expect, fortunately Apache Ripple Simulator can help us a lot and when it’s time to test and debug something on the Emulator, it is suppose to be possible via remote debugging, we’re going to try it at the end here.

ANDROID 4.4

It’s easy to Launch the Android emulator, if you have a configured Device all you have to do is change the Debugger target in Visual Studio to “Android Emulator”.

emulator

More info about the AVD Configuration with the AVD Manager here.

The current release make the promise of debugging, but I were not able to do it, it may be a problem with my AVD emulator configuration, Although the promise of showing the console.log results on the Visual Studio Output window was delivered:

emulator android

As you can see the Visual Studio JavaScript Console Output displays what was passed to the console.log, but the application did not stop on the breakpoint : (

USING THE IOS SIMULATOR (YOU NEED A MAC FOR THIS)

First you will need to set up the “vs-mda-remote”.

Open your console and install the vs-mda-remote (via node.js npm):

de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" >    npm install vs-mda-remote
de>
de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" >For full instructions about how to install "vs-mda-remote" in your mac you can follow the instructions on the following StackOverflow question Visual Studio Cordova iOS build server setupde>

Once that you have installed the “vs-mda-remote” in your mac, you will have to create a folder for the builds (on the mac), that folder will be a parameter for the execution of the vs-mda-remote

de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; background-color: rgb(255, 255, 153);"  >vs-mda-remote --buildDir [YOUR_FOLDER] --allowsEmulate=truede>

In my case the folder was inside the Documents folder, so my full command was:

de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; background-color: rgb(255, 153, 0);" >vs-mda-remote --buildDir /Users/robalarcon/Documents/remote-build/ --allowsEmulate=truede>

de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" >Screen Shot 2014-06-17 at 9.53.50 PMde>

 

To test that everything is working, open safari and go to localhost:3000, you should have served a page like the following:

de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" >Screen Shot 2014-06-17 at 10.01.39 PMde>

 

Configuring Your Remote Build Server in Visual Studio
You have the mac waiting for something, is ready for business, now it’s turn to configure Visual Studio for that business.

 

  1. Get the ip address of your mac, open a terminal and type ifconfig
  2. In Visual Studio navigate to TOOLS > Options > Multi-Device Hybrid Apps > General. And set the Host variable with the ip address of your mac, and the Port variable to 3000.
  3. Set Enable remote iOS processing to True 2014-06-17_220905

We’re ready to go, in my case, I just select “simulator – iphone” to debug, and the console on the mac start printing tons of messages and the it said: ** BUILD SUCCEEDED ** :D

Screen Shot 2014-06-17 at 10.25.03 PM

Be careful with typos i.e. when I setup the “vs-mda” on the mac, I typed allowEmulate=true without the in allows, and it didn’t throw an error, it just start with allowsEmulate option as False, and We don’t want that.

Note: if you don’t see the Simulator – iPhone as an option to debug, it’s because you have to choose iOS as platform at the DropDown component at the right.

2014-06-17_221057

TROUBLESHOOTING

* PROBLEMS WITH THIRD PARTY SOFTWARE

I had trouble installing joyent node.js, after installing all the third party software Visual Studio told me that it was a problem installing it, it was because I had previously installed an older version of node.js, if this happen to you, just install again node.js (the version that you previously had), and then install the latest version.

node-problem

 

I also had problems with Apache ant, when I tried to build the sample App, the compiler throw an error telling that  the system environment variable was not well configured,

2014-06-17_154513

Because I didn’t want to spend more time with this problems I just manually installed Apache Ant, and set my environment variable (variable value is the folder that contains the ANT bin and lib folder).

2014-06-17_154653

 

Also you’ll probably need to add the following line to the system path:

%ANT_HOME%\bin

 

* PROBLEMS WHEN TRYING TO CREATE A NEW PROJECT

I spent an hour trying to find a workaround for an error when I was trying to create a new Project, the following error appear every time I tried to create a project:

visual studio the path you have entered contains a space. Please select a location without a space when creating a mMulti-device Hybrid App.

visual studio the path you have entered contains a space. Please select a location without a space when creating a mMulti-device Hybrid App.

I could not found a fix for the problem, it’s not included in the Multi-Device Hybrid Apps Known Issues, but I found a workaround, every time I was trying to create a project was in the default location Visual Studio Projects folder, I changed thatlocation for a custom folder under “my documents” and it let me create a project. Following for this issue at StackOverflow.

 

* This AVD’s configuration is missing a kernel file!

If you try to debug an app with the Android emulator an the output shows that ERROR.

That means that you don’t have an Android device configured, you should configure one using the AVD Manager, you should have the AVD Manager already installed, so just look for it and configure an Android 4.4 device.

2014-06-17_192622

 

 

CONCLUSION

As always there’s cons and pros with “Multi-Device Hybrid Apps”

The big CON was the setup, it took me hours of downloading, installing and troubleshooting the requirements, that was really expensive and stressful, definitevely MS have to work with the installation of the plugin, at least in my case, it was really painful.

There’s a couple of big PROS at least for me, once everything is installed is really easy to play around with this stuff, the ready to go Apache Ripple Debugging is hot, really hot, and the iOS Remote Emulation on the mac was surprisingly easy to install and run.

At the end, is Apache Cordova/PhoneGap, if you’re familiar with Cordova/PG and with Visual Studio you’ll love this plugin and it may speed up your development workflow with all the available tools, I have a good impression on my first hands on Multi-Device Hybrid Apps, and the best of all is that because Apache Cordova Code is just HTML, CSS and JavaScript, every developer on a team can choose their own IDE and development workflow without a problem.

 

RESOURCES:

 

This “tuturial” is over,

– rob

Posted on Posted in JavaScript for Mobile AppsphonegapTagged JavaScript-for-mobile-appsPhoneGapVisual-Studio 1 Comment

IOS DEVELOPMENT FOR PHONEGAP WINDOWS DEVELOPERS USING PHONEGAP BUILD

PhoneGap (Apache Cordova) is great. If you’re already familiar with web technologies (HTML, CSS and JavaScript) you can easily start coding web apps that will be embeded on a mobile native app that can be installed in a mobile device (iOS, android, windows phone, blackberry, etc).

But one thing that is a little confusing at first is deploying for iOS devices when you’re a windows developer. In the following tutorial we’re going to follow a series of steps to deploy our app to a iOS device using PhoneGap Build.

Note: this tutorial is targeted for PhoneGap developers using windows or linux, testing primarily in Android. But this tuturial should work for PhoneGap developers using mac too, actually for this tutorial we’re going to need a mac to borrow at least.

REQUIREMENTS

[ ] a Mac to borrow (should be e an Intel-based Mac)
[ ] an iOS Device for testing (could be an iPod Touch, iPad or iPhone)
[ ] an Apple ID
[ ] Subscription to the App Developer program
[ ] A mac software called “Keychain Access” if the mac that you took borrowed don’t have it, you can install “XCode” and it will install it automatically.
[ ] A phonegap App running in windows with android, to make the initial set-up you can follow Charles Chen post: Step by Step Android Development with Cordova and IntelliJ, I highly recommend you this tutorial, it’s easy to follow, and it does not have a lot of text like this one.
[ ] A phonegap account (to have access to the remote build app).

GET AN APPLE ID

Create an apple ID (this is free, and you need one to enroll to the iOS Developer program):
You can get one at: https://appleid.apple.com/cgi-bin/WebObjects/MyAppleId.woa/wa/createAppleId

Posted on Posted in phonegapTagged iOS App DevelopmentPhoneGap Leave a comment

PHONEGAP 3 HELLO WORLD IN OS X

PHONEGAP 3 HELLO WORLD IN OS X

I have been using PhoneGap 2.x for a couple of months and it’s a good framework that can help you to deliver a cross-browser product quick without knowing all the technologies behind the devices. I wanted to update to the new version because it has support for ios7, and I like the new approach for the modular plugins.

PhoneGap 3.x make an extensive use of the PhoneGap CLI in contrast to a manual installation, in the following tutorial we’re going to make a step-by-step installation of PhoneGap 3.0.2 with a hello world application on a iOS emulator running on OS X.

PREREQUISITES

  1. Install Xcode (you can install it from the AppStore)
  2. Install PhoneGap command-line tool
    1. Install Node.js (download the mac package fromhttp://nodejs.org/download/)
    2. Install PhoneGap framework: open a mac terminal and type
      de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" >sudo npm install -g phonegapde>

CREATE THE APP

Now that our mac have installed the framework lets create the application

  1. In the terminal, go to the folder where you will create your project
  2. Type the following to create your project:
    de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" >phonegap create TabletPrototype com.robalarcon.tabletprototype TabletPrototypede>

note: in the line above we are calling the “create” method of the “phonegap” command, and we’re sending three parameters, first the name of the app directory, secondly the reverse domain-style identifier, and at last the application display text (the last two arguments are optional and you can set them later in the app config.xml file)

What phonegap does when we call the “create command”? Well it will create a sample project for us, this sample project will contain all the necessary files to run a hello world project that is attached to the “device ready” PhoneGap event, all of this in the “www” folder that is where we have our web assets that represent our application.


I’m listening “Say Hello” by the Whings, good song

BUILD THE APP

  1. Change to the directory that we created on the last step
    de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" >
    cd TabletPrototype
    de>
  2. Install ios-sim app (this is to be able to invoke the ios emulator in the console without using xcode)
    de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" >sudo npm install -g ios-simde>
  3. Install phonegap ios
    de style="box-sizing: border-box; line-height: inherit; border: 0px; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 1.4rem; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" >phonegap install iosde>

The last step will install our app in the ios emulator (emulating an iphone retina)
device ready install
O.K. more than that is happening, and knowing this is helpful if you need to open your project on Xcode for any reason (like the one bellow in this post), remember when we used the “create” function of phonegap? When we did that, we create a folder structure for our code base inside of our app main folder we have four folders:

    • merges
    • platforms
    • plugins
    • www

We already know that ‘www’ is our work space, but the other three folders are empty after the ‘create’ call, well what happen after we call “phonegap install ios” is interesting, that command did some stuff for us:

  1. It created a folder called ios, inside of that folder there’s a lot of folders and files, for this tutorial we’re interested in two of them (the www folder and the .xcodeproj file), but all of those documents are important, they are the phonegap app, all the dependencies that the app need to run are there (ios classes to run the webview and that specifies that the app start with the ‘index..html’ archive).
  2. It copied our “development” www folder into the ios folder, it’s an exact copy, and it is not linked with our dev www folder, so if you change something in your www dev folder, you have to run the ‘phonegap install ios again.

CHANGING THE IOS EMULATOR DEVICE IN XCODE

As the time of this writing I cannot find a way to change the “emulator target” device for ios, so We will do that on Xcode, to open the project in Xcode, you have to navigate to the root folder and open the “platforms” folder, find and open the “ios” folder, finally open the “.xcodeproj” file (in my case TabletPrototype.xcodeproj), once that the project has been opened, just press the play button and the emulator should start:

Screen Shot 2013-12-05 at 12.35.02 PM
Important: The code that the emulator is running is the code inside the ‘www folder’ in the ios folder inside the ‘platforms’ folder. Where I am going with this? The code that you will see in Xcode source three is not your development code, is the code that is copied by the ‘phonegap install ios’ command to the ‘/platforms/ios/www’ folder. So be aware of this, try to just code in your ‘www’ development folder.

Voilà, we can start building our app.

BEGINNING THE REAL DEVELOPMENT

If you want to continue your development with the template provided by the PhoneGap Download, you can do it, the only thing you need to do is to delete the following folders and files:

    • “res folder”,
    • “spec folder”,
    • “icon.png file”,
    • “spect.html file”,

all the content inside the css folder, all the content inside img folder, and, all the content inside the js folder.

now go to your index.html file and replace all its content to the following basic hello world code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ><de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >htmlde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ><de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >headde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ><de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >metade> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: gray !important;" >charsetde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >=de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: blue !important;" >"utf-8"de> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >/>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ><de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >metade> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: gray !important;" >namede>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >=de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: blue !important;" >"format-detection"de> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: gray !important;" >contentde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >=de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: blue !important;" >"telephone=no"de> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >/>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ><de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >metade> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: gray !important;" >namede>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >=de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: blue !important;" >"viewport"de> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: gray !important;" >contentde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >=de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: blue !important;" >"user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi"de> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >/>de>
 
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ><de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >titlede>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >></de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >titlede>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ></de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >headde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ><de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >bodyde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ><de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >h1de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>PhoneGap 3.x Hello World</de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >h1de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 130, 0) !important;" ><!-- load phonegap script (the phonegap "server" will generate this file in the root) -->de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ><de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >scriptde> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: gray !important;" >typede>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >=de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: blue !important;" >"text/javascript"de> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: gray !important;" >srcde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >=de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: blue !important;" >"phonegap.js"de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >></de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >scriptde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ><de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >scriptde> de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: gray !important;" >typede>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >=de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: blue !important;" >"text/javascript"de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>
 
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >var __onDeviceReady = function() {de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >alert('Device is Ready: application can start.');de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >};de>
 
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >document.addEventListener('deviceready', __onDeviceReady, false);de>
 
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ></de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >scriptde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" > de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ></de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >bodyde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>
de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" ></de>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important; color: rgb(0, 102, 153) !important;" >htmlde>de style="box-sizing: content-box !important; line-height: 1.1em !important; border: 0px !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; overflow: visible !important;; right: auto !important; top: auto !important; width: auto !important; direction: ltr !important; -webkit-box-shadow: none !important; box-shadow: none !important; display: inline !important;" >>de>

this is just a header tag that you can remove, we are loading the phongegap.js library in a script tag, and we are attaching an alert to the “deviceready” event of phonegap.js, when you run this example you should see a message like this:

Screen Shot 2013-12-06 at 10.42.21 AM Screen Shot 2013-12-06 at 10.42.48 AM

That’s a good point of start so you can beginning coding your PhoneGap Application.

RESOURCES:

Posted on Posted in phonegapLeave a comment

QUICK INTRODUCTION TO FIREBASE

This is going to be a very short post, why? Well Firebase it’s really simple.

From their landing page:

Scalable real-time backend
Build apps fast without managing servers

That is Firebase, a real-time easy to use back-end, they have a tutorial that should teach you in five minutes the basics (i’t actually less than five minutes).

But well, too many praises, lets play a little bit with this technology.

first thing to do is to sign up for the service (easier with your github account), and create a firebase.

Mine is goingo be named fblab

Image

We’re going to create a jsFiddle with this example:

(you can check the final result here, but if you want to test by yourself the example is pretty easy).

1- Add jQuery as a Framework or extension.

2- Add the Firebase app as an external resource in our jsfiddle:

https://cdn.firebase.com/v0/firebase.js

add external resource

3- Add the following markup:

<h1>Simple list in Firebase</h1>
<!-- input text that contains the chat message -->
<input type="text" id="js-message" />
<input type="button" value="Send" id="js-send" />
<!-- list that just display the chat messages -->
<ul id="js-chat-list"></ul>


4- And the following JavaScript

// this is the Firebase that points to the address that we create in the Firebase site Dashboard
var myDataRef = new Firebase('https://fblab.firebaseio.com/');

// get a reference to the message input text
var messageText = document.getElementById('js-message');

// get the chat user nickname
var username = prompt('Please provide your nickname');

// store a message object to our Firebase
var _sendMessage = function() {
// set anonymous user as anon
if(!username) {
username = 'anon';
}
// if there's no text return, no validation for this basic example
if(!messageText.value) {
return;
}

// save the message to our Firebase endpoint taking advantage of the list capabilities, in this case we are saving an array of message objects
myDataRef.push({nick: username, message: messageText.value});
// reset the message text input
messageText.value = '';
};

// utility function that just print a chat message
var _addToChatList = function(chatMessage) {
// because it is out of the scope of this tutorial lets just append the message to out list with jquery
var liMessage = $('<li/>').append(chatMessage.nick + ' says: ' + chatMessage.message);
$('#js-chat-list').append(liMessage);
};

// add callback to our Firebase for when a new child is attached
// to dive more into the Firebase events go to:
// https://www.firebase.com/docs/reading-data.html
myDataRef.on('child_added', function(snapshot) {
_addToChatList(snapshot.val());
});

// add event listener to the send button
var el = document.getElementById("js-send");
el.addEventListener("click", _sendMessage, false);

As you can see the demo is very simple, although you can get an idea of what you can do with Firebase. Here we have a screenshot of the final result:
chat

Firebase have a free plan for developers, a rest api, and a full api for Java, Objective-C and JavaScript.

I can easily see myself doing my prototypes with Firebase, it was fun.

Posted on Posted in UncategorizedLeave a comment

INSTALLING TERNJS PLUGIN FOR SUBLIME TEXT – THE LAZIEST WAY

  • Step 1 – Install Package Control (if installed skip to step 3)press:
    ctrl + ` (ctrl backtick)

    to open the console

  • Step 2 – Paste the following code on the console and restart Sublime
    import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation')
  • Step 3 – open the Package control
    Ctrl + Shift + P
  • Step 4 – update Package control
    install

    install

  • Step 5 – install Sublime TernJS plugin
    TernJS

    ternjs-install

DONE!

LAST THING IS TO SET-UP THE TERNJS PLUGIN COMMANDS SHORT-KEYS

keys

Sublime TernJS plugin will provide JavaScript Inference for the files on your Sublime Poject.

infering-require

infering-jquery

go-to-definition

testing demo  source

REFERENCES:

TernJS
is a JavaScript inference enging developed by Marijn Haverbeke,
and the TernJS plugin for sublime is been developed by Sergey Chikuyonok from emmet.io

Both the engine and the plugin are still on an early beta, there will be an official TernJS plugin for Vim and SublimeText 2.