function createBookmark() {
	if (window.external) window.external.AddFavorite(document.location, document.title); 
}
function validateSearch(isAdvanced) {
	var objSearchForm = document.forms["search"];
	var isValid = false;
	if (isAdvanced) {
		isValid = testAdvancedSearch(objSearchForm);
		if (isValid) 
			cleanUpAdvancedSearch(objSearchForm);
		else
			objSearchForm.elements["title"].focus();
	}
	else {
		isValid = testDefaultSearch(objSearchForm);
		if (isValid) 
			cleanUpDefaultSearch(objSearchForm);
		else
			objSearchForm.elements["q"].focus();
	}
	return isValid;
}	
function testDefaultSearch(objSearchForm) {
	var test = trimString(objSearchForm.elements["q"].value);
	if (test.length > 0 && test != "In English...") 
		return true;
	else if (objSearchForm.elements["category"].value.length > 0) 
		return true;
	else if (objSearchForm.elements["medium"].value.length > 0)
		return true;
	else if (objSearchForm.elements["price"].value.length > 0)
		return true;
	else
		return false;
}
function testAdvancedSearch(objSearchForm) {
	var test = trimString(objSearchForm.elements["title"].value);
	if (test.length > 0) 
		return true;
	else if (objSearchForm.elements["category"].value.length > 0) 
		return true;
	else if (objSearchForm.elements["subject"].value.length > 0)
		return true;
	else if (objSearchForm.elements["orientation"].value.length > 0)
		return true;
	else if (testCheckBoxArray(objSearchForm.elements["medium"]))
		return true;
	else if (testCheckBoxArray(objSearchForm.elements["period"]))
		return true;
	else if (testCheckBoxArray(objSearchForm.elements["price"]))
		return true;
	else
		return false;
}
function searchReset() {
	var objSearchForm = document.forms["search"];
	for (var i=0; i < objSearchForm.elements.length; i++) {
		if (objSearchForm.elements[i].type == "text")
			objSearchForm.elements[i].value = "";
		else if (objSearchForm.elements[i].type == "select-one")
			objSearchForm.elements[i].value = "";
		else if (objSearchForm.elements[i].type == "checkbox");
			objSearchForm.elements[i].checked = false;
	}
	if (objSearchForm.elements["q"])
		objSearchForm.elements["q"].focus();
	else if (objSearchForm.elements["title"])
		objSearchForm.elements["title"].focus();
	return false;
}
function cleanUpDefaultSearch(objSearchForm) {
	var test = trimString(objSearchForm.elements["q"].value);
	objSearchForm.elements["q"].value = test == "In English..." ? "" : test;
}
function cleanUpAdvancedSearch(objSearchForm) {
	objSearchForm.elements["title"].value = trimString(objSearchForm.elements["title"].value);
}
function cleanUpDropdown(objDropdown) {
	if (objDropdown.value.length == 0) objDropdown.value = null;
}
function testCheckBoxArray(objArray) {
	for (var i=0; i < objArray.length; i++) {
		if (objArray[i].checked) return true;
	}
	return false;
}
function trimString(str) {
	return str.replace(/^\s+/g,'').replace(/\s+$/g,'');
}
function getQuery() {
	var query = window.location.search.substring(1);
	var parms = query.split('&'); 
	for (var i=0; i < parms.length; i++) {
		var pos = parms[i].indexOf('='); 
		if (pos > 0) {
			var key = parms[i].substring(0,pos); 
			if (key == "q" || key == "title") {
				return parms[i].substring(pos+1); 
			}
		}
	}
	return null;
} 
function markText() {
	var query = getQuery();
	if (query) {
		query = Url.decode(query);
		var regex = new RegExp(">([^<]*)?("+query+")([^>]*)?<","ig");
		var objDiv = document.getElementById("layerMark");
		if (objDiv && objDiv.innerHTML) {
			objDiv.innerHTML = objDiv.innerHTML.replace(regex,'>$1<span class="mark">$2</span>$3<');
		}
	}
}
var Url = {
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
	decode : function (string) {
		var lsRegExp = /\+/g;
		return this._utf8_decode(unescape(string.replace(lsRegExp, " ")));
	},
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
		}
		return utftext;
	},
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while ( i < utftext.length ) {
			c = utftext.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}
}
