Merge sources from S-Core's RSA git (release) 2.0alpha master 2.0_alpha 2.1b_release
authorJenkins <taeyoung2.son@samsung.com>
Tue, 18 Sep 2012 04:31:31 +0000 (13:31 +0900)
committerJenkins <taeyoung2.son@samsung.com>
Tue, 18 Sep 2012 04:31:31 +0000 (13:31 +0900)
Change-Id: Id561326ec0d48011b101445ef841d8226d434997

257 files changed:
AUTHORS [new file with mode: 0644]
LICENSE [new file with mode: 0644]
NOTICE [new file with mode: 0644]
builder/build.properties.clean [new file with mode: 0644]
builder/customTargets.xml [new file with mode: 0644]
org.tizen.web.project.sample.feature/.project [new file with mode: 0644]
org.tizen.web.project.sample.feature/LICENSE-2.0.htm [new file with mode: 0644]
org.tizen.web.project.sample.feature/build.properties [new file with mode: 0644]
org.tizen.web.project.sample.feature/feature.xml [new file with mode: 0644]
org.tizen.web.project.sample.feature/license.html [new file with mode: 0644]
org.tizen.web.project.sample/.classpath [new file with mode: 0644]
org.tizen.web.project.sample/.project [new file with mode: 0644]
org.tizen.web.project.sample/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
org.tizen.web.project.sample/META-INF/MANIFEST.MF [new file with mode: 0644]
org.tizen.web.project.sample/build.properties [new file with mode: 0644]
org.tizen.web.project.sample/plugin.xml [new file with mode: 0644]
org.tizen.web.project.sample/src/org/tizen/web/project/sample/Activator.java [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tutorial-alarm-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/appsvc.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/js/appsvc.js [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tutorial-application-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tutorial-appservice-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/bluetoothclientsample-screenshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/config.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/createPackage.sh [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/css/style.css [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/bluetoothserversample-screenshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/config.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/createPackage.sh [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/css/style.css [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tutorial-calendar-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tutorial-call-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tutorial-contact-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tutorial-filesystem-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tutorial-geocoder-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/kitchen-sink.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/alarm.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/application.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/calendar.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/call.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/config.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/contact.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/createPackage.sh [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/demo.css [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/ajax-loader.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-18-black.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-18-white.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-36-black.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-36-white.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/jqm-docs.css [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/jquery.mobile-1.0.min.css [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/filesystem.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/geocoder.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/js/demo.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/js/jqm-docs.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/js/jquery.mobile-1.0.min.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/mediacontent.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/messaging.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/systeminfo.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/time.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/toc.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tutorial-mediacontent-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tutorial-messaging-snapshot.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/config.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/createPackage.sh [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/ajax-loader.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-18-black.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-18-white.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-36-black.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-36-white.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/jqm-docs.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/jquery.mobile-1.0.1.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/style.css [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/js/main.js [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tutorial-nfc-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/js/power.js [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tutorial-power-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/css/style.css [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tutorial-systeminfo-snapshot.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/description.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/description.xsl [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/config.xml [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/css/style.css [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/icon.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/index.html [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/js/config.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/js/main.js [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen-app-template.xml [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen_32.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen_64.png [new file with mode: 0755]
org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tutorial-time-snapshot.png [new file with mode: 0644]
org.tizen.web.project.sample/templates/Sample/Tizen/description.xsl [new file with mode: 0644]
package/build.linux [new file with mode: 0755]
package/pkginfo.manifest [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..a43c3a1
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,6 @@
+Jihoon Song <jihoon80.song@samsung.com>\r
+Gyeongseok Seo <gyeongseok.seo@samsung.com>\r
+Changhyun Lee <changhyun1.lee@samsung.com>\r
+Hyeongseok Heo <hyeongseok.heo@samsung.com>\r
+Kangho Kim <kh5325.kim@samsung.com>\r
+HyunGoo Kang <hyungoo1.kang@samsung.com>\r
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..bbe9d02
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,206 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+\r
+                                 Apache License\r
+                           Version 2.0, January 2004\r
+                        http://www.apache.org/licenses/\r
+\r
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\r
+\r
+   1. Definitions.\r
+\r
+      "License" shall mean the terms and conditions for use, reproduction,\r
+      and distribution as defined by Sections 1 through 9 of this document.\r
+\r
+      "Licensor" shall mean the copyright owner or entity authorized by\r
+      the copyright owner that is granting the License.\r
+\r
+      "Legal Entity" shall mean the union of the acting entity and all\r
+      other entities that control, are controlled by, or are under common\r
+      control with that entity. For the purposes of this definition,\r
+      "control" means (i) the power, direct or indirect, to cause the\r
+      direction or management of such entity, whether by contract or\r
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the\r
+      outstanding shares, or (iii) beneficial ownership of such entity.\r
+\r
+      "You" (or "Your") shall mean an individual or Legal Entity\r
+      exercising permissions granted by this License.\r
+\r
+      "Source" form shall mean the preferred form for making modifications,\r
+      including but not limited to software source code, documentation\r
+      source, and configuration files.\r
+\r
+      "Object" form shall mean any form resulting from mechanical\r
+      transformation or translation of a Source form, including but\r
+      not limited to compiled object code, generated documentation,\r
+      and conversions to other media types.\r
+\r
+      "Work" shall mean the work of authorship, whether in Source or\r
+      Object form, made available under the License, as indicated by a\r
+      copyright notice that is included in or attached to the work\r
+      (an example is provided in the Appendix below).\r
+\r
+      "Derivative Works" shall mean any work, whether in Source or Object\r
+      form, that is based on (or derived from) the Work and for which the\r
+      editorial revisions, annotations, elaborations, or other modifications\r
+      represent, as a whole, an original work of authorship. For the purposes\r
+      of this License, Derivative Works shall not include works that remain\r
+      separable from, or merely link (or bind by name) to the interfaces of,\r
+      the Work and Derivative Works thereof.\r
+\r
+      "Contribution" shall mean any work of authorship, including\r
+      the original version of the Work and any modifications or additions\r
+      to that Work or Derivative Works thereof, that is intentionally\r
+      submitted to Licensor for inclusion in the Work by the copyright owner\r
+      or by an individual or Legal Entity authorized to submit on behalf of\r
+      the copyright owner. For the purposes of this definition, "submitted"\r
+      means any form of electronic, verbal, or written communication sent\r
+      to the Licensor or its representatives, including but not limited to\r
+      communication on electronic mailing lists, source code control systems,\r
+      and issue tracking systems that are managed by, or on behalf of, the\r
+      Licensor for the purpose of discussing and improving the Work, but\r
+      excluding communication that is conspicuously marked or otherwise\r
+      designated in writing by the copyright owner as "Not a Contribution."\r
+\r
+      "Contributor" shall mean Licensor and any individual or Legal Entity\r
+      on behalf of whom a Contribution has been received by Licensor and\r
+      subsequently incorporated within the Work.\r
+\r
+   2. Grant of Copyright License. Subject to the terms and conditions of\r
+      this License, each Contributor hereby grants to You a perpetual,\r
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
+      copyright license to reproduce, prepare Derivative Works of,\r
+      publicly display, publicly perform, sublicense, and distribute the\r
+      Work and such Derivative Works in Source or Object form.\r
+\r
+   3. Grant of Patent License. Subject to the terms and conditions of\r
+      this License, each Contributor hereby grants to You a perpetual,\r
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\r
+      (except as stated in this section) patent license to make, have made,\r
+      use, offer to sell, sell, import, and otherwise transfer the Work,\r
+      where such license applies only to those patent claims licensable\r
+      by such Contributor that are necessarily infringed by their\r
+      Contribution(s) alone or by combination of their Contribution(s)\r
+      with the Work to which such Contribution(s) was submitted. If You\r
+      institute patent litigation against any entity (including a\r
+      cross-claim or counterclaim in a lawsuit) alleging that the Work\r
+      or a Contribution incorporated within the Work constitutes direct\r
+      or contributory patent infringement, then any patent licenses\r
+      granted to You under this License for that Work shall terminate\r
+      as of the date such litigation is filed.\r
+\r
+   4. Redistribution. You may reproduce and distribute copies of the\r
+      Work or Derivative Works thereof in any medium, with or without\r
+      modifications, and in Source or Object form, provided that You\r
+      meet the following conditions:\r
+\r
+      (a) You must give any other recipients of the Work or\r
+          Derivative Works a copy of this License; and\r
+\r
+      (b) You must cause any modified files to carry prominent notices\r
+          stating that You changed the files; and\r
+\r
+      (c) You must retain, in the Source form of any Derivative Works\r
+          that You distribute, all copyright, patent, trademark, and\r
+          attribution notices from the Source form of the Work,\r
+          excluding those notices that do not pertain to any part of\r
+          the Derivative Works; and\r
+\r
+      (d) If the Work includes a "NOTICE" text file as part of its\r
+          distribution, then any Derivative Works that You distribute must\r
+          include a readable copy of the attribution notices contained\r
+          within such NOTICE file, excluding those notices that do not\r
+          pertain to any part of the Derivative Works, in at least one\r
+          of the following places: within a NOTICE text file distributed\r
+          as part of the Derivative Works; within the Source form or\r
+          documentation, if provided along with the Derivative Works; or,\r
+          within a display generated by the Derivative Works, if and\r
+          wherever such third-party notices normally appear. The contents\r
+          of the NOTICE file are for informational purposes only and\r
+          do not modify the License. You may add Your own attribution\r
+          notices within Derivative Works that You distribute, alongside\r
+          or as an addendum to the NOTICE text from the Work, provided\r
+          that such additional attribution notices cannot be construed\r
+          as modifying the License.\r
+\r
+      You may add Your own copyright statement to Your modifications and\r
+      may provide additional or different license terms and conditions\r
+      for use, reproduction, or distribution of Your modifications, or\r
+      for any such Derivative Works as a whole, provided Your use,\r
+      reproduction, and distribution of the Work otherwise complies with\r
+      the conditions stated in this License.\r
+\r
+   5. Submission of Contributions. Unless You explicitly state otherwise,\r
+      any Contribution intentionally submitted for inclusion in the Work\r
+      by You to the Licensor shall be under the terms and conditions of\r
+      this License, without any additional terms or conditions.\r
+      Notwithstanding the above, nothing herein shall supersede or modify\r
+      the terms of any separate license agreement you may have executed\r
+      with Licensor regarding such Contributions.\r
+\r
+   6. Trademarks. This License does not grant permission to use the trade\r
+      names, trademarks, service marks, or product names of the Licensor,\r
+      except as required for reasonable and customary use in describing the\r
+      origin of the Work and reproducing the content of the NOTICE file.\r
+\r
+   7. Disclaimer of Warranty. Unless required by applicable law or\r
+      agreed to in writing, Licensor provides the Work (and each\r
+      Contributor provides its Contributions) on an "AS IS" BASIS,\r
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\r
+      implied, including, without limitation, any warranties or conditions\r
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\r
+      PARTICULAR PURPOSE. You are solely responsible for determining the\r
+      appropriateness of using or redistributing the Work and assume any\r
+      risks associated with Your exercise of permissions under this License.\r
+\r
+   8. Limitation of Liability. In no event and under no legal theory,\r
+      whether in tort (including negligence), contract, or otherwise,\r
+      unless required by applicable law (such as deliberate and grossly\r
+      negligent acts) or agreed to in writing, shall any Contributor be\r
+      liable to You for damages, including any direct, indirect, special,\r
+      incidental, or consequential damages of any character arising as a\r
+      result of this License or out of the use or inability to use the\r
+      Work (including but not limited to damages for loss of goodwill,\r
+      work stoppage, computer failure or malfunction, or any and all\r
+      other commercial damages or losses), even if such Contributor\r
+      has been advised of the possibility of such damages.\r
+\r
+   9. Accepting Warranty or Additional Liability. While redistributing\r
+      the Work or Derivative Works thereof, You may choose to offer,\r
+      and charge a fee for, acceptance of support, warranty, indemnity,\r
+      or other liability obligations and/or rights consistent with this\r
+      License. However, in accepting such obligations, You may act only\r
+      on Your own behalf and on Your sole responsibility, not on behalf\r
+      of any other Contributor, and only if You agree to indemnify,\r
+      defend, and hold each Contributor harmless for any liability\r
+      incurred by, or claims asserted against, such Contributor by reason\r
+      of your accepting any such warranty or additional liability.\r
+\r
+   END OF TERMS AND CONDITIONS\r
+\r
+   APPENDIX: How to apply the Apache License to your work.\r
+\r
+      To apply the Apache License to your work, attach the following\r
+      boilerplate notice, with the fields enclosed by brackets "[]"\r
+      replaced with your own identifying information. (Don't include\r
+      the brackets!)  The text should be enclosed in the appropriate\r
+      comment syntax for the file format. We also recommend that a\r
+      file or class name and description of purpose be included on the\r
+      same "printed page" as the copyright notice for easier\r
+      identification within third-party archives.\r
+\r
+   Copyright [yyyy] [name of copyright owner]\r
+\r
+   Licensed under the Apache License, Version 2.0 (the "License");\r
+   you may not use this file except in compliance with the License.\r
+   You may obtain a copy of the License at\r
+\r
+       http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+   Unless required by applicable law or agreed to in writing, software\r
+   distributed under the License is distributed on an "AS IS" BASIS,\r
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+   See the License for the specific language governing permissions and\r
+   limitations under the License.\r
+\r
+\r
+\r
diff --git a/NOTICE b/NOTICE
new file mode 100644 (file)
index 0000000..ded3804
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
\ No newline at end of file
diff --git a/builder/build.properties.clean b/builder/build.properties.clean
new file mode 100644 (file)
index 0000000..c8d775a
--- /dev/null
@@ -0,0 +1,259 @@
+###############################################################################
+# Copyright (c) 2003, 2006 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+#####################
+# Parameters describing how and where to execute the build.
+# Typical users need only update the following properties:
+#    baseLocation - where things you are building against are installed
+#    bootclasspath - The base jars to compile against (typicaly rt.jar)
+#    configs - the list of {os, ws, arch} configurations to build.  
+#
+# Of course any of the settings here can be overridden by spec'ing 
+# them on the command line (e.g., -DbaseLocation=d:/eclipse
+
+#The type of the top level element we are building,  generally "feature"
+topLevelElementType=feature
+#The id of the top level element we are building
+topLevelElementId=org.tizen.web.project.sample.feature
+
+############# PRODUCT/PACKAGING CONTROL #############
+#runPackager=true
+
+#Set the name of the archive that will result from the product build.
+#archiveNamePrefix=
+
+# The prefix that will be used in the generated archive.
+archivePrefix="Do not touch here."
+
+# The location underwhich all of the build output will be collected.
+collectingFolder=${archivePrefix}
+
+# The list of {os, ws, arch} configurations to build.  This 
+# value is a '&' separated list of ',' separate triples.  For example, 
+#     configs=win32,win32,x86 & linux,motif,x86
+# By default the value is *,*,*
+configs="Do not touch here."
+#configs=win32, win32, x86 & \
+#      win32,win32,x86_64 & \
+#      win32,win32,wpf & \
+#      linux, gtk, ppc & \
+#      linux, gtk, x86 & \
+#      linux, gtk, x86_64 & \
+#      linux, motif, x86 & \
+#      solaris, motif, sparc & \
+#      solaris, gtk, sparc & \
+#      aix, motif, ppc & \
+#      hpux, motif, ia64_32 & \
+#      macosx, carbon, ppc & \
+#      macosx, carbon, x86 & \
+#      macosx, cocoa, ppc & \
+#      macosx, cocoa, x86 & \
+#      macosx, cocoa, x86_64
+
+# By default PDE creates one archive (result) per entry listed in the configs property.
+# Setting this value to true will cause PDE to only create one output containing all 
+# artifacts for all the platforms listed in the configs property.
+# To control the output format for the group, add a "group, group, group - <format>" entry to the
+# archivesFormat. 
+#groupConfigurations=true
+
+#The format of the archive. By default a zip is created using antZip.
+#The list can only contain the configuration for which the desired format is different than zip.
+#archivesFormat=win32, win32, x86 - antZip& \
+#      linux, gtk, ppc - antZip &\
+#    linux, gtk, x86 - antZip& \
+#      linux, gtk, x86_64 - antZip& \
+# linux, motif, x86 - antZip& \
+#      solaris, motif, sparc - antZip& \
+#      solaris, gtk, sparc - antZip& \
+#      aix, motif, ppc - antZip& \
+#      hpux, motif, PA_RISC - antZip& \
+#      macosx, carbon, ppc - antZip
+
+#Allow cycles involving at most one bundle that needs to be compiled with the rest being binary bundles.
+allowBinaryCycles=true
+
+#Sort bundles depenedencies across all features instead of just within a given feature.
+#flattenDependencies = true
+
+#Parallel compilation, requires flattenedDependencies=true
+#parallelCompilation=true
+#parallelThreadCount=
+#parallelThreadsPerProcessor=
+       
+#Set to true if you want the output to be ready for an update jar (no site.xml generated)
+#outputUpdateJars = false
+
+#Set to true for Jnlp generation
+#codebase should be a URL that will be used as the root of all relative URLs in the output.
+#generateJnlp=false
+#jnlp.codebase=<codebase url>
+#jnlp.j2se=<j2se version>
+#jnlp.locale=<a locale>
+#jnlp.generateOfflineAllowed=true or false generate <offlineAllowed/> attribute in the generated features
+#jnlp.configs=${configs}                       #uncomment to filter the content of the generated jnlp files based on the configuration being built
+
+#Set to true if you want to sign jars
+#signJars=false
+#sign.alias=<alias>
+#sign.keystore=<keystore location>
+#sign.storepass=<keystore password>
+#sign.keypass=<key password>
+
+#Arguments to send to the zip executable
+#zipargs=
+
+#Arguments to send to the tar executable
+#tarargs=
+
+#Control the creation of a file containing the version included in each configuration - on by default 
+#generateVersionsLists=false
+
+############## BUILD NAMING CONTROL ################
+# The directory into which the build elements are fetched and where
+# the build takes place.
+buildDirectory="Do not touch here"
+
+# Type of build.  Used in naming the build output.  Typically this value is
+# one of I, N, M, S, ...
+buildType="Do not touch here"
+
+# ID of the build.  Used in naming the build output.
+buildId="Do not touch here"
+
+# Label for the build.  Used in naming the build output
+buildLabel=${buildType}.${buildId}
+
+# Timestamp for the build.  Used in naming the build output
+timestamp=007
+
+#The value to be used for the qualifier of a plugin or feature when you want to override the value computed by pde.
+#The value will only be applied to plugin or features indicating build.properties, qualifier = context 
+#forceContextQualifier=<the value for the qualifier>
+
+#Enable / disable the generation of a suffix for the features that use .qualifier. 
+#The generated suffix is computed according to the content of the feature   
+#generateFeatureVersionSuffix=true
+
+############# BASE CONTROL #############
+# Settings for the base Eclipse components and Java class libraries 
+# against which you are building.
+# Base location for anything the build needs to compile against.  For example,
+# in most RCP app or a plug-in,  the baseLocation should be the location of a previously
+# installed Eclipse against which the application or plug-in code will be compiled and the RCP delta pack.
+
+base="Do not touch here"
+baseLocation="Do not touch here"
+
+
+#Folder containing repositories whose content is needed to compile against
+#repoBaseLocation=${base}/repos
+#Folder where the content of the repositories from ${repoBaseLocation} will be made available as a form suitable to be compiled against
+#transformedRepoLocation=${base}/transformedRepos
+
+#Os/Ws/Arch/nl of the eclipse specified by baseLocation
+baseos=linux
+basews=gtk
+basearch=x86
+
+#this property indicates whether you want the set of plug-ins and features to be considered during the build to be limited to the ones reachable from the features / plugins being built
+filteredDependencyCheck=false
+
+#this property indicates whether the resolution should be done in development mode (i.e. ignore multiple bundles with singletons)
+resolution.devMode=false
+
+#pluginPath is a list of locations in which to find plugins and features.  This list is separated by the platform file separator (; or :)
+#a location is one of:  
+#- the location of the jar or folder that is the plugin or feature : /path/to/foo.jar or /path/to/foo
+#- a directory that contains a /plugins or /features subdirectory
+#- the location of a feature.xml, or for 2.1 style plugins, the plugin.xml or fragment.xml
+#pluginPath=
+
+skipBase=true
+eclipseURL=<url for eclipse download site>
+eclipseBuildId=<Id of Eclipse build to get>
+eclipseBaseURL=${eclipseURL}/eclipse-platform-${eclipseBuildId}-win32.zip
+
+
+############# MAP FILE CONTROL ################
+# This section defines CVS tags to use when fetching the map files from the repository.
+# If you want to fetch the map file from repository / location, change the getMapFiles target in the customTargets.xml
+
+skipMaps=true
+mapsRepo=:pserver:anonymous@example.com/path/to/repo
+mapsRoot=path/to/maps
+mapsCheckoutTag=HEAD
+
+#tagMaps=true
+mapsTagTag=v${buildId}
+
+
+############ REPOSITORY CONTROL ###############
+# This section defines properties parameterizing the repositories where plugins, fragments
+# bundles and features are being obtained from. 
+
+# The tags to use when fetching elements to build.
+# By default thebuilder will use whatever is in the maps.  
+# This value takes the form of a comma separated list of repository identifier (like used in the map files) and the 
+# overriding value
+# For example fetchTag=CVS=HEAD, SVN=v20050101
+# fetchTag=HEAD
+skipFetch=true
+
+
+############# P2 OPTIONS ##############
+#p2.gathering = true
+#p2.compress=true
+
+############# JAVA COMPILER OPTIONS ##############
+# The location of the Java jars to compile against.  Typically the rt.jar for your JDK/JRE
+#bootclasspath=${java.home}/lib/rt.jar
+
+# specific JRE locations to compile against. These values are used to compile bundles specifying a 
+# Bundle-RequiredExecutionEnvironment. Uncomment and set values for environments that you support
+#CDC-1.0/Foundation-1.0= /path/to/rt.jar
+#CDC-1.1/Foundation-1.1=
+#OSGi/Minimum-1.0=
+#OSGi/Minimum-1.1=
+#JRE-1.1=
+#J2SE-1.2=
+#J2SE-1.3=
+#J2SE-1.4=
+#J2SE-1.5=
+#JavaSE-1.6=
+#PersonalJava-1.1=
+#PersonalJava-1.2=
+#CDC-1.0/PersonalBasis-1.0=
+#CDC-1.0/PersonalJava-1.0=
+#CDC-1.1/PersonalBasis-1.1=
+#CDC-1.1/PersonalJava-1.1=
+
+# Specify the output format of the compiler log when eclipse jdt is used
+logExtension=.log
+
+# Whether or not to include debug info in the output jars
+javacDebugInfo=true
+
+# Whether or not to fail the build if there are compiler errors
+javacFailOnError=true
+
+# Enable or disable verbose mode of the compiler
+javacVerbose=false
+
+# Extra arguments for the compiler. These are specific to the java compiler being used.
+compilerArg=-encoding\ UTF-8
+
+# Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacSource in build.properties
+javacSource=1.6
+
+# Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties.
+javacTarget=1.6
+
+
diff --git a/builder/customTargets.xml b/builder/customTargets.xml
new file mode 100644 (file)
index 0000000..6a42e92
--- /dev/null
@@ -0,0 +1,187 @@
+<project name="Build specific targets and properties" default="noDefault">
+
+       <!-- ===================================================================== -->
+       <!-- Run a given ${target} on all elements being built -->
+       <!-- Add on <ant> task for each top level element being built. -->
+       <!-- ===================================================================== -->
+       <available property="allElementsFile" file="${builder}/allElements.xml" value="${builder}/allElements.xml"/>
+       <property name="allElementsFile" location="${eclipse.pdebuild.templates}/headless-build/allElements.xml"/>
+
+       <import file="${allElementsFile}" />
+       <target name="allElements">
+               <ant antfile="${genericTargets}" target="${target}">
+                       <property name="type" value="${topLevelElementType}"/>
+                       <property name="id" value="${topLevelElementId}"/>
+               </ant>
+       </target>
+
+       <target
+               name="assemble.${topLevelElementId}.linux.gtk.x86">
+               <ant antfile="{$assembleScriptName}" dir="${buildDirectory}"/>
+       </target>
+       <target
+               name="assemble.${topLevelElementId}.win32.win32.x86">
+               <ant antfile="{$assembleScriptName}" dir="${buildDirectory}"/>
+       </target>
+       
+       <!-- ===================================================================== -->
+       <!-- ===================================================================== -->
+       <target name="getBaseComponents" depends="checkLocalBase" unless="skipBase">
+               <get src="${eclipseBaseURL}" dest="${buildDirectory}/../temp-base.zip" />
+               <unzip dest="${base}" overwrite="true" src="${buildDirectory}/../temp-base.zip" />
+       </target>
+
+       <target name="checkLocalBase">
+               <available file="${base}" property="skipBase" />
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Check out map files from correct repository -->
+       <!-- Replace values for mapsCheckoutTag as desired. -->
+       <!-- ===================================================================== -->
+       <target name="getMapFiles" depends="checkLocalMaps" unless="skipMaps">
+               <property name="mapsCheckoutTag" value="HEAD" />
+               <cvs cvsRoot="${mapsRepo}" package="${mapsRoot}" dest="${buildDirectory}/maps" tag="${mapsCheckoutTag}" />
+       </target>
+
+       <target name="checkLocalMaps">
+               <available property="skipMaps" file="${buildDirectory}/maps" />
+       </target>
+
+       <target name="tagMapFiles" if="tagMaps">
+               <cvs dest="${buildDirectory}/maps/${mapsRoot}" command="tag ${mapsTagTag}" />
+       </target>
+
+       <!-- ===================================================================== -->
+
+       <target name="clean" unless="noclean">
+               <antcall target="allElements">
+                       <param name="target" value="cleanElement" />
+               </antcall>
+       </target>
+
+       <target name="gatherLogs">
+               <mkdir dir="${buildDirectory}/${buildLabel}/compilelogs" />
+               <antcall target="allElements">
+                       <param name="target" value="gatherLogs" />
+               </antcall>
+               <unzip dest="${buildDirectory}/${buildLabel}/compilelogs" overwrite="true">
+                       <fileset dir="${buildDirectory}/features">
+                               <include name="**/*.log.zip" />
+                       </fileset>
+               </unzip>
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do before setup -->
+       <!-- ===================================================================== -->
+       <target name="preSetup">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do after setup but before starting the build proper -->
+       <!-- ===================================================================== -->
+       <target name="postSetup">
+               <antcall target="getBaseComponents" />
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do before fetching the build elements -->
+       <!-- ===================================================================== -->
+       <target name="preFetch">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do after fetching the build elements -->
+       <!-- ===================================================================== -->
+       <target name="postFetch">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do before the repositories are being processed -->
+       <!-- ===================================================================== -->
+       <target name="preProcessRepos">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do after the repositories have been processed -->
+       <!-- ===================================================================== -->
+       <target name="postProcessRepos">
+       </target>
+       
+       <!-- ===================================================================== -->
+       <!-- Steps to do before generating the build scripts. -->
+       <!-- ===================================================================== -->
+       <target name="preGenerate">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do after generating the build scripts. -->
+       <!-- ===================================================================== -->
+       <target name="postGenerate">
+               <antcall target="clean" />
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do before running the build.xmls for the elements being built. -->
+       <!-- ===================================================================== -->
+       <target name="preProcess">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do after running the build.xmls for the elements being built. -->
+       <!-- ===================================================================== -->
+       <target name="postProcess">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do before running assemble. -->
+       <!-- ===================================================================== -->
+       <target name="preAssemble">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do after  running assemble. -->
+       <!-- ===================================================================== -->
+       <target name="postAssemble">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do before running package. -->
+       <!-- ===================================================================== -->
+       <target name="prePackage">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do after  running package. -->
+       <!-- ===================================================================== -->
+       <target name="postPackage">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do after the build is done. -->
+       <!-- ===================================================================== -->
+       <target name="postBuild">
+               <antcall target="gatherLogs" />
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do to test the build results -->
+       <!-- ===================================================================== -->
+       <target name="test">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Steps to do to publish the build results -->
+       <!-- ===================================================================== -->
+       <target name="publish">
+       </target>
+
+       <!-- ===================================================================== -->
+       <!-- Default target                                                        -->
+       <!-- ===================================================================== -->
+       <target name="noDefault">
+               <echo message="You must specify a target when invoking this file" />
+       </target>
+
+</project>
diff --git a/org.tizen.web.project.sample.feature/.project b/org.tizen.web.project.sample.feature/.project
new file mode 100644 (file)
index 0000000..5b4ecee
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.tizen.web.project.sample.feature</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.pde.FeatureBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.FeatureNature</nature>
+       </natures>
+</projectDescription>
diff --git a/org.tizen.web.project.sample.feature/LICENSE-2.0.htm b/org.tizen.web.project.sample.feature/LICENSE-2.0.htm
new file mode 100644 (file)
index 0000000..f7ca656
--- /dev/null
@@ -0,0 +1,191 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <title>Apache License, Version 2.0</title>
+
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <meta property="og:image" content="http://www.apache.org/images/asf_logo.gif" />
+
+    <link rel="stylesheet" type="text/css" media="screen" href="/css/style.css">
+    <link rel="stylesheet" type="text/css" media="screen" href="/css/code.css">
+
+    <script type="text/javascript" src="/js/jquery.js"></script>
+    <script type="text/javascript" src="/js/apache_boot.js"></script>
+
+    
+
+    
+    <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file to you under the Apache License, Version 2.0 (the &quot;License&quot;); you may not use this file except in compliance with the License.  You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the specific language governing permissions and limitations under the License. -->
+  </head>
+
+  <body>
+    <div id="page" class="container_16">
+      <div id="header" class="grid_8">
+        <h1>The Apache Software Foundation</h1>
+        <h2>Apache License, Version 2.0</h2>
+      </div>
+
+      <div class="clear"></div>
+      <div id="content" class="grid_16"><div class="section-content"><p>Apache License<br></br>Version 2.0, January 2004<br></br>
+<a href="http://www.apache.org/licenses/">http://www.apache.org/licenses/</a> </p>
+<p>TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION</p>
+<p><strong><a name="definitions">1. Definitions</a></strong>.</p>
+<p>"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.</p>
+<p>"Licensor" shall mean the copyright owner or entity authorized by the
+copyright owner that is granting the License.</p>
+<p>"Legal Entity" shall mean the union of the acting entity and all other
+entities that control, are controlled by, or are under common control with
+that entity. For the purposes of this definition, "control" means (i) the
+power, direct or indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (ii) ownership of fifty
+percent (50%) or more of the outstanding shares, or (iii) beneficial
+ownership of such entity.</p>
+<p>"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.</p>
+<p>"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.</p>
+<p>"Object" form shall mean any form resulting from mechanical transformation
+or translation of a Source form, including but not limited to compiled
+object code, generated documentation, and conversions to other media types.</p>
+<p>"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice that
+is included in or attached to the work (an example is provided in the
+Appendix below).</p>
+<p>"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent, as
+a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from, or
+merely link (or bind by name) to the interfaces of, the Work and Derivative
+Works thereof.</p>
+<p>"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor for
+inclusion in the Work by the copyright owner or by an individual or Legal
+Entity authorized to submit on behalf of the copyright owner. For the
+purposes of this definition, "submitted" means any form of electronic,
+verbal, or written communication sent to the Licensor or its
+representatives, including but not limited to communication on electronic
+mailing lists, source code control systems, and issue tracking systems that
+are managed by, or on behalf of, the Licensor for the purpose of discussing
+and improving the Work, but excluding communication that is conspicuously
+marked or otherwise designated in writing by the copyright owner as "Not a
+Contribution."</p>
+<p>"Contributor" shall mean Licensor and any individual or Legal Entity on
+behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.</p>
+<p><strong><a name="copyright">2. Grant of Copyright License</a></strong>. Subject to the
+terms and conditions of this License, each Contributor hereby grants to You
+a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of, publicly
+display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.</p>
+<p><strong><a name="patent">3. Grant of Patent License</a></strong>. Subject to the terms
+and conditions of this License, each Contributor hereby grants to You a
+perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made, use,
+offer to sell, sell, import, and otherwise transfer the Work, where such
+license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by
+combination of their Contribution(s) with the Work to which such
+Contribution(s) was submitted. If You institute patent litigation against
+any entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that the Work or a Contribution incorporated within the Work constitutes
+direct or contributory patent infringement, then any patent licenses
+granted to You under this License for that Work shall terminate as of the
+date such litigation is filed.</p>
+<p><strong><a name="redistribution">4. Redistribution</a></strong>. You may reproduce and
+distribute copies of the Work or Derivative Works thereof in any medium,
+with or without modifications, and in Source or Object form, provided that
+You meet the following conditions:</p>
+<ol>
+<li>
+<p>You must give any other recipients of the Work or Derivative Works a
+copy of this License; and</p>
+</li>
+<li>
+<p>You must cause any modified files to carry prominent notices stating
+that You changed the files; and</p>
+</li>
+<li>
+<p>You must retain, in the Source form of any Derivative Works that You
+distribute, all copyright, patent, trademark, and attribution notices from
+the Source form of the Work, excluding those notices that do not pertain to
+any part of the Derivative Works; and</p>
+</li>
+<li>
+<p>If the Work includes a "NOTICE" text file as part of its distribution,
+then any Derivative Works that You distribute must include a readable copy
+of the attribution notices contained within such NOTICE file, excluding
+those notices that do not pertain to any part of the Derivative Works, in
+at least one of the following places: within a NOTICE text file distributed
+as part of the Derivative Works; within the Source form or documentation,
+if provided along with the Derivative Works; or, within a display generated
+by the Derivative Works, if and wherever such third-party notices normally
+appear. The contents of the NOTICE file are for informational purposes only
+and do not modify the License. You may add Your own attribution notices
+within Derivative Works that You distribute, alongside or as an addendum to
+the NOTICE text from the Work, provided that such additional attribution
+notices cannot be construed as modifying the License.
+You may add Your own copyright statement to Your modifications and may
+provide additional or different license terms and conditions for use,
+reproduction, or distribution of Your modifications, or for any such
+Derivative Works as a whole, provided Your use, reproduction, and
+distribution of the Work otherwise complies with the conditions stated in
+this License.</p>
+</li>
+</ol>
+<p><strong><a name="contributions">5. Submission of Contributions</a></strong>. Unless You
+explicitly state otherwise, any Contribution intentionally submitted for
+inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the
+terms of any separate license agreement you may have executed with Licensor
+regarding such Contributions.</p>
+<p><strong><a name="trademarks">6. Trademarks</a></strong>. This License does not grant
+permission to use the trade names, trademarks, service marks, or product
+names of the Licensor, except as required for reasonable and customary use
+in describing the origin of the Work and reproducing the content of the
+NOTICE file.</p>
+<p><strong><a name="no-warranty">7. Disclaimer of Warranty</a></strong>. Unless required by
+applicable law or agreed to in writing, Licensor provides the Work (and
+each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including,
+without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You
+are solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise
+of permissions under this License.</p>
+<p><strong><a name="no-liability">8. Limitation of Liability</a></strong>. In no event and
+under no legal theory, whether in tort (including negligence), contract, or
+otherwise, unless required by applicable law (such as deliberate and
+grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a result
+of this License or out of the use or inability to use the Work (including
+but not limited to damages for loss of goodwill, work stoppage, computer
+failure or malfunction, or any and all other commercial damages or losses),
+even if such Contributor has been advised of the possibility of such
+damages.</p>
+<p><strong><a name="additional">9. Accepting Warranty or Additional Liability</a></strong>.
+While redistributing the Work or Derivative Works thereof, You may choose
+to offer, and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this License.
+However, in accepting such obligations, You may act only on Your own behalf
+and on Your sole responsibility, not on behalf of any other Contributor,
+and only if You agree to indemnify, defend, and hold each Contributor
+harmless for any liability incurred by, or claims asserted against, such
+Contributor by reason of your accepting any such warranty or additional
+liability.</p>
+<p>END OF TERMS AND CONDITIONS</p>
+
+    <div class="clear"></div>
+    
+    </div>
+    <div id="copyright" class="container_16">
+      <p>Copyright &#169; 2011 The Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+    </div>
+  </body>
+</html>
diff --git a/org.tizen.web.project.sample.feature/build.properties b/org.tizen.web.project.sample.feature/build.properties
new file mode 100644 (file)
index 0000000..5001e44
--- /dev/null
@@ -0,0 +1,3 @@
+bin.includes = feature.xml,\
+               LICENSE-2.0.htm,\
+               license.html
diff --git a/org.tizen.web.project.sample.feature/feature.xml b/org.tizen.web.project.sample.feature/feature.xml
new file mode 100644 (file)
index 0000000..843a884
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.tizen.web.project.sample.feature"
+      label="Tizen Web Sample"
+      version="1.0.0.qualifier"
+      provider-name="Tizen"
+      license-feature="org.tizen.base.feature">
+
+   <description>
+      Web Sample for Tizen SDK.
+   </description>
+
+   <copyright>
+      Copyright (c) 2010-2011, Samsung Electronics Co., LTD. All rights reserved.
+   </copyright>
+
+   <license url="license.html">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="org.tizen.web.project.sample"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/org.tizen.web.project.sample.feature/license.html b/org.tizen.web.project.sample.feature/license.html
new file mode 100644 (file)
index 0000000..2545107
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Tizen SOFTWARE DEVELOPMENT KIT (&quot;SDK&quot;) LICENSE AGREEMENT</title>
+</head>
+
+<body lang="EN-US">
+               <p align="center">Tizen SDK</p><br /><br />
+
+Tizen SDK contains software portions licensed under various open source licenses as well as proprietary components.  All open source software portions ("Open Source Software") are licensed under the open source licenses that accompany such Open Source Software.<br /><br />
+
+The licenses governing the Open Source Software are available at: <a href="http://developer.tizen.org/download/tizen_sdk_opensource_license.html">http://developer.tizen.org/download/tizen_sdk_opensource_license.html</a><br /><br />
+Except for the Open Source Software contained in Tizen SDK, all other software portions contained in Tizen SDK are governed by the terms and conditions of the Tizen Software Development Kit License Agreement, available at: <a href="http://developer.tizen.org/download/samsung_sdk_license.html">http://developer.tizen.org/download/samsung_sdk_license.html</a><br /><br />
+
+You may access and download Tizen SDK Open Source Software at: <a href="http://developer.tizen.org/download/tizenopensdk.tar.gz">http://developer.tizen.org/download/tizenopensdk.tar.gz</a><br /><br />
+
+BY CLICKING THE "I AGREE" BUTTON OR BY USING ANY PART OF TIZEN SDK, YOU AGREE (ON BEHALF OF YOURSELF AND/OR YOUR COMPANY) TO THE OPEN SOURCE SOFTWARE LICENSE TERMS AND THE TIZEN SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT. IF YOU DO NOT AGREE WITH THE OPEN SOURCE SOFTWARE LICENSE TERMS OR THE TIZEN SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU MAY NOT DOWNLOAD OR USE TIZEN SDK.<br /><br />
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/.classpath b/org.tizen.web.project.sample/.classpath
new file mode 100644 (file)
index 0000000..ad32c83
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.tizen.web.project.sample/.project b/org.tizen.web.project.sample/.project
new file mode 100644 (file)
index 0000000..6d86ff1
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.tizen.web.project.sample</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/org.tizen.web.project.sample/.settings/org.eclipse.jdt.core.prefs b/org.tizen.web.project.sample/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..9d96d60
--- /dev/null
@@ -0,0 +1,8 @@
+#Tue Aug 07 14:20:48 KST 2012
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/org.tizen.web.project.sample/META-INF/MANIFEST.MF b/org.tizen.web.project.sample/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..76f305f
--- /dev/null
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Web SDK Project Sample
+Bundle-SymbolicName: org.tizen.web.project.sample;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.tizen.web.project.sample.Activator
+Bundle-Vendor: Samsung Electronics
+Require-Bundle: org.eclipse.core.runtime,
+ org.tizen.web.project.wizard
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Import-Package: org.eclipse.core.resources
diff --git a/org.tizen.web.project.sample/build.properties b/org.tizen.web.project.sample/build.properties
new file mode 100644 (file)
index 0000000..2fd90e1
--- /dev/null
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               templates/
diff --git a/org.tizen.web.project.sample/plugin.xml b/org.tizen.web.project.sample/plugin.xml
new file mode 100644 (file)
index 0000000..8df6ce6
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.tizen.web.project.templates">
+      <template></template>
+   </extension>
+
+</plugin>
diff --git a/org.tizen.web.project.sample/src/org/tizen/web/project/sample/Activator.java b/org.tizen.web.project.sample/src/org/tizen/web/project/sample/Activator.java
new file mode 100644 (file)
index 0000000..6cd66be
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Web IDE Samples - org.tizen.web.project.sample
+ * 
+ * Copyright (C) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact:
+ * Jihoon Song <jihoon80.song@samsung.com> 
+ * Hyeongseok Heo <hyeongseok.heo@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * Contributors:
+ * - S-Core Co., Ltd
+ * 
+ */
+
+package org.tizen.web.project.sample;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+       private static BundleContext context;
+
+       static BundleContext getContext() {
+               return context;
+       }
+
+       /*
+        * (non-Javadoc)
+        * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+        */
+       public void start(BundleContext bundleContext) throws Exception {
+               Activator.context = bundleContext;
+       }
+
+       /*
+        * (non-Javadoc)
+        * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+        */
+       public void stop(BundleContext bundleContext) throws Exception {
+               Activator.context = null;
+       }
+
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/description.xml
new file mode 100644 (file)
index 0000000..0526b3e
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Alarm</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-alarm-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen alarm device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/config.xml
new file mode 100755 (executable)
index 0000000..4e70b75
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.17" id="http://tizen.org/wid/Alarm" viewmodes="fullscreen">
+       <name>Alarm</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/alarm" required="true"/>
+       <tizen:application id="samplealrm" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/css/style.css
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/index.html
new file mode 100644 (file)
index 0000000..36a99a2
--- /dev/null
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8" />
+       <meta name="description" content="Alarm API Tutorial" />
+
+       <title>Alarm</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css" />
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Alarm</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="alarm-all-list">
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a href="#absolute-alarm-add">Absolute</a></li>
+                                       <li><a href="#relative-alarm-add">Relative</a></li>
+                                       <li><a id="alarm-remove-all">Delete all</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="absolute-alarm-add">
+               <div data-role="header" data-position="fixed">
+                       <h1>Absolute Alarm Add</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li data-role="list-divider">Time</li>
+                               <li>
+                                       <input type="datetime" name="alarm-time" id="alarm-time"/>
+                               </li>
+                               <li data-role="list-divider">Repeat interval (sec)</li>
+                               <li>
+                                       <input id="absolute-alarm-period" name="absolute-alarm-period"
+                                       data-popupenabled="false" type="range" value="50" min="0" max="99"/>
+                               </li>
+                               <li data-role="list-divider">Action on alarm expiration</li>
+                               <li class="ui-li-has-radio">
+                                       <input type="radio" name="launch-choice-absolute" id="launch-app-absolute" value="app" checked="checked"/>
+                                       Application launch
+                               </li>
+                               <li class="ui-li-has-radio">
+                                       <input type="radio" name="launch-choice-absolute" id="launch-svc-absolute" value="svc"/>
+                                       Appservice launch
+                               </li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="absolute-alarm-save">Save</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="relative-alarm-add">
+               <div data-role="header" data-position="fixed">
+                       <h1>Relative Alarm Add</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li data-role="list-divider">Delay (sec)</li>
+                               <li>
+                                       <input id="relative-alarm-delay" name="relative-alarm-delay"
+                                       data-popupenabled="false" type="range" value="50" min="0" max="99"/>
+                               </li>
+                               <li data-role="list-divider">Repeat interval (sec)</li>
+                               <li>
+                                       <input id="relative-alarm-period" name="relative-alarm-period"
+                                       data-popupenabled="false" type="range" value="50" min="0" max="99"/>
+                               </li>
+                               <li data-role="list-divider">Action on alarm expiration</li>
+                               <li class="ui-li-has-radio">
+                                       <input type="radio" name="launch-choice-relative" id="launch-app-relative" value="app" checked="checked"/>
+                                       Application launch
+                               </li>
+                               <li class="ui-li-has-radio">
+                                       <input type="radio" name="launch-choice-relative" id="launch-svc-relative" value="svc"/>
+                                       Appservice launch
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="relative-alarm-save">Save</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/project/js/main.js
new file mode 100644 (file)
index 0000000..07ae71b
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               tizen.application.exit();
+               return false;
+       });
+
+       $("#main").bind("pagebeforeshow", displayAlarms);
+
+       $("#alarm-remove-all").bind("vclick", function() {
+               removeAll();
+               return false;
+       });
+
+       $("#alarm-all-list").delegate("li", "vclick", function() {
+               alarmInfo($(this).data("id"));
+               return false;
+       });
+
+       $("#alarm-all-list").delegate("div", "vclick", function() {
+               removeAlarm($(this).parent().data("id"));
+               return false;
+       });
+});
+
+$(document).delegate("#absolute-alarm-add", "pageinit", function() {
+       $("#absolute-alarm-save").bind("vclick", function() {
+               addAlarmAbsolute();
+               return false;
+       });
+});
+
+$(document).delegate("#relative-alarm-add", "pageinit", function() {
+       $("#relative-alarm-save").bind("vclick", function() {
+               addAlarmRelative();
+               return false;
+       });
+});
+
+function displayAlarms() {
+       // get full list of alarms
+       var alarmsArray = tizen.alarm.getAll();
+       var period, str = "";
+
+       for (var i = 0; i < alarmsArray.length; i++) {
+               if (alarmsArray[i].period) {
+                       period = alarmsArray[i].period + " sec";
+               } else {
+                       period = "none";
+               }
+
+               if (alarmsArray[i] instanceof tizen.AlarmAbsolute) {
+                       var d = alarmsArray[i].date,
+                               m = d.getMinutes();
+
+                       str += '<li class="ui-li-has-multiline" data-id="'
+                                       + alarmsArray[i].id
+                                       + '">'
+                                       + (d.getMonth() + 1)
+                                       + '/'
+                                       + d.getDate()
+                                       + '/'
+                                       + d.getFullYear()
+                                       + ' '
+                                       + d.getHours()
+                                       + ':'
+                                       + ((m < 10) ? "0" + m : m)
+                                       + '<span class="ui-li-text-sub">Absolute alarm (Period: '
+                                       + period
+                                       + ')</span> <div data-role="button" data-inline="true">Delete</div></li>';
+               } else if (alarmsArray[i] instanceof tizen.AlarmRelative) {
+                       str += '<li class="ui-li-has-multiline" data-id="'
+                                       + alarmsArray[i].id
+                                       + '">'
+                                       + alarmsArray[i].delay
+                                       + ' sec<span class="ui-li-text-sub">Relative alarm (Period: '
+                                       + period
+                                       + ')</span> <div data-role="button" data-inline="true">Delete</div></li>';
+               } else {
+                       alert("Wrong alarm instance");
+                       break;
+               }
+       }
+       $("#alarm-all-list").html(str).trigger("create").listview("refresh");
+}
+
+function addAlarm(alarm, radioLaunchApp) {
+       var arg;
+
+       if (radioLaunchApp.prop("checked")) {
+               /* Launching application case */
+               arg = null;
+       } else {
+               /* Launching appservice case */
+               arg = new tizen.ApplicationService("http://tizen.org/appcontrol/operation/view",
+                               null,
+                               null,
+                               [new tizen.ApplicationServiceData("id",["sampleapp0"])]);
+       }
+
+       try {
+               tizen.alarm.add(alarm, "sampleapp0", arg);
+       } catch (e) {
+               alert("error: " + e.message);
+       }
+}
+
+function addAlarmAbsolute() {
+       var period = parseInt($("#absolute-alarm-period").prop("value")),
+               time = $("#alarm-time").datetimepicker("value"),
+               year, month, date, hours, minutes,
+               splits, d, t;
+
+       if (time == null || period < 0) {
+               alert("Getting alarm settings failed");
+               return;
+       }
+
+       splits = time.split("T");
+       d = splits[0].split("-");
+       t = splits[1].split(":");
+
+       year = parseInt(d[0]);
+       month = parseInt(d[1]) - 1;
+       date = parseInt(d[2]);
+       hours = parseInt(t[0]);
+       minutes = parseInt(t[1]);
+
+       var inputDate = new Date(year, month, date, hours, minutes, 0, 0);
+       var myAlarm = new tizen.AlarmAbsolute(inputDate, (period > 0 ? period : null));
+
+       addAlarm(myAlarm, $("#launch-app-absolute"));
+
+       $.mobile.changePage("#main");
+}
+
+function addAlarmRelative() {
+       var period = parseInt($("#relative-alarm-period").prop("value")),
+               delay = parseInt($("#relative-alarm-delay").prop("value"));
+
+       if ((delay < 0) || (period < 0)) {
+               alert("Getting alarm settings failed");
+               return;
+       }
+
+       var myAlarm = new tizen.AlarmRelative(delay, period);
+
+       addAlarm(myAlarm, $("#launch-app-relative"));
+
+       $.mobile.changePage("#main");
+}
+
+function removeAll() {
+       tizen.alarm.removeAll();
+       displayAlarms();
+}
+
+function removeAlarm(id) {
+       try {
+               tizen.alarm.remove(id);
+       } catch (e) {
+               console.log("Alarm remove failed. The once alarm might be already removed automatically");
+       }
+       displayAlarms();
+}
+
+function alarmInfo(id) {
+       var alarm = tizen.alarm.get(id);
+
+       if (alarm) {
+               if (alarm instanceof tizen.AlarmAbsolute) {
+                       alert("Next scheduled alarm is " + alarm.getNextScheduledDate());
+               } else {
+                       alert("Remaining seconds is " + alarm.getRemainingSeconds() + " SECS");
+               }
+       } else {
+               alert("Alarm info retrieving failed<br/>This once alarm might be already removed automatically");
+               displayAlarms();
+       }
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..641bf6c
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Alarm</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tutorial-alarm-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tutorial-alarm-snapshot.png
new file mode 100644 (file)
index 0000000..20751e0
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Alarm/tutorial-alarm-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/description.xml
new file mode 100644 (file)
index 0000000..5050082
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Application</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-application-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen application device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/appsvc.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/appsvc.html
new file mode 100644 (file)
index 0000000..406d18b
--- /dev/null
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Application API Tutorial"/>
+
+       <title>Application</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/appsvc.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css"/>
+</head>
+
+<body>
+       <div data-role="page" id="appsvc">
+               <div data-role="header" data-position="fixed">
+                       <h1>Application</h1>
+               </div>
+               <div data-role="content">
+                       <div id="msg"></div>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/config.xml
new file mode 100755 (executable)
index 0000000..88f2d45
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.15" viewmodes="fullscreen" id="http://tizen.org/wid/Application">
+       <name>Application</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application" required="true"/>
+       <tizen:appservice src="appsvc.html" operation="http://tizen.org/appcontrol/operation/view"/>
+       <tizen:application id="sampleapp0" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/css/style.css
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/index.html
new file mode 100644 (file)
index 0000000..4feb8e2
--- /dev/null
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8" />
+       <meta name="description" content="Application API Tutorial" />
+
+       <title>Application</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css" />
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Application</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="app-list">
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="list-installed">Installed</a></li>
+                                       <li><a id="list-running">Running</a></li>
+                                       <li><a id="select-image">Select image</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/js/appsvc.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/js/appsvc.js
new file mode 100755 (executable)
index 0000000..2a68982
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+$(document).delegate("#appsvc", "pageinit", function() {
+       var app;
+
+       $("#appsvc .ui-btn-back").bind("vclick", function() {
+               if (app) {
+                       try {
+                               var appsvcData = [new tizen.ApplicationServiceData("name", [app.name]),
+                                                                       new tizen.ApplicationServiceData("version", [app.version])];
+                               appsvc.replyResult(appsvcData);
+                       } catch (exc) {
+                               alert("replyResult failed: " + exc.message);
+                               appsvc.replyFailure();
+                       }
+               }
+               tizen.application.exit();
+               return false;
+       });
+
+       var appsvc = tizen.application.getAppService();
+
+       if (appsvc) {
+               var data = appsvc.data;
+
+               for (var i = 0; i < data.length; i++) {
+                       if (data[i].key == "id") {
+                               break;
+                       }
+               }
+               if (i == data.length) {
+                       $("#msg").html("Invalid appservice request received");
+                       appsvc.replyFailure();
+               } else {
+                       var appId = data[i].value[0];
+
+                       app = tizen.application.getAppInfo(appId);
+
+                       $("#msg").html("The following app information requested through appservice<br/>["
+                                                       + appId
+                                                       + "]<br/><br/>The following reply data will be sent when you exit this application<br/><br/>[Reply Data]<br/>name: "
+                                                       + app.name
+                                                       + " / version: "
+                                                       + app.version);
+               }
+       } else {
+               $("#msg").html("No Appservice request received");
+       }
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/project/js/main.js
new file mode 100644 (file)
index 0000000..9d404f3
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+var gListenerId;
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               exitOrHide();
+               return false;
+       });
+       $("#list-running").bind("vclick", function() {
+               listRunningApps();
+               return false;
+       });
+       $("#list-installed").bind("vclick", function() {
+               listInstalledApps();
+               return false;
+       });
+       $("#select-image").bind("vclick", function() {
+               selectImage();
+               return false;
+       });
+       $("#app-list").delegate("div", "vclick", function() {
+               var id = $(this).parent().data("id");
+
+               if ($(this).parent().data("app-list-type") == "installed") {
+                       launchApp(id);
+               } else {
+                       killApp(id);
+               }
+               return false;
+       });
+
+       gListenerId = tizen.application.addAppInfoEventListener({
+               oninstalled: function(app) {
+                       alert("Tracking message :<br/>" + app.name + " installed");
+               },
+               onupdated: function(app) {
+                       alert("Tracking message :<br/>" + app.name + " updated");
+               },
+               onuninstalled: function(appid) {
+                       alert("Tracking message :<br/>The app " + appid + " uninstalled");
+               }
+       });
+
+       listInstalledApps();
+});
+
+function exitOrHide() {
+       if (confirm("Exit or hide?<br/><br/>(OK:Exit  Cancel:Hide)") == true) {
+               tizen.application.removeAppInfoEventListener(gListenerId);
+               tizen.application.exit();
+       } else {
+               tizen.application.hide();
+       }
+}
+
+function makeListItem(type, id, name, appId, icon) {
+       return '<li class="ui-li-has-multiline" data-app-list-type="'
+               + type
+               +'" data-id="'
+               + id
+               + '"><img src="'
+               + icon
+               + '" class="ui-li-bigicon">'
+               + name
+               + '<span class="ui-li-text-sub">'
+               + appId
+               + '</span><div data-role="button" data-inline="true">'
+               + (type == "installed" ? "Launch" : "Kill")
+               + '</div></li>';
+}
+
+function onGetAppsInfoSuccess(apps) {
+       var app, str = '<li data-role="list-divider">Installed applications</li>';
+
+       for (var i = 0; i < apps.length; i++) {
+               app = apps[i];
+               if(app.show == true) {
+                       str += makeListItem("installed", app.id, app.name, app.id, app.iconPath);
+               }
+       }
+
+       $("#app-list").html(str).trigger("create").listview("refresh");
+}
+
+function onGetAppsInfoError(err) {
+       alert("getAppsInfo failed : " + err.message);
+}
+
+function listInstalledApps() {
+       try {
+               /* get the list of installed applications */
+               tizen.application.getAppsInfo(onGetAppsInfoSuccess, onGetAppsInfoError);
+       } catch (exc) {
+               alert("getAppsInfo exc:" + exc.message);
+       }
+}
+
+function onGetAppsContextSuccess(contexts) {
+       var app, str = '<li data-role="list-divider">Running applications</li>';
+
+       for (var i = 0; i < contexts.length; i++) {
+               app = tizen.application.getAppInfo(contexts[i].appId);
+               if(app.show == true) {
+                       str += makeListItem("running", contexts[i].id, app.name, app.id, app.iconPath);
+               }
+       }
+
+       $("#app-list").html(str).trigger("create").listview("refresh");
+}
+
+function onGetAppsContextError(err) {
+       alert("getAppsContext exc:" + err.message);
+}
+
+function listRunningApps() {
+       try {
+               tizen.application.getAppsContext(onGetAppsContextSuccess, onGetAppsContextError);
+       } catch (exc) {
+               alert("getAppsContext exc: " + exc.message);
+       }
+}
+
+function launchApp(id) {
+       function onSuccess() {
+               console.log(id + " launched successfully!");
+       }
+
+       function onError(err) {
+               alert("launch failed : " + err.message);
+       }
+
+       try {
+               tizen.application.launch(id, onSuccess, onError);
+       } catch (exc) {
+               alert("launch exc:" + exc.message);
+       }
+}
+
+function killApp(id) {
+       var appName = tizen.application.getAppInfo(tizen.application.getAppContext(id).appId).name;
+
+       function onSuccess() {
+               console.log(appName + " killed successfully!");
+               listRunningApps();
+       }
+
+       function onError(err) {
+               alert("kill failed : " + err.message);
+       }
+
+       if(confirm("Do you really want to kill " + appName +"?") == false) {
+               return;
+       }
+
+       try {
+               tizen.application.kill(id, onSuccess, onError);
+       } catch (exc) {
+               alert("kill exc:" + exc.messagesage);
+       }
+}
+
+function selectImage() {
+       var service = new tizen.ApplicationService(
+                       "http://tizen.org/appcontrol/operation/pick", null, "image/*");
+
+       function onSuccess() {
+               console.log("Appservice launched");
+       }
+
+       function onError() {
+               alert("Appservice launch failed: " + err.message);
+       }
+
+       var serviceReply = {
+               onsuccess : function(reply) {
+                       alert("Selected image path : <br/>" + reply[0].value[0]);
+               },
+               onfail : function() {
+                       alert("Appservice request failed");
+               }
+       };
+
+       try {
+               tizen.application.launchService(service, null, onSuccess, onError, serviceReply);
+       } catch (exc) {
+               alert("launchService exc: " + exc.message);
+       }
+}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..d6c0c1c
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Application</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tutorial-application-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tutorial-application-snapshot.png
new file mode 100644 (file)
index 0000000..697c630
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Application/tutorial-application-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/description.xml
new file mode 100644 (file)
index 0000000..0501fc0
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Appservice</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-appservice-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen application service device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/config.xml
new file mode 100755 (executable)
index 0000000..654c969
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.17" viewmodes="fullscreen" id="http://tizen.org/wid/Appservice">
+       <name>Appservice</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application" required="true"/>
+       <tizen:application id="sampleasvc" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/css/style.css
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/index.html
new file mode 100644 (file)
index 0000000..d148cb4
--- /dev/null
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8" />
+       <meta name="description" content="Application Service API Tutorial" />
+
+       <title>Appservice</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css" />
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Application Service</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="app-list">
+                       </ul>
+               </div>
+       </div>
+</body>
+</html>
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/project/js/main.js
new file mode 100644 (file)
index 0000000..a34d433
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               tizen.application.exit();
+               return false;
+       });
+
+       $("#app-list").delegate("li", "vclick", function() {
+               requestAppservice($(this).data("id"));
+               return false;
+       });
+
+       alert("This application requests a service to the \"Application\" sample application.<br/>It means the \"Application\" sample application should have been installed in this device.<br/>Select an item then the \"Application\" sample application will be launched and reply with requested item's information");
+       listInstalledApps();
+});
+
+function serviceReplySuccessCB(reply) {
+       var msg = "The information from appservice";
+
+       for(var i = 0; i < reply.length; i++) {
+               msg += "<br/>" + reply[i].key + " : " + reply[i].value[0];
+       }
+       alert(msg);
+}
+
+var serviceReply = {
+       onsuccess : serviceReplySuccessCB,
+       onfail : function() {
+               alert("Request failed");
+       }
+};
+
+function requestAppservice(id) {
+       var svcData = [new tizen.ApplicationServiceData("id",[id])]
+       var service = new tizen.ApplicationService(
+                       "http://tizen.org/appcontrol/operation/view", null, null, svcData);
+
+       try {
+               tizen.application.launchService(
+               service,
+               "sampleapp0",
+               function() {
+                       console.log("Service launched");
+               },
+               function(err) {
+                       alert("Service launch failed: " + err.message);
+               },
+               serviceReply);
+       } catch (exc) {
+               alert("launchService exc: " + exc.message);
+       }
+}
+
+function getAppsInfoSuccessCB(apps) {
+       var app, str = '<li data-role="list-divider">Installed applications</li>';
+
+       for (var i = 0; i < apps.length; i++) {
+               app = apps[i];
+               if(app.show == true) {
+                       str += '<li data-id='
+                               + app.id
+                               + '><img src="'
+                               + app.iconPath
+                               + '" class="ui-li-bigicon">'
+                               + app.id
+                               + '</li>';
+               }
+       }
+       $("#app-list").empty().append(str).trigger("create").listview("refresh");
+}
+
+function getAppsInfoErrorCB(err) {
+       alert("getAppsInfo failed : " + err.message);
+}
+
+function listInstalledApps() {
+       try {
+               /* get the list of installed applications */
+               tizen.application.getAppsInfo(getAppsInfoSuccessCB, getAppsInfoErrorCB);
+       } catch (exc) {
+               alert("getAppsInfo exc:" + exc.message);
+       }
+}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..361b01c
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Appservice</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tutorial-appservice-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tutorial-appservice-snapshot.png
new file mode 100644 (file)
index 0000000..0cd5e33
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Appservice/tutorial-appservice-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/bluetoothclientsample-screenshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/bluetoothclientsample-screenshot.png
new file mode 100644 (file)
index 0000000..9641f31
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/bluetoothclientsample-screenshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/description.xml
new file mode 100644 (file)
index 0000000..a8c8017
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Bluetooth Client</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>bluetoothclientsample-screenshot.png</Preview>\r
+  <Description>\r
+    A bluetooth client sample application demonstrating the tizen bluetooth device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/config.xml
new file mode 100644 (file)
index 0000000..34c4cee
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.6" id="http://tizen.org/wid/BluetoothClient" viewmodes="fullscreen">
+       <name>BluetoothClient</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/bluetooth" required="true"/>
+       <tizen:application id="samplebtc0" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/createPackage.sh b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/createPackage.sh
new file mode 100755 (executable)
index 0000000..6bb3848
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+#  wrt-plugins
+#
+# Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+#
+# Contact: Seung Mo Cho <seungm.cho@samsung.com>
+#
+# This library is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation; either version 2.1 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+test_dir=./
+
+cd $test_dir
+rm -f BluetoothClientSample.wgt
+
+# remove vim template files
+rm -f `find . -name ".*.swp"`
+rm -f `find . -name "*~"`
+
+#cp wac2_0Config.xml config.xml
+zip BluetoothClientSample.wgt -r \
+        css \
+        js \
+        config.xml \
+        icon.png \
+        *.html
+
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/css/style.css
new file mode 100644 (file)
index 0000000..25fa51c
--- /dev/null
@@ -0,0 +1,2 @@
+body {
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/index.html
new file mode 100644 (file)
index 0000000..9ff2239
--- /dev/null
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Bluetooth Chat Client Sample"/>
+
+       <title>Bluetooth Client</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css"/>
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Bluetooth Client</h1>
+               </div><!-- /header -->
+
+               <div data-role="content">
+                       <div data-role="collapsible" id="chatLog" data-collapsed="false" data-content-theme="b">
+                                       <h3>Message Log</h3>
+                                       <p id="chatLogContent"></p>
+                       </div>
+                       <div data-role="collapsible" id="btStatus" data-collapsed="false" data-content-theme="b">
+                               <h3>BT state</h3>
+                               <p id="btStatusLog">no operation</p>
+                       </div>
+                       <div data-role="controlgroup" data-type="horizontal">
+                               <input type="text" value="Hi, I'm your client" id="sendText" />
+                               <a href="#" data-role="button" onClick="sendMsg();" " data-inline="true" >send</a>
+                       </div>
+               </div><!-- /content -->
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar"  align="left">
+                       <ul>
+                               <li><a href="#" class="ui-btn-active" onclick="connectToServer();">connect to bluetooth server</a></li>
+                       </ul>
+                       </div>
+               </div><!-- /footer -->
+       </div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/project/js/main.js
new file mode 100644 (file)
index 0000000..4952b1e
--- /dev/null
@@ -0,0 +1,233 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//Initialize function
+var init = function () {
+    // TODO:: Do your initialization job
+       replaceBtState("no operation");
+       serverConnected = false;
+       
+    console.log("init() called");
+    
+       $("#main .ui-btn-back").bind("vclick", function() {
+               disconnectServer();
+       });
+};
+$(document).ready(init);
+
+var serverConnected = false;
+var chatLogTableName = "chatLog";
+var chatServerAddress = "00:02:CD:0A:8D:D5";
+var chatServerName = "BTServer";
+var globalSocket = null;
+var serviceUUID = "5bce9431-6c75-32ab-afe0-2ec108a30860";
+
+var adapter = null;
+
+function replaceBtState(contents)
+{
+       $("p#btStatusLog").html(contents);
+}
+
+function updateChatLog(contents)
+{
+       $("p#chatLogContent").append(contents + "<br />");
+       console.log(contents);
+}
+
+
+function disconnectServer()
+{
+       if (serverConnected == true && globalSocket != null) {
+               try {
+                       globalSocket.close();
+               }
+               catch(e) {
+                       console.log(e.message);
+               }
+       }
+       
+       try {
+               if (adapter != null) 
+               {
+                       adapter.setPowered(false, function() {
+                               tizen.application.exit();
+                       }, function(e) {
+                               console.log(e.message);
+                               tizen.application.exit();
+                       });
+               }
+               else 
+               {
+                       tizen.application.exit();
+               }
+       }
+       catch(exception) {
+               console.log(exception.message);
+               tizen.application.exit();
+       }
+
+}
+
+function connectToServer()
+{
+       console.log("connect to Server" + chatServerName);
+       adapter = tizen.bluetooth.getDefaultAdapter();
+       
+       function onSocketConnected(socket) {
+               var peerDevice = socket.peer;
+               replaceBtState("socket state:" + socket.state + ", protocol:" + socket.protocol + " [" + peerDevice.name + "(" + peerDevice.address + ")]");
+               console.log("Server connented address(" + socket.peer.address + ")" + "connected service uuid:" + socket.uuid);
+               serverConnected = true;
+               
+               socket.onmessage = function() {
+            var data = socket.readData();
+                       var recvmsg = "";
+                       for (var i = 0; i < data.length;i++)
+                       {
+                               recvmsg += String.fromCharCode(data[i]);
+                       }
+                       updateChatLog("server >> " + recvmsg);
+                       
+        };
+        socket.onerror = function(e) {
+               replaceBtState("socket error");
+               serverConnected = false;
+                       socket.close();
+        };
+        socket.onclose = function() {
+               serverConnected = false;
+                       replaceBtState("socket disconnected");
+        };
+        
+               globalSocket = socket; // socket save
+       }
+
+       function onSocketError(e) {
+               replaceBtState("socket error");
+               console.log("socket error");
+               serverConnected = false;
+               socket.close();
+       }
+       function onError(e) {
+               replaceBtState("operation error");
+               console.log("Error");
+               serverConnected = false;
+       }
+
+
+       function getDeviceSuccessCB(device) {
+               if (device != null) {
+                       replaceBtState("get device infomration ok");
+                       console.log("get device and then try to connect" + serviceUUID);
+                       device.connectToServiceByUUID(serviceUUID, onSocketConnected, onSocketError, "RFCOMM");
+               }
+               else {
+                       replaceBtState("get device infomration error");
+                       console.log("get device error");
+               }
+       }
+
+       function bondSuccess(device) {
+               replaceBtState("bond with server ok");
+               console.log("bond success!!");
+               adapter.getDevice(device.address, getDeviceSuccessCB, onError);
+       }
+
+       var discoverDevicesSuccessCallback = {
+                       onstarted : function()
+                       {
+                               replaceBtState("device discovery start");
+                               console.log("device discovery start!");
+                       },
+                       ondevicefound: function (device)
+                       {
+                               var msg = device.name + "("+ device.address + ")";
+
+                               if (device.name == chatServerName)
+                               {
+                                       adapter.stopDiscovery(function() {});
+                                       
+                                       replaceBtState("try to connect");
+                                       if (device.isBonded == true) 
+                                       {
+                                               console.log("try to get device information");
+                                               adapter.getDevice(device.address, getDeviceSuccessCB, onError);
+                                       }
+                                       else 
+                                       {
+                                               console.log("try to bond");
+                                               adapter.createBonding(device.address, bondSuccess, onError);
+                                       }
+                                       
+                               }
+                               else
+                               {
+                                       replaceBtState(msg + "found");
+                               }
+                       },
+                       ondevicedisappeared: function(device) {},
+                       onfinished : function (devices)
+                       {
+                               replaceBtState("discovery finished");
+                               console.log("discovery finished");
+                               console.log(chatServerName + " device not found");
+                               replaceBtState(chatServerName + " device not found");
+                       }
+       };
+
+       function onSuccess()
+       {
+               replaceBtState("bt adpater on ok");
+               console.log("turn on success");
+               discoveryObject = adapter.discoverDevices(discoverDevicesSuccessCallback, onError);
+       }
+
+       console.log("try to turn on");
+       adapter.setPowered(true, onSuccess, onError);
+}
+
+function sendMsg()
+{
+       var inputText=document.getElementById("sendText");
+       var chatLog = "me&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;>> " + inputText.value;
+       var textmsg = inputText.value;
+       var sendtextmsg = new Array();
+
+       for (var i = 0; i < textmsg.length; i++)
+       {
+               sendtextmsg[i] = textmsg.charCodeAt(i);
+       }
+
+       if (globalSocket != null && serverConnected == true)
+       {
+               var length = globalSocket.writeData(sendtextmsg);
+
+               if (length != 0)
+               {
+                       updateChatLog(chatLog);
+                       console.log("writeData");
+               }
+               else
+               {
+                       console.log("writeData fail");
+               }
+       }
+       else
+       {
+               console.log("socket is not set");
+       }
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..d442b84
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Bluetooth Client</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Client/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/bluetoothserversample-screenshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/bluetoothserversample-screenshot.png
new file mode 100644 (file)
index 0000000..86b8dc0
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/bluetoothserversample-screenshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/description.xml
new file mode 100644 (file)
index 0000000..a080727
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Bluetooth Server</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>bluetoothserversample-screenshot.png</Preview>\r
+  <Description>\r
+    A bluetooth server sample application demonstrating the tizen bluetooth device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/config.xml
new file mode 100644 (file)
index 0000000..9ba69cf
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.5" id="http://tizen.org/wid/BluetoothServer" viewmodes="fullscreen">
+       <name>BluetoothServer</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/bluetooth" required="true"/>
+       <tizen:application id="samplebts0" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/createPackage.sh b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/createPackage.sh
new file mode 100755 (executable)
index 0000000..2499f55
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+#  wrt-plugins
+#
+# Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+#
+# Contact: Seung Mo Cho <seungm.cho@samsung.com>
+#
+# This library is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation; either version 2.1 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+test_dir=./
+
+cd $test_dir
+rm -f BluetoothServerSample.wgt
+
+# remove vim template files
+rm -f `find . -name ".*.swp"`
+rm -f `find . -name "*~"`
+
+#cp wac2_0Config.xml config.xml
+zip BluetoothServerSample.wgt -r \
+        css \
+        js \
+        config.xml \
+        icon.png \
+        *.html
+
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/css/style.css
new file mode 100644 (file)
index 0000000..25fa51c
--- /dev/null
@@ -0,0 +1,2 @@
+body {
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/index.html
new file mode 100644 (file)
index 0000000..13f782b
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Bluetooth Chat Server Sample"/>
+
+       <title>Bluetooth Server</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css"/>
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Bluetooth Server</h1>
+               </div><!-- /header -->
+
+               <div data-role="content">
+                       <fieldset class="ui-grid-a">
+                                       <!--
+                                       <div class="ui-block-a">
+                                               <input type="text" data-theme="a" value="bt server" />
+                                       </div>
+                                       -->
+                               <!-- <a href="#" data-role="button" id="disconnectBtn" onClick="disconnectClient();" data-inline="true" data-icon="delete">exit</a> //-->
+                       </fieldset>
+                       <div data-role="collapsible" id="chatLog" data-collapsed="false" data-content-theme="b">
+                               <h3>Message Log</h3>
+                               <p id="chatLogContent"></p>
+                       </div>
+                       <div data-role="collapsible" id="btStatus" data-collapsed="false" data-content-theme="b">
+                               <h3>BT state</h3>
+                               <p id="btStatusLog">no operation</p>
+                       </div>
+                       <div data-rol="controlgroup" data-type="horizontal">
+                               <input type="text" value="Hi, I'm your father" id="sendText" />
+                               <a href="#"  data-role="button" onClick="sendMsg();" data-inline="true">send</a>
+                       </div>
+
+               </div><!-- /content -->
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar" >
+                               <ul>
+                                       <li><a href="#" class="ui-btn-active" onclick="startServer();">start bluetooth server</a></li>
+                               </ul>
+                       </div>
+               </div><!-- /footer -->
+       </div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/project/js/main.js
new file mode 100644 (file)
index 0000000..7fa5d0c
--- /dev/null
@@ -0,0 +1,193 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//Initialize function
+var clientConnected = false;
+var chatLogTableName = "chatLog";
+var chatServerName = "BTServer";
+var globalSocket = null;
+var serviceUUID = "5bce9431-6c75-32ab-afe0-2ec108a30860";
+var adapter = null;
+
+
+var init = function () {
+    // TODO:: Do your initialization job
+       replaceBtState("no operation");
+    console.log("init() called");
+
+       $("#main .ui-btn-back").bind("vclick", function() {
+               disconnectClient();
+       });
+       
+};
+$(document).ready(init);
+
+
+function replaceBtState(contents)
+{
+       $("p#btStatusLog").html(contents);
+}
+
+
+function updateChatLog(contents)
+{
+       $("p#chatLogContent").append(contents + "<br />");
+       console.log(contents);
+}
+
+
+function disconnectClient()
+{
+       if (clientConnected == true && globalSocket != null) {
+               try {
+                       globalSocket.close();
+               }
+               catch(e) {
+                       console.log(e.message);
+               }
+       }
+       
+       try {
+               if (adapter != null) 
+               {
+                       adapter.setPowered(false, function() {
+                               tizen.application.exit();
+                       }, function(e) {
+                               console.log(e.message);
+                               tizen.application.exit();
+                       });
+               }
+               else 
+               {
+                       tizen.application.exit();
+               }
+       }
+       catch(exception) {
+               console.log(exception.message);
+               tizen.application.exit();
+       }
+}
+
+function startServer()
+{
+       adapter = tizen.bluetooth.getDefaultAdapter();
+
+       console.log("startServer Name : " + chatServerName);
+
+       function registerSuccessCallback(handler) {
+               chatServiceHandler = handler;
+               replaceBtState("wait for client...");
+               console.log("chat service register success");
+                       
+                chatServiceHandler.onconnect = function(socket) {
+                       globalSocket = socket; // socket save
+                       var peerDevice = socket.peer;
+                       replaceBtState("socket state:" + socket.state + ", protocol:" + socket.protocol + " [" + peerDevice.name + "(" + peerDevice.address + ")]");
+                       console.log("Server connented address(" + socket.peer.address + ")" + "connected service uuid:" + socket.uuid);
+                       clientConnected = true;
+                       
+                       socket.onmessage = function() {
+                var data = socket.readData();
+                               var recvmsg = "";
+                               for (var i = 0; i < data.length;i++)
+                               {
+                                       recvmsg += String.fromCharCode(data[i]);
+                               }
+                               updateChatLog("client >> " + recvmsg);
+                               
+            };
+            socket.onerror = function(e) {
+               replaceBtState("socket error");
+                               clientConnected = false;
+                               socket.close();
+            };
+            socket.onclose = function() {
+               clientConnected = false;
+                               replaceBtState("socket disconnected");
+            };
+        };
+       };
+       
+       function onError(e) {
+               replaceBtState("operation error");
+               clientConnected = false;
+               disconnectServer();
+       }
+
+       function setVisibleAndRegister() {
+               adapter.setVisible(true, function() {
+                       adapter.registerRFCOMMServiceByUUID(
+                                       serviceUUID, // service uuid
+                                       "My service",
+                                       registerSuccessCallback,
+                                       onError
+                               );
+               });
+       }
+
+       function setNameWithTimer() {
+               console.log("set name");
+               adapter.setName(chatServerName, function() {
+                       console.log("set name ok");
+                       setVisibleAndRegister();
+               }, onError);
+       }
+       
+       function onSuccess()
+       {
+               replaceBtState("bt adpater on ok");
+               console.log("turn on success");
+               // need to wait for completing to set default bluetooth name as device name.
+               setTimeout(setNameWithTimer, 5000);
+       }
+       
+       adapter.setPowered(true, onSuccess, function() {
+               console.log("device is busy");
+               onError();
+       });
+}
+
+function sendMsg()
+{
+       var inputText=document.getElementById("sendText");
+       var chatLog = "me&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;>> " + inputText.value;
+       var textmsg = inputText.value;
+       var sendtextmsg = new Array();
+
+       for (var i = 0; i < textmsg.length; i++)
+       {
+               sendtextmsg[i] = textmsg.charCodeAt(i);
+       }
+
+       if (globalSocket != null && clientConnected == true)
+       {
+               var length = globalSocket.writeData(sendtextmsg);
+
+               if (length != 0)
+               {
+                       updateChatLog(chatLog);
+                       console.log("writeData");
+               }
+               else
+               {
+                       console.log("writeData fail");
+               }
+       }
+       else
+       {
+               console.log("socket is not set");
+       }
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..aa560f1
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Bluetooth Server</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Bluetooth Server/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/description.xml
new file mode 100644 (file)
index 0000000..067d379
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Calendar</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-calendar-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen calendar device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/config.xml
new file mode 100755 (executable)
index 0000000..f7736be
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.17" id="http://tizen.org/wid/Calendar" viewmodes="fullscreen">
+       <name>Calendar</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/calendar" required="true"/>
+       <feature name="http://tizen.org/api/time.read" required="true"/>
+       <tizen:application id="samplecal0" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/css/style.css
new file mode 100755 (executable)
index 0000000..57ec09f
--- /dev/null
@@ -0,0 +1,9 @@
+li>label {
+       color:#646464;
+}
+label.ui-input-text {
+       width:20%;
+}
+#output {
+       word-wrap:break-word;
+}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/index.html
new file mode 100644 (file)
index 0000000..7363aee
--- /dev/null
@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8" />
+       <meta name="description" content="Calendar API Tutorial"/>
+
+       <title>Calendar</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css"/>
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Calendar</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="list">
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="add">Add</a></li>
+                                       <li><a id="tracking">Tracking</a></li>
+                                       <li><a href="#batch">Batch</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="edit">
+               <div data-role="header" data-position="fixed">
+                       <h1 id="edit-title"></h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role=listview>
+                               <li>
+                                       <label for="summary">Summary</label>
+                                       <input type="text" name="summary" id="summary" />
+                               </li>
+                               <li>
+                                       <label for="description">Descript.</label>
+                                       <input type="text" name="description" id="description" />
+                               </li>
+                               <li>
+                                       <label for="location">Location</label>
+                                       <input type="text" name="location" id="location" />
+                               </li>
+                               <li data-role="list-divider">Time</li>
+                               <li>
+                                       <input type="datetime" name="time" id="time" />
+                               </li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="save">Save</a></li>
+                                       <li><a id="icalendar">iCalendar</a></li>
+                                       <li><a id="expand">Expand</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="expanded-recurrence">
+               <div data-role="header" data-position="fixed">
+                       <h1>Recurrence for this month</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="expand-list">
+                       </ul>
+               </div>
+       </div>
+
+       <div data-role="page" id="batch">
+               <div data-role="header" data-position="fixed">
+                       <h1>Batch</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role=listview>
+                               <li>
+                                       <label for="batch-summary">Summary</label>
+                                       <input type="text" name="batch-summary" id="batch-summary"/>
+                               </li>
+                               <li id="batch-add">Add three events</li>
+                               <li id="batch-update">Update last three events</li>
+                               <li id="batch-delete">Delete last three events</li>
+                       </ul>
+               </div>
+       </div>
+
+       <div data-role="page" id="icalendar-output">
+               <div data-role="header" data-position="fixed">
+                       <h1>iCalendar</h1>
+               </div>
+
+               <div data-role="content">
+                       <div id="output"></div>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/project/js/main.js
new file mode 100644 (file)
index 0000000..1f480d8
--- /dev/null
@@ -0,0 +1,472 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+var EDIT_MODE_ADD = 0, EDIT_MODE_UPDATE = 1,
+       gEditMode = EDIT_MODE_ADD,
+       gCalendar,
+       gEventsMap,
+       gUpdateId = 0,
+       gICalendarStr,
+       gListenerId;
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               tizen.application.exit();
+               return false;
+       });
+
+       $("#main").bind("pagebeforeshow", fetchAllEvents);
+
+       $("#list").delegate("input", "change", function() {
+               if ($(this).prop("checked")) {
+                       gCalendar = tizen.calendar.getCalendar("EVENT", $(this).data("id"));
+                       fetchAllEvents();
+               }
+       });
+
+       $("#list").delegate("div", "vclick", function() {
+               if ($(this).parent().data("item-type") != "event") {
+                       return false;
+               }
+               try {
+                       gCalendar.remove(gEventsMap[Number($(this).parent().data("id"))].id);
+               } catch (e) {
+                       alert("Error:" + e.message);
+               }
+               fetchAllEvents();
+               return false;
+       });
+
+       $("#list").delegate("li", "vclick", function() {
+               if ($(this).data("role") == "list-divider" || $(this).data("item-type") != "event") {
+                       return false;
+               }
+               gEditMode = EDIT_MODE_UPDATE;
+               gUpdateId = Number($(this).data("id"));
+               $.mobile.changePage("#edit");
+               return false;
+       });
+
+       $("#add").bind("vclick", function() {
+               showAddPage();
+               return false;
+       });
+
+       $("#tracking").bind("vclick", registerListener);
+
+       tizen.calendar.getCalendars("EVENT", onGetCalendarsSuccess, onError);
+});
+
+$(document).delegate("#batch", "pageinit", function() {
+       $("#batch-add").bind("vclick", function() {
+               add3Events();
+               return false;
+       });
+
+       $("#batch-update").bind("vclick", function() {
+               update3Events();
+               return false;
+       });
+
+       $("#batch-delete").bind("vclick", function() {
+               delete3Events();
+               return false;
+       });
+});
+
+$(document).delegate("#edit", "pageinit", function() {
+       $("#edit").bind("pagebeforeshow", function(event, data) {
+               if (data.prevPage.attr("id") == "icalendar-output") {
+                       return;
+               }
+               setEditPage();
+       });
+
+       $("#save").bind("vclick", function() {
+               var result;
+
+               if (gEditMode == EDIT_MODE_ADD) {
+                       result = addEvent();
+               } else {
+                       result = updateEvent();
+               }
+               if (result == true) {
+                       window.history.back();
+               }
+               return false;
+       });
+
+       $("#icalendar").bind("vclick", function() {
+               convertEvent();
+               return false;
+       });
+
+       $("#expand").bind("vclick", function() {
+               expandEvent();
+               return false;
+       });
+});
+
+$(document).delegate("#icalendar-output", "pageinit", function() {
+       $("#icalendar-output").bind("pagebeforeshow", function() {
+               $("#output").html(gICalendarStr);
+       });
+});
+
+$(document).delegate("#expanded-recurrence", "pageinit", function() {
+       $("#expanded-recurrence").bind("pagebeforeshow", expandEventRecurrenceForThisMonth);
+});
+
+function onError(err) {
+       alert("Error(" + err.code + "): " + err.message);
+}
+
+function fetchAllEvents() {
+       if(gCalendar) {
+               gCalendar.find(onEventFindSuccess, onError);
+       }
+}
+
+function setEditPage() {
+       if (gEditMode == EDIT_MODE_ADD) {
+               $("#summary").attr("value", "");
+               $("#description").attr("value", "");
+               $("#location").attr("value", "");
+               $("#edit-title").html("Add");
+       } else {
+               var evt = gEventsMap[gUpdateId],
+                       d = evt.startDate,
+                       datetime = new Date(d.getFullYear(),d.getMonth(),d.getDate(),d.getHours(),d.getMinutes());
+
+               $("#summary").attr("value", evt.summary);
+               $("#description").attr("value", evt.description);
+               $("#location").attr("value", evt.location);
+               $("#time").datetimepicker("option", "date", datetime);
+               $("#edit-title").html("Detail");
+       }
+}
+
+function showAddPage() {
+       gEditMode = EDIT_MODE_ADD;
+       $.mobile.changePage("#edit");
+       return false;
+}
+
+function onGetCalendarsSuccess(calendars) {
+       var str = '<li data-role="list-divider" data-item-type="calendar">Calendars</li>',
+               len = calendars.length,
+               i;
+
+       for (i = 0; i < len; i++) {
+               str += '<li class="ui-li-has-radio" data-item-type="calendar"><input type="radio" name="calendar-choice" id="calendar-'
+                       + i
+                       + '" data-id="'
+                       + calendars[i].id
+                       + '" value="calendar"/>'
+                       + calendars[i].name
+                       + '</li>';
+       }
+
+       $("#list").html(str).trigger("create").listview("refresh");
+
+       var defaultCalendar = tizen.calendar.getDefaultCalendar("EVENT");
+
+       if (len > 0) {
+               for (i = 0; i < len; i++) {
+                       if (calendars[i].name == defaultCalendar.name) {
+                               break;
+                       }
+               }
+               if(i == len) {
+                       alert("No default calendar found");
+                       i = 0;
+               }
+               gCalendar = calendars[i];
+               $("#calendar-" + i).prop("checked", true);
+               $("#calendar-" + i).checkboxradio("refresh");
+               fetchAllEvents();
+       }
+}
+
+function onEventFindSuccess(events) {
+       var str = '<li data-role="list-divider" data-item-type="event">Events</li>';
+
+       gEventsMap = events;
+
+       for (var i = 0; i < events.length; i++) {
+               str += '<li class="ui-li-has-multiline" data-item-type="event" data-id="'
+                       + i
+                       + '">'
+                       + events[i].summary
+                       + '<span class="ui-li-text-sub">'
+                       + events[i].location
+                       + '</span><div data-role="button" data-inline="true">Delete</div></li>';
+       }
+       $("#list>li[data-item-type=event]").remove();
+       $("#list").append(str).trigger("create").listview("refresh");
+}
+
+function getCalendarStartDate(){
+       var times = $("#time").datetimepicker("value");
+       var splits, d, t;
+
+       splits = times.split('T');
+       d = splits[0].split("-");
+       t = splits[1].split(':');
+
+       return {
+               yy: parseInt(d[0]),
+               mm: parseInt(d[1])-1,
+               dd: parseInt(d[2]),
+               h: parseInt(t[0]),
+               m: parseInt(t[1])
+       };
+}
+
+function isEventChanged(newEvent){
+       var evt = gCalendar.get(gEventsMap[gUpdateId].id);
+
+       if (evt.summary == newEvent.summary &&
+               evt.description == newEvent.description &&
+               evt.location == newEvent.location &&
+               evt.startDate.equalsTo(newEvent.startDate)) {
+               return false;
+       } else {
+               return true;
+       }
+}
+
+function addEvent() {
+       if ($("#summary").attr("value") == "") {
+               alert("Input Summary");
+               return false;
+       }
+
+       var d = getCalendarStartDate();
+
+       try {
+               gCalendar.add(new tizen.CalendarEvent({
+                       description : $("#description").attr("value"),
+                       summary : $("#summary").attr("value"),
+                       startDate : new tizen.TZDate(d.yy, d.mm, d.dd, d.h, d.m),
+                       duration : new tizen.TimeDuration(1, "HOURS"),
+                       location : $("#location").attr("value")
+               }));
+       } catch (e) {
+               alert("Error:" + e.message);
+               return false;
+       }
+       return true;
+}
+
+function updateEvent() {
+       if ($("#summary").attr("value") == "") {
+               alert("Failed! Input Summary");
+               return false;
+       }
+
+       var d = getCalendarStartDate();
+
+       gEventsMap[gUpdateId].summary = $("#summary").attr("value");
+       gEventsMap[gUpdateId].description = $("#description").attr("value");
+       gEventsMap[gUpdateId].location = $("#location").attr("value");
+       gEventsMap[gUpdateId].startDate = new tizen.TZDate(d.yy, d.mm, d.dd, d.h, d.m);
+
+       if (isEventChanged(gEventsMap[gUpdateId])){
+               try {
+                       gCalendar.update(gEventsMap[gUpdateId]);
+               } catch (e) {
+                       alert("Error:" + e.message);
+                       return false;
+               }
+       }
+       return true;
+}
+
+function convertEvent() {
+       var d = getCalendarStartDate();
+
+       try {
+               var evt = new tizen.CalendarEvent({
+                       description : $("#description").attr("value"),
+                       summary : $("#summary").attr("value"),
+                       startDate : new tizen.TZDate(d.yy, d.mm, d.dd, d.h, d.m),
+                       duration : new tizen.TimeDuration(1, "HOURS"),
+                       location : $("#location").attr("value")
+               });
+               gICalendarStr = evt.convertToString("ICALENDAR_20");
+               $.mobile.changePage("#icalendar-output");
+       } catch (e) {
+               alert("Error: " + e.message);
+       }
+}
+
+function expandEvent() {
+       if (gEditMode != EDIT_MODE_UPDATE) {
+               alert("This is only for saved events<br/>Save first then try again")
+               return;
+       }
+
+       var d = getCalendarStartDate(),
+               evt = gEventsMap[gUpdateId];
+
+       evt.summary = $("#summary").attr("value");
+       evt.description = $("#description").attr("value");
+       evt.location = $("#location").attr("value");
+       evt.startDate = new tizen.TZDate(d.yy, d.mm, d.dd, d.h, d.m);
+       evt.recurrenceRule = new tizen.CalendarRecurrenceRule("DAILY", {
+               occurrenceCount : 7
+       });
+
+       try {
+               gCalendar.update(evt);
+       } catch (e) {
+               alert("Error: " + e.message);
+       }
+
+       $.mobile.changePage("#expanded-recurrence");
+}
+
+function onExpandRecurrenceSuccess(events) {
+       var str = '<li>Recurring events expanded for this<br/>month with freq. DAILY, count 7</li>';
+
+       for (var i = 0; i < events.length; i++) {
+               str += '<li class="ui-li-has-multiline">'
+                       + events[i].summary
+                       + '<span class="ui-li-text-sub">'
+                       + events[i].startDate.toLocaleString()
+                       + '</span></li>';
+       }
+
+       $("#expand-list").html(str).trigger("create").listview("refresh");
+}
+
+function expandEventRecurrenceForThisMonth() {
+       var d = new Date(),
+               startDate = new tizen.TZDate(d.getFullYear(), d.getMonth(), 1),
+               endDate = new tizen.TZDate(d.getFullYear(), d.getMonth(), 1);
+
+       endDate.setMonth(endDate.getMonth()+1);
+       endDate.setMilliseconds(-1);
+
+       gEventsMap[gUpdateId].expandRecurrence(startDate, endDate, onExpandRecurrenceSuccess, onError);
+}
+
+function registerListener() {
+       var listener = {
+               onitemsadded : function(items) {
+                       alert("Tracking message :<br/>" + items.length + " event(s) added");
+               },
+               onitemsupdated : function(items) {
+                       alert("Tracking message :<br/>" + items.length + " event(s) updated");
+               },
+               onitemsremoved : function(items) {
+                       alert("Tracking message :<br/>" + items.length + " event(s) deleted");
+               }
+       };
+
+       try {
+               gListenerId = gCalendar.addChangeListener(listener, onError);
+               $("#tracking").unbind("vclick", registerListener);
+               $("#tracking").bind("vclick", unregisterListener);
+               alert("Tracking started");
+       } catch (error) {
+               alert("error: " + error.message);
+       }
+}
+
+function unregisterListener() {
+       gCalendar.removeChangeListener(gListenerId);
+       $("#tracking").unbind("vclick", unregisterListener);
+       $("#tracking").bind("vclick", registerListener);
+       alert("Tracking stopped");
+}
+
+function onAddBatchSuccess(events) {
+       alert("Added successfully");
+}
+
+function add3Events() {
+       if ($("#batch-summary").attr("value") == "") {
+               alert("Input Summary");
+               return;
+       }
+
+       var evtArray = [];
+
+       try {
+               evtArray[0] = new tizen.CalendarEvent({
+                       summary : $("#batch-summary").attr("value"),
+                       startDate : tizen.time.getCurrentDateTime(),
+                       duration : new tizen.TimeDuration(1, "HOURS"),
+               });
+
+               /* clone 1st event to make 2nd, 3rd events. */
+               evtArray[1] = evtArray[0].clone();
+               evtArray[1].summary += " copy 1";
+               evtArray[2] = evtArray[0].clone();
+               evtArray[2].summary += " copy 2";
+
+               gCalendar.addBatch(evtArray, onAddBatchSuccess, onError);
+       } catch (e) {
+               alert("Error: " + e.message);
+       }
+}
+
+function onUpdateBatchSuccess() {
+       alert("Updated successfully");
+}
+
+function onUpdate3EventsFindSuccess(events) {
+       var evtArray = [];
+
+       for (var i = events.length-1, j = 0; i >= 0 && j < 3; i--, j++) {
+               events[i].summary += " updated";
+               evtArray.push(events[i]);
+       }
+
+       try {
+               gCalendar.updateBatch(evtArray, onUpdateBatchSuccess, onError);
+       } catch (e) {
+               alert("Error: " + e.message);
+       }
+}
+
+function update3Events() {
+       gCalendar.find(onUpdate3EventsFindSuccess, onError);
+}
+
+function onRemoveBatchSuccess() {
+       alert("Deleted successfully");
+}
+
+function onDelete3EventsFindSuccess(events) {
+       var evtIdArray = [];
+
+       for (var i = events.length-1, j = 0; i >= 0 && j < 3; i--, j++) {
+               evtIdArray.push(events[i].id);
+       }
+
+       try {
+               gCalendar.removeBatch(evtIdArray, onRemoveBatchSuccess, onError);
+       } catch (e) {
+               alert("Error: " + e.message);
+       }
+}
+
+function delete3Events() {
+       gCalendar.find(onDelete3EventsFindSuccess, onError);
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..fa87c8b
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Calendar</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tutorial-calendar-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tutorial-calendar-snapshot.png
new file mode 100644 (file)
index 0000000..c1fa095
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Calendar/tutorial-calendar-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/description.xml
new file mode 100644 (file)
index 0000000..2131814
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Call</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-call-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen call device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/config.xml
new file mode 100755 (executable)
index 0000000..54acc80
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.13" id="http://tizen.org/wid/Call" viewmodes="fullscreen">
+       <name>Call</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/call" required="true"/>
+       <tizen:application id="samplecall" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/css/style.css
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/index.html
new file mode 100644 (file)
index 0000000..aee8fc8
--- /dev/null
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Call API Tutorial"/>
+
+       <title>Call</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css"/>
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Call history</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="call-list">
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="delete-all">Delete all</a></li>
+                                       <li><a id="delete-3">Del last 3</a></li>
+                                       <li><a id="tracking">Tracking</a></li>
+                                       <li><a id="in-call">In call</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/project/js/main.js
new file mode 100644 (file)
index 0000000..61103f6
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+var gCallHistory, gListenerId = null;
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               tizen.application.exit();
+               return false;
+       });
+
+       $("#call-list").delegate("div", "vclick", function() {
+               deleteCall(gCallHistory[Number($(this).parent().data("id"))]);
+               return false;
+       });
+
+       $("#delete-all").bind("vclick", function() {
+               deleteAllCalls();
+               return false;
+       });
+
+       $("#delete-3").bind("vclick", function() {
+               deleteLast3Calls();
+               return false;
+       });
+
+       $("#tracking").bind("vclick", registerListener);
+
+       $("#in-call").bind("vclick", function() {
+               isInCall();
+               return false;
+       });
+
+       showCallHistory();
+});
+
+function onError(e) {
+       alert("Error: " + e.message);
+}
+
+function isInCall() {
+       try {
+               var calling = tizen.call.isCallInProgress();
+               if (calling) {
+                       alert("Call in progress");
+               } else {
+                       alert("No call in progress");
+               }
+       } catch (err) {
+               onError(err);
+       }
+}
+
+function deleteAllCalls() {
+       function onSuccess() {
+               showCallHistory();
+       }
+
+       try {
+               tizen.call.history.removeAll(onSuccess, onError);
+       } catch (err) {
+               onError(err);
+       }
+}
+
+function deleteLast3Calls() {
+       function onSuccess() {
+               showCallHistory();
+       }
+
+       var calls = [];
+
+       for (var i = gCallHistory.length - 1, j = 0; i >= 0 && j < 3; i--, j++) {
+               calls.push(gCallHistory[i]);
+       }
+
+       if (calls.length > 0) {
+               try {
+                       tizen.call.history.removeBatch(calls, onSuccess, onError);
+               } catch (err) {
+                       onError(err);
+               }
+       }
+}
+
+function onCallHistoryFindSuccess(results) {
+       gCallHistory = results;
+       var str = "";
+
+       if (results.length > 0) {
+               for (var i = 0; i < results.length; i++) {
+                       str += '<li class="ui-li-has-multiline" data-id="'
+                                       + i
+                                       + '">'
+                                       + results[i].remoteParties[0].remoteParty
+                                       + '<span class="ui-li-text-sub">'
+                                       + results[i].direction
+                                       + '</span><div data-role="button" data-inline="true">Delete</div></li>';
+               }
+       }
+       $("#call-list").html(str).trigger("create").listview("refresh");
+}
+
+function onCallHistoryFindError(error) {
+       alert("Error: Call history query failed: " + error.message);
+}
+
+function showCallHistory() {
+       var filter = new tizen.AttributeFilter("callType", "EXACTLY", "tizen.tel"),
+               sortMode = new tizen.SortMode("startTime", "DESC");
+
+       try {
+               tizen.call.history.find(onCallHistoryFindSuccess, onCallHistoryFindError, filter, sortMode);
+       } catch (err) {
+               alert("Error: Find failed: " + err.code + ": " + err.message);
+       }
+}
+
+function deleteCall(record) {
+       try {
+               tizen.call.history.remove(record);
+       } catch (err) {
+               alert("Find failed: " + err.code + ": " + err.message);
+       }
+       showCallHistory();
+}
+
+function registerListener() {
+       var listener = {
+               onadded : function(items) {
+                       alert("Tracking message :<br/>" + items.length + " new item(s) added");
+                       showCallHistory();
+               },
+               onchanged : function(items) {
+                       alert("Tracking message :<br/>" + items.length + " item(s) changed");
+                       showCallHistory();
+               }
+       };
+
+       try {
+               gListenerId = tizen.call.history.addListener(listener);
+               alert("Call history change tracking started");
+               $("#tracking").unbind("vclick");
+               $("#tracking").bind("vclick", unregisterListener);
+       } catch (err) {
+               onError(err);
+       }
+}
+
+function unregisterListener() {
+       try {
+               tizen.call.history.removeListener(gListenerId);
+               alert("Call history change tracking stopped");
+               $("#tracking").unbind("vclick");
+               $("#tracking").bind("vclick", registerListener);
+       } catch (err) {
+               onError(err);
+       }
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..2cc5745
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Call</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tutorial-call-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tutorial-call-snapshot.png
new file mode 100644 (file)
index 0000000..e3c1045
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Call/tutorial-call-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/description.xml
new file mode 100644 (file)
index 0000000..c7c2839
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Contact</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-contact-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen contact device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/config.xml
new file mode 100755 (executable)
index 0000000..2d4d6f0
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.17" viewmodes="fullscreen" id="http://tizen.org/wid/Contact">
+       <name>Contact</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/contact" required="true"/>
+       <tizen:application id="samplecont" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/css/style.css
new file mode 100755 (executable)
index 0000000..eaed539
--- /dev/null
@@ -0,0 +1,9 @@
+li>label {
+       color: #646464;
+}
+label.ui-input-text {
+       width:20%;
+}
+#output {
+       word-wrap:break-word;
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/index.html
new file mode 100644 (file)
index 0000000..37deb8f
--- /dev/null
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Contact API Tutorial"/>
+
+       <title>Contact</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css" />
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Contact</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="list">
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="add">Add</a></li>
+                                       <li><a id="tracking">Tracking</a></li>
+                                       <li><a href="#batch">Batch</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="edit">
+               <div data-role="header" data-position="fixed">
+                       <h1 id="edit-title"></h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li>
+                                       <label for="first-name-input">First name</label>
+                                       <input type="text" id="first-name-input"></input>
+                               </li>
+                               <li>
+                                       <label for="last-name-input">Last name</label>
+                                       <input type="text" id="last-name-input"></input>
+                               </li>
+                               <li>
+                                       <label for="nickname-input">Nickname</label>
+                                       <input type="text" id="nickname-input"></input>
+                               </li>
+                               <li>
+                                       <label for="email-input">Email</label>
+                                       <input type="email"     id="email-input"></input>
+                               </li>
+                               <li>
+                                       <label for="phone-number-input">Phone</label>
+                                       <input type="tel" id="phone-number-input"></input>
+                               </li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="save">Save</a></li>
+                                       <li><a id="vcard">vCard</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="batch">
+               <div data-role="header" data-position="fixed">
+                       <h1>Batch</h1>
+               </div>
+               <div data-role="content">
+                       <ul data-role=listview>
+                               <li><label for="name">Name</label> <input type="text"
+                                       name="name" id="batch-contact-name" value="" /></li>
+                               <li id="batch-add">Add three contacts</li>
+                               <li id="batch-update">Update last three contacts</li>
+                               <li id="batch-delete">Delete last three contacts</li>
+                       </ul>
+               </div>
+       </div>
+
+       <div data-role="page" id="vcard-output">
+               <div data-role="header" data-position="fixed">
+                       <h1>vCard</h1>
+               </div>
+
+               <div data-role="content">
+                       <div id="output"></div>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/project/js/main.js
new file mode 100644 (file)
index 0000000..98ce86c
--- /dev/null
@@ -0,0 +1,421 @@
+/*\r
+ *      Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ *      Licensed under the Flora License, Version 1.0 (the "License");\r
+ *      you may not use this file except in compliance with the License.\r
+ *      You may obtain a copy of the License at\r
+ *\r
+ *              http://www.tizenopensource.org/license\r
+ *\r
+ *      Unless required by applicable law or agreed to in writing, software\r
+ *      distributed under the License is distributed on an "AS IS" BASIS,\r
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ *      See the License for the specific language governing permissions and\r
+ *      limitations under the License.\r
+ */\r
+\r
+var EDIT_MODE_ADD = 0, EDIT_MODE_UPDATE = 1,\r
+       gEditMode = EDIT_MODE_ADD,\r
+       gAddressbook,\r
+       gUpdateId = 0,\r
+       gVCardStr,\r
+       gListenerId;\r
+\r
+$(document).delegate("#main", "pageinit", function() {\r
+       $("#main .ui-btn-back").bind("vclick", function() {\r
+               tizen.application.exit();\r
+               return false;\r
+       });\r
+\r
+       $("#main").bind("pagebeforeshow", fetchAllContacts);\r
+\r
+       $("#list").delegate("input", "change", function() {\r
+               if ($(this).prop("checked")) {\r
+                       gAddressbook = tizen.contact.getAddressBook($(this).data("id"));\r
+               }\r
+       });\r
+\r
+       $("#list").delegate("li", "vclick", function() {\r
+               if ($(this).data("role") == "list-divider" || $(this).data("item-type") != "contact") {\r
+                       return false;\r
+               }\r
+               gEditMode = EDIT_MODE_UPDATE;\r
+               gUpdateId = $(this).data("id");\r
+               $.mobile.changePage("#edit");\r
+               return false;\r
+       });\r
+\r
+       $("#list").delegate("div", "vclick", function() {\r
+               if ($(this).parent().data("item-type") != "contact") {\r
+                       return false;\r
+               }\r
+               try {\r
+                       gAddressbook.remove($(this).parent().data("id"));\r
+               } catch (e) {\r
+                       alert("Error: " + e.message);\r
+               }\r
+               fetchAllContacts();\r
+               return false;\r
+       });\r
+\r
+       $("#add").bind("vclick", function() {\r
+               showAddPage();\r
+               return false;\r
+       });\r
+\r
+       $("#tracking").bind("vclick", registerListener);\r
+\r
+       tizen.contact.getAddressBooks(onGetAddressBooksSuccess, onError);\r
+});\r
+\r
+$(document).delegate("#batch", "pageinit", function() {\r
+       $("#batch-add").bind("vclick", function() {\r
+               add3Contacts();\r
+               return false;\r
+       });\r
+\r
+       $("#batch-update").bind("vclick", function() {\r
+               update3Contacts();\r
+               return false;\r
+       });\r
+\r
+       $("#batch-delete").bind("vclick", function() {\r
+               delete3Contacts();\r
+               return false;\r
+       });\r
+});\r
+\r
+$(document).delegate("#edit", "pageinit", function() {\r
+       $("#edit").bind("pagebeforeshow", function(event, data) {\r
+               if (data.prevPage.attr("id") == "vcard-output") {\r
+                       return;\r
+               }\r
+               setEditPage();\r
+       });\r
+\r
+       $("#save").bind("vclick", function() {\r
+               var result;\r
+\r
+               if (gEditMode == EDIT_MODE_ADD) {\r
+                       result = addContact();\r
+               } else {\r
+                       result = updateContact();\r
+               }\r
+               if (result == true) {\r
+                       window.history.back();\r
+               }\r
+               return false;\r
+       });\r
+\r
+       $("#vcard").bind("vclick", function() {\r
+               convertContact();\r
+               return false;\r
+       });\r
+});\r
+\r
+$(document).delegate("#vcard-output", "pageinit", function() {\r
+       $("#vcard-output").bind("pagebeforeshow", function() {\r
+               $("#output").html(gVCardStr);\r
+       });\r
+});\r
+\r
+function onError(err) {\r
+       alert("Error(" + err.code + "): " + err.message);\r
+}\r
+\r
+function fetchAllContacts() {\r
+       if(gAddressbook) {\r
+               gAddressbook.find(onContactFindSuccess, onError);\r
+       }\r
+}\r
+\r
+function getUserInput() {\r
+       var input;\r
+\r
+       if ($("#first-name-input").attr("value") == "") {\r
+               alert("Input First Name");\r
+               input = null;\r
+       } else {\r
+               input = {\r
+                       firstName: $("#first-name-input").attr("value"),\r
+                       lastName: $("#last-name-input").attr("value"),\r
+                       nickname: $("#nickname-input").attr("value"),\r
+                       email: $("#email-input").attr("value"),\r
+                       phone: $("#phone-number-input").attr("value")\r
+               };\r
+       }\r
+       return input;\r
+}\r
+\r
+function initUserInput(firstName, lastName, nickname, email, phone) {\r
+       $("#first-name-input").attr("value", firstName ? firstName : "");\r
+       $("#last-name-input").attr("value", lastName ? lastName : "");\r
+       $("#nickname-input").attr("value", nickname ? nickname : "");\r
+       $("#email-input").attr("value", email ? email.email : "");\r
+       $("#phone-number-input").attr("value", phone ? phone.number : "");\r
+}\r
+\r
+function setEditPage() {\r
+       if (gEditMode == EDIT_MODE_ADD) {\r
+               initUserInput();\r
+               $("#edit-title").html("Add");\r
+       } else {\r
+               var contact = gAddressbook.get(gUpdateId);\r
+\r
+               initUserInput(contact.name.firstName, contact.name.lastName,\r
+                       contact.name.nicknames[0], contact.emails[0], contact.phoneNumbers[0]);\r
+               $("#edit-title").html("Detail");\r
+       }\r
+}\r
+\r
+function showAddPage() {\r
+       gEditMode = EDIT_MODE_ADD;\r
+       $.mobile.changePage("#edit");\r
+}\r
+\r
+function onGetAddressBooksSuccess(addressbooks) {\r
+       var str = '<li data-role="list-divider" data-item-type="addressbook">Addressbooks</li>',\r
+               len = addressbooks.length,\r
+               i;\r
+\r
+       for (i = 0; i < len; i++) {\r
+               str += '<li class="ui-li-has-radio" data-item-type="addressbook"><input type="radio" name="addressbook-choice" id="addressbook-'\r
+                       + i\r
+                       + '" data-id="'\r
+                       + addressbooks[i].id\r
+                       + '" value="addressbook"/>'\r
+                       + addressbooks[i].name\r
+                       + '</li>';\r
+       }\r
+\r
+       $("#list").html(str).trigger("create").listview("refresh");\r
+\r
+       if (len > 0) {\r
+               var defaultAddressbook = tizen.contact.getDefaultAddressBook();\r
+\r
+               for (i = 0; i < len; i++) {\r
+                       if (addressbooks[i].name == defaultAddressbook.name) {\r
+                               break;\r
+                       }\r
+               }\r
+               if(i == len) {\r
+                       alert("No default addressbook found");\r
+                       i = 0;\r
+               }\r
+               gAddressbook = addressbooks[i];\r
+               $("#addressbook-" + i).prop("checked", true);\r
+               $("#addressbook-" + i).checkboxradio("refresh");\r
+               fetchAllContacts();\r
+       }\r
+}\r
+\r
+function onContactFindSuccess(contacts) {\r
+       var value, str = '<li data-role="list-divider" data-item-type="contact">Contacts</li>';\r
+\r
+       for (var i = 0; i < contacts.length; i++) {\r
+               str += '<li class="ui-li-has-multiline" data-item-type="contact" data-id="'\r
+                       + contacts[i].id\r
+                       + '">'\r
+                       + ((contacts[i].name == null) ? "" : (value = contacts[i].name.firstName) ? value : "")\r
+                       + ' '\r
+                       + ((contacts[i].name == null) ? "" : (value = contacts[i].name.lastName) ? value : "")\r
+                       + '<span class="ui-li-text-sub">'\r
+                       + ((value = contacts[i].phoneNumbers[0]) ? value.number : "")\r
+                       + '</span><div data-role="button" data-inline="true">Delete</div></li>';\r
+       }\r
+\r
+       $("#list>li[data-item-type=contact]").remove();\r
+       $("#list").append(str).trigger("create").listview("refresh");\r
+}\r
+\r
+function addContact() {\r
+       var input = getUserInput();\r
+\r
+       if (input == null) {\r
+               return false;\r
+       }\r
+       try {\r
+               gAddressbook.add(new tizen.Contact({\r
+                       name : new tizen.ContactName({\r
+                               firstName : input.firstName,\r
+                               lastName : input.lastName,\r
+                               nicknames : [input.nickname]\r
+                       }),\r
+                       emails : [new tizen.ContactEmailAddress(input.email)],\r
+                       phoneNumbers : [new tizen.ContactPhoneNumber(input.phone)]\r
+               }));\r
+       } catch (e) {\r
+               alert("Error: " + e.message);\r
+               return false;\r
+       }\r
+       return true;\r
+}\r
+\r
+function updateContact() {\r
+       var contact, input = getUserInput();\r
+\r
+       if (input == null) {\r
+               return false;\r
+       }\r
+\r
+       contact = gAddressbook.get(gUpdateId);\r
+\r
+       contact.name.firstName = input.firstName;\r
+       contact.name.lastName = input.lastName;\r
+       contact.name.nicknames[0] = input.nickname;\r
+       contact.emails[0] = new tizen.ContactEmailAddress(input.email);\r
+       contact.phoneNumbers[0] = new tizen.ContactPhoneNumber(input.phone);\r
+\r
+       try {\r
+               gAddressbook.update(contact);\r
+       } catch (e) {\r
+               alert("Error: " + e.message);\r
+               return false;\r
+       }\r
+       return true;\r
+}\r
+\r
+function convertContact() {\r
+       var contact, input = getUserInput();\r
+\r
+       if (input == null) {\r
+               return;\r
+       }\r
+\r
+       contact = new tizen.Contact();\r
+\r
+       if (input.firstName && input.firstName != "") {\r
+               if (contact.name == null) {\r
+                       contact.name = new tizen.ContactName();\r
+               }\r
+               contact.name.firstName = input.firstName;\r
+       }\r
+       if (input.lastName && input.lastName != "") {\r
+               if (contact.name == null) {\r
+                       contact.name = new tizen.ContactName();\r
+               }\r
+               contact.name.lastName = input.lastName;\r
+       }\r
+       if (input.nickname && input.nickname != "") {\r
+               if (contact.name == null) {\r
+                       contact.name = new tizen.ContactName();\r
+               }\r
+               contact.name.nicknames = [input.nickname];\r
+       }\r
+       if (input.email && input.email != "") {\r
+               contact.emails = [new tizen.ContactEmailAddress(input.email)];\r
+       }\r
+       if (input.phone && input.phone != "") {\r
+               contact.phoneNumbers = [new tizen.ContactPhoneNumber(input.phone)];\r
+       }\r
+       gVCardStr = contact.convertToString("VCARD_30");\r
+       $.mobile.changePage("#vcard-output");\r
+}\r
+\r
+function registerListener() {\r
+       var listener = {\r
+               oncontactsadded : function(contacts) {\r
+                       alert("Tracking message :<br/>" + contacts.length + " contact(s) added");\r
+               },\r
+               oncontactsupdated : function(contacts) {\r
+                       alert("Tracking message :<br/>" + contacts.length + " contact(s) updated");\r
+               },\r
+               oncontactsremoved : function(contacts) {\r
+                       alert("Tracking message :<br/>" + contacts.length + " contact(s) deleted");\r
+               }\r
+       };\r
+\r
+       try {\r
+               gListenerId = gAddressbook.addChangeListener(listener, onError);\r
+               $("#tracking").unbind("vclick", registerListener);\r
+               $("#tracking").bind("vclick", unregisterListener);\r
+               alert("Tracking started");\r
+       } catch (e) {\r
+               alert("Error: " + e.message);\r
+       }\r
+}\r
+\r
+function unregisterListener() {\r
+       gAddressbook.removeChangeListener(gListenerId);\r
+       $("#tracking").unbind("vclick", unregisterListener);\r
+       $("#tracking").bind("vclick", registerListener);\r
+       alert("Tracking stopped");\r
+}\r
+\r
+function onAddBatchSuccess(contacts) {\r
+       alert("Added successfully");\r
+}\r
+\r
+function add3Contacts() {\r
+       if ($("#batch-contact-name").attr("value") == "") {\r
+               alert("Input Name");\r
+               return;\r
+       }\r
+\r
+       var contactArray = [];\r
+\r
+       try {\r
+               contactArray[0] = new tizen.Contact({\r
+                       name : new tizen.ContactName({firstName : $("#batch-contact-name").attr("value")})\r
+               });\r
+\r
+               contactArray[1] = contactArray[0].clone();\r
+               contactArray[1].name.firstName += " copy 1";\r
+               contactArray[2] = contactArray[0].clone();\r
+               contactArray[2].name.firstName += " copy 2";\r
+\r
+               gAddressbook.addBatch(contactArray, onAddBatchSuccess, onError);\r
+       } catch (e) {\r
+               alert("Error: " + e.message);\r
+       }\r
+}\r
+\r
+function onUpdateBatchSuccess() {\r
+       alert("Updated successfully");\r
+}\r
+\r
+function onUpdate3ContactsFindSuccess(contacts) {\r
+       var firstName, contactArray = [];\r
+\r
+       for (var i = contacts.length-1, j = 0; i >= 0 && j < 3; i--, j++) {\r
+               if (contacts[i].name == null) {\r
+                       contacts[i].name = new tizen.ContactName({firstName : "updated"});\r
+               } else {\r
+                       firstName = contacts[i].name.firstName;\r
+                       contacts[i].name.firstName = firstName ? firstName + " updated" : "updated";\r
+               }\r
+               contactArray.push(contacts[i]);\r
+       }\r
+\r
+       try {\r
+               gAddressbook.updateBatch(contactArray, onUpdateBatchSuccess, onError);\r
+       } catch (e) {\r
+               alert("Error: " + e.message);\r
+       }\r
+}\r
+\r
+function update3Contacts() {\r
+       gAddressbook.find(onUpdate3ContactsFindSuccess);\r
+}\r
+\r
+function onRemoveBatchSuccess() {\r
+       alert("Deleted successfully");\r
+}\r
+\r
+function onDelete3ContactsFindSuccess(contacts) {\r
+       var contactIdArray = [];\r
+\r
+       for (var i = contacts.length-1, j = 0; i >= 0 && j < 3; i--, j++) {\r
+               contactIdArray.push(contacts[i].id);\r
+       }\r
+\r
+       try {\r
+               gAddressbook.removeBatch(contactIdArray, onRemoveBatchSuccess, onError);\r
+       } catch (e) {\r
+               alert("Error: " + e.message);\r
+       }\r
+}\r
+\r
+function delete3Contacts() {\r
+       gAddressbook.find(onDelete3ContactsFindSuccess);\r
+}\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..fecd4f9
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Contact</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tutorial-contact-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tutorial-contact-snapshot.png
new file mode 100644 (file)
index 0000000..6948788
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Contact/tutorial-contact-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/description.xml
new file mode 100644 (file)
index 0000000..7643b66
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Filesystem</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-filesystem-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen filesystem device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/config.xml
new file mode 100755 (executable)
index 0000000..eed9cf0
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.17" id="http://tizen.org/wid/Filesystem" viewmodes="fullscreen">
+       <name>Filesystem</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/filesystem" required="true"/>
+       <tizen:application id="samplefs00" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/css/style.css
new file mode 100755 (executable)
index 0000000..6b24a1a
--- /dev/null
@@ -0,0 +1,10 @@
+li>label {
+       color:#646464;
+}
+label.ui-input-text {
+       width:20%;
+}
+#file-op ul[data-role=listview] li {
+       word-wrap:break-word;
+       white-space:normal;
+}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/index.html
new file mode 100644 (file)
index 0000000..cbee570
--- /dev/null
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Filesystem API Tutorial"/>
+
+       <title>Filesystem</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css" />
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Filesystem</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="file-list"></ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="file-copy">Copy</a></li>
+                                       <li><a id="file-move">Move</a></li>
+                                       <li><a href="#file-op">File Op</a></li>
+                                       <li><a href="#storage">Storage</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="file-detail">
+               <div data-role="header" data-position="fixed">
+                       <h1>Details</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role=listview>
+                               <li class="ui-li-has-multiline">
+                                       URI
+                                       <span class="ui-li-text-sub" id="uri"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Size
+                                       <span class="ui-li-text-sub" id="size"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Created
+                                       <span class="ui-li-text-sub" id="created"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Is a file
+                                       <span class="ui-li-text-sub" id="is-file"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Is a directory
+                                       <span class="ui-li-text-sub" id="is-dir"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Read only
+                                       <span class="ui-li-text-sub" id="read-only"></span>
+                               </li>
+                       </ul>
+               </div>
+       </div>
+
+       <div data-role="page" id="file-op">
+               <div data-role="header" data-position="fixed">
+                       <h1>File operations</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role=listview>
+                               <li>
+                                       <label for="file-name">File name</label>
+                                       <input type="text" name="file-name" id="file-name" value="test.txt" />
+                               </li>
+                               <li>
+                                       <label for="text">Input text</label>
+                                       <input type="text" name="text" id="text" value="" />
+                               </li>
+                               <li>
+                                       <label for="read-position">Read<br/>position</label>
+                                       <input type="number" name="read-position" id="read-position" value="0"/>
+                               </li>
+                               <li data-role="list-divider">Choose a write file method</li>
+                               <li class="ui-li-has-radio">
+                                       <input type="radio" name="write-choice" id="write-choice-write" value="write" checked="checked"/>
+                                       write
+                               </li>
+                               <li class="ui-li-has-radio">
+                                       <input type="radio" name="write-choice" id="write-choice-writeBytes" value="writeBytes"/>
+                                       writeBytes
+                               </li>
+                               <li class="ui-li-has-radio">
+                                       <input type="radio" name="write-choice" id="write-choice-writeBase64" value="writeBase64"/>
+                                       writeBase64
+                               </li>
+                               <li data-role="list-divider">URI</li>
+                               <li id="file-op-uri">
+                               </li>
+                               <li data-role="list-divider">Output Text</li>
+                               <li id="output-text">
+                               </li>
+                               <li data-role="list-divider">Output (read)</li>
+                               <li id="output-read">
+                               </li>
+                               <li data-role="list-divider">Output (readBytes)</li>
+                               <li id="output-read-bytes">
+                               </li>
+                               <li data-role="list-divider">Output (readBase64)</li>
+                               <li id="output-read-base64">
+                               </li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="file-create">Create</a></li>
+                                       <li><a id="file-append">Append</a></li>
+                                       <li><a id="file-read">Read</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="storage">
+               <div data-role="header" data-position="fixed">
+                       <h1>Storage</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="storage-list"></ul>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/project/js/main.js
new file mode 100644 (file)
index 0000000..45b1d3b
--- /dev/null
@@ -0,0 +1,480 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+var COPY_TARGET_FILE = "to_be_copied.txt", MOVE_TARGET_FILE = "to_be_moved.txt",
+       gDocumentsDir, gDocumentsSubdir, gFiles, gSubfiles, gIdForDetail, gListenerId;
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               try {
+                       tizen.filesystem.removeStorageStateChangeListener(gListenerId);
+               } catch (exc) {
+                       alert("removeStorageStateChangeListener exc:" + exc.message);
+               }
+               tizen.application.exit();
+               return false;
+       });
+
+       $("#main").bind("pagebeforeshow", showFileList);
+
+       $("#file-list").delegate("li", "vclick", function() {
+               if ($(this).data("role") == "list-divider") {
+                       return false;
+               }
+               gIdForDetail = $(this).data("id");
+               $.mobile.changePage("#file-detail");
+               return false;
+       });
+
+       $("#file-list").delegate("div", "vclick", function() {
+               deleteFileFromFolder($(this).parent().data("id"));
+               return false;
+       });
+
+       $("#file-copy").bind("vclick", function() {
+               copyOrMove(COPY_TARGET_FILE);
+               return false;
+       });
+       $("#file-move").bind("vclick", function() {
+               copyOrMove(MOVE_TARGET_FILE);
+               return false;
+       });
+
+       try {
+               gListenerId = tizen.filesystem.addStorageStateChangeListener(function() {
+                       if (storage.state == "MOUNTED") {
+                               alert("Tracking message :<br/>" + storage.label + " added");
+                       } else if (storage.state == "REMOVED") {
+                               alert("Tracking message :<br/>" + storage.label + " removed");
+                       }
+               });
+       } catch (exc) {
+               alert("addStorageStateChangeListener exc:" + exc.message);
+       }
+
+       prepareDirsAndFiles();
+});
+
+$(document).delegate("#file-detail", "pageinit", function() {
+       $("#file-detail").bind("pagebeforeshow", function() {
+               showFileDetail();
+       });
+});
+
+$(document).delegate("#file-op", "pageinit", function() {
+       $("#file-op").bind("pagebeforeshow", function() {
+               $("#file-op-uri").html("");
+               $("#output-text").html("");
+               $("#output-read").html("");
+               $("#output-read-bytes").html("");
+               $("#output-read-base64").html("");
+       });
+
+       $("#file-create").bind("vclick", function() {
+               createSampleFile();
+               return false;
+       });
+
+       $("#file-append").bind("vclick", function() {
+               var filename = $("#file-name").val();
+               if (filename == "") {
+                       alert("Input File name");
+                       return;
+               }
+               writeToFile(filename);
+               return false;
+       });
+
+       $("#file-read").bind("vclick", function() {
+               OutputFileRead();
+               return false;
+       });
+});
+
+$(document).delegate("#storage", "pageinit", function() {
+       $("#storage").bind("pagebeforeshow", function() {
+               listAvailableStorages();
+       });
+
+       $("#storage-list").delegate("div", "vclick", function() {
+               showStorageDetail($(this).parent().children("span:first").text());
+               return false;
+       });
+});
+
+function onError(err) {
+       alert("Error: " + err.message);
+}
+
+function resetSubdirAndFiles() {
+       var tempFound = false,
+               copiedFound = false,
+               movedFound = false,
+               needRenewalCount = 0;
+
+       try {
+               for (var i = 0; i < gFiles.length; i++) {
+                       if (gFiles[i].name == "temp" && gFiles[i].isDirectory == true) {
+                               console.log("/documents/temp directory found");
+                               tempFound = true;
+                               needRenewalCount++;
+                               gDocumentsDir.deleteDirectory(gFiles[i].fullPath, true, function() {
+                                       console.log("/documents/temp directory deleted. recreate now");
+                                       gDocumentsSubdir = gDocumentsDir.createDirectory("temp");
+                                       if(--needRenewalCount == 0) {
+                                               showFileList();
+                                       }
+                               });
+                       } else if (gFiles[i].name == COPY_TARGET_FILE) {
+                               console.log(gFiles[i].name + " file found");
+                               copiedFound = true;
+                               needRenewalCount++;
+                               gDocumentsDir.deleteFile(gFiles[i].fullPath, function() {
+                                       console.log(COPY_TARGET_FILE + " deleted. recreate now");
+                                       gDocumentsDir.createFile(COPY_TARGET_FILE);
+                                       if(--needRenewalCount == 0) {
+                                               showFileList();
+                                       }
+                               });
+                       } else if (gFiles[i].name == MOVE_TARGET_FILE) {
+                               console.log(gFiles[i].name + " file found");
+                               movedFound = true;
+                               needRenewalCount++;
+                               gDocumentsDir.deleteFile(gFiles[i].fullPath, function() {
+                                       console.log(MOVE_TARGET_FILE + " deleted. recreate now");
+                                       gDocumentsDir.createFile(MOVE_TARGET_FILE);
+                                       if(--needRenewalCount == 0) {
+                                               showFileList();
+                                       }
+                               });
+                       }
+               }
+               if (tempFound == false) {
+                       console.log("/documents/temp create");
+                       gDocumentsSubdir = gDocumentsDir.createDirectory("temp");
+               }
+               if (copiedFound == false) {
+                       console.log(COPY_TARGET_FILE + " create");
+                       gDocumentsDir.createFile(COPY_TARGET_FILE);
+               }
+               if (movedFound == false) {
+                       console.log(MOVE_TARGET_FILE + " create");
+                       gDocumentsDir.createFile(MOVE_TARGET_FILE);
+               }
+       } catch (exc) {
+               alert("resetSubdirAndFiles exc: " + exc.message);
+       }
+}
+
+function prepareDirsAndFiles() {
+       try {
+               tizen.filesystem.resolve("documents", function(dir) {
+                       gDocumentsDir = dir;
+                       gDocumentsDir.listFiles(function(files) {
+                               gFiles = files;
+                               resetSubdirAndFiles();
+                               showFileList();
+                       });
+               }, onError, "rw");
+       } catch (exc) {
+               alert("tizen.filesystem.resolve(\"documents\") exc: " + exc.message);
+       }
+}
+
+function makeFileList(files, isSubdir) {
+       var dividerStr, id, $list;
+
+       if (isSubdir) {
+               gSubfiles = files;
+               dividerStr = "documents/temp/";
+               id = "subdir-";
+               $("#file-list>li[data-id^=subdir-]").remove();
+       } else {
+               gFiles = files;
+               dividerStr = "documents/";
+               id = "dir-";
+               $("#file-list>li[data-id^=dir-]").remove();
+       }
+
+       var str = '<li data-role="list-divider" data-id="' + id + '">' + dividerStr + '</li>';
+
+       for (var i = 0; i < files.length; i++) {
+               if (files[i].isDirectory == false) {
+                       str += '<li data-id="'
+                               + id + i
+                               + '">'
+                               + files[i].name
+                               + '<div data-role="button" data-inline="true">Delete</div></li>';
+               }
+       }
+
+       if (isSubdir) {
+               $list = $("#file-list").append(str);
+       } else {
+               $list = $("#file-list").prepend(str);
+       }
+       $list.trigger("create").listview("refresh");
+}
+
+function showFileList() {
+       console.log("showFileList");
+
+       if(gDocumentsDir) {
+               gDocumentsDir.listFiles(function(files) {
+                       makeFileList(files, false);
+               }, onError);
+       }
+
+       if(gDocumentsSubdir) {
+               gDocumentsSubdir.listFiles(function(files) {
+                       makeFileList(files, true);
+               }, onError);
+       }
+}
+
+function copyOrMove(filename) {
+       var i;
+
+       alert(filename + " will be " + (filename == COPY_TARGET_FILE ? "copied" : "moved")
+                       + " to document/temp/ directory");
+
+       for (i = 0; i < gFiles.length; i++) {
+               if (gFiles[i].name == filename) {
+                       break;
+               }
+       }
+
+       if (i == gFiles.length) {
+               alert("No " + filename + " found in documents directory<br/>Canceled");
+               return;
+       }
+
+       for (i = 0; i < gSubfiles.length; i++) {
+               if (gSubfiles[i].name == filename) {
+                       alert(filename + " already exists in documents/temp directory<br/>Canceled");
+                       return;
+               }
+       }
+
+       try {
+               if(filename == COPY_TARGET_FILE) {
+                       gDocumentsDir.copyTo("documents/" + COPY_TARGET_FILE, "documents/temp/" + COPY_TARGET_FILE,
+                               false, showFileList, onError);
+               } else {
+                       gDocumentsDir.moveTo("documents/" + MOVE_TARGET_FILE, "documents/temp/" + MOVE_TARGET_FILE,
+                               false, showFileList, onError);
+               }
+       } catch (exc) {
+               alert("copyTo exc: " + exc.message);
+       }
+}
+
+function deleteFileFromFolder(id) {
+       var dirAndIndex = id.split("-"),
+               dir = dirAndIndex[0],
+               index = Number(dirAndIndex[1]);
+
+       try {
+               if (dir == "subdir") {
+                       gDocumentsSubdir.deleteFile(gSubfiles[index].fullPath, showFileList, onError);
+               } else {
+                       gDocumentsDir.deleteFile(gFiles[index].fullPath, showFileList, onError);
+               }
+       } catch (exc) {
+               alert("deleteFile exc: " + exc.message);
+       }
+}
+
+function showFileDetail() {
+       var dirAndIndex = gIdForDetail.split("-"),
+               dir = dirAndIndex[0],
+               index = Number(dirAndIndex[1]),
+               files;
+
+       if (dir == "subdir") {
+               files = gSubfiles;
+       } else {
+               files = gFiles;
+       }
+
+       $("#uri").html(files[index].fullPath);
+       $("#size").html(files[index].fileSize);
+       $("#created").html(files[index].created.toLocaleString());
+       $("#is-file").html(files[index].isFile ? "Yes" : "No");
+       $("#is-dir").html(files[index].isDirectory ? "Yes" : "No");
+       $("#read-only").html(files[index].readOnly ? "Yes" : "No");
+}
+
+function onReadOpenStreamSuccess(fileStream) {
+       var readPosition = parseInt($("#read-position").val(), 10);
+
+       try {
+               fileStream.position = readPosition;
+               $("#output-read").html(fileStream.read(fileStream.bytesAvailable));
+
+               fileStream.position = readPosition;
+               var raw = fileStream.readBytes(fileStream.bytesAvailable),
+                       str = "";
+
+               for(var i = 0; i < raw.length; i++) {
+                       str += raw[i].toString(16) + " ";
+               }
+               $("#output-read-bytes").html(str);
+
+               fileStream.position = readPosition;
+               $("#output-read-base64").html(fileStream.readBase64(fileStream.bytesAvailable));
+       } catch (exc) {
+               alert("File reading exc: " + exc.message);
+       }
+       fileStream.close();
+}
+
+function OutputFileRead() {
+       var file, filename = $("#file-name").val();
+
+       if (filename == "") {
+               alert("Input File name");
+               return;
+       }
+
+       try {
+               file = gDocumentsDir.resolve(filename);
+       } catch (exc) {
+               alert(filename + " resolve failed");
+               return;
+       }
+       $("#file-op-uri").html(file.toURI());
+
+       try {
+               file.readAsText(function(content) {
+                       $("#output-text").html(content);
+               });
+       } catch (exc) {
+               alert("readAsText exc:" + exc.message);
+       }
+
+       try {
+               file.openStream("r", onReadOpenStreamSuccess, onError);
+       } catch (exc) {
+               alert("openStream exc:" + exc.message);
+       }
+}
+
+function onAppendOpenStreamSuccess(fileStream) {
+       var method = $(":radio[name='write-choice']:checked").val(),
+               str = $("#text").val(),
+               writeOK = true;
+
+       if (method == "write") {
+               try {
+                       fileStream.write(str);
+               } catch (exc) {
+                       alert("FileStream.write exc: " + exc.message);
+                       writeOK = false;
+               }
+       } else if (method == "writeBytes") {
+               var raw = [];
+               for (var i = 0; i < str.length; i++) {
+                       raw[i] = str.charCodeAt(i);
+               }
+               try {
+                       fileStream.writeBytes(raw);
+               } catch (exc) {
+                       alert("FileStream.writeBytes exc: " + exc.message);
+                       writeOK = false;
+               }
+       } else if (method == "writeBase64") {
+               try {
+                       fileStream.writeBase64(str);
+               } catch (exc) {
+                       alert("FileStream.writeBase64 exc: "
+                                       + exc.message
+                                       + "<br/><br/>How about trying this input text<br/>\"aGVsbG8=\"");
+                       writeOK = false;
+               }
+       }
+
+       if(writeOK) {
+               alert("Done successfully");
+       }
+
+       fileStream.close();
+}
+
+function writeToFile(filename) {
+       var file;
+
+       try {
+               file = gDocumentsDir.resolve(filename);
+       } catch (exc) {
+               alert(filename + "resolve failed");
+               return;
+       }
+
+       try {
+               file.openStream("a", onAppendOpenStreamSuccess);
+       } catch (exc) {
+               alert("openStream failed: " + exc.message);
+       }
+}
+
+function createSampleFile() {
+       var filename = $("#file-name").val();
+
+       if (filename == "") {
+               alert("Input File name");
+               return;
+       }
+
+       try {
+               gDocumentsDir.createFile(filename);
+               writeToFile(filename);
+       } catch (exc) {
+               alert(filename + " already exists");
+       }
+}
+
+function onListStoragesSuccess(storages) {
+       var str = "";
+
+       for (var i = 0; i < storages.length; i++) {
+               str += '<li><span>'
+                       + storages[i].label
+                       + '</span><div data-role="button" data-inline="true">Show details</div></li>';
+       }
+
+       $("#storage-list").html(str).trigger("create").listview("refresh");
+}
+
+function listAvailableStorages() {
+       try {
+               tizen.filesystem.listStorages(onListStoragesSuccess, onError);
+       } catch (exc) {
+               alert("listStorages exc: " + exc.message);
+       }
+}
+
+function onGetStorageSuccess(storage) {
+       alert("Type: " + storage.type + "<br/>State: " + storage.state);
+}
+
+function showStorageDetail(label) {
+       try {
+               tizen.filesystem.getStorage(label, onGetStorageSuccess, onError);
+       } catch (exc) {
+               alert("showStorageInfo() exception: " + exc.message);
+       }
+}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..ee91c06
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Filesystem</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tutorial-filesystem-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tutorial-filesystem-snapshot.png
new file mode 100644 (file)
index 0000000..d9e82e7
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Filesystem/tutorial-filesystem-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/description.xml
new file mode 100644 (file)
index 0000000..fa6e6f2
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Geocoder</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-geocoder-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen geocoder device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/config.xml
new file mode 100755 (executable)
index 0000000..a539937
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.17" viewmodes="fullscreen" id="http://tizen.org/Geocoder">
+       <name>Geocoder</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/lbs" required="true"/>
+       <feature name="http://tizen.org/api/geocoder" required="true"/>
+       <feature name="http://tizen.org/api/map" required="true"/>
+       <feature name="http://tizen.org/api/poi" required="true"/>
+       <feature name="http://tizen.org/api/lbs.route" required="true"/>
+       <tizen:application id="samplegeo0" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/css/style.css
new file mode 100755 (executable)
index 0000000..6a7ec97
--- /dev/null
@@ -0,0 +1,10 @@
+li>label {
+       color:#646464;
+}
+label.ui-input-text {
+       width:20%;
+}
+#json-output, #json-output-ff {
+       word-wrap:break-word;
+       white-space:normal;
+}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/index.html
new file mode 100644 (file)
index 0000000..6d94483
--- /dev/null
@@ -0,0 +1,221 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Geocoder API Tutorial"/>
+
+       <title>Geocoder</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css" />
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Geocoder</h1>
+               </div>
+               <div data-role="content">
+                       <ul data-role="listview" id="list">
+                               <li data-role="list-divider">Operation</li>
+                               <li id="pos2addr">Position to address</li>
+                               <li id="addr2pos">Address to position</li>
+                               <li id="ff-addr2pos">Free-formed address to position</li>
+                               <li data-role="list-divider">Provider</li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a href="#account">Account</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="pos-to-addr">
+               <div data-role="header" data-position="fixed">
+                       <h1>Position to address</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li data-role=list-divider>Position</li>
+                               <li>
+                                       <label for="latitude">Latitude</label>
+                                       <input type="number" name="latitude" id="latitude" value="40.77798"/>
+                               </li>
+                               <li>
+                                       <label for="longitude">Longitude</label>
+                                       <input type="number" name="longitude" id="longitude" value="-73.98196"/>
+                               </li>
+                               <li data-role=list-divider>Address</li>
+                               <li class="ui-li-has-multiline">
+                                       Country
+                                       <span class="ui-li-text-sub" id="country-output"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Region
+                                       <span class="ui-li-text-sub" id="region-output"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       County
+                                       <span class="ui-li-text-sub" id="county-output"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       City
+                                       <span class="ui-li-text-sub" id="city-output"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Street
+                                       <span class="ui-li-text-sub" id="street-output"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Premises
+                                       <span class="ui-li-text-sub" id="premises-output"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Postal code
+                                       <span class="ui-li-text-sub" id="postal-code-output"></span>
+                               </li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="pos-to-addr-convert">Convert position to address</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="addr-to-pos">
+               <div data-role="header" data-position="fixed">
+                       <h1>Address to position</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li data-role=list-divider>Address</li>
+                               <li>
+                                       <label for="country">Country</label>
+                                       <input type="text" name="country" id="country"/>
+                               </li>
+                               <li>
+                                       <label for="city">City</label>
+                                       <input type="text" name="city" id="city" value="Seoul"/>
+                               </li>
+                               <li>
+                                       <label for="street">Street</label>
+                                       <input type="text" name="street" id="street"/>
+                               </li>
+                               <li data-role=list-divider>Position</li>
+                               <li class="ui-li-has-multiline">
+                                       Latitude
+                                       <span class="ui-li-text-sub" id="latitude-output"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Longitude
+                                       <span class="ui-li-text-sub" id="longitude-output"></span>
+                               </li>
+                               <li data-role=list-divider>GeoJSON</li>
+                               <li id="json-output">Position as GeoJSON representation</li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="addr-to-pos-convert">Convert address to position</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="freeform-addr-to-pos">
+               <div data-role="header" data-position="fixed">
+                       <h1>Free-formed addr. to pos.</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li data-role=list-divider>Free-formed Address</li>
+                               <li>
+                                       <label for="freeform-address">Address</label>
+                                       <input type="text" name="freeform-address" id="freeform-address" value="Seoul"/></li>
+                               <li data-role=list-divider>Position</li>
+                               <li class="ui-li-has-multiline">
+                                       Latitude
+                                       <span class="ui-li-text-sub" id="latitude-output-ff"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Longitude
+                                       <span class="ui-li-text-sub" id="longitude-output-ff"></span>
+                               </li>
+                               <li data-role=list-divider>GeoJSON</li>
+                               <li id="json-output-ff">Position as GeoJSON representation</li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="ff-addr-to-pos-convert">Convert free-formed address to position</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="provider">
+               <div data-role="header" data-position="fixed">
+                       <h1>Provider</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li class="ui-li-has-multiline">
+                                       Name
+                                       <span class="ui-li-text-sub" id="provider-name"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Attribution
+                                       <span class="ui-li-text-sub" id="provider-attribution"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Connectivity
+                                       <span class="ui-li-text-sub" id="provider-connectivity"></span>
+                               </li>
+                       </ul>
+               </div>
+       </div>
+
+       <div data-role="page" id="account">
+               <div data-role="header" data-position="fixed">
+                       <h1>Account</h1>
+               </div>
+               <div data-role="content">
+                       <div data-role="fieldcontain">
+                               <label for="id">ID</label>
+                               <input type="text" name="id" id="id" value=""/>
+                       </div>
+                       <div data-role="fieldcontain">
+                               <label for="password">Password</label>
+                               <input type="password" name="password" id="password" value=""/>
+                       </div>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="ok">OK</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/project/js/main.js
new file mode 100644 (file)
index 0000000..8ba67cb
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+var gProvider, gProviderArray, gProviderId;
+var    gOptionAccount = {
+               ID : "",
+               PASSWORD : ""
+};
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               tizen.application.exit();
+               return false;
+       });
+       $("#pos2addr").bind("vclick", function() {
+               $.mobile.changePage("#pos-to-addr");
+               return false;
+       });
+       $("#addr2pos").bind("vclick", function() {
+               $.mobile.changePage("#addr-to-pos");
+               return false;
+       });
+       $("#ff-addr2pos").bind("vclick", function() {
+               $.mobile.changePage("#freeform-addr-to-pos");
+               return false;
+       });
+       $("#list").delegate("input", "change", function() {
+               if ($(this).prop("checked")) {
+                       gProvider = gProviderArray[Number($(this).data("id"))];
+               }
+               return false;
+       });
+       $("#list").delegate("li", "vclick", function() {
+               gProviderId = Number($(this).data("id"));
+               if (gProviderId != null) {
+                       $.mobile.changePage("#provider");
+               }
+               return false;
+       });
+
+       initProviderList();
+});
+
+$(document).delegate("#pos-to-addr", "pageinit", function() {
+       $("#pos-to-addr-convert").bind("vclick", function() {
+               positionToAddress();
+               return false;
+       });
+});
+
+$(document).delegate("#addr-to-pos", "pageinit", function() {
+       $("#addr-to-pos-convert").bind("vclick", function() {
+               structuredAddressToPosition();
+               return false;
+       });
+});
+
+$(document).delegate("#freeform-addr-to-pos", "pageinit", function() {
+       $("#ff-addr-to-pos-convert").bind("vclick", function() {
+               formattedAddressToPosition();
+               return false;
+       });
+});
+
+$(document).delegate("#provider", "pagebeforeshow", function() {
+       $("#provider-name").text(gProviderArray[gProviderId].name);
+       $("#provider-attribution").text(gProviderArray[gProviderId].attribution);
+       $("#provider-connectivity").text(gProviderArray[gProviderId].connectivity);
+});
+
+$(document).delegate("#account", "pageinit", function() {
+       $("#account").bind("pagebeforeshow", function() {
+               $("#id").val(gOptionAccount.ID);
+               $("#password").val(gOptionAccount.PASSWORD);
+       });
+
+       $("#ok").bind("vclick", function() {
+               gOptionAccount.ID = $("#id").val();
+               gOptionAccount.PASSWORD = $("#password").val();
+               gProvider.setOptions(gOptionAccount, function(response) {
+                       alert("Account set successfully");
+               }, function(err) {
+                       alert("Account set failed: " + err.message);
+               });
+               window.history.back();
+               return false;
+       });
+});
+
+function initProviderList() {
+       var len, i, str = '';
+
+       gProviderArray = tizen.lbs.geocoder.getProviders();
+       len = gProviderArray.length;
+
+       for (i = 0; i < len; i++) {
+               str += '<li class="ui-li-has-radio" data-id="'
+                       + i
+                       + '">'
+                       + gProviderArray[i].name
+                       + '<input type="radio" name="provider-choice" id="provider-'
+                       + i
+                       + '" value="providers"/></li>';
+       }
+
+       $("#list").append(str).trigger("create").listview("refresh");
+
+       if (len > 0) {
+               var defaultProvider = tizen.lbs.geocoder.getDefaultProvider();
+
+               for (i = 0; i < len; i++) {
+                       if (gProviderArray[i].name == defaultProvider.name) {
+                               break;
+                       }
+               }
+               if (i == len) {
+                       alert("Default provider not found");
+                       i = 0;
+               }
+               gProvider = gProviderArray[i];
+               $("#provider-" + i).prop("checked", true);
+               $("#provider-" + i).checkboxradio("refresh");
+       }
+}
+
+function onError(e) {
+       alert("Error: " + e.message + "<br/>Check the account setting and network availability");
+}
+
+function onReverseGeocodeSuccess(results) {
+       var address = results[0];
+
+       $("#country-output").text(address.country);
+       $("#region-output").text(address.region);
+       $("#county-output").text(address.county);
+       $("#city-output").text(address.city);
+       $("#street-output").text(address.street);
+       $("#premises-output").text(address.premises);
+       $("#postal-code-output").text(address.postalCode);
+}
+
+function positionToAddress() {
+       var lat = parseFloat($("#latitude").attr("value")),
+               lon = parseFloat($("#longitude").attr("value")),
+               coordinates = new tizen.SimpleCoordinates(lat, lon),
+               options = {resultType : "STRUCTURED"};
+
+       try {
+               gProvider.reverseGeocode(coordinates, onReverseGeocodeSuccess, onError, options);
+       } catch (exc) {
+               alert("reverseGeocode() exception:" + exc.message);
+       }
+}
+
+function onGeocodeStructuredAddressSuccess(results) {
+       var pos = results[0].coordinates,
+               json = results[0].toGeoJSON();
+
+       $("#latitude-output").text(pos.latitude);
+       $("#longitude-output").text(pos.longitude);
+       $("#json-output").text(json);
+}
+
+function structuredAddressToPosition() {
+       var address = {
+               country : $("#country").attr("value"),
+               city : $("#city").attr("value"),
+               street : $("#street").attr("value")
+       };
+
+       try {
+               gProvider.geocode(address, onGeocodeStructuredAddressSuccess, onError);
+       } catch (exc) {
+               alert("structuredAddressToPosition(), geocode() exception:"     + exc.message);
+       }
+}
+
+function onGeocodeFormattedAddressSuccess(results) {
+       var pos = results[0].coordinates;
+       var json = results[0].toGeoJSON();
+
+       $("#latitude-output-ff").text(pos.latitude);
+       $("#longitude-output-ff").text(pos.longitude);
+       $("#json-output-ff").text(json);
+}
+
+function formattedAddressToPosition() {
+       var address = $("#freeform-address").attr("value");
+
+       try {
+               gProvider.geocode(address, onGeocodeFormattedAddressSuccess, onError);
+       } catch (exc) {
+               alert("formattedAddressToPosition(), geocode() exception:" + exc.message);
+       }
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..32b0fa7
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Geocoder</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tutorial-geocoder-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tutorial-geocoder-snapshot.png
new file mode 100644 (file)
index 0000000..9bf62bd
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Geocoder/tutorial-geocoder-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/description.xml
new file mode 100644 (file)
index 0000000..e84860a
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Kitchen Sink</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>kitchen-sink.png</Preview>\r
+  <Description>\r
+     A tutorial sample application demonstrating "some" of the Tizen APIs. It's an introduction to the framework by providing the live source of each demo.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/kitchen-sink.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/kitchen-sink.png
new file mode 100644 (file)
index 0000000..0caa1c5
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/kitchen-sink.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/alarm.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/alarm.html
new file mode 100644 (file)
index 0000000..9e104df
--- /dev/null
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+    <title>Tizen API Demos</title>
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Alarm</h2>
+            <p>API that provides functionality for setting and unsetting alarms.</p>
+
+            <ul>
+            <li><span class="entry-title">add</span>
+            <p class="desc">Create relative alarm and add an alarm</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+       var alarm = new tizen.AlarmRelative(5); 
+       tizen.alarm.add(alarm, "com.samsung.browser"); 
+       alert("Alarm added with id: " + alarm.id + "\n" + 
+       "browser application will be launched after 5 seconds");
+       // remove all alarm
+       tizen.alarm.removeAll();
+</pre>
+            </div>
+
+            <li><span class="entry-title">getAll</span>
+            <p class="desc">Returns the alarms in the storage.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+var alarm = new tizen.AlarmRelative(5); 
+tizen.alarm.add(alarm, "com.samsung.browser");
+var alarms = tizen.alarm.getAll();
+alert(alarms.length + " alarms present in the storage."); 
+// remove all alarm
+tizen.alarm.removeAll();
+</pre>
+            </div>
+
+            <li><span class="entry-title">remove</span>
+            <p class="desc">Removes an alarm from the storage.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+var alarm = new tizen.AlarmRelative(5);
+tizen.alarm.add(alarm, "com.samsung.browser");
+var alarms = tizen.alarm.getAll();
+if (alarms.length > 0) { 
+       tizen.alarm.remove(alarms[0].id);
+       alert("Successfully removed the first alarm."); 
+}
+</pre>
+            </div>
+            </ul>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/application.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/application.html
new file mode 100644 (file)
index 0000000..1b4e08f
--- /dev/null
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+    <title>Tizen API Demos</title>
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Application</h2>
+            <p>API that manages application states, lifecycle, management and service launching.</p>
+
+            <ul>
+            <li><span class="entry-title">getAppsInfo</span>
+            <p class="desc">Gets the list of installed applications.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+function appInfoSuccessCB(appInfoArray) {
+    for(var num=0; num < appInfoArray.length; num++)
+    {
+        alert("installed Application ["+num+"]\n" +
+            "name = "+appInfoArray[num].name + "\n" +
+            "version = "+appInfoArray[num].version);
+    }
+}
+tizen.application.getAppsInfo(
+    appInfoSuccessCB, 
+    function(e) {
+        alert ("getAppsInfo failed. reason : " + e.message);
+    } );
+</pre>
+            </div>
+
+            <li><span class="entry-title">getAppsContext</span>
+            <p class="desc">Gets the list of running applications.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+function appContextSuccessCB(appContextArray) {
+    for(var num=0; num < appContextArray.length; num++)
+    {
+        alert("Running Application ["+num+"]\n" +
+            "contextId = "+appContextArray[num].id + "\n" +
+            "appId = "+appContextArray[num].appId);
+    }
+}
+tizen.application.getAppsContext(
+    appContextSuccessCB, 
+    function(e) {
+        alert ("getAppsContext failed. reason : " + e.message);
+    } );
+</pre>
+            </div>
+
+            <li><span class="entry-title">getAppInfo</span>
+            <p class="desc">Gets the appliction information based on the application id.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+var appInfo = tizen.application.getAppInfo("org.tizen.browser");
+alert("browser application\n" +
+    "icon: " + appInfo.iconPath + "\n" +
+    "version: " + appInfo.version);
+</pre>
+            </div>
+            </ul>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/calendar.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/calendar.html
new file mode 100644 (file)
index 0000000..b8f7833
--- /dev/null
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+    <title>Tizen API Demos</title>
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Calendar</h2>
+            <p>API that enables the management of calendar information.</p>
+
+            <ul>
+            <li><span class="entry-title">getDefaultCalendar</span>
+            <p class="desc">Gets the default calendar, which should be used for new items.</p>
+            <span class="entry-title">add</span>
+            <p class="desc">Adds an item to the calendar synchronously.</p>
+            <span class="entry-title">update</span>
+            <p class="desc">Updates an existing item in the calendar synchronously.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+   // Define the error callback for all the asynchronous calls
+   function errorCallback(response) {
+     alert( 'The following error occurred: ' +  response.message);
+   }
+
+  function eventFoundCB(events) {
+    // The event has been successfully found
+    // Let's try to change the summary
+    events[0].summary = 'HTML6 Webinar'; 
+    myCalendar.update(events[0]);
+    alert('Today\'s first event was updated.\n' +
+      'Check Calendar! (Summary: ' + events[0].summary + ')');
+   }
+
+   // Get a list of available calendars.
+   myCalendar = tizen.calendar.getDefaultCalendar("EVENT");   
+
+   var ev = new tizen.CalendarEvent({description:'HTML5 Introduction',
+                  summary:'HTML5 Webinar ', 
+                  startDate: tizen.time.getCurrentDateTime(), 
+                  duration: new tizen.TimeDuration(1, "HOURS"),
+                  location:'Huesca'});
+
+   myCalendar.add(ev);
+
+   // The event has been added
+   // Let's try to check if we can retrieve the added event from the calendar 
+   // If the calendar was empty only the item added through add should
+   // be returned
+   myCalendar.find(eventFoundCB, errorCallback);
+</pre>
+            </div>
+            </ul>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/call.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/call.html
new file mode 100644 (file)
index 0000000..f36b2f2
--- /dev/null
@@ -0,0 +1,118 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+    <title>Tizen API Demos</title>
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Call</h2>
+            <p>API that enables the management of call history information.</p>
+
+            <ul>
+            <li><span class="entry-title">isCallInProgress</span>
+            <p class="desc">Fetch call history items.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+var status = tizen.call.isCallInProgress();
+alert("call status :" + status);        
+</pre>
+            </div>
+
+            <li><span class="entry-title">find</span>
+            <p class="desc">Fetch call history items.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+// Define success callback
+function onSuccess(results) {
+       alert(results.length + " call history item(s) found!");        
+}
+
+// Define error callback
+function onError(error) {
+       alert("Query failed " + error.code);
+}
+
+// Define filter: list CS calls, most recent first
+var filter = new tizen.AttributeFilter("callType", "EXACTLY", "tizen.tel");
+
+// Define sort mode: descending on call start time.
+var sortMode = new tizen.SortMode("startTime", "DESC");
+
+// Make the query and wire up the callbacks
+tizen.call.history.find(onSuccess, onError, filter, sortMode);
+</pre>
+            </div>
+
+            <li><span class="entry-title">addListener/removeListener</span>
+            <p class="desc">Register/Unregister a callback for observing CallHistory changes.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+var onListenerCB = {
+       onadded: function(newItems) {
+               alert("New Item added");
+               for (var i in newItems) {
+                       alert("Item " + i + " startTime: " + newItems[i].startTime);
+               }
+       },
+       onchanged: function(changedItems) {
+               alert("Items changed");
+               for (var i in changedItems) {
+                       alert("Item " + i + " direction: " + changedItems[i].direction);
+               }
+       }};
+
+try {
+       // register a call history callback
+       var handle = tizen.call.history.addListener(onListenerCB);
+
+       alert("register listener handle : " + handle);
+
+       // unregister a previously registered listener
+       tizen.call.history.removeListener(handle);
+       alert("Success unregister listener");
+} catch (err) {
+       consloe.log("Exception - name: " + err.code + " message: " + err.message);
+}
+</pre>
+            </div>
+            </ul>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/config.xml
new file mode 100644 (file)
index 0000000..24f3d10
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://tizen.org/wid/KitchenSink" version="1.0" viewmodes="fullscreen">
+    <name>KitchenSink</name>
+    <icon src="icon.png"/>
+    <content src="index.html"/>
+    <feature name="http://tizen.org/api/tizen" required="true"/>
+    <feature name="http://tizen.org/api/lbs" required="true"/>
+    <feature name="http://tizen.org/api/geocoder" required="true"/>
+    <feature name="http://tizen.org/api/application" required="true"/>
+    <feature name="http://tizen.org/api/calendar" required="true"/>
+    <feature name="http://tizen.org/api/calendar.read" required="true"/>
+    <feature name="http://tizen.org/api/calendar.write" required="true"/>
+    <feature name="http://tizen.org/api/call" required="true"/>
+    <feature name="http://tizen.org/api/call.history.read" required="true"/>
+    <feature name="http://tizen.org/api/call.state" required="true"/>
+    <feature name="http://tizen.org/api/contact" required="true"/>
+    <feature name="http://tizen.org/api/contact.read" required="true"/>
+    <feature name="http://tizen.org/api/contact.write" required="true"/>
+    <feature name="http://tizen.org/api/messaging" required="true"/>
+    <feature name="http://tizen.org/api/messaging.read" required="true"/>
+    <feature name="http://tizen.org/api/messaging.write" required="true"/>
+    <feature name="http://tizen.org/api/messaging.send" required="true"/>
+    <feature name="http://tizen.org/api/time" required="true"/>
+    <feature name="http://tizen.org/api/time.read" required="true"/>
+    <feature name="http://tizen.org/api/time.write" required="true"/>
+    <feature name="http://tizen.org/api/filesystem" required="true"/>
+    <feature name="http://tizen.org/api/filesystem.read" required="true"/>
+    <feature name="http://tizen.org/api/filesystem.write" required="true"/>
+    <feature name="http://tizen.org/api/systeminfo" required="true"/>
+    <feature name="http://tizen.org/api/mediacontent" required="true"/>
+    <feature name="http://tizen.org/api/alarm" required="true"/>
+<tizen:application id="nmgg3ski3z" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/contact.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/contact.html
new file mode 100644 (file)
index 0000000..c3cf79a
--- /dev/null
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+    <title>Tizen API Demos</title>
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Contact</h2>
+            <p>API that enables the management of contact information.</p>
+
+            <ul>
+            <li><span class="entry-title">getDefaultAddressBook</span>
+            <p class="desc">Gets default address book.</p>
+            <span class="entry-title">add</span>
+            <p class="desc">Adds a contact to the address book synchronously.</p>
+            <span class="entry-title">update</span>
+            <p class="desc">Updates a contact in the address book synchronously.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+  var myAddressbook;
+
+  // Define the error callback for all the asynchronous calls
+  function errorCallback(response) {
+    alert( 'The following error occurred: ' +  response.message);
+  }
+
+  function contactsFoundCB(contacts) {
+    // The contact has been successfully found
+    // Let's try to change the first name
+    contacts[0].name.firstName = 'Lee';
+    myAddressbook.update(contacts[0]);
+    alert('First contact was updated.\n' +
+      'Check Contacts! (Name: ' + contacts[0].name.firstName + ')');
+  }
+
+  // Get default address book.
+  myAddressbook = tizen.contact.getDefaultAddressBook();
+
+  // Add a new contact
+  var contact = new tizen.Contact( {
+                  name: new tizen.ContactName ( {
+                       firstName:'Jeffrey',
+                       lastName:'Hyman',
+                       nicknames:['joey ramone'] } ),
+                  emails:[ new tizen.ContactEmailAddress('user@domain.com')],
+                  phoneNumbers:[ new tizen.ContactPhoneNumber('12345678') ] } );
+
+  myAddressbook.add(contact);
+
+  // The contact has been successfully added
+  // Let's try to check if we can retrieve the added
+  // contact from the address book. If the address book
+  // was empty only the item added through saveContact should
+  // be returned
+  myAddressbook.find(contactsFoundCB, errorCallback);
+</pre>
+            </div>
+            </ul>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/createPackage.sh b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/createPackage.sh
new file mode 100755 (executable)
index 0000000..cd8b4d7
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+#  wrt-plugins
+#
+# Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+#
+# Contact: Seung Mo Cho <seungm.cho@samsung.com>
+#
+# This library is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation; either version 2.1 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+test_dir=./
+
+cd $test_dir
+rm -f kitchenSink.wgt
+
+# remove vim template files
+rm -f `find . -name ".*.swp"`
+rm -f `find . -name "*~"`
+
+#cp wac2_0Config.xml config.xml
+zip kitchenSink.wgt -r \
+        css \
+        js \
+        config.xml \
+               signature1.xml \
+        icon.png \
+        *.html
+
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/demo.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/demo.css
new file mode 100644 (file)
index 0000000..2cbb73f
--- /dev/null
@@ -0,0 +1,34 @@
+li {
+    margin: .8em;
+}
+.desc {
+    font-size:.8em;
+    font-style:italic;
+    margin:4px;
+}
+pre {
+    border: 1px solid #888;
+    border-radius:2px 2px 2px 2px;
+    margin:0;
+    overflow:auto;
+    padding:10px;
+    font-size:1.0em;
+}
+.examplecode a {
+    font-size:.8em;
+}
+.heading:before {
+    content:"";
+}
+.heading {
+    font-size:.9em;
+    color:#C93213;
+    padding:2px;
+    margin:4px;
+    font-weight:bold;
+    cursor:hand;
+    border:1px solid;
+}
+.content {
+    margin:4px;
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/ajax-loader.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/ajax-loader.png
new file mode 100644 (file)
index 0000000..0973ae0
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/ajax-loader.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-18-black.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-18-black.png
new file mode 100644 (file)
index 0000000..7739286
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-18-black.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-18-white.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-18-white.png
new file mode 100644 (file)
index 0000000..f4e6787
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-18-white.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-36-black.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-36-black.png
new file mode 100644 (file)
index 0000000..7469906
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-36-black.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-36-white.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-36-white.png
new file mode 100644 (file)
index 0000000..3f342cc
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/images/icons-36-white.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/jqm-docs.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/jqm-docs.css
new file mode 100644 (file)
index 0000000..21afed2
--- /dev/null
@@ -0,0 +1,343 @@
+/* jqm docs css
+
+Beware: lots of last-minute CSS going on in here 
+cobblers, shoes, 
+*/
+
+body { background: #dddddd; }
+.ui-mobile .type-home .ui-content { margin: 0; background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; }
+.ui-mobile #jqm-homeheader { padding: 40px 10px 0; text-align: center;  margin: 0 auto; }
+.ui-mobile #jqm-homeheader h1 { margin: 0 0 ; }
+.ui-mobile #jqm-homeheader p { margin: .3em 0 0; line-height: 1.3; font-size: .9em; font-weight: bold; color: #666; }
+.ui-mobile #jqm-version { text-indent: -99999px; background: url(../images/version.png) top right no-repeat; width: 119px; height: 122px; overflow: hidden; position: absolute; z-index: 50; top: -11px; right: 0; }
+.ui-mobile .jqm-themeswitcher { margin: 10px 25px 10px 10px;  }
+
+h2 { margin:1.2em 0 .4em 0; }
+p code { font-size:1.2em; font-weight:bold; } 
+
+dt { font-weight: bold; margin: 2em 0 .5em; }
+dt code, dd code { font-size:1.3em; line-height:150%; }
+pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; }
+
+#jqm-homeheader img { width: 235px; }
+img { max-width: 100%; }
+
+.ui-header .jqm-home { top:0.65em; }
+nav { margin: 0; }
+
+p.intro {
+       font-size: .96em;
+       line-height: 1.3;
+               border-top: 1px solid #75ae18;
+               border-bottom: 0;
+               background: none;
+               margin: 1.5em 0;
+               padding: 1.5em 15px 0;
+
+}
+p.intro strong {
+       color:  #558e08;
+}
+.footer-docs {
+       padding: 5px 0;
+}
+.footer-docs p {
+       float: left;
+       margin-left:15px;
+       font-weight: normal;
+       font-size: .9em;
+}
+
+.type-interior .content-secondary {
+       border-right: 0;
+       border-left: 0;
+       margin: 10px -15px 0;
+       background: #fff;
+       border-top: 1px solid #ccc;
+}
+.type-home .ui-content {
+       margin-top: 5px;
+}
+.type-interior .ui-content {
+       padding-bottom: 0;
+}
+.content-secondary .ui-collapsible {
+       padding: 0 15px 10px;
+
+}
+.content-secondary .ui-collapsible-content {
+       padding: 0 0 6px;
+       background: none;
+       border-bottom: 1px solid #ccc;
+}
+.content-secondary .ui-listview {
+       margin: 0;
+}
+/* new API additions */
+
+dt {  
+       margin: 35px 0 15px 0; 
+       background-color:#ddd; 
+       font-weight:normal;
+}
+dt code { 
+       display:inline-block; 
+       font-weight:bold;
+       color:#56A00E; 
+       padding:3px 7px; 
+       margin-right:10px; 
+       background-color:#fff; 
+}
+dd { 
+       margin-bottom:10px; 
+}
+dd .default { font-weight:bold; }
+dd pre { 
+       margin:0 0 0 0; 
+}
+dd code { font-weight: normal; }
+dd pre code { 
+       margin:0; 
+       border:none; 
+       font-weight:normal; 
+       font-size:100%; 
+       background-color:transparent; 
+}
+dd h4 { margin:15px 0 0 0; }
+               
+.localnav {
+       margin:0 0 20px 0;
+       overflow:hidden;
+}
+.localnav li {
+       float:left;
+}
+.localnav .ui-btn-inner { 
+       padding: .6em 10px; 
+       font-size:80%; 
+}
+
+
+/* F bar theme - just for the docs overview headers */
+.ui-bar-f {
+       border-top: 1px solid   #56A00E;
+       border-bottom: 1px solid #56A00E;
+       background:                     #74b042;
+       color:                                  #fff;
+       font-weight: bold;
+       text-shadow: 0 -1px 1px #234403;        
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#74b042), to(#56A00E)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#74b042, #56A00E); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#74b042, #56A00E); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#74b042, #56A00E); /* IE10 */
+       background-image:      -o-linear-gradient(#74b042, #56A00E); /* Opera 11.10+ */
+       background-image:         linear-gradient(#74b042, #56A00E);            
+}
+.ui-bar-f,
+.ui-bar-f .ui-link-inherit {
+       color:                                  #fff;
+}
+.ui-bar-f .ui-link {
+       color:                                  #fff;
+       font-weight: bold;
+}
+.ui-btn-up-f {
+       border: 1px solid               #3B6F07;
+       background:                     #56A00E;
+       font-weight: bold;
+       color:                                  #fff;
+       text-shadow: 0 -1px 1px #234403;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#74b042), to(#56A00E)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#74b042, #56A00E); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#74b042, #56A00E); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#74b042, #56A00E); /* IE10 */
+       background-image:      -o-linear-gradient(#74b042, #56A00E); /* Opera 11.10+ */
+       background-image:         linear-gradient(#74b042, #56A00E);
+}
+.ui-btn-up-f a.ui-link-inherit {
+       color:                                  #fff;
+}
+.ui-btn-hover-f {
+       border: 1px solid               #3B6F07;
+       background:                     #6EBC1F;
+       font-weight: bold;
+       color:                                  #fff;
+       text-shadow: 0 -1px 1px #234403;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#8FC963), to(#6EBC1F)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#8FC963, #6EBC1F); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#8FC963, #6EBC1F); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#8FC963, #6EBC1F); /* IE10 */
+       background-image:      -o-linear-gradient(#8FC963, #6EBC1F); /* Opera 11.10+ */
+       background-image:         linear-gradient(#8FC963, #6EBC1F);
+}
+.ui-btn-hover-f a.ui-link-inherit {
+       color:                                  #fff;
+}
+.ui-btn-down-f {
+       border: 1px solid               #3B6F07;
+       background:                     #3d3d3d;
+       font-weight: bold;
+       color:                                  #fff;
+       text-shadow: 0 -1px 1px #234403;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#56A00E), to(#64A234)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#56A00E, #64A234); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#56A00E, #64A234); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#56A00E, #64A234); /* IE10 */
+       background-image:      -o-linear-gradient(#56A00E, #64A234); /* Opera 11.10+ */
+       background-image:         linear-gradient(#56A00E, #64A234);
+}
+.ui-btn-down-f a.ui-link-inherit {
+       color:                                  #fff;
+}
+.ui-btn-up-f,
+.ui-btn-hover-f,
+.ui-btn-down-f {
+       font-family: Helvetica, Arial, sans-serif;
+       text-decoration: none;
+}
+
+
+
+
+/* docs site layout */
+
+@media all and (min-width: 650px){
+       
+       .jqm-home {
+               position: absolute;
+               left: 10px;
+               top: 0;
+       }
+       .type-home .ui-content {
+               margin-top: 5px;
+       }
+       .ui-mobile #jqm-homeheader {
+               max-width: 340px;
+       }
+       .ui-mobile .jqm-themeswitcher {
+               float: right;
+       }
+       p.intro {
+               margin: 2em 0;
+       }
+       .type-home .ui-content,
+       .type-interior .ui-content {
+               padding: 0;
+               background: url(../images/px-ccc.gif) 50% 0 repeat-y;
+       }
+       .type-interior .ui-content {
+               background-position: 45%;
+               overflow: hidden;
+       }
+       .content-secondary {
+               text-align: left;
+               float: left;
+               width: 45%;
+               background: none;
+       }
+       .content-secondary,
+       .type-interior .content-secondary {
+               margin: 30px 0 20px 2%;
+               padding: 20px 4% 0 0;
+                       background: none;
+                                       border-top: none;
+       }
+       .type-index .content-secondary {
+               padding: 0;
+       }
+       .content-secondary .ui-collapsible {
+               margin: 0;
+               padding: 0;
+       }
+       .content-secondary .ui-collapsible-content {
+               border: none;
+       }
+       .type-index .content-secondary .ui-listview {
+               margin: 0;
+       }
+
+       .ui-mobile #jqm-homeheader {
+               padding: 0;
+       }
+       .content-primary {
+               width: 45%;
+               float: right;
+               margin-top: 30px;
+               margin-right: 1%;
+               padding-right: 1%;
+       }
+       .content-primary ul:first-child {
+               margin-top: 0;
+       }
+       .content-secondary h2 {
+               position: absolute;
+               left: -9999px;
+       }
+       .type-interior .content-primary {
+               padding: 1.5em 6% 3em 0;
+               margin: 0;
+       }
+       /* fix up the collapsibles - expanded on desktop */
+       .content-secondary .ui-collapsible-heading {
+               display: none;
+       }
+       .content-secondary .ui-collapsible-contain {
+               margin:0;
+       }
+       .content-secondary .ui-collapsible-content {
+               display: block;
+               margin: 0;
+               padding: 0;
+       }
+       .type-interior  .content-secondary .ui-li-divider {
+               padding-top: 1em;
+               padding-bottom: 1em;
+       }
+       .type-interior .content-secondary {
+               margin: 0;
+               padding: 0;
+       }
+       
+}
+@media all and (min-width: 750px){
+       .type-home .ui-content,
+       .type-interior .ui-content {
+               background-position: 39%;
+       }
+       .content-secondary {
+               width: 34%;
+       }
+       .content-primary {
+               width: 56%;
+               padding-right: 1%;
+       }       
+       .type-interior .ui-content {
+               background-position: 34%;
+       }
+}
+
+@media all and (min-width: 1200px){
+       .type-home .ui-content{
+               background-position: 38.5%;
+       }
+       .type-interior .ui-content {
+               background-position: 30%;
+       }
+       .content-secondary {
+               width: 30%;
+               padding-right:6%;
+               margin: 30px 0 20px 5%;
+       }
+       .type-interior .content-secondary {
+               margin: 0;
+               padding: 0;
+       }
+       .content-primary {
+               width: 50%;
+               margin-right: 5%;
+               padding-right: 3%;
+       }
+       .type-interior .content-primary {
+               width: 60%;
+       }
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/jquery.mobile-1.0.min.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/css/jquery.mobile-1.0.min.css
new file mode 100644 (file)
index 0000000..ab4e0b8
--- /dev/null
@@ -0,0 +1,2 @@
+/*! jQuery Mobile v1.0 jquerymobile.com | jquery.org/license */
+.ui-bar-a{border:1px solid #2a2a2a;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111));background-image:-webkit-linear-gradient(#3c3c3c,#111);background-image:-moz-linear-gradient(#3c3c3c,#111);background-image:-ms-linear-gradient(#3c3c3c,#111);background-image:-o-linear-gradient(#3c3c3c,#111);background-image:linear-gradient(#3c3c3c,#111)}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-a .ui-link:hover{color:#2489ce}.ui-bar-a .ui-link:active{color:#2489ce}.ui-bar-a .ui-link:visited{color:#2489ce}.ui-body-a,.ui-dialog.ui-overlay-a{border:1px solid #2a2a2a;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#666),to(#222));background-image:-webkit-linear-gradient(#666,#222);background-image:-moz-linear-gradient(#666,#222);background-image:-ms-linear-gradient(#666,#222);background-image:-o-linear-gradient(#666,#222);background-image:linear-gradient(#666,#222)}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-body-a .ui-link:visited{color:#2489ce}.ui-btn-up-a{border:1px solid #222;background:#333;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#333));background-image:-webkit-linear-gradient(#555,#333);background-image:-moz-linear-gradient(#555,#333);background-image:-ms-linear-gradient(#555,#333);background-image:-o-linear-gradient(#555,#333);background-image:linear-gradient(#555,#333)}.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#666),to(#444));background-image:-webkit-linear-gradient(#666,#444);background-image:-moz-linear-gradient(#666,#444);background-image:-ms-linear-gradient(#666,#444);background-image:-o-linear-gradient(#666,#444);background-image:linear-gradient(#666,#444)}.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#333),to(#5a5a5a));background-image:-webkit-linear-gradient(#333,#5a5a5a);background-image:-moz-linear-gradient(#333,#5a5a5a);background-image:-ms-linear-gradient(#333,#5a5a5a);background-image:-o-linear-gradient(#333,#5a5a5a);background-image:linear-gradient(#333,#5a5a5a)}.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-webkit-gradient(linear,left top,left bottom,from(#81a8ce),to(#5e87b0));background-image:-webkit-linear-gradient(#81a8ce,#5e87b0);background-image:-moz-linear-gradient(#81a8ce,#5e87b0);background-image:-ms-linear-gradient(#81a8ce,#5e87b0);background-image:-o-linear-gradient(#81a8ce,#5e87b0);background-image:linear-gradient(#81a8ce,#5e87b0)}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#ddf0f8;font-weight:bold}.ui-bar-b .ui-link:hover{color:#ddf0f8}.ui-bar-b .ui-link:active{color:#ddf0f8}.ui-bar-b .ui-link:visited{color:#ddf0f8}.ui-body-b,.ui-dialog.ui-overlay-b{border:1px solid #c6c6c6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#e6e6e6),to(#ccc));background-image:-webkit-linear-gradient(#e6e6e6,#ccc);background-image:-moz-linear-gradient(#e6e6e6,#ccc);background-image:-ms-linear-gradient(#e6e6e6,#ccc);background-image:-o-linear-gradient(#e6e6e6,#ccc);background-image:linear-gradient(#e6e6e6,#ccc)}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-body-b .ui-link:visited{color:#2489ce}.ui-btn-up-b{border:1px solid #145072;background:#2567ab;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #145072;background-image:-webkit-gradient(linear,left top,left bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(#5f9cc5,#396b9e);background-image:-moz-linear-gradient(#5f9cc5,#396b9e);background-image:-ms-linear-gradient(#5f9cc5,#396b9e);background-image:-o-linear-gradient(#5f9cc5,#396b9e);background-image:linear-gradient(#5f9cc5,#396b9e)}.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #014d68;background-image:-webkit-gradient(linear,left top,left bottom,from(#72b0d4),to(#4b88b6));background-image:-webkit-linear-gradient(#72b0d4,#4b88b6);background-image:-moz-linear-gradient(#72b0d4,#4b88b6);background-image:-ms-linear-gradient(#72b0d4,#4b88b6);background-image:-o-linear-gradient(#72b0d4,#4b88b6);background-image:linear-gradient(#72b0d4,#4b88b6)}.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #225377;background-image:-webkit-gradient(linear,left top,left bottom,from(#396b9e),to(#4e89c5));background-image:-webkit-linear-gradient(#396b9e,#4e89c5);background-image:-moz-linear-gradient(#396b9e,#4e89c5);background-image:-ms-linear-gradient(#396b9e,#4e89c5);background-image:-o-linear-gradient(#396b9e,#4e89c5);background-image:linear-gradient(#396b9e,#4e89c5)}.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#e9eaeb;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#e9eaeb));background-image:-webkit-linear-gradient(#f0f0f0,#e9eaeb);background-image:-moz-linear-gradient(#f0f0f0,#e9eaeb);background-image:-ms-linear-gradient(#f0f0f0,#e9eaeb);background-image:-o-linear-gradient(#f0f0f0,#e9eaeb);background-image:linear-gradient(#f0f0f0,#e9eaeb)}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c .ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-c .ui-link:hover{color:#2489ce}.ui-bar-c .ui-link:active{color:#2489ce}.ui-bar-c .ui-link:visited{color:#2489ce}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c,.ui-dialog.ui-overlay-c{border:1px solid #b3b3b3;color:#333;text-shadow:0 1px 0 #fff;background:#f0f0f0;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#ddd));background-image:-webkit-linear-gradient(#eee,#ddd);background-image:-moz-linear-gradient(#eee,#ddd);background-image:-ms-linear-gradient(#eee,#ddd);background-image:-o-linear-gradient(#eee,#ddd);background-image:linear-gradient(#eee,#ddd)}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-body-c .ui-link:visited{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#444;text-shadow:0 1px 1px #f6f6f6;background-image:-webkit-gradient(linear,left top,left bottom,from(#fdfdfd),to(#eee));background-image:-webkit-linear-gradient(#fdfdfd,#eee);background-image:-moz-linear-gradient(#fdfdfd,#eee);background-image:-ms-linear-gradient(#fdfdfd,#eee);background-image:-o-linear-gradient(#fdfdfd,#eee);background-image:linear-gradient(#fdfdfd,#eee)}.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dadada;font-weight:bold;color:#101010;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#ededed),to(#dadada));background-image:-webkit-linear-gradient(#ededed,#dadada);background-image:-moz-linear-gradient(#ededed,#dadada);background-image:-ms-linear-gradient(#ededed,#dadada);background-image:-o-linear-gradient(#ededed,#dadada);background-image:linear-gradient(#ededed,#dadada)}.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #808080;background:#fdfdfd;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fdfdfd));background-image:-webkit-linear-gradient(#eee,#fdfdfd);background-image:-moz-linear-gradient(#eee,#fdfdfd);background-image:-ms-linear-gradient(#eee,#fdfdfd);background-image:-o-linear-gradient(#eee,#fdfdfd);background-image:linear-gradient(#eee,#fdfdfd)}.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #ccc;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(#ddd,#bbb);background-image:-moz-linear-gradient(#ddd,#bbb);background-image:-ms-linear-gradient(#ddd,#bbb);background-image:-o-linear-gradient(#ddd,#bbb);background-image:linear-gradient(#ddd,#bbb)}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-bar-d .ui-link:hover{color:#2489ce}.ui-bar-d .ui-link:active{color:#2489ce}.ui-bar-d .ui-link:visited{color:#2489ce}.ui-body-d,.ui-dialog.ui-overlay-d{border:1px solid #ccc;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-body-d .ui-link:visited{color:#2489ce}.ui-btn-up-d{border:1px solid #ccc;background:#fff;font-weight:bold;color:#444;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#222;cursor:pointer;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fdfdfd),to(#eee));background-image:-webkit-linear-gradient(#fdfdfd,#eee);background-image:-moz-linear-gradient(#fdfdfd,#eee);background-image:-ms-linear-gradient(#fdfdfd,#eee);background-image:-o-linear-gradient(#fdfdfd,#eee);background-image:linear-gradient(#fdfdfd,#eee)}.ui-btn-hover-d a.ui-link-inherit{color:#222}.ui-btn-down-d{border:1px solid #aaa;background:#fff;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(#eee,#fff);background-image:-moz-linear-gradient(#eee,#fff);background-image:-ms-linear-gradient(#eee,#fff);background-image:-o-linear-gradient(#eee,#fff);background-image:linear-gradient(#eee,#fff)}.ui-btn-down-d a.ui-link-inherit{color:#111}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fadb4e));background-image:-webkit-linear-gradient(#fceda7,#fadb4e);background-image:-moz-linear-gradient(#fceda7,#fadb4e);background-image:-ms-linear-gradient(#fceda7,#fadb4e);background-image:-o-linear-gradient(#fceda7,#fadb4e);background-image:linear-gradient(#fceda7,#fadb4e)}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-bar-e .ui-link:hover{color:#2489ce}.ui-bar-e .ui-link:active{color:#2489ce}.ui-bar-e .ui-link:visited{color:#2489ce}.ui-body-e,.ui-dialog.ui-overlay-e{border:1px solid #f7c942;color:#333;text-shadow:0 1px 0 #fff;background:#faeb9e;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#faeb9e));background-image:-webkit-linear-gradient(#fff,#faeb9e);background-image:-moz-linear-gradient(#fff,#faeb9e);background-image:-ms-linear-gradient(#fff,#faeb9e);background-image:-o-linear-gradient(#fff,#faeb9e);background-image:linear-gradient(#fff,#faeb9e)}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-body-e .ui-link:visited{color:#2489ce}.ui-btn-up-e{border:1px solid #f7c942;background:#fadb4e;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fadb4e));background-image:-webkit-linear-gradient(#fceda7,#fadb4e);background-image:-moz-linear-gradient(#fceda7,#fadb4e);background-image:-ms-linear-gradient(#fceda7,#fadb4e);background-image:-o-linear-gradient(#fceda7,#fadb4e);background-image:linear-gradient(#fceda7,#fadb4e)}.ui-btn-up-e a.ui-link-inherit{color:#333}.ui-btn-hover-e{border:1px solid #e79952;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf0b5),to(#fbe26f));background-image:-webkit-linear-gradient(#fcf0b5,#fbe26f);background-image:-moz-linear-gradient(#fcf0b5,#fbe26f);background-image:-ms-linear-gradient(#fcf0b5,#fbe26f);background-image:-o-linear-gradient(#fcf0b5,#fbe26f);background-image:linear-gradient(#fcf0b5,#fbe26f)}.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f7c942;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fadb4e),to(#fceda7));background-image:-webkit-linear-gradient(#fadb4e,#fceda7);background-image:-moz-linear-gradient(#fadb4e,#fceda7);background-image:-ms-linear-gradient(#fadb4e,#fceda7);background-image:-o-linear-gradient(#fadb4e,#fceda7);background-image:linear-gradient(#fadb4e,#fceda7)}.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #155678;background:#4596ce;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px #145072;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(#85bae4),to(#5393c5));background-image:-webkit-linear-gradient(#85bae4,#5393c5);background-image:-moz-linear-gradient(#85bae4,#5393c5);background-image:-ms-linear-gradient(#85bae4,#5393c5);background-image:-o-linear-gradient(#85bae4,#5393c5);background-image:linear-gradient(#85bae4,#5393c5);font-family:Helvetica,Arial,sans-serif}.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-corner-none{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-br{border-bottom:#828282;border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{pointer-events:none;cursor:default}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-resolution:240dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:776px 18px;-o-background-size:776px 18px;-webkit-background-size:776px 18px;background-size:776px 18px}.ui-icon-alt{background-image:url(images/icons-36-black.png)}}.ui-icon-plus{background-position:-0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-180px 50%}.ui-icon-arrow-d{background-position:-216px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-288px 50%}.ui-icon-refresh{background-position:-324px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-396px 50%}.ui-icon-grid{background-position:-432px 50%}.ui-icon-star{background-position:-468px 50%}.ui-icon-alert{background-position:-504px 50%}.ui-icon-info{background-position:-540px 50%}.ui-icon-home{background-position:-576px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-612px 50%}.ui-icon-checkbox-off{background-position:-684px 50%}.ui-icon-checkbox-on{background-position:-648px 50%}.ui-icon-radio-off{background-position:-756px 50%}.ui-icon-radio-on{background-position:-720px 50%}.ui-checkbox .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{background-color:#4596ce}.ui-icon-loading{background-image:url(images/ajax-loader.png);width:40px;height:40px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;background-size:35px 35px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus{outline-width:2px}.ui-mobile,.ui-mobile body{height:100%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile,.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile,.ui-mobile .ui-page{min-height:300px}}.ui-page.ui-mobile-touch-overflow,.ui-mobile-touch-overflow.ui-native-fixed .ui-content{overflow:auto;height:100%;-webkit-overflow-scrolling:touch;-moz-overflow-scrolling:touch;-o-overflow-scrolling:touch;-ms-overflow-scrolling:touch;overflow-scrolling:touch}.ui-page.ui-mobile-touch-overflow,.ui-page.ui-mobile-touch-overflow *{-webkit-transform:rotateY(0)}.ui-page.ui-mobile-pre-transition{display:block}.ui-loading .ui-mobile-viewport{overflow:hidden!important}.ui-loading .ui-loader{display:block}.ui-loading .ui-page{overflow:hidden}.ui-loader{display:none;position:absolute;opacity:.85;z-index:100;left:50%;width:200px;margin-left:-130px;margin-top:-35px;padding:10px 30px}.ui-loader h1{font-size:15px;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0 auto;width:35px;height:35px;background-color:transparent}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{display:block}.ui-page .ui-header,.ui-page .ui-footer{position:relative}.ui-header .ui-btn-left{position:absolute;left:10px;top:.4em}.ui-header .ui-btn-right{position:absolute;right:10px;top:.4em}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 90px .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-page-fullscreen .ui-content{padding:0}.ui-mobile-touch-overflow.ui-page.ui-native-fixed,.ui-mobile-touch-overflow.ui-page.ui-native-fullscreen{overflow:visible}.ui-mobile-touch-overflow.ui-native-fixed .ui-header,.ui-mobile-touch-overflow.ui-native-fixed .ui-footer{position:fixed;left:0;right:0;top:0;z-index:200}.ui-mobile-touch-overflow.ui-page.ui-native-fixed .ui-footer{top:auto;bottom:0}.ui-mobile-touch-overflow.ui-native-fixed .ui-content{padding-top:2.5em;padding-bottom:3em;top:0;bottom:0;height:auto;position:absolute}.ui-mobile-touch-overflow.ui-native-fullscreen .ui-content{padding-top:0;padding-bottom:0}.ui-mobile-touch-overflow.ui-native-fullscreen .ui-header,.ui-mobile-touch-overflow.ui-native-fullscreen .ui-footer{opacity:.9}.ui-native-bars-hidden{display:none}.ui-icon{width:18px;height:18px}.ui-fullscreen img{max-width:100%}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.spin{-webkit-transform:rotate(360deg);-webkit-animation-name:spin;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear}@-webkit-keyframes spin{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.in,.out{-webkit-animation-timing-function:ease-in-out;-webkit-animation-duration:350ms}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft}.slideup.out{-webkit-animation-name:dontmove;z-index:0}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;z-index:10}.slideup.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slideup.out.reverse{-webkit-transform:translateY(100%);z-index:10;-webkit-animation-name:slideouttobottom}.slidedown.out{-webkit-animation-name:dontmove;z-index:0}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;z-index:10}.slidedown.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slidedown.out.reverse{-webkit-transform:translateY(-100%);z-index:10;-webkit-animation-name:slideouttotop}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(100%)}}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{z-index:0;-webkit-animation-name:fadeout}.fade.in{opacity:1;z-index:10;-webkit-animation-name:fadein}.viewport-flip{-webkit-perspective:1000;position:absolute}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden}.flip{-webkit-animation-duration:.65s;-webkit-backface-visibility:hidden;-webkit-transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-180deg) scale(.8);-webkit-animation-name:flipouttoleft}.flip.in{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromleft}.flip.out.reverse{-webkit-transform:rotateY(180deg) scale(.8);-webkit-animation-name:flipouttoright}.flip.in.reverse{-webkit-transform:rotateY(0) scale(1);-webkit-animation-name:flipinfromright}@-webkit-keyframes flipinfromright{from{-webkit-transform:rotateY(-180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipinfromleft{from{-webkit-transform:rotateY(180deg) scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(-180deg) scale(.8)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0) scale(1)}to{-webkit-transform:rotateY(180deg) scale(.8)}}@-webkit-keyframes dontmove{from{opacity:1}to{opacity:1}}.pop{-webkit-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);opacity:1;-webkit-animation-name:popin;z-index:10}.pop.in.reverse{z-index:0;-webkit-animation-name:dontmove}.pop.out.reverse{-webkit-transform:scale(.2);opacity:0;-webkit-animation-name:popout;z-index:10}@-webkit-keyframes popin{from{-webkit-transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.2);opacity:0}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px}.ui-grid-solo .ui-block-a{width:100%;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%}.ui-grid-d .ui-block-a{clear:left}.ui-header,.ui-footer,.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{position:absolute;overflow:hidden;width:100%;border-left-width:0;border-right-width:0}.ui-header-fixed,.ui-footer-fixed{z-index:1000;-webkit-transform:translateZ(0)}.ui-footer-duplicate,.ui-page-fullscreen .ui-fixed-inline{display:none}.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{opacity:.9}.ui-navbar{overflow:hidden}.ui-navbar ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsed ul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li .ui-btn:last-child{margin-right:0}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 5px;padding:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar .ui-btn{display:inline-block;font-size:13px;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.6em 25px;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-bar .ui-btn-inner{padding:.4em 8px .5em}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:2px 1px 2px 3px}.ui-btn-text{position:relative;z-index:1}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:33px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-bar .ui-btn-icon-left .ui-btn-inner{padding-left:27px}.ui-btn-icon-right .ui-btn-inner{padding-right:33px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-bar .ui-btn-icon-right .ui-btn-inner{padding-right:27px}.ui-btn-icon-top .ui-btn-inner{padding-top:33px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-bar .ui-btn-icon-top .ui-btn-inner{padding-top:27px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:33px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner,.ui-bar .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:27px}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-icon,.ui-btn-icon-bottom .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-bar .ui-btn-icon-left .ui-icon{left:4px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-bar .ui-btn-icon-right .ui-icon{right:4px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-bar .ui-btn-icon-top .ui-icon{top:4px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-bar .ui-btn-icon-bottom .ui-icon{bottom:4px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=.0001);font-size:1px;border:0;line-height:999px}.ui-collapsible{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading a{text-align:left;margin:0}.ui-collapsible-heading a .ui-btn-inner{padding-left:40px}.ui-collapsible-heading a span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading a span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -8px;padding:10px 16px;border-top:0;background-image:none;font-weight:normal}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em}.ui-bar .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em}.ui-controlgroup-controls{display:block;width:100%}.ui-controlgroup li{list-style:none}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-controls label.ui-select{position:absolute;left:-9999px}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-select{display:inline-block;margin:0 -5px 0 0}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}@media all and (min-width:450px){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:60%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{max-width:500px;margin:10% auto 15px auto;width:85%;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{padding:0 15px;z-index:10}.ui-dialog .ui-content{padding:15px}.ui-dialog .ui-content,.ui-dialog .ui-footer{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:0;text-align:left;z-index:2}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain{padding:1.5em 0;margin:0;border-bottom-width:1px;overflow:visible}.ui-field-contain:first-child{border-top-width:0}@media all and (min-width:450px){.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{overflow:hidden}.ui-select .ui-btn{opacity:1}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;opacity:0;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);z-index:2}.ui-select .ui-disabled{opacity:.3}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1;text-indent:0}.ui-select .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{position:absolute;padding:0;z-index:1100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:450px){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:60%;display:inline-block}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:97%}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{padding:0 30px;background-image:none;position:relative}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search input.ui-input-text{border:0;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-input-search .ui-input-clear-hidden{display:none}@media all and (min-width:450px){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search{width:60%;display:inline-block}.ui-field-contain .ui-input-search{width:50%}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search{padding:.4em;width:97%}.ui-input-search input.ui-input-text{width:98%}}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold}.ui-li-divider{counter-reset:listnumbering}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child,.ui-li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px .7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:60px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:30px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-has-count .ui-btn-text{padding-right:15px}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:95px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:38px}.ui-li-divider .ui-li-count,.ui-li-static .ui-li-count{right:10px}.ui-li-has-alt .ui-li-count{right:55px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-listview-filter-inset{margin:-15px -5px -15px -5px;background:transparent}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}input.ui-slider-input,.ui-field-contain input.ui-slider-input{display:inline-block;width:50px}select.ui-slider-switch{display:none}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:60%}div.ui-slider-switch{width:99.8%}a.ui-slider-handle{position:absolute;z-index:10;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px}a.ui-slider-handle .ui-btn-inner{padding-left:0;padding-right:0}@media all and (min-width:480px){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{width:43%}}div.ui-slider-switch{height:32px;overflow:hidden;margin-left:0}div.ui-slider-inneroffset{margin-left:50%;position:absolute;top:1px;height:100%;width:50%}a.ui-slider-handle-snapping{-webkit-transition:left 70ms linear}div.ui-slider-labelbg{position:absolute;top:0;margin:0;border-width:0}div.ui-slider-switch div.ui-slider-labelbg-a{width:60%;height:100%;left:0}div.ui-slider-switch div.ui-slider-labelbg-b{width:60%;height:100%;right:0}.ui-slider-switch-a div.ui-slider-labelbg-a,.ui-slider-switch-b div.ui-slider-labelbg-b{z-index:-1}.ui-slider-switch-a div.ui-slider-labelbg-b,.ui-slider-switch-b div.ui-slider-labelbg-a{z-index:0}div.ui-slider-switch a.ui-slider-handle{z-index:20;width:101%;height:32px;margin-top:-18px;margin-left:-101%}span.ui-slider-label{width:100%;position:absolute;height:32px;font-size:16px;text-align:center;line-height:2;background:0;border-color:transparent}span.ui-slider-label-a{left:-100%;margin-right:-1px}span.ui-slider-label-b{right:-100%;margin-left:-1px}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/filesystem.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/filesystem.html
new file mode 100644 (file)
index 0000000..3d27b34
--- /dev/null
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+    <title>Tizen API Demos</title>
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Filesystem</h2>
+            <p>API that allows accessing the device file system.</p>
+
+            <ul>
+            <li><span class="entry-title">resolve</span>
+            <p class="desc">Resolves a location to a File handle.</p>
+            <li><span class="entry-title">listFiles</span>
+            <p class="desc">Returns list of all files of this directory.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+ function successCB(files) {
+   
+   alert("There are " + files.length  + "files in the selected folder");
+   
+   var result = new Array();
+   for (var i = 0; i < files.length; i++) {
+      if (files[i].isDirectory == true) {   
+         result[i] = "directory name : " + files[i].name;
+      }
+      else {
+         result[i] = "file name : " + files[i].name;
+      }
+   }
+   if (result.length)
+      alert(result.join("\n"));
+
+ }
+
+ function errorCB(error) {
+   alert("The error " + error.message + " occurred when listing the files in the selected folder");
+ }
+
+ tizen.filesystem.resolve(
+      "images",
+     function(dir){
+       dir.listFiles(successCB, errorCB)
+     }, function(e){
+       alert("Error " + e.message);
+     }, "r"
+ );
+</pre>
+            </div>
+
+            <li><span class="entry-title">listStorages</span>
+            <p class="desc">List the available storages on the device.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+        function on_success(storages)
+        {
+                for (var i in storages) {
+                        alert("Storage[" + i + 
+                                        "] Label[" + storages[i].label + 
+                                        "] Type[" + storages[i].type +
+                                        "] State[" + storages[i].state + "]");
+                }
+        }
+        function on_error(err)
+        {
+                alert("Error occurred: [" + err.message +"]");
+        }
+        tizen.filesystem.listStorages(on_success, on_error);
+</pre>
+            </div>
+            </ul>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/geocoder.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/geocoder.html
new file mode 100644 (file)
index 0000000..88dd2cd
--- /dev/null
@@ -0,0 +1,117 @@
+<!DOCTYPE html>\r
+<html>\r
+<head>\r
+    <meta charset="utf-8">\r
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">\r
+    <title>Tizen API Demos</title>\r
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />\r
+    <link rel="stylesheet" href="css/jqm-docs.css"/>\r
+    <link rel="stylesheet" href="css/demo.css"/>\r
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>\r
+    <script src="js/jqm-docs.js"></script>\r
+    <script src="js/jquery.mobile-1.0.min.js"></script>\r
+    <script src="js/demo.js"></script>\r
+       <script type="text/javascript">  \r
+\r
+       function errcb()\r
+       {\r
+               alert('invalid credential');\r
+       }\r
+       \r
+       function successcb()\r
+       {\r
+               alert('register success');\r
+       }\r
+       \r
+       function setOption() \r
+       {\r
+               var idLen = document.getElementById("ID").value.length;\r
+               var pwLen = document.getElementById("PASSWORD").value.length;\r
+       \r
+               if(idLen == 0 || pwLen == 0)\r
+               {\r
+                       alert('invalid credential');\r
+               }else\r
+               {\r
+                       var options = {\r
+                               "ID" : document.getElementById("ID").value,\r
+                               "PASSWORD" : document.getElementById("PASSWORD").value\r
+                       }\r
+                       tizen.lbs.geocoder.getDefaultProvider().setOptions(options, successcb, errcb);          \r
+               }\r
+       }\r
+       </script>\r
+</head>\r
+<body>\r
+<div data-role="page" class="type-interior">\r
+    <div data-role="header" data-theme="a">\r
+        <h1>Kitchen Sink</h1>\r
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>\r
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>\r
+    </div><!-- /header -->\r
+\r
+    <div data-role="content">\r
+        <div class="content-primary">\r
+            <h2>Geocoder</h2>\r
+            <p>This API provides interface and methods for transforming an address to a coordinate.</p>\r
+\r
+            <ul>\r
+            <li><span class="entry-title">getDefaultProvider</span>\r
+            <p class="desc">Get the default GeocoderProvider</p>\r
+            <span class="entry-title">geocode</span>\r
+            <p class="desc">Transform address to coordinates</p>\r
+                       ID <input type="text" id="ID"/>\r
+                       PASSWORD <input type="password" id="PASSWORD"/>\r
+                       <button id="authorize" onclick="setOption();">authorize</button>\r
+            <span class="heading">Demo</span>\r
+            <div class="content examplecode">\r
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>\r
+<pre class="prettyprint">\r
+function geocoding()\r
+{\r
+       try\r
+       {\r
+               addr = 'Seoul';\r
+               ret = tizen.lbs.geocoder.getDefaultProvider().geocode(addr, onsuccess, errorcb, null);\r
+       }catch(err)\r
+       {\r
+               alert('error : '+ err.message);\r
+       }\r
+}\r
+\r
+function onsuccess(results)\r
+{\r
+       for(i =0 ; results.length;  i++)\r
+       {\r
+               alert("latitude: "+results[i].coordinates.latitude+", longitude: "+ results[i].coordinates.longitude);\r
+       }\r
+}\r
+\r
+function errorcb()\r
+{\r
+       alert('Converting fail !!!!');\r
+}\r
+\r
+geocoding();\r
+\r
+</pre>\r
+            </div>\r
+            </ul>\r
+        </div><!--/content-primary -->\r
+\r
+        <div class="content-secondary">\r
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">\r
+                <h3>API Demos</h3>\r
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">\r
+                    </ul>\r
+            </div>\r
+        </div>\r
+    </div><!-- /content -->\r
+\r
+    <div data-role="footer" class="footer-docs" data-theme="c">\r
+        <p></p>\r
+    </div>\r
+</div><!-- /page -->\r
+</body>\r
+</html>\r
+\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/index.html
new file mode 100644 (file)
index 0000000..b598e95
--- /dev/null
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
+    <meta name="description" content="The Kitchen Sink is an application that demonstrates some of the Tizen APIs."/>
+
+    <title>Tizen Web IDE - Tizen - Kitchen Sink</title>
+
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Kitchen Sink</h2>
+            <p>The Kitchen Sink is an app that demonstrates some of the Tizen APIs.</p>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul id="toc" data-role="listview" data-theme="c" data-dividertheme="d">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/js/demo.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/js/demo.js
new file mode 100644 (file)
index 0000000..97a7b58
--- /dev/null
@@ -0,0 +1,64 @@
+function run(o) {
+    var code = $(o).parent().find('pre').text();
+    eval(code);
+}
+
+// disable ajax to call ready() for each document
+$.mobile.ajaxEnabled = false;
+
+//Initialize function
+var init = function () {
+    console.log("init() called");
+
+    $('#toc').load('toc.html', function() {
+        $('#toc').listview('refresh');
+    });
+
+    $(".content").hide();
+    // toggle the component with class msg_body
+    $(".heading").hover(function() {
+        $(this).css("cursor", "pointer");
+    });
+    $(".heading").click(function () {
+        $(this).next(".content").slideToggle(300);
+    });
+    
+    $('#closeBt').click(function () {
+       tizen.application.exit();
+    });
+};
+$(document).ready(init);
+
+/**
+* Shows a toast message.
+*
+* @param msg
+* @param options { duration: <duration (in milliseconds)>, fadeOut: <how long the animation will run (in milliseconds)> }
+*/
+jQuery.fn.toast = function (msg, options) {
+   var settings = jQuery.extend({
+       duration: 1500, fadeOut: 1000
+   }, options);
+
+   $("<div class='ui-loader ui-body-c ui-corner-all'><h1>" + msg + "</h1></div>").css({
+       "display": "block",
+       "top": $(window).scrollTop() + 150
+       })
+       .appendTo($.mobile.pageContainer)
+       .delay(settings.duration)
+       .fadeOut(settings.fadeOut, function() {
+           $(this).remove();
+       }
+   );
+};
+
+// Override alert function
+/* It must be sequential. For example, toast() in for loop can not display each information.
+function alert(s) {
+   $().toast(s);
+}
+*/
+function toastMessage(s) {
+   $().toast(s);
+}
+
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/js/jqm-docs.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/js/jqm-docs.js
new file mode 100644 (file)
index 0000000..ffe9526
--- /dev/null
@@ -0,0 +1,55 @@
+//set up the theme switcher on the homepage
+$('div').live('pagecreate',function(event){
+       if( !$(this).is('.ui-dialog')){ 
+               var appendEl = $(this).find('.ui-footer:last');
+               
+               if( !appendEl.length ){
+                       appendEl = $(this).find('.ui-content');
+               }
+               
+               if( appendEl.is("[data-position]") ){
+                       return;
+               }
+               
+               $('<a href="#themeswitcher" data-'+ $.mobile.ns +'rel="dialog" data-'+ $.mobile.ns +'transition="pop">Switch theme</a>')
+                       .buttonMarkup({
+                               'icon':'gear',
+                               'inline': true,
+                               'shadow': false,
+                               'theme': 'd'
+                       })
+                       .appendTo( appendEl )
+                       .wrap('<div class="jqm-themeswitcher">')
+                       .bind( "vclick", function(){
+                               $.themeswitcher();
+                       });
+       }       
+
+});
+
+//collapse page navs after use
+$(function(){
+       $('body').delegate('.content-secondary .ui-collapsible-content', 'click',  function(){
+               $(this).trigger("collapse")
+       });
+});
+
+function setDefaultTransition(){
+       var winwidth = $( window ).width(),
+               trans ="slide";
+               
+       if( winwidth >= 1000 ){
+               trans = "none";
+       }
+       else if( winwidth >= 650 ){
+               trans = "fade";
+       }
+
+       $.mobile.defaultPageTransition = trans;
+}
+
+
+$(function(){
+       setDefaultTransition();
+       $( window ).bind( "throttledresize", setDefaultTransition );
+});
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/js/jquery.mobile-1.0.min.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/js/jquery.mobile-1.0.min.js
new file mode 100644 (file)
index 0000000..0fca54b
--- /dev/null
@@ -0,0 +1,172 @@
+/*! jQuery Mobile v1.0 jquerymobile.com | jquery.org/license */
+(function(a,e){if(a.cleanData){var b=a.cleanData;a.cleanData=function(f){for(var c=0,h;(h=f[c])!=null;c++)a(h).triggerHandler("remove");b(f)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){a(this).triggerHandler("remove")});return d.call(a(this),b,c)})}}a.widget=function(b,c,h){var d=b.split(".")[0],e,b=b.split(".")[1];e=d+"-"+b;if(!h)h=c,c=a.Widget;a.expr[":"][e]=function(c){return!!a.data(c,
+b)};a[d]=a[d]||{};a[d][b]=function(a,b){arguments.length&&this._createWidget(a,b)};c=new c;c.options=a.extend(true,{},c.options);a[d][b].prototype=a.extend(true,c,{namespace:d,widgetName:b,widgetEventPrefix:a[d][b].prototype.widgetEventPrefix||b,widgetBaseClass:e},h);a.widget.bridge(b,a[d][b])};a.widget.bridge=function(b,c){a.fn[b]=function(d){var g=typeof d==="string",i=Array.prototype.slice.call(arguments,1),k=this,d=!g&&i.length?a.extend.apply(null,[true,d].concat(i)):d;if(g&&d.charAt(0)==="_")return k;
+g?this.each(function(){var c=a.data(this,b);if(!c)throw"cannot call methods on "+b+" prior to initialization; attempted to call method '"+d+"'";if(!a.isFunction(c[d]))throw"no such method '"+d+"' for "+b+" widget instance";var g=c[d].apply(c,i);if(g!==c&&g!==e)return k=g,false}):this.each(function(){var e=a.data(this,b);e?e.option(d||{})._init():a.data(this,b,new c(d,this))});return k}};a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",
+options:{disabled:false},_createWidget:function(b,c){a.data(c,this.widgetName,this);this.element=a(c);this.options=a.extend(true,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){var b={};a.metadata&&(b=a.metadata.get(element)[this.widgetName]);return b},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);
+this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(b,c){var d=b;if(arguments.length===0)return a.extend({},this.options);if(typeof b==="string"){if(c===e)return this.options[b];d={};d[b]=c}this._setOptions(d);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b;a==="disabled"&&
+this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(b,c,d){var e=this.options[b],c=a.Event(c);c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase();d=d||{};if(c.originalEvent)for(var b=a.event.props.length,i;b;)i=a.event.props[--b],c[i]=c.originalEvent[i];this.element.trigger(c,
+d);return!(a.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+(function(a,e){a.widget("mobile.widget",{_createWidget:function(){a.Widget.prototype._createWidget.apply(this,arguments);this._trigger("init")},_getCreateOptions:function(){var b=this.element,d={};a.each(this.options,function(a){var c=b.jqmData(a.replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()}));c!==e&&(d[a]=c)});return d},enhanceWithin:function(b){var d=a(b).closest(":jqmData(role='page')").data("page"),d=d&&d.keepNativeSelector()||"";a(this.options.initSelector,b).not(d)[this.widgetName]()}})})(jQuery);
+(function(a){a(window);var e=a("html");a.mobile.media=function(){var b={},d=a("<div id='jquery-mediatest'>"),f=a("<body>").append(d);return function(a){if(!(a in b)){var h=document.createElement("style"),g="@media "+a+" { #jquery-mediatest { position:absolute; } }";h.type="text/css";h.styleSheet?h.styleSheet.cssText=g:h.appendChild(document.createTextNode(g));e.prepend(f).prepend(h);b[a]=d.css("position")==="absolute";f.add(h).remove()}return b[a]}}()})(jQuery);
+(function(a,e){function b(a){var b=a.charAt(0).toUpperCase()+a.substr(1),a=(a+" "+c.join(b+" ")+b).split(" "),d;for(d in a)if(f[a[d]]!==e)return true}var d=a("<body>").prependTo("html"),f=d[0].style,c=["Webkit","Moz","O"],h="palmGetResource"in window,g=window.operamini&&{}.toString.call(window.operamini)==="[object OperaMini]",i=window.blackberry;a.mobile.browser={};a.mobile.browser.ie=function(){for(var a=3,b=document.createElement("div"),c=b.all||[];b.innerHTML="<\!--[if gt IE "+ ++a+"]><br><![endif]--\>",
+c[0];);return a>4?a:!a}();a.extend(a.support,{orientation:"orientation"in window&&"onorientationchange"in window,touch:"ontouchend"in document,cssTransitions:"WebKitTransitionEvent"in window,pushState:"pushState"in history&&"replaceState"in history,mediaquery:a.mobile.media("only all"),cssPseudoElement:!!b("content"),touchOverflow:!!b("overflowScrolling"),boxShadow:!!b("boxShadow")&&!i,scrollTop:("pageXOffset"in window||"scrollTop"in document.documentElement||"scrollTop"in d[0])&&!h&&!g,dynamicBaseTag:function(){var b=
+location.protocol+"//"+location.host+location.pathname+"ui-dir/",c=a("head base"),f=null,e="",h;c.length?e=c.attr("href"):c=f=a("<base>",{href:b}).appendTo("head");h=a("<a href='testurl' />").prependTo(d)[0].href;c[0].href=e||location.pathname;f&&f.remove();return h.indexOf(b)===0}()});d.remove();h=function(){var a=window.navigator.userAgent;return a.indexOf("Nokia")>-1&&(a.indexOf("Symbian/3")>-1||a.indexOf("Series60/5")>-1)&&a.indexOf("AppleWebKit")>-1&&a.match(/(BrowserNG|NokiaBrowser)\/7\.[0-3]/)}();
+a.mobile.ajaxBlacklist=window.blackberry&&!window.WebKitPoint||g||h;h&&a(function(){a("head link[rel='stylesheet']").attr("rel","alternate stylesheet").attr("rel","stylesheet")});a.support.boxShadow||a("html").addClass("ui-mobile-nosupport-boxshadow")})(jQuery);
+(function(a,e,b,d){function f(a){for(;a&&typeof a.originalEvent!=="undefined";)a=a.originalEvent;return a}function c(b){for(var c={},f,d;b;){f=a.data(b,n);for(d in f)if(f[d])c[d]=c.hasVirtualBinding=true;b=b.parentNode}return c}function h(){v&&(clearTimeout(v),v=0);v=setTimeout(function(){E=v=0;u.length=0;D=false;y=true},a.vmouse.resetTimerDuration)}function g(b,c,r){var e,h;if(!(h=r&&r[b])){if(r=!r)a:{for(r=c.target;r;){if((h=a.data(r,n))&&(!b||h[b]))break a;r=r.parentNode}r=null}h=r}if(h){e=c;var r=
+e.type,j,g;e=a.Event(e);e.type=b;h=e.originalEvent;j=a.event.props;if(h)for(g=j.length;g;)b=j[--g],e[b]=h[b];if(r.search(/mouse(down|up)|click/)>-1&&!e.which)e.which=1;if(r.search(/^touch/)!==-1&&(b=f(h),r=b.touches,b=b.changedTouches,r=r&&r.length?r[0]:b&&b.length?b[0]:d))for(h=0,len=z.length;h<len;h++)b=z[h],e[b]=r[b];a(c.target).trigger(e)}return e}function i(b){var c=a.data(b.target,A);if(!D&&(!E||E!==c))if(c=g("v"+b.type,b))c.isDefaultPrevented()&&b.preventDefault(),c.isPropagationStopped()&&
+b.stopPropagation(),c.isImmediatePropagationStopped()&&b.stopImmediatePropagation()}function k(b){var d=f(b).touches,e;if(d&&d.length===1&&(e=b.target,d=c(e),d.hasVirtualBinding))E=r++,a.data(e,A,E),v&&(clearTimeout(v),v=0),w=y=false,e=f(b).touches[0],x=e.pageX,t=e.pageY,g("vmouseover",b,d),g("vmousedown",b,d)}function l(a){y||(w||g("vmousecancel",a,c(a.target)),w=true,h())}function o(b){if(!y){var d=f(b).touches[0],r=w,e=a.vmouse.moveDistanceThreshold;w=w||Math.abs(d.pageX-x)>e||Math.abs(d.pageY-
+t)>e;flags=c(b.target);w&&!r&&g("vmousecancel",b,flags);g("vmousemove",b,flags);h()}}function m(a){if(!y){y=true;var b=c(a.target),d;g("vmouseup",a,b);if(!w&&(d=g("vclick",a,b))&&d.isDefaultPrevented())d=f(a).changedTouches[0],u.push({touchID:E,x:d.clientX,y:d.clientY}),D=true;g("vmouseout",a,b);w=false;h()}}function p(b){var b=a.data(b,n),c;if(b)for(c in b)if(b[c])return true;return false}function j(){}function q(b){var c=b.substr(1);return{setup:function(){p(this)||a.data(this,n,{});a.data(this,
+n)[b]=true;s[b]=(s[b]||0)+1;s[b]===1&&B.bind(c,i);a(this).bind(c,j);if(C)s.touchstart=(s.touchstart||0)+1,s.touchstart===1&&B.bind("touchstart",k).bind("touchend",m).bind("touchmove",o).bind("scroll",l)},teardown:function(){--s[b];s[b]||B.unbind(c,i);C&&(--s.touchstart,s.touchstart||B.unbind("touchstart",k).unbind("touchmove",o).unbind("touchend",m).unbind("scroll",l));var d=a(this),f=a.data(this,n);f&&(f[b]=false);d.unbind(c,j);p(this)||d.removeData(n)}}}var n="virtualMouseBindings",A="virtualTouchID",
+e="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),z="clientX clientY pageX pageY screenX screenY".split(" "),s={},v=0,x=0,t=0,w=false,u=[],D=false,y=false,C="addEventListener"in b,B=a(b),r=1,E=0;a.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(var F=0;F<e.length;F++)a.event.special[e[F]]=q(e[F]);C&&b.addEventListener("click",function(b){var c=u.length,d=b.target,f,r,e,h,j;if(c){f=b.clientX;r=b.clientY;threshold=a.vmouse.clickDistanceThreshold;
+for(e=d;e;){for(h=0;h<c;h++)if(j=u[h],e===d&&Math.abs(j.x-f)<threshold&&Math.abs(j.y-r)<threshold||a.data(e,A)===j.touchID){b.preventDefault();b.stopPropagation();return}e=e.parentNode}}},true)})(jQuery,window,document);
+(function(a,e,b){function d(b,c,d){var f=d.type;d.type=c;a.event.handle.call(b,d);d.type=f}a.each("touchstart touchmove touchend orientationchange throttledresize tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(b,c){a.fn[c]=function(a){return a?this.bind(c,a):this.trigger(c)};a.attrFn[c]=true});var f=a.support.touch,c=f?"touchstart":"mousedown",h=f?"touchend":"mouseup",g=f?"touchmove":"mousemove";a.event.special.scrollstart={enabled:true,setup:function(){function b(a,
+e){f=e;d(c,f?"scrollstart":"scrollstop",a)}var c=this,f,e;a(c).bind("touchmove scroll",function(c){a.event.special.scrollstart.enabled&&(f||b(c,true),clearTimeout(e),e=setTimeout(function(){b(c,false)},50))})}};a.event.special.tap={setup:function(){var b=this,c=a(b);c.bind("vmousedown",function(f){function e(){clearTimeout(q)}function h(){e();c.unbind("vclick",g).unbind("vmouseup",e).unbind("vmousecancel",h)}function g(a){h();j==a.target&&d(b,"tap",a)}if(f.which&&f.which!==1)return false;var j=f.target,
+q;c.bind("vmousecancel",h).bind("vmouseup",e).bind("vclick",g);q=setTimeout(function(){d(b,"taphold",a.Event("taphold"))},750)})}};a.event.special.swipe={scrollSupressionThreshold:10,durationThreshold:1E3,horizontalDistanceThreshold:30,verticalDistanceThreshold:75,setup:function(){var d=a(this);d.bind(c,function(c){function f(b){if(m){var c=b.originalEvent.touches?b.originalEvent.touches[0]:b;p={time:(new Date).getTime(),coords:[c.pageX,c.pageY]};Math.abs(m.coords[0]-p.coords[0])>a.event.special.swipe.scrollSupressionThreshold&&
+b.preventDefault()}}var e=c.originalEvent.touches?c.originalEvent.touches[0]:c,m={time:(new Date).getTime(),coords:[e.pageX,e.pageY],origin:a(c.target)},p;d.bind(g,f).one(h,function(){d.unbind(g,f);m&&p&&p.time-m.time<a.event.special.swipe.durationThreshold&&Math.abs(m.coords[0]-p.coords[0])>a.event.special.swipe.horizontalDistanceThreshold&&Math.abs(m.coords[1]-p.coords[1])<a.event.special.swipe.verticalDistanceThreshold&&m.origin.trigger("swipe").trigger(m.coords[0]>p.coords[0]?"swipeleft":"swiperight");
+m=p=b})})}};(function(a,b){function c(){var a=f();a!==e&&(e=a,d.trigger("orientationchange"))}var d=a(b),f,e;a.event.special.orientationchange={setup:function(){if(a.support.orientation&&a.mobile.orientationChangeEnabled)return false;e=f();d.bind("throttledresize",c)},teardown:function(){if(a.support.orientation&&a.mobile.orientationChangeEnabled)return false;d.unbind("throttledresize",c)},add:function(a){var b=a.handler;a.handler=function(a){a.orientation=f();return b.apply(this,arguments)}}};a.event.special.orientationchange.orientation=
+f=function(){var c=true,c=document.documentElement;return(c=a.support.orientation?b.orientation%180==0:c&&c.clientWidth/c.clientHeight<1.1)?"portrait":"landscape"}})(jQuery,e);(function(){a.event.special.throttledresize={setup:function(){a(this).bind("resize",b)},teardown:function(){a(this).unbind("resize",b)}};var b=function(){f=(new Date).getTime();e=f-c;e>=250?(c=f,a(this).trigger("throttledresize")):(d&&clearTimeout(d),d=setTimeout(b,250-e))},c=0,d,f,e})();a.each({scrollstop:"scrollstart",taphold:"tap",
+swipeleft:"swipe",swiperight:"swipe"},function(b,c){a.event.special[b]={setup:function(){a(this).bind(c,a.noop)}}})})(jQuery,this);
+(function(a,e,b){function d(a){a=a||location.href;return"#"+a.replace(/^[^#]*#?(.*)$/,"$1")}var f="hashchange",c=document,h,g=a.event.special,i=c.documentMode,k="on"+f in e&&(i===b||i>7);a.fn[f]=function(a){return a?this.bind(f,a):this.trigger(f)};a.fn[f].delay=50;g[f]=a.extend(g[f],{setup:function(){if(k)return false;a(h.start)},teardown:function(){if(k)return false;a(h.stop)}});h=function(){function h(){var b=d(),c=n(p);if(b!==p)q(p=b,c),a(e).trigger(f);else if(c!==p)location.href=location.href.replace(/#.*/,
+"")+c;i=setTimeout(h,a.fn[f].delay)}var g={},i,p=d(),j=function(a){return a},q=j,n=j;g.start=function(){i||h()};g.stop=function(){i&&clearTimeout(i);i=b};a.browser.msie&&!k&&function(){var b,e;g.start=function(){if(!b)e=(e=a.fn[f].src)&&e+d(),b=a('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){e||q(d());h()}).attr("src",e||"javascript:0").insertAfter("body")[0].contentWindow,c.onpropertychange=function(){try{if(event.propertyName==="title")b.document.title=c.title}catch(a){}}};
+g.stop=j;n=function(){return d(b.location.href)};q=function(d,e){var h=b.document,g=a.fn[f].domain;if(d!==e)h.title=c.title,h.open(),g&&h.write('<script>document.domain="'+g+'"<\/script>'),h.close(),b.location.hash=d}}();return g}()})(jQuery,this);
+(function(a){a.widget("mobile.page",a.mobile.widget,{options:{theme:"c",domCache:false,keepNativeDefault:":jqmData(role='none'), :jqmData(role='nojs')"},_create:function(){this._trigger("beforecreate");this.element.attr("tabindex","0").addClass("ui-page ui-body-"+this.options.theme)},keepNativeSelector:function(){var e=this.options;return e.keepNative&&a.trim(e.keepNative)&&e.keepNative!==e.keepNativeDefault?[e.keepNative,e.keepNativeDefault].join(", "):e.keepNativeDefault}})})(jQuery);
+(function(a,e){var b={};a.extend(a.mobile,{ns:"",subPageUrlKey:"ui-page",activePageClass:"ui-page-active",activeBtnClass:"ui-btn-active",ajaxEnabled:true,hashListeningEnabled:true,linkBindingEnabled:true,defaultPageTransition:"slide",minScrollBack:250,defaultDialogTransition:"pop",loadingMessage:"loading",pageLoadErrorMessage:"Error Loading Page",autoInitializePage:true,pushStateEnabled:true,orientationChangeEnabled:true,gradeA:function(){return a.support.mediaquery||a.mobile.browser.ie&&a.mobile.browser.ie>=
+7},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91},silentScroll:function(b){if(a.type(b)!=="number")b=a.mobile.defaultHomeScroll;a.event.special.scrollstart.enabled=false;
+setTimeout(function(){e.scrollTo(0,b);a(document).trigger("silentscroll",{x:0,y:b})},20);setTimeout(function(){a.event.special.scrollstart.enabled=true},150)},nsNormalizeDict:b,nsNormalize:function(c){return!c?void 0:b[c]||(b[c]=a.camelCase(a.mobile.ns+c))},getInheritedTheme:function(a,b){for(var d=a[0],f="",e=/ui-(bar|body)-([a-z])\b/,l,o;d;){l=d.className||"";if((o=e.exec(l))&&(f=o[2]))break;d=d.parentNode}return f||b||"a"}});a.fn.jqmData=function(b,d){var f;typeof b!="undefined"&&(f=this.data(b?
+a.mobile.nsNormalize(b):b,d));return f};a.jqmData=function(b,d,f){var e;typeof d!="undefined"&&(e=a.data(b,d?a.mobile.nsNormalize(d):d,f));return e};a.fn.jqmRemoveData=function(b){return this.removeData(a.mobile.nsNormalize(b))};a.jqmRemoveData=function(b,d){return a.removeData(b,a.mobile.nsNormalize(d))};a.fn.removeWithDependents=function(){a.removeWithDependents(this)};a.removeWithDependents=function(b){b=a(b);(b.jqmData("dependents")||a()).remove();b.remove()};a.fn.addDependents=function(b){a.addDependents(a(this),
+b)};a.addDependents=function(b,d){var f=a(b).jqmData("dependents")||a();a(b).jqmData("dependents",a.merge(f,d))};a.fn.getEncodedText=function(){return a("<div/>").text(a(this).text()).html()};var d=a.find,f=/:jqmData\(([^)]*)\)/g;a.find=function(b,e,g,i){b=b.replace(f,"[data-"+(a.mobile.ns||"")+"$1]");return d.call(this,b,e,g,i)};a.extend(a.find,d);a.find.matches=function(b,d){return a.find(b,null,null,d)};a.find.matchesSelector=function(b,d){return a.find(d,null,null,[b]).length>0}})(jQuery,this);
+(function(a,e){function b(a){var b=a.find(".ui-title:eq(0)");b.length?b.focus():a.focus()}function d(b){q&&(!q.closest(".ui-page-active").length||b)&&q.removeClass(a.mobile.activeBtnClass);q=null}function f(){z=false;A.length>0&&a.mobile.changePage.apply(null,A.pop())}function c(c,d,f,e){var g=a.mobile.urlHistory.getActive(),j=a.support.touchOverflow&&a.mobile.touchOverflowEnabled,i=g.lastScroll||(j?0:a.mobile.defaultHomeScroll),g=h();window.scrollTo(0,a.mobile.defaultHomeScroll);d&&d.data("page")._trigger("beforehide",
+null,{nextPage:c});j||c.height(g+i);c.data("page")._trigger("beforeshow",null,{prevPage:d||a("")});a.mobile.hidePageLoadingMsg();j&&i&&(c.addClass("ui-mobile-pre-transition"),b(c),c.is(".ui-native-fixed")?c.find(".ui-content").scrollTop(i):c.scrollTop(i));f=(a.mobile.transitionHandlers[f||"none"]||a.mobile.defaultTransitionHandler)(f,e,c,d);f.done(function(){j||(c.height(""),b(c));j||a.mobile.silentScroll(i);d&&(j||d.height(""),d.data("page")._trigger("hide",null,{nextPage:c}));c.data("page")._trigger("show",
+null,{prevPage:d||a("")})});return f}function h(){var b=a.event.special.orientationchange.orientation()==="portrait",c=b?screen.availHeight:screen.availWidth,b=Math.max(b?480:320,a(window).height());return Math.min(c,b)}function g(){(!a.support.touchOverflow||!a.mobile.touchOverflowEnabled)&&a("."+a.mobile.activePageClass).css("min-height",h())}function i(b,c){c&&b.attr("data-"+a.mobile.ns+"role",c);b.page()}function k(a){for(;a;){if(typeof a.nodeName==="string"&&a.nodeName.toLowerCase()=="a")break;
+a=a.parentNode}return a}function l(b){var b=a(b).closest(".ui-page").jqmData("url"),c=t.hrefNoHash;if(!b||!j.isPath(b))b=c;return j.makeUrlAbsolute(b,c)}var o=a(window),m=a("html"),p=a("head"),j={urlParseRE:/^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,parseUrl:function(b){if(a.type(b)==="object")return b;b=j.urlParseRE.exec(b||"")||[];return{href:b[0]||"",hrefNoHash:b[1]||
+"",hrefNoSearch:b[2]||"",domain:b[3]||"",protocol:b[4]||"",doubleSlash:b[5]||"",authority:b[6]||"",username:b[8]||"",password:b[9]||"",host:b[10]||"",hostname:b[11]||"",port:b[12]||"",pathname:b[13]||"",directory:b[14]||"",filename:b[15]||"",search:b[16]||"",hash:b[17]||""}},makePathAbsolute:function(a,b){if(a&&a.charAt(0)==="/")return a;for(var a=a||"",c=(b=b?b.replace(/^\/|(\/[^\/]*|[^\/]+)$/g,""):"")?b.split("/"):[],d=a.split("/"),f=0;f<d.length;f++){var e=d[f];switch(e){case ".":break;case "..":c.length&&
+c.pop();break;default:c.push(e)}}return"/"+c.join("/")},isSameDomain:function(a,b){return j.parseUrl(a).domain===j.parseUrl(b).domain},isRelativeUrl:function(a){return j.parseUrl(a).protocol===""},isAbsoluteUrl:function(a){return j.parseUrl(a).protocol!==""},makeUrlAbsolute:function(a,b){if(!j.isRelativeUrl(a))return a;var c=j.parseUrl(a),d=j.parseUrl(b),f=c.protocol||d.protocol,e=c.protocol?c.doubleSlash:c.doubleSlash||d.doubleSlash,h=c.authority||d.authority,g=c.pathname!=="",i=j.makePathAbsolute(c.pathname||
+d.filename,d.pathname);return f+e+h+i+(c.search||!g&&d.search||"")+c.hash},addSearchParams:function(b,c){var d=j.parseUrl(b),f=typeof c==="object"?a.param(c):c,e=d.search||"?";return d.hrefNoSearch+e+(e.charAt(e.length-1)!=="?"?"&":"")+f+(d.hash||"")},convertUrlToDataUrl:function(a){var b=j.parseUrl(a);if(j.isEmbeddedPage(b))return b.hash.split(s)[0].replace(/^#/,"");else if(j.isSameDomain(b,t))return b.hrefNoHash.replace(t.domain,"");return a},get:function(a){if(a===e)a=location.hash;return j.stripHash(a).replace(/[^\/]*\.[^\/*]+$/,
+"")},getFilePath:function(b){var c="&"+a.mobile.subPageUrlKey;return b&&b.split(c)[0].split(s)[0]},set:function(a){location.hash=a},isPath:function(a){return/\//.test(a)},clean:function(a){return a.replace(t.domain,"")},stripHash:function(a){return a.replace(/^#/,"")},cleanHash:function(a){return j.stripHash(a.replace(/\?.*$/,"").replace(s,""))},isExternal:function(a){a=j.parseUrl(a);return a.protocol&&a.domain!==x.domain?true:false},hasProtocol:function(a){return/^(:?\w+:)/.test(a)},isFirstPageUrl:function(b){var b=
+j.parseUrl(j.makeUrlAbsolute(b,t)),c=a.mobile.firstPage,c=c&&c[0]?c[0].id:e;return(b.hrefNoHash===x.hrefNoHash||w&&b.hrefNoHash===t.hrefNoHash)&&(!b.hash||b.hash==="#"||c&&b.hash.replace(/^#/,"")===c)},isEmbeddedPage:function(a){a=j.parseUrl(a);return a.protocol!==""?a.hash&&(a.hrefNoHash===x.hrefNoHash||w&&a.hrefNoHash===t.hrefNoHash):/^#/.test(a.href)}},q=null,n={stack:[],activeIndex:0,getActive:function(){return n.stack[n.activeIndex]},getPrev:function(){return n.stack[n.activeIndex-1]},getNext:function(){return n.stack[n.activeIndex+
+1]},addNew:function(a,b,c,d,f){n.getNext()&&n.clearForward();n.stack.push({url:a,transition:b,title:c,pageUrl:d,role:f});n.activeIndex=n.stack.length-1},clearForward:function(){n.stack=n.stack.slice(0,n.activeIndex+1)},directHashChange:function(b){var c,d,f;this.getActive();a.each(n.stack,function(a,e){b.currentUrl===e.url&&(c=a<n.activeIndex,d=!c,f=a)});this.activeIndex=f!==e?f:this.activeIndex;c?(b.either||b.isBack)(true):d&&(b.either||b.isForward)(false)},ignoreNextHashChange:false},A=[],z=false,
+s="&ui-state=dialog",v=p.children("base"),x=j.parseUrl(location.href),t=v.length?j.parseUrl(j.makeUrlAbsolute(v.attr("href"),x.href)):x,w=x.hrefNoHash!==t.hrefNoHash,u=a.support.dynamicBaseTag?{element:v.length?v:a("<base>",{href:t.hrefNoHash}).prependTo(p),set:function(a){u.element.attr("href",j.makeUrlAbsolute(a,t))},reset:function(){u.element.attr("href",t.hrefNoHash)}}:e,D=true,y,C,B;y=function(){var b=o;a.support.touchOverflow&&a.mobile.touchOverflowEnabled&&(b=a(".ui-page-active"),b=b.is(".ui-native-fixed")?
+b.find(".ui-content"):b);return b};C=function(b){if(D){var c=a.mobile.urlHistory.getActive();if(c)b=b&&b.scrollTop(),c.lastScroll=b<a.mobile.minScrollBack?a.mobile.defaultHomeScroll:b}};B=function(){setTimeout(C,100,a(this))};o.bind(a.support.pushState?"popstate":"hashchange",function(){D=false});o.one(a.support.pushState?"popstate":"hashchange",function(){D=true});o.one("pagecontainercreate",function(){a.mobile.pageContainer.bind("pagechange",function(){var a=y();D=true;a.unbind("scrollstop",B);
+a.bind("scrollstop",B)})});y().bind("scrollstop",B);a.mobile.getScreenHeight=h;a.fn.animationComplete=function(b){return a.support.cssTransitions?a(this).one("webkitAnimationEnd",b):(setTimeout(b,0),a(this))};a.mobile.path=j;a.mobile.base=u;a.mobile.urlHistory=n;a.mobile.dialogHashKey=s;a.mobile.noneTransitionHandler=function(b,c,d,f){f&&f.removeClass(a.mobile.activePageClass);d.addClass(a.mobile.activePageClass);return a.Deferred().resolve(b,c,d,f).promise()};a.mobile.defaultTransitionHandler=a.mobile.noneTransitionHandler;
+a.mobile.transitionHandlers={none:a.mobile.defaultTransitionHandler};a.mobile.allowCrossDomainPages=false;a.mobile.getDocumentUrl=function(b){return b?a.extend({},x):x.href};a.mobile.getDocumentBase=function(b){return b?a.extend({},t):t.href};a.mobile._bindPageRemove=function(){var b=a(this);!b.data("page").options.domCache&&b.is(":jqmData(external-page='true')")&&b.bind("pagehide.remove",function(){var b=a(this),c=new a.Event("pageremove");b.trigger(c);c.isDefaultPrevented()||b.removeWithDependents()})};
+a.mobile.loadPage=function(b,c){var d=a.Deferred(),f=a.extend({},a.mobile.loadPage.defaults,c),h=null,g=null,m=j.makeUrlAbsolute(b,a.mobile.activePage&&l(a.mobile.activePage)||t.hrefNoHash);if(f.data&&f.type==="get")m=j.addSearchParams(m,f.data),f.data=e;if(f.data&&f.type==="post")f.reloadPage=true;var s=j.getFilePath(m),p=j.convertUrlToDataUrl(m);f.pageContainer=f.pageContainer||a.mobile.pageContainer;h=f.pageContainer.children(":jqmData(url='"+p+"')");h.length===0&&p&&!j.isPath(p)&&(h=f.pageContainer.children("#"+
+p).attr("data-"+a.mobile.ns+"url",p));if(h.length===0)if(a.mobile.firstPage&&j.isFirstPageUrl(s))a.mobile.firstPage.parent().length&&(h=a(a.mobile.firstPage));else if(j.isEmbeddedPage(s))return d.reject(m,c),d.promise();u&&u.reset();if(h.length){if(!f.reloadPage)return i(h,f.role),d.resolve(m,c,h),d.promise();g=h}var n=f.pageContainer,k=new a.Event("pagebeforeload"),q={url:b,absUrl:m,dataUrl:p,deferred:d,options:f};n.trigger(k,q);if(k.isDefaultPrevented())return d.promise();if(f.showLoadMsg)var v=
+setTimeout(function(){a.mobile.showPageLoadingMsg()},f.loadMsgDelay);!a.mobile.allowCrossDomainPages&&!j.isSameDomain(x,m)?d.reject(m,c):a.ajax({url:s,type:f.type,data:f.data,dataType:"html",success:function(e,n,k){var o=a("<div></div>"),l=e.match(/<title[^>]*>([^<]*)/)&&RegExp.$1,t=RegExp("\\bdata-"+a.mobile.ns+"url=[\"']?([^\"'>]*)[\"']?");RegExp("(<[^>]+\\bdata-"+a.mobile.ns+"role=[\"']?page[\"']?[^>]*>)").test(e)&&RegExp.$1&&t.test(RegExp.$1)&&RegExp.$1&&(b=s=j.getFilePath(RegExp.$1));u&&u.set(s);
+o.get(0).innerHTML=e;h=o.find(":jqmData(role='page'), :jqmData(role='dialog')").first();h.length||(h=a("<div data-"+a.mobile.ns+"role='page'>"+e.split(/<\/?body[^>]*>/gmi)[1]+"</div>"));l&&!h.jqmData("title")&&(~l.indexOf("&")&&(l=a("<div>"+l+"</div>").text()),h.jqmData("title",l));if(!a.support.dynamicBaseTag){var x=j.get(s);h.find("[src], link[href], a[rel='external'], :jqmData(ajax='false'), a[target]").each(function(){var b=a(this).is("[href]")?"href":a(this).is("[src]")?"src":"action",c=a(this).attr(b),
+c=c.replace(location.protocol+"//"+location.host+location.pathname,"");/^(\w+:|#|\/)/.test(c)||a(this).attr(b,x+c)})}h.attr("data-"+a.mobile.ns+"url",j.convertUrlToDataUrl(s)).attr("data-"+a.mobile.ns+"external-page",true).appendTo(f.pageContainer);h.one("pagecreate",a.mobile._bindPageRemove);i(h,f.role);m.indexOf("&"+a.mobile.subPageUrlKey)>-1&&(h=f.pageContainer.children(":jqmData(url='"+p+"')"));f.showLoadMsg&&(clearTimeout(v),a.mobile.hidePageLoadingMsg());q.xhr=k;q.textStatus=n;q.page=h;f.pageContainer.trigger("pageload",
+q);d.resolve(m,c,h,g)},error:function(b,e,h){u&&u.set(j.get());q.xhr=b;q.textStatus=e;q.errorThrown=h;b=new a.Event("pageloadfailed");f.pageContainer.trigger(b,q);b.isDefaultPrevented()||(f.showLoadMsg&&(clearTimeout(v),a.mobile.hidePageLoadingMsg(),a("<div class='ui-loader ui-overlay-shadow ui-body-e ui-corner-all'><h1>"+a.mobile.pageLoadErrorMessage+"</h1></div>").css({display:"block",opacity:0.96,top:o.scrollTop()+100}).appendTo(f.pageContainer).delay(800).fadeOut(400,function(){a(this).remove()})),
+d.reject(m,c))}});return d.promise()};a.mobile.loadPage.defaults={type:"get",data:e,reloadPage:false,role:e,showLoadMsg:false,pageContainer:e,loadMsgDelay:50};a.mobile.changePage=function(b,h){if(z)A.unshift(arguments);else{var g=a.extend({},a.mobile.changePage.defaults,h);g.pageContainer=g.pageContainer||a.mobile.pageContainer;g.fromPage=g.fromPage||a.mobile.activePage;var p=g.pageContainer,k=new a.Event("pagebeforechange"),q={toPage:b,options:g};p.trigger(k,q);if(!k.isDefaultPrevented())if(b=q.toPage,
+z=true,typeof b=="string")a.mobile.loadPage(b,g).done(function(b,c,d,f){z=false;c.duplicateCachedPage=f;a.mobile.changePage(d,c)}).fail(function(){z=false;d(true);f();g.pageContainer.trigger("pagechangefailed",q)});else{if(b[0]===a.mobile.firstPage[0]&&!g.dataUrl)g.dataUrl=x.hrefNoHash;var k=g.fromPage,l=g.dataUrl&&j.convertUrlToDataUrl(g.dataUrl)||b.jqmData("url"),v=l;j.getFilePath(l);var o=n.getActive(),t=n.activeIndex===0,w=0,u=document.title,y=g.role==="dialog"||b.jqmData("role")==="dialog";if(k&&
+k[0]===b[0]&&!g.allowSamePageTransition)z=false,p.trigger("pagechange",q);else{i(b,g.role);g.fromHashChange&&n.directHashChange({currentUrl:l,isBack:function(){w=-1},isForward:function(){w=1}});try{document.activeElement&&document.activeElement.nodeName.toLowerCase()!="body"?a(document.activeElement).blur():a("input:focus, textarea:focus, select:focus").blur()}catch(B){}y&&o&&(l=(o.url||"")+s);if(g.changeHash!==false&&l)n.ignoreNextHashChange=true,j.set(l);var C=!o?u:b.jqmData("title")||b.children(":jqmData(role='header')").find(".ui-title").getEncodedText();
+C&&u==document.title&&(u=C);b.jqmData("title")||b.jqmData("title",u);g.transition=g.transition||(w&&!t?o.transition:e)||(y?a.mobile.defaultDialogTransition:a.mobile.defaultPageTransition);w||n.addNew(l,g.transition,u,v,g.role);document.title=n.getActive().title;a.mobile.activePage=b;g.reverse=g.reverse||w<0;c(b,k,g.transition,g.reverse).done(function(){d();g.duplicateCachedPage&&g.duplicateCachedPage.remove();m.removeClass("ui-mobile-rendering");f();p.trigger("pagechange",q)})}}}};a.mobile.changePage.defaults=
+{transition:e,reverse:false,changeHash:true,fromHashChange:false,role:e,duplicateCachedPage:e,pageContainer:e,showLoadMsg:true,dataUrl:e,fromPage:e,allowSamePageTransition:false};a.mobile._registerInternalEvents=function(){a("form").live("submit",function(b){var c=a(this);if(a.mobile.ajaxEnabled&&!c.is(":jqmData(ajax='false')")){var d=c.attr("method"),f=c.attr("target"),e=c.attr("action");if(!e&&(e=l(c),e===t.hrefNoHash))e=x.hrefNoSearch;e=j.makeUrlAbsolute(e,l(c));!j.isExternal(e)&&!f&&(a.mobile.changePage(e,
+{type:d&&d.length&&d.toLowerCase()||"get",data:c.serialize(),transition:c.jqmData("transition"),direction:c.jqmData("direction"),reloadPage:true}),b.preventDefault())}});a(document).bind("vclick",function(b){if(!(b.which>1)&&a.mobile.linkBindingEnabled&&(b=k(b.target))&&j.parseUrl(b.getAttribute("href")||"#").hash!=="#")d(true),q=a(b).closest(".ui-btn").not(".ui-disabled"),q.addClass(a.mobile.activeBtnClass),a("."+a.mobile.activePageClass+" .ui-btn").not(b).blur()});a(document).bind("click",function(b){if(a.mobile.linkBindingEnabled){var c=
+k(b.target);if(c&&!(b.which>1)){var f=a(c),h=function(){window.setTimeout(function(){d(true)},200)};if(f.is(":jqmData(rel='back')"))return window.history.back(),false;var g=l(f),c=j.makeUrlAbsolute(f.attr("href")||"#",g);if(!a.mobile.ajaxEnabled&&!j.isEmbeddedPage(c))h();else{if(c.search("#")!=-1)if(c=c.replace(/[^#]*#/,""))c=j.isPath(c)?j.makeUrlAbsolute(c,g):j.makeUrlAbsolute("#"+c,x.hrefNoHash);else{b.preventDefault();return}var g=f.is("[rel='external']")||f.is(":jqmData(ajax='false')")||f.is("[target]"),
+i=a.mobile.allowCrossDomainPages&&x.protocol==="file:"&&c.search(/^https?:/)!=-1;g||j.isExternal(c)&&!i?h():(h=f.jqmData("transition"),g=(g=f.jqmData("direction"))&&g==="reverse"||f.jqmData("back"),f=f.attr("data-"+a.mobile.ns+"rel")||e,a.mobile.changePage(c,{transition:h,reverse:g,role:f}),b.preventDefault())}}}});a(".ui-page").live("pageshow.prefetch",function(){var b=[];a(this).find("a:jqmData(prefetch)").each(function(){var c=a(this),f=c.attr("href");f&&a.inArray(f,b)===-1&&(b.push(f),a.mobile.loadPage(f,
+{role:c.attr("data-"+a.mobile.ns+"rel")}))})});a.mobile._handleHashChange=function(b){var c=j.stripHash(b),f={transition:a.mobile.urlHistory.stack.length===0?"none":e,changeHash:false,fromHashChange:true};if(!a.mobile.hashListeningEnabled||n.ignoreNextHashChange)n.ignoreNextHashChange=false;else{if(n.stack.length>1&&c.indexOf(s)>-1)if(a.mobile.activePage.is(".ui-dialog"))n.directHashChange({currentUrl:c,either:function(b){var d=a.mobile.urlHistory.getActive();c=d.pageUrl;a.extend(f,{role:d.role,transition:d.transition,
+reverse:b})}});else{n.directHashChange({currentUrl:c,isBack:function(){window.history.back()},isForward:function(){window.history.forward()}});return}c?(c=typeof c==="string"&&!j.isPath(c)?j.makeUrlAbsolute("#"+c,t):c,a.mobile.changePage(c,f)):a.mobile.changePage(a.mobile.firstPage,f)}};o.bind("hashchange",function(){a.mobile._handleHashChange(location.hash)});a(document).bind("pageshow",g);a(window).bind("throttledresize",g)}})(jQuery);
+(function(a,e){var b={},d=a(e),f=a.mobile.path.parseUrl(location.href);a.extend(b,{initialFilePath:f.pathname+f.search,initialHref:f.hrefNoHash,hashchangeFired:false,state:function(){return{hash:location.hash||"#"+b.initialFilePath,title:document.title,initialHref:b.initialHref}},resetUIKeys:function(b){var f="&"+a.mobile.subPageUrlKey,d=b.indexOf(a.mobile.dialogHashKey);d>-1?b=b.slice(0,d)+"#"+b.slice(d):b.indexOf(f)>-1&&(b=b.split(f).join("#"+f));return b},nextHashChangePrevented:function(c){a.mobile.urlHistory.ignoreNextHashChange=
+c;b.onHashChangeDisabled=c},onHashChange:function(){if(!b.onHashChangeDisabled){var c,f;c=location.hash;var d=a.mobile.path.isPath(c),e=d?location.href:a.mobile.getDocumentUrl();c=d?c.replace("#",""):c;f=b.state();c=a.mobile.path.makeUrlAbsolute(c,e);d&&(c=b.resetUIKeys(c));history.replaceState(f,document.title,c)}},onPopState:function(c){var f=c.originalEvent.state;f&&(b.nextHashChangePrevented(true),setTimeout(function(){b.nextHashChangePrevented(false);a.mobile._handleHashChange(f.hash)},100))},
+init:function(){d.bind("hashchange",b.onHashChange);d.bind("popstate",b.onPopState);location.hash===""&&history.replaceState(b.state(),document.title,location.href)}});a(function(){a.mobile.pushStateEnabled&&a.support.pushState&&b.init()})})(jQuery,this);
+(function(a){function e(b,d,f,c){var e=new a.Deferred,g=d?" reverse":"",i="ui-mobile-viewport-transitioning viewport-"+b;f.animationComplete(function(){f.add(c).removeClass("out in reverse "+b);c&&c[0]!==f[0]&&c.removeClass(a.mobile.activePageClass);f.parent().removeClass(i);e.resolve(b,d,f,c)});f.parent().addClass(i);c&&c.addClass(b+" out"+g);f.addClass(a.mobile.activePageClass+" "+b+" in"+g);return e.promise()}a.mobile.css3TransitionHandler=e;if(a.mobile.defaultTransitionHandler===a.mobile.noneTransitionHandler)a.mobile.defaultTransitionHandler=
+e})(jQuery,this);
+(function(a){a.mobile.page.prototype.options.degradeInputs={color:false,date:false,datetime:false,"datetime-local":false,email:false,month:false,number:false,range:"number",search:"text",tel:false,time:false,url:false,week:false};a(document).bind("pagecreate create",function(e){var b=a(e.target).closest(':jqmData(role="page")').data("page"),d;if(b)d=b.options,a(e.target).find("input").not(b.keepNativeSelector()).each(function(){var b=a(this),c=this.getAttribute("type"),e=d.degradeInputs[c]||"text";
+if(d.degradeInputs[c]){var g=a("<div>").html(b.clone()).html(),i=g.indexOf(" type=")>-1;b.replaceWith(g.replace(i?/\s+type=["']?\w+['"]?/:/\/?>/,' type="'+e+'" data-'+a.mobile.ns+'type="'+c+'"'+(i?"":">")))}})})})(jQuery);
+(function(a,e){a.widget("mobile.dialog",a.mobile.widget,{options:{closeBtnText:"Close",overlayTheme:"a",initSelector:":jqmData(role='dialog')"},_create:function(){var b=this,d=this.element,f=a("<a href='#' data-"+a.mobile.ns+"icon='delete' data-"+a.mobile.ns+"iconpos='notext'>"+this.options.closeBtnText+"</a>");d.addClass("ui-overlay-"+this.options.overlayTheme);d.attr("role","dialog").addClass("ui-dialog").find(":jqmData(role='header')").addClass("ui-corner-top ui-overlay-shadow").prepend(f).end().find(":jqmData(role='content'),:jqmData(role='footer')").addClass("ui-overlay-shadow").last().addClass("ui-corner-bottom");
+f.bind("vclick",function(){b.close()});d.bind("vclick submit",function(b){var b=a(b.target).closest(b.type==="vclick"?"a":"form"),f;b.length&&!b.jqmData("transition")&&(f=a.mobile.urlHistory.getActive()||{},b.attr("data-"+a.mobile.ns+"transition",f.transition||a.mobile.defaultDialogTransition).attr("data-"+a.mobile.ns+"direction","reverse"))}).bind("pagehide",function(){a(this).find("."+a.mobile.activeBtnClass).removeClass(a.mobile.activeBtnClass)})},close:function(){e.history.back()}});a(a.mobile.dialog.prototype.options.initSelector).live("pagecreate",
+function(){a(this).dialog()})})(jQuery,this);
+(function(a){a.mobile.page.prototype.options.backBtnText="Back";a.mobile.page.prototype.options.addBackBtn=false;a.mobile.page.prototype.options.backBtnTheme=null;a.mobile.page.prototype.options.headerTheme="a";a.mobile.page.prototype.options.footerTheme="a";a.mobile.page.prototype.options.contentTheme=null;a(":jqmData(role='page'), :jqmData(role='dialog')").live("pagecreate",function(){var e=a(this),b=e.data("page").options,d=e.jqmData("role"),f=b.theme;a(":jqmData(role='header'), :jqmData(role='footer'), :jqmData(role='content')",
+this).each(function(){var c=a(this),e=c.jqmData("role"),g=c.jqmData("theme"),i=g||b.contentTheme||d==="dialog"&&f,k;c.addClass("ui-"+e);if(e==="header"||e==="footer"){var l=g||(e==="header"?b.headerTheme:b.footerTheme)||f;c.addClass("ui-bar-"+l).attr("role",e==="header"?"banner":"contentinfo");g=c.children("a");i=g.hasClass("ui-btn-left");k=g.hasClass("ui-btn-right");i=i||g.eq(0).not(".ui-btn-right").addClass("ui-btn-left").length;k||g.eq(1).addClass("ui-btn-right");b.addBackBtn&&e==="header"&&a(".ui-page").length>
+1&&c.jqmData("url")!==a.mobile.path.stripHash(location.hash)&&!i&&a("<a href='#' class='ui-btn-left' data-"+a.mobile.ns+"rel='back' data-"+a.mobile.ns+"icon='arrow-l'>"+b.backBtnText+"</a>").attr("data-"+a.mobile.ns+"theme",b.backBtnTheme||l).prependTo(c);c.children("h1, h2, h3, h4, h5, h6").addClass("ui-title").attr({tabindex:"0",role:"heading","aria-level":"1"})}else e==="content"&&(i&&c.addClass("ui-body-"+i),c.attr("role","main"))})})})(jQuery);
+(function(a){a.widget("mobile.collapsible",a.mobile.widget,{options:{expandCueText:" click to expand contents",collapseCueText:" click to collapse contents",collapsed:true,heading:"h1,h2,h3,h4,h5,h6,legend",theme:null,contentTheme:null,iconTheme:"d",initSelector:":jqmData(role='collapsible')"},_create:function(){var e=this.element,b=this.options,d=e.addClass("ui-collapsible"),f=e.children(b.heading).first(),c=d.wrapInner("<div class='ui-collapsible-content'></div>").find(".ui-collapsible-content"),
+h=e.closest(":jqmData(role='collapsible-set')").addClass("ui-collapsible-set"),e=h.children(":jqmData(role='collapsible')");f.is("legend")&&(f=a("<div role='heading'>"+f.html()+"</div>").insertBefore(f),f.next().remove());if(h.length){if(!b.theme)b.theme=h.jqmData("theme");if(!b.contentTheme)b.contentTheme=h.jqmData("content-theme")}c.addClass(b.contentTheme?"ui-body-"+b.contentTheme:"");f.insertBefore(c).addClass("ui-collapsible-heading").append("<span class='ui-collapsible-heading-status'></span>").wrapInner("<a href='#' class='ui-collapsible-heading-toggle'></a>").find("a").first().buttonMarkup({shadow:false,
+corners:false,iconPos:"left",icon:"plus",theme:b.theme});h.length?(h.jqmData("collapsiblebound")||h.jqmData("collapsiblebound",true).bind("expand",function(b){a(b.target).closest(".ui-collapsible").siblings(".ui-collapsible").trigger("collapse")}),e.first().find("a").first().addClass("ui-corner-top").find(".ui-btn-inner").addClass("ui-corner-top"),e.last().jqmData("collapsible-last",true).find("a").first().addClass("ui-corner-bottom").find(".ui-btn-inner").addClass("ui-corner-bottom"),d.jqmData("collapsible-last")&&
+f.find("a").first().add(f.find(".ui-btn-inner")).addClass("ui-corner-bottom")):f.find("a").first().add(f.find(".ui-btn-inner")).addClass("ui-corner-top ui-corner-bottom");d.bind("expand collapse",function(e){if(!e.isDefaultPrevented()){e.preventDefault();var i=a(this),e=e.type==="collapse",k=b.contentTheme;f.toggleClass("ui-collapsible-heading-collapsed",e).find(".ui-collapsible-heading-status").text(e?b.expandCueText:b.collapseCueText).end().find(".ui-icon").toggleClass("ui-icon-minus",!e).toggleClass("ui-icon-plus",
+e);i.toggleClass("ui-collapsible-collapsed",e);c.toggleClass("ui-collapsible-content-collapsed",e).attr("aria-hidden",e);if(k&&(!h.length||d.jqmData("collapsible-last")))f.find("a").first().add(f.find(".ui-btn-inner")).toggleClass("ui-corner-bottom",e),c.toggleClass("ui-corner-bottom",!e);c.trigger("updatelayout")}}).trigger(b.collapsed?"collapse":"expand");f.bind("click",function(a){var b=f.is(".ui-collapsible-heading-collapsed")?"expand":"collapse";d.trigger(b);a.preventDefault()})}});a(document).bind("pagecreate create",
+function(e){a(a.mobile.collapsible.prototype.options.initSelector,e.target).collapsible()})})(jQuery);(function(a){a.fn.fieldcontain=function(){return this.addClass("ui-field-contain ui-body ui-br")};a(document).bind("pagecreate create",function(e){a(":jqmData(role='fieldcontain')",e.target).fieldcontain()})})(jQuery);
+(function(a){a.fn.grid=function(e){return this.each(function(){var b=a(this),d=a.extend({grid:null},e),f=b.children(),c={solo:1,a:2,b:3,c:4,d:5},d=d.grid;if(!d)if(f.length<=5)for(var h in c)c[h]===f.length&&(d=h);else d="a";c=c[d];b.addClass("ui-grid-"+d);f.filter(":nth-child("+c+"n+1)").addClass("ui-block-a");c>1&&f.filter(":nth-child("+c+"n+2)").addClass("ui-block-b");c>2&&f.filter(":nth-child(3n+3)").addClass("ui-block-c");c>3&&f.filter(":nth-child(4n+4)").addClass("ui-block-d");c>4&&f.filter(":nth-child(5n+5)").addClass("ui-block-e")})}})(jQuery);
+(function(a,e){a.widget("mobile.navbar",a.mobile.widget,{options:{iconpos:"top",grid:null,initSelector:":jqmData(role='navbar')"},_create:function(){var b=this.element,d=b.find("a"),f=d.filter(":jqmData(icon)").length?this.options.iconpos:e;b.addClass("ui-navbar").attr("role","navigation").find("ul").grid({grid:this.options.grid});f||b.addClass("ui-navbar-noicons");d.buttonMarkup({corners:false,shadow:false,iconpos:f});b.delegate("a","vclick",function(){d.not(".ui-state-persist").removeClass(a.mobile.activeBtnClass);
+a(this).addClass(a.mobile.activeBtnClass)})}});a(document).bind("pagecreate create",function(b){a(a.mobile.navbar.prototype.options.initSelector,b.target).navbar()})})(jQuery);
+(function(a){var e={};a.widget("mobile.listview",a.mobile.widget,{options:{theme:null,countTheme:"c",headerTheme:"b",dividerTheme:"b",splitIcon:"arrow-r",splitTheme:"b",inset:false,initSelector:":jqmData(role='listview')"},_create:function(){var a=this;a.element.addClass(function(d,f){return f+" ui-listview "+(a.options.inset?" ui-listview-inset ui-corner-all ui-shadow ":"")});a.refresh(true)},_removeCorners:function(a,d){a=a.add(a.find(".ui-btn-inner, .ui-li-link-alt, .ui-li-thumb"));d==="top"?a.removeClass("ui-corner-top ui-corner-tr ui-corner-tl"):
+d==="bottom"?a.removeClass("ui-corner-bottom ui-corner-br ui-corner-bl"):a.removeClass("ui-corner-top ui-corner-tr ui-corner-tl ui-corner-bottom ui-corner-br ui-corner-bl")},_refreshCorners:function(a){var d,f;this.options.inset&&(d=this.element.children("li"),f=a?d.not(".ui-screen-hidden"):d.filter(":visible"),this._removeCorners(d),d=f.first().addClass("ui-corner-top"),d.add(d.find(".ui-btn-inner").not(".ui-li-link-alt span:first-child")).addClass("ui-corner-top").end().find(".ui-li-link-alt, .ui-li-link-alt span:first-child").addClass("ui-corner-tr").end().find(".ui-li-thumb").not(".ui-li-icon").addClass("ui-corner-tl"),
+f=f.last().addClass("ui-corner-bottom"),f.add(f.find(".ui-btn-inner")).find(".ui-li-link-alt").addClass("ui-corner-br").end().find(".ui-li-thumb").not(".ui-li-icon").addClass("ui-corner-bl"));a||this.element.trigger("updatelayout")},_findFirstElementByTagName:function(a,d,f,c){var e={};for(e[f]=e[c]=true;a;){if(e[a.nodeName])return a;a=a[d]}return null},_getChildrenByTagName:function(b,d,f){var c=[],e={};e[d]=e[f]=true;for(b=b.firstChild;b;)e[b.nodeName]&&c.push(b),b=b.nextSibling;return a(c)},_addThumbClasses:function(b){var d,
+f,c=b.length;for(d=0;d<c;d++)f=a(this._findFirstElementByTagName(b[d].firstChild,"nextSibling","img","IMG")),f.length&&(f.addClass("ui-li-thumb"),a(this._findFirstElementByTagName(f[0].parentNode,"parentNode","li","LI")).addClass(f.is(".ui-li-icon")?"ui-li-has-icon":"ui-li-has-thumb"))},refresh:function(b){this.parentPage=this.element.closest(".ui-page");this._createSubPages();var d=this.options,f=this.element,c=f.jqmData("dividertheme")||d.dividerTheme,e=f.jqmData("splittheme"),g=f.jqmData("spliticon"),
+i=this._getChildrenByTagName(f[0],"li","LI"),k=a.support.cssPseudoElement||!a.nodeName(f[0],"ol")?0:1,l={},o,m,p,j,q;k&&f.find(".ui-li-dec").remove();if(!d.theme)d.theme=a.mobile.getInheritedTheme(this.element,"c");for(var n=0,A=i.length;n<A;n++){o=i.eq(n);m="ui-li";if(b||!o.hasClass("ui-li"))p=o.jqmData("theme")||d.theme,j=this._getChildrenByTagName(o[0],"a","A"),j.length?(q=o.jqmData("icon"),o.buttonMarkup({wrapperEls:"div",shadow:false,corners:false,iconpos:"right",icon:j.length>1||q===false?false:
+q||"arrow-r",theme:p}),q!=false&&j.length==1&&o.addClass("ui-li-has-arrow"),j.first().addClass("ui-link-inherit"),j.length>1&&(m+=" ui-li-has-alt",j=j.last(),q=e||j.jqmData("theme")||d.splitTheme,j.appendTo(o).attr("title",j.getEncodedText()).addClass("ui-li-link-alt").empty().buttonMarkup({shadow:false,corners:false,theme:p,icon:false,iconpos:false}).find(".ui-btn-inner").append(a(document.createElement("span")).buttonMarkup({shadow:true,corners:true,theme:q,iconpos:"notext",icon:g||j.jqmData("icon")||
+d.splitIcon})))):o.jqmData("role")==="list-divider"?(m+=" ui-li-divider ui-btn ui-bar-"+c,o.attr("role","heading"),k&&(k=1)):m+=" ui-li-static ui-body-"+p;k&&m.indexOf("ui-li-divider")<0&&(p=o.is(".ui-li-static:first")?o:o.find(".ui-link-inherit"),p.addClass("ui-li-jsnumbering").prepend("<span class='ui-li-dec'>"+k++ +". </span>"));l[m]||(l[m]=[]);l[m].push(o[0])}for(m in l)a(l[m]).addClass(m).children(".ui-btn-inner").addClass(m);f.find("h1, h2, h3, h4, h5, h6").addClass("ui-li-heading").end().find("p, dl").addClass("ui-li-desc").end().find(".ui-li-aside").each(function(){var b=
+a(this);b.prependTo(b.parent())}).end().find(".ui-li-count").each(function(){a(this).closest("li").addClass("ui-li-has-count")}).addClass("ui-btn-up-"+(f.jqmData("counttheme")||this.options.countTheme)+" ui-btn-corner-all");this._addThumbClasses(i);this._addThumbClasses(f.find(".ui-link-inherit"));this._refreshCorners(b)},_idStringEscape:function(a){return a.replace(/[^a-zA-Z0-9]/g,"-")},_createSubPages:function(){var b=this.element,d=b.closest(".ui-page"),f=d.jqmData("url"),c=f||d[0][a.expando],
+h=b.attr("id"),g=this.options,i="data-"+a.mobile.ns,k=this,l=d.find(":jqmData(role='footer')").jqmData("id"),o;typeof e[c]==="undefined"&&(e[c]=-1);h=h||++e[c];a(b.find("li>ul, li>ol").toArray().reverse()).each(function(c){var d=a(this),e=d.attr("id")||h+"-"+c,c=d.parent(),k=a(d.prevAll().toArray().reverse()),k=k.length?k:a("<span>"+a.trim(c.contents()[0].nodeValue)+"</span>"),n=k.first().getEncodedText(),e=(f||"")+"&"+a.mobile.subPageUrlKey+"="+e,A=d.jqmData("theme")||g.theme,z=d.jqmData("counttheme")||
+b.jqmData("counttheme")||g.countTheme;o=true;d.detach().wrap("<div "+i+"role='page' "+i+"url='"+e+"' "+i+"theme='"+A+"' "+i+"count-theme='"+z+"'><div "+i+"role='content'></div></div>").parent().before("<div "+i+"role='header' "+i+"theme='"+g.headerTheme+"'><div class='ui-title'>"+n+"</div></div>").after(l?a("<div "+i+"role='footer' "+i+"id='"+l+"'>"):"").parent().appendTo(a.mobile.pageContainer).page();d=c.find("a:first");d.length||(d=a("<a/>").html(k||n).prependTo(c.empty()));d.attr("href","#"+e)}).listview();
+o&&d.is(":jqmData(external-page='true')")&&d.data("page").options.domCache===false&&d.unbind("pagehide.remove").bind("pagehide.remove",function(b,c){var e=c.nextPage;c.nextPage&&(e=e.jqmData("url"),e.indexOf(f+"&"+a.mobile.subPageUrlKey)!==0&&(k.childPages().remove(),d.remove()))})},childPages:function(){var b=this.parentPage.jqmData("url");return a(":jqmData(url^='"+b+"&"+a.mobile.subPageUrlKey+"')")}});a(document).bind("pagecreate create",function(b){a(a.mobile.listview.prototype.options.initSelector,
+b.target).listview()})})(jQuery);
+(function(a){a.mobile.listview.prototype.options.filter=false;a.mobile.listview.prototype.options.filterPlaceholder="Filter items...";a.mobile.listview.prototype.options.filterTheme="c";a.mobile.listview.prototype.options.filterCallback=function(a,b){return a.toLowerCase().indexOf(b)===-1};a(":jqmData(role='listview')").live("listviewcreate",function(){var e=a(this),b=e.data("listview");if(b.options.filter){var d=a("<form>",{"class":"ui-listview-filter ui-bar-"+b.options.filterTheme,role:"search"});
+a("<input>",{placeholder:b.options.filterPlaceholder}).attr("data-"+a.mobile.ns+"type","search").jqmData("lastval","").bind("keyup change",function(){var d=a(this),c=this.value.toLowerCase(),h=null,h=d.jqmData("lastval")+"",g=false,i="";d.jqmData("lastval",c);i=c.substr(0,h.length-1).replace(h,"");h=c.length<h.length||i.length!=c.length-h.length?e.children():e.children(":not(.ui-screen-hidden)");if(c){for(var k=h.length-1;k>=0;k--)d=a(h[k]),i=d.jqmData("filtertext")||d.text(),d.is("li:jqmData(role=list-divider)")?
+(d.toggleClass("ui-filter-hidequeue",!g),g=false):b.options.filterCallback(i,c)?d.toggleClass("ui-filter-hidequeue",true):g=true;h.filter(":not(.ui-filter-hidequeue)").toggleClass("ui-screen-hidden",false);h.filter(".ui-filter-hidequeue").toggleClass("ui-screen-hidden",true).toggleClass("ui-filter-hidequeue",false)}else h.toggleClass("ui-screen-hidden",false);b._refreshCorners()}).appendTo(d).textinput();a(this).jqmData("inset")&&d.addClass("ui-listview-filter-inset");d.bind("submit",function(){return false}).insertBefore(e)}})})(jQuery);
+(function(a){a(document).bind("pagecreate create",function(e){a(":jqmData(role='nojs')",e.target).addClass("ui-nojs")})})(jQuery);
+(function(a,e){a.widget("mobile.checkboxradio",a.mobile.widget,{options:{theme:null,initSelector:"input[type='checkbox'],input[type='radio']"},_create:function(){var b=this,d=this.element,f=d.closest("form,fieldset,:jqmData(role='page')").find("label[for='"+d[0].id+"']"),c=d.attr("type"),h=c+"-on",g=c+"-off",i=d.parents(":jqmData(type='horizontal')").length?e:g;if(!(c!=="checkbox"&&c!=="radio")){a.extend(this,{label:f,inputtype:c,checkedClass:"ui-"+h+(i?"":" "+a.mobile.activeBtnClass),uncheckedClass:"ui-"+
+g,checkedicon:"ui-icon-"+h,uncheckedicon:"ui-icon-"+g});if(!this.options.theme)this.options.theme=this.element.jqmData("theme");f.buttonMarkup({theme:this.options.theme,icon:i,shadow:false});d.add(f).wrapAll("<div class='ui-"+c+"'></div>");f.bind({vmouseover:function(b){a(this).parent().is(".ui-disabled")&&b.stopPropagation()},vclick:function(a){if(d.is(":disabled"))a.preventDefault();else return b._cacheVals(),d.prop("checked",c==="radio"&&true||!d.prop("checked")),d.triggerHandler("click"),b._getInputSet().not(d).prop("checked",
+false),b._updateAll(),false}});d.bind({vmousedown:function(){b._cacheVals()},vclick:function(){var c=a(this);c.is(":checked")?(c.prop("checked",true),b._getInputSet().not(c).prop("checked",false)):c.prop("checked",false);b._updateAll()},focus:function(){f.addClass("ui-focus")},blur:function(){f.removeClass("ui-focus")}});this.refresh()}},_cacheVals:function(){this._getInputSet().each(function(){var b=a(this);b.jqmData("cacheVal",b.is(":checked"))})},_getInputSet:function(){return this.inputtype==
+"checkbox"?this.element:this.element.closest("form,fieldset,:jqmData(role='page')").find("input[name='"+this.element.attr("name")+"'][type='"+this.inputtype+"']")},_updateAll:function(){var b=this;this._getInputSet().each(function(){var d=a(this);(d.is(":checked")||b.inputtype==="checkbox")&&d.trigger("change")}).checkboxradio("refresh")},refresh:function(){var b=this.element,d=this.label,f=d.find(".ui-icon");a(b[0]).prop("checked")?(d.addClass(this.checkedClass).removeClass(this.uncheckedClass),
+f.addClass(this.checkedicon).removeClass(this.uncheckedicon)):(d.removeClass(this.checkedClass).addClass(this.uncheckedClass),f.removeClass(this.checkedicon).addClass(this.uncheckedicon));b.is(":disabled")?this.disable():this.enable()},disable:function(){this.element.prop("disabled",true).parent().addClass("ui-disabled")},enable:function(){this.element.prop("disabled",false).parent().removeClass("ui-disabled")}});a(document).bind("pagecreate create",function(b){a.mobile.checkboxradio.prototype.enhanceWithin(b.target)})})(jQuery);
+(function(a,e){a.widget("mobile.button",a.mobile.widget,{options:{theme:null,icon:null,iconpos:null,inline:null,corners:true,shadow:true,iconshadow:true,initSelector:"button, [type='button'], [type='submit'], [type='reset'], [type='image']"},_create:function(){var b=this.element,d=this.options,f,c;this.button=a("<div></div>").text(b.text()||b.val()).insertBefore(b).buttonMarkup({theme:d.theme,icon:d.icon,iconpos:d.iconpos,inline:d.inline,corners:d.corners,shadow:d.shadow,iconshadow:d.iconshadow}).append(b.addClass("ui-btn-hidden"));
+d=b.attr("type");f=b.attr("name");d!=="button"&&d!=="reset"&&f&&b.bind("vclick",function(){c===e&&(c=a("<input>",{type:"hidden",name:b.attr("name"),value:b.attr("value")}).insertBefore(b),a(document).one("submit",function(){c.remove();c=e}))});this.refresh()},enable:function(){this.element.attr("disabled",false);this.button.removeClass("ui-disabled").attr("aria-disabled",false);return this._setOption("disabled",false)},disable:function(){this.element.attr("disabled",true);this.button.addClass("ui-disabled").attr("aria-disabled",
+true);return this._setOption("disabled",true)},refresh:function(){var a=this.element;a.prop("disabled")?this.disable():this.enable();this.button.data("textWrapper").text(a.text()||a.val())}});a(document).bind("pagecreate create",function(b){a.mobile.button.prototype.enhanceWithin(b.target)})})(jQuery);
+(function(a,e){a.widget("mobile.slider",a.mobile.widget,{options:{theme:null,trackTheme:null,disabled:false,initSelector:"input[type='range'], :jqmData(type='range'), :jqmData(role='slider')"},_create:function(){var b=this,d=this.element,f=a.mobile.getInheritedTheme(d,"c"),c=this.options.theme||f,h=this.options.trackTheme||f,g=d[0].nodeName.toLowerCase(),f=g=="select"?"ui-slider-switch":"",i=d.attr("id"),k=i+"-label",i=a("[for='"+i+"']").attr("id",k),l=function(){return g=="input"?parseFloat(d.val()):
+d[0].selectedIndex},o=g=="input"?parseFloat(d.attr("min")):0,m=g=="input"?parseFloat(d.attr("max")):d.find("option").length-1,p=window.parseFloat(d.attr("step")||1),j=a("<div class='ui-slider "+f+" ui-btn-down-"+h+" ui-btn-corner-all' role='application'></div>"),q=a("<a href='#' class='ui-slider-handle'></a>").appendTo(j).buttonMarkup({corners:true,theme:c,shadow:true}).attr({role:"slider","aria-valuemin":o,"aria-valuemax":m,"aria-valuenow":l(),"aria-valuetext":l(),title:l(),"aria-labelledby":k});
+a.extend(this,{slider:j,handle:q,dragging:false,beforeStart:null,userModified:false,mouseMoved:false});g=="select"&&(j.wrapInner("<div class='ui-slider-inneroffset'></div>"),q.addClass("ui-slider-handle-snapping"),d.find("option"),d.find("option").each(function(b){var c=!b?"b":"a",d=!b?"right":"left",b=!b?" ui-btn-down-"+h:" "+a.mobile.activeBtnClass;a("<div class='ui-slider-labelbg ui-slider-labelbg-"+c+b+" ui-btn-corner-"+d+"'></div>").prependTo(j);a("<span class='ui-slider-label ui-slider-label-"+
+c+b+" ui-btn-corner-"+d+"' role='img'>"+a(this).getEncodedText()+"</span>").prependTo(q)}));i.addClass("ui-slider");d.addClass(g==="input"?"ui-slider-input":"ui-slider-switch").change(function(){b.mouseMoved||b.refresh(l(),true)}).keyup(function(){b.refresh(l(),true,true)}).blur(function(){b.refresh(l(),true)});a(document).bind("vmousemove",function(a){if(b.dragging)return b.mouseMoved=true,g==="select"&&q.removeClass("ui-slider-handle-snapping"),b.refresh(a),b.userModified=b.beforeStart!==d[0].selectedIndex,
+false});j.bind("vmousedown",function(a){b.dragging=true;b.userModified=false;b.mouseMoved=false;if(g==="select")b.beforeStart=d[0].selectedIndex;b.refresh(a);return false});j.add(document).bind("vmouseup",function(){if(b.dragging)return b.dragging=false,g==="select"&&(q.addClass("ui-slider-handle-snapping"),b.mouseMoved?b.userModified?b.refresh(b.beforeStart==0?1:0):b.refresh(b.beforeStart):b.refresh(b.beforeStart==0?1:0)),b.mouseMoved=false});j.insertAfter(d);this.handle.bind("vmousedown",function(){a(this).focus()}).bind("vclick",
+false);this.handle.bind("keydown",function(c){var d=l();if(!b.options.disabled){switch(c.keyCode){case a.mobile.keyCode.HOME:case a.mobile.keyCode.END:case a.mobile.keyCode.PAGE_UP:case a.mobile.keyCode.PAGE_DOWN:case a.mobile.keyCode.UP:case a.mobile.keyCode.RIGHT:case a.mobile.keyCode.DOWN:case a.mobile.keyCode.LEFT:if(c.preventDefault(),!b._keySliding)b._keySliding=true,a(this).addClass("ui-state-active")}switch(c.keyCode){case a.mobile.keyCode.HOME:b.refresh(o);break;case a.mobile.keyCode.END:b.refresh(m);
+break;case a.mobile.keyCode.PAGE_UP:case a.mobile.keyCode.UP:case a.mobile.keyCode.RIGHT:b.refresh(d+p);break;case a.mobile.keyCode.PAGE_DOWN:case a.mobile.keyCode.DOWN:case a.mobile.keyCode.LEFT:b.refresh(d-p)}}}).keyup(function(){if(b._keySliding)b._keySliding=false,a(this).removeClass("ui-state-active")});this.refresh(e,e,true)},refresh:function(a,d,f){(this.options.disabled||this.element.attr("disabled"))&&this.disable();var c=this.element,e,g=c[0].nodeName.toLowerCase(),i=g==="input"?parseFloat(c.attr("min")):
+0,k=g==="input"?parseFloat(c.attr("max")):c.find("option").length-1;if(typeof a==="object"){if(!this.dragging||a.pageX<this.slider.offset().left-8||a.pageX>this.slider.offset().left+this.slider.width()+8)return;e=Math.round((a.pageX-this.slider.offset().left)/this.slider.width()*100)}else a==null&&(a=g==="input"?parseFloat(c.val()):c[0].selectedIndex),e=(parseFloat(a)-i)/(k-i)*100;if(!isNaN(e)&&(e<0&&(e=0),e>100&&(e=100),a=Math.round(e/100*(k-i))+i,a<i&&(a=i),a>k&&(a=k),this.handle.css("left",e+"%"),
+this.handle.attr({"aria-valuenow":g==="input"?a:c.find("option").eq(a).attr("value"),"aria-valuetext":g==="input"?a:c.find("option").eq(a).getEncodedText(),title:a}),g==="select"&&(a===0?this.slider.addClass("ui-slider-switch-a").removeClass("ui-slider-switch-b"):this.slider.addClass("ui-slider-switch-b").removeClass("ui-slider-switch-a")),!f))f=false,g==="input"?(f=c.val()!==a,c.val(a)):(f=c[0].selectedIndex!==a,c[0].selectedIndex=a),!d&&f&&c.trigger("change")},enable:function(){this.element.attr("disabled",
+false);this.slider.removeClass("ui-disabled").attr("aria-disabled",false);return this._setOption("disabled",false)},disable:function(){this.element.attr("disabled",true);this.slider.addClass("ui-disabled").attr("aria-disabled",true);return this._setOption("disabled",true)}});a(document).bind("pagecreate create",function(b){a.mobile.slider.prototype.enhanceWithin(b.target)})})(jQuery);
+(function(a){a.widget("mobile.textinput",a.mobile.widget,{options:{theme:null,initSelector:"input[type='text'], input[type='search'], :jqmData(type='search'), input[type='number'], :jqmData(type='number'), input[type='password'], input[type='email'], input[type='url'], input[type='tel'], textarea, input[type='time'], input[type='date'], input[type='month'], input[type='week'], input[type='datetime'], input[type='datetime-local'], input[type='color'], input:not([type])"},_create:function(){var e=this.element,
+b=this.options.theme||a.mobile.getInheritedTheme(this.element,"c"),d=" ui-body-"+b,f,c;a("label[for='"+e.attr("id")+"']").addClass("ui-input-text");f=e.addClass("ui-input-text ui-body-"+b);typeof e[0].autocorrect!=="undefined"&&!a.support.touchOverflow&&(e[0].setAttribute("autocorrect","off"),e[0].setAttribute("autocomplete","off"));e.is("[type='search'],:jqmData(type='search')")?(f=e.wrap("<div class='ui-input-search ui-shadow-inset ui-btn-corner-all ui-btn-shadow ui-icon-searchfield"+d+"'></div>").parent(),
+c=a("<a href='#' class='ui-input-clear' title='clear text'>clear text</a>").tap(function(a){e.val("").focus();e.trigger("change");c.addClass("ui-input-clear-hidden");a.preventDefault()}).appendTo(f).buttonMarkup({icon:"delete",iconpos:"notext",corners:true,shadow:true}),b=function(){setTimeout(function(){c.toggleClass("ui-input-clear-hidden",!e.val())},0)},b(),e.bind("paste cut keyup focus change blur",b)):e.addClass("ui-corner-all ui-shadow-inset"+d);e.focus(function(){f.addClass("ui-focus")}).blur(function(){f.removeClass("ui-focus")});
+if(e.is("textarea")){var h=function(){var a=e[0].scrollHeight;e[0].clientHeight<a&&e.height(a+15)},g;e.keyup(function(){clearTimeout(g);g=setTimeout(h,100)});a.trim(e.val())&&(a(window).load(h),a(document).one("pagechange",h))}},disable:function(){(this.element.attr("disabled",true).is("[type='search'],:jqmData(type='search')")?this.element.parent():this.element).addClass("ui-disabled")},enable:function(){(this.element.attr("disabled",false).is("[type='search'],:jqmData(type='search')")?this.element.parent():
+this.element).removeClass("ui-disabled")}});a(document).bind("pagecreate create",function(e){a.mobile.textinput.prototype.enhanceWithin(e.target)})})(jQuery);
+(function(a){var e=function(b){var d=b.selectID,f=b.label,c=b.select.closest(".ui-page"),e=a("<div>",{"class":"ui-selectmenu-screen ui-screen-hidden"}).appendTo(c),g=b._selectOptions(),i=b.isMultiple=b.select[0].multiple,k=d+"-button",l=d+"-menu",o=a("<div data-"+a.mobile.ns+"role='dialog' data-"+a.mobile.ns+"theme='"+b.options.theme+"' data-"+a.mobile.ns+"overlay-theme='"+b.options.overlayTheme+"'><div data-"+a.mobile.ns+"role='header'><div class='ui-title'>"+f.getEncodedText()+"</div></div><div data-"+
+a.mobile.ns+"role='content'></div></div>").appendTo(a.mobile.pageContainer).page(),m=a("<div>",{"class":"ui-selectmenu ui-selectmenu-hidden ui-overlay-shadow ui-corner-all ui-body-"+b.options.overlayTheme+" "+a.mobile.defaultDialogTransition}).insertAfter(e),p=a("<ul>",{"class":"ui-selectmenu-list",id:l,role:"listbox","aria-labelledby":k}).attr("data-"+a.mobile.ns+"theme",b.options.theme).appendTo(m),j=a("<div>",{"class":"ui-header ui-bar-"+b.options.theme}).prependTo(m),q=a("<h1>",{"class":"ui-title"}).appendTo(j),
+n=a("<a>",{text:b.options.closeText,href:"#","class":"ui-btn-left"}).attr("data-"+a.mobile.ns+"iconpos","notext").attr("data-"+a.mobile.ns+"icon","delete").appendTo(j).buttonMarkup(),A=o.find(".ui-content"),z=o.find(".ui-header a");a.extend(b,{select:b.select,selectID:d,buttonId:k,menuId:l,thisPage:c,menuPage:o,label:f,screen:e,selectOptions:g,isMultiple:i,theme:b.options.theme,listbox:m,list:p,header:j,headerTitle:q,headerClose:n,menuPageContent:A,menuPageClose:z,placeholder:"",build:function(){var b=
+this;b.refresh();b.select.attr("tabindex","-1").focus(function(){a(this).blur();b.button.focus()});b.button.bind("vclick keydown",function(c){if(c.type=="vclick"||c.keyCode&&(c.keyCode===a.mobile.keyCode.ENTER||c.keyCode===a.mobile.keyCode.SPACE))b.open(),c.preventDefault()});b.list.attr("role","listbox").delegate(".ui-li>a","focusin",function(){a(this).attr("tabindex","0")}).delegate(".ui-li>a","focusout",function(){a(this).attr("tabindex","-1")}).delegate("li:not(.ui-disabled, .ui-li-divider)",
+"click",function(c){var d=b.select[0].selectedIndex,f=b.list.find("li:not(.ui-li-divider)").index(this),e=b._selectOptions().eq(f)[0];e.selected=b.isMultiple?!e.selected:true;b.isMultiple&&a(this).find(".ui-icon").toggleClass("ui-icon-checkbox-on",e.selected).toggleClass("ui-icon-checkbox-off",!e.selected);(b.isMultiple||d!==f)&&b.select.trigger("change");b.isMultiple||b.close();c.preventDefault()}).keydown(function(b){var c=a(b.target),d=c.closest("li");switch(b.keyCode){case 38:return b=d.prev(),
+b.length&&(c.blur().attr("tabindex","-1"),b.find("a").first().focus()),false;case 40:return b=d.next(),b.length&&(c.blur().attr("tabindex","-1"),b.find("a").first().focus()),false;case 13:case 32:return c.trigger("click"),false}});b.menuPage.bind("pagehide",function(){b.list.appendTo(b.listbox);b._focusButton();a.mobile._bindPageRemove.call(b.thisPage)});b.screen.bind("vclick",function(){b.close()});b.headerClose.click(function(){if(b.menuType=="overlay")return b.close(),false});b.thisPage.addDependents(this.menuPage)},
+_isRebuildRequired:function(){var a=this.list.find("li");return this._selectOptions().text()!==a.text()},refresh:function(b){var c=this;this._selectOptions();this.selected();var d=this.selectedIndices();(b||this._isRebuildRequired())&&c._buildList();c.setButtonText();c.setButtonCount();c.list.find("li:not(.ui-li-divider)").removeClass(a.mobile.activeBtnClass).attr("aria-selected",false).each(function(b){a.inArray(b,d)>-1&&(b=a(this),b.attr("aria-selected",true),c.isMultiple?b.find(".ui-icon").removeClass("ui-icon-checkbox-off").addClass("ui-icon-checkbox-on"):
+b.addClass(a.mobile.activeBtnClass))})},close:function(){if(!this.options.disabled&&this.isOpen)this.menuType=="page"?window.history.back():(this.screen.addClass("ui-screen-hidden"),this.listbox.addClass("ui-selectmenu-hidden").removeAttr("style").removeClass("in"),this.list.appendTo(this.listbox),this._focusButton()),this.isOpen=false},open:function(){if(!this.options.disabled){var b=this,c=b.list.parent().outerHeight(),d=b.list.parent().outerWidth(),f=a(".ui-page-active"),e=a.support.touchOverflow&&
+a.mobile.touchOverflowEnabled,f=f.is(".ui-native-fixed")?f.find(".ui-content"):f;scrollTop=e?f.scrollTop():a(window).scrollTop();btnOffset=b.button.offset().top;screenHeight=window.innerHeight;screenWidth=window.innerWidth;b.button.addClass(a.mobile.activeBtnClass);setTimeout(function(){b.button.removeClass(a.mobile.activeBtnClass)},300);if(c>screenHeight-80||!a.support.scrollTop){b.thisPage.unbind("pagehide.remove");if(scrollTop==0&&btnOffset>screenHeight)b.thisPage.one("pagehide",function(){a(this).jqmData("lastScroll",
+btnOffset)});b.menuPage.one("pageshow",function(){a(window).one("silentscroll",function(){b.list.find(a.mobile.activeBtnClass).focus()});b.isOpen=true});b.menuType="page";b.menuPageContent.append(b.list);b.menuPage.find("div .ui-title").text(b.label.text());a.mobile.changePage(b.menuPage,{transition:a.mobile.defaultDialogTransition})}else{b.menuType="overlay";b.screen.height(a(document).height()).removeClass("ui-screen-hidden");var f=btnOffset-scrollTop,h=scrollTop+screenHeight-btnOffset,g=c/2,e=
+parseFloat(b.list.parent().css("max-width")),c=f>c/2&&h>c/2?btnOffset+b.button.outerHeight()/2-g:f>h?scrollTop+screenHeight-c-30:scrollTop+30;d<e?e=(screenWidth-d)/2:(e=b.button.offset().left+b.button.outerWidth()/2-d/2,e<30?e=30:e+d>screenWidth&&(e=screenWidth-d-30));b.listbox.append(b.list).removeClass("ui-selectmenu-hidden").css({top:c,left:e}).addClass("in");b.list.find(a.mobile.activeBtnClass).focus();b.isOpen=true}}},_buildList:function(){var b=this,c=this.options,d=this.placeholder,f=[],e=
+[],h=b.isMultiple?"checkbox-off":"false";b.list.empty().filter(".ui-listview").listview("destroy");b.select.find("option").each(function(g){var j=a(this),i=j.parent(),m=j.getEncodedText(),p="<a href='#'>"+m+"</a>",k=[],n=[];i.is("optgroup")&&(i=i.attr("label"),a.inArray(i,f)===-1&&(e.push("<li data-"+a.mobile.ns+"role='list-divider'>"+i+"</li>"),f.push(i)));if(!this.getAttribute("value")||m.length==0||j.jqmData("placeholder"))c.hidePlaceholderMenuItems&&k.push("ui-selectmenu-placeholder"),d=b.placeholder=
+m;this.disabled&&(k.push("ui-disabled"),n.push("aria-disabled='true'"));e.push("<li data-"+a.mobile.ns+"option-index='"+g+"' data-"+a.mobile.ns+"icon='"+h+"' class='"+k.join(" ")+"' "+n.join(" ")+">"+p+"</li>")});b.list.html(e.join(" "));b.list.find("li").attr({role:"option",tabindex:"-1"}).first().attr("tabindex","0");this.isMultiple||this.headerClose.hide();!this.isMultiple&&!d.length?this.header.hide():this.headerTitle.text(this.placeholder);b.list.listview()},_button:function(){return a("<a>",
+{href:"#",role:"button",id:this.buttonId,"aria-haspopup":"true","aria-owns":this.menuId})}})};a("select").live("selectmenubeforecreate",function(){var b=a(this).data("selectmenu");b.options.nativeMenu||e(b)})})(jQuery);
+(function(a){a.widget("mobile.selectmenu",a.mobile.widget,{options:{theme:null,disabled:false,icon:"arrow-d",iconpos:"right",inline:null,corners:true,shadow:true,iconshadow:true,menuPageTheme:"b",overlayTheme:"a",hidePlaceholderMenuItems:true,closeText:"Close",nativeMenu:true,initSelector:"select:not(:jqmData(role='slider'))"},_button:function(){return a("<div/>")},_setDisabled:function(a){this.element.attr("disabled",a);this.button.attr("aria-disabled",a);return this._setOption("disabled",a)},_focusButton:function(){var a=
+this;setTimeout(function(){a.button.focus()},40)},_selectOptions:function(){return this.select.find("option")},_preExtension:function(){this.select=this.element.wrap("<div class='ui-select'>");this.selectID=this.select.attr("id");this.label=a("label[for='"+this.selectID+"']").addClass("ui-select");this.isMultiple=this.select[0].multiple;if(!this.options.theme)this.options.theme=a.mobile.getInheritedTheme(this.select,"c")},_create:function(){this._preExtension();this._trigger("beforeCreate");this.button=
+this._button();var e=this,b=this.options,d=this.button.text(a(this.select[0].options.item(this.select[0].selectedIndex==-1?0:this.select[0].selectedIndex)).text()).insertBefore(this.select).buttonMarkup({theme:b.theme,icon:b.icon,iconpos:b.iconpos,inline:b.inline,corners:b.corners,shadow:b.shadow,iconshadow:b.iconshadow});b.nativeMenu&&window.opera&&window.opera.version&&this.select.addClass("ui-select-nativeonly");if(this.isMultiple)this.buttonCount=a("<span>").addClass("ui-li-count ui-btn-up-c ui-btn-corner-all").hide().appendTo(d.addClass("ui-li-has-count"));
+(b.disabled||this.element.attr("disabled"))&&this.disable();this.select.change(function(){e.refresh()});this.build()},build:function(){var e=this;this.select.appendTo(e.button).bind("vmousedown",function(){e.button.addClass(a.mobile.activeBtnClass)}).bind("focus vmouseover",function(){e.button.trigger("vmouseover")}).bind("vmousemove",function(){e.button.removeClass(a.mobile.activeBtnClass)}).bind("change blur vmouseout",function(){e.button.trigger("vmouseout").removeClass(a.mobile.activeBtnClass)}).bind("change blur",
+function(){e.button.removeClass("ui-btn-down-"+e.options.theme)})},selected:function(){return this._selectOptions().filter(":selected")},selectedIndices:function(){var a=this;return this.selected().map(function(){return a._selectOptions().index(this)}).get()},setButtonText:function(){var e=this,b=this.selected();this.button.find(".ui-btn-text").text(function(){return!e.isMultiple?b.text():b.length?b.map(function(){return a(this).text()}).get().join(", "):e.placeholder})},setButtonCount:function(){var a=
+this.selected();this.isMultiple&&this.buttonCount[a.length>1?"show":"hide"]().text(a.length)},refresh:function(){this.setButtonText();this.setButtonCount()},open:a.noop,close:a.noop,disable:function(){this._setDisabled(true);this.button.addClass("ui-disabled")},enable:function(){this._setDisabled(false);this.button.removeClass("ui-disabled")}});a(document).bind("pagecreate create",function(e){a.mobile.selectmenu.prototype.enhanceWithin(e.target)})})(jQuery);
+(function(a,e){function b(b){for(var c;b;){if((c=typeof b.className==="string"&&b.className.split(" "))&&a.inArray("ui-btn",c)>-1&&a.inArray("ui-disabled",c)<0)break;b=b.parentNode}return b}a.fn.buttonMarkup=function(b){for(var b=b||{},c=0;c<this.length;c++){var h=this.eq(c),g=h[0],i=a.extend({},a.fn.buttonMarkup.defaults,{icon:b.icon!==e?b.icon:h.jqmData("icon"),iconpos:b.iconpos!==e?b.iconpos:h.jqmData("iconpos"),theme:b.theme!==e?b.theme:h.jqmData("theme"),inline:b.inline!==e?b.inline:h.jqmData("inline"),
+shadow:b.shadow!==e?b.shadow:h.jqmData("shadow"),corners:b.corners!==e?b.corners:h.jqmData("corners"),iconshadow:b.iconshadow!==e?b.iconshadow:h.jqmData("iconshadow")},b),k="ui-btn-inner",l,o,m=document.createElement(i.wrapperEls),p=document.createElement(i.wrapperEls),j=i.icon?document.createElement("span"):null;d&&d();if(!i.theme)i.theme=a.mobile.getInheritedTheme(h,"c");l="ui-btn ui-btn-up-"+i.theme;i.inline&&(l+=" ui-btn-inline");if(i.icon)i.icon="ui-icon-"+i.icon,i.iconpos=i.iconpos||"left",
+o="ui-icon "+i.icon,i.iconshadow&&(o+=" ui-icon-shadow");i.iconpos&&(l+=" ui-btn-icon-"+i.iconpos,i.iconpos=="notext"&&!h.attr("title")&&h.attr("title",h.getEncodedText()));i.corners&&(l+=" ui-btn-corner-all",k+=" ui-btn-corner-all");i.shadow&&(l+=" ui-shadow");g.setAttribute("data-"+a.mobile.ns+"theme",i.theme);h.addClass(l);m.className=k;m.setAttribute("aria-hidden","true");p.className="ui-btn-text";m.appendChild(p);if(j)j.className=o,m.appendChild(j);for(;g.firstChild;)p.appendChild(g.firstChild);
+g.appendChild(m);a.data(g,"textWrapper",a(p))}return this};a.fn.buttonMarkup.defaults={corners:true,shadow:true,iconshadow:true,inline:false,wrapperEls:"span"};var d=function(){a(document).bind({vmousedown:function(d){var d=b(d.target),c;d&&(d=a(d),c=d.attr("data-"+a.mobile.ns+"theme"),d.removeClass("ui-btn-up-"+c).addClass("ui-btn-down-"+c))},"vmousecancel vmouseup":function(d){var d=b(d.target),c;d&&(d=a(d),c=d.attr("data-"+a.mobile.ns+"theme"),d.removeClass("ui-btn-down-"+c).addClass("ui-btn-up-"+
+c))},"vmouseover focus":function(d){var d=b(d.target),c;d&&(d=a(d),c=d.attr("data-"+a.mobile.ns+"theme"),d.removeClass("ui-btn-up-"+c).addClass("ui-btn-hover-"+c))},"vmouseout blur":function(d){var d=b(d.target),c;d&&(d=a(d),c=d.attr("data-"+a.mobile.ns+"theme"),d.removeClass("ui-btn-hover-"+c+" ui-btn-down-"+c).addClass("ui-btn-up-"+c))}});d=null};a(document).bind("pagecreate create",function(b){a(":jqmData(role='button'), .ui-bar > a, .ui-header > a, .ui-footer > a, .ui-bar > :jqmData(role='controlgroup') > a",
+b.target).not(".ui-btn, :jqmData(role='none'), :jqmData(role='nojs')").buttonMarkup()})})(jQuery);
+(function(a){a.fn.controlgroup=function(e){return this.each(function(){function b(a){a.removeClass("ui-btn-corner-all ui-shadow").eq(0).addClass(h[0]).end().last().addClass(h[1]).addClass("ui-controlgroup-last")}var d=a(this),f=a.extend({direction:d.jqmData("type")||"vertical",shadow:false,excludeInvisible:true},e),c=d.children("legend"),h=f.direction=="horizontal"?["ui-corner-left","ui-corner-right"]:["ui-corner-top","ui-corner-bottom"];d.find("input").first().attr("type");c.length&&(d.wrapInner("<div class='ui-controlgroup-controls'></div>"),
+a("<div role='heading' class='ui-controlgroup-label'>"+c.html()+"</div>").insertBefore(d.children(0)),c.remove());d.addClass("ui-corner-all ui-controlgroup ui-controlgroup-"+f.direction);b(d.find(".ui-btn"+(f.excludeInvisible?":visible":"")));b(d.find(".ui-btn-inner"));f.shadow&&d.addClass("ui-shadow")})};a(document).bind("pagecreate create",function(e){a(":jqmData(role='controlgroup')",e.target).controlgroup({excludeInvisible:false})})})(jQuery);
+(function(a){a(document).bind("pagecreate create",function(e){a(e.target).find("a").not(".ui-btn, .ui-link-inherit, :jqmData(role='none'), :jqmData(role='nojs')").addClass("ui-link")})})(jQuery);
+(function(a,e){a.fn.fixHeaderFooter=function(){return!a.support.scrollTop||a.support.touchOverflow&&a.mobile.touchOverflowEnabled?this:this.each(function(){var b=a(this);b.jqmData("fullscreen")&&b.addClass("ui-page-fullscreen");b.find(".ui-header:jqmData(position='fixed')").addClass("ui-header-fixed ui-fixed-inline fade");b.find(".ui-footer:jqmData(position='fixed')").addClass("ui-footer-fixed ui-fixed-inline fade")})};a.mobile.fixedToolbars=function(){function b(){!i&&g==="overlay"&&(h||a.mobile.fixedToolbars.hide(true),
+a.mobile.fixedToolbars.startShowTimer())}function d(a){var b=0,c,d;if(a){d=document.body;c=a.offsetParent;for(b=a.offsetTop;a&&a!=d;){b+=a.scrollTop||0;if(a==c)b+=c.offsetTop,c=a.offsetParent;a=a.parentNode}}return b}function f(b){var c=a(window).scrollTop(),e=d(b[0]),f=b.css("top")=="auto"?0:parseFloat(b.css("top")),h=window.innerHeight,g=b.outerHeight(),i=b.parents(".ui-page:not(.ui-page-fullscreen)").length;return b.is(".ui-header-fixed")?(f=c-e+f,f<e&&(f=0),b.css("top",i?f:c)):b.css("top",i?c+
+h-g-(e-f):c+h-g)}if(a.support.scrollTop&&(!a.support.touchOverflow||!a.mobile.touchOverflowEnabled)){var c,h,g="inline",i=false,k=null,l=false,o=true;a(function(){var c=a(document),d=a(window);c.bind("vmousedown",function(){o&&(k=g)}).bind("vclick",function(b){o&&!a(b.target).closest("a,input,textarea,select,button,label,.ui-header-fixed,.ui-footer-fixed").length&&!l&&(a.mobile.fixedToolbars.toggle(k),k=null)}).bind("silentscroll",b);(c.scrollTop()===0?d:c).bind("scrollstart",function(){l=true;k===
+null&&(k=g);var b=k=="overlay";if(i=b||!!h)a.mobile.fixedToolbars.clearShowTimer(),b&&a.mobile.fixedToolbars.hide(true)}).bind("scrollstop",function(b){a(b.target).closest("a,input,textarea,select,button,label,.ui-header-fixed,.ui-footer-fixed").length||(l=false,i&&(a.mobile.fixedToolbars.startShowTimer(),i=false),k=null)});d.bind("resize updatelayout",b)});a(".ui-page").live("pagebeforeshow",function(b,d){var e=a(b.target).find(":jqmData(role='footer')"),h=e.data("id"),g=d.prevPage,g=g&&g.find(":jqmData(role='footer')"),
+g=g.length&&g.jqmData("id")===h;h&&g&&(c=e,f(c.removeClass("fade in out").appendTo(a.mobile.pageContainer)))}).live("pageshow",function(){var b=a(this);c&&c.length&&setTimeout(function(){f(c.appendTo(b).addClass("fade"));c=null},500);a.mobile.fixedToolbars.show(true,this)});a(".ui-collapsible-contain").live("collapse expand",b);return{show:function(b,c){a.mobile.fixedToolbars.clearShowTimer();g="overlay";return(c?a(c):a.mobile.activePage?a.mobile.activePage:a(".ui-page-active")).children(".ui-header-fixed:first, .ui-footer-fixed:not(.ui-footer-duplicate):last").each(function(){var c=
+a(this),e=a(window).scrollTop(),h=d(c[0]),g=window.innerHeight,i=c.outerHeight(),e=c.is(".ui-header-fixed")&&e<=h+i||c.is(".ui-footer-fixed")&&h<=e+g;c.addClass("ui-fixed-overlay").removeClass("ui-fixed-inline");!e&&!b&&c.animationComplete(function(){c.removeClass("in")}).addClass("in");f(c)})},hide:function(b){g="inline";return(a.mobile.activePage?a.mobile.activePage:a(".ui-page-active")).children(".ui-header-fixed:first, .ui-footer-fixed:not(.ui-footer-duplicate):last").each(function(){var c=a(this),
+d=c.css("top"),d=d=="auto"?0:parseFloat(d);c.addClass("ui-fixed-inline").removeClass("ui-fixed-overlay");if(d<0||c.is(".ui-header-fixed")&&d!==0)b?c.css("top",0):c.css("top")!=="auto"&&parseFloat(c.css("top"))!==0&&c.animationComplete(function(){c.removeClass("out reverse").css("top",0)}).addClass("out reverse")})},startShowTimer:function(){a.mobile.fixedToolbars.clearShowTimer();var b=[].slice.call(arguments);h=setTimeout(function(){h=e;a.mobile.fixedToolbars.show.apply(null,b)},100)},clearShowTimer:function(){h&&
+clearTimeout(h);h=e},toggle:function(b){b&&(g=b);return g==="overlay"?a.mobile.fixedToolbars.hide():a.mobile.fixedToolbars.show()},setTouchToggleEnabled:function(a){o=a}}}}();a(document).bind("pagecreate create",function(b){a(":jqmData(position='fixed')",b.target).length&&a(b.target).each(function(){if(!a.support.scrollTop||a.support.touchOverflow&&a.mobile.touchOverflowEnabled)return this;var b=a(this);b.jqmData("fullscreen")&&b.addClass("ui-page-fullscreen");b.find(".ui-header:jqmData(position='fixed')").addClass("ui-header-fixed ui-fixed-inline fade");
+b.find(".ui-footer:jqmData(position='fixed')").addClass("ui-footer-fixed ui-fixed-inline fade")})})})(jQuery);
+(function(a){a.mobile.touchOverflowEnabled=false;a.mobile.touchOverflowZoomEnabled=false;a(document).bind("pagecreate",function(e){a.support.touchOverflow&&a.mobile.touchOverflowEnabled&&(e=a(e.target),e.is(":jqmData(role='page')")&&e.each(function(){var b=a(this),d=b.find(":jqmData(role='header'), :jqmData(role='footer')").filter(":jqmData(position='fixed')"),e=b.jqmData("fullscreen"),c=d.length?b.find(".ui-content"):b;b.addClass("ui-mobile-touch-overflow");c.bind("scrollstop",function(){c.scrollTop()>
+0&&window.scrollTo(0,a.mobile.defaultHomeScroll)});d.length&&(b.addClass("ui-native-fixed"),e&&(b.addClass("ui-native-fullscreen"),d.addClass("fade in"),a(document).bind("vclick",function(){d.removeClass("ui-native-bars-hidden").toggleClass("in out").animationComplete(function(){a(this).not(".in").addClass("ui-native-bars-hidden")})})))}))})})(jQuery);
+(function(a,e){function b(){var b=a("meta[name='viewport']");b.length?b.attr("content",b.attr("content")+", user-scalable=no"):a("head").prepend("<meta>",{name:"viewport",content:"user-scalable=no"})}var d=a("html");a("head");var f=a(e);a(e.document).trigger("mobileinit");if(a.mobile.gradeA()){if(a.mobile.ajaxBlacklist)a.mobile.ajaxEnabled=false;d.addClass("ui-mobile ui-mobile-rendering");var c=a("<div class='ui-loader ui-body-a ui-corner-all'><span class='ui-icon ui-icon-loading spin'></span><h1></h1></div>");
+a.extend(a.mobile,{showPageLoadingMsg:function(){if(a.mobile.loadingMessage){var b=a("."+a.mobile.activeBtnClass).first();c.find("h1").text(a.mobile.loadingMessage).end().appendTo(a.mobile.pageContainer).css({top:a.support.scrollTop&&f.scrollTop()+f.height()/2||b.length&&b.offset().top||100})}d.addClass("ui-loading")},hidePageLoadingMsg:function(){d.removeClass("ui-loading")},initializePage:function(){var b=a(":jqmData(role='page')");b.length||(b=a("body").wrapInner("<div data-"+a.mobile.ns+"role='page'></div>").children(0));
+b.add(":jqmData(role='dialog')").each(function(){var b=a(this);b.jqmData("url")||b.attr("data-"+a.mobile.ns+"url",b.attr("id")||location.pathname+location.search)});a.mobile.firstPage=b.first();a.mobile.pageContainer=b.first().parent().addClass("ui-mobile-viewport");f.trigger("pagecontainercreate");a.mobile.showPageLoadingMsg();!a.mobile.hashListeningEnabled||!a.mobile.path.stripHash(location.hash)?a.mobile.changePage(a.mobile.firstPage,{transition:"none",reverse:true,changeHash:false,fromHashChange:true}):
+f.trigger("hashchange",[true])}});a.support.touchOverflow&&a.mobile.touchOverflowEnabled&&!a.mobile.touchOverflowZoomEnabled&&b();a.mobile._registerInternalEvents();a(function(){e.scrollTo(0,1);a.mobile.defaultHomeScroll=!a.support.scrollTop||a(e).scrollTop()===1?0:1;a.mobile.autoInitializePage&&a.mobile.initializePage();f.load(a.mobile.silentScroll)})}})(jQuery,this);
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/mediacontent.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/mediacontent.html
new file mode 100644 (file)
index 0000000..54a111e
--- /dev/null
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+    <title>Tizen API Demos</title>
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Media Content</h2>
+            <p>API that enables the management of media item information.</p>
+
+            <ul>
+            <li><span class="entry-title">getLocalMediaSource</span>
+            <p class="desc">Gets the local media source, which should be used for retrieving items.</p>
+            <span class="entry-title">getFolders</span>
+            <p class="desc">get the folders to the media content asynchronously.</p>
+            <span class="entry-title">findItems</span>
+            <p class="desc">browse the first folder in the media content asynchronously.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+var mediaSource;
+// Define the error callback for all the asynchronous calls
+function errorCallback(response) {
+ alert( 'The following error occurred: ' +  response.message);
+}
+
+// Browse the folder as asynchronous calls
+function browseFolderCB(items) {
+       // The event has been successfully found the items for given folder id
+       for ( var i in items) {
+               if( i == 0) {
+                       //Let's check the first item in the folder
+                       alert('first Item title:' + items[i].title);
+                   break;
+               }
+       }
+}
+
+// get the folder list as asynchronous calls
+function getFolderCB(folders){
+       for ( var i in folders) {
+               if( i == 0) {
+                       mediaSource.findItems(browseFolderCB, errorCallback, folders[i].id);
+                       break;
+               }
+       }
+}
+
+// Get a local media source.
+mediaSource = tizen.mediacontent.getLocalMediaSource();
+
+// Let's try to retrieve the folder list.
+mediaSource.getFolders(getFolderCB,errorCallback);
+</pre>
+            </div>
+            </ul>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/messaging.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/messaging.html
new file mode 100644 (file)
index 0000000..96e3510
--- /dev/null
@@ -0,0 +1,122 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+    <title>Tizen API Demos</title>
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Messaging</h2>
+            <p>API that allows SMS, MMS and Email message sending and retrieval.</p>
+            <p>Please use with Event Injector > Telephony.</p>
+
+            <ul>
+
+<!-- Platform Issues for sendMessage
+            <li><span class="entry-title">sendMessage</span>
+            <p class="desc">Attempt to send the specified message.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+ // Define the success callback
+ function messageSent(recipients) {
+    alert("The SMS has been sent to " + recipients.length + " recipient(s). Please see Event Injector.");
+ }
+
+ // Define the error callback.
+ function messageFailed(error) {
+   alert("The SMS could not be sent " + error.message);
+ }
+ // Define the error callback
+ function errorCB(error) { 
+ }
+
+ // Define the success callback.
+ function serviceListCB(services) {
+ // SMS sending example
+ var msg = new tizen.Message("messaging.sms", {
+            plainBody : "I will arrive in 10 minutes.",
+            to : [ "+821030014180" ]
+            });
+ // Send request
+ services[0].sendMessage(msg, messageSent, messageFailed); 
+ }
+ tizen.messaging.getMessageServices("messaging.sms", serviceListCB, errorCB);
+
+</pre> 
+            </div>
+-->
+            <li><span class="entry-title">addMessagesChangeListener</span>
+            <p class="desc">This method provides a mechanism to subscribe to MessagingStorage changes.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+alert("Please Send a Msg from Event Injector");
+var messageChangeCallback = {
+   messagesupdated: function(messages) {
+      alert(messages.length + " message(s) updated");
+   },
+   messagesadded: function(messages) {
+      alert(messages.length + " message(s) arrived");
+      for (i in messages) {
+          alert('[' + messages[i].from + ']' + messages[i].body.plainBody);
+      }
+   },
+   messagesremoved: function(messages) {
+      alert(messages.length + " message(s) removed");
+   }
+};
+var watchId = null;
+var smsServices;
+var filter = new tizen.AttributeFilter("type", "EXACTLY", "messaging.sms");
+ // Define the success callback.
+ function serviceListCB(services) {
+  smsService = services[0];
+  watchId = smsService.messageStorage.addMessagesChangeListener(messageChangeCallback, filter);
+ }
+
+ function errorCB(error) { 
+ }
+
+ tizen.messaging.getMessageServices("messaging.sms", serviceListCB, errorCB);
+window.onunload = function () {
+   smsService.messageStorage.removeChangeListener(watchId);
+};
+</pre>
+            </div>
+            </ul>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/systeminfo.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/systeminfo.html
new file mode 100644 (file)
index 0000000..23cccb7
--- /dev/null
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+    <title>Tizen API Demos</title>
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Systeminfo</h2>
+            <p>API that allows accessing the system informations.</p>
+
+            <ul>
+            <li><span class="entry-title">isSupported</span>
+            <p class="desc">Checks if a property is supported by the device.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+var isSupported = null;
+isSupported = tizen.systeminfo.isSupported("Cpu");
+if (isSupported) {
+       alert("Cpu is supported");
+} else {
+       alert("Cpu is not supported");
+}
+</pre>
+            </div>
+
+            <li><span class="entry-title">getPropertyValue</span>
+            <p class="desc">Retrieves the current state of a given system property.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+function onSuccessCallback(power) 
+{
+  alert("The power level is " + power.level); 
+}
+function onErrorCallback(error)
+{
+  alert("An error occurred " + error.message);
+}
+tizen.systeminfo.getPropertyValue("Power", onSuccessCallback, onErrorCallback);
+</pre>
+            </div>
+            </ul>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/time.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/time.html
new file mode 100644 (file)
index 0000000..d76aef0
--- /dev/null
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">
+    <title>Tizen API Demos</title>
+    <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" />
+    <link rel="stylesheet" href="css/jqm-docs.css"/>
+    <link rel="stylesheet" href="css/demo.css"/>
+    <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+    <script src="js/jqm-docs.js"></script>
+    <script src="js/jquery.mobile-1.0.min.js"></script>
+    <script src="js/demo.js"></script>
+</head>
+<body>
+<div data-role="page" class="type-interior">
+    <div data-role="header" data-theme="a">
+        <h1>Kitchen Sink</h1>
+        <a href="index.html" data-icon="home" data-iconpos="notext" data-direction="reverse" class="jqm-home">Home</a>
+        <a href="#" id="closeBt" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Exit</a>
+    </div><!-- /header -->
+
+    <div data-role="content">
+        <div class="content-primary">
+            <h2>Time</h2>
+            <p>API that exposes information about date, time and timezones.</p>
+
+            <ul>
+            <li><span class="entry-title">getCurrentDateTime</span>
+            <p class="desc">Returns the current date / time.</p>
+            <span class="heading">Demo</span>
+            <div class="content examplecode">
+                <a href="javascript:void(0);" onclick="javascript:run(this);">Run Code</a>
+<pre class="prettyprint">
+ var current_dt = tizen.time.getCurrentDateTime();
+ alert("current date / time is " + current_dt.toLocaleString());
+</pre>
+            </div>
+            </ul>
+        </div><!--/content-primary -->
+
+        <div class="content-secondary">
+            <div data-role="collapsible" data-collapsed="true" data-theme="b" data-content-theme="d">
+                <h3>API Demos</h3>
+                    <ul data-role="listview" data-theme="c" data-dividertheme="d" id="toc">
+                    </ul>
+            </div>
+        </div>
+    </div><!-- /content -->
+
+    <div data-role="footer" class="footer-docs" data-theme="c">
+        <p></p>
+    </div>
+</div><!-- /page -->
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/toc.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/project/toc.html
new file mode 100644 (file)
index 0000000..5055eaa
--- /dev/null
@@ -0,0 +1,11 @@
+    <li><a href="application.html">Application</a></li>
+    <li><a href="calendar.html">Calendar</a></li>
+    <li><a href="call.html">Call</a></li>
+    <li><a href="messaging.html">Messaging</a></li>
+    <li><a href="time.html">Time</a></li>
+    <li><a href="filesystem.html">Filesystem</a></li>
+    <li><a href="contact.html">Contact</a></li>
+    <li><a href="systeminfo.html">Systeminfo</a></li>
+    <li><a href="alarm.html">Alarm</a></li>
+    <li><a href="mediacontent.html">MediaContent</a></li>
+    <li><a href="geocoder.html">Geocoder</a></li>
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..faa1456
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Kitchen Sink</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Kitchen Sink/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/description.xml
new file mode 100644 (file)
index 0000000..a438504
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Mediacontent</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-mediacontent-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen mediacontent device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/config.xml
new file mode 100755 (executable)
index 0000000..4edcbcf
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.13" viewmodes="fullscreen" id="http://tizen.org/Mediacontent">
+       <name>Mediacontent</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/mediacontent" required="true"/>
+       <tizen:application id="samplemedi" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/css/style.css
new file mode 100755 (executable)
index 0000000..d3f5a12
--- /dev/null
@@ -0,0 +1 @@
+\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/index.html
new file mode 100644 (file)
index 0000000..75bd69f
--- /dev/null
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8" />
+       <meta name="description" content="Mediacontent API Tutorial"/>
+
+       <title>Mediacontent</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css"/>
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Media Content</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="folder-list">
+                               <li data-role="list-divider">Storage type</li>
+                               <li class="ui-li-has-radio">
+                                       All
+                                       <input type="radio" name="folder-type" id="folder-type-all" value="ALL" checked="checked"/>
+                               </li>
+                               <li class="ui-li-has-radio">
+                                       INTERNAL
+                                       <input type="radio" name="folder-type" id="folder-type-internal" value="INTERNAL"/>
+                               </li>
+                               <li class="ui-li-has-radio">
+                                       EXTERNAL
+                                       <input type="radio" name="folder-type" id="folder-type-external" value="EXTERNAL"/>
+                               </li>
+                               <li data-role="list-divider">Folders</li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="all-items">All items</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="items">
+               <div data-role="header" data-position="fixed">
+                       <h1 id="items-title"></h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="items-list">
+                               <li data-role="list-divider">Item type</li>
+                               <li class="ui-li-has-radio">
+                                       All
+                                       <input type="radio" name="item-type" id="item-type-all" value="ALL" checked="checked"/>
+                               </li>
+                               <li class="ui-li-has-radio">
+                                       IMAGE
+                                       <input type="radio" name="item-type" id="item-type-image" value="IMAGE"/>
+                               </li>
+                               <li class="ui-li-has-radio">
+                                       VIDEO
+                                       <input type="radio" name="item-type" id="item-type-video" value="VIDEO"/>
+                               </li>
+                               <li class="ui-li-has-radio">
+                                       AUDIO
+                                       <input type="radio" name="item-type" id="item-type-audio" value="AUDIO"/>
+                               </li>
+                               <li data-role="list-divider">Items</li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="batch-update">Increase last 3 items rating</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="detail">
+               <div data-role="header" data-position="fixed">
+                       <h1>Details</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="media-details">
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="update">Increase Rating</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/project/js/main.js
new file mode 100644 (file)
index 0000000..3024303
--- /dev/null
@@ -0,0 +1,251 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+var gMediaSource, gMediaFolders, gMediaItems, gItemId, gFolderId, gMediaType = "ALL";
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               tizen.application.exit();
+               return false;
+       });
+
+       $("#folder-list input").bind("change", function() {
+               if ($(this).prop("checked") == true) {
+                       showFolderList($(this).attr("value"));
+               }
+       });
+
+       $("#folder-list").delegate("li", "vclick", function() {
+               var id = $(this).data("id");
+               if (id != null) {
+                       getFolderItems(Number(id), gMediaType);
+               }
+               return false;
+       });
+
+       $("#all-items").bind("vclick", function() {
+               getFolderItems(null, gMediaType);
+               return false;
+       });
+
+       try {
+               gMediaSource = tizen.mediacontent.getLocalMediaSource();
+       } catch (exc) {
+               alert("getLocalMediaSource exc:" + exc.message);
+       }
+
+       getFolders();
+});
+
+$(document).delegate("#items", "pageinit", function() {
+       $("#items").bind("pagebeforeshow", showItemList);
+
+       $("#items-list input").bind("change", function() {
+               if ($(this).prop("checked") == true) {
+                       gMediaType = $(this).attr("value");
+                       getFolderItems(gFolderId, gMediaType);
+               }
+       });
+
+       $("#items-list").delegate("li", "vclick", function() {
+               var id = $(this).data("id");
+               if (id != null) {
+                       gItemId = Number(id);
+                       $.mobile.changePage("#detail");
+               }
+               return false;
+       });
+
+       $("#batch-update").bind("vclick", function() {
+               updateLast3Ratings();
+               return false;
+       });
+});
+
+$(document).delegate("#detail", "pageinit", function() {
+       $("#detail").bind("pagebeforeshow", showMediaDetail);
+
+       $("#update").bind("vclick", function() {
+               updateRating();
+               window.history.back();
+               return false;
+       });
+});
+
+function makeListItem(id, mainText, subText) {
+       return '<li class="ui-li-has-multiline"'
+                       + (id == null ? '' : ' data-id="'+ id +'"')
+                       + '>'
+                       + mainText
+                       + '<span class="ui-li-text-sub">'
+                       + subText
+                       + '</span></li>';
+}
+
+function showFolderList(storageType) {
+       var str = '';
+
+       for (var i = 0; i < gMediaFolders.length; i++) {
+               if (storageType == "ALL" || storageType == gMediaFolders[i].storageType) {
+                       str += makeListItem(i, gMediaFolders[i].title, gMediaFolders[i].folderURI);
+               }
+       }
+       $("#folder-list>li[data-id]").remove();
+       $("#folder-list").append(str).trigger("create").listview("refresh");
+}
+
+function getFolders() {
+       function onGetFoldersSuccess(folders) {
+               gMediaFolders = folders;
+               showFolderList("ALL");
+       }
+
+       function onGetFoldersError(err) {
+               alert("GetFolders failed:" + err.message);
+       }
+
+       try {
+               gMediaSource.getFolders(onGetFoldersSuccess, onGetFoldersError);
+       } catch (exc) {
+               alert("getFolders exc:" + exc.message);
+       }
+}
+
+function showItemList() {
+       var str = '';
+
+       $("#items-title").html(gFolderId == null ? "All" : gMediaFolders[gFolderId].title);
+
+       for (var i = 0; i < gMediaItems.length; i++) {
+               str += makeListItem(i, gMediaItems[i].title,
+                               gMediaItems[i].type + "  Rating: " + gMediaItems[i].rating);
+       }
+
+       $("#items-list>li[data-id]").remove();
+       $("#items-list").append(str).trigger("create").listview("refresh");
+}
+
+function getFolderItems(folderId, mediaType) {
+       function onFindItemsSuccess(items) {
+               gMediaItems = items;
+               gFolderId = folderId;
+               gMediaType = mediaType;
+
+               if($.mobile.activePage.attr("id") == "items") {
+                       showItemList();
+               } else {
+                       $.mobile.changePage("#items");
+               }
+       }
+
+       function onFindItemsError(err) {
+               alert("getFolderItems findItems failed: " + err.message);
+       }
+
+       try {
+               gMediaSource.findItems(onFindItemsSuccess, onFindItemsError,
+                               folderId == null ? null : gMediaFolders[folderId].id,
+                               mediaType == "ALL" ? null : new tizen.AttributeFilter("type", "EXACTLY", mediaType),
+                               new tizen.SortMode("title", "ASC"));
+       } catch (exc) {
+               alert("findItems exc:" + exc.message);
+       }
+}
+
+function makeCommonPropertiesListItems(item) {
+       return makeListItem(null, "Title", item.title)
+                       + makeListItem(null, "Size", item.size + " Bytes")
+                       + makeListItem(null, "Type", item.type)
+                       + makeListItem(null, "Identifier", item.id)
+                       + makeListItem(null, "Item URI", item.itemURI)
+                       + makeListItem(null, "MIME type", item.mimeType)
+                       + makeListItem(null, "Release date", item.releaseDate)
+                       + makeListItem(null, "Modified date", item.modifiedDate)
+                       + makeListItem(null, "Description", item.description)
+                       + makeListItem(null, "Rating", item.rating)
+                       + makeListItem(null, "Thumbnail URI", item.thumbnailURIs[0]);
+}
+
+function showMediaDetail() {
+       var str, item = gMediaItems[gItemId];
+
+       if (item.type == "IMAGE") {
+               str = makeCommonPropertiesListItems(item)
+                       + makeListItem(null, "Width", item.width)
+                       + makeListItem(null, "Height", item.height)
+                       + makeListItem(null, "Latitude", item.geolocation.latitude)
+                       + makeListItem(null, "Longitude", item.geolocation.longitude);
+       } else if (item.type == "VIDEO") {
+               str = makeCommonPropertiesListItems(item)
+                       + makeListItem(null, "Width", item.width)
+                       + makeListItem(null, "Height", item.height)
+                       + makeListItem(null, "Album", item.album)
+                       + makeListItem(null, "Artist", item.artists[0])
+                       + makeListItem(null, "Duration", item.duration + " Milliseconds")
+                       + makeListItem(null, "Played time", item.playedTime)
+                       + makeListItem(null, "Play count", item.playCount);
+       } else if (item.type == "AUDIO") {
+               str = makeCommonPropertiesListItems(item)
+                       + makeListItem(null, "Album", item.album)
+                       + makeListItem(null, "Artist", item.artists[0])
+                       + makeListItem(null, "Composer", item.composers[0])
+                       + makeListItem(null, "Genre", item.genres[0])
+                       + makeListItem(null, "Copyright", item.copyright)
+                       + makeListItem(null, "Bitrate", item.bitrate + " Bps")
+                       + makeListItem(null, "Track number", item.trackNumber)
+                       + makeListItem(null, "Duration", item.duration + " Milliseconds")
+                       + makeListItem(null, "Played time", item.playedTime)
+                       + makeListItem(null, "Play count", item.playCount);
+       } else {
+               alert("Invalid type");
+       }
+
+       $("#media-details").html(str).trigger("create").listview("refresh");
+}
+
+function updateRating() {
+       var item = gMediaItems[gItemId];
+
+       item.rating += 1; /* increase by 1 */
+       try {
+               gMediaSource.updateItem(item);
+       } catch (exc) {
+               alert("updateItem exc: " + exc.message);
+       }
+}
+
+function updateLast3Ratings() {
+       function onSuccess() {
+               getFolderItems(gFolderId, gMediaType);
+       }
+
+       function onError(err) {
+               alert("updateItemsBatch failed:" + err.message);
+       }
+
+       var itemArray = [];
+
+       for (var i = gMediaItems.length - 1, j = 0; i >= 0 && j < 3; i--, j++) {
+               gMediaItems[i].rating += 1;
+               itemArray.push(gMediaItems[i]);
+       }
+
+       try {
+               gMediaSource.updateItemsBatch(itemArray, onSuccess, onError);
+       } catch (exc) {
+               alert("updateItemsBatch exc:" + exc.message);
+       }
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..1bb8e61
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Mediacontent</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tutorial-mediacontent-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tutorial-mediacontent-snapshot.png
new file mode 100644 (file)
index 0000000..e4d73f4
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Mediacontent/tutorial-mediacontent-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/description.xml
new file mode 100644 (file)
index 0000000..d8dbc61
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Messaging</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-messaging-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen messaging device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/config.xml
new file mode 100755 (executable)
index 0000000..d08a8a7
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.23" id="http://tizen.org/wid/Messaging" viewmodes="fullscreen">
+       <name>Messaging</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/messaging" required="true"/>
+       <tizen:application id="samplemsg0" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/css/style.css
new file mode 100755 (executable)
index 0000000..c42015c
--- /dev/null
@@ -0,0 +1,6 @@
+li>label {
+       color:#646464;
+}
+label.ui-input-text {
+       width:20%;
+}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/index.html
new file mode 100644 (file)
index 0000000..c7f6bbe
--- /dev/null
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Messaging API Tutorial"/>
+
+       <title>Messaging</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css"/>
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Messages</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="message-list">
+                               <li data-role="list-divider">Search messages</li>
+                               <li>
+                                       <label for="phone-number">Phone</label>
+                                       <input type="tel" name="phone-number" id="phone-number"/>
+                               </li>
+                               <li data-role="list-divider">Messages</li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="search">Search</a></li>
+                                       <li><a id="new">New</a></li>
+                                       <li><a href="#email">Email</a></li>
+                                       <li><a id="tracking">Tracking</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="new-message">
+               <div data-role="header" data-position="fixed">
+                       <h1>New message</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li>
+                                       <label for="new-phone">Phone</label>
+                                       <input type="tel" name="new-phone" id="new-phone"/>
+                               </li>
+                               <li>
+                                       <label for="new-body">Body</label>
+                                       <textarea cols="40" rows="8" name="new-body" id="new-body" style="height:150px"></textarea>
+                               </li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="send">Send</a></li>
+                                       <li><a id="new-draft">Draft</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="detail">
+               <div data-role="header" data-position="fixed">
+                       <h1>Detail</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li class="ui-li-has-multiline">
+                                       From
+                                       <span class="ui-li-text-sub" id="detail-from"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       To
+                                       <span class="ui-li-text-sub" id="detail-to"></span>
+                               </li>
+                               <li>
+                                       <label for="detail-body">Body</label>
+                                       <textarea cols="40" rows="5" name="detail-body" id="detail-body" disabled="disabled" style="height:150px"></textarea>
+                               </li>
+                       </ul>
+               </div>
+       </div>
+
+       <div data-role="page" id="email">
+               <div data-role="header" data-position="fixed">
+                       <h1>Email conversations</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="conversation-list">
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a href="#email-sync">Email folder sync</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="email-sync">
+               <div data-role="header" data-position="fixed">
+                       <h1>Email folder sync</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="email-folder-list">
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="sync-all">Sync all</a></li>
+                                       <li><a id="stop-sync">Stop sync</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="email-detail">
+               <div data-role="header" data-position="fixed">
+                       <h1>Email detail</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li data-role="list-divider">The last email of this conversation</li>
+                               <li class="ui-li-has-multiline">
+                                       Subject
+                                       <span class="ui-li-text-sub" id="email-subject"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       From
+                                       <span class="ui-li-text-sub" id="email-from"></span>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Attachment
+                                       <span class="ui-li-text-sub" id="email-attachment">None</span>
+                               </li>
+                               <li>
+                                       <label for="email-plain-body">Plain<br/>Body</label>
+                                       <textarea cols="40" rows="5" name="email-body" id="email-plain-body" disabled="disabled" style="height:95px"></textarea>
+                               </li>
+                               <li>
+                                       <label for="email-html-body">HTML<br/>Body</label>
+                                       <textarea cols="40" rows="5" name="email-body" id="email-html-body" disabled="disabled" style="height:95px"></textarea>
+                               </li>
+                       </ul>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/project/js/main.js
new file mode 100644 (file)
index 0000000..a65da0a
--- /dev/null
@@ -0,0 +1,580 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+var INBOX = 1, OUTBOX = 2, DRAFTS = 3, SENTBOX = 4,
+       gMessagesListenerId, gConversationsListenerId, gFoldersListenerId, gSmsService, gEmailService,
+       gMessages, gFolders, gConversations, gSmsId, gEmailId, gSyncOpId;
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               tizen.application.exit();
+               return false;
+       });
+
+       $("#main").bind("pagebeforeshow", getMessages);
+
+       $("#message-list").delegate("li", "vclick", function() {
+               var id = $(this).data("id");
+
+               if (id == null) {
+                       /*
+                        * li having text input
+                        * return false; blocks text input havig focus
+                        * Just return
+                        */
+                       return;
+               } else {
+                       gSmsId = Number(id);
+                       if (gMessages[gSmsId].folderId == DRAFTS) {
+                               $.mobile.changePage("#new-message");
+                       } else {
+                               $.mobile.changePage("#detail");
+                       }
+               }
+               return false;
+       });
+
+       $("#message-list").delegate("div", "vclick", function() {
+               var id = $(this).parent().data("id");
+
+               if (id != null) {
+                       deleteMessage(Number(id), getMessages);
+               }
+               return false;
+       });
+
+       $("#new").bind("vclick", function() {
+               gSmsId = null;
+               $.mobile.changePage("#new-message");
+               return false;
+       });
+
+       $("#search").bind("vclick", function() {
+               getMessages();
+               return false;
+       });
+
+       $("#tracking").bind("vclick", registerListeners);
+
+       initEmailService();
+       initSmsService();
+});
+
+$(document).delegate("#new-message", "pageinit", function() {
+       $("#new-message").bind("pagebeforeshow", function() {
+               if (gSmsId == null) {
+                       $("#new-phone").val("").prop("disabled", false);
+                       $("#new-body").val("");
+               } else {
+                       $("#new-phone").val(gMessages[gSmsId].to[0]).prop("disabled", true);
+                       $("#new-body").val(gMessages[gSmsId].body.plainBody);
+               }
+       });
+
+       $("#send").bind("vclick", function() {
+               sendMessage();
+               return false;
+       });
+
+       $("#new-draft").bind("vclick", function() {
+               saveDraftMessage();
+               return false;
+       });
+});
+
+$(document).delegate("#detail", "pageinit", function() {
+       $("#detail").bind("pagebeforeshow", function() {
+               $("#detail-from").html(gMessages[gSmsId].from);
+               $("#detail-to").html(gMessages[gSmsId].to[0]);
+               $("#detail-body").val(gMessages[gSmsId].body.plainBody);
+
+               if (gMessages[gSmsId].isRead == false) {
+                       gMessages[gSmsId].isRead = true;
+                       updateMessage(gSmsId);
+               }
+       });
+});
+
+$(document).delegate("#email", "pageinit", function() {
+       $("#email").bind("pagebeforeshow", getEmailConversations);
+
+       $("#conversation-list").delegate("li", "vclick", function() {
+               gEmailId = Number($(this).data("id"));
+               $.mobile.changePage("#email-detail");
+               return false;
+       });
+
+       $("#conversation-list").delegate("div", "vclick", function() {
+               deleteConversation(Number($(this).parent().data("id")));
+               return false;
+       });
+});
+
+$(document).delegate("#email-sync", "pageinit", function() {
+       $("#email-sync").bind("pagebeforeshow", showEmailFolder);
+
+       $("#email-folder-list").delegate("div", "vclick", function() {
+               syncFolder(Number($(this).data("id")));
+               return false;
+       });
+
+       $("#sync-all").bind("vclick", function() {
+               syncEmails();
+               return false;
+       });
+
+       $("#stop-sync").bind("vclick", function() {
+               stopSync();
+               return false;
+       });
+});
+
+$(document).delegate("#email-detail", "pageinit", function() {
+       $("#email-detail").bind("pagebeforeshow", showEmailDetail);
+});
+
+function makeListItem(id, mainText, subText) {
+       return '<li class="ui-li-has-multiline" data-id="'
+                       + id
+                       + '">'
+                       + mainText
+                       + '<span class="ui-li-text-sub">'
+                       + subText
+                       + '</span><div data-role="button" data-inline="true">Delete</div></li>';
+}
+
+function onError(err) {
+       alert("Error: " + err.message);
+}
+
+function initSmsService() {
+       function onSMSGetMessageServicesSuccess(services) {
+               if(services.length == 0) {
+                       alert("No SMS MessageServices found");
+                       tizen.application.exit();
+                       return;
+               }
+
+               gSmsService = services[0];
+               getMessages();
+       }
+
+       try {
+               tizen.messaging.getMessageServices("messaging.sms", onSMSGetMessageServicesSuccess, onError);
+       } catch(exc) {
+               alert("getMessageServices exc: " + exc.name + ":" + exc.message);
+       }
+}
+
+function onSmsFindMessagesSuccess(messages) {
+       gMessages = gMessages.concat(messages);
+
+       var box = ["INBOX", "OUTBOX", "DRAFTS", "SENTBOX"],
+               str = '',
+               folderId, mainText, subText;
+
+       for (var i = 0; i < gMessages.length; i++) {
+               folderId = gMessages[i].folderId;
+               subText = "In " + box[folderId -1];
+
+               if (folderId == INBOX) {
+                       mainText = gMessages[i].from;
+                       subText += "&nbsp;&nbsp;&nbsp;" + (gMessages[i].isRead ? "Already read" : "Not read yet");
+               } else {
+                       mainText = gMessages[i].to[0];
+               }
+
+               if (mainText == null || mainText == "") {
+                       mainText = "No number";
+               }
+
+               str += makeListItem(i, mainText, subText);
+       }
+
+       $("#message-list>li[data-id]").remove();
+       $("#message-list").append(str).trigger("create").listview("refresh");
+}
+
+function getMessages() {
+       if (gSmsService == null) {
+               console.log("gSmsService not init yet. gSmsService: "+ gSmsService);
+               return;
+       }
+
+       var phone = $("#phone-number").val(),
+       fromFilter = new tizen.AttributeFilter("from", "CONTAINS", phone),
+       toFilter = new tizen.AttributeFilter("to", "CONTAINS", phone);
+       /*
+       Find seperately with "from" and "to" filters
+       because findMessages() searches only MT messages with "from" filter
+       and searches only MO messages with "to" filter
+       and CompositeFilter with "from", "to" UNION is not allowed in findMessages()
+       */
+       gMessages = [];
+       try {
+               gSmsService.messageStorage.findMessages(fromFilter, onSmsFindMessagesSuccess, onError);
+               gSmsService.messageStorage.findMessages(toFilter, onSmsFindMessagesSuccess, onError);
+       } catch (exc) {
+               alert("findMessages exc:" + exc.message);
+       }
+}
+
+function updateMessage(id) {
+       try {
+               gSmsService.messageStorage.updateMessages([gMessages[id]], function() {
+                       console.log("Updated successfully");
+               }, function(err) {
+                       alert("Update failed:" + err.message);
+               });
+       } catch (exc) {
+               alert("updateMessages exc:" + exc.message);
+       }
+}
+
+function deleteMessage(id, callback) {
+       try {
+               gSmsService.messageStorage.removeMessages([gMessages[id]], function() {
+                       if (callback) {
+                               callback();
+                       }
+               }, function(err) {
+                       alert("Delete failed:" + err.message);
+               });
+       } catch (exc) {
+               alert("removeMessages exc:" + exc.message);
+       }
+}
+
+function createMessage() {
+       var phoneNumber = $("#new-phone").val(),
+               msg;
+
+       if (phoneNumber == "") {
+               alert("Please input phone number");
+               return null;
+       }
+
+       if (gSmsId == null) {
+               msg = new tizen.Message("messaging.sms");
+       } else {
+               msg = gMessages[gSmsId];
+       }
+
+       msg.body.plainBody = $("#new-body").val();
+       msg.to = [phoneNumber];
+
+       return msg;
+}
+
+function saveDraftMessage(){
+       var msg = createMessage();
+
+       if (msg == null) {
+               return;
+       }
+
+       if (gSmsId == null) {
+               try{
+                       gSmsService.messageStorage.addDraftMessage(msg, function() {
+                               alert("Draft message saved successfully");
+                               window.history.back();
+                               return false;
+                       }, function() {
+                               alert("Draft message saving failed");
+                       });
+               } catch (exc){
+                       alert("saveDraftMessage error:" + exc.message);
+               }
+       } else {
+               updateMessage(gSmsId);
+       }
+}
+
+function sendMessage() {
+       var msg = createMessage();
+
+       if (msg == null) {
+               return;
+       }
+       try {
+               gSmsService.sendMessage(msg, function() {
+                       alert("Sent successfully");
+                       /*
+                        * The following code is removed.
+                        * Application should not delete the message in DRAFTS after sending it
+                        * because the message is supposed to be deleted by platform. (Device API guy confirmed)
+                        * But the message is not deleted by platform after sending it in current platform version.
+                        * We should monitor this platform issue fix.
+                        *
+                       if (gSmsId != null) {
+                               deleteMessage(gSmsId, null);
+                       }
+                       */
+                       window.history.back();
+                       return false;
+               }, function() {
+                       alert("Sending failed");
+               });
+       } catch (exc) {
+               alert("sendMessage exc:" + exc.message);
+       }
+}
+
+function initEmailService() {
+       function onEmailGetMessageServicesSuccess(services) {
+               if(services.length == 0) {
+                       alert("No Email MessageServices found");
+                       tizen.application.exit();
+                       return;
+               }
+
+               gEmailService = services[0];
+       }
+
+       try {
+               tizen.messaging.getMessageServices("messaging.email", onEmailGetMessageServicesSuccess, onError);
+       } catch (exc) {
+               alert("getMessageServices exc: " + exc.name + ":" + exc.message);
+       }
+}
+
+function onFindConversationsSuccess(conversations) {
+       var str = "";
+
+       gConversations = conversations;
+
+       for (var i = 0; i < conversations.length; i++) {
+               str += makeListItem(i, conversations[i].subject, conversations[i].messageCount + " email(s)");
+       }
+
+       $("#conversation-list").html(str).trigger("create").listview("refresh");
+}
+
+function getEmailConversations() {
+       var filter = new tizen.AttributeFilter("from", "CONTAINS", "");
+
+       gEmailService.messageStorage.findConversations(filter, onFindConversationsSuccess, onError);
+}
+
+function showEmailDetail() {
+       function onEmailFindMessagesSuccess(messages) {
+               if (messages.length == 0) {
+                       alert("The last email of the conversation not found");
+                       return;
+               }
+
+               var email = messages[0];
+
+               $("#email-subject").html(email.subject);
+               $("#email-from").html(email.from);
+
+               try {
+                       console.log("email.hasAttachment:" + email.hasAttachment);
+                       if (email.hasAttachment) {
+                               gEmailService.loadMessageAttachment(email.attachments[0], function(attachment) {
+                                       console.log("loadMessageAttachment success: filePath: " + attachment.filePath);
+                                       $("#email-attachment").html(attachment.filePath);
+                               }, onError);
+                       } else {
+                               $("#email-attachment").html("None");
+                       }
+
+                       console.log("email.body.loaded:" + email.body.loaded);
+                       if (email.body.loaded) {
+                               console.log("email body already loaded");
+                               $("#email-plain-body").val(email.body.plainBody);
+                               $("#email-html-body").val(email.body.htmlBody);
+                       } else {
+                               console.log("email body about to load");
+                               gEmailService.loadMessageBody(email, function(message) {
+                                       console.log("email body just loaded");
+                                       $("#email-plain-body").val(message.body.plainBody);
+                                       $("#email-html-body").val(message.body.htmlBody);
+                               }, onError);
+                       }
+               } catch (exc){
+                       alert("showEmailDetail failed" + exc.message);
+               }
+       }
+
+       gEmailService.messageStorage.findMessages(
+                       // FYI: "" + gConversations[gEmailId].lastMessageId to make value String type
+                       new tizen.AttributeFilter("id", "EXACTLY", "" + gConversations[gEmailId].lastMessageId),
+                       onEmailFindMessagesSuccess,
+                       onError);
+}
+
+function deleteConversation(id) {
+       try {
+               gEmailService.messageStorage.removeConversations([gConversations[id]], function() {
+                       gConversations.splice(id,1);
+                       /*
+                        * getEmailConversations();
+                        * removeConversations DB update tends to be delayed and this leads getEmailConversations
+                        * to retrieve wrong (Not updated) conversation list.
+                        * getEmailConversations() is replaced with following codes until this issue resolved.
+                        */
+                       var str = "";
+                       for (var i = 0; i < gConversations.length; i++) {
+                               str += makeListItem(i, gConversations[i].subject, gConversations[i].messageCount + " email(s)");
+                       }
+                       $("#conversation-list").html(str).trigger("create").listview("refresh");
+               }, function() {
+                       alert("Delete failed");
+               });
+       } catch (exc) {
+               alert("removeConversations exc:" + exc.message);
+       }
+}
+
+function onFindFoldersSuccess(folders) {
+       gFolders = folders;
+       var str = "";
+
+       for (var i = 0; i < folders.length; i++) {
+               str += '<li>'
+                       + folders[i].name
+                       + '<div data-role="button" data-inline="true" data-id="'
+                       + i
+                       + '">Sync</div></li>';
+       }
+
+       $("#email-folder-list").html(str).trigger("create").listview("refresh");
+}
+
+function showEmailFolder() {
+       var filter = new tizen.AttributeFilter("serviceId", "EXACTLY", "1");
+
+       try {
+               gEmailService.messageStorage.findFolders(filter, onFindFoldersSuccess, onError);
+       } catch (exc) {
+               alert("findFolders exc:" + exc.message);
+       }
+}
+
+function syncFolder(id) {
+       if (gSyncOpId) {
+               alert("Other sync is in progress");
+       } else {
+               try {
+                       gSyncOpId = gEmailService.syncFolder(gFolders[id], function() {
+                               alert("Folder sync succeeded");
+                               gSyncOpId = null;
+                       }, function() {
+                               alert("Folder sync failed");
+                               gSyncOpId = null;
+                       }, 30);
+                       alert("Sync started for " + gFolders[id].name);
+               } catch (exc) {
+                       alert("Folder sync failed: " + exc.message);
+                       gSyncOpId = null;
+               }
+       }
+}
+
+function syncEmails() {
+       if (gSyncOpId) {
+               alert("Other sync is in progress");
+       } else {
+               try {
+                       gSyncOpId = gEmailService.sync(function() {
+                               alert("Synchronization succeeded");
+                               gSyncOpId = null;
+                       }, function(err) {
+                               alert("Synchronization failed:" + err.message);
+                               gSyncOpId = null;
+                       });
+                       alert("Sync all started");
+               } catch (exc) {
+                       alert("Sync exc: " + exc.code + ":" + exc.message);
+                       gSyncOpId = null;
+               }
+       }
+}
+
+function stopSync() {
+       if (gSyncOpId) {
+               gEmailService.stopSync(gSyncOpId);
+               alert("Sync stopped");
+               gSyncOpId = null;
+       }
+}
+
+function registerListeners() {
+       var messagesChangeCB = {
+                       messagesadded : function(msgs) {
+                               alert("Tracking message :<br/>" + msgs.length + " message(s) added");
+                               if($.mobile.activePage.attr("id") == "main") {
+                                       getMessages();
+                               }
+                       },
+                       messagesupdated : function(msgs) {
+                               alert("Tracking message :<br/>" + msgs.length + " message(s) updated");
+                       },
+                       messagesremoved : function(msgs) {
+                               alert("Tracking message :<br/>" + msgs.length + " message(s) removed");
+                       }
+               },
+               conversationsChangeCB = {
+                       conversationsadded : function(conversations) {
+                               alert("Tracking message :<br/>" + conversations.length + " conversation(s) added");
+                       },
+                       conversationsupdated : function(conversations) {
+                               alert("Tracking message :<br/>" + conversations.length + " conversation(s) updated");
+                       },
+                       conversationsremoved : function(conversations) {
+                               alert("Tracking message :<br/>" + conversations.length + " conversation(s) removed");
+                       }
+               },
+               foldersChangeCB = {
+                       foldersadded : function(folders) {
+                               alert("Tracking message :<br/>" + folders.length + " folders(s) added");
+                       },
+                       foldersupdated : function(folders) {
+                               alert("Tracking message :<br/>" + folders.length + " folders(s) updated");
+                       },
+                       foldersremoved : function(folders) {
+                               alert("Tracking message :<br/>" + folders.length + " folders(s) removed");
+                       }
+               };
+
+       try {
+               gMessagesListenerId = gSmsService.messageStorage.addMessagesChangeListener(messagesChangeCB);
+               console.log("Listening for SMS Messages Change started");
+
+               gConversationsListenerId = gEmailService.messageStorage.addConversationsChangeListener(conversationsChangeCB);
+               console.log("Listening for Conversations Change started");
+
+               gFoldersListenerId = gEmailService.messageStorage.addFoldersChangeListener(foldersChangeCB);
+               console.log("Listening for Folders Change started");
+
+               $("#tracking").unbind("vclick", registerListeners);
+               $("#tracking").bind("vclick", unregisterListeners);
+               alert("Tracking started");
+       } catch (exc) {
+               alert("addChangeListeners error:" + exc.message);
+       }
+}
+
+function unregisterListeners() {
+       gSmsService.messageStorage.removeChangeListener(gMessagesListenerId);
+       gEmailService.messageStorage.removeChangeListener(gConversationsListenerId);
+       gEmailService.messageStorage.removeChangeListener(gFoldersListenerId);
+
+       $("#tracking").unbind("vclick", unregisterListeners);
+       $("#tracking").bind("vclick", registerListeners);
+       alert("Tracking stopped");
+}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..c0753f6
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Messaging</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tutorial-messaging-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tutorial-messaging-snapshot.png
new file mode 100755 (executable)
index 0000000..8ba4f6e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Messaging/tutorial-messaging-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/description.xml
new file mode 100644 (file)
index 0000000..2bca6ca
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>NFC</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-nfc-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen NFC device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/config.xml
new file mode 100644 (file)
index 0000000..8fac03e
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.5" viewmodes="fullscreen" id="http://tizen.org/wid/NFC">
+       <name>NFC</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/nfc" required="true"/>
+       <feature name="http://tizen.org/api/nfc.admin" required="true"/> 
+       <feature name="http://tizen.org/api/nfc.tag" required="true"/>
+       <feature name="http://tizen.org/api/nfc.p2p" required="true"/>
+       <tizen:appservice src="index.html" operation="http://tizen.org/appcontrol/operation/nfc_empty_type" mime="*/*"/>
+       <tizen:appservice src="index.html" operation="http://tizen.org/appcontrol/operation/nfc_well_known_type" mime="*/*"/>
+       <tizen:appservice src="index.html" operation="http://tizen.org/appcontrol/operation/nfc_mime_type" mime="*/*"/>
+       <tizen:appservice src="index.html" operation="http://tizen.org/appcontrol/operation/nfc_uri_type" mime="*/*"/>
+       <tizen:application id="samplenfc0" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/createPackage.sh b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/createPackage.sh
new file mode 100755 (executable)
index 0000000..96dc09b
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+#  wrt-plugins
+#
+# Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+#
+# Contact: Seung Mo Cho <seungm.cho@samsung.com>
+#
+# This library is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation; either version 2.1 of the License, or (at your
+# option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+test_dir=./
+
+cd $test_dir
+rm -f NFCSample.wgt
+
+# remove vim template files
+rm -f `find . -name ".*.swp"`
+rm -f `find . -name "*~"`
+
+#cp wac2_0Config.xml config.xml
+zip NFCSample.wgt -r \
+        css \
+        js \
+        config.xml \
+               signature1.xml \
+        icon.png \
+        *.html
+
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/ajax-loader.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/ajax-loader.png
new file mode 100755 (executable)
index 0000000..0973ae0
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/ajax-loader.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-18-black.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-18-black.png
new file mode 100755 (executable)
index 0000000..32fa6e7
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-18-black.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-18-white.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-18-white.png
new file mode 100755 (executable)
index 0000000..f4e6787
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-18-white.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-36-black.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-36-black.png
new file mode 100755 (executable)
index 0000000..e508159
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-36-black.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-36-white.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-36-white.png
new file mode 100755 (executable)
index 0000000..3f342cc
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/images/icons-36-white.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/jqm-docs.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/jqm-docs.css
new file mode 100755 (executable)
index 0000000..f0475c6
--- /dev/null
@@ -0,0 +1,343 @@
+/* jqm docs css
+
+Beware: lots of last-minute CSS going on in here 
+cobblers, shoes, 
+*/
+
+body { background: #dddddd; }
+.ui-mobile .type-home .ui-content { margin: 0; background: #e5e5e5 url(../images/jqm-sitebg.png) top center repeat-x; }
+.ui-mobile #jqm-homeheader { padding: 40px 10px 0; text-align: center;  margin: 0 auto; }
+.ui-mobile #jqm-homeheader h1 { margin: 0 0 ; }
+.ui-mobile #jqm-homeheader p { margin: .3em 0 0; line-height: 1.3; font-size: .9em; font-weight: bold; color: #666; }
+.ui-mobile #jqm-version { text-indent: -99999px; background: url(../images/version.png) top right no-repeat; width: 119px; height: 122px; overflow: hidden; position: absolute; z-index: 50; top: -11px; right: 0; }
+.ui-mobile .jqm-themeswitcher { margin: 10px 25px 10px 10px;  }
+
+h2 { margin:1.2em 0 .4em 0; }
+p code { font-size:1.2em; font-weight:bold; } 
+
+dt { font-weight: bold; margin: 2em 0 .5em; }
+dt code, dd code { font-size:1.3em; line-height:150%; }
+pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; }
+
+#jqm-homeheader img { width: 235px; }
+img { max-width: 100%; }
+
+.ui-header .jqm-home { top:0.65em; }
+nav { margin: 0; }
+
+p.intro {
+       font-size: .96em;
+       line-height: 1.3;
+               border-top: 1px solid #75ae18;
+               border-bottom: 0;
+               background: none;
+               margin: 1.5em 0;
+               padding: 1.5em 15px 0;
+
+}
+p.intro strong {
+       color:  #558e08;
+}
+.footer-docs {
+       padding: 5px 0;
+}
+.footer-docs p {
+       float: left;
+       margin-left:15px;
+       font-weight: normal;
+       font-size: .9em;
+}
+
+.type-interior .content-secondary {
+       border-right: 0;
+       border-left: 0;
+       margin: 10px -15px 0;
+       background: #fff;
+       border-top: 1px solid #ccc;
+}
+.type-home .ui-content {
+       margin-top: 5px;
+}
+.type-interior .ui-content {
+       padding-bottom: 0;
+}
+.content-secondary .ui-collapsible {
+       padding: 0 15px 10px;
+
+}
+.content-secondary .ui-collapsible-content {
+       padding: 0;
+       background: none;
+       border-bottom: none;
+}
+.content-secondary .ui-listview {
+       margin: 0;
+}
+/* new API additions */
+
+dt {  
+       margin: 35px 0 15px 0; 
+       background-color:#ddd; 
+       font-weight:normal;
+}
+dt code { 
+       display:inline-block; 
+       font-weight:bold;
+       color:#56A00E; 
+       padding:3px 7px; 
+       margin-right:10px; 
+       background-color:#fff; 
+}
+dd { 
+       margin-bottom:10px; 
+}
+dd .default { font-weight:bold; }
+dd pre { 
+       margin:0 0 0 0; 
+}
+dd code { font-weight: normal; }
+dd pre code { 
+       margin:0; 
+       border:none; 
+       font-weight:normal; 
+       font-size:100%; 
+       background-color:transparent; 
+}
+dd h4 { margin:15px 0 0 0; }
+               
+.localnav {
+       margin:0 0 20px 0;
+       overflow:hidden;
+}
+.localnav li {
+       float:left;
+}
+.localnav .ui-btn-inner { 
+       padding: .6em 10px; 
+       font-size:80%; 
+}z
+
+
+/* F bar theme - just for the docs overview headers */
+.ui-bar-f {
+       border-top: 1px solid   #56A00E;
+       border-bottom: 1px solid #56A00E;
+       background:                     #74b042;
+       color:                                  #fff;
+       font-weight: bold;
+       text-shadow: 0 -1px 1px #234403;        
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#74b042), to(#56A00E)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#74b042, #56A00E); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#74b042, #56A00E); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#74b042, #56A00E); /* IE10 */
+       background-image:      -o-linear-gradient(#74b042, #56A00E); /* Opera 11.10+ */
+       background-image:         linear-gradient(#74b042, #56A00E);            
+}
+.ui-bar-f,
+.ui-bar-f .ui-link-inherit {
+       color:                                  #fff;
+}
+.ui-bar-f .ui-link {
+       color:                                  #fff;
+       font-weight: bold;
+}
+.ui-btn-up-f {
+       border: 1px solid               #3B6F07;
+       background:                     #56A00E;
+       font-weight: bold;
+       color:                                  #fff;
+       text-shadow: 0 -1px 1px #234403;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#74b042), to(#56A00E)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#74b042, #56A00E); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#74b042, #56A00E); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#74b042, #56A00E); /* IE10 */
+       background-image:      -o-linear-gradient(#74b042, #56A00E); /* Opera 11.10+ */
+       background-image:         linear-gradient(#74b042, #56A00E);
+}
+.ui-btn-up-f a.ui-link-inherit {
+       color:                                  #fff;
+}
+.ui-btn-hover-f {
+       border: 1px solid               #3B6F07;
+       background:                     #6EBC1F;
+       font-weight: bold;
+       color:                                  #fff;
+       text-shadow: 0 -1px 1px #234403;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#8FC963), to(#6EBC1F)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#8FC963, #6EBC1F); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#8FC963, #6EBC1F); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#8FC963, #6EBC1F); /* IE10 */
+       background-image:      -o-linear-gradient(#8FC963, #6EBC1F); /* Opera 11.10+ */
+       background-image:         linear-gradient(#8FC963, #6EBC1F);
+}
+.ui-btn-hover-f a.ui-link-inherit {
+       color:                                  #fff;
+}
+.ui-btn-down-f {
+       border: 1px solid               #3B6F07;
+       background:                     #3d3d3d;
+       font-weight: bold;
+       color:                                  #fff;
+       text-shadow: 0 -1px 1px #234403;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#56A00E), to(#64A234)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#56A00E, #64A234); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#56A00E, #64A234); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#56A00E, #64A234); /* IE10 */
+       background-image:      -o-linear-gradient(#56A00E, #64A234); /* Opera 11.10+ */
+       background-image:         linear-gradient(#56A00E, #64A234);
+}
+.ui-btn-down-f a.ui-link-inherit {
+       color:                                  #fff;
+}
+.ui-btn-up-f,
+.ui-btn-hover-f,
+.ui-btn-down-f {
+       font-family: Helvetica, Arial, sans-serif;
+       text-decoration: none;
+}
+
+
+
+
+/* docs site layout */
+
+@media all and (min-width: 650px){
+       
+       .jqm-home {
+               position: absolute;
+               left: 10px;
+               top: 0;
+       }
+       .type-home .ui-content {
+               margin-top: 5px;
+       }
+       .ui-mobile #jqm-homeheader {
+               max-width: 340px;
+       }
+       .ui-mobile .jqm-themeswitcher {
+               float: right;
+       }
+       p.intro {
+               margin: 2em 0;
+       }
+       .type-home .ui-content,
+       .type-interior .ui-content {
+               padding: 0;
+               background: url(../images/px-ccc.gif) 50% 0 repeat-y;
+       }
+       .type-interior .ui-content {
+               background-position: 45%;
+               overflow: hidden;
+       }
+       .content-secondary {
+               text-align: left;
+               float: left;
+               width: 45%;
+               background: none;
+       }
+       .content-secondary,
+       .type-interior .content-secondary {
+               margin: 30px 0 20px 2%;
+               padding: 20px 4% 0 0;
+                       background: none;
+                                       border-top: none;
+       }
+       .type-index .content-secondary {
+               padding: 0;
+       }
+       .content-secondary .ui-collapsible {
+               margin: 0;
+               padding: 0;
+       }
+       .content-secondary .ui-collapsible-content {
+               border: none;
+       }
+       .type-index .content-secondary .ui-listview {
+               margin: 0;
+       }
+
+       .ui-mobile #jqm-homeheader {
+               padding: 0;
+       }
+       .content-primary {
+               width: 45%;
+               float: right;
+               margin-top: 30px;
+               margin-right: 1%;
+               padding-right: 1%;
+       }
+       .content-primary ul:first-child {
+               margin-top: 0;
+       }
+       .content-secondary h2 {
+               position: absolute;
+               left: -9999px;
+       }
+       .type-interior .content-primary {
+               padding: 1.5em 6% 3em 0;
+               margin: 0;
+       }
+       /* fix up the collapsibles - expanded on desktop */
+       .content-secondary .ui-collapsible-heading {
+               display: none;
+       }
+       .content-secondary .ui-collapsible-contain {
+               margin:0;
+       }
+       .content-secondary .ui-collapsible-content {
+               display: block;
+               margin: 0;
+               padding: 0;
+       }
+       .type-interior  .content-secondary .ui-li-divider {
+               padding-top: 1em;
+               padding-bottom: 1em;
+       }
+       .type-interior .content-secondary {
+               margin: 0;
+               padding: 0;
+       }
+       
+}
+@media all and (min-width: 750px){
+       .type-home .ui-content,
+       .type-interior .ui-content {
+               background-position: 39%;
+       }
+       .content-secondary {
+               width: 34%;
+       }
+       .content-primary {
+               width: 56%;
+               padding-right: 1%;
+       }       
+       .type-interior .ui-content {
+               background-position: 34%;
+       }
+}
+
+@media all and (min-width: 1200px){
+       .type-home .ui-content{
+               background-position: 38.5%;
+       }
+       .type-interior .ui-content {
+               background-position: 30%;
+       }
+       .content-secondary {
+               width: 30%;
+               padding-right:6%;
+               margin: 30px 0 20px 5%;
+       }
+       .type-interior .content-secondary {
+               margin: 0;
+               padding: 0;
+       }
+       .content-primary {
+               width: 50%;
+               margin-right: 5%;
+               padding-right: 3%;
+       }
+       .type-interior .content-primary {
+               width: 60%;
+       }
+}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/jquery.mobile-1.0.1.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/jquery.mobile-1.0.1.css
new file mode 100755 (executable)
index 0000000..5397e8a
--- /dev/null
@@ -0,0 +1,1869 @@
+/*
+* jQuery Mobile Framework 1.0.1
+* http://jquerymobile.com
+*
+* Copyright 2011-2012 (c) jQuery Project
+* Dual licensed under the MIT or GPL Version 2 licenses.
+* http://jquery.org/license
+*
+*/
+/* Swatches */
+
+/* A
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-bar-a {
+       border: 1px solid               #2A2A2A /*{a-bar-border}*/;
+       background:                     #111111 /*{a-bar-background-color}*/;
+       color:                                  #ffffff /*{a-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{a-bar-shadow-x}*/ -1px /*{a-bar-shadow-y}*/ 1px /*{a-bar-shadow-radius}*/ #000000 /*{a-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #3c3c3c /*{a-bar-background-start}*/), to( #111 /*{a-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#3c3c3c /*{a-bar-background-start}*/, #111 /*{a-bar-background-end}*/);
+}
+.ui-bar-a, 
+.ui-bar-a input, 
+.ui-bar-a select, 
+.ui-bar-a textarea, 
+.ui-bar-a button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-a .ui-link-inherit {
+       color: #fff /*{a-bar-color}*/;
+}
+
+.ui-bar-a .ui-link {
+       color: #7cc4e7 /*{a-bar-link-color}*/;
+       font-weight: bold;
+}
+
+.ui-bar-a .ui-link:hover {
+       color: #2489CE /*{a-bar-link-hover}*/;
+}
+
+.ui-bar-a .ui-link:active {
+       color: #2489CE /*{a-bar-link-active}*/;
+}
+
+.ui-bar-a .ui-link:visited {
+    color: #2489CE /*{a-bar-link-visited}*/;
+}
+.ui-body-a,
+.ui-dialog.ui-overlay-a {
+       border: 1px solid               #2A2A2A /*{a-body-border}*/;
+       background:                     #222222 /*{a-body-background-color}*/;
+       color:                                  #fff /*{a-body-color}*/;
+        text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ #000 /*{a-body-shadow-color}*/;
+       font-weight: normal;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #666 /*{a-body-background-start}*/), to( #222 /*{a-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#666 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#666 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#666 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#666 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#666 /*{a-body-background-start}*/, #222 /*{a-body-background-end}*/);        
+}
+.ui-body-a,
+.ui-body-a input,
+.ui-body-a select,
+.ui-body-a textarea,
+.ui-body-a button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-a .ui-link-inherit {
+       color:  #fff /*{a-body-color}*/;
+}
+
+.ui-body-a .ui-link {
+       color: #2489CE /*{a-body-link-color}*/;
+       font-weight: bold;
+}
+
+.ui-body-a .ui-link:hover {
+       color: #2489CE /*{a-body-link-hover}*/;
+}
+
+.ui-body-a .ui-link:active {
+       color: #2489CE /*{a-body-link-active}*/;
+}
+
+.ui-body-a .ui-link:visited {
+    color: #2489CE /*{a-body-link-visited}*/;
+}
+
+.ui-btn-up-a {
+       border: 1px solid               #222 /*{a-bup-border}*/;
+       background:                     #333333 /*{a-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bup-color}*/;
+       text-shadow: 0 /*{a-bup-shadow-x}*/ -1px /*{a-bup-shadow-y}*/ 1px /*{a-bup-shadow-radius}*/ #000 /*{a-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #555 /*{a-bup-background-start}*/), to( #333 /*{a-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#555 /*{a-bup-background-start}*/, #333 /*{a-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#555 /*{a-bup-background-start}*/, #333 /*{a-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#555 /*{a-bup-background-start}*/, #333 /*{a-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#555 /*{a-bup-background-start}*/, #333 /*{a-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#555 /*{a-bup-background-start}*/, #333 /*{a-bup-background-end}*/);
+}
+.ui-btn-up-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bup-color}*/;
+}
+.ui-btn-hover-a {
+       border: 1px solid               #000 /*{a-bhover-border}*/;
+       background:                     #444444 /*{a-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bhover-color}*/;
+       text-shadow: 0 /*{a-bhover-shadow-x}*/ -1px /*{a-bhover-shadow-y}*/ 1px /*{a-bhover-shadow-radius}*/ #000 /*{a-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #666 /*{a-bhover-background-start}*/), to( #444 /*{a-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#666 /*{a-bhover-background-start}*/, #444 /*{a-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#666 /*{a-bhover-background-start}*/, #444 /*{a-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#666 /*{a-bhover-background-start}*/, #444 /*{a-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#666 /*{a-bhover-background-start}*/, #444 /*{a-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#666 /*{a-bhover-background-start}*/, #444 /*{a-bhover-background-end}*/);
+}
+.ui-btn-hover-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bhover-color}*/;
+}
+.ui-btn-down-a {
+       border: 1px solid               #000 /*{a-bdown-border}*/;
+       background:                     #3d3d3d /*{a-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{a-bdown-color}*/;
+       text-shadow: 0 /*{a-bdown-shadow-x}*/ -1px /*{a-bdown-shadow-y}*/ 1px /*{a-bdown-shadow-radius}*/ #000 /*{a-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #333 /*{a-bdown-background-start}*/), to( #5a5a5a /*{a-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#333 /*{a-bdown-background-start}*/, #5a5a5a /*{a-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#333 /*{a-bdown-background-start}*/, #5a5a5a /*{a-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#333 /*{a-bdown-background-start}*/, #5a5a5a /*{a-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#333 /*{a-bdown-background-start}*/, #5a5a5a /*{a-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#333 /*{a-bdown-background-start}*/, #5a5a5a /*{a-bdown-background-end}*/);
+}
+.ui-btn-down-a a.ui-link-inherit {
+       color:                                  #fff /*{a-bdown-color}*/;
+}
+.ui-btn-up-a,
+.ui-btn-hover-a,
+.ui-btn-down-a {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+
+
+/* B
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-bar-b {
+       border: 1px solid               #456f9a /*{b-bar-border}*/;
+       background:                     #5e87b0 /*{b-bar-background-color}*/;
+       color:                                  #fff /*{b-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{b-bar-shadow-x}*/ -1px /*{b-bar-shadow-y}*/ 1px /*{b-bar-shadow-radius}*/ #254f7a /*{b-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #81a8ce /*{b-bar-background-start}*/), to( #5e87b0 /*{b-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#81a8ce /*{b-bar-background-start}*/, #5e87b0 /*{b-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#81a8ce /*{b-bar-background-start}*/, #5e87b0 /*{b-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#81a8ce /*{b-bar-background-start}*/, #5e87b0 /*{b-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#81a8ce /*{b-bar-background-start}*/, #5e87b0 /*{b-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#81a8ce /*{b-bar-background-start}*/, #5e87b0 /*{b-bar-background-end}*/);
+}
+.ui-bar-b,
+.ui-bar-b input,
+.ui-bar-b select,
+.ui-bar-b textarea,
+.ui-bar-b button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-b .ui-link-inherit {
+       color:  #fff /*{b-bar-color}*/;
+}
+.ui-bar-b .ui-link {
+       color: #ddf0f8 /*{b-bar-link-color}*/;
+       font-weight: bold;
+}
+
+.ui-bar-b .ui-link:hover {
+       color: #ddf0f8 /*{b-bar-link-hover}*/;
+}
+
+.ui-bar-b .ui-link:active {
+       color: #ddf0f8 /*{b-bar-link-active}*/;
+}
+
+.ui-bar-b .ui-link:visited {
+    color: #ddf0f8 /*{b-bar-link-visited}*/;
+}
+.ui-body-b,
+.ui-dialog.ui-overlay-b {
+       border: 1px solid               #C6C6C6 /*{b-body-border}*/;
+       background:                     #cccccc /*{b-body-background-color}*/;
+       color:                                  #333333 /*{b-body-color}*/;
+       text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #fff /*{b-body-shadow-color}*/;
+       font-weight: normal;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #e6e6e6 /*{b-body-background-start}*/), to( #ccc /*{b-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#e6e6e6 /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#e6e6e6 /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#e6e6e6 /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#e6e6e6 /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#e6e6e6 /*{b-body-background-start}*/, #ccc /*{b-body-background-end}*/);
+}
+.ui-body-b,
+.ui-body-b input,
+.ui-body-b select,
+.ui-body-b textarea,
+.ui-body-b button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-b .ui-link-inherit {
+       color:  #333333 /*{b-body-color}*/;
+}
+
+.ui-body-b .ui-link {
+       color: #2489CE /*{b-body-link-color}*/;
+       font-weight: bold;
+}
+
+.ui-body-b .ui-link:hover {
+       color: #2489CE /*{b-body-link-hover}*/;
+}
+
+.ui-body-b .ui-link:active {
+       color: #2489CE /*{b-body-link-active}*/;
+}
+
+.ui-body-b .ui-link:visited {
+    color: #2489CE /*{b-body-link-visited}*/;
+}
+
+.ui-btn-up-b {
+       border: 1px solid               #145072 /*{b-bup-border}*/;
+       background:                     #2567ab /*{b-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bup-color}*/;
+       text-shadow: 0 /*{b-bup-shadow-x}*/ -1px /*{b-bup-shadow-y}*/ 1px /*{b-bup-shadow-radius}*/ #145072 /*{b-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #5f9cc5 /*{b-bup-background-start}*/), to( #396b9e /*{b-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#5f9cc5 /*{b-bup-background-start}*/, #396b9e /*{b-bup-background-end}*/);
+}
+.ui-btn-up-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bup-color}*/;
+}
+.ui-btn-hover-b {
+       border: 1px solid               #00516e /*{b-bhover-border}*/;
+       background:                     #4b88b6 /*{b-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bhover-color}*/;
+       text-shadow: 0 /*{b-bhover-shadow-x}*/ -1px /*{b-bhover-shadow-y}*/ 1px /*{b-bhover-shadow-radius}*/ #014D68 /*{b-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #72b0d4 /*{b-bhover-background-start}*/), to( #4b88b6 /*{b-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#72b0d4 /*{b-bhover-background-start}*/, #4b88b6 /*{b-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#72b0d4 /*{b-bhover-background-start}*/, #4b88b6 /*{b-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#72b0d4 /*{b-bhover-background-start}*/, #4b88b6 /*{b-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#72b0d4 /*{b-bhover-background-start}*/, #4b88b6 /*{b-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#72b0d4 /*{b-bhover-background-start}*/, #4b88b6 /*{b-bhover-background-end}*/);
+}
+.ui-btn-hover-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bhover-color}*/;
+}
+.ui-btn-down-b {
+       border: 1px solid               #225377 /*{b-bdown-border}*/;
+       background:                     #4e89c5 /*{b-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{b-bdown-color}*/;
+       text-shadow: 0 /*{b-bdown-shadow-x}*/ -1px /*{b-bdown-shadow-y}*/ 1px /*{b-bdown-shadow-radius}*/ #225377 /*{b-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #396b9e /*{b-bdown-background-start}*/), to( #4e89c5 /*{b-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#396b9e /*{b-bdown-background-start}*/, #4e89c5 /*{b-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#396b9e /*{b-bdown-background-start}*/, #4e89c5 /*{b-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#396b9e /*{b-bdown-background-start}*/, #4e89c5 /*{b-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#396b9e /*{b-bdown-background-start}*/, #4e89c5 /*{b-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#396b9e /*{b-bdown-background-start}*/, #4e89c5 /*{b-bdown-background-end}*/);
+}
+.ui-btn-down-b a.ui-link-inherit {
+       color:                                  #fff /*{b-bdown-color}*/;
+}
+.ui-btn-up-b,
+.ui-btn-hover-b,
+.ui-btn-down-b {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+
+
+/* C
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-bar-c {
+       border: 1px solid               #B3B3B3 /*{c-bar-border}*/;
+       background:                     #e9eaeb /*{c-bar-background-color}*/;
+       color:                                  #3E3E3E /*{c-bar-color}*/;
+       font-weight: bold;
+       text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 1px /*{c-bar-shadow-radius}*/      #fff /*{c-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #f0f0f0 /*{c-bar-background-start}*/), to( #e9eaeb /*{c-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#f0f0f0 /*{c-bar-background-start}*/, #e9eaeb /*{c-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#f0f0f0 /*{c-bar-background-start}*/, #e9eaeb /*{c-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#f0f0f0 /*{c-bar-background-start}*/, #e9eaeb /*{c-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#f0f0f0 /*{c-bar-background-start}*/, #e9eaeb /*{c-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#f0f0f0 /*{c-bar-background-start}*/, #e9eaeb /*{c-bar-background-end}*/);
+}
+
+.ui-bar-c .ui-link-inherit {
+       color:  #3E3E3E /*{c-bar-color}*/;
+}
+.ui-bar-c .ui-link {
+       color: #7cc4e7 /*{c-bar-link-color}*/;
+       font-weight: bold;
+}
+
+.ui-bar-c .ui-link:hover {
+       color: #2489CE /*{c-bar-link-hover}*/;
+}
+
+.ui-bar-c .ui-link:active {
+       color: #2489CE /*{c-bar-link-active}*/;
+}
+
+.ui-bar-c .ui-link:visited {
+    color: #2489CE /*{c-bar-link-visited}*/;
+}
+
+.ui-bar-c,
+.ui-bar-c input,
+.ui-bar-c select,
+.ui-bar-c textarea,
+.ui-bar-c button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-c,
+.ui-dialog.ui-overlay-c {
+       border: 1px solid               #B3B3B3 /*{c-body-border}*/;
+       color:                                  #333333 /*{c-body-color}*/;
+       text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #fff /*{c-body-shadow-color}*/;
+       background:                     #f0f0f0 /*{c-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #eee /*{c-body-background-start}*/), to( #ddd /*{c-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#eee /*{c-body-background-start}*/, #ddd /*{c-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#eee /*{c-body-background-start}*/, #ddd /*{c-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#eee /*{c-body-background-start}*/, #ddd /*{c-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#eee /*{c-body-background-start}*/, #ddd /*{c-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#eee /*{c-body-background-start}*/, #ddd /*{c-body-background-end}*/);
+}
+.ui-body-c,
+.ui-body-c input,
+.ui-body-c select,
+.ui-body-c textarea,
+.ui-body-c button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+
+.ui-body-c .ui-link-inherit {
+       color:  #333333 /*{c-body-color}*/;
+}
+
+.ui-body-c .ui-link {
+       color: #2489CE /*{c-body-link-color}*/;
+       font-weight: bold;
+}
+
+.ui-body-c .ui-link:hover {
+       color: #2489CE /*{c-body-link-hover}*/;
+}
+
+.ui-body-c .ui-link:active {
+       color: #2489CE /*{c-body-link-active}*/;
+}
+
+.ui-body-c .ui-link:visited {
+    color: #2489CE /*{c-body-link-visited}*/;
+}
+
+.ui-btn-up-c {
+       border: 1px solid               #ccc /*{c-bup-border}*/;
+       background:                     #eee /*{c-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #444 /*{c-bup-color}*/;
+       text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 1px /*{c-bup-shadow-radius}*/ #f6f6f6 /*{c-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fdfdfd /*{c-bup-background-start}*/), to( #eee /*{c-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#fdfdfd /*{c-bup-background-start}*/, #eee /*{c-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#fdfdfd /*{c-bup-background-start}*/, #eee /*{c-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#fdfdfd /*{c-bup-background-start}*/, #eee /*{c-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#fdfdfd /*{c-bup-background-start}*/, #eee /*{c-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#fdfdfd /*{c-bup-background-start}*/, #eee /*{c-bup-background-end}*/);
+}
+.ui-btn-up-c a.ui-link-inherit {
+       color:                                  #2F3E46 /*{c-bup-color}*/;
+}
+
+.ui-btn-hover-c {
+       border: 1px solid               #bbbbbb /*{c-bhover-border}*/;
+       background:                     #dadada /*{c-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #101010 /*{c-bhover-color}*/;
+       text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 1px /*{c-bhover-shadow-radius}*/ #fff /*{c-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ededed /*{c-bhover-background-start}*/), to( #dadada /*{c-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#ededed /*{c-bhover-background-start}*/, #dadada /*{c-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#ededed /*{c-bhover-background-start}*/, #dadada /*{c-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#ededed /*{c-bhover-background-start}*/, #dadada /*{c-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#ededed /*{c-bhover-background-start}*/, #dadada /*{c-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#ededed /*{c-bhover-background-start}*/, #dadada /*{c-bhover-background-end}*/);
+}
+.ui-btn-hover-c a.ui-link-inherit {
+       color:                                  #2F3E46 /*{c-bhover-color}*/;
+}
+.ui-btn-down-c {
+       border: 1px solid               #808080 /*{c-bdown-border}*/;
+       background:                     #fdfdfd /*{c-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111111 /*{c-bdown-color}*/;
+       text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 1px /*{c-bdown-shadow-radius}*/ #ffffff /*{c-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #eee /*{c-bdown-background-start}*/), to( #fdfdfd /*{c-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#eee /*{c-bdown-background-start}*/, #fdfdfd /*{c-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#eee /*{c-bdown-background-start}*/, #fdfdfd /*{c-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#eee /*{c-bdown-background-start}*/, #fdfdfd /*{c-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#eee /*{c-bdown-background-start}*/, #fdfdfd /*{c-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#eee /*{c-bdown-background-start}*/, #fdfdfd /*{c-bdown-background-end}*/);
+}
+.ui-btn-down-c a.ui-link-inherit {
+       color:                                  #2F3E46 /*{c-bdown-color}*/;
+}
+.ui-btn-up-c,
+.ui-btn-hover-c,
+.ui-btn-down-c {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+
+
+/* D
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-bar-d {
+       border: 1px solid               #ccc /*{d-bar-border}*/;
+       background:                     #bbb /*{d-bar-background-color}*/;
+       color:                                  #333 /*{d-bar-color}*/;
+       text-shadow: 0 /*{d-bar-shadow-x}*/ 1px /*{d-bar-shadow-y}*/ 0 /*{d-bar-shadow-radius}*/ #eee /*{d-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #ddd /*{d-bar-background-start}*/), to( #bbb /*{d-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#ddd /*{d-bar-background-start}*/, #bbb /*{d-bar-background-end}*/);
+}
+.ui-bar-d,
+.ui-bar-d input,
+.ui-bar-d select,
+.ui-bar-d textarea,
+.ui-bar-d button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+
+.ui-bar-d .ui-link-inherit {
+       color:  #333333 /*{d-bar-color}*/;
+}
+.ui-bar-d .ui-link {
+       color: #2489CE /*{d-bar-link-color}*/;
+       font-weight: bold;
+}
+
+.ui-bar-d .ui-link:hover {
+       color: #2489CE /*{d-bar-link-hover}*/;
+}
+
+.ui-bar-d .ui-link:active {
+       color: #2489CE /*{d-bar-link-active}*/;
+}
+
+.ui-bar-d .ui-link:visited {
+    color: #2489CE /*{d-bar-link-visited}*/;
+}
+
+.ui-body-d,
+.ui-dialog.ui-overlay-d {
+       border: 1px solid               #ccc /*{d-body-border}*/;
+       color:                                  #333333 /*{d-body-color}*/;
+       text-shadow: 0 /*{d-body-shadow-x}*/ 1px /*{d-body-shadow-y}*/ 0 /*{d-body-shadow-radius}*/     #fff /*{d-body-shadow-color}*/;
+       background:                     #ffffff /*{d-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), to( #fff /*{d-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#fff /*{d-body-background-start}*/, #fff /*{d-body-background-end}*/);
+}
+.ui-body-d,
+.ui-body-d input,
+.ui-body-d select,
+.ui-body-d textarea,
+.ui-body-d button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+
+.ui-body-d .ui-link-inherit {
+       color:  #333333 /*{d-body-color}*/;
+}
+
+.ui-body-d .ui-link {
+       color: #2489CE /*{d-body-link-color}*/;
+       font-weight: bold;
+}
+
+.ui-body-d .ui-link:hover {
+       color: #2489CE /*{d-body-link-hover}*/;
+}
+
+.ui-body-d .ui-link:active {
+       color: #2489CE /*{d-body-link-active}*/;
+}
+
+.ui-body-d .ui-link:visited {
+    color: #2489CE /*{d-body-link-visited}*/;
+}
+
+.ui-btn-up-d {
+       border: 1px solid               #ccc /*{d-bup-border}*/;
+       background:                     #fff /*{d-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #444 /*{d-bup-color}*/;
+       text-shadow: 0 /*{d-bup-shadow-x}*/ 1px /*{d-bup-shadow-y}*/ 1px /*{d-bup-shadow-radius}*/ #fff /*{d-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff), to( #fff /*{d-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#fff /*{d-bup-background-start}*/, #fff /*{d-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#fff /*{d-bup-background-start}*/, #fff /*{d-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#fff /*{d-bup-background-start}*/, #fff /*{d-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#fff /*{d-bup-background-start}*/, #fff /*{d-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#fff /*{d-bup-background-start}*/, #fff /*{d-bup-background-end}*/);
+}
+.ui-btn-up-d a.ui-link-inherit {
+       color:                                  #333 /*{d-bup-color}*/;
+}
+.ui-btn-hover-d {
+       border: 1px solid               #aaa /*{d-bhover-border}*/;
+       background:                     #eeeeee /*{d-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #222 /*{d-bhover-color}*/;
+       cursor: pointer;
+       text-shadow: 0 /*{d-bhover-shadow-x}*/ 1px /*{d-bhover-shadow-y}*/ 1px /*{d-bhover-shadow-radius}*/     #fff /*{d-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fdfdfd), to( #eee /*{d-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#fdfdfd /*{d-bhover-background-start}*/, #eee /*{d-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#fdfdfd /*{d-bhover-background-start}*/, #eee /*{d-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#fdfdfd /*{d-bhover-background-start}*/, #eee /*{d-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#fdfdfd /*{d-bhover-background-start}*/, #eee /*{d-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#fdfdfd /*{d-bhover-background-start}*/, #eee /*{d-bhover-background-end}*/);
+}
+.ui-btn-hover-d a.ui-link-inherit {
+       color:                                  #222 /*{d-bhover-color}*/;
+}
+.ui-btn-down-d {
+       border: 1px solid               #aaaaaa /*{d-bdown-border}*/;
+       background:                     #ffffff /*{d-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{d-bdown-color}*/;
+       text-shadow: 0 /*{d-bdown-shadow-x}*/ 1px /*{d-bdown-shadow-y}*/ 1px /*{d-bdown-shadow-radius}*/        #ffffff /*{d-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #eee /*{d-bdown-background-start}*/), to( #fff /*{d-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#eee /*{d-bdown-background-start}*/, #fff /*{d-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#eee /*{d-bdown-background-start}*/, #fff /*{d-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#eee /*{d-bdown-background-start}*/, #fff /*{d-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#eee /*{d-bdown-background-start}*/, #fff /*{d-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#eee /*{d-bdown-background-start}*/, #fff /*{d-bdown-background-end}*/);
+}
+.ui-btn-down-d a.ui-link-inherit {
+       color:                                  #111 /*{d-bdown-color}*/;
+}
+.ui-btn-up-d,
+.ui-btn-hover-d,
+.ui-btn-down-d {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+
+
+/* E
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-bar-e {
+       border: 1px solid               #F7C942 /*{e-bar-border}*/;
+       background:                     #fadb4e /*{e-bar-background-color}*/;
+       color:                                  #333 /*{e-bar-color}*/;
+       text-shadow: 0 /*{e-bar-shadow-x}*/ 1px /*{e-bar-shadow-y}*/ 0 /*{e-bar-shadow-radius}*/        #fff /*{e-bar-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bar-background-start}*/), to( #fadb4e /*{e-bar-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#fceda7 /*{e-bar-background-start}*/, #fadb4e /*{e-bar-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#fceda7 /*{e-bar-background-start}*/, #fadb4e /*{e-bar-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#fceda7 /*{e-bar-background-start}*/, #fadb4e /*{e-bar-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#fceda7 /*{e-bar-background-start}*/, #fadb4e /*{e-bar-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#fceda7 /*{e-bar-background-start}*/, #fadb4e /*{e-bar-background-end}*/);
+}
+.ui-bar-e,
+.ui-bar-e input,
+.ui-bar-e select,
+.ui-bar-e textarea,
+.ui-bar-e button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-bar-e .ui-link-inherit {
+       color:  #333333 /*{e-bar-color}*/;
+}
+.ui-bar-e .ui-link {
+       color: #2489CE /*{e-bar-link-color}*/;
+       font-weight: bold;
+}
+
+.ui-bar-e .ui-link:hover {
+       color: #2489CE /*{e-bar-link-hover}*/;
+}
+
+.ui-bar-e .ui-link:active {
+       color: #2489CE /*{e-bar-link-active}*/;
+}
+
+.ui-bar-e .ui-link:visited {
+    color: #2489CE /*{e-bar-link-visited}*/;
+}
+
+.ui-body-e,
+.ui-dialog.ui-overlay-e {
+       border: 1px solid               #F7C942 /*{e-body-border}*/;
+       color:                                  #333333 /*{e-body-color}*/;
+       text-shadow: 0 /*{e-body-shadow-x}*/ 1px /*{e-body-shadow-y}*/ 0 /*{e-body-shadow-radius}*/     #fff /*{e-body-shadow-color}*/;
+       background:                     #faeb9e /*{e-body-background-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fff /*{e-body-background-start}*/), to( #faeb9e /*{e-body-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#fff /*{e-body-background-start}*/, #faeb9e /*{e-body-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#fff /*{e-body-background-start}*/, #faeb9e /*{e-body-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#fff /*{e-body-background-start}*/, #faeb9e /*{e-body-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#fff /*{e-body-background-start}*/, #faeb9e /*{e-body-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#fff /*{e-body-background-start}*/, #faeb9e /*{e-body-background-end}*/);
+}
+.ui-body-e,
+.ui-body-e input,
+.ui-body-e select,
+.ui-body-e textarea,
+.ui-body-e button {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-body-e .ui-link-inherit {
+       color:  #333333 /*{e-body-color}*/;
+}
+
+.ui-body-e .ui-link {
+       color: #2489CE /*{e-body-link-color}*/;
+       font-weight: bold;
+}
+
+.ui-body-e .ui-link:hover {
+       color: #2489CE /*{e-body-link-hover}*/;
+}
+
+.ui-body-e .ui-link:active {
+       color: #2489CE /*{e-body-link-active}*/;
+}
+
+.ui-body-e .ui-link:visited {
+    color: #2489CE /*{e-body-link-visited}*/;
+}
+
+.ui-btn-up-e {
+       border: 1px solid               #F7C942 /*{e-bup-border}*/;
+       background:                     #fadb4e /*{e-bup-background-color}*/;
+       font-weight: bold;
+       color:                                  #333 /*{e-bup-color}*/;
+       text-shadow: 0 /*{e-bup-shadow-x}*/ 1px /*{e-bup-shadow-y}*/ 0 /*{e-bup-shadow-radius}*/        #fff /*{e-bup-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fceda7 /*{e-bup-background-start}*/), to( #fadb4e /*{e-bup-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#fceda7 /*{e-bup-background-start}*/, #fadb4e /*{e-bup-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#fceda7 /*{e-bup-background-start}*/, #fadb4e /*{e-bup-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#fceda7 /*{e-bup-background-start}*/, #fadb4e /*{e-bup-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#fceda7 /*{e-bup-background-start}*/, #fadb4e /*{e-bup-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#fceda7 /*{e-bup-background-start}*/, #fadb4e /*{e-bup-background-end}*/);
+}
+.ui-btn-up-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bup-color}*/;
+}
+.ui-btn-hover-e {
+       border: 1px solid               #e79952 /*{e-bhover-border}*/;
+       background:                     #fbe26f /*{e-bhover-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bhover-color}*/;
+       text-shadow: 0 /*{e-bhover-shadow-x}*/ 1px /*{e-bhover-shadow-y}*/ 1px /*{e-bhover-shadow-radius}*/     #fff /*{e-bhover-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fcf0b5 /*{e-bhover-background-start}*/), to( #fbe26f /*{e-bhover-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#fcf0b5 /*{e-bhover-background-start}*/, #fbe26f /*{e-bhover-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#fcf0b5 /*{e-bhover-background-start}*/, #fbe26f /*{e-bhover-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#fcf0b5 /*{e-bhover-background-start}*/, #fbe26f /*{e-bhover-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#fcf0b5 /*{e-bhover-background-start}*/, #fbe26f /*{e-bhover-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#fcf0b5 /*{e-bhover-background-start}*/, #fbe26f /*{e-bhover-background-end}*/);
+}
+
+.ui-btn-hover-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bhover-color}*/;
+}
+.ui-btn-down-e {
+       border: 1px solid               #F7C942 /*{e-bdown-border}*/;
+       background:                     #fceda7 /*{e-bdown-background-color}*/;
+       font-weight: bold;
+       color:                                  #111 /*{e-bdown-color}*/;
+       text-shadow: 0 /*{e-bdown-shadow-x}*/ 1px /*{e-bdown-shadow-y}*/ 1px /*{e-bdown-shadow-radius}*/        #ffffff /*{e-bdown-shadow-color}*/;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #fadb4e /*{e-bdown-background-start}*/), to( #fceda7 /*{e-bdown-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#fadb4e /*{e-bdown-background-start}*/, #fceda7 /*{e-bdown-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#fadb4e /*{e-bdown-background-start}*/, #fceda7 /*{e-bdown-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#fadb4e /*{e-bdown-background-start}*/, #fceda7 /*{e-bdown-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#fadb4e /*{e-bdown-background-start}*/, #fceda7 /*{e-bdown-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#fadb4e /*{e-bdown-background-start}*/, #fceda7 /*{e-bdown-background-end}*/);
+}
+.ui-btn-down-e a.ui-link-inherit {
+       color:                                  #333 /*{e-bdown-color}*/;
+}
+.ui-btn-up-e,
+.ui-btn-hover-e,
+.ui-btn-down-e {
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+       text-decoration: none;
+}
+
+/* Structure */
+
+/* links within "buttons" 
+-----------------------------------------------------------------------------------------------------------*/
+
+a.ui-link-inherit {
+       text-decoration: none !important;
+}
+
+
+/* Active class used as the "on" state across all themes
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-btn-active {
+       border: 1px solid               #155678 /*{global-active-border}*/;
+       background:                     #4596ce /*{global-active-background-color}*/;
+       font-weight: bold;
+       color:                                  #fff /*{global-active-color}*/;
+       cursor: pointer;
+       text-shadow: 0 /*{global-active-shadow-x}*/ -1px /*{global-active-shadow-y}*/ 1px /*{global-active-shadow-radius}*/ #145072 /*{global-active-shadow-color}*/;
+       text-decoration: none;
+       background-image: -webkit-gradient(linear, left top, left bottom, from( #85bae4 /*{global-active-background-start}*/), to( #5393c5 /*{global-active-background-end}*/)); /* Saf4+, Chrome */
+       background-image: -webkit-linear-gradient(#85bae4 /*{global-active-background-start}*/, #5393c5 /*{global-active-background-end}*/); /* Chrome 10+, Saf5.1+ */
+       background-image:    -moz-linear-gradient(#85bae4 /*{global-active-background-start}*/, #5393c5 /*{global-active-background-end}*/); /* FF3.6 */
+       background-image:     -ms-linear-gradient(#85bae4 /*{global-active-background-start}*/, #5393c5 /*{global-active-background-end}*/); /* IE10 */
+       background-image:      -o-linear-gradient(#85bae4 /*{global-active-background-start}*/, #5393c5 /*{global-active-background-end}*/); /* Opera 11.10+ */
+       background-image:         linear-gradient(#85bae4 /*{global-active-background-start}*/, #5393c5 /*{global-active-background-end}*/);
+       font-family: Helvetica, Arial, sans-serif /*{global-font-family}*/;
+}
+.ui-btn-active a.ui-link-inherit {
+       color:                                  #fff /*{global-active-color}*/;
+}
+
+
+/* button inner top highlight
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-btn-inner {
+       border-top: 1px solid   #fff;
+       border-color:                   rgba(255,255,255,.3);
+}
+
+
+/* corner rounding classes
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-corner-tl {
+       -moz-border-radius-topleft:             .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-left-radius:         .6em /*{global-radii-blocks}*/;
+       border-top-left-radius:                         .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-tr {
+       -moz-border-radius-topright:            .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-right-radius:        .6em /*{global-radii-blocks}*/;
+       border-top-right-radius:                        .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-bl {
+       -moz-border-radius-bottomleft:          .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-left-radius:      .6em /*{global-radii-blocks}*/;
+       border-bottom-left-radius:                      .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-br {
+       -moz-border-radius-bottomright:         .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/;
+       border-bottom-right-radius:             .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-top {
+       -moz-border-radius-topleft:             .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-left-radius:         .6em /*{global-radii-blocks}*/;
+       border-top-left-radius:                         .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-topright:            .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-right-radius:        .6em /*{global-radii-blocks}*/;
+       border-top-right-radius:                        .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-bottom {
+       -moz-border-radius-bottomleft:          .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-left-radius:      .6em /*{global-radii-blocks}*/;
+       border-bottom-left-radius:                      .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-bottomright:         .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/;
+       border-bottom-right-radius:             .6em /*{global-radii-blocks}*/;
+       }
+.ui-corner-right {
+       -moz-border-radius-topright:            .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-right-radius:        .6em /*{global-radii-blocks}*/;
+       border-top-right-radius:                        .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-bottomright:         .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-right-radius: .6em /*{global-radii-blocks}*/;
+       border-bottom-right-radius:             .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-left {
+       -moz-border-radius-topleft:             .6em /*{global-radii-blocks}*/;
+       -webkit-border-top-left-radius:         .6em /*{global-radii-blocks}*/;
+       border-top-left-radius:                         .6em /*{global-radii-blocks}*/;
+       -moz-border-radius-bottomleft:          .6em /*{global-radii-blocks}*/;
+       -webkit-border-bottom-left-radius:      .6em /*{global-radii-blocks}*/;
+       border-bottom-left-radius:                      .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-all {
+       -moz-border-radius:                             .6em /*{global-radii-blocks}*/;
+       -webkit-border-radius:                          .6em /*{global-radii-blocks}*/;
+       border-radius:                                          .6em /*{global-radii-blocks}*/;
+}
+.ui-corner-none {
+       -moz-border-radius:                                0;
+       -webkit-border-radius:                             0;
+       border-radius:                                             0;
+}
+
+/* Form field separator
+-----------------------------------------------------------------------------------------------------------*/
+.ui-br {
+       border-bottom: rgb(130,130,130);
+       border-bottom: rgba(130,130,130,.3);
+       border-bottom-width: 1px;
+       border-bottom-style: solid;
+}
+
+/* Interaction cues
+-----------------------------------------------------------------------------------------------------------*/
+.ui-disabled {
+       opacity:                                                        .3;
+}
+.ui-disabled,
+.ui-disabled a {
+       pointer-events: none;
+       cursor: default;
+}
+
+/* Icons
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-icon,
+.ui-icon-searchfield:after {
+       background:                                             #666 /*{global-icon-color}*/;
+       background:                                             rgba(0,0,0,.4) /*{global-icon-disc}*/;
+       background-image: url(images/icons-18-white.png) /*{global-icon-set}*/;
+       background-repeat: no-repeat;
+       -moz-border-radius:                             9px;
+       -webkit-border-radius:                          9px;
+       border-radius:                                          9px;
+}
+
+
+/* Alt icon color
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-icon-alt {
+       background:                                             #fff;
+       background:                                             rgba(255,255,255,.3);
+       background-image: url(images/icons-18-black.png);
+       background-repeat: no-repeat;
+}
+
+/* HD/"retina" sprite
+-----------------------------------------------------------------------------------------------------------*/
+
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
+       only screen and (min--moz-device-pixel-ratio: 1.5),
+       only screen and (min-resolution: 240dpi) {
+       
+       .ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r,
+       .ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check,
+       .ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back,
+       .ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after, 
+       .ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on {
+               background-image: url(images/icons-36-white.png);
+               -moz-background-size: 776px 18px;
+               -o-background-size: 776px 18px;
+               -webkit-background-size: 776px 18px;
+               background-size: 776px 18px;
+       }
+       .ui-icon-alt {
+               background-image: url(images/icons-36-black.png);
+       }
+}
+
+/* plus minus */
+.ui-icon-plus {
+       background-position:    -0 50%;
+}
+.ui-icon-minus {
+       background-position:    -36px 50%;
+}
+
+/* delete/close */
+.ui-icon-delete {
+       background-position:    -72px 50%;
+}
+
+/* arrows */
+.ui-icon-arrow-r {
+       background-position:    -108px 50%;
+}
+.ui-icon-arrow-l {
+       background-position:    -144px 50%;
+}
+.ui-icon-arrow-u {
+       background-position:    -180px 50%;
+}
+.ui-icon-arrow-d {
+       background-position:    -216px 50%;
+}
+
+/* misc */
+.ui-icon-check {
+       background-position:    -252px 50%;
+}
+.ui-icon-gear {
+       background-position:    -288px 50%;
+}
+.ui-icon-refresh {
+       background-position:    -324px 50%;
+}
+.ui-icon-forward {
+       background-position:    -360px 50%;
+}
+.ui-icon-back {
+       background-position:    -396px 50%;
+}
+.ui-icon-grid {
+       background-position:    -432px 50%;
+}
+.ui-icon-star {
+       background-position:    -468px 50%;
+}
+.ui-icon-alert {
+       background-position:    -504px 50%;
+}
+.ui-icon-info {
+       background-position:    -540px 50%;
+}
+.ui-icon-home {
+       background-position:    -576px 50%;
+}
+.ui-icon-search,
+.ui-icon-searchfield:after {
+       background-position:    -612px 50%;
+}
+.ui-icon-checkbox-off {
+       background-position:    -684px 50%;
+}
+.ui-icon-checkbox-on {
+       background-position:    -648px 50%;
+}
+.ui-icon-radio-off {
+       background-position:    -756px 50%;
+}
+.ui-icon-radio-on {
+       background-position:    -720px 50%;
+}
+
+
+/* checks,radios */
+.ui-checkbox .ui-icon {
+       -moz-border-radius: 3px;
+       -webkit-border-radius: 3px;
+       border-radius: 3px;
+}
+.ui-icon-checkbox-off,
+.ui-icon-radio-off {
+       background-color: transparent;  
+}
+.ui-checkbox-on .ui-icon,
+.ui-radio-on .ui-icon {
+       background-color: #4596ce /*{global-active-background-color}*/; /* NOTE: this hex should match the active state color. It's repeated here for cascade */
+}
+
+/* loading icon */
+.ui-icon-loading {
+       background-image: url(images/ajax-loader.png);
+       width: 40px;
+       height: 40px;
+       -moz-border-radius: 20px;
+       -webkit-border-radius: 20px;
+       border-radius: 20px;
+       background-size: 35px 35px;
+}
+
+
+/* Button corner classes
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-btn-corner-tl {
+       -moz-border-radius-topleft:             1em /*{global-radii-buttons}*/;
+       -webkit-border-top-left-radius:         1em /*{global-radii-buttons}*/;
+       border-top-left-radius:                         1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-tr {
+       -moz-border-radius-topright:            1em /*{global-radii-buttons}*/;
+       -webkit-border-top-right-radius:        1em /*{global-radii-buttons}*/;
+       border-top-right-radius:                        1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-bl {
+       -moz-border-radius-bottomleft:          1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-left-radius:      1em /*{global-radii-buttons}*/;
+       border-bottom-left-radius:                      1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-br {
+       -moz-border-radius-bottomright:         1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/;
+       border-bottom-right-radius:             1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-top {
+       -moz-border-radius-topleft:             1em /*{global-radii-buttons}*/;
+       -webkit-border-top-left-radius:         1em /*{global-radii-buttons}*/;
+       border-top-left-radius:                         1em /*{global-radii-buttons}*/;
+       -moz-border-radius-topright:            1em /*{global-radii-buttons}*/;
+       -webkit-border-top-right-radius:        1em /*{global-radii-buttons}*/;
+       border-top-right-radius:                        1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-bottom {
+       -moz-border-radius-bottomleft:          1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-left-radius:      1em /*{global-radii-buttons}*/;
+       border-bottom-left-radius:                      1em /*{global-radii-buttons}*/;
+       -moz-border-radius-bottomright:         1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/;
+       border-bottom-right-radius:             1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-right {
+        -moz-border-radius-topright:           1em /*{global-radii-buttons}*/;
+       -webkit-border-top-right-radius:        1em /*{global-radii-buttons}*/;
+       border-top-right-radius:                        1em /*{global-radii-buttons}*/;
+       -moz-border-radius-bottomright:         1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-right-radius: 1em /*{global-radii-buttons}*/;
+       border-bottom-right-radius:             1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-left {
+       -moz-border-radius-topleft:             1em /*{global-radii-buttons}*/;
+       -webkit-border-top-left-radius:         1em /*{global-radii-buttons}*/;
+       border-top-left-radius:                         1em /*{global-radii-buttons}*/;
+       -moz-border-radius-bottomleft:          1em /*{global-radii-buttons}*/;
+       -webkit-border-bottom-left-radius:      1em /*{global-radii-buttons}*/;
+       border-bottom-left-radius:                      1em /*{global-radii-buttons}*/;
+}
+.ui-btn-corner-all {
+       -moz-border-radius:                             1em /*{global-radii-buttons}*/;
+       -webkit-border-radius:                          1em /*{global-radii-buttons}*/;
+       border-radius:                                          1em /*{global-radii-buttons}*/;
+}
+
+/* radius clip workaround for cleaning up corner trapping */
+.ui-corner-tl,
+.ui-corner-tr,
+.ui-corner-bl, 
+.ui-corner-br,
+.ui-corner-top,
+.ui-corner-bottom, 
+.ui-corner-right,
+.ui-corner-left,
+.ui-corner-all,
+.ui-btn-corner-tl,
+.ui-btn-corner-tr,
+.ui-btn-corner-bl, 
+.ui-btn-corner-br,
+.ui-btn-corner-top,
+.ui-btn-corner-bottom, 
+.ui-btn-corner-right,
+.ui-btn-corner-left,
+.ui-btn-corner-all {
+  -webkit-background-clip: padding-box;
+     -moz-background-clip: padding;
+          background-clip: padding-box;
+}
+
+/* Overlay / modal
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-overlay {
+       background: #666;
+       opacity: .5;
+       filter: Alpha(Opacity=50);
+       position: absolute;
+       width: 100%;
+       height: 100%;
+}
+.ui-overlay-shadow {
+       -moz-box-shadow: 0px 0px 12px                   rgba(0,0,0,.6);
+       -webkit-box-shadow: 0px 0px 12px                rgba(0,0,0,.6);
+       box-shadow: 0px 0px 12px                                rgba(0,0,0,.6);
+}
+.ui-shadow {
+       -moz-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/                       rgba(0,0,0,.3) /*{global-box-shadow-color}*/;
+       -webkit-box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/            rgba(0,0,0,.3) /*{global-box-shadow-color}*/;
+       box-shadow: 0px 1px 4px /*{global-box-shadow-size}*/                            rgba(0,0,0,.3) /*{global-box-shadow-color}*/;
+}
+.ui-bar-a .ui-shadow,
+.ui-bar-b .ui-shadow ,
+.ui-bar-c .ui-shadow  {
+       -moz-box-shadow: 0px 1px 0                              rgba(255,255,255,.3);
+       -webkit-box-shadow: 0px 1px 0                   rgba(255,255,255,.3);
+       box-shadow: 0px 1px 0                                   rgba(255,255,255,.3);
+}
+.ui-shadow-inset {
+       -moz-box-shadow: inset 0px 1px 4px              rgba(0,0,0,.2);
+       -webkit-box-shadow: inset 0px 1px 4px   rgba(0,0,0,.2);
+       box-shadow: inset 0px 1px 4px                   rgba(0,0,0,.2);
+}
+.ui-icon-shadow {
+       -moz-box-shadow: 0px 1px 0                              rgba(255,255,255,.4);
+       -webkit-box-shadow: 0px 1px 0                   rgba(255,255,255,.4);
+       box-shadow: 0px 1px 0                                   rgba(255,255,255,.4);
+}
+
+/* Focus state - set here for specificity
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-focus {
+       -moz-box-shadow: 0px 0px 12px           #387bbe /*{global-active-background-color}*/;
+       -webkit-box-shadow: 0px 0px 12px        #387bbe /*{global-active-background-color}*/;
+       box-shadow: 0px 0px 12px                        #387bbe /*{global-active-background-color}*/;
+}
+
+/* unset box shadow in browsers that don't do it right
+-----------------------------------------------------------------------------------------------------------*/
+
+.ui-mobile-nosupport-boxshadow * {
+       -moz-box-shadow: none !important;
+       -webkit-box-shadow: none !important;
+       box-shadow: none !important;
+}
+
+/* ...and bring back focus */
+.ui-mobile-nosupport-boxshadow .ui-focus {
+       outline-width: 2px;
+}
+/* some unsets - more probably needed */
+.ui-mobile, .ui-mobile body { height: 100%; }
+.ui-mobile fieldset, .ui-page { padding: 0; margin: 0; }
+.ui-mobile a img, .ui-mobile fieldset { border-width: 0; }
+
+/* responsive page widths */
+.ui-mobile-viewport {  margin: 0; overflow-x: visible; -webkit-text-size-adjust: none; -ms-text-size-adjust:none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
+/* Issue #2066 */
+body.ui-mobile-viewport,
+div.ui-mobile-viewport { overflow-x: hidden; }
+
+/* "page" containers - full-screen views, one should always be in view post-pageload */
+.ui-mobile [data-role=page], .ui-mobile [data-role=dialog], .ui-page { top: 0; left: 0; width: 100%; min-height: 100%; position: absolute; display: none; border: 0; }
+.ui-mobile .ui-page-active { display: block; overflow: visible; }
+
+/* on ios4, setting focus on the page element causes flashing during transitions when there is an outline, so we turn off outlines */
+.ui-page { outline: none; }
+
+/*orientations from js are available */
+@media screen and (orientation: portrait){
+.ui-mobile, .ui-mobile .ui-page { min-height: 420px; }
+}
+@media screen and (orientation: landscape){
+.ui-mobile, .ui-mobile .ui-page { min-height: 300px; }
+}
+
+/* native overflow scrolling */
+.ui-page.ui-mobile-touch-overflow,
+.ui-mobile-touch-overflow.ui-native-fixed .ui-content {
+       overflow: auto;
+       height: 100%;
+       left: 0;
+       right: 0;
+       -webkit-overflow-scrolling: touch;
+       -moz-overflow-scrolling: touch;
+       -o-overflow-scrolling: touch;
+       -ms-overflow-scrolling: touch;
+       overflow-scrolling: touch;
+}
+.ui-page.ui-mobile-touch-overflow,
+.ui-page.ui-mobile-touch-overflow * {
+       /* some level of transform keeps elements from blinking out of visibility on iOS */
+       -webkit-transform: rotateY(0);
+}
+.ui-page.ui-mobile-pre-transition {
+       display: block;
+}
+.ui-mobile-touch-overflow.ui-native-fixed .ui-content .ui-listview {
+       margin-top: 0;
+}
+.ui-mobile-touch-overflow.ui-native-fixed .ui-content .ui-listview-inset {
+       margin-top: 1em;
+}
+.ui-mobile-touch-overflow.ui-native-fixed .ui-content .ui-listview-filter {
+       margin-top: .2em;
+       margin-bottom: 0;
+}
+.ui-mobile-touch-overflow.ui-native-fixed .ui-content .ui-listview-filter-inset {
+       margin-bottom: -.9em;
+}
+.ui-mobile-touch-overflow.ui-native-fixed .ui-header .ui-btn { 
+       z-index: 10;
+}
+
+/* loading screen */
+.ui-loading .ui-mobile-viewport { overflow: hidden !important; }
+.ui-loading .ui-loader { display: block; }
+.ui-loading .ui-page { overflow: hidden;  }
+.ui-loader { display: none; position: absolute; opacity: .85; z-index: 100; left: 50%; width: 200px; margin-left: -130px; margin-top: -35px; padding: 10px 30px; }
+.ui-loader h1 { font-size: 15px; text-align: center; }
+.ui-loader .ui-icon { position: static; display: block; opacity: .9; margin: 0 auto; width: 35px; height: 35px; background-color: transparent; }
+
+/*fouc*/
+.ui-mobile-rendering > * { visibility: hidden; }
+
+/*headers, content panels*/
+.ui-bar, .ui-body { position: relative; padding: .4em 15px;  overflow: hidden; display: block;  clear:both;  }
+.ui-bar { font-size: 16px; margin: 0; }
+.ui-bar h1, .ui-bar h2, .ui-bar h3, .ui-bar h4, .ui-bar h5, .ui-bar h6 { margin: 0; padding: 0; font-size: 16px; display: inline-block; }
+
+.ui-header, .ui-footer { display: block; }
+.ui-page .ui-header, .ui-page .ui-footer { position: relative; }
+.ui-header .ui-btn-left { position: absolute; left: 10px; top: .4em;  }
+.ui-header .ui-btn-right { position: absolute; right: 10px; top: .4em; }
+.ui-header .ui-title, .ui-footer .ui-title { min-height: 1.1em; text-align: center; font-size: 16px; display: block; margin: .6em 90px .8em;  padding: 0;  text-overflow: ellipsis; overflow: hidden; white-space: nowrap; outline: 0 !important; }
+.ui-footer .ui-title { margin: .6em 15px .8em;  }
+
+/*content area*/
+.ui-content { border-width: 0; overflow: visible; overflow-x: hidden; padding: 15px; }
+.ui-page-fullscreen .ui-content { padding:0; }
+
+/* native fixed headers and footers */
+.ui-mobile-touch-overflow.ui-page.ui-native-fixed,
+.ui-mobile-touch-overflow.ui-page.ui-native-fullscreen {
+       overflow: visible;
+}
+.ui-mobile-touch-overflow.ui-native-fixed .ui-header,
+.ui-mobile-touch-overflow.ui-native-fixed .ui-footer {
+       position: fixed;
+       left: 0;
+       right: 0;
+       top: 0;
+       z-index: 200;
+}
+.ui-mobile-touch-overflow.ui-page.ui-native-fixed .ui-footer {
+       top: auto;
+       bottom: 0;
+}
+.ui-mobile-touch-overflow.ui-native-fixed .ui-content {
+       padding-top: 2.5em;
+       padding-bottom: 3em;
+       top: 0;
+       bottom: 0;
+       height: auto;
+       position: absolute;
+}
+.ui-mobile-touch-overflow.ui-native-fullscreen .ui-content {
+       padding-top: 0;
+       padding-bottom: 0;
+}
+.ui-mobile-touch-overflow.ui-native-fullscreen .ui-header,
+.ui-mobile-touch-overflow.ui-native-fullscreen .ui-footer {
+       opacity: .9;
+}
+.ui-native-bars-hidden {
+       display: none;
+}
+
+/* icons sizing */
+.ui-icon { width: 18px; height: 18px; }
+
+/* fullscreen class on ui-content div */
+.ui-fullscreen {  }
+.ui-fullscreen img { max-width: 100%; }
+
+/* non-js content hiding */
+.ui-nojs { position: absolute; left: -9999px; }
+
+/* accessible content hiding */
+.ui-hide-label label,
+.ui-hidden-accessible { position: absolute !important; left: -9999px; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.spin  {
+       -webkit-transform: rotate(360deg);
+       -webkit-animation-name: spin;
+       -webkit-animation-duration: 1s;
+       -webkit-animation-iteration-count:  infinite;
+       -webkit-animation-timing-function: linear;
+}
+@-webkit-keyframes spin {
+       from {-webkit-transform: rotate(0deg);}
+       to {-webkit-transform: rotate(360deg);}
+}
+
+/* Transitions from jQtouch (with small modifications): http://www.jqtouch.com/
+Built by David Kaneda and maintained by Jonathan Stark.
+*/
+.in, .out {
+       -webkit-animation-timing-function: ease-in-out;
+       -webkit-animation-duration: 350ms;
+}
+
+
+.slide.out {
+       -webkit-transform: translateX(-100%);
+       -webkit-animation-name: slideouttoleft;
+}
+
+.slide.in {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: slideinfromright;
+}
+
+.slide.out.reverse {
+       -webkit-transform: translateX(100%);
+       -webkit-animation-name: slideouttoright;
+}
+
+.slide.in.reverse {
+       -webkit-transform: translateX(0);
+       -webkit-animation-name: slideinfromleft;
+}
+
+.slideup.out {
+       -webkit-animation-name: dontmove;
+       z-index: 0;
+}
+
+.slideup.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfrombottom;
+       z-index: 10;
+}
+
+.slideup.in.reverse {
+       z-index: 0;
+       -webkit-animation-name: dontmove;
+}
+
+.slideup.out.reverse {
+       -webkit-transform: translateY(100%);
+       z-index: 10;
+       -webkit-animation-name: slideouttobottom;
+}
+
+.slidedown.out {
+       -webkit-animation-name: dontmove;
+       z-index: 0;
+}
+
+.slidedown.in {
+       -webkit-transform: translateY(0);
+       -webkit-animation-name: slideinfromtop;
+       z-index: 10;
+}
+
+.slidedown.in.reverse {
+       z-index: 0;
+       -webkit-animation-name: dontmove;
+}
+
+.slidedown.out.reverse {
+       -webkit-transform: translateY(-100%);
+       z-index: 10;
+       -webkit-animation-name: slideouttotop;
+}
+
+@-webkit-keyframes slideinfromright {
+    from { -webkit-transform: translateX(100%); }
+    to { -webkit-transform: translateX(0); }
+}
+
+@-webkit-keyframes slideinfromleft {
+    from { -webkit-transform: translateX(-100%); }
+    to { -webkit-transform: translateX(0); }
+}
+
+@-webkit-keyframes slideouttoleft {
+    from { -webkit-transform: translateX(0); }
+    to { -webkit-transform: translateX(-100%); }
+}
+
+@-webkit-keyframes slideouttoright {
+    from { -webkit-transform: translateX(0); }
+    to { -webkit-transform: translateX(100%); }
+}
+
+@-webkit-keyframes slideinfromtop {
+    from { -webkit-transform: translateY(-100%); }
+    to { -webkit-transform: translateY(0); }
+}
+
+@-webkit-keyframes slideinfrombottom {
+    from { -webkit-transform: translateY(100%); }
+    to { -webkit-transform: translateY(0); }
+}
+
+@-webkit-keyframes slideouttobottom {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(100%); }
+}
+
+@-webkit-keyframes slideouttotop {
+    from { -webkit-transform: translateY(0); }
+    to { -webkit-transform: translateY(-100%); }
+}
+@-webkit-keyframes fadein {
+    from { opacity: 0; }
+    to { opacity: 1; }
+}
+
+@-webkit-keyframes fadeout {
+    from { opacity: 1; }
+    to { opacity: 0; }
+}
+
+.fade.out {
+       z-index: 0;
+       -webkit-animation-name: fadeout;
+}
+
+.fade.in {
+       opacity: 1;
+       z-index: 10;
+       -webkit-animation-name: fadein;
+}
+
+/* The properties in this rule are only necessary for the 'flip' transition.
+ * We need specify the perspective to create a projection matrix. This will add
+ * some depth as the element flips. The depth number represents the distance of
+ * the viewer from the z-plane. According to the CSS3 spec, 1000 is a moderate
+ * value.
+ */
+.viewport-flip {
+       -webkit-perspective: 1000;
+       position: absolute;
+}
+
+.ui-mobile-viewport-transitioning,
+.ui-mobile-viewport-transitioning .ui-page {
+       width: 100%;
+       height: 100%;
+       overflow: hidden;
+}
+
+.flip {
+       -webkit-animation-duration: .65s;
+       -webkit-backface-visibility:hidden;
+       -webkit-transform:translateX(0); /* Needed to work around an iOS 3.1 bug that causes listview thumbs to disappear when -webkit-visibility:hidden is used. */
+}
+
+.flip.out {
+       -webkit-transform: rotateY(-180deg) scale(.8);
+       -webkit-animation-name: flipouttoleft;
+}
+
+.flip.in {
+       -webkit-transform: rotateY(0) scale(1);
+       -webkit-animation-name: flipinfromleft;
+}
+
+/* Shake it all about */
+
+.flip.out.reverse {
+       -webkit-transform: rotateY(180deg) scale(.8);
+       -webkit-animation-name: flipouttoright;
+}
+
+.flip.in.reverse {
+       -webkit-transform: rotateY(0) scale(1);
+       -webkit-animation-name: flipinfromright;
+}
+
+@-webkit-keyframes flipinfromright {
+    from { -webkit-transform: rotateY(-180deg) scale(.8); }
+    to { -webkit-transform: rotateY(0) scale(1); }
+}
+
+@-webkit-keyframes flipinfromleft {
+    from { -webkit-transform: rotateY(180deg) scale(.8); }
+    to { -webkit-transform: rotateY(0) scale(1); }
+}
+
+@-webkit-keyframes flipouttoleft {
+    from { -webkit-transform: rotateY(0) scale(1); }
+    to { -webkit-transform: rotateY(-180deg) scale(.8); }
+}
+
+@-webkit-keyframes flipouttoright {
+    from { -webkit-transform: rotateY(0) scale(1); }
+    to { -webkit-transform: rotateY(180deg) scale(.8); }
+}
+
+
+/* Hackish, but reliable. */
+
+@-webkit-keyframes dontmove {
+    from { opacity: 1; }
+    to { opacity: 1; }
+}
+
+.pop {
+       -webkit-transform-origin: 50% 50%;
+}
+
+.pop.in {
+       -webkit-transform: scale(1);
+    opacity: 1;
+       -webkit-animation-name: popin;
+       z-index: 10;
+}
+
+.pop.in.reverse {
+       z-index: 0;
+       -webkit-animation-name: dontmove;
+}
+
+.pop.out.reverse {
+       -webkit-transform: scale(.2);
+       opacity: 0;
+       -webkit-animation-name: popout;
+       z-index: 10;
+}
+
+@-webkit-keyframes popin {
+    from {
+        -webkit-transform: scale(.2);
+        opacity: 0;
+    }
+    to {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+}
+
+@-webkit-keyframes popout {
+    from {
+        -webkit-transform: scale(1);
+        opacity: 1;
+    }
+    to {
+        -webkit-transform: scale(.2);
+        opacity: 0;
+    }
+}/* content configurations. */
+.ui-grid-a, .ui-grid-b, .ui-grid-c, .ui-grid-d { overflow: hidden; }
+.ui-block-a, .ui-block-b, .ui-block-c, .ui-block-d, .ui-block-e { margin: 0; padding: 0; border: 0; float: left; min-height:1px;}
+
+/* grid solo: 100 - single item fallback */
+.ui-grid-solo .ui-block-a { width: 100%; float: none; }
+
+/* grid a: 50/50 */
+.ui-grid-a .ui-block-a, .ui-grid-a .ui-block-b { width: 50%; }
+.ui-grid-a .ui-block-a { clear: left; }
+
+/* grid b: 33/33/33 */
+.ui-grid-b .ui-block-a, .ui-grid-b .ui-block-b, .ui-grid-b .ui-block-c { width: 33.333%; }
+.ui-grid-b .ui-block-a { clear: left; }
+
+/* grid c: 25/25/25/25 */
+.ui-grid-c .ui-block-a, .ui-grid-c .ui-block-b, .ui-grid-c .ui-block-c, .ui-grid-c .ui-block-d { width: 25%; }
+.ui-grid-c .ui-block-a { clear: left; }
+
+/* grid d: 20/20/20/20/20 */
+.ui-grid-d .ui-block-a, .ui-grid-d .ui-block-b, .ui-grid-d .ui-block-c, .ui-grid-d .ui-block-d, .ui-grid-d .ui-block-e { width: 20%; }
+.ui-grid-d .ui-block-a { clear: left; }
+/* fixed page header & footer configuration */
+.ui-header, .ui-footer, .ui-page-fullscreen .ui-header, .ui-page-fullscreen .ui-footer  { position: absolute;  overflow: hidden; width: 100%; border-left-width: 0; border-right-width: 0; }
+.ui-header-fixed, .ui-footer-fixed {
+       z-index: 1000;
+       -webkit-transform: translateZ(0); /* Force header/footer rendering to go through the same rendering pipeline as native page scrolling. */
+}
+.ui-footer-duplicate, .ui-page-fullscreen .ui-fixed-inline { display: none; }
+.ui-page-fullscreen .ui-header, .ui-page-fullscreen .ui-footer { opacity: .9; }
+.ui-navbar { overflow: hidden;  }
+.ui-navbar ul, .ui-navbar-expanded ul { list-style:none; padding: 0; margin: 0; position: relative; display: block; border: 0;}
+.ui-navbar-collapsed ul { float: left; width: 75%; margin-right: -2px; }
+.ui-navbar-collapsed .ui-navbar-toggle { float: left; width: 25%; }
+.ui-navbar li.ui-navbar-truncate { position: absolute; left: -9999px; top: -9999px; }
+.ui-navbar li .ui-btn, .ui-navbar .ui-navbar-toggle .ui-btn { display: block; font-size: 12px; text-align: center; margin: 0; border-right-width: 0; max-width: 100%; }
+.ui-navbar li .ui-btn {  margin-right: -1px; }
+.ui-navbar li .ui-btn:last-child { margin-right: 0; }
+.ui-header .ui-navbar li .ui-btn, .ui-header .ui-navbar .ui-navbar-toggle .ui-btn,
+.ui-footer .ui-navbar li .ui-btn, .ui-footer .ui-navbar .ui-navbar-toggle .ui-btn { border-top-width: 0; border-bottom-width: 0; }
+.ui-navbar .ui-btn-inner { padding-left: 2px; padding-right: 2px; }
+.ui-navbar-noicons li .ui-btn .ui-btn-inner, .ui-navbar-noicons .ui-navbar-toggle .ui-btn-inner { padding-top: .8em; padding-bottom: .9em; }
+/*expanded page styles*/
+.ui-navbar-expanded .ui-btn { margin: 0; font-size: 14px; }
+.ui-navbar-expanded .ui-btn-inner { padding-left: 5px; padding-right: 5px;  }
+.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner { padding: 45px 5px 15px; text-align: center; }
+.ui-navbar-expanded .ui-btn-icon-top .ui-icon { top: 15px; }
+.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner { padding: 15px 5px 45px; text-align: center; }
+.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon { bottom: 15px; }
+.ui-navbar-expanded li .ui-btn .ui-btn-inner { min-height: 2.5em; }
+.ui-navbar-expanded .ui-navbar-noicons .ui-btn .ui-btn-inner { padding-top: 1.8em; padding-bottom: 1.9em; }
+.ui-btn { display: block; text-align: center; cursor:pointer;  position: relative; margin: .5em 5px; padding: 0; }
+.ui-header .ui-btn, .ui-footer .ui-btn, .ui-bar .ui-btn { display: inline-block; font-size: 13px; margin: 0; }
+.ui-btn-inline { display: inline-block; }
+.ui-btn-inner { padding: .6em 25px; display: block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; zoom: 1; }
+.ui-btn input, .ui-btn button { z-index: 2; }
+.ui-header .ui-btn-inner, .ui-footer .ui-btn-inner, .ui-bar .ui-btn-inner { padding: .4em 8px .5em; }
+.ui-btn-icon-notext { width: 24px; height: 24px; }
+.ui-btn-icon-notext .ui-btn-inner { padding: 2px 1px 2px 3px; }
+.ui-btn-text { position: relative; z-index: 1; }
+.ui-btn-icon-notext .ui-btn-text { position: absolute; left: -9999px; }
+.ui-btn-icon-left .ui-btn-inner { padding-left: 33px; }
+.ui-header .ui-btn-icon-left .ui-btn-inner,
+.ui-footer .ui-btn-icon-left .ui-btn-inner,
+.ui-bar .ui-btn-icon-left .ui-btn-inner { padding-left: 27px; }
+.ui-btn-icon-right .ui-btn-inner { padding-right: 33px; }
+.ui-header .ui-btn-icon-right .ui-btn-inner,
+.ui-footer .ui-btn-icon-right .ui-btn-inner,
+.ui-bar .ui-btn-icon-right .ui-btn-inner { padding-right: 27px; }
+.ui-btn-icon-top .ui-btn-inner { padding-top: 33px; }
+.ui-header .ui-btn-icon-top .ui-btn-inner,
+.ui-footer .ui-btn-icon-top .ui-btn-inner,
+.ui-bar .ui-btn-icon-top .ui-btn-inner { padding-top: 27px; }
+.ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 33px; }
+.ui-header .ui-btn-icon-bottom .ui-btn-inner,
+.ui-footer .ui-btn-icon-bottom .ui-btn-inner,
+.ui-bar .ui-btn-icon-bottom .ui-btn-inner { padding-bottom: 27px; }
+
+/*btn icon positioning*/
+.ui-btn-icon-notext .ui-icon { display: block; z-index: 0;}
+.ui-btn-icon-left .ui-icon, .ui-btn-icon-right .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
+.ui-btn-icon-top .ui-icon, .ui-btn-icon-bottom .ui-icon { position: absolute; left: 50%;  margin-left: -9px; }
+.ui-btn-icon-left .ui-icon { left: 10px; }
+.ui-btn-icon-right .ui-icon { right: 10px; }
+.ui-btn-icon-top .ui-icon { top: 10px; }
+.ui-btn-icon-bottom .ui-icon { bottom: 10px; }
+.ui-header .ui-btn-icon-left .ui-icon,
+.ui-footer .ui-btn-icon-left .ui-icon,
+.ui-bar .ui-btn-icon-left .ui-icon { left: 4px; }
+.ui-header .ui-btn-icon-right .ui-icon,
+.ui-footer .ui-btn-icon-right .ui-icon,
+.ui-bar .ui-btn-icon-right .ui-icon { right: 4px; }
+.ui-header .ui-btn-icon-top .ui-icon,
+.ui-footer .ui-btn-icon-top .ui-icon,
+.ui-bar .ui-btn-icon-top .ui-icon { top: 4px; }
+.ui-header .ui-btn-icon-bottom .ui-icon,
+.ui-footer .ui-btn-icon-bottom .ui-icon,
+.ui-bar .ui-btn-icon-bottom .ui-icon { bottom: 4px; }
+
+/*hiding native button,inputs */
+.ui-btn-hidden { position: absolute; top: 0; left: 0; width: 100%; height: 100%; -webkit-appearance: button; opacity: .1; cursor: pointer; background: #fff; background: rgba(255,255,255,0); filter: Alpha(Opacity=.0001); font-size: 1px; border: none; line-height: 999px; }
+.ui-collapsible { margin: .5em 0; }
+.ui-collapsible-heading { font-size: 16px; display: block; margin: 0 -8px; padding: 0; border-width: 0 0 1px 0; position: relative; }
+.ui-collapsible-heading a { text-align: left; margin: 0;  }
+.ui-collapsible-heading a .ui-btn-inner { padding-left: 40px; }
+.ui-collapsible-heading a span.ui-btn { position: absolute; left: 6px; top: 50%; margin: -12px 0 0 0; width: 20px; height: 20px; padding: 1px 0px 1px 2px; text-indent: -9999px; }
+.ui-collapsible-heading a span.ui-btn .ui-btn-inner { padding: 10px 0; }
+.ui-collapsible-heading a span.ui-btn .ui-icon { left: 0; margin-top: -10px; }
+.ui-collapsible-heading-status { position: absolute; top: -9999px; left:0px; }
+.ui-collapsible-content {
+       display: block;
+       margin:  0 -8px;
+       padding: 10px 16px;
+       border-top:  none;      /* Overrides ui-btn-up-* */
+       background-image: none; /* Overrides ui-btn-up-* */
+       font-weight: normal;    /* Overrides ui-btn-up-* */
+}
+.ui-collapsible-content-collapsed { display: none; }
+
+.ui-collapsible-set { margin: .5em 0; }
+.ui-collapsible-set .ui-collapsible { margin: -1px 0 0; }
+.ui-controlgroup, fieldset.ui-controlgroup { padding: 0; margin: .5em 0 1em; }
+.ui-bar .ui-controlgroup { margin: 0 .3em; }
+.ui-controlgroup-label { font-size: 16px; line-height: 1.4; font-weight: normal; margin: 0 0 .3em; }
+.ui-controlgroup-controls { display: block; width: 100%;}
+.ui-controlgroup li { list-style: none; }
+.ui-controlgroup-vertical .ui-btn,
+.ui-controlgroup-vertical .ui-checkbox, .ui-controlgroup-vertical .ui-radio { margin: 0; border-bottom-width: 0;  }
+.ui-controlgroup-controls label.ui-select { position: absolute; left: -9999px; }
+
+.ui-controlgroup-vertical .ui-controlgroup-last { border-bottom-width: 1px; }
+.ui-controlgroup-horizontal { padding: 0; }
+.ui-controlgroup-horizontal .ui-btn, .ui-controlgroup-horizontal .ui-select { display: inline-block; margin: 0 -5px 0 0; }
+.ui-controlgroup-horizontal .ui-checkbox, .ui-controlgroup-horizontal .ui-radio { float: left; margin: 0 -1px 0 0; }
+.ui-controlgroup-horizontal .ui-checkbox .ui-btn, .ui-controlgroup-horizontal .ui-radio .ui-btn,
+.ui-controlgroup-horizontal .ui-checkbox:last-child, .ui-controlgroup-horizontal .ui-radio:last-child { margin-right: 0; }
+.ui-controlgroup-horizontal .ui-controlgroup-last { margin-right: 0; }
+.ui-controlgroup .ui-checkbox label, .ui-controlgroup .ui-radio label { font-size: 16px;  }
+/* conflicts with listview..
+.ui-controlgroup .ui-btn-icon-notext { width: 30px; height: 30px; text-indent: -9999px; }
+.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner {  padding: 5px 6px 5px 5px; }
+*/
+
+@media all and (min-width: 450px){
+       .ui-field-contain .ui-controlgroup-label { vertical-align: top; display: inline-block;  width: 20%;  margin: 0 2% 0 0;  }
+       .ui-field-contain .ui-controlgroup-controls { width: 60%; display: inline-block; }
+       .ui-field-contain .ui-controlgroup .ui-select { width: 100%; } 
+       .ui-field-contain .ui-controlgroup-horizontal .ui-select { width: auto; }
+}      .ui-dialog { min-height: 480px; }
+.ui-dialog .ui-header, 
+.ui-dialog .ui-content, 
+.ui-dialog .ui-footer { 
+       max-width: 500px; 
+       margin: 10% auto 15px auto; 
+       width: 85%; 
+       position: relative; 
+}
+.ui-dialog .ui-header, 
+.ui-dialog .ui-footer  { 
+       padding: 0 15px; 
+       z-index: 10; 
+}
+.ui-dialog .ui-content { 
+       padding: 15px; 
+}
+.ui-dialog .ui-content, 
+.ui-dialog .ui-footer { 
+       margin-top: -15px;  
+}
+.ui-checkbox, .ui-radio { position:relative;  margin: .2em 0 .5em; z-index: 1;  }
+.ui-checkbox .ui-btn, .ui-radio .ui-btn { margin: 0; text-align: left; z-index: 2; }
+.ui-checkbox .ui-btn-inner, .ui-radio .ui-btn-inner { white-space: normal; }
+.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner { padding-left: 45px; }
+.ui-checkbox .ui-btn-icon-right .ui-btn-inner, .ui-radio .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; }
+.ui-checkbox .ui-icon, .ui-radio .ui-icon { top: 1.1em; }
+.ui-checkbox .ui-btn-icon-left .ui-icon, .ui-radio .ui-btn-icon-left .ui-icon {left: 15px; }
+.ui-checkbox .ui-btn-icon-right .ui-icon, .ui-radio .ui-btn-icon-right .ui-icon {right: 15px; }
+/* input, label positioning */
+.ui-checkbox input,.ui-radio input { position:absolute; left:20px; top:50%; width: 10px; height: 10px;  margin:-5px 0 0 0; outline: 0 !important; z-index: 1; }.ui-field-contain, fieldset.ui-field-contain { padding: 1.5em 0; margin: 0; border-width: 0 0 1px 0; overflow: visible; }
+.ui-field-contain:first-child { border-top-width: 0; }
+@media all and (min-width: 450px){
+       .ui-field-contain, .ui-mobile fieldset.ui-field-contain { border-width: 0; padding: 0; margin: 1em 0; }
+}      .ui-select { display: block; position: relative; }
+.ui-select select { position: absolute; left: -9999px; top: -9999px; }
+.ui-select .ui-btn { overflow: hidden; }
+
+
+.ui-select .ui-btn { opacity: 1; }
+
+/* Fixes #2588 — When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select—including “inherit”—without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
+.ui-select .ui-btn select { cursor: pointer; -webkit-appearance: button; left: 0; top:0; width: 100%;  min-height: 1.5em; min-height: 100%; height: 3em; max-height: 100%; opacity: 0; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); z-index: 2; }
+
+.ui-select .ui-disabled { opacity: .3; }
+
+@-moz-document url-prefix() {.ui-select .ui-btn select { opacity: 0.0001; }}
+.ui-select .ui-btn select.ui-select-nativeonly { opacity: 1; text-indent: 0; }
+
+.ui-select .ui-btn-icon-right .ui-btn-inner { padding-right: 45px; }
+.ui-select .ui-btn-icon-right .ui-icon { right: 15px;  }
+
+/* labels */
+label.ui-select { font-size: 16px; line-height: 1.4;  font-weight: normal; margin: 0 0 .3em; display: block; }
+
+/*listbox*/
+.ui-select .ui-btn-text, .ui-selectmenu .ui-btn-text { display: block; min-height: 1em; overflow: hidden; }
+.ui-select .ui-btn-text { text-overflow: ellipsis; }
+
+.ui-selectmenu { position: absolute; padding: 0; z-index: 1100 !important; width: 80%; max-width: 350px; padding: 6px; }
+.ui-selectmenu .ui-listview { margin: 0; }
+.ui-selectmenu .ui-btn.ui-li-divider { cursor: default; }
+.ui-selectmenu-hidden { top: -9999px; left: -9999px; }
+.ui-selectmenu-screen { position: absolute; top: 0; left: 0; width: 100%; height: 100%;  z-index: 99; }
+.ui-screen-hidden, .ui-selectmenu-list .ui-li .ui-icon { display: none; }
+.ui-selectmenu-list .ui-li .ui-icon { display: block; }
+.ui-li.ui-selectmenu-placeholder { display: none; }
+.ui-selectmenu .ui-header .ui-title { margin: 0.6em 46px 0.8em; }
+
+@media all and (min-width: 450px){
+       .ui-field-contain label.ui-select { vertical-align: top;  display: inline-block;  width: 20%;  margin: 0 2% 0 0; }
+       .ui-field-contain .ui-select { width: 60%; display: inline-block; }
+}
+
+/* when no placeholder is defined in a multiple select, the header height doesn't even extend past the close button.  this shim's content in there */
+.ui-selectmenu .ui-header h1:after { content: '.'; visibility: hidden; }
+
+/* TODO when the custom select css us moved out to it's own file this should be included */
+.ui-li-static .ui-select .ui-li-count { right: 38px; }
+label.ui-input-text { font-size: 16px; line-height: 1.4; display: block; font-weight: normal; margin: 0 0 .3em; }
+input.ui-input-text, textarea.ui-input-text { background-image: none; padding: .4em; line-height: 1.4; font-size: 16px; display: block; width: 97%; }
+input.ui-input-text { -webkit-appearance: none; }
+textarea.ui-input-text { height: 50px; -webkit-transition: height 200ms linear; -moz-transition: height 200ms linear; -o-transition: height 200ms linear; transition: height 200ms linear; }
+.ui-input-search { padding: 0 30px; background-image: none; position: relative; }
+.ui-icon-searchfield:after { position: absolute; left: 7px; top: 50%; margin-top: -9px; content: ""; width: 18px; height: 18px; opacity: .5; }
+.ui-input-search input.ui-input-text { border: none; width: 98%; padding: .4em 0; margin: 0; display: block; background: transparent none; outline: 0 !important; }
+.ui-input-search .ui-input-clear { position: absolute; right: 0; top: 50%; margin-top: -13px; }
+.ui-input-search .ui-input-clear-hidden { display: none; }
+
+/* orientation adjustments - incomplete!*/
+@media all and (min-width: 450px){
+       .ui-field-contain label.ui-input-text  { vertical-align: top; display: inline-block;  width: 20%;  margin: 0 2% 0 0 }
+       .ui-field-contain input.ui-input-text, 
+       .ui-field-contain textarea.ui-input-text, 
+       .ui-field-contain .ui-input-search { width: 60%; display: inline-block; } 
+       .ui-field-contain .ui-input-search { width: 50%; }
+       .ui-hide-label input.ui-input-text, 
+       .ui-hide-label textarea.ui-input-text, 
+       .ui-hide-label .ui-input-search { padding: .4em; width: 97%; } 
+       .ui-input-search input.ui-input-text { width: 98%; /*echos rule from above*/ }
+}.ui-listview { margin: 0; counter-reset: listnumbering; }
+.ui-content .ui-listview { margin: -15px; }
+.ui-content .ui-listview-inset { margin: 1em 0;  }
+.ui-listview, .ui-li { list-style:none; padding:0; }
+.ui-li, .ui-li.ui-field-contain { display: block; margin:0; position: relative; overflow: visible; text-align: left; border-width: 0; border-top-width: 1px; }
+.ui-li .ui-btn-text a.ui-link-inherit { text-overflow: ellipsis; overflow: hidden; white-space: nowrap;  }
+.ui-li-divider, .ui-li-static { padding: .5em 15px; font-size: 14px; font-weight: bold;  }
+.ui-li-divider { counter-reset: listnumbering;  }
+ol.ui-listview .ui-link-inherit:before, ol.ui-listview .ui-li-static:before, .ui-li-dec { font-size: .8em; display: inline-block; padding-right: .3em; font-weight: normal;counter-increment: listnumbering; content: counter(listnumbering) ". "; }
+ol.ui-listview .ui-li-jsnumbering:before { content: "" !important; } /* to avoid chance of duplication */
+.ui-listview-inset .ui-li { border-right-width: 1px; border-left-width: 1px; }
+.ui-li:last-child, .ui-li.ui-field-contain:last-child { border-bottom-width: 1px; }
+.ui-li>.ui-btn-inner { display: block; position: relative; padding: 0; }
+.ui-li .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li { padding: .7em 15px .7em 15px; display: block; }
+.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-thumb  { min-height: 60px; padding-left: 100px; }
+.ui-li-has-icon .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-icon {  min-height: 20px; padding-left: 40px; }
+.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-count { padding-right: 45px; }
+.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow { padding-right: 30px; }
+.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-arrow.ui-li-has-count { padding-right: 75px; }
+.ui-li-has-count .ui-btn-text { padding-right: 15px; }
+.ui-li-heading { font-size: 16px; font-weight: bold; display: block; margin: .6em 0; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;  }
+.ui-li-desc {  font-size: 12px; font-weight: normal; display: block; margin: -.5em 0 .6em; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
+.ui-li-thumb, .ui-listview .ui-li-icon { position: absolute; left: 1px; top: 0; max-height: 80px; max-width: 80px; }
+.ui-listview .ui-li-icon { max-height: 40px; max-width: 40px; left: 10px; top: .9em; }
+.ui-li-thumb, .ui-listview .ui-li-icon, .ui-li-content { float: left; margin-right: 10px; }
+
+.ui-li-aside { float: right; width: 50%; text-align: right; margin: .3em 0; }
+@media all and (min-width: 480px){
+        .ui-li-aside { width: 45%; }
+}       
+.ui-li-divider { cursor: default; }
+.ui-li-has-alt .ui-btn-inner a.ui-link-inherit, .ui-li-static.ui-li-has-alt { padding-right: 95px; }
+.ui-li-has-count .ui-li-count { position: absolute; font-size: 11px; font-weight: bold; padding: .2em .5em; top: 50%; margin-top: -.9em; right: 38px; }
+.ui-li-divider .ui-li-count, .ui-li-static .ui-li-count { right: 10px; }
+.ui-li-has-alt .ui-li-count { right: 55px; }
+.ui-li-link-alt { position: absolute; width: 40px; height: 100%; border-width: 0; border-left-width: 1px; top: 0; right: 0; margin: 0; padding: 0; z-index: 2; }
+.ui-li-link-alt .ui-btn { overflow: hidden; position: absolute; right: 8px; top: 50%; margin: -11px 0 0 0; border-bottom-width: 1px; z-index: -1;}
+.ui-li-link-alt .ui-btn-inner { padding: 0; height: 100%; position: absolute; width: 100%; top: 0; left: 0;}
+.ui-li-link-alt .ui-btn .ui-icon { right: 50%; margin-right: -9px;  }
+
+.ui-listview * .ui-btn-inner > .ui-btn > .ui-btn-inner { border-top: 0px; }
+
+.ui-listview-filter { border-width: 0; overflow: hidden; margin: -15px -15px 15px -15px }
+.ui-listview-filter .ui-input-search { margin: 5px; width: auto; display: block; }
+
+.ui-listview-filter-inset { margin: -15px -5px -15px -5px; background: transparent; }
+.ui-li.ui-screen-hidden{display:none;}
+/* Odd iPad positioning issue. */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
+    .ui-li .ui-btn-text { overflow:  visible; }
+}label.ui-slider { font-size: 16px; line-height: 1.4;  font-weight: normal; margin: 0 0 .3em; display: block; }
+input.ui-slider-input,
+.ui-field-contain input.ui-slider-input { display: inline-block; width: 50px; }
+select.ui-slider-switch { display: none; }
+div.ui-slider { position: relative; display: inline-block; overflow: visible; height: 15px; padding: 0; margin: 0 2% 0 20px; top: 4px; width: 60%; }
+div.ui-slider-switch { width: 99.8%; }
+a.ui-slider-handle { position: absolute; z-index: 10;  top: 50%; width: 28px; height: 28px; margin-top: -15px; margin-left: -15px; }
+a.ui-slider-handle .ui-btn-inner { padding-left: 0; padding-right: 0; }
+@media all and (min-width: 480px){
+       .ui-field-contain label.ui-slider { vertical-align: top;  display: inline-block;  width: 20%;  margin: 0 2% 0 0; }
+       .ui-field-contain div.ui-slider { width: 43%; }
+}      
+
+div.ui-slider-switch { height: 32px;  overflow: hidden; margin-left: 0; }
+div.ui-slider-inneroffset { margin-left: 50%; position: absolute; top: 1px; height: 100%; width: 50%; }
+a.ui-slider-handle-snapping { -webkit-transition: left 70ms linear; -moz-transition: left 70ms linear; }
+div.ui-slider-labelbg { position: absolute; top:0; margin: 0; border-width: 0; }
+div.ui-slider-switch div.ui-slider-labelbg-a { width: 60%; height: 100%; left: 0; }
+div.ui-slider-switch div.ui-slider-labelbg-b { width: 60%; height: 100%; right: 0; }
+.ui-slider-switch-a div.ui-slider-labelbg-a, .ui-slider-switch-b div.ui-slider-labelbg-b { z-index: -1; }
+.ui-slider-switch-a div.ui-slider-labelbg-b, .ui-slider-switch-b div.ui-slider-labelbg-a { z-index: 0; }
+
+div.ui-slider-switch a.ui-slider-handle { z-index: 20;  width: 101%; height: 32px; margin-top: -18px; margin-left: -101%; }
+span.ui-slider-label { width: 100%; position: absolute;height: 32px;  font-size: 16px; text-align: center; line-height: 2; background: none; border-color: transparent; }
+span.ui-slider-label-a { left: -100%;  margin-right: -1px }
+span.ui-slider-label-b { right: -100%;  margin-left: -1px }
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/css/style.css
new file mode 100644 (file)
index 0000000..656d0c9
--- /dev/null
@@ -0,0 +1,82 @@
+body {
+       margin : 0px auto;
+    font-family: Lucida Sans, Arial, Helvetica, sans-serif;
+}
+
+header h1 {
+  position: fixed;
+  top: 0px;
+  min-height:1rem;
+  font-size:1rem;
+  background: #6c6c6c;
+  display:block;
+  width : 100%;
+  text-align:center;
+  color:#f9f9f9;
+  text-overflow:ellipsis;
+  overflow: hidden;
+  white-space:nowrap;
+  outline: 0 !important;
+}
+
+header h2 {
+    font-size: 18px;
+    margin: 0px;
+    color: #888;
+    font-style: italic;
+}
+
+article p {
+    clear: both;
+}
+
+.logErrorStyle {
+       background-color: red;
+       color: white;
+}
+
+.logInfoStyle {
+       background-color: blue;
+       color: white;
+}
+
+.logWindow {
+       border: 1px solid #888;
+       height: 300px;
+       width: 480px;
+}
+
+label.left {
+       float: left;
+       width: 45%;
+}
+.half {
+       width: 50%;
+}
+
+ul.bare {
+       list-style: none;
+       margin-left: 0;
+       padding-left: 0;
+}
+
+form textarea {
+       overflow:scroll;
+       width: 99%;
+}
+
+div.threeElems label, div.threeElems select {
+       width: 42%;
+}
+div.threeElems button {
+       width: 15%;
+       float: right;
+}
+
+input#recordType {
+       width: 100%;
+}
+
+td {
+       word-break:break-all;
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/index.html
new file mode 100644 (file)
index 0000000..9bf314c
--- /dev/null
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8" />
+       <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
+       <meta name="description" content="A NFC Sample"/>
+       <title>NFC</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="js/main.js"></script>
+       <link rel="stylesheet" href="css/style.css"/>
+
+       <script type="text/javascript">
+               window.onload = startapp;
+       </script>
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header">
+                       <h1>NFC Sample application</h1>
+               </div>
+               <div data-role="content">
+                       <div>
+                               <label for="detectNFC" class="left">Detected object</label>
+                               <input type="text" id="detectNFC" disabled="disabled" value="None" class="half"/>
+                       </div>
+                       <hr/>
+                       <div class="threeElems">
+                               <label for="recordIndex" class="left">Stored records</label>
+                               <select id="recordIndex" class="half" onchange="changeRecordIndex();">
+                                       <option>No Select</option>
+                               </select>
+                       </div>
+                       <hr/>
+                       <table border="4">
+                               <tr><th>Type</th> <td id="recordType"/></tr>
+                               <tr><th>Payload</th> <td id="recordPayload"/></tr>
+                               <tr><th>Data</th> <td id="recordData"/></tr>
+                               <tr><th>Byte</th> <td id="recordByteData"/></tr>
+                       </table>
+                       <input type="button" id='sendBt' value="No Operation" onclick="sendNDEF();">
+                       <hr/>
+               </div>
+               <div data-role="footer" data-position="fixed">
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/project/js/main.js
new file mode 100755 (executable)
index 0000000..7dbc3ac
--- /dev/null
@@ -0,0 +1,282 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+var nfc;
+var nfcAdapter = null;
+var readNDEFMessage;
+
+function byteArrayToString(byteArray) {
+       var stringData = "";
+       for (var i = 0; i < byteArray.length; i++) {
+               if (i) stringData += " ";
+               stringData = stringData + "0x" + byteArray[i].toString(16);
+       }
+       return stringData;
+}
+
+function fillRecordInfo(record) {
+       try {
+               var outputRecord = 'TNF: ';
+               switch (record.tnf) {
+               case tizen.nfc.NFC_RECORD_TNF_EMPTY:
+                       outputRecord = outputRecord + 'EMPTY';
+                       break;
+               case tizen.nfc.NFC_RECORD_TNF_WELL_KNOWN:
+                       outputRecord = outputRecord + 'WELL KNOWN';
+                       break;
+               case tizen.nfc.NFC_RECORD_TNF_MIME_MEDIA:
+                       outputRecord = outputRecord + 'MIME MEDIA';
+                       break;
+               case tizen.nfc.NFC_RECORD_TNF_URI:
+                       outputRecord = outputRecord + 'URI';
+                       break;
+               case tizen.nfc.NFC_RECORD_TNF_EXTERNAL_RTD:
+                       outputRecord = outputRecord + 'EXTERNAL RTD';
+                       break;
+               case tizen.nfc.NFC_RECORD_TNF_UNKNOWN:
+                       outputRecord = outputRecord + 'UNKNOWN';
+                       break;
+               }
+               outputRecord = outputRecord + ' id: ' + byteArrayToString(record.id);
+               document.getElementById('recordType').innerHTML = outputRecord;
+
+               document.getElementById('recordPayload').innerHTML = byteArrayToString(record.payload);
+               var dataBox = document.getElementById('recordData');
+               if (record instanceof tizen.NDEFRecordText) {
+                       dataBox.innerHTML = 'text: ' + record.text + '<br/>';
+                       dataBox.innerHTML = dataBox.innerHTML + '  langCode: '
+                                       + record.languageCode + '<br/>';
+                       if (record.encoding == 'UTF8') {
+                               dataBox.innerHTML = dataBox.innerHTML + '  encodeType: UTF-8';
+                       } else {
+                               dataBox.innerHTML = dataBox.innerHTML + '  encodeType: UTF-16';
+                       }
+               } else if (record instanceof tizen.NDEFRecordURI) {
+                       dataBox.innerHTML = 'URI: ' + record.uri;
+               } else if (record instanceof tizen.NDEFRecordMedia) {
+                       dataBox.innerHTML = 'mimeType: ' + record.mimeType;
+               }
+               document.getElementById('recordByteData').innerHTML = byteArrayToString(readNDEFMessage
+                               .toByte());
+       } catch (e) {
+               alert(e.name + " : " + e.message);
+       }
+}
+function resetRecordIndex() {
+       var elSel = document.getElementById('recordIndex');
+       while(elSel.options.length > 0) {
+               elSel.remove(0);
+       }
+       
+       var elOptNew = document.createElement('option');
+       elOptNew.text = "No Select";
+       elOptNew.value = "No Select";
+       elSel.add(elOptNew, elSel.options[null]);
+       $('select').selectmenu('refresh');
+}
+
+function readMessage(message) {
+       if (document.getElementById('detectNFC').value == 'TARGET')
+               alert("NDEF is received");
+       try {
+               readNDEFMessage = message;
+
+               var elSel = document.getElementById('recordIndex');
+               while(elSel.options.length > 0) {
+                       elSel.remove(0);
+               }
+
+               resetRecordIndex();
+
+               for ( var i = 0; i < readNDEFMessage.recordCount; i++) {
+                       var elOptNew = document.createElement('option');
+                       elOptNew.text = i;
+                       elOptNew.value = i;
+                       var elOptOld = elSel.options[i];
+                       elSel.add(elOptNew, elOptOld);
+               }
+
+               $('select').selectmenu('refresh');
+       } catch (e) {
+               alert(e.name + " : " + e.message);
+       }
+}
+
+function changeRecordIndex() {
+       clearReadRecord();
+       if ((nfc != null) && (document.getElementById('recordIndex').value != "No Select")) {
+               var recordIndex = Number(document.getElementById('recordIndex').value);
+               try {
+                       fillRecordInfo(readNDEFMessage.records[recordIndex]);
+               } catch (e) {
+                       alert(e.name + " : " + e.message);
+               }
+       }
+}
+
+function readMessageErr(e) {
+       alert(e.name + " : " + e.message);
+}
+
+function sendNDEF() {
+       try {
+               if (document.getElementById('detectNFC').value == 'None')
+                       return;
+               var ndefMessage;
+               var recordArray = new Array(new tizen.NDEFRecordText('This is Test!',
+                               'en-US', 'UTF16'));
+               ndefMessage = new tizen.NDEFMessage(recordArray);
+
+               function sucSend() {
+                       if (document.getElementById('detectNFC').value == 'TARGET')
+                               alert('Send success!');
+                       else
+                               alert('Write success!');
+               }
+               function errSend(e) {
+                       alert(e.name + " : " + e.message);
+               }
+
+               if (document.getElementById('detectNFC').value == 'TARGET') {
+                       nfc.sendNDEF(ndefMessage, sucSend, errSend);
+               } else {
+                       nfc.writeNDEF(ndefMessage, sucSend, errSend);
+               }
+       } catch (e) {
+               alert(e.name + " : " + e.message);
+       }
+}
+
+function setTagDetect() {
+       var onSuccess = {
+               onattach : function(tag) {
+                       nfc = tag;
+                       document.getElementById('detectNFC').value = 'TAG(type:' + tag.type
+                                       + ')';
+
+                       if (tag.isSupportedNDEF) {
+                               tag.readNDEF(readMessage, readMessageErr);
+                       } else {
+                               alert("This Tag doesn't support NDEF");
+                       }
+                       document.getElementById('sendBt').value = 'writeNDEF';
+                       $('[type="button"]').button('refresh');
+               },
+               ondetach : detachNFC
+       };
+
+       function onError(e) {
+               alert('Tag Listen Error: ' + e.message);
+       }
+
+       try {
+               nfcAdapter.setTagListener(onSuccess, onError);
+       } catch (e) {
+               alert(e.name + " : " + e.message);
+       }
+}
+
+function unsetTagDetect() {
+       try {
+               nfcAdapter.unsetTagListener();
+               nfc = null;
+               document.getElementById('detectNFC').value = '';
+       } catch (e) {
+               alert(e.name + " : " + e.message);
+       }
+}
+
+function setTargetDetect() {
+       var onSuccess = {
+               onattach : function sucAttach(target) {
+                       nfc = target;
+                       document.getElementById('detectNFC').value = 'TARGET';
+                       document.getElementById('sendBt').value = 'sendNDEF';
+                       $('[type="button"]').button('refresh');
+                       target.setReceiveNDEFListener(readMessage, readMessageErr);
+               },
+               ondetach : detachNFC
+       };
+
+       function err(e) {
+               alert('Target Listen Error: ' + e.message);
+       }
+
+       try {
+               nfcAdapter.setPeerListener(onSuccess, err);
+       } catch (e) {
+               alert(e.name + " : " + e.message);
+       }
+}
+
+function unsetTargetDetect() {
+       try {
+               nfcAdapter.unsetPeerListener();
+               nfc = null;
+               document.getElementById('detectNFC').value = '';
+       } catch (e) {
+               alert(e.name + " : " + e.message);
+       }
+}
+
+function detachNFC() {
+       nfc = null;
+       document.getElementById('detectNFC').value = 'None';
+       document.getElementById('sendBt').value = 'No Operation';
+       $('[type="button"]').button('refresh');
+       resetRecordIndex();
+       clearReadRecord();
+}
+
+function clearReadRecord() {
+       outputRecord = '';
+       document.getElementById('recordType').innerHTML = '';
+       document.getElementById('recordPayload').innerHTML = '';
+       document.getElementById('recordData').innerHTML = '';
+       document.getElementById('recordByteData').innerHTML = '';
+}
+
+var startapp = function() {
+       function onPowerOn() {
+               setTagDetect();
+               setTargetDetect();
+       }
+       function onPowerOnFails(e) {
+               alert('Power On error: ' + e.name + " : "+ e.message);
+       }
+       try {
+               nfcAdapter = tizen.nfc.getDefaultAdapter();
+               nfcAdapter.setPowered(true, onPowerOn, onPowerOnFails);
+       } catch (e) {
+               alert(e.name + " : " + e.message);
+               nfcAdapter = null;
+       }
+       $("#main .ui-btn-back").bind("vclick", function() {
+               closeapp();
+       });
+};
+
+function closeapp() {
+       try {
+               if (nfcAdapter) {
+                       unsetTagDetect();
+                       unsetTargetDetect();
+               }
+               tizen.application.exit();
+       } catch (e) {
+               alert(e.name + " : " + e.message);
+       }
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..43678f1
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>NFC</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tutorial-nfc-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tutorial-nfc-snapshot.png
new file mode 100644 (file)
index 0000000..b1f2859
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/NFC/tutorial-nfc-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/description.xml
new file mode 100644 (file)
index 0000000..07a59a6
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Power</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-power-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen power device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/config.xml
new file mode 100755 (executable)
index 0000000..6787f83
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.11" viewmodes="fullscreen" id="http://tizen.org/wid/Power">
+       <name>Power</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application" required="true"/>
+       <feature name="http://tizen.org/api/power" required="true"/>
+       <tizen:application id="samplepwr0" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/css/style.css
new file mode 100755 (executable)
index 0000000..cc303ee
--- /dev/null
@@ -0,0 +1,5 @@
+
+li>label {
+       color: #646464;
+}
+
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/index.html
new file mode 100644 (file)
index 0000000..af5418e
--- /dev/null
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Power API Tutorial"/>
+
+       <title>Power</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/power.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css" />
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header">
+                   <h1>Power</h1>
+               </div>
+
+               <div data-role="content">
+                       <input type="button" value="request DISPLAY_DIM" onclick="requestDisplay('DISPLAY_DIM');" />
+                       <input type="button" value="request DISPLAY_NORMAL" onclick="requestDisplay('DISPLAY_NORMAL');" />
+                       <input type="button" value="request DISPLAY_BRIGHT" onclick="requestDisplay('DISPLAY_BRIGHT');" />
+                       <br>
+                       <input type="button" value="release Display" onclick="releaseDisplay();" />
+               </div>
+       </div>
+</body>
+       
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/js/config.js
new file mode 100644 (file)
index 0000000..daeb681
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
+
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/js/power.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/project/js/power.js
new file mode 100755 (executable)
index 0000000..2f7e9c6
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               tizen.application.exit();
+       });
+});
+
+function onSuccess(){
+       console.log("request succeesed!")
+}
+
+function onError(){
+       console.log("request failed!")
+}
+
+function onChanged(resource, actualState, requestedState) {
+       console.log("State changed. Resource: " + resource + ", actualState: " + actualStateual + ", requestedState: " + requestedState);
+}
+
+//requestDisplay
+function requestDisplay(displayState){
+       try{
+               console.log("requestDisplay with " + displayState);
+
+               var stateRequest = new tizen.PowerStateRequest("DISPLAY", displayState);
+               console.log("display request constructed.")
+
+               tizen.power.request(stateRequest, onSuccess, onError, onChanged);
+       }catch(err) {
+               console.log("errorname: " + err.name + ", description: " + err.description + ", messsage: " + err.message);
+    }
+}
+
+// releaseDisplay
+function releaseDisplay(){
+       try{
+               console.log("releaseDisplay");
+
+               tizen.power.release("DISPLAY");
+               console.log("release Display done.");
+       }catch(err) {
+               console.log("errorname: " + err.name + ", description: " + err.description + ", messsage: " + err.message);
+    }
+}
+
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..cb3b579
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Power</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tutorial-power-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tutorial-power-snapshot.png
new file mode 100644 (file)
index 0000000..338f0f2
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Power/tutorial-power-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/description.xml
new file mode 100644 (file)
index 0000000..3d7eae7
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Systeminfo</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-systeminfo-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen systeminfo device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/config.xml
new file mode 100755 (executable)
index 0000000..b84a53b
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.14" id="http://tizen.org/wid/Systeminfo" viewmodes="fullscreen">
+       <name>Systeminfo</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/systeminfo" required="true"/>
+       <tizen:application id="samplesysi" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/css/style.css
new file mode 100755 (executable)
index 0000000..6d2ee4f
--- /dev/null
@@ -0,0 +1,3 @@
+li>label {
+       color:#646464;
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/index.html
new file mode 100644 (file)
index 0000000..e894cbc
--- /dev/null
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Systeminfo API Tutorial"/>
+
+       <title>Systeminfo</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css"/>
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>System Information</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li id="storage-info">Storage</li>
+                               <li id="power-info">Power</li>
+                               <li id="cpu-info">CPU</li>
+                               <li id="display-info">Display</li>
+                               <li id="device-info">Device</li>
+                               <li id="network-info">Network</li>
+                               <li id="wifi-info">Wifi</li>
+                               <li id="cellular-info">Cellular network</li>
+                               <li id="sim-info">SIM</li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="battery">Battery level watching</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="info">
+               <div data-role="header" data-position="fixed">
+                       <h1 id="info-title"></h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="info-list">
+                       </ul>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/project/js/main.js
new file mode 100644 (file)
index 0000000..6abf605
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+var gInfoTitle = "", gInfo = "", gBatteryListener;
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               tizen.application.exit();
+               return false;
+       });
+       $("#storage-info").bind("vclick", function() {
+               getSystemProperty("Storage", onStorageSuccess);
+               return false;
+       });
+       $("#power-info").bind("vclick", function() {
+               getSystemProperty("Power", onPowerSuccess);
+               return false;
+       });
+       $("#cpu-info").bind("vclick", function() {
+               getSystemProperty("Cpu", onCpuInfoSuccess);
+               return false;
+       });
+       $("#display-info").bind("vclick", function() {
+               getSystemProperty("Display", onDisplaySuccess);
+               return false;
+       });
+       $("#device-info").bind("vclick", function() {
+               getSystemProperty("Device", onDeviceSuccess);
+               return false;
+       });
+       $("#network-info").bind("vclick", function() {
+               getSystemProperty("Network", onNetworkSuccess);
+               return false;
+       });
+       $("#wifi-info").bind("vclick", function() {
+               getSystemProperty("WifiNetwork", onWifiSuccess);
+               return false;
+       });
+       $("#cellular-info").bind("vclick", function() {
+               getSystemProperty("CellularNetwork", onCellSuccess);
+               return false;
+       });
+       $("#sim-info").bind("vclick", function() {
+               getSystemProperty("SIM", onSimSuccess);
+               return false;
+       });
+       $("#battery").bind("vclick", watchingBatteryLevelStart);
+});
+
+$(document).delegate("#info", "pageinit", function() {
+       $("#info").bind("pagebeforeshow", function() {
+               $("#info-title").html(gInfoTitle);
+               $("#info-list").html(gInfo).trigger("create").listview("refresh");
+       });
+});
+
+function onError(e) {
+       alert("Error: " + e.message);
+}
+
+function make2lineListItem(title, value) {
+       return '<li class="ui-li-has-multiline">'
+                       + title
+                       + '<span class="ui-li-text-sub">'
+                       + value
+                       + '</span></li>';
+}
+
+function make1lineListItem(value) {
+       return '<li>' + value + '</li>';
+}
+
+function makeDividerListItem(value) {
+       return '<li data-role="list-divider">' + value + '</li>';
+}
+
+function onStorageSuccess(storages) {
+       gInfoTitle = "Storages(" + storages.length + ")";
+       gInfo = "";
+       for (var i = 0; i < storages.length; i++) {
+               gInfo += makeDividerListItem("Storage " + (i + 1))
+                               + make2lineListItem("Type", storages[i].type)
+                               + make2lineListItem("Capacity", Math.floor(storages[i].capacity / 1000000) + " MB")
+                               + make2lineListItem("Available capacity", Math.floor(storages[i].availableCapacity / 1000000) + " MB")
+                               + make2lineListItem("Removable", (storages[i].isRemoveable == true ? "Yes" : "No"));
+       }
+
+       $.mobile.changePage("#info");
+}
+
+function onPowerSuccess(power) {
+       gInfoTitle = "Power";
+       gInfo = make2lineListItem("Level", power.level)
+                       + make2lineListItem("Charging", (power.isCharging == true ? "Yes" : "No"));
+
+       $.mobile.changePage("#info");
+}
+
+function onCpuInfoSuccess(cpu) {
+       gInfoTitle = "CPU";
+       gInfo = make2lineListItem("Load", cpu.load);
+
+       $.mobile.changePage("#info");
+}
+
+function onDisplaySuccess(display) {
+       gInfoTitle = "Display";
+       gInfo = makeDividerListItem("Resolution")
+                       + make2lineListItem("Width", display.resolutionWidth)
+                       + make2lineListItem("Height", display.resolutionHeight)
+                       + makeDividerListItem("Dots per inch")
+                       + make2lineListItem("Horizontal", display.dotsPerInchWidth)
+                       + make2lineListItem("Vertical", display.dotsPerInchHeight)
+                       + makeDividerListItem("Physical size")
+                       + make2lineListItem("Width", display.physicalWidth)
+                       + make2lineListItem("Height", display.physicalHeight)
+                       + makeDividerListItem("Brightness")
+                       + make1lineListItem(display.brightness);
+
+       $.mobile.changePage("#info");
+}
+
+function onDeviceSuccess(device) {
+       gInfoTitle = "Device";
+       gInfo = make2lineListItem("IMEI", device.imei)
+                       + make2lineListItem("Model", device.model)
+                       + make2lineListItem("Version", device.version)
+                       + make2lineListItem("Vendor", device.vendor);
+
+       $.mobile.changePage("#info");
+}
+
+function onNetworkSuccess(network) {
+       var networkTypes = ["NONE", "2G", "2.5G","3G", "4G", "WIFI", "ETHERNET", "UNKNOWN"];
+
+       gInfoTitle = "Network";
+       gInfo = make2lineListItem("Current data network type", networkTypes[network.networkType]);
+
+       $.mobile.changePage("#info");
+}
+
+function onWifiSuccess(wifi) {
+       gInfoTitle = "Wifi network";
+       gInfo = make2lineListItem("Status", wifi.status)
+                       + make2lineListItem("SSID", wifi.ssid)
+                       + make2lineListItem("IP address", wifi.ipAddress)
+                       + make2lineListItem("Signal strength", wifi.signalStrength);
+
+       $.mobile.changePage("#info");
+}
+
+function onCellSuccess(cell) {
+       gInfoTitle = "Cellular network";
+       gInfo = make2lineListItem("Status", cell.status)
+                       + make2lineListItem("Access Point Name (APN)", cell.apn)
+                       + make2lineListItem("IP address", cell.ipAddress)
+                       + make2lineListItem("Mobile Country Code (MCC)", cell.mcc)
+                       + make2lineListItem("Mobile Network Code (MNC)", cell.mnc)
+                       + make2lineListItem("Cell ID", cell.cellid)
+                       + make2lineListItem("Location Area Code (LAC)", cell.lac)
+                       + make2lineListItem("Roaming", (cell.isRoaming ? "Yes" : "No"));
+
+       $.mobile.changePage("#info");
+}
+
+function onSimSuccess(sim) {
+       gInfoTitle = "SIM";
+       gInfo = make2lineListItem("Operator Name String (ONS)", sim.operatorName)
+                       + make2lineListItem("SIM card subscriber number", sim.msisdn)
+                       + make2lineListItem("Integrated Circuit Card ID", sim.iccid)
+                       + make2lineListItem("Mobile Country Code (MCC)", sim.mcc)
+                       + make2lineListItem("Mobile Network Code (MNC)", sim.mnc)
+                       + make2lineListItem("Mobile Subscription Identification Number (MSIN)", sim.msin)
+                       + make2lineListItem("Service Provider Name (SPN)", sim.spn);
+
+       $.mobile.changePage("#info");
+}
+
+function getSystemProperty(property, onSuccess) {
+       var supported;
+
+       try {
+               supported = tizen.systeminfo.isSupported(property);
+               if (supported == true) {
+                       tizen.systeminfo.getPropertyValue(property, onSuccess, onError);
+               } else {
+                       alert("Property " + property + " not supported");
+               }
+       } catch (e) {
+               alert("Exception: " + e.message);
+       }
+}
+
+function watchingBatteryLevelStart() {
+       function onBatterySuccess(power) {
+               alert("Battery level: " + power.level);
+       }
+
+       try {
+               gBatteryListener = tizen.systeminfo.addPropertyValueChangeListener(
+                               "Power", onBatterySuccess, onError, {
+                                       // SystemInfoOptions object with threshold values
+                                       highThreshold: 0.9,
+                                       lowThreshold: 0.2
+                               });
+               alert("Watching battery level started");
+       } catch(e) {
+               alert("Exception: " + e.message );
+       }
+       $("#battery").unbind("vclick");
+       $("#battery").bind("vclick", watchingBatteryLevelStop);
+}
+       
+function watchingBatteryLevelStop() {
+       try {
+               tizen.systeminfo.removePropertyValueChangeListener(gBatteryListener);
+               alert("Watching battery level stopped");
+       } catch(e) {
+               alert("Exception: " + e.message );
+       }
+       $("#battery").unbind("vclick");
+       $("#battery").bind("vclick", watchingBatteryLevelStart);
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..f25cebd
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Systeminfo</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tutorial-systeminfo-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tutorial-systeminfo-snapshot.png
new file mode 100755 (executable)
index 0000000..e5ff025
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Systeminfo/tutorial-systeminfo-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/description.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/description.xml
new file mode 100644 (file)
index 0000000..3c812b0
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<?xml-stylesheet type="text/xsl" href="description.xsl"?>\r
+<Overview version="1.0">\r
+  <SampleName>Time</SampleName>\r
+  <SampleVersion>1.0</SampleVersion>\r
+  <Preview>tutorial-time-snapshot.png</Preview>\r
+  <Description>\r
+    A tutorial sample application demonstrating the tizen time device API usage.\r
+  </Description>\r
+</Overview>\r
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/description.xsl
new file mode 100755 (executable)
index 0000000..1f4f57f
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 
+    This file provides a functionality to show template's description.xml in the project wizard.
+    Don't delete or move this file.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="/">
+    <html>
+      <head>
+        <style type="text/css">
+          html,body {
+          font-family:Arial;
+          margin: 0px;
+          }
+          td
+          {
+          font-size:13px;
+          }
+          .samplename
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:26px;
+          background-color:#6d96ac;
+          }
+          .category
+          {
+          font-size:16px;
+          color:#ffffff;
+          height:30px;
+          background-color:#6d96ac;
+          }
+          .contents
+          {
+          padding: 6px 10px 14px 10px;
+          }
+          table#widgets td
+          {
+          border: solid 1px #6d96ac;
+          border-collapse: collapse;
+          }
+          .widgetname
+          {
+          font-weight: bold;
+          text-align: center;
+          width: 20%;
+          word-break:break-all;
+          }
+          table#references td
+          {
+          width: 100%;
+          border: 0px;
+          border-spacing: 0px;
+          padding: 5px;
+          }
+          .refname
+          {
+          width: 100%;
+          font-weight: bold;
+          }
+        </style>
+      </head>
+      <body>
+        <table width="400px" border="0" cellspacing="0">
+          <tr>
+            <td class="samplename" align="center">
+              <xsl:value-of select="Overview/SampleName"/>
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>
+                         <!--
+              <xsl:value-of select="Overview/SampleVersion"/>
+                         -->
+            </td>
+          </tr>
+          <tr bgcolor="#FFFFFF">
+            <td class="contents">
+                         <strong>Type</strong>: JavaScript
+                         <p>
+              <xsl:value-of select="Overview/Description"/>
+                         </p>
+            </td>
+          </tr>
+          <tr>
+            <td align="center" bgcolor="#FFFFFF" height="260px">
+              <img>
+                <xsl:attribute name="src">
+                  <xsl:value-of select="Overview/Preview"/>
+                </xsl:attribute>
+              </img>
+            </td>
+          </tr>
+        </table>
+      </body>
+    </html>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/config.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/config.xml
new file mode 100755 (executable)
index 0000000..1f1fefd
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" version="0.16" id="http://tizen.org/wid/Time" viewmodes="fullscreen">
+       <name>Time</name>
+       <icon src="icon.png"/>
+       <content src="index.html"/>
+       <feature name="http://tizen.org/api/tizen" required="true"/>
+       <feature name="http://tizen.org/api/application.read" required="true"/>
+       <feature name="http://tizen.org/api/time" required="true"/>
+       <tizen:application id="sampletime" required_version="1.0"/>
+</widget>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/css/style.css b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/css/style.css
new file mode 100644 (file)
index 0000000..5f8bfb1
--- /dev/null
@@ -0,0 +1,7 @@
+li>label {
+       color:#646464;
+}
+#current-time, #utc, #op-current-time {
+       word-wrap:break-word;
+       white-space:normal;
+}
\ No newline at end of file
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/icon.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/icon.png
new file mode 100755 (executable)
index 0000000..b0979b1
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/icon.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/index.html b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/index.html
new file mode 100644 (file)
index 0000000..7bc5a41
--- /dev/null
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8"/>
+       <meta name="description" content="Time API Tutorial"/>
+
+       <title>Time</title>
+       <script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
+       <script src="./js/config.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
+       <script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-viewport-scale="false"></script>
+       <script type="text/javascript" src="./js/main.js"></script>
+       <link rel="stylesheet" type="text/css" href="./css/style.css"/>
+</head>
+
+<body>
+       <div data-role="page" id="main">
+               <div data-role="header" data-position="fixed">
+                       <h1>Time</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li data-role="list-divider">Current time</li>
+                               <li id="current-time">Get current, please!</li>
+                               <li data-role="list-divider">UTC of current time</li>
+                               <li id="utc">Get current, please!</li>
+                               <li data-role="list-divider">Information</li>
+                               <li class="ui-li-has-multiline">
+                                       Local timezone
+                                       <div class="ui-li-text-sub" id="local-timezone"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Date format
+                                       <div class="ui-li-text-sub" id="date-format"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Time format
+                                       <div class="ui-li-text-sub" id="time-format"></div>
+                               </li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="get-current">Get current</a></li>
+                                       <li><a id="go-to-operation">Operation</a></li>
+                                       <li><a id="duration">Duration</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="operation">
+               <div data-role="header" data-position="fixed">
+                       <h1>Time</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview">
+                               <li data-role="list-divider">Current time</li>
+                               <li id="op-current-time">
+                               </li>
+                               <li data-role="list-divider">Input</li>
+                               <li>
+                                       <input type="datetime" id="time-input"/>
+                               </li>
+                               <li class="ui-li-has-multiline" id="timezone">
+                                       Timezone
+                                       <span class="ui-li-text-sub"></span>
+                               </li>
+                               <li>
+                                       <label for="add-days">Add (Days)</label>
+                                       <input type="number" id="add-days" value="0"/>
+                               </li>
+                               <li data-role="list-divider">Output</li>
+                               <li class="ui-li-has-multiline">
+                                       Local time in input timezone
+                                       <div class="ui-li-text-sub" id="local-time-output"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Timezone abbreviation
+                                       <div class="ui-li-text-sub" id="tz-abbreviation"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Locale string
+                                       <div class="ui-li-text-sub" id="locale-string"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Locale date string
+                                       <div class="ui-li-text-sub" id="locale-date"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Locale time string
+                                       <div class="ui-li-text-sub" id="locale-time"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Seconds from UTC
+                                       <div class="ui-li-text-sub" id="sec-from-utc"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       UTC time
+                                       <div class="ui-li-text-sub" id="utc-output"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Leap year
+                                       <div class="ui-li-text-sub" id="leap-year"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       DST
+                                       <div class="ui-li-text-sub" id="dst"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Previous DST transition date
+                                       <div class="ui-li-text-sub" id="pre-dst"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Next DST transition date
+                                       <div class="ui-li-text-sub" id="next-dst"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Compare to current time
+                                       <div class="ui-li-text-sub" id="compare"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Difference from current time
+                                       <div class="ui-li-text-sub" id="difference"></div>
+                               </li>
+                               <li class="ui-li-has-multiline">
+                                       Local time in current timezone
+                                       <div class="ui-li-text-sub" id="current-timezone-time"></div>
+                               </li>
+                       </ul>
+               </div>
+
+               <div data-role="footer" data-position="fixed">
+                       <div data-role="controlbar" data-style="toolbar">
+                               <ul>
+                                       <li><a id="local-input">Local input</a></li>
+                                       <li><a id="utc-input">UTC input</a></li>
+                               </ul>
+                       </div>
+               </div>
+       </div>
+
+       <div data-role="page" id="timezones">
+               <div data-role="header" data-position="fixed">
+                       <h1>Timezones</h1>
+               </div>
+
+               <div data-role="content">
+                       <ul data-role="listview" id="timezone-list">
+                       </ul>
+               </div>
+       </div>
+</body>
+</html>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/js/config.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/js/config.js
new file mode 100644 (file)
index 0000000..441e1a6
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+//tizen-web-ui-fw configuration
+$(document).bind("mobileinit", function() {
+       $.mobile.loadingMessageTextVisible = false;
+       $.mobile.defaultPageTransition = "none";
+       // Disable context menu
+       $(document).bind("contextmenu", function(e) {
+               return false;
+       });
+       // Disable text selection
+       $(document).delegate("[data-role='page']", "pageinit", function(e) {
+               $.mobile.tizen.disableSelection($(e.target));
+       });
+});
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/js/main.js b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/project/js/main.js
new file mode 100644 (file)
index 0000000..9e753a2
--- /dev/null
@@ -0,0 +1,206 @@
+/*
+ *      Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ *      Licensed under the Flora License, Version 1.0 (the "License");
+ *      you may not use this file except in compliance with the License.
+ *      You may obtain a copy of the License at
+ *
+ *              http://www.tizenopensource.org/license
+ *
+ *      Unless required by applicable law or agreed to in writing, software
+ *      distributed under the License is distributed on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *      See the License for the specific language governing permissions and
+ *      limitations under the License.
+ */
+
+var gDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], gCurrent, t;
+
+$(document).delegate("#main", "pageinit", function() {
+       $("#main .ui-btn-back").bind("vclick", function() {
+               tizen.application.exit();
+               return false;
+       });
+
+       $("#get-current").bind("vclick", function() {
+               /* Fill up main view time information */
+               gCurrent = tizen.time.getCurrentDateTime();
+
+               $("#current-time").html(gCurrent.toDateString() + " " + gCurrent.toTimeString());
+               $("#local-timezone").html(tizen.time.getLocalTimezone());
+
+               $("#date-format").html(tizen.time.getDateFormat());
+               $("#time-format").html(tizen.time.getTimeFormat());
+               $("#utc").html(gCurrent.toUTC().toString());
+               return false;
+       });
+
+       $("#go-to-operation").bind("vclick", function() {
+               /* Check current time is set then go to operation page */
+               if(gCurrent == undefined) {
+                       alert("Get current before proceeding");
+               } else {
+                       $.mobile.changePage("#operation");
+               }
+               return false;
+       });
+
+       $("#duration").bind("vclick", function() {
+               /* Make 2 random duratoins and compare them */
+               var duration1 = new tizen.TimeDuration(Math.floor(Math.random()*100), "SECS"),
+                       duration2 = new tizen.TimeDuration(Math.floor(Math.random()*100), "SECS"),
+                       diff = duration1.difference(duration2),
+                       strDuration = "Duration #1: " + duration1.length + " SECS<br/>Duration #2: " + duration2.length + " SECS<br/>",
+                       strMsg;
+
+               if (duration1.lessThan(duration2)) {
+                       strMsg = "#1 is less than #2 by " + diff.length + " SECS";
+               } else if (duration1.greaterThan(duration2)) {
+                       strMsg = "#1 is greater than #2 by " + diff.length + " SECS";
+               } else if (duration1.equalsTo(duration2)) {
+                       strMsg = "#1 equals to #2";
+               } else {
+                       strMsg = "Should never happen";
+               }
+               alert(strDuration + strMsg);
+               return false;
+       });
+});
+
+$(document).delegate("#operation", "pageinit", function() {
+       $("#local-input").bind("vclick", function() {
+               /* Set t with the input time as a local time */
+               var i = timeInput(),
+                       add_days = $("#add-days").val();
+
+               t.setFullYear(i.y);
+               t.setMonth(i.m -1);
+               t.setDate(i.d);
+               t.setHours(i.hrs);
+               t.setMinutes(i.mins);
+               t.setSeconds(0);
+               t.setMilliseconds(0);
+               t = t.toTimezone($("#timezone .ui-li-text-sub").text());
+               try {
+                       t = t.addDuration(new tizen.TimeDuration(add_days, "DAYS"));
+               } catch (e) {
+                       alert("addDuration() failed. Check input value");
+                       return false;
+               }
+               timeOutput(t);
+               return false;
+       });
+
+       $("#utc-input").bind("vclick", function() {
+               /* Set t with the input time as a UTC time */
+               var i = timeInput(),
+                       add_days = $("#add-days").val();
+
+               t.setUTCFullYear(i.y);
+               t.setUTCMonth(i.m -1);
+               t.setUTCDate(i.d);
+               t.setUTCHours(i.hrs);
+               t.setUTCMinutes(i.mins);
+               t.setUTCSeconds(0);
+               t.setUTCMilliseconds(0);
+               t = t.toTimezone($("#timezone .ui-li-text-sub").text());
+               try {
+                       t = t.addDuration(new tizen.TimeDuration(add_days, "DAYS"));
+               } catch (e) {
+                       alert("addDuration() failed. Check input value");
+                       return false;
+               }
+               timeOutput(t);
+               return false;
+       });
+
+       $("#timezone").bind("vclick", function() {
+               /* Go to timezone page on timezone field of operation page tap */
+               $.mobile.changePage("#timezones");
+               return false;
+       });
+
+       /* Set current time and timezone of operation page */
+       $("#op-current-time").html(gCurrent.toString());
+       $("#timezone .ui-li-text-sub").html(gCurrent.getTimezone());
+       t = new tizen.TZDate(gCurrent.getFullYear(), gCurrent.getMonth(), gCurrent.getDate(), 
+                       gCurrent.getHours(), gCurrent.getMinutes(), gCurrent.getSeconds(), gCurrent.getMilliseconds(), gCurrent.getTimezone());
+});
+
+$(document).delegate("#timezones", "pageinit", function() {
+       $("#timezone-list").delegate("li", "vclick", function() {
+               /* Set timezone field of operation page with selected timezone and go back to operation page */
+               $("#timezone .ui-li-text-sub").html($(this).text());
+               window.history.back();
+               return false;
+       });
+
+       /* Construct timezone list */
+       var tz = tizen.time.getAvailableTimezones(),
+               str = '';
+
+       for(var i = 0; i < tz.length; i++) {
+               str += '<li>'+tz[i]+'</li>';
+       }
+       $("#timezone-list").html(str).trigger("create").listview("refresh");
+});
+
+function timeOutput(t) {
+       $("#local-time-output").html((t.getMonth()+1) +". "+ t.getDate() +". "+ t.getFullYear() +" ("+ gDays[t.getDay()] +") "
+                                                                       + t.getHours() +":"+ t.getMinutes() +":"+ t.getSeconds() +":"+ t.getMilliseconds());
+       $("#tz-abbreviation").html(t.getTimezoneAbbreviation());
+       $("#locale-string").html(t.toLocaleString());
+       $("#locale-date").html(t.toLocaleDateString());
+       $("#locale-time").html(t.toLocaleTimeString());
+       $("#leap-year").html(tizen.time.isLeapYear(t.getFullYear()) ? "Yes" : "No");
+       $("#sec-from-utc").html(t.secondsFromUTC());
+       $("#utc-output").html((t.getUTCMonth()+1) +"."+ t.getUTCDate() +"."+ t.getUTCFullYear() +" ("+ gDays[t.getUTCDay()] +") "
+                       + t.getUTCHours() +":"+ t.getUTCMinutes() +":"+ t.getUTCSeconds() +":"+ t.getUTCMilliseconds());
+       $("#dst").html(t.isDST()? "Yes" : "No");
+
+       var dst_transit = t.getPreviousDSTTransition();
+
+       if(dst_transit != null) {
+               $("#pre-dst").html(dst_transit.toString());
+       } else {
+               $("#pre-dst").html("No DST transition date defined");
+       }
+
+       dst_transit = t.getNextDSTTransition();
+
+       if(dst_transit != null) {
+               $("#next-dst").html(dst_transit.toString());
+       } else {
+               $("#next-dst").html("No DST transition date defined");
+       }
+
+       if(t.earlierThan(gCurrent) == true) {
+               $("#compare").html("Input time is earlier than current time");
+       } else if(t.laterThan(gCurrent) == true) {
+               $("#compare").html("Input time is later than current time");
+       } else if(t.equalsTo(gCurrent) == true) {
+               $("#compare").html("Input time equals to current time");
+       } else {
+               $("#compare").html("Should never happen");
+       }
+
+       var duration = t.difference(gCurrent);
+
+       $("#difference").html(duration.length +" "+ duration.unit);
+
+       $("#current-timezone-time").html(t.toLocalTimezone().toString());
+}
+
+function timeInput() {
+       var dt = $("#time-input").datetimepicker("value").split("T"),
+               d = dt[0].split("-"),
+               t = dt[1].split(":");
+
+       return {
+               y: parseInt(d[0]),
+               m: parseInt(d[1]),
+               d: parseInt(d[2]),
+               hrs: parseInt(t[0]),
+               mins: parseInt(t[1])
+       };
+}
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen-app-template.xml b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen-app-template.xml
new file mode 100644 (file)
index 0000000..decfda4
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tizen-app-template xmlns="http://www.s-core.com/tizen-app-template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" template-version="" sdk-version="" icon32="tizen_32.png" icon64="tizen_64.png" xsi:schemaLocation="http://www.s-core.com/tizen-app-template tizen-app-template.xsd ">
+    <template-name>Time</template-name>
+    <widget-type>TIZEN</widget-type>
+    <build-property key="usedLibraryType" value="WebUIFramework"/>
+    <description-file-name>description.xml</description-file-name>
+    <options>
+        <supportLibraries>
+          <library name="Tizen Web UI Framework"/>
+        </supportLibraries>
+    </options>
+</tizen-app-template>
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen_32.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen_32.png
new file mode 100755 (executable)
index 0000000..a37c33e
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen_32.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen_64.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen_64.png
new file mode 100755 (executable)
index 0000000..f80f2ec
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tizen_64.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tutorial-time-snapshot.png b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tutorial-time-snapshot.png
new file mode 100644 (file)
index 0000000..38fa611
Binary files /dev/null and b/org.tizen.web.project.sample/templates/Sample/Tizen/Device API/Time/tutorial-time-snapshot.png differ
diff --git a/org.tizen.web.project.sample/templates/Sample/Tizen/description.xsl b/org.tizen.web.project.sample/templates/Sample/Tizen/description.xsl
new file mode 100644 (file)
index 0000000..0d9209e
--- /dev/null
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+\r
+<xsl:stylesheet version="1.0"\r
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\r
+  <xsl:template match="/">\r
+    <html>\r
+      <head>\r
+        <style type="text/css">\r
+          html,body {\r
+          font-family:Arial;\r
+          margin: 0px;\r
+          }\r
+          td\r
+          {\r
+          font-size:13px;\r
+          }\r
+          .samplename\r
+          {\r
+          font-size:16px;\r
+          color:#ffffff;\r
+          height:26px;\r
+          background-color:#6d96ac;\r
+          }\r
+          .category\r
+          {\r
+          font-size:16px;\r
+          color:#ffffff;\r
+          height:30px;\r
+          background-color:#6d96ac;\r
+          }\r
+          .contents\r
+          {\r
+          padding: 6px 10px 14px 10px;\r
+          }\r
+          table#widgets td\r
+          {\r
+          border: solid 1px #6d96ac;\r
+          border-collapse: collapse;\r
+          }\r
+          .widgetname\r
+          {\r
+          font-weight: bold;\r
+          text-align: center;\r
+          width: 20%;\r
+          word-break:break-all;\r
+          }\r
+          table#references td\r
+          {\r
+          width: 100%;\r
+          border: 0px;\r
+          border-spacing: 0px;\r
+          padding: 5px;\r
+          }\r
+          .refname\r
+          {\r
+          width: 100%;\r
+          font-weight: bold;\r
+          }\r
+        </style>\r
+      </head>\r
+      <body>\r
+        <table width="400px" border="0" cellspacing="0">\r
+          <tr>\r
+            <td class="samplename" align="center">\r
+              <xsl:value-of select="Overview/SampleName"/>\r
+              <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>\r
+                         <!--\r
+              <xsl:value-of select="Overview/SampleVersion"/>\r
+                         -->\r
+            </td>\r
+          </tr>\r
+          <tr bgcolor="#FFFFFF">\r
+            <td class="contents">\r
+                         <strong>Type</strong>: JavaScript\r
+                         <p>\r
+              <xsl:value-of select="Overview/Description"/>\r
+                         </p>\r
+            </td>\r
+          </tr>\r
+          <tr>\r
+            <td align="center" bgcolor="#FFFFFF" height="260px">\r
+              <img>\r
+                <xsl:attribute name="src">\r
+                  <xsl:value-of select="Overview/Preview"/>\r
+                </xsl:attribute>\r
+              </img>\r
+            </td>\r
+          </tr>\r
+        </table>\r
+      </body>\r
+    </html>\r
+  </xsl:template>\r
+\r
+</xsl:stylesheet>\r
diff --git a/package/build.linux b/package/build.linux
new file mode 100755 (executable)
index 0000000..0c11df9
--- /dev/null
@@ -0,0 +1,84 @@
+#!/bin/bash -xe
+
+__copy_necessary_binaries()
+{
+    echo "add necessary files."
+}
+
+__set_parameter()
+{
+    case ${TARGET_OS} in
+        ubuntu-32|ubuntu-64)
+            pde_path=${ROOTDIR}/indigo-pde
+            ;;
+        windows-32|windows-64)
+            pde_path=${ROOTDIR}/indigo-winpde
+            ;;
+        macos-64)
+            pde_path=${ROOTDIR}/indigo-macpde
+            ;;
+        *)
+            echo "${TARGET_OS} is not support yet."
+            exit 1
+            ;;
+    esac
+    
+    build_script_path=${pde_path}/pde_build
+}
+
+# clean
+clean()
+{
+    echo "=========================================CLEAN============================================"
+    __set_parameter
+    ${build_script_path}/clean.sh ${package_name}
+}
+
+# build
+build() 
+{
+    echo "=========================================BUILD============================================"
+    pkgname_and_platform_list=`awk 'BEGIN{RS="\n\n"; FS="\n"} /Package:/{for(i=1;i<NF;i++){if($i ~ /^OS:/){print $1,$i}}}' ${SRCDIR}/package/pkginfo.manifest | tr ' ' '@'`
+    for pkgname_and_platform in ${pkgname_and_platform_list}
+    do
+        pkgname_and_platform=`echo $pkgname_and_platform | tr '@' ' '`
+        package_name=`echo ${pkgname_and_platform} | cut -f1 -d " " | cut -f2 -d ":"`
+        platform=`echo ${pkgname_and_platform} | cut -f2 -d " " | cut -f2 -d ":"`
+    
+        if [ "x${TARGET_OS}" = "x${platform}" ]
+        then
+            __set_parameter
+            ${build_script_path}/build.sh ${package_name}
+       else
+            echo ""
+        fi
+    done
+}
+
+# install
+install() 
+{
+    pkgname_and_platform_list=`awk 'BEGIN{RS="\n\n"; FS="\n"} /Package:/{for(i=1;i<NF;i++){if($i ~ /^OS:/){print $1,$i}}}' ${SRCDIR}/package/pkginfo.manifest | tr ' ' '@'`
+    for pkgname_and_platform in ${pkgname_and_platform_list}
+    do
+        echo "=========================================INSTALL============================================"
+        pkgname_and_platform=`echo $pkgname_and_platform | tr '@' ' '`
+        package_name=`echo ${pkgname_and_platform} | cut -f1 -d " " | cut -f2 -d ":"`
+        platform=`echo ${pkgname_and_platform} | cut -f2 -d " " | cut -f2 -d ":"`
+
+        if [ "x${TARGET_OS}" = "x${platform}" ]
+        then
+            __set_parameter
+               INSTALL_DIR=${SRCDIR}/package/${package_name}.package.${TARGET_OS}/data
+            mkdir -p ${INSTALL_DIR} 
+            __copy_necessary_binaries
+            ${build_script_path}/install.sh ${package_name}
+        else
+            echo ""
+        fi
+    done    
+}
+
+[ "$1" = "clean" ] && clean
+[ "$1" = "build" ] && build
+[ "$1" = "install" ] && install
diff --git a/package/pkginfo.manifest b/package/pkginfo.manifest
new file mode 100644 (file)
index 0000000..1498c63
--- /dev/null
@@ -0,0 +1,42 @@
+Version:1.0.34
+Maintainer:kangho kim <kh5325.kim@samsung.com>, hyeongseok heo <hyeong-seok.heo@samsung.com>, gyeongseok seo <gyeongseok.seo@samsung.com>, jihoon song<jihoon80.song@samsung.com>, changhyun lee <changhyun1.lee@samsung.com>, bonyong lee <bonyong.lee@samsung.com>
+
+Package:web-sample-eplugin
+OS:ubuntu-32
+Build-host-os:ubuntu-32
+Build-dependency:indigo-pde [ubuntu-32], base-ide-product [ubuntu-32], common-eplugin [ubuntu-32], webapp-eplugin [ubuntu-32]
+Install-dependency:base-ide-product [ubuntu-32], common-eplugin [ubuntu-32], webapp-eplugin [ubuntu-32]
+Source:web-sample
+Description:Tizen Web App Sample
+
+Package:web-sample-eplugin
+OS:ubuntu-64
+Build-host-os:ubuntu-64
+Build-dependency:indigo-pde [ubuntu-64], base-ide-product [ubuntu-64], common-eplugin [ubuntu-64], webapp-eplugin [ubuntu-64]
+Install-dependency:base-ide-product [ubuntu-64], common-eplugin [ubuntu-64], webapp-eplugin [ubuntu-64]
+Source:web-sample
+Description:Tizen Web App Sample
+
+Package:web-sample-eplugin
+OS:windows-32
+Build-host-os:ubuntu-32
+Build-dependency:indigo-winpde [windows-32], base-ide-product [windows-32], common-eplugin [windows-32], webapp-eplugin [windows-32]
+Install-dependency:base-ide-product [windows-32], common-eplugin [windows-32], webapp-eplugin [windows-32]
+Source:web-sample
+Description:Tizen Web App Sample
+
+Package:web-sample-eplugin
+OS:windows-64
+Build-host-os:ubuntu-64
+Build-dependency:indigo-winpde [windows-64], base-ide-product [windows-64], common-eplugin [windows-64], webapp-eplugin [windows-64]
+Install-dependency:base-ide-product [windows-64], common-eplugin [windows-64], webapp-eplugin [windows-64]
+Source:web-sample
+Description:Tizen Web App Sample
+
+Package:web-sample-eplugin
+OS:macos-64
+Build-host-os:ubuntu-64
+Build-dependency:indigo-macpde [macos-64], base-ide-product [macos-64], common-eplugin [macos-64], webapp-eplugin [macos-64]
+Install-dependency:base-ide-product [macos-64], common-eplugin [macos-64], webapp-eplugin [macos-64]
+Source:web-sample
+Description:Tizen Web App Sample