var browserUserAgent = navigator.userAgent.toLowerCase();
var operaBrowser = (browserUserAgent.indexOf("opera") != -1);
var ieBrowser = (browserUserAgent.indexOf("msie") != -1) && (document.all) && (!operaBrowser);
var ieBrowser5 = (ieBrowser) && (browserUserAgent.indexOf("msie 5") != -1);
var ieBrowser6 = (ieBrowser) && (browserUserAgent.indexOf("msie 6") != -1);
function get_element(id) {  
	if (document.getElementById)
		return document.getElementById(id);
	else if (document.all)
		return document.all[id];
	else if (document.layers)
		return document.layers[id];
}
var hourglassObj;
function setHourglass(obj) {
	hourglassObj=obj;
	obj.style.cursor="wait";
	var parentObj = obj;
	for (var n = 0; n < 10; ++n) {
		parentObj = genericParent (parentObj);
		if (parentObj && parentObj.style) 
			parentObj.style.cursor="wait";
	}
}
function resetHourglass() {
	if (hourglassObj)  {
		hourglassObj.style.cursor="pointer";		
		var parentObj = hourglassObj;
		for (var n = 0; n < 10; ++n) {
			parentObj = genericParent (parentObj);
			if (parentObj && parentObj.style) 
				parentObj.style.cursor="pointer";
		}
    }		
}
function _diagnostics(message,code,codeDescription,description,errorMessage) {
	this.message = message;
	this.code = code;
	this.codeDescription = codeDescription;
	this.description = description;
	this.errorMessage = errorMessage;
}
var diagnostics;
function parseDiagnostics (xmlHttp) {
	diagnostics = null;
	if (!xmlHttp) 
		return;
	else if (!xmlHttp.responseXML) {
		if (xmlHttp.responseText) {
			alert ('MySyndicaat Error!\r\n\nSession is expired. Please login again.\n\n');
		}
		return;
	} else if (!xmlHttp.responseXML.documentElement) {
		if (ieBrowser) {
			alert ('MySyndicaat Error!\r\n\nSession is expired. Please login again.\n\n');
		}
		return;
	} else
		parseXMLDiagnostics (xmlHttp.responseXML);
}
function parseXMLDiagnostics (dom) {
	diagnostics = null;
	if (!dom)
		return;
	if (!dom.documentElement)
		return;
	if (dom.documentElement.nodeName.toUpperCase() == 'DIAGNOSTICS') {
		var message;
		var code;
		var codeDescription;
		var description;
		if (!dom.documentElement) {
			diagnostics = null;
			return;
		}
		var errors = dom.documentElement.childNodes;
		for (n = 0; n < errors.length; ++n) {
			if (errors[n].nodeType == 1) {
				message = errors[n].nodeName;
				var details = errors[n].childNodes;
				for (m = 0; m < details.length; ++m) {
					if (details[m].nodeType == 1) {
						if (details[m].tagName == 'code') {
							if (details[m].textContent)
								code = details[m].textContent;
							else
								code = details[m].text;
						} else if (details[m].tagName == 'code-description') {
							if (details[m].textContent)
								codeDescription = details[m].textContent;
							else
								codeDescription = details[m].text;
						} else if (details[m].tagName == 'description') {
							if (details[m].textContent)
								description = details[m].textContent;
							else
								description = details[m].text;
						}
					}
				}
			}
		}
		if (code == 'ERROR_039')
			errorMessage = 'Error: a feedbot with the same name already exists.';
		else if (code == 'ERROR_099') {
			if (description.length > 800) {
				var index = description.substring(800).indexOf('<br>');
				if (index != -1) {
					description = description.substring(0, 800 + index) + '\r\n\n...';
				} else {
					index = description.substring(800).indexOf('&lt;br&gt;');
					if (index != -1) 
						description = description.substring(0, 800 + index) + '\r\n\n...';
					else
						description = description.substring(0, 800) + '\r\n\n...';				
				}
			} 
			description = replaceStr (description, '<br>', "\r\n\n");		
			description = replaceStr (description, '&lt;br&gt;', "\r\n\n");		
			errorMessage = 'Error: one or more feedbots with the same name already exist.\r\n\n\n'+description;
		} else if ((code == 'ERROR_098') || (code == 'ERROR_097') || (code == 'ERROR_047')) {
			description = replaceStr (description, '<br>', "\r\n\n");		
			description = replaceStr (description, '&lt;br&gt;', "\r\n\n");		
			errorMessage = 'MySyndicaat Error!\r\n\n' + description;
		} else {
			if (description && codeDescription)
				errorMessage = 'MySyndicaat Error!\r\n\n' + description + '\r\n\n' + codeDescription;
			else if (description)
				errorMessage = 'MySyndicaat Error!\r\n\n' + description;
			else
				errorMessage = 'MySyndicaat Error!\r\n\n' + codeDescription;
		}
		diagnostics = new _diagnostics(message,code,codeDescription,description,errorMessage);
	}
}
var timeout_constant = 40000;
function httpSend(xmlHttp, request) {
	try {
		xmlHttp.send(request);
	} catch (ex) {
		var ret = reportException(ex);
		alert("XMLHttp send exception.\r\n" + ret);
	}
}
function httpGet(xmlHttp, url, onreadystatechangefn) {
	try {
		if (onreadystatechangefn)
			xmlHttp.onreadystatechange = onreadystatechangefn;
		xmlHttp.open("GET", url, true);
		httpSend(xmlHttp, null);
	} catch (ex) {
		var ret = reportException(ex);
		alert("XMLHttp get exception.\r\n" + ret);
	}
}
function httpPost(xmlHttp, url, onreadystatechangefn, xmlDoc) {
	if (onreadystatechangefn)
		xmlHttp.onreadystatechange = onreadystatechangefn;
	xmlHttp.open("POST", url, true);
	httpSend(xmlHttp, xmlDoc);
}
function reportException(ex, message) {
	var ret = "Javascript exception: ";
	if (message)
		ret += message;
	ret += " " + ex;
	
	if (ieBrowser) {
		retc += " " + ex.name + ": " + ex.message + " (" + ex.number + ")";
	}
	return ret;
}
function setReadXMLHttpTimeout() { 
	clearReadXMLHttpTimeout ();
    this.r_xmlHttpTimeout = setTimeout(this.r_funXMLTimeout,timeout_constant);
}
function clearReadXMLHttpTimeout() {
	if (this.r_xmlHttpTimeout)
		clearTimeout(this.r_xmlHttpTimeout); 
	this.r_xmlHttpTimeout = null;
}
function readXMLHttpInProgress() { 
    if (this.r_xmlHttp) switch ( this.r_xmlHttp.readyState ) {
        case 1, 2, 3:
            return true;
        break;	
        
        default:
            return false;
        break;
    } else
		return false;
}
function funReadXMLHttpTimeout() { 
	if (readXML.r_inProgress ()) 
       	readXML.r_xmlHttp.abort();
	readXML.r_xmlHttp = null;
	alert("The connection was refused when attempting to contact the remote host");
	resetHourglass();
}
function getReadXMLHttp() { 
	if (this.r_xmlHttp) {
		if (this.r_inProgress ()) 
	       	this.r_xmlHttp.abort();
		this.r_xmlHttp = null;
	}
	if (ieBrowser) {
		var ieBrowserName = ieBrowser5 ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP";
		try {
			this.r_xmlHttp = new ActiveXObject(ieBrowserName);
		} catch (ex) {
			var ret = returnException(ex);
			alert("To use Microsoft XMLHttpRequest object, you need to enable active scripting and activeX controls.\r\n" + ret);
		}
	} else {
		this.r_xmlHttp = new XMLHttpRequest();
		if (!this.r_xmlHttp) {
			alert("Your browser does not support the XMLHttpRequest object.");
		}
	}
}
function readXMLHttp () {
	this.r_xmlHttp = null; 
	this.r_xmlHttpTimeout = null; 
	this.r_setXMLTimeout = setReadXMLHttpTimeout;
	this.r_clearXMLTimeout = clearReadXMLHttpTimeout;
	this.r_funXMLTimeout = funReadXMLHttpTimeout;
	this.r_getXMLHttp = getReadXMLHttp;
	this.r_inProgress = readXMLHttpInProgress;
}
var readXML = new readXMLHttp();

var _feedbotName;
var _userName;
var _page;
var _postSize;
var _noPosts;
var _orderby;
var _ordertype;
var _query;
var _categories;
var _dateRange;
var _digest;
var _timezone;
var _dateformat;
var _title;
var _descr;
function onLoad(feedbotName, userName, page, postSize, noPosts, orderby, ordertype, query, categories, dateRange, digest, timezone, dateformat, title, descr) {
	_feedbotName = feedbotName;
	_userName = userName;
	_page = page;
	_postSize = postSize;
	_noPosts = noPosts;
	_orderby = orderby;
	_ordertype = ordertype;
	_query = query;
	_categories = categories;
	_digest = digest;
	_dateRange = dateRange;
	_timezone = timezone;
	_dateformat = dateformat;
	_title = title;
	_descr = descr;
	paintFeed(_title, _descr, _userName+'_'+feedbotName, feedbotName, digest);
	refreshWidget();
}
function search() {
	var searchinput = get_element("searchinput");
	if ((searchinput) && (searchinput.value) && (searchinput.value.length > 0))
		_query = searchinput.value;
	else
		_query = null;
	refreshWidget();
}
function latestposts() {
	var searchinput = get_element("searchinput");
	if (searchinput)
		searchinput.value = "";
	_query = null;	
	refreshWidget();
}
var array;
var refreshTimeout;
function refreshWidget() { 
	if (refreshTimeout)
		clearTimeout(refreshTimeout);
	paintLoading();
	readXML.r_getXMLHttp ();
	var fun = (function () {
		try { if (!readXML) return; } catch (e) {return;}
		if (!readXML.r_xmlHttp)
			return;
		if (readXML.r_xmlHttp.readyState == 4) {
			if (readXML.r_xmlHttp.status == 200) {
				readXML.r_clearXMLTimeout();
				if (readXML.r_xmlHttp.responseText && (readXML.r_xmlHttp.responseText.length > 0)) {
					array = eval ('('+readXML.r_xmlHttp.responseText+')');
					if (array && array.items && (array.items.length > 0))
						paintItems();
					else 
						paintNoresults();
					refreshTimeout = setTimeout(refreshWidget,60000);						
				}
			}
		}
	});
	var url = '/myfeed/widget/ajax?r=readmb&name='+_feedbotName+'&user='+encodeURI(_userName);
	if (_page && (_page.length > 0))
		url+='&page='+_page;
	if (_postSize && (_postSize != "none"))
		url+='&postsize='+ _postSize;
	if (_noPosts && (_noPosts.length > 0))
		url+='&noposts='+ _noPosts;
	if (_query && (_query.length > 0))
		url+='&query=' + _query;
	if (_categories && (_categories.length > 0))
		url+='&categories=' + encodeURIComponent(_categories);
	if (_dateRange && (_dateRange.length > 0))
		url+='&daterange=' + _dateRange;
	if (_orderby && (_orderby.length > 0))
		url+='&orderby=' + _orderby;
	if (_ordertype && (_ordertype.length > 0))
		url+='&ordertype=' + _ordertype;
	if (_digest && (_digest.length > 0))
		url+='&digest=' + _digest;
	if (_timezone && (_timezone.length > 0))
		url+='&timezone=' + _timezone;
	if (_dateformat && (_dateformat.length > 0))
		url+='&dateformat=' + _dateformat;
	readXML.r_setXMLTimeout ();
	httpGet(readXML.r_xmlHttp, url, fun); 
}
function paintLoading()  {
	var content = '<div id="loading">Loading...</div>';
	var contentHTML = get_element("items");
	if (contentHTML)
		contentHTML.innerHTML = content;
}
function paintNoresults()  {
	var content = '<div id="loading">No Results!</div>';
	var contentHTML = get_element("items");
	if (contentHTML)
		contentHTML.innerHTML = content;
}
function paintItems () {
	var content = "";
	var items = array.items;
	for (var n = 0; n < items.length; ++n) {
		var date = items [n].item.date;
		var title = items [n].item.title;
		var fulltitle = items [n].item.fulltitle;
		var link = items [n].item.link;
		var importImgTitle = items [n].item.importImgTitle;
		var importUrl = items [n].item.importUrl;
		var summary = items [n].item.summary;
		var author = items [n].item.author;
		if ((date) && (date.length > 0))
			content += '<div class="pubdate_entry">'+date+'</div>';
		content += '<img class="expandIcon" src="/myfeed/widget/reader/plus.gif" id="plus_'+n+'"/>';
		content += '<img class="expandIcon" style="display:none" src="/myfeed/widget/reader/minus.gif" id="minus_'+n+'"/>';
		if ((link) && (link.length > 0)) {
			content += '<div class="ext_titles"><a id="title_'+n+'" href="'+link+'"';
			if (importImgTitle && (importImgTitle.length > 0))
				content += ' title="Link to '+importImgTitle+' at '+link+'"';
			if (title && (title.length > 0))
				content += ' target="_blank">'+title+'</a></div>';
			else
				content += ' target="_blank">-no title-</a></div>';
		} else {
			if (title && (title.length > 0))
				content +=' <div class="_titles">'+title+'</div>';
			else
				content += '<div class="_titles">-no title-</div>';
		}
		if ((link) && (link.length > 0)) {
			content += '<div class="ext_titles"><a id="fulltitle_'+n+'" style="display:none" href="'+link+'"';
			if (importImgTitle && (importImgTitle.length > 0))
				content += ' title="Link to '+importImgTitle+' at '+link+'"';
			if (title && (title.length > 0))
				content += ' target="_blank">'+fulltitle+'</a></div>';
			else
				content += ' target="_blank">-no title-</a></div>';
		} else {
			if (title && (title.length > 0))
				content += fulltitle;
			else
				content += '-no title-';
		}
		content += '<div><span class="source_entry">';
		if (importImgTitle && (importImgTitle.length > 0)) {
			if ((importUrl != null) && (importUrl.length > 0)) {
				content += '<img class="sourceIcon" src="/mysynd/images/source.gif"/>&nbsp;<a href="'+importUrl+'" target="_blank">'+importImgTitle+'</a>';
			} else {
				content += '<img class="sourceIcon" src="/mysynd/images/source.gif"/>&nbsp;'+importImgTitle;
			}
		}
		content += '</span></div>';		
		
		if ((summary != null) && (summary.length > 0)) 
			content += '<div class="summary_entry" id="summary_'+n+'" style="display:none">'+summary+'</div>';
 
		if ((author != null) && (author.length > 0)) {
			content += '<div class="author_div" id="author_'+n+'" style="display:none">';
			content += '<span class="author_title_entry">By </span>';
			content += '<span class="author_entry">'+author+'</span></div>';
		}
		content += '<div id="rulethin"></div>';
	}
	var contentHTML = get_element("items");
	if (contentHTML)
		contentHTML.innerHTML = content;
	var fun = (function () {
		for (var n = 0; n < items.length; ++n) {
			var plus_id = get_element("plus_"+parseInt(n));
			if (plus_id) {
				add_event (plus_id, 'click', plus_id_click, false);
				plus_id.style.cursor="pointer";
			}
			var minus_id = get_element("minus_"+parseInt(n));
			if (minus_id) {
				add_event (minus_id, 'click', minus_id_click, false);
				minus_id.style.cursor="pointer";
			}
		}
	});
	setTimeout(fun,100);	
}
function paintFeed(title, descr, localUrl, feedbotName, digest) {
	var content = "";
	if (localUrl && (localUrl.length > 0)) {
		if ((digest) && (digest == 'true')) 
			content += '<a target="_blank" href="/myfeed/blogdigest/default/';
		else 
			content += '<a target="_blank" href="/myfeed/blog/default/';
		content += localUrl+'"';
	} else
		content += '<a target="_blank" href="	javascript:void(0)"';
	content += '>';
	if (title && (title.length > 0)) {
		content += title;
	} else {
		content += feedbotName;
	}
	content += '</a>';
	var titleHtml = get_element("title");
	if (titleHtml)
		titleHtml.innerHTML = content;
	var searchinput = get_element("searchinput");
	if (searchinput) {
		add_event (searchinput, 'keydown', press_click_searchinput, false);
		searchinput.focus();
	}
	return content;
}
function plus_id_click(e) {
	var target = e.currentTarget ? e.currentTarget : e.srcElement;
	var suffix = getSuffix(target);
	var plus_id = get_element("plus_"+parseInt(suffix));
	if (plus_id)
		plus_id.style.display = "none";
	var minus_id = get_element("minus_"+parseInt(suffix));
	if (minus_id)
		minus_id.style.display = "";
	var summary_id = get_element("summary_"+parseInt(suffix));
	if (summary_id)
		summary_id.style.display = "";
	var author_id = get_element("author_"+parseInt(suffix));
	if (author_id)
		author_id.style.display = "";
	var title_id = get_element("title_"+parseInt(suffix));
	if (title_id)
		title_id.style.display = "none";
	var fulltitle_id = get_element("fulltitle_"+parseInt(suffix));
	if (fulltitle_id)
		fulltitle_id.style.display = "";
}
function minus_id_click(e) {
	var target = e.currentTarget ? e.currentTarget : e.srcElement;
	var suffix = getSuffix(target);
	var plus_id = get_element("plus_"+parseInt(suffix));
	if (plus_id)
		plus_id.style.display = "";
	var minus_id = get_element("minus_"+parseInt(suffix));
	if (minus_id)
		minus_id.style.display = "none";
	var summary_id = get_element("summary_"+parseInt(suffix));
	if (summary_id)
		summary_id.style.display = "none";
	var author_id = get_element("author_"+parseInt(suffix));
	if (author_id)
		author_id.style.display = "none";
	var title_id = get_element("title_"+parseInt(suffix));
	if (title_id)
		title_id.style.display = "";
	var fulltitle_id = get_element("fulltitle_"+parseInt(suffix));
	if (fulltitle_id)
		fulltitle_id.style.display = "none";
}
function add_event (elm, evType, fn, useCapture) {	
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;		
	} else {
		elm ['on' + evType] = fn;
	}	
}
function getSuffix(obj) {
	if (obj) 
		return _getSuffix(obj.id);
	return "";
}
function _getSuffix(suffix) {
	var pos = suffix.lastIndexOf('_');
	if (pos != -1)
		return suffix.substring(pos+1);
	return suffix;
}
function press_click_searchinput(event) {
	if (document.all){
  		if (event.keyCode == 13){
		   event.returnValue=false;
		   event.cancel = true;
		   search();
  		} 
	} else if (document.getElementById){
  		if (event.which == 13) {
   			event.returnValue=false;
   			event.cancel = true;
		   search();
  		}
 	} else if(document.layers) {
	  	if (event.which == 13) {
   			event.returnValue=false;
   			event.cancel = true;
		   search();
   		} 
 	}
}

