function utf8(wide) {
	var c, s;
	var enc = "";
	var i = 0;
	while(i<wide.length) {
		c= wide.charCodeAt(i++);
		// handle UTF-16 surrogates
		if (c>=0xDC00 && c<0xE000) continue;
		if (c>=0xD800 && c<0xDC00) {
			if (i>=wide.length) continue;
			s= wide.charCodeAt(i++);
			if (s<0xDC00 || c>=0xDE00) continue;
			c= ((c-0xD800)<<10)+(s-0xDC00)+0x10000;
		}
		// output value
		if (c<0x80) enc += String.fromCharCode(c);
		else if (c<0x800) enc += String.fromCharCode(0xC0+(c>>6),0x80+(c&0x3F));
		else if (c<0x10000) enc += String.fromCharCode(0xE0+(c>>12),0x80+(c>>6&0x3F),0x80+(c&0x3F));
		else enc += String.fromCharCode(0xF0+(c>>18),0x80+(c>>12&0x3F),0x80+(c>>6&0x3F),0x80+(c&0x3F));
	}
	return enc;
}

var hexchars = "0123456789ABCDEF";

function toHex(n) {
	return hexchars.charAt(n>>4)+hexchars.charAt(n & 0xF);
}

var okURIchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";

function encodeURIComponentNew(s) {
	var s = utf8(s);
	var c;
	var enc = "";
	for (var i= 0; i<s.length; i++) {
		if (okURIchars.indexOf(s.charAt(i))==-1) {
			enc += "%"+toHex(s.charCodeAt(i));
		}
		else {
			enc += s.charAt(i);
		}
	}
	return enc;
}

function buildURL(fld) {
	if (fld == "") return false;
	var encodedField = "";
	var s = fld;
	if (typeof encodeURIComponent == "function") {
		// Use JavaScript built-in function
		// IE 5.5+ and Netscape 6+ and Mozilla
		encodedField = encodeURIComponent(s);
	}
	else {
		// Need to mimic the JavaScript version
		// Netscape 4 and IE 4 and IE 5.0
		encodedField = encodeURIComponentNew(s);
	}
	//alert ("New encoding: " + encodeURIComponentNew(fld) +
	//	 "\n           escape(): " + escape(fld));
	//return true;
	return encodedField;
}


function addBMRegistered(alertMsg,pageId,alertAddedRegisteredMsg) {
	var title;
	if (parent != null) {
		title = parent.document.title;
	} else {
		title = document.title;
	}
	if (pageId == '') {
		alert(alertMsg);
		return;
	}
	if (alertAddedRegisteredMsg != null && alertAddedRegisteredMsg != "") {
		alert(alertAddedRegisteredMsg);
	}
	var theURL = document.location + "&pageId=" + pageId + "&ACTION=BM_ADD&Cache=no&BM_TITLE=" + buildURL(title);
	document.location = theURL;
}

function addBMNonRegistered(alertMsg,alertAddedNonRegisteredMsg) {
	var title;
	if (parent != null) {
		title = parent.document.title;
	} else {
		title = document.title;
	}
	if (alertAddedNonRegisteredMsg != null && alertAddedNonRegisteredMsg != "") {
		alert(alertAddedNonRegisteredMsg);
	}
	if(document.all) {													
		window.external.AddFavorite(location.href,title);
	}												
}
