var firstload = true;
var nowcateid = 3;
var nowcates = '';
var nowcid = 0;
var nowurls = '';
var userconfig = '';
var nowurlid = 0;
var urlmousein = '';
var urlmouseint = 0;
var urlmouseid  = -1;
var urlnowop = "";
$(document).ready(function(){
if(!window.localStorage && /MSIE/.test(navigator.userAgent)){ 
    if(!window.UserData) { 
        window.UserData = function(file_name) { 
            if(!file_name) file_name="user_data_default"; 
            var dom = document.createElement('input'); 
            dom.type = "hidden"; 
            dom.addBehavior ("#default#userData"); 
            document.body.appendChild(dom); 
            dom.save(file_name); 
            this.file_name = file_name; 
            this.dom = dom; 
            return this; 
        };

        window.UserData.prototype = { 
            setItem:function(k, v) 
            { 
                this.dom.setAttribute(k,v); 
                this.dom.save(this.file_name); 
            }, 
            getItem:function(k){ 
                this.dom.load(this.file_name); 
                return this.dom.getAttribute(k); 
            },
            removeItem:function(k){ 
                this.dom.removeAttribute(k); 
                this.dom.save(this.file_name); 
            },
            clear:function(){
               this.dom.load(this.file_name); 
               var now = new Date();
               now = new Date(now.getTime()-1);
               this.dom.expires = now.toUTCString();
               this.dom.save(this.file_name);
			}
        };
    };
    window.localStorage= new window.UserData("local_storage"); 
}
})
function initQuitTag()
{
	

	if(firstload==true)
	{
		//alert(firstload);
		for(i in nowcates)
		{
			if(nowcates[i].id > defaultcateid)
			{
				_newtagdiv = "<div class='tag' id='"+nowcates[i].id+"'>"+nowcates[i].name+"</div>";
				$("#addinput").before(_newtagdiv);
			}
		}
		firstload = false;
	}
	
	
	$("#selftag div[class*=tag]").unbind('click');
	$("#selftag div[class*=tag]").click(function(){
	
		$("#selftag div[class*=tag] button").remove();
		$("#selfurls dl div[class=urleditdiv]").remove();
		if($(this).hasClass("selected"))
		{
			
		}
		else
		{
			$("#selfurls dl").find("a").remove();
			$("#selftag div").each(function(){
				$(this).removeClass("selected");
			})
			$(this).addClass("selected");
			nowcid = $(this).attr("id");
			
			curls = getUrls(nowcid);
			for(i in curls)
			{
				$("#selfurls dl div").before(makeUrl(curls[i]));
			}

			initUrls();
		}
		return false;
	})

	$("#selftag div[class*=tag]").unbind('dblclick');

	$("#selftag div[class*=tag]").dblclick(function(){
		
		$("#selftag div[class*=tag] button").remove();

		dbcateid = $(this).attr('id');
		dbcate = $(this);
		if(dbcateid > defaultcateid)
		{
			$(this).append("<button id='defaultcate'>设为默认</button> <button id='editcate'>编辑</button> <button id='removecate'>删除</button> <button id='cancelcate'>取消</button>");
		}
		else
		{
			$(this).append("<button id='defaultcate'>设为默认</button>");
		}
		$("#selftag div[class*=tag] button").unbind('click');
		$("#selftag div[class*=tag] button").click(function(){
			bact = $(this).attr("id");
			if(bact == 'editcate')
			{
				$("#selftag div[class*=tag] button").remove();
				_thecatename = dbcate.html();
				dbcate.html("<input type='text' value='"+_thecatename+"' > <button id='doedit'>保存</button> <button id='canceledit'>取消</button>");
				$("#selftag div[class*=tag]").unbind('click');
				$("#doedit").click(function(){
					
					_thenewcatename = dbcate.find("input").val();
					dbcate.html(_thenewcatename);
					updateCategory({id:dbcateid,name:_thenewcatename});
					initQuitTag();


				})
				$("#canceledit").click(function(){
					dbcate.html(_thecatename);
					initQuitTag();

				})	
			}
			else if(bact == 'defaultcate')
			{
				saveConfig("cid",dbcateid);
				$("#selftag div[class*=tag] button").remove();
			}
			else if(bact == 'removecate')
			{
				deleteCategory(dbcateid);
				dbcate.remove();
				$("#selftag div[class*=tag] button").remove();

			}
			else if(bact == 'cancelcate')
			{
				$("#selftag div[class*=tag] button").remove();

			}
			return false;
		})
		return false;
	})
	
	$("#addtag").unbind('click');

	$("#addtag").click(function(){
		
		$(this).hide();

		$("#addinput").show();
		return false;
	})
	
	$("#addinput #savetag").unbind('click');
	$("#addinput #canceltag").unbind('click');
	$("#addinput #canceltag").click(function(){
		$("#addinput").hide();
		$("#addtag").show();
		return false;
	})
	$("#addinput #savetag").click(function(){
		
		_newtag = trim($("#addinput input").val());
		if(_newtag !="")
		{
			_newtagid = saveCategory(_newtag);
			_newtagdiv = "<div class='tag' id='"+_newtagid+"'>"+_newtag+"</div>";
			$("#addinput").before(_newtagdiv);

			initQuitTag();
			
			
			$("#addinput").hide();
			$("#addinput input").val('');
			$("#addtag").show();
		}
		return false;
	})

	
	
}

function canShouwUrlOp()
{
	urlmouseint ++;
	

	if(urlmouseint >= 2)
	{
		if(urlnowop != "")
		{
			$(".urleditdiv").replaceWith(makeUrl(urlnowop));
		}
		clearInterval(urlmousein);
		urlmouseint = 0;

		_nowa = $("#selfurls dl a[id="+urlmouseid+"]").clone();
		_nowaurl = {id:_nowa.attr('id'),name:_nowa.html(),url:_nowa.attr("href")};
		urlnowop = _nowaurl;
		_editurldiv = "<div class='urleditdiv' >";
		_editurldiv += makeUrl(_nowaurl);
		_editurldiv += "<a href='#' class='urleditop' id='editurl'>编辑</a>";
		_editurldiv += "<a href='#' class='urleditop' id='delurl'>删除</a>";
		_editurldiv += "<a href='#' class='urleditop' id='cancelediturl'>取消</a></div>";
		
		$("#selfurls dl a[id="+urlmouseid+"]").replaceWith(_editurldiv);
		
		//$("#selfurls dl a[id="+urlmouseid+"]").addClass("urleditop");
		$(".urleditdiv a").click(function() {
			
			
			_theid = $(this).attr("id");
			if(_theid == "cancelediturl")
			{
				//$(".urleditdiv").replaceWith("<a id='"+_nowa.attr('id')+"' href='"+_nowa.attr("href")+"' target='_blank'>"+_nowa.html()+"</a>");

				$(".urleditdiv").replaceWith(makeUrl(_nowaurl));
				urlnowop = "";
				initUrls();
			}
			if(_theid == 'delurl')
			{
				removeurl(nowcid,_nowa.attr('id'));
				$(".urleditdiv").remove();
				urlnowop = "";
				initUrls();

			}
			if (_theid == 'editurl')
			{
				urlnowop = "";
				$(".urleditdiv").html("<input type='text' id='editurlnameinput' value='"+_nowa.html()+"'><input type='text' id='editurlinput' value='"+_nowa.attr("href")+"' ><a href='#' class='urleditop' id='doediturl'>保存</a><a href='#' class='urleditop' id='canceldoediturl'>取消</a>");
				$(".urleditdiv a").unbind("click");
				$(".urleditdiv a").click(function(){
					
					_theid = $(this).attr("id");
					if(_theid == 'canceldoediturl')
					{
						$(".urleditdiv").replaceWith(makeUrl(_nowaurl));
						initUrls();
						

					}
					if(_theid == 'doediturl')
					{
						_editnewurlname = $("#editurlnameinput").val();
						_editnewurl = $("#editurlinput").val();
						updateurl(nowcid,{id:_nowa.attr('id'),name:_editnewurlname,url:_editnewurl,hits:0});
						$(".urleditdiv").replaceWith(makeUrl({id:_nowaurl.id,name:_editnewurlname,url:_editnewurl}));
						initUrls();
					

					}
					return false;
				})
			}
			return false;
		})
		
	}

}

function initUrls()
{
	$("#selfurls dl a").unbind("mouseenter")
	$("#selfurls dl a").mouseenter(function(){
		
		if($(this).attr("id") > -1)
		{
			urlmousein = setInterval("canShouwUrlOp()",1000);
			urlmouseid = $(this).attr("id");
		}
		
	})
	
	$("#selfurls dl a").unbind("mouseout")
	$("#selfurls dl a").mouseout(function(){
		
		if(urlmouseint<2)
		{
			clearInterval(urlmousein);
			urlmouseint = 0;
		}
		
	})
}

var normalrets = new Array();
var ncid = 0;
function normalReshow()
{
	$("#catetypes h2 span[id="+userconfig.ncid+"]").parent().click();
}
function intSubCates()
{
	$("#subtags div").unbind("click");
	$("#subtags div").click(function(){
	
		_cid = $(this).attr("id");
		saveConfig('nscid',_cid);

		if($(this).hasClass("selected"))
		{
			
		}
		else
		{
			$("#subtags div").each(function(){
				$(this).removeClass("selected");
			})
			$(this).addClass("selected");


			if (_cid in normalrets)
			{
				$("#subtagurls dl").html('');
				 subcates = normalrets[_cid]
				 for(i in subcates)
				 {
					 onecate = subcates[i];

					 $("#subtagurls dl").append("<h4>"+onecate.name+"</h4>");

					 subcateurls = onecate.urls;

					 for(j in subcateurls)
					 {
						$("#subtagurls dl").append(makeUrl(subcateurls[j]));
					 }
					
				 }
			}
			else
			{
				$("#subtagurls dl").html('<img src="images/wait.gif" border=0>');
				$.ajax({
					  url: serverroot+"urlapi.php",
					  global: false,
					  type: "GET",
					  data: {act:"urllist",cid:_cid},
					  dataType: "json",
					  async:true,
					  success: function(json)
					  {
						  if(json.ret == 1)
						  {
							 normalrets[_cid] = json.retinfo.subcates;
							 subcates = json.retinfo.subcates;
							 $("#subtagurls dl").html('');
							 for(i in subcates)
							 {
								 onecate = subcates[i];

								 $("#subtagurls dl").append("<h4>"+onecate.name+"</h4>");

								 subcateurls = onecate.urls;

								 for(j in subcateurls)
								 {
									$("#subtagurls dl").append(makeUrl(subcateurls[j]));
								 }
								
							 }
						  }
					  },
					  error:function()
					  {
						
					  }
				   })
			}
		}


	})

	$("#subtagurls dl h5").unbind("click");
	$("#subtagurls dl h5").click(function(){
		h5id = $(this).attr('id');
		$("#subtags div[id="+h5id+"]").click();
	})
}




function intiNormalTag()
{
	$("#catetypes h2").click(function(){
		
		if($(this).hasClass("selected"))
		{
			
		}
		else
		{
			$("#catetypes h2").each(function(){
				$(this).removeClass("selected");
			})
			$(this).addClass("selected");

			ncid = $(this).find('span').attr("id");
			
			if(ncid == 0)
			{
				 $("#subtags").hide();
				 $("#subtagurls").hide();
				 $("#normaltagurls").show();
				return false;
			}

			saveConfig('ncid',ncid);
			
			$("#subtags").show();
			$("#subtagurls").show();
			$("#normaltagurls").hide();
			$("#subtagurls dl").html('<img src="images/wait.gif" border=0>');
			if (ncid in normalrets)
			{
				subcates =  normalrets[ncid].subcates;
				 
				 
				 $("#subtags").html('');
				 $("#subtagurls dl").html('');
				 for(i in subcates)
				 {
					_theurls = subcates[i].urls;
					$("#subtags").append("<div id='"+subcates[i].id+"'>"+subcates[i].name+"</div>");
					$("#subtagurls dl").append("<h5 id='"+subcates[i].id+"'>"+subcates[i].name+"</h5>");
					
					 for(i in _theurls)
					 {
						 
						 $("#subtagurls dl").append( makeUrl(_theurls[i]));
						
					 }
				 }

				 intSubCates();
			}
			else
			{
				
				$.ajax({
					  url: serverroot+"urlapi.php",
					  global: false,
					  type: "GET",
					  data: {act:"topurls",cid:ncid},
					  dataType: "json",
					  async:true,
					  success: function(json)
					  {
						  if(json.ret == 1)
						  {
							 normalrets[ncid] = json.retinfo;
							 subcates =  json.retinfo.subcates;
							 //theurls = json.retinfo.urls;
							 
							 //$("#subtags").show();
							 //$("#subtagurls").show();
							 //$("#normaltagurls").hide();
							 $("#subtags").html('');
							 $("#subtagurls dl").html('');
							 for(i in subcates)
							 {
								_theurls = subcates[i].urls;

								$("#subtags").append("<div id='"+subcates[i].id+"'>"+subcates[i].name+"</div>");
								$("#subtagurls dl").append("<h5 id='"+subcates[i].id+"'>"+subcates[i].name+"</h5>");
								
								 for(i in _theurls)
								 {
									 
									 $("#subtagurls dl").append( makeUrl(_theurls[i]));
									
								 }

							 }
							 
							 intSubCates();

							

							 if(userconfig.ncid == ncid && userconfig.nscid != 0)
							 {
								//$("#subtags div[id="+userconfig.nscid+"]").click(); //自动显示上次点击过的子分类
							 }
						  }
					  },
					  error:function()
					  {
						
					  }
				   })
			}
		}

	})
}


var CATE_KNAME = "cates";
var URL_PRE = "cate_";

function initNowCateid()
{
	if(localStorage.getItem("nowcateid"))
	{
		nowcateid = localStorage.getItem("nowcateid");
	}
	else
	{
		localStorage.setItem("nowcateid",nowcateid);
	}

	if(localStorage.getItem("nowurlid"))
	{
		nowurlid = localStorage.getItem("nowurlid");
	}
	else
	{
		localStorage.setItem("nowurlid",nowurlid);
	}
}

function initCate()
{
	
	if(localStorage.getItem(CATE_KNAME))
	{
		//alert(localStorage.getItem(CATE_KNAME));
		nowcates = JSON.parse(localStorage.getItem(CATE_KNAME));
		//alert(nowcates[0].name);
	}
	else
	{
		localStorage.setItem(CATE_KNAME,JSON.stringify(defaultcate));
		nowcates = defaultcate;
	}
}
function getUrls(cateid)
{
	_thekeyname = URL_PRE + cateid;
	
	_urls = localStorage.getItem(_thekeyname);
	if(_urls)
	{
		
		nowurls = JSON.parse(_urls);
		
	}
	else
	{
		nowurls = new Array();
	}

	returnurls = new Array();
	if(cateid <= defaultcateid)
	{
		for(i in defaulturls[cateid])
		{
			returnurls.push( defaulturls[cateid][i]);
		}

		
	}

	for(i in nowurls)
	{
		returnurls.push( nowurls[i]);
	}
	
	return returnurls;

}
function saveUrl(cateid,urlobj)
{
	_thekeyname = URL_PRE + cateid;
	nowurls.push(urlobj);
	localStorage.setItem(_thekeyname,JSON.stringify(nowurls));

}
function removeurl(cateid,urlid)
{
	_thekeyname = URL_PRE + cateid;
	_newnowurls = new Array();

	for (i in nowurls)
	{
		if(nowurls[i].id != urlid)
		{
			_newnowurls.push(nowurls[i]);
		}
	}
	
	nowurls = _newnowurls;
	localStorage.setItem(_thekeyname,JSON.stringify(nowurls));

}
function updateurl(cateid,urlobj)
{
	_thekeyname = URL_PRE + cateid;
	_newnowurls = new Array();

	for (i in nowurls)
	{
		if(nowurls[i].id == urlobj.id)
		{
			
			_newnowurls.push(urlobj);
		}
		else
			_newnowurls.push(nowurls[i]);
	}
	
	nowurls = _newnowurls;
	localStorage.setItem(_thekeyname,JSON.stringify(nowurls));
}
function getNewCateid()
{
	nowcateid ++;
	
	localStorage.setItem("nowcateid",nowcateid);
	return nowcateid;
}

function getNewUrlid()
{
	nowurlid ++;
	
	localStorage.setItem("nowurlid",nowurlid);

	return nowurlid;
}
function saveCategory(newcate)
{
	_newcateid = getNewCateid();
	nowcates.push({id:_newcateid,name:newcate})
	localStorage.setItem(CATE_KNAME,JSON.stringify(nowcates));
	return _newcateid;

}
function deleteCategory(cateid)
{
	var _nowcate = new Array();

	for(i in nowcates)
	{
		if(nowcates[i].id != cateid)
		{
			_nowcate.push(nowcates[i]);
		}
	}
	
	localStorage.setItem(CATE_KNAME,JSON.stringify(_nowcate));

	nowcates = _nowcate;
}

function updateCategory(cate)
{

	var _nowcate = new Array();

	for(i in nowcates)
	{
		if(nowcates[i].id == cate.id)
		{
			_nowcate.push(cate);
		}
		else
		{
			_nowcate.push(nowcates[i]);
		}
	}
	
	localStorage.setItem(CATE_KNAME,JSON.stringify(_nowcate));

	nowcates = _nowcate;
}

function initConfig()
{
	_config = _urls = localStorage.getItem('config');
	if(_config)
	{
		userconfig = JSON.parse(_config);
	}
	else
	{
		userconfig = defaultconfig;
		localStorage.setItem('config',JSON.stringify(userconfig));
	}
	
	$.ajax({
	  url: serverroot+"userapi.php",
	  global: false,
	  type: "GET",
	  data: {act:"comein",uid:userconfig.uid},
	  dataType: "json",
	  async:true,
	  success: function(json)
	  {
		  if(json.ret == 1)
		  {
			if(parseInt(userconfig.uid) == 0 || typeof(userconfig.uid) == "undefined")
			{
				userconfig.uid = json.retinfo.uid;
				saveConfig("uid",json.retinfo.uid);
			}
		  }
	  },
	  error:function()
	  {
		
	  }
   })

}

function saveConfig(cname,cval)
{
	eval("userconfig."+cname+"="+cval);
	localStorage.setItem('config',JSON.stringify(userconfig));
	
}

function initNowTag()
{
	$("#selftag div[id="+userconfig.cid+"]").click();

}
function makeUrl(urlobj)
{
	return "<a href='"+urlobj.url+"' id='"+urlobj.id+"' target='_blank'>"+urlobj.name+"</a>";
}
function trim(str)
{
   return (str + '').replace(/(\s+)$/g, '').replace(/^\s+/g, '');
}
$(document).ready(function(){

	initConfig();
	initNowCateid(); //自增id
	initCate();
	initQuitTag();
	intiNormalTag();
	initNowTag();
	//normalReshow();

	$("#clearlocal").click(function(){
		//localStorage.clear();
		return false;
	})
	
	$("#addurl").click(function(){
		
		$("#addurldiv").show();
		return false;
	})
	
	$("#cancelurl").click(function(){
		$("#addurldiv").hide();
		return false;
	})
	$("#saveurl").click(function(){
		
		$("#addurlerrormsg").hide();
		_newurlname = trim($("#newurlname").val());
		_newurl = trim($("#newurl").val());
		if(_newurlname=="")
		{
			return false;
		}
		if (_newurl == "")
		{
			return false;
		}
		var Expression=/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/;
		var objExp=new RegExp(Expression);
		if(objExp.test(_newurl)==true)
		{
			_newurlid = getNewUrlid();
			getUrls(nowcid);
			saveUrl(nowcid,{id:_newurlid,name:_newurlname,url:_newurl,hits:0})
			$("#selfurls dl div").before(makeUrl({id:_newurlid,name:_newurlname,url:_newurl,hits:0}));
			$("#addurldiv").hide();
			initUrls();
			$("#newurlname").val('');
			$("#newurl").val('http://');
			return false;
		}
		else
		{
			$("#addurlerrormsg").html('请检查网址格式');
			$("#addurlerrormsg").show();
		}
	})

})
