
function switchTab(li, idx) {
	var ul=Element.up(li, 'ul');
	var lis=Element.childElements(ul);
	for (var i=0; i < lis.length; i++) {
		if (i == idx)
			lis[i].className='selected';
		else if (lis[i].className == 'selected')
			lis[i].className='';
	}
}

function toggleFolder(el) {
	var top=Util.findParent(el, {id:'folder'});
	if (!top) return;
	
	var div;
	div=top.getElementsByTagName('DIV');
	for (var i=0; i < div.length; i++) {
		if (div[i].className == 'content') {
			div=div[i];
			break;
		}
	}
	
	if (top.className.match(/folderOpen/)) {
		new Effect.BlindUp(div, {duration:0.6, queue:'end', afterFinish: function(element) {
			top.className=top.className.replace(/folderOpen/i, '');
		}});
	}else{
		top.className += ' folderOpen';
		new Effect.BlindDown(div, {duration:0.6, queue:'end'});
	}
	el.blur();
}

function CheckFormBlank(field, def) {
	if (field.value.blank() || (def && field.value == def)) {
		field.focus();
		field.select();
		return false;
	}
	return true;
}

function swapDiv(divid1, divid2, afterFinish) {
	new Effect.SlideUp(divid1, {duration:0.5});
	new Effect.BlindDown(divid2, {duration:0.5, afterFinish:afterFinish});
}


//Discover
var Discover={
	_checkTimer:null,
	init: function() {
		if ($('discover_count'))
			this._checkTimer=setInterval('Discover.checkNew()', 10000);
	},
	checkNew: function() {
		ajax('/api/discover/new', null, Discover.checkNewResponse.bind(Discover));
	},
	checkNewResponse: function(result) {
		if (!result) return;
		if (result.error) {
			alert(result.msg?result.msg:'Error');
			clearTimeout(this._checkTimer);
			return;
		}

		var count=parseInt(result.count);
		if (isNaN(count)) return;

		var div=$('discover_count');
		var curCount=parseInt(Util.innerText(div));

		if (curCount != count) {
			Util.innerText(div, (count > 0)?'('+count+')':'');
			//팝업 표시
		}
	},
	_curtain: null,
	_canvas: null,
	_list: null,
	showCanvas: function() {
		if (!this._curtain) {
			this._curtain=Util.append(document.body, 'DIV', null, 'curtain');
			if (Browser.isIE6) this._curtain.style.position='absolute';
		}
		if (!this._canvas) {
			this._canvas=Util.append(document.body, 'DIV', '<div class="discover_header"><a href="javascript:Discover.hideCanvas();"><img src="/img/service/close.gif" /></a><h1>Wire your post to Extend the discussion. <span>Leave a note to...</span></h1></div>', 'discover_canvas');
			if (Browser.isIE7) {
				this._canvas.style.position='fixed';
				this._canvas.style.height='80%';
				this._canvas.style.top='10%';
			}
			this._list=Util.append(this._canvas, 'DIV', null, 'discover_list');
			Event.observe(this._list, 'scroll', Discover.nextPage.bind(Discover));
			if (Browser.isIE7) this._list.style.height='auto';
		}

		Util.truncate(this._list);
		this._curtain.style.display='block';
		this._canvas.style.display='block';

		this.page=1;
		this.isEnd=false;
		this.getList();
		document.documentElement.style.overflow='hidden';

		ajax('/api/discover/checked');
	},
	hideCanvas: function() {
		if (this._curtain) this._curtain.style.display='none';
		if (this._canvas) this._canvas.style.display='none';
		document.documentElement.style.overflow='';
	},
	isEnd: false,
	page: 1,
	getListIng: false,
	nextPage: function() {
		if (this.isEnd || this.getListIng || this._list.scrollTop + this._list.offsetHeight < this._list.scrollHeight-100) return;
		this.page++;
		this.getList();
	},
	getList: function() {
		this.getListIng=true;
		ajax('/api/discover/list', 'page='+this.page, Discover.getListResponse.bind(Discover));
	},
	getListResponse: function(result) {
		if (!result) return;
		if (result.error) {
			this.isEnd=true;
			Util.append(this._list, 'DIV', 'End of the list', 'EOL');
			return;
		}

		for (var i=0; i < result.length; i++) {
			if (result[i].type == 'direct') {
				Util.append(this._list, 'DIV', '<a class="wire" href="javascript:;" onclick="Discover.wire(this, '+result[i].child_cid+', '+result[i].cid+')"><img src="/img/service/wire.gif" /></a>Discovered <a class="title" href="'+(result[i].child_permalink.escapeHTML())+'" target="_blank">'+(result[i].child_title.escapeHTML())+'</a><br />-&gt; It is found in my post (<a class="my" href="'+(result[i].permalink.escapeHTML())+'" target="_blank">'+(result[i].title.escapeHTML())+'.</a>)<div class="clear"></div>', 'discover_node');
			}else{
				Util.append(this._list, 'DIV', '<a class="wire" href="javascript:;" onclick="Discover.wire(this, '+result[i].cid+', '+result[i].mycid+')"><img src="/img/service/wire.gif" /></a>Discovered <a class="title" href="'+(result[i].child_permalink.escapeHTML())+'" target="_blank">'+(result[i].child_title.escapeHTML())+'</a><br />-&gt; My post (<a class="my" href="'+(result[i].mypermalink.escapeHTML())+'" target="_blank">'+(result[i].mytitle.escapeHTML())+'.</span>) also links to <a class="my" href="'+(result[i].permalink.escapeHTML())+'" target="_blank">'+(result[i].title.escapeHTML())+'</a><div class="clear"></div>', 'discover_node');
			}
		}
		if (result.length < 30) {
			this.isEnd=true;
			Util.append(this._list, 'DIV', 'End of the list', 'EOL');
		}
		this.getListIng=false;
	},
	wire: function(link, cid, mycid) {
		ajax('/api/discover/wire', 'cid='+cid+'&mycid='+mycid, Discover.wireResponse.bind(Discover), link);
	},
	wireResponse: function(result, link) {
		if (!result || !link) return;
		if (result.error) {
			alert(result.msg?result.msg:'Error');
			return;
		}

		var div=Element.up(link, 'DIV');

		var node=Util.append(div, 'DIV', '<form onsubmit="Discover.wireComment(this); return false;"><input type="hidden" name="crid" value="'+result.crid+'" /><input class="submit" type="image" tabindex="4" name="submit" src="/img/service/note_close.gif" /><h2>Success! Your post is now wired to the discussion.</h2><div><label><input class="radio" type="radio" tabindex="1" name="isset" value="f" checked="checked" onclick="this.form[\'comment\'].className=\'disabled\';" /> Do not leave a note</label> <input class="radio" type="radio" tabindex="2" name="isset" value="t" onclick="this.form[\'comment\'].className=\'\';this.form[\'comment\'].focus();" /> <input class="disabled" tabindex="3" type="text" name="comment" onfocus="this.className=\'text\';this.form[\'isset\'][1].checked=true;" /></div></form>', 'discover_note');
		div.insertBefore(node, div.firstChild);
		if (Browser.isIE6) {
			node.style.left='15px';
			node.style.width=div.offsetWidth-15+'px';
			node.style.height=div.offsetHeight-3+'px';
			node.style.marginTop='-10px';
		}else
			div.style.position='relative';

		Element.setOpacity(node, 0);
		new Effect.Opacity(node, {from:0, to:1, duration:0.5});
	},
	wireComment: function(form) {
		var div=Element.up(form, 'DIV');
		if (!div) return;

		if (form['isset'][1].checked == true && form['comment'].value) {
			//ajax
			ajax('/api/discover/comment', Util.toPost(form));
		}

		var newDiv=document.createElement('DIV');
		newDiv.style.overflow='hidden';
		newDiv.style.position='relative';
		newDiv.style.backgroundColor='white';
		div.parentNode.parentNode.insertBefore(newDiv, div.parentNode);
		newDiv.appendChild(div.parentNode);

		new Effect.BlindUp(newDiv, {duration: 1});
	}
};

Event.observe(window, 'load', Discover.init.bind(Discover));