var data;
var root;
/* Tree Structure */
function tree(f, id) {
	if(items == null) {
		showEmpty(f,'对不起，您的收藏服务尚未启用');
		return;		
	}
	var r;
	if (id == -1)
		r = data;
	else
		for (var i = 0; i < folders.length; i++)
			if (folders[i].getAttribute('i') == id)
				r = folders[i];
	if (!r)
		return;
	f.innerHTML = '';
	var empty = true;
	for (var i = 0; i < r.childNodes.length; i++) {
		var e = r.childNodes[i];
		if (e.tagName)
			if (e.tagName == 'f' && e.getAttribute('t') != '回收站' && e.getAttribute('t') != 'Recycle Bin' && e.getAttribute('t') != '__groups') {
				showFolder(f, e);
				empty = false;
			}
			else if (e.tagName == 'e') {
				showElement(f, e);
				empty = false;
			}
	}
	if(empty)
		showEmpty(f,'空文件夹');
	window.setTimeout(
		function () {
			checkIco(f);
		}, 3000
	);
}

/* Most Part */
function most(r) {
	if(items == null) {
		showEmpty(r,'对不起，没有找到您的最爱收藏');
		return;		
	}
	r['innerHTML'] = '';
	var empty = true;
	for (var i = 0; i < items.length; i++) {
		var e = items[i];
		if (e.getAttribute('m') == 1) {
			showElement(r, e);
			empty = false;
		}
	}
	if(empty)
		showEmpty(r,'对不起，没有找到您的最爱收藏');	
	window.setTimeout(
		function () {
			checkIco(r);
		}, 3000
	);
}


/* Search Part */
function search(r,type) {
	if(items == null) {
		showEmpty(r,'对不起，没有找到匹配的收藏');
		return;		
	}
	var key = $('searchBar').value;
	var empty = true;
	if(key == "") {
		tree(root, -1);
		return;
	}
	if(type == true && key.length == 1) return;
	r['innerHTML'] = '';	 
	for (var i = 0; i < items.length; i++) {
		var e = items[i];
		if (e.getAttribute('t').toLowerCase().search(key.toLowerCase()) >= 0) {
			showElement(r, e);
			empty = false;
		}
	}
	if(empty)
		showEmpty(r,'对不起，没有找到匹配的收藏');
	/*if ($('highlight').checked) */highlight(r, key);
	window.setTimeout(
		function () {
			checkIco(r);
		}, 3000
	);
}

/* Iterator Part */
function showFolder(r, e) {
	var el = document.createElement('li');
	r.appendChild(el);

	var el2 = document.createElement('span');
	el.appendChild(el2);
	var el3 = document.createElement('ul');
	el.appendChild(el3);

	el2['innerHTML'] = '<img src="../images/folder_close.gif" alt="" class="folder" />' + e.getAttribute('t');
	el3['offset'] = e.getAttribute('i');
	el3.style['display'] = 'none';

	bindEvent(el2, el3);
}
function showElement(r, e) {
	var el = document.createElement('li');
	r.appendChild(el);
	
	if (e.getAttribute('m') == 1)
		el['className'] = 'm';

	var src = '../images/file.gif';
	var addr = e.getAttribute('u');
	if(addr.indexOf("//") == -1) { //修正url没有协议的时候 ,路径不正确的问题
		addr = "http://"+addr;
	}
	var pattern = /\/\/.*?\//i;
	/*
	src = addr.match(pattern) + 'favicon.ico';
	alert(src);*/
	//修正url没有'/'时，favicon路径不正确的问题
	var maddr = addr;
	if(maddr.indexOf('/',7) == -1) {
		maddr = maddr + "/";
	}
	src = maddr.match(pattern) + 'favicon.ico';
	var title = e.getAttribute('t');
	if(title.length > 30) title = title.substring(0,30) + "...";
	
	el['innerHTML'] = '<img alt="" src="' + src + '" onload="this[\'loaded\']=true" onerror="this.src=\'../images/file.gif\'" />' +
		'<a href="' + addr + '" target="_blank">' + title + '</a>';
}
function showEmpty(r,s) {
	r.innerHTML = '<span class="empty" style="margin-left:10px;">' + s + '</span>';
}
function bindEvent(r, e) {
	r.onclick = function() {
		var display = e.style['display'] == 'block';		
		if (display) {
			e['innerHTML'] = '';
		}
		else {
			tree(e, e['offset']);
		}
		var img = r.firstChild;
		while (img) {
			if ((img.tagName || '').toLowerCase() == 'img') {
				img.src = display ? '../images/folder_close.gif' : '../images/folder_open.gif';
				e.style['display'] = display ? 'none' : 'block';	
				return;
			}
			img = img.nextSibling;
		}
	}
}
function checkIco(r) {
	debug('OK');
	var icos = r.getElementsByTagName('img');
	for (var i = 0; i < icos.length; i++) {
		debug([icos[i].src, icos[i]['loaded']]);
		if (icos[i].className == 'folder')
			continue;
		icos[i].onerror = function (){};
		if (!icos[i]['loaded']) {
			icos[i]['loaded'] = true;
			icos[i].src = '../images/file.gif';
		}
	}
}
function highlight(r, key) {
	key = key.replace(/(\W)/, '\\$1');
	var regexp = eval('(/(' + key + ')/ig)');
	for (var i = 0; i < r.getElementsByTagName('a').length; i++) {
		var a = r.getElementsByTagName('a')[i];
		a['innerHTML'] = a['innerHTML'].replace(regexp, '<strong>$1</strong>');
	}
}

/* Base Part  */
function init() {
	root = $('view_fav');
	getHttpRequest('fav_xml.html', true, parse_fav);
}
function parse_fav(req) {
	if (req.readyState == 4)
		if (req.status == 200) {
			if(req.responseText && req.responseText.length > 5){	
				data = req.responseXML.getElementsByTagName('favorites')[0];
				folders = data.getElementsByTagName('f');
				items = data.getElementsByTagName('e');
				tree(root, -1);
			}else {
//				$('alert_message').style.display = 'block';
				items = null;
				showEmpty(root,'对不起，您的收藏服务尚未启用');
			}
		}
}
function $(id) {
	return document.getElementById(id);
}
function getHttpRequest(url, asynch, handler, args) {
	var request = newHttpRequest();
	if (!request)
		return;
	request.onreadystatechange = function(){handler(request, args)};
	request.open("GET", url, asynch);
	request.send(null);
}
function postHttpRequest(url, params, asynch, handler, args) {
	var request = newHttpRequest();
	if (!request)
		return;
	request.onreadystatechange = function(){handler(request, args)};
	request.open("POST", url, asynch);
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	request.send(params);
}
function newHttpRequest() {
	if (window.XMLHttpRequest)
		return new XMLHttpRequest();
	else if (window.ActiveXObject)
		return new ActiveXObject('Msxml2.XMLHTTP') || new ActiveXObject('Microsoft.XMLHTTP');
}
function checkLogin(obj) {
	var email = document.getElementById('email').value.trim();
	var password = document.getElementById('password').value.trim();
	if(email != "" && password != "") {
		obj.submit();
	}
	else {
		if(document.getElementById('pass_error') != null) {
			document.getElementById('pass_error').style.display = "none";	
		}	
		document.getElementById('object_null').style.display = "block";		
	}	
}
function favSearch(type) {
	var key = $('searchBar').value.trim();
	if(key == "") {
		tree(root, -1);
		return;
	}
	if(type == true && key.length <= 1) return; 
	var url = "fav_search.ashx?word=" + encodeURIComponent(key);	
	root['innerHTML'] = '';
	var request = newHttpRequest();
	if (!request)
		return;
	request.onreadystatechange = function(){	
		if (request.readyState == 4)
			if (request.status == 200) {
				if(request.responseText == "")
					showEmpty(root,'对不起，没有找到匹配的收藏');
				else {
					root['innerHTML'] = request.responseText;
					window.setTimeout(
						function () {
							checkIco(root);
						}, 3000
					);}
		}};
	request.open("GET", url, true);
	request.send(null);
}
function favMost() {
	var url = "favsearch.ashx";	
	root['innerHTML'] = '';
	var request = newHttpRequest();
	if (!request)
		return;
	request.onreadystatechange = function(){	
		if (request.readyState == 4)
			if (request.status == 200) {
				if(request.responseText == "")
					showEmpty(root,'对不起，没有找到您的最爱收藏');
				else {
					root['innerHTML'] = request.responseText;
					window.setTimeout(
						function () {
							checkIco(root);
						}, 3000
					);}
		}};
	request.open("GET", url, true);
	request.send(null);
}
var loghere = [];
function debug(x) {
	loghere.push(x + '\r\n');
}
