var j2sBuildDate = "20100623";
var j2sRelative = "2.0.1-v" + j2sBuildDate;
var zimRelative = "wbzz-v20100623";
var widgetRelative = "wz-v20100623";

var host = null;
try {
	host = window.location.host;
} catch (e) {
}
if (host != null && host.indexOf ("www.") == 0) {
	host = host.substring (4).toLowerCase ();
}

var knownXSSCookieSites = [
	"webuzz.im",
	"java2script.net",
	"java2script.com",
	"java2script.org",
	"demo.java2script.org",
	"izuz.net",
	"uziz.nent",
	"kexmail.com",
	"kakoola.com",
	"webuzz.com"
];

for (var i = 0; i < knownXSSCookieSites.length; i++) {
	if (host == knownXSSCookieSites[i]) {
		window["j2s.xss.cookie.url"] = "http://c." + host + "/xss-cookie.html";
		break;
	}
}

function multipleSites (path) {
	var length = path.length;
	if ((length > 15 && path.substring (0, 15) == "http://archive.")
			|| (length > 9 && path.substring (0, 9) == "http://a.")) {
		var index = path.lastIndexOf ("/");
		if (index < length - 3) {
			var arr = ['a', 'e', 'i', 'o', 'u', 'y'];
			var c1 = path.charCodeAt (index + 1);
			var c2 = path.charCodeAt (index + 2);
			var idx = (length - index) * 3 + c1 * 5 + c2 * 7; // Hash
			return path.substring (0, 7) + arr[idx % 6] + path.substring (8);
		}
	}
	return path;
}

function generateScriptCallback () {
	return function () {
		var s = this.readyState;
		if (s == null || s == "loaded" || s == "complete") {
			if (window["ClazzLoader"] != null) {
				window["j2s.lib"].onload (this);
			}
			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;
		} 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 site = null;
	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;
	} else if (o.sites == null || o.sites.length == 0 || o.index >= o.sites.length) {
		site = "http://archive.java2script.org/";
	} else {
		site = o.sites[o.index];
		o.index++;
	}
	loadJ2SLibZJS(site + (o.alias ? o.alias : o.version) + "/j2slib.z.js", o.onload);
	//loadJ2SLibZJS("../net.sf.j2s.lib/j2slib/j2slib.src.z.js", o.onload);
	window.setTimeout (loadJ2SApp, 3000); // Not loaded, try again with another site
};

window["j2s.lib"] = {
	sites : [
			"http://a.woziger.com/",
			"http://archive.woziger.com/",
			"http://a.webuzz.im/",
			"http://a.java2script.org/",
			"http://archive.java2script.org/",
			"http://a.java2script.net/",
			"http://a.java2script.com/",
			"http://a.kexmail.com/",
			"http://a.izuz.net/",
			"http://a.uziz.net/"//*/
		],
	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;
		//src = "http://a.webuzz.im/";
		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);
		ClazzLoader.setPrimaryFolder (loadingSite + j2sRelative);
		ClazzLoader.packageClasspath (["com.swtdesigner", "im.webuzz.widget", "im.webuzz.balance", "im.webuzz.space", "im.webuzz.news", "im.webuzz.background", "im.webuzz.kaixinmeme.widget", "im.webuzz.languages", "im.webuzz.google"], loadingSite + widgetRelative);
		ClazzLoader.jarClasspath (loadingSite + widgetRelative + "/widgets.z.js", [
				"im.webuzz.widget.WidgetUtils",
				"im.webuzz.widget.AbstractWidget",
				"im.webuzz.balance.ServiceAccessible",
				"im.webuzz.balance.BuzzAccessibility",
				"im.webuzz.background.ReadBingBackground",
		 		"im.webuzz.background.BingBackgroundWidget",
				"im.webuzz.kaixinmeme.widget.RetrievePhotoPost",
				"im.webuzz.kaixinmeme.widget.WeBrowseWidget",
				"im.webuzz.news.ServicesLastestNews",
		 		"im.webuzz.news.ServicesNewsWidget",
				"im.webuzz.space.SpaceUtility",
				"im.webuzz.google.chrome.Chrome4IEWidget",
				"im.webuzz.languages.I18NSessionRequest",
	 			"im.webuzz.languages.I18NLoadingRequest",
    				"im.webuzz.languages.I18NTranslatingRequest",
	   			"im.webuzz.languages.I18NUpdatingRequest",
	    			"im.webuzz.languages.I18NNode",
				"im.webuzz.languages.I18NUtils",
	       			"im.webuzz.languages.LanguagesWidget",
	       			"im.webuzz.languages.I18NEditorWidget",
				"com.swtdesigner.SWTResourceManager"
		]);


		ClazzLoader.loadClass ("org.eclipse.swt.widgets.Display", function () {
			$wt.widgets.Display.getDefault();

			ClazzLoader.loadClass ("im.webuzz.languages.I18NEditorWidget", function () {
				new im.webuzz.languages.I18NEditorWidget ().start ();
			});

		});
	}
};

{
	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) == sites[i].length - keyPart.length) {
					if (i != 0) {
						var tmp = sites[i];
						for (var j = i; j >= 1; j--) {
							sites[j] = sites[j - 1];
						}
						sites[0] = tmp;
					}
					break;
				}
			}
		}
	}
}

if (document.body != null) {
	loadJ2SApp ();
}

