var gBrowser = {
	ua: navigator.userAgent,
	isIE6x: function () {
		return this.ua.match(/MSIE 6\./) !== null;
	},
	isIE: function () {
		return this.ua.match(/MSIE/) !== null;
	}
};
var gDefaultSites = [
	{ site: "gmail.com;google.com", icon: "/images/favicon/gmail.gif" },
	{ site: "yahoo.com", icon: "/images/favicon/yahoo.gif" },
	{ site: "aol.com", icon: "/images/favicon/aol.gif" },
	{ site: "hotmail.com;msn.com;live.com", icon: "/images/favicon/hotmail.gif" },
	{ site: "cnn.com", icon: "/images/favicon/cnn.gif" },
	{ site: "comcast.net", icon: "/images/favicon/comcast.gif" },
	{ site: "facebook.com", icon: "/images/favicon/facebook.gif" },
	{ site: "myspace.com", icon: "/images/favicon/myspace.gif" }
];
var gCustomSites = [];
var gLoaded = false;

window.onload = function () {
	gLoaded = true;
};

window.onscroll = window.onresize = function () {
	if (gLoaded && gBrowser.isIE6x()) {
		fnFixFooterCoords();
	}
};

function fnFixFooterCoords () {
	var _ft = document.getElementById("footer");
	_ft.style.top = ((document.documentElement.clientHeight + document.documentElement.scrollTop) - _ft.offsetHeight) + "px";
	_ft.style.left = ((document.documentElement.clientWidth - _ft.offsetWidth) / 2) + "px";
}

function fnCustomSites_Initialize () {
	if (fnReadCookie("footersites") == null) {
		var _fs = [];
		var _li = document.getElementById("footer-links").getElementsByTagName("li");
		for ( var _i = 0; _i < _li.length; _i++ ) {
			var _cs = {
				name: _li[_i].getElementsByTagName("a")[0].innerHTML,
				url: _li[_i].getElementsByTagName("a")[0].getAttribute("href"),
				image: _li[_i].getElementsByTagName("img")[0].getAttribute("src")
			};
			_fs.push(_cs);
		}
		fnCreateCookie("footersites", escape(JSON.encode(_fs)), 3660, false);
		gCustomSites = _fs;
	} else {
		var _fs = unescape(fnReadCookie("footersites"));
		gCustomSites = JSON.decode(_fs);
		fnCustomSites_RestoreIcons();
	}
}

function fnCustomSites_WriteInputs () {
	var _html = "";
	for ( var _i = 1; _i <= 12; _i++ ) {
		var _name = "";
		var _url  = "";
		if (typeof gCustomSites[_i - 1] != "undefined") {
			_name = gCustomSites[_i - 1].name;
			_url  = gCustomSites[_i - 1].url;
		}
		_html = "<p class=\"link-input" + (_i == 1 ? " link-input-first" : "") + "\">"
		+ "<span class=\"id\" id=\"link-input-id-" + _i + "\">" + _i + "</span>"
		+ "<input type=\"text\" class=\"txt txt-name\" name=\"link-input-name-" + _i + "\" id=\"link-input-name-" + _i + "\" value=\"" + _name + "\" maxlength=\"13\" />"
		+ "<input type=\"text\" class=\"txt txt-url\" name=\"link-input-url-" + _i + "\" id=\"link-input-url-" + _i + "\" value=\"" + _url + "\" />"
		+ "<span class=\"error\" id=\"link-input-error-" + _i + "\">&nbsp;</span>"
		+ "</p>";
		document.write(_html);
	}
}

function fnCustomSites_ShowPopup () {
	var _fc = document.getElementById("link-customize");
	var _lp = document.getElementById("link-customize-popup");
	var _fo = fnGetAbsolutePosition(_fc);
	_fc.className = "link-customize-open";
	_lp.style.display = "block";
	_lp.style.top = (_fo.top - _lp.clientHeight + 13 + (gBrowser.isIE6x() ? 4 : 0)) + "px";
	_lp.style.left = (_fo.left + 67) + "px";
	fnCustomSites_RestorePopup();
}

function fnCustomSites_HidePopup () {
	var _fc = document.getElementById("link-customize");
	var _lp = document.getElementById("link-customize-popup");
	try {
		_fc.className = "";
		_lp.style.display = "none";
	} catch ( _e ) {
	}
}

function fnCustomSites_RestorePopup () {
	var _cp = document.getElementById("link-customize-popup");
	var _cb = document.getElementById("link-customize-cancel");
	var _sb = document.getElementById("link-customize-save");
	_cp.className = "";
	_cb.disabled = false;
	_sb.disabled = false;
	_sb.value = "Save Changes";
	for ( var _i = 1; _i <= 12; _i++ ) {
		var _id   = document.getElementById("link-input-id-" + _i);
		var _err  = document.getElementById("link-input-error-" + _i);
		var _name = document.getElementById("link-input-name-" + _i);
		var _url  = document.getElementById("link-input-url-" + _i);
		var _hsl  = typeof gCustomSites[_i - 1] != "undefined";
		_id.className = "id";
		_err.innerHTML = "";
		_name.value = _hsl ? gCustomSites[_i - 1].name : "";
		_url.value = _hsl ? gCustomSites[_i - 1].url : "";
	}
}

function fnCustomSites_SubmitPopup () {
	var _i, _ti;
	var _id, _name, _url, _err;
	var _ge = false;
	// arrange the values
	for ( _i = 1; _i <= 12; _i++ ) {
		_name = document.getElementById("link-input-name-" + _i);
		_url = document.getElementById("link-input-url-" + _i);
		_name.value = _name.value.trim();
		_url.value = _url.value.trim();
		if (_name.value != "" || _url.value != "") {
			_ti = 1;
			while (_ti < _i) {
				var _tname = document.getElementById("link-input-name-" + _ti);
				var _turl  = document.getElementById("link-input-url-" + _ti);
				if (_tname.value.trim() == "" && _turl.value.trim() == "") {
					_tname.value = _name.value;
					_turl.value = _url.value;
					_name.value = "";
					_url.value = "";
					_ti = _i;
				}
				_ti++;
			}
		}
	}
	var _cb = document.getElementById("link-customize-cancel");
	var _sb = document.getElementById("link-customize-save");
	var _cp = document.getElementById("link-customize-popup");
	_cp.className = "";
	// check if form has values
	for ( _i = 1; _i <= 12; _i++ ) {
		_id = document.getElementById("link-input-id-" + _i);
		_name = document.getElementById("link-input-name-" + _i);
		_url = document.getElementById("link-input-url-" + _i);
		_err = document.getElementById("link-input-error-" + _i);
		_erb = false;
		_name.value = _name.value.trim();
		_url.value = _url.value.trim();
		_id.className = "id";
		_err.innerHTML = "";
		if (_name.value != "" || _url.value != "") {
			if (_name.value == "") {
				_err.innerHTML = "Missing Name";
				_erb = true;
			}
			if (_url.value != "" && _url.value.substr(0, 7) != "http://" && _url.value.substr(0, 8) != "https://") {
				_url.value = "http://" + _url.value;
			}
			var _re = new RegExp("^(https?://)?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!~*'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$");
			if (_url.value == "" || _re.test(_url.value) == false) {
				_err.innerHTML = "Invalid URL";
				_erb = true;
			}
			if (_erb) {
				_id.className += " id-error";
				_cp.className  = "haserrors";
				_ge = true;
			}
		}
	}
	if (!_ge) {
		_sb.value = "Saving...";
		_sb.disabled = true;
		_cb.disabled = true;
		fnCustomSites_Save();
	}
}

function fnCustomSites_Save () {
	var _fs = [];
	for ( _i = 1; _i <= 12; _i++ ) {
		_name = document.getElementById("link-input-name-" + _i);
		_url = document.getElementById("link-input-url-" + _i);
		if (_name.value != "" && _url.value != "") {
			_fs.push({
				name: _name.value,
				url: _url.value
			});
		}
	}
	fnCreateCookie("footersites", escape(JSON.encode(_fs)), 3660, false);
	gCustomSites = _fs;
	fnCustomSites_RestoreIcons();
}

function fnCustomSites_RestoreIcons () {
	// create new custom sites list
	var _li, _img, _a, _sn, _isdefaultsite, _curl;
	var _fl = document.getElementById("footer-links");
	var _ul = document.createElement("ul");
	for ( var _i = 0; _i < gCustomSites.length; _i++ ) {
		_isdefaultsite = false;
		_li  = document.createElement("li");
		_a = document.createElement("a");
		_img = document.createElement("img");
		_img.width = 16;
		_img.height = 16;
		_img.alt = gCustomSites[_i].name;
		// look for icons
		for ( var _j = 0; _j < gDefaultSites.length; _j++ ) {
			var _sites = gDefaultSites[_j].site.split(";");
			if (_sites.length == 1) {
				var _re = new RegExp("http(s)?://([^\.]+\.)?" + gDefaultSites[_j].site);
				if (_re.test(gCustomSites[_i].url)) {
					_img.src = gDefaultSites[_j].icon;
					_isdefaultsite = true;
					break;
				}
			} else {
				for ( var _k = 0; _k < _sites.length; _k++ ) {
					var _re = new RegExp("http(s)?://([^\.]+\.)?" + _sites[_k]);
					if (_re.test(gCustomSites[_i].url)) {
						_img.src = gDefaultSites[_j].icon;
						_isdefaultsite = true;
						break;
					}
				}
			}			
		}
		if (!_isdefaultsite) {
			_img.src = gBrowser.isIE() ? "/images/favicon/default.gif" : gCustomSites[_i].url + (gCustomSites[_i].url.substr(gCustomSites[_i].url.length - 1) != "/" ? "/" : "") + "favicon.ico";
			if (!gBrowser.isIE()) {
				_img.onerror = function () {
					this.src = "/images/favicon/default.gif";
				};
			}
		}
		_li.appendChild(_img);
		// create link
		_a.href = gCustomSites[_i].url;
		_a.innerHTML = gCustomSites[_i].name.length > 13 ? gCustomSites[_i].name.substr(0, 13) + "..." : gCustomSites[_i].name;
		_li.appendChild(_a);
		// append to list
		_ul.appendChild(_li);
	}
	// erase custom sites
	_fl.innerHTML = "";
	_fl.appendChild(_ul);
	// hide popup
	fnCustomSites_HidePopup();
}