/* We keep updating our web mail client*/
var j2sBuildDate = "20100714";
var j2sRelative = "2.0.1-v" + j2sBuildDate;
var zimRelative = "wm-v20101217";
var widgetRelative = "wz-v20100714";

window["j2s.update.delta"] = [
	/*
        "wm-v20101104", "wm-v20101107", "im/webuzz/mail/GmailWindow.js",
        "wm-v20101104", "wm-v20101126", "im/webuzz/mail/MailComposer.js",
        "$", "$", "im/webuzz/mail/MessageViewer.js",
        "$", "$", "im/webuzz/mail/components.z.js",
	//*/
	/*
        "wz-v20100714", "wz-v20101119", "im/webuzz/balance/BuzzAccessibility.js",
        "$", "$", "im/webuzz/kaixinmeme/widget/WeBrowseWidget.js",
        "$", "$", "im/webuzz/widgets.z.js",
	//*/
        "wz-v20100714", "wz-v20110116", "im/webuzz/balance/BuzzAccessibility.js",
        "$", "$", "im/webuzz/balance/ServiceAccessible.js",
        "$", "$", "im/webuzz/kaixinmeme/widget/WeBrowseWidget.js",
        "$", "$", "im/webuzz/review/ProductReviewWidget.js",
        "$", "$", "im/webuzz/space/SpaceUtility.js",
        "$", "$", "im/webuzz/widgets.z.js",
        "2.0.1-v20100714", "2.0.1-v20101116", "java/lang/ClassLoader.js",
        "$", "$", "java/lang/String.js",
        "$", "$", "java/core.z.js",
        "$", "$", "net/sf/j2s/ajax/HttpRequest.js",
        "$", "$", "net/sf/j2s/ajax/SimplePipeRequest.js",
        "$", "$", "net/sf/j2s/ajax/SimpleSerializable.js",
        "$", "$", "net/sf/j2s/store/SimpleStore.js",
        "$", "$", "org/eclipse/swt/widgets/Combo.js",
        "$", "$", "org/eclipse/swt/widgets/Label.js",
        "$", "$", "org/eclipse/swt/widgets/more.z.js",
        "$", "$", "org/eclipse/swt/package.js",
	"2.0.1-v20100714", "2.0.1-v20110920", "j2slib.src.z.js",
	"$", "$", "j2slib.swt.z.js",
	"$", "$", "j2slib.z.js",
	"$", "$", "j2slibcore.z.js"
];

window["j2s.known.xss.domains"] = [
	"lemondove.com"
];
//window["j2s.xss.cookie.url"] = "http://c." + host + "/xss-cookie.html";

// remove Google Analytics' subdomain cookies
(function () {
	try {
		var domain = document.domain;
		var expired = new Date ();
		expired.setTime (expired.getTime () - 3600000);
		var keys = ["a", "b", "c", "z"];
		for (var i = 0; i < keys.length; i++) {
			document.cookie = "__utm" + keys[i] + "=; expires=" + expired.toGMTString () + "; path=/; domain=." + domain;
		}
	} catch (e) {
	}
}) ();

window["swt.desktop.vscrollbar"] = true;

function markScriptLoadingError (src) {
	var o = window["j2s.lib"];
	if (o.sites != null && o.errors != null) {
		for (var i = 0; i < o.sites.length; i++) {
			if (o.sites[i].length > 0 && src.indexOf (o.sites[i]) == 0) {
				o.errors[i] = true;
				break;
			}
		}
	}
}

function generateScriptErrorCallback () {
	return function () {
		markScriptLoadingError (this.src);
	};
}
function generateScriptCallback () {
	return function () {
		var s = this.readyState;
		if (s == null || s == "loaded" || s == "complete") {
			if (window["ClazzLoader"] != null) {
				window["j2s.lib"].onload (this);
			} else {
				markScriptLoadingError (this.src);
			}
			this.onreadystatechange = null;
			this.onload = null;
		}
	};
}

function loadJ2SLibZJS (path, cb) {
	var sxr = document.createElement ("SCRIPT");
	var deltas = window["j2s.update.delta"];
	if (deltas != null && deltas instanceof Array && deltas.length >= 3) {
		var lastOldVersion = null;
		var lastNewVersion = null;
		for (var i = 0; i < deltas.length / 3; i++) {
			var oldVersion = deltas[i + i + i];
			if (oldVersion != "$") {
				lastOldVersion = oldVersion;
			}
			var newVersion = deltas[i + i + i + 1];
			if (newVersion != "$") {
				lastNewVersion = newVersion;
			}
			var relativePath = deltas[i + i + i + 2];
			var key = lastOldVersion + "/" + relativePath;
			var idx = path.indexOf (key);
			if (idx != -1 && idx == path.length - key.length) {
				path = path.substring (0, idx) + lastNewVersion + "/" + relativePath;
				break;
			}
		}
	}
	sxr.src = path;
	sxr.type = "text/javascript";
	if (cb) {
		var t = "onreadystatechange";
		var xhrCallback = generateScriptCallback ();
		if (typeof sxr[t] == "undefined") {
			sxr.onload = xhrCallback;
			sxr.onerror = generateScriptErrorCallback ();
		} else {
			sxr[t] = xhrCallback;
		}
	}
	document.getElementsByTagName ("HEAD")[0].appendChild (sxr);
}

function loadJ2SApp (forced) {
	// Some visitors use sneakypass to use webuzz.im services. 
	// We just make some change so it will get a much better user
	// experience. We have NO business relationship with sneakypass.
	var host = null;
	try {
		host = window.location.host;
	} catch (e) {
	}
	if (host != null) {
		var isSneakyPass = host.indexOf ("sneakypass") != -1;
		if (isSneakyPass && forced != true) {
			custom_handler = function () {
				loadJ2SApp (true);
			};
			return;
		}
	}
	var o = window["j2s.lib"];
	if (o.loaded) {
		return;
	}
	var checkingInterval = 2000;
	var site = null;
	var prevSite = null;
	var loadFromAnotherSite = false;
	if (o.sites == null || o.sites.length == 0) {
		site = "http://archive.java2script.org/"; // should never reach here!
	} else {
		if (o.index > 0) {
			prevSite = o.sites[o.index - 1];
		}
		site = o.sites[o.index];
		loadFromAnotherSite = true;
	}
	var j2sLibSuffix = "/j2slib.swt.z.js";
	if (prevSite != null && prevSite.length > 0 && !o.errors[o.index - 1]) {
		if (navigator.userAgent.toLowerCase ().indexOf ("opera") != -1) {
			var scripts = document.getElementsByTagName ("SCRIPT");
			if (scripts != null && scripts.length > 0) {
				for (var i = 0; i < scripts.length; i++) {
					var s = scripts[i];
					if (s.src != null && s.src.length > 0 && s.src.indexOf (prevSite) == 0
							&& s.src.indexOf (j2sLibSuffix) == s.src.length - j2sLibSuffix.length) {
						if (s.readyState == "loaded" || s.readyState == "complete") {
							o.errors[o.index - 1] = true; // if successfully loaded, o.errors will be ignored
							checkingInterval = 1000;
						}
						break;
					}
				}
			}
		}
		window.setTimeout (loadJ2SApp, checkingInterval); // Not loaded yet
		return;
	}
	if (o.sites != null && o.sites.length > 0 && o.index >= o.sites.length) {
		alert ("Failed to load Java2Script core libraries from given "
				+ o.sites.length + " sites : " + o.sites + " !\r\n"
				+ "Please check your network!");
		return;
	}
	if (loadFromAnotherSite) {
		if (o.errors == null) {
			o.errors = [];
		}
		o.errors[o.index] = false;
		o.index++;
	}
	loadJ2SLibZJS(site + (o.alias ? o.alias : o.version) + j2sLibSuffix, o.onload);
	window.setTimeout (loadJ2SApp, checkingInterval); // Not loaded, try again with another site
}


function initJ2SDesktop () {
	if (document.body != null) {
		loadJ2SApp();
	} else {
		/* for Mozilla */
		if (document.addEventListener) {
			document.addEventListener ("DOMContentLoaded", loadDesktop, false);
		} else if (/WebKit/i.test (navigator.userAgent)) { // sniff
			var _timer = window.setInterval (function () {
				if (/loaded|complete/.test (document.readyState)) {
					window.clearInterval (_timer);
					loadDesktop (); // call the onload handler
				}
			}, 10);
		} else {
// for Internet Explorer (using conditional comments)
/*@cc_on @*/
/*@if (@_win32)
document.write ("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById ("__ie_onload");
script.onreadystatechange = function () {
	if (this.readyState == "complete") {
		loadDesktop (); // call the onload handler
	}
};
/*@end @*/
		}
	}
}

window["j2s.object.native"] = true;
window["j2s.html5.store"] = true;

window["j2s.lib"] = {
	sites : [
			"http://a.woziger.com/",
			"http://archive.woziger.com/",
			"http://a.java2script.org/",
			"http://archive.java2script.org/"
		],
	index : 0,
	base : null,
	alias : j2sRelative, //"2.0.0-v20090310",
	version : "v" + j2sBuildDate, // "v20090310",
	/*forward : true,*/
	mode : "dailybuild",
	loaded : false,
	onload : function (script) {
		var o = window["j2s.lib"];
		if (o.loaded) {
			return;
		}
		o.loaded = true;
		var src = script.src;
		var loadingSite = "http://archive.java2script.org/";
		for (var i = 0; i < o.sites.length; i++) {
			if (src.indexOf (o.sites[i]) == 0) {
				loadingSite = o.sites[i];
				o.base = loadingSite;
				break;
			}
		}
		//var j2sRelative = (o.alias ? o.alias : o.version);
		ClazzLoader.packageClasspath ("java", loadingSite + j2sRelative, true);
		ClazzLoader.packageClasspath ("org.eclipse.swt", loadingSite + j2sRelative, true);

		window["j2s.css.single.site.classes"] = [ "im.webuzz.g.themes" ];

		ClazzLoader.packageClasspath ("im.webuzz.mail", loadingSite + zimRelative, true);
		ClazzLoader.packageClasspath (["uz", "im.webuzz.mail.model", "im.webuzz", "im.webuzz.g.prefs"], loadingSite + zimRelative);
		ClazzLoader.setPrimaryFolder (loadingSite + zimRelative);

		ClazzLoader.packageClasspath ([
				"com.swtdesigner",
				"im.webuzz.widget",
				"im.webuzz.balance",
				"im.webuzz.space",
				"im.webuzz.news",
				"im.webuzz.review",
				"im.webuzz.background",
				"im.webuzz.kaixinmeme.widget",
				"im.webuzz.languages",
				"im.webuzz.google"
		], loadingSite + widgetRelative);

		ClazzLoader.jarClasspath (loadingSite + widgetRelative + "/im/webuzz/widgets.z.js", [
    			"im.webuzz.widget.WidgetUtils",
    			"$.AbstractWidget",

    			"im.webuzz.balance.ServiceAccessible",
    			"$.BuzzAccessibility",

    			"im.webuzz.background.ReadBingBackground",
	    		"$.BingBackgroundWidget",

    			"im.webuzz.kaixinmeme.widget.RetrievePhotoPost",
    			"$.WeBrowseWidget",

    			"im.webuzz.news.ServicesLastestNews",
	    		"$.ServicesNewsWidget",

			"im.webuzz.review.ProductReviewWidget",

    			"im.webuzz.space.SpaceUtility",
    			"im.webuzz.google.chrome.Chrome4IEWidget",

    			"im.webuzz.languages.I18NSessionRequest",
			"$.I18NLoadingRequest",
       			"$.I18NTranslatingRequest",
			"$.I18NUpdatingRequest",
       			"$.I18NNode",
       			"$.I18NUtils",
       			"$.LanguagesWidget",
       			"$.I18NEditorWidget",

    			"com.swtdesigner.SWTResourceManager"
		]);

		ClazzLoader.loadClass ("org.eclipse.swt.widgets.Display", function () {
			if (O$.isIE) {
				window["swt.disable.shadow"] = true; // improve IE performance
			}

			window.defaultWindowLeft = "200";
			window.defaultWindowTop = "28";

			ClazzLoader.loadClass ("im.webuzz.mail.GLoginWindow", function () {

				net.sf.j2s.store.SimpleStore.getDefault ().execute ({
					run : function () {
						var store = net.sf.j2s.store.SimpleStore.getDefault ();
						var host = null;
						try {
							host = window.location.host;
						} catch (e) {
						}
						var v = store.getProperty ("wbzz.lang");
						if (v != null && v.length > 0) {
							window["webuzz.lang"] = v;
							var updateCB = window["webuzz.language.updatecb"];
							if (updateCB != null) {
								try {
									updateCB (v);
								} catch (e) {
								}
							}
						}

						window.setTimeout (function () {
							im.webuzz.mail.GLoginWindow.main([]);
							org.eclipse.swt.widgets.Display.getDefault().trayCorner.toggleAutoHide();
						}, 1000);
						ClazzLoader.loadClass ("im.webuzz.mail.GmailWindow");
					}
				}); // end of SimpleStore

				/*
				ClazzLoader.loadClass ("im.webuzz.space.SpaceUtility", function () {
					window.setTimeout (function () {
						im.webuzz.space.SpaceUtility.checkSpace ();
					}, 500);
				});
				//*/
			}); // end of MainWindow

			ClazzLoader.loadClass ("im.webuzz.balance.BuzzAccessibility", function () {
				im.webuzz.balance.BuzzAccessibility.setAccessibleOKCallback ({
					run : function () {
						im.webuzz.balance.BuzzAccessibility.setAccessibleOKCallback (null);
						var server = im.webuzz.balance.BuzzAccessibility.getServiceServer ();
						net.sf.j2s.store.SimpleStore.getDefault ().setProperty ("wbzz.last.server", server);

						/*
						ClazzLoader.loadClass ("im.webuzz.news.ServicesNewsWidget", function () {
							new im.webuzz.news.ServicesNewsWidget (im.webuzz.balance.BuzzAccessibility.getServiceServer () + "news/simplerpc").start ();
						});
						ClazzLoader.loadClass ("im.webuzz.kaixinmeme.widget.WeBrowseWidget", function () {
							window.setTimeout (function () {
								new im.webuzz.kaixinmeme.widget.WeBrowseWidget ().start ();
							}, 3000 + Math.round (Math.random () * 3000));
						});
						//*/
					}
				});
				ClazzLoader.loadClass ("net.sf.j2s.store.SimpleStore", function () {
					net.sf.j2s.store.SimpleStore.getDefault ().execute ({
						run: function () {
							var store = net.sf.j2s.store.SimpleStore.getDefault ();
							var server = store.getProperty ("wbzz.last.server");
							if (server != null && server.length > 0
									&& server.indexOf ("z1.") == -1
									&& server.indexOf ("z2.") == -1
									&& server.indexOf ("z5.") == -1
									&& server.indexOf ("72.167.41.164") == -1
									&& server.indexOf ("72.167.44.7") == -1) {
								window["webuzz.im.last.server"] = server;
							}
							im.webuzz.balance.BuzzAccessibility.test ("u/c");
						}
					});
				});
			});

			if (document.getElementById ("plus-one-button") == null) {
				var plusOneButton = document.createElement ("DIV");
				plusOneButton.id = "plus-one-button";
				var toolPanel = document.getElementById ("tool-panel");
				if (toolPanel == null) {
					toolPanel = document.body;
				}
				toolPanel.insertBefore (plusOneButton, toolPanel.childNodes[0]);

				plusOneButton.innerHTML = '<g:plusone size="medium"></g:plusone>';
				var plusOneScript = document.createElement ("SCRIPT");
				plusOneScript.src = "http://apis.google.com/js/plusone.js";
				plusOneScript.type = "text/javascript";
				document.getElementsByTagName ("HEAD")[0].appendChild (plusOneScript);
			}

			if (document.getElementById ("fb-like-button") == null) {
				var fbLikeButton = document.createElement ("DIV");
				fbLikeButton.id = "fb-like-button";
				//fbLikeButton.style.position = "absolute";
				//fbLikeButton.style.left = "130px";
				//fbLikeButton.style.top = "18px";
				fbLikeButton.style.fontSize = "0";
				//document.body.appendChild (fbLikeButton);
				var toolPanel = document.getElementById ("tool-panel");
				if (toolPanel == null) {
					toolPanel = document.body;
				}
				toolPanel.insertBefore (fbLikeButton, toolPanel.childNodes[0]);
				fbLikeButton.innerHTML = '<iframe src="http://www.facebook.com/widgets/like.php?href=http://lemondove.com/&amp;layout=button_count&amp;show_faces=false" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:115px; height:21px;" allowTransparency="true"></iframe>';
 			}
			if (document.getElementById ("twitter-button") == null) {
				var twitterButton = document.createElement ("DIV");
				twitterButton.id = "twitter-button";
				//twitterButton.style.position = "absolute";
				//twitterButton.style.left = "8px";
				//twitterButton.style.top = "18px";
				twitterButton.style.fontSize = "0";
				//document.body.appendChild (twitterButton);
				var toolPanel = document.getElementById ("tool-panel");
				if (toolPanel == null) {
					toolPanel = document.body;
				}
				toolPanel.insertBefore (twitterButton, toolPanel.childNodes[0]);
				twitterButton.innerHTML = '<iframe frameborder="0" scrolling="no" class="twitter-share-button twitter-count-horizontal" tabindex="0" allowtransparency="true" src="http://platform0.twitter.com/widgets/tweet_button.html?count=horizontal&amp;lang=en&amp;text=Your%20favoriate%20Email%20being%20blocked%20in%20office%20or%20school%3F%20Try%20Lemon%20Dove%20web%20mail%20client.&amp;url=http%3A%2F%2Flemondove.com%2F&amp;via=Lemon_Dove" style="width: 110px; height: 20px; vertical-align: bottom;" title="Twitter For Websites: Tweet Button"></iframe>';
 			}
		});
	}
};

function adjustJ2SLibSites () { // if possible, use similar domains for j2slib loading
	var sites = window["j2s.lib"].sites;
	var host = null;
	try {
		host = window.location.host.toLowerCase ();
	} catch (e) {
	}
	if (host != null && host.length > 0) {
		var segments = host.split (/\./);
		if (segments.length >= 2) {
			var domain = segments[segments.length - 2] + "." + segments[segments.length - 1];
			var keyPart = "." + domain + "/";
			for (var i = 0; i < sites.length; i++) {
				if (sites[i].indexOf (keyPart) != -1) {
					if (i != 0) {
						var tmp = sites[i];
						for (var j = i; j >= 1; j--) {
							sites[j] = sites[j - 1];
						}
						sites[0] = tmp;
					}
					break;
				}
			}
		}
	}
}

//adjustJ2SLibSites ();
initJ2SDesktop ();

(function () {
	if (window["webuzz.im.servers"] != null) {
		return;
	}
	var serverOrders = [4, 3];
	var domainOrders = window["j2s.known.xss.domains"];
	var servers = [];
	for (var i = 0; i < domainOrders.length; i++) {
		for (var j = 0; j < serverOrders.length; j++) {
			servers[servers.length] = "http://z" + serverOrders[j] + "." + domainOrders[i] + "/";
		}
	}
	window["webuzz.im.servers"] = servers;
}) ();


