[ui] setup wizard
diff --git a/erpnext/setup/page/setup_wizard/sample_blog_post.html b/erpnext/setup/page/setup_wizard/data/sample_blog_post.html
similarity index 100%
rename from erpnext/setup/page/setup_wizard/sample_blog_post.html
rename to erpnext/setup/page/setup_wizard/data/sample_blog_post.html
diff --git a/erpnext/setup/page/setup_wizard/sample_home_page.css b/erpnext/setup/page/setup_wizard/data/sample_home_page.css
similarity index 100%
rename from erpnext/setup/page/setup_wizard/sample_home_page.css
rename to erpnext/setup/page/setup_wizard/data/sample_home_page.css
diff --git a/erpnext/setup/page/setup_wizard/sample_home_page.html b/erpnext/setup/page/setup_wizard/data/sample_home_page.html
similarity index 100%
rename from erpnext/setup/page/setup_wizard/sample_home_page.html
rename to erpnext/setup/page/setup_wizard/data/sample_home_page.html
diff --git a/erpnext/setup/page/setup_wizard/default_website.py b/erpnext/setup/page/setup_wizard/default_website.py
index 9bbdab0..5dbb7fc 100644
--- a/erpnext/setup/page/setup_wizard/default_website.py
+++ b/erpnext/setup/page/setup_wizard/default_website.py
@@ -28,8 +28,8 @@
 				'<p>'+_("This is an example website auto-generated from ERPNext")+"</p>"+\
 				'<p><a class="btn btn-primary" href="/login">Login</a></p>',
 			"description": self.company + ":" + (self.tagline or ""),
-			"css": frappe.get_template("setup/page/setup_wizard/sample_home_page.css").render(),
-			"main_section": frappe.get_template("setup/page/setup_wizard/sample_home_page.html").render({
+			"css": frappe.get_template("setup/page/setup_wizard/data/sample_home_page.css").render(),
+			"main_section": frappe.get_template("setup/page/setup_wizard/data/sample_home_page.html").render({
 				"company": self.company, "tagline": (self.tagline or "")
 			})
 		}).insert()
@@ -88,7 +88,7 @@
 			"blogger": blogger.name,
 			"blog_category": blog_category.name,
 			"blog_intro": "My First Blog",
-			"content": frappe.get_template("setup/page/setup_wizard/sample_blog_post.html").render(),
+			"content": frappe.get_template("setup/page/setup_wizard/data/sample_blog_post.html").render(),
 		}).insert()
 
 def test():
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.css b/erpnext/setup/page/setup_wizard/setup_wizard.css
index 46f9936..6ff5b12 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.css
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.css
@@ -3,7 +3,7 @@
 	top: 0px; bottom: 0px;
 	left: 0px; right: 0px;
 	overflow: auto;
-	padding-top: 60px;
+	padding-top: 30px;
 }
 .setup-wizard-wrapper {
 	margin: 0px auto;
@@ -15,13 +15,12 @@
 	}
 }
 
-#page-setup-wizard .panel {
-	background-color: #fff;
-}
-
-#page-setup-wizard .panel-body {
-}
-
 #page-setup-wizard .col-md-6 .control-input .btn {
 	width: 100%;
 }
+
+#page-setup-wizard .form-section {
+	margin: 0px -15px;
+	padding: 0px;
+	max-width: 400px;
+}
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.js b/erpnext/setup/page/setup_wizard/setup_wizard.js
index 6b847e0..9a557c2 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.js
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.js
@@ -38,11 +38,6 @@
 			})
 		},
 		title: __("Welcome"),
-		welcome_html: '<h1 class="text-muted text-center"><i class="icon-magic"></i></h1>\
-			<h2 class="text-center">'+__('ERPNext Setup')+'</h2>\
-			<p class="text-center" style="margin: 0px 100px">' +
-			__('Welcome to ERPNext. Over the next few minutes we will help you setup your ERPNext account. Try and fill in as much information as you have even if it takes a bit longer. It will save you a lot of time later. Good Luck!') +
-			'</p>',
 		working_html: function() { return '<h3 class="text-muted text-center"><i class="icon-refresh icon-spin"></i></h3>\
 			<h2 class="text-center">'+__('Setting up...')+'</h2>\
 			<p class="text-center">' +
@@ -64,22 +59,23 @@
 						reqd:1
 					},
 				],
-				help: __("Welcome to ERPNext. Please select your language to begin the Setup Wizard."),
+				help: "",
 				onload: function(slide) {
 					var me = this;
+					var select = slide.get_field("language");
 
 					if (!this.language_list) {
 						frappe.call({
 							method: "erpnext.setup.page.setup_wizard.setup_wizard.load_languages",
 							callback: function(r) {
 								me.language_list = r.message;
-								slide.get_input("language")
-									.add_options(r.message)
-									.val("english");
+								select.df.options = me.language_list;
+								select.set_input("english");
 							}
 						})
 					} else {
-						slide.get_input("language").add_options(this.language_list);
+						select.df.options = this.language_list;
+						select.refresh();
 					}
 
 					slide.get_input("language").on("change", function() {
@@ -95,7 +91,10 @@
 								$.each(slide.wiz.slide_dict, function(key, s) {
 									s.make();
 								});
-								slide.get_input("language").val(lang);
+
+								// select is re-made after language change
+								var select = slide.get_field("language");
+								select.set_input(lang);
 							}
 						})
 					});
@@ -177,11 +176,13 @@
 						if(country){
 							var timezone_list = frappe.country_info[country].timezones || [];
 							$timezone.add_options(timezone_list.sort());
-							slide.get_input("currency").val(frappe.country_info[country].currency);
+							slide.get_field("currency").set_input(frappe.country_info[country].currency);
 						}
 						// add all timezones at the end, so that user has the option to change it to any timezone
 						$timezone.add_options([""].concat(frappe.all_timezones));
 
+						slide.get_field("timezone").set_input($timezone.val());
+
 						// temporarily set date format
 						frappe.boot.sysdefaults.date_format = (frappe.country_info[country].date_format
 							|| "dd-mm-yyyy");
@@ -221,13 +222,13 @@
 					slide.get_input("company_name").on("change", function() {
 						var parts = slide.get_input("company_name").val().split(" ");
 						var abbr = $.map(parts, function(p) { return p ? p.substr(0,1) : null }).join("");
-						slide.get_input("company_abbr").val(abbr.slice(0, 5).toUpperCase());
+						slide.get_field("company_abbr").set_input(abbr.slice(0, 5).toUpperCase());
 					}).val(frappe.boot.sysdefaults.company_name || "").trigger("change");
 
 					slide.get_input("company_abbr").on("change", function() {
 						if(slide.get_input("company_abbr").val().length > 5) {
 							msgprint("Company Abbreviation cannot have more than 5 characters");
-							slide.get_input("company_abbr").val("");
+							slide.get_field("company_abbr").set_input("");
 						}
 					});
 
@@ -235,7 +236,7 @@
 						var year_end_date =
 							frappe.datetime.add_days(frappe.datetime.add_months(
 								frappe.datetime.user_to_obj(slide.get_input("fy_start_date").val()), 12), -1);
-						slide.get_input("fy_end_date").val(frappe.datetime.obj_to_user(year_end_date));
+						slide.get_field("fy_end_date").set_input(frappe.datetime.obj_to_user(year_end_date));
 
 					});
 				}
@@ -366,7 +367,6 @@
 		this.make();
 		this.slides = this.slides;
 		this.slide_dict = {};
-		//this.show_welcome();
 		this.welcomed = true;
 		frappe.set_route(this.page_name, "0");
 	},
@@ -379,22 +379,6 @@
 			<div class="panel-body" style="padding: 40px;">%(html)s</div>\
 		</div>', {html:html}))
 	},
-	show_welcome: function() {
-		if(this.$welcome)
-			return;
-		var me = this;
-		this.$welcome = this.get_message(this.welcome_html +
-			'<br><p class="text-center"><button class="btn btn-primary">'+__("Start")+'</button></p>')
-			.appendTo(this.parent);
-
-		this.$welcome.find(".btn").click(function() {
-			me.$welcome.toggle(false);
-			me.welcomed = true;
-			frappe.set_route(me.page_name, "0");
-		})
-
-		this.current_slide = {"$wrapper": this.$welcome};
-	},
 	show_working: function() {
 		this.hide_current_slide();
 		frappe.set_route(this.page_name);
@@ -452,33 +436,8 @@
 			this.before_load(this);
 		}
 
-		this.$body = $(repl('<div class="panel panel-default">\
-			<div class="panel-heading">\
-				<div class="panel-title row">\
-					<div class="col-sm-12"><h3 style="margin: 0px;">\
-						<i class="%(icon)s text-muted"></i> %(title)s</h3></div>\
-				</div>\
-			</div>\
-			<div class="panel-body">\
-				<div class="progress">\
-					<div class="progress-bar" style="width: %(width)s%"></div>\
-				</div>\
-				<div class="row">\
-					<div class="col-sm-12">\
-						<p>%(help)s</p><br>\
-						<div class="form"></div>\
-					</div>\
-				</div>\
-				<hr>\
-				<div class="footer">\
-					<div class="text-right"><a class="prev-btn hide btn btn-default">'+__('Previous')+'</a> \
-						<a class="next-btn hide btn btn-primary">'+__("Next")+'</a> \
-						<a class="complete-btn hide btn btn-primary"><b>'+__("Complete Setup")+'</b></a>\
-					</div>\
-				</div>\
-			</div>\
-		</div>', {help: __(this.help), title:__(this.title), main_title:__(this.wiz.title), step: this.id + 1,
-				width: (flt(this.id + 1) / (this.wiz.slides.length+1)) * 100, icon:this.icon}))
+		this.$body = $(frappe.render_template("setup_wizard_page",
+			{help: __(this.help), title:__(this.title), main_title:__(this.wiz.title), step: this.id + 1 }))
 			.appendTo(this.$wrapper);
 
 		this.body = this.$body.find(".form")[0];
@@ -530,5 +489,8 @@
 	},
 	get_input: function(fn) {
 		return this.form.get_input(fn);
+	},
+	get_field: function(fn) {
+		return this.form.get_field(fn);
 	}
 })
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard_page.html b/erpnext/setup/page/setup_wizard/setup_wizard_page.html
new file mode 100644
index 0000000..81a79a0
--- /dev/null
+++ b/erpnext/setup/page/setup_wizard/setup_wizard_page.html
@@ -0,0 +1,19 @@
+<div>
+    <h3>{%= title %}</h3>
+    <hr>
+	<div class="row">
+		<div class="col-sm-12">
+			<p class="text-muted">{%= help %}</p><br>
+			<div class="form"></div>
+		</div>
+	</div>
+	<br>
+	<div class="footer">
+		<div>
+            <a class="prev-btn hide btn btn-default btn-sm">{%= __("Previous") %}</a>
+			<a class="next-btn hide btn btn-primary btn-sm">{%= __("Next") %}</a>
+			<a class="complete-btn hide btn btn-primary btn-sm"><b>{%= __("Complete Setup") %}</b></a>
+		</div>
+	</div>
+    <br><br>
+</div>