fixes for unicode
diff --git a/erpnext/setup/doctype/email_settings/email_settings.py b/erpnext/setup/doctype/email_settings/email_settings.py
index 88a1900..ed8134a 100644
--- a/erpnext/setup/doctype/email_settings/email_settings.py
+++ b/erpnext/setup/doctype/email_settings/email_settings.py
@@ -37,20 +37,20 @@
 			Checks incoming email settings
 		"""
 		if self.doc.outgoing_mail_server:
-			from webnotes.utils import cint
+			from webnotes.utils import cint, get_encoded_string
 			import _socket
 			from webnotes.utils.email_lib.send import EMail
 			import smtplib
 			out_email = EMail()
-			out_email.server = self.doc.outgoing_mail_server.encode('utf-8')
+			out_email.server = get_encoded_string(self.doc.outgoing_mail_server)
 			out_email.port = cint(self.doc.mail_port)
 			out_email.use_ssl = self.doc.use_ssl
 			try:
 				err_msg = "Login Id or Mail Password missing. Please enter and try again."
 				if not (self.doc.mail_login and self.doc.mail_password):
 					raise AttributeError, err_msg
-				out_email.login = self.doc.mail_login.encode('utf-8')
-				out_email.password =  self.doc.mail_password.encode('utf-8')
+				out_email.login = get_encoded_string(self.doc.mail_login)
+				out_email.password =  get_encoded_string(self.doc.mail_password)
 			except AttributeError, e:
 				webnotes.msgprint(err_msg)
 				raise e
@@ -72,15 +72,17 @@
 			from webnotes.utils.email_lib.receive import POP3Mailbox
 			from webnotes.model.doc import Document
 			import _socket, poplib
+			from webnotes.utils import get_encoded_string
+			
 			inc_email = Document('Incoming Email Settings')
-			inc_email.host = self.doc.support_host.encode('utf-8')
+			inc_email.host = get_encoded_string(self.doc.support_host)
 			inc_email.use_ssl = self.doc.support_use_ssl
 			try:
 				err_msg = 'User Name or Support Password missing. Please enter and try again.'
 				if not (self.doc.support_username and self.doc.support_password):
 					raise AttributeError, err_msg
-				inc_email.username = self.doc.support_username.encode('utf-8')
-				inc_email.password = self.doc.support_password.encode('utf-8')
+				inc_email.username = get_encoded_string(self.doc.support_username)
+				inc_email.password = get_encoded_string(self.doc.support_password)
 			except AttributeError, e:
 				webnotes.msgprint(err_msg)
 				raise e
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 572a790..0a255d1 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -35,8 +35,8 @@
 
 cur_frm.cscript.hide_website_fields = function(doc) {
 	var website_fields_list = ['page_name', 'website_image', 'web_short_description',
-								'web_long_description']
-	if (cint(doc.show_in_website)) {
+								'web_long_description'];
+	if (doc && cint(doc.show_in_website)) {
 		unhide_field(website_fields_list);
 	} else {
 		hide_field(website_fields_list);
diff --git a/public/js/all-app.js b/public/js/all-app.js
index 817bef8..6be9a41 100644
--- a/public/js/all-app.js
+++ b/public/js/all-app.js
@@ -1844,7 +1844,7 @@
 this.copy_doc(fn,1);}
 _f.get_value=function(dt,dn,fn){if(locals[dt]&&locals[dt][dn])
 return locals[dt][dn][fn];}
-_f.Frm.prototype.set_value_in_locals=function(dt,dn,fn,v){var d=locals[dt][dn];var changed=d[fn]!=v;if(changed&&(d[fn]==null||v==null)&&(cstr(d[fn])==cstr(v)))
+_f.Frm.prototype.set_value_in_locals=function(dt,dn,fn,v){var d=locals[dt][dn];if(!d)return;var changed=d[fn]!=v;if(changed&&(d[fn]==null||v==null)&&(cstr(d[fn])==cstr(v)))
 changed=false;if(changed){d[fn]=v;if(d.parenttype)
 d.__unsaved=1;this.set_unsaved();}}
 _f.Frm.prototype.set_unsaved=function(){if(cur_frm.doc.__unsaved)return;cur_frm.doc.__unsaved=1;cur_frm.frm_head.refresh_labels()}
diff --git a/public/server.py b/public/server.py
index 2b5e238..497346c 100755
--- a/public/server.py
+++ b/public/server.py
@@ -39,12 +39,14 @@
 import webnotes.handler
 import webnotes.auth
 
+from webnotes.utils import cstr
+
 def init():
 	# make the form_dict
 	webnotes.form = cgi.FieldStorage(keep_blank_values=True)
 	for key in webnotes.form.keys():
-		webnotes.form_dict[key] = webnotes.form.getvalue(key)
-
+		webnotes.form_dict[key] = cstr(webnotes.form.getvalue(key))
+	
 	# init request
 	try:
 		webnotes.http_request = webnotes.auth.HTTPRequest()
diff --git a/public/web.py b/public/web.py
index ed0441f..4696ebe 100755
--- a/public/web.py
+++ b/public/web.py
@@ -41,6 +41,7 @@
 
 def respond():
 	import webnotes
+	from webnotes.utils import get_encoded_string
 	try:
 		if 'page' in webnotes.form_dict:
 			html = get_html(webnotes.form_dict['page'])
@@ -52,7 +53,7 @@
 
 	print "Content-Type: text/html"
 	print
-	print html.encode('utf-8')
+	print get_encoded_string(html)
 
 def get_html(page_name):
 	import website.utils