function urlEncode(parString) {
	var str = '';
	for(var i = 0; i < parString.length; ++i) {
		if(parString.charCodeAt(i) < 0x80) {
			str += String.fromCharCode(parString.charCodeAt(i));
		}
		else if (parString.charCodeAt(i) < 0x0800) {
			str += String.fromCharCode(parString.charCodeAt(i)>> 6 | 0xC0);
			str += String.fromCharCode(parString.charCodeAt(i) & 0x3F | 0x80);
		}
		else if (parString.charCodeAt(i) < 0x10000) {
			str += String.fromCharCode(parString.charCodeAt(i)>> 12 | 0xE0);
			str += String.fromCharCode(parString.charCodeAt(i)>> 6 & 0x3F | 0x80);
			str += String.fromCharCode(parString.charCodeAt(i) & 0x3F | 0x80);
		}
		else {
			str += String.fromCharCode(parString.charCodeAt(i)>> 18 | 0xF0);
			str += String.fromCharCode(parString.charCodeAt(i)>> 12 & 0x3F | 0x80);
			str += String.fromCharCode(parString.charCodeAt(i)>> 6 & 0x3F | 0x80);
			str += String.fromCharCode(parString.charCodeAt(i) & 0x3F | 0x80);
		}
	}
	return escape(str);
}

function getElement(name, doc) {
	if (typeof(doc) == 'undefined' || doc == null)
		doc = document;
	var elem = null;
	if (doc.getElementById) {
		elem = doc.getElementById(name);
	} else if (doc.all) {
		elem = doc.all[name];
	} else {
		eval('elem = doc.' + name);
	}
	return elem;
}

function getResourceText(name, params) {
	var text = gTexts[name];
	var re = new RegExp("\\$\\{([^\\}]+)\\}", "g");
	text = text.replace(re, function($0,$1) {
		if (params[$1])
		{
			return params[$1];
		}
		return "${"+$1+"}";
	});
	return text;
}

function getHtmlEditorContent(editor) {
	if (typeof(editor) == 'string')
		editor = xinha_editors[editor];
	if (typeof(editor) == 'undefined' || editor == null)
		return '';
	var content = jQuery.trim(editor.getEditorContent());
	if (content == '<br />' || content == '<br/>') content = '';
	else if (content == '<p><br /></p>' || content == '<p><br/></p>') content = '';
	else if (content == '<p></p>') content = '';
	return content;
}

function getValue(ctrl) {
	if (typeof(ctrl) == 'string') {
		var name = ctrl;
		ctrl = $('#' + name);
		if (ctrl == null || ctrl.length == 0) {
			ctrl = $('#ctrl_' + name + '_1');
			for(var i = 1; ctrl != null && ctrl.length > 0; ++i) {
				if (ctrl[0].checked) {
					return ctrl.val();
				}
				ctrl = $('#' + name + '_' + i);
			}
			return '';
		}
	}
	if (ctrl[0].type == 'checkbox') {
		return ctrl[0].checked ? '1' : '0';
	} else {
		return ctrl.val();
	}
}

function showErrors(errors) {
	var message = "Error: \n";
	for(var i = 0; i < errors.length; ++i) {
		message += "\n" + errors[i];
	}
	alert(message);
}

var uncategorizedId = 264;
var categoriesTree = [];
function loadCategoriesTrees(linkId) {
	if (typeof(linkId) == 'undefined' || linkId == null)
		linkId = 0;
	else if (typeof(linkId) == 'string')
		linkId = parseInt(linkId, 10);
	var stdimg = 'book.gif';
	for(var t = 0; t < categoriesTree.length; ++t) {
		var tree = new dhtmlXTreeObject(categoriesTree[t].container, '100%', '100%', 0);
		categoriesTree[t].tree = tree;
		tree.setImagePath(site.commonUrl + '/tools/tree/imgs/');
		tree.setStdImages(stdimg, stdimg, stdimg);
		tree.enableCheckBoxes(1);
		tree.enableDragAndDrop(0);
		var url = site.commonUrl + '/tools/tree/linksqltree/otp/treefromdbhi.php?pid=' + categoriesTree[t].id;
		if (typeof(categoriesTree[t].lang) != 'undefined')
			url += '&lang=' + categoriesTree[t].lang;
		if (site.advanced)
			url += '&prefix=' + site.shortName;
		if (linkId > 0)
			url += '&lid=' + linkId;
		tree.loadXML(url);
	}
}

function loadHomeCategoriesTree(linkId) {
	if (typeof(linkId) == 'undefined' || linkId == null)
		linkId = 0;
	else if (typeof(linkId) == 'string')
		linkId = parseInt(linkId, 10);
	var stdimg = 'book.gif';
	for(var t = 0; t < categoriesTree.length; ++t) {
		var tree = new dhtmlXTreeObject(categoriesTree[t].container, '100%', '100%', 0);
		categoriesTree[t].tree = tree;
		tree.setImagePath(site.commonUrl + '/tools/tree/imgs/categories/');
		tree.setStdImages(stdimg, stdimg, stdimg);
		tree.enableCheckBoxes(0);
		tree.enableDragAndDrop(0);
		tree.enableTreeLines(false);

		tree.setImageArrays("plus", "", "", "", "plus_ar.gif", "plus_ar.gif");
		tree.setImageArrays("minus", "", "", "", "minus_ar.gif", "minus_ar.gif");
		tree.setStdImages("folderClosed.gif", "folderOpen.gif", "folderClosed.gif");

		var url = site.commonUrl + '/tools/tree/linksqltree/otp/treefromdbhi.php?pid=' + categoriesTree[t].id;
		if (typeof(categoriesTree[t].lang) != 'undefined')
			url += '&lang=' + categoriesTree[t].lang;
		if (site.advanced)
			url += '&prefix=' + site.shortName;
		if (linkId > 0)
			url += '&lid=' + linkId;
		tree.setOnClickHandler(catClick);
		tree.attachEvent("onXLE", function(tree,id) {getElement('loading').innerHTML = "";});
		tree.loadXML(url);
		tree.label = categoriesTree[t].label;
	}
}


function myErrorHandler(type, desc, erData){
    //custom code can be placed here
	loadingSpan = getElement('loading');
	loadingSpan.innerHTML = "Failed to load categories";
	loadingSpan.className = "error";
    return false;
}
window.dhtmlxError.catchError("ALL", myErrorHandler);

function catClick(id) {
	location.href = '/browse/' + id + '/';
}

function getCategoryUrl(treeItem) {
	var url = categories = '';
	var re = new RegExp("[^a-zA-Z]", "g");
	var reClean = new RegExp("\\s*\\([0-9]+\\)\\s*$");

	var urlPart = treeItem.label.replace(reClean,'');
	urlPart = urlPart.replace(re,"_");
	categories = "/" + urlPart;

	var thisParent = treeItem.parentObject;

	while (thisParent != 0 && thisParent != null && thisParent.label && thisParent.label.length > 0) {
		var urlPart = '';
		urlPart = thisParent.label.replace(reClean,'');
		urlPart = urlPart.replace(re,"_");
		categories = "/" + urlPart + categories;
		thisParent = thisParent.parentObject;
	}

	var rootCategory = '';
	if (treeItem.treeNod.label && treeItem.treeNod.label.length > 0) {
		rootCategory = '/' + treeItem.treeNod.label.replace(reClean,'').replace(re, "_");
	}

	return '/browse/Categories' + rootCategory + categories;
}

function generateCategories() {
	var ctrl = getElement('CatLinks_CategoryID');
	while(ctrl.options.length > 0)
		ctrl.options.remove(0);

	var rawOutput, t, i, addOption, arrayOutput;
	for(t = 0; t < categoriesTree.length; ++t) {
		rawOutput = categoriesTree[t].tree.getAllChecked();
		if (rawOutput) {
			arrayOutput = rawOutput.split(',');
			for(i = 0; i < arrayOutput.length; ++i) {
				if (arrayOutput[i].length > 0) {
					addOption = document.createElement('OPTION');
					addOption.text = arrayOutput[i];
					addOption.value = arrayOutput[i];
					addOption.selected = true;
					ctrl.options.add(addOption);
				}
			}
		}
	}
	if (ctrl.options.length == 0) {
		addOption = document.createElement('OPTION');
		addOption.text = '' + uncategorizedId;
		addOption.value = '' + uncategorizedId;
		addOption.selected = true;
		ctrl.options.add(addOption);
	}
	return true;
}

function manipulateCatSource(type) {
	var catSource = getElement('catSource');
	if (type == 'new') {
		catSource.value = 'new';
		for(var t = 0; t < categoriesTree.length; ++t) {
			var name = categoriesTree[t].container;
			getElement(name + '_container').style.visibility = 'visible';
			getElement(name).style.visibility = 'visible';
			getElement(name).style.height = '250px';
		}
	} else if (type == 'old') {
		catSource.value = 'old';
		for(var t = 0; t < categoriesTree.length; ++t) {
			var name = categoriesTree[t].container;
			getElement(name + '_container').style.visibility = 'hidden';
			getElement(name).style.visibility = 'hidden';
			getElement(name).style.height = '0px';
		}
	}
}

function forumFrameLoaded() {
	if(this.contentDocument){
		this.height = this.contentDocument.body.offsetHeight + 35;
	} else {
		this.height = this.contentWindow.document.body.scrollHeight;
	}
	//this.style.height = this.contentWindow.document.body.offsetHeight + 'px';
}

function makeSearch() {
	var frm = getElement("searchForm");
	var selectedCriteria = frm.criteria;
	var selectedCriteriaValue = selectedCriteria.options[selectedCriteria.selectedIndex].value;
	
	//alert (selectedCriteriaValue);


	if (frm.query.value == "") {
		alert("Please enter the keyword");
		return false;
	}
	
	switch (selectedCriteriaValue) {
		case "Title":
		frm.Title.value = frm.query.value;
		break;
		case "keywords":
		frm.keywords.value = frm.query.value;
		break;
		case "producer":
		frm.producer.value = frm.query.value;
		break;
		case "languages":
		frm.languages.value = frm.query.value;
		break;
	}
	
	return true;
}
