
/**
*
*  Javascript cookies
*  http://www.webtoolkit.info/
*
**/

var target_element;

function SetCookie(name, value, seconds) 
{			
	if (typeof(seconds) != 'undefined')
	{
		var date = new Date();
		date.setTime(date.getTime() + (seconds*1000));
		var expires = "; expires=" + date.toGMTString();
	}
	else
	{
		var expires = "";
	}

	document.cookie = name+ "=" + value + expires + "; path=/";
}
 
function GetCookie(name) 
{
	name = name + "=";
	var carray = document.cookie.split(';');

	for(var i=0;i < carray.length;i++)
	{
		var c = carray[i];
		while (c.charAt(0)==' ')
			c = c.substring(1,c.length);
		if (c.indexOf(name) == 0)
			return c.substring(name.length,c.length);
	}

	return null;
}
 
function DeleteCookie(name)
{
	SetCookie(name, "", -1);
}

function GetElement(id)
{
	return document.getElementById(id);
}
							
function DisableSelection(target)
{
	if (typeof target.onselectstart!="undefined") //IE route
		target.onselectstart=function(){return false}
	else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
		target.style.MozUserSelect="none"
	else //All other route (ie: Opera)
		target.onmousedown=function(){return false}
	target.style.cursor = "default"
}

function Clone(src)
{
   if (typeof src == 'object')
   {
		var dst;
		if (src.constructor === Array || typeof src.callee !== 'undefined')
		{
   		dst = new Array();
   		for (i = 0; i < len; i++) 
				dst[i] = Clone(src[i]);
		}
		else
		{
   		dst = new Object();
   		var key;
   		for (key in src)
				dst[key] = Clone(src[key]);
		}
		return dst;
   }  
	
   return src;
}

function Serialize(src)
{
   // Let Gecko browsers do this the easy way
   if (typeof src.toSource !== 'undefined' && typeof src.callee === 'undefined')
   {
		return src.toSource();
   }

	if(src===null)
		return 'null';
	if(src===undefined)
		return 'undefined';

   // Other browsers must do it the hard way
   switch (typeof src)
   {
		// numbers, booleans, and functions are trivial:
		// just return the object itself since its default .toString()
		// gives us exactly what we want
		case 'number':
		case 'boolean':
		case 'function':
			return src;
			break;

		// for JSON format, strings need to be wrapped in quotes
		case 'string':
			return '\'' + src + '\'';
			break;

		case 'object':
			var str;
			if (src.constructor === Array || typeof src.callee !== 'undefined')
			{
			str = '[';
			var i, len = src.length;
			for (i = 0; i < len-1; i++) 
			{ 
				str += Serialize(src[i]) + ','; 
			}
			str += Serialize(src[i]) + ']';
			}
			else
			{
			str = '{';
			var key;
			for (key in src)
			{ 
				str += key + ':' + Serialize(src[key]) + ','; 
			}
			str = str.replace(/\,$/, '') + '}';
			}
			return str;
			break;

		default:
			return 'UNKNOWN';
			break;
   }
}
function DeSerialize(s)
{
	var v;
	eval("v = (" + s + ");");
	return v;
}

function UpdateText(id, str)
{
	var e = GetElement(id);
	if (e)
		e.innerHTML = str;
}		
function UnSplit(a, delim)
{
	var s = "";
	for (var i = 0; i < a.length; i++)
	{	
		s += a[i];
		if (i+1 < a.length)
			s += delim;
	}   
	return s;
}

function ToggleVisibility(id)
{
	var e = GetElement(id);
	if (e)
		e.style.display = (e.style.display == "none") ? "" : "none";
}

	// return true if ok to send to server
function OnPostCommentForm(e)
{
	SetCookie("name", e.name.value);
	SetCookie("email", e.email.value);
	SetCookie("url", e.url.value);
	
	target_element = e;
	
	return true;
}

function GetFrameContent(e)
{
	return e.contentWindow.document.body.innerHTML;
}

function OnFrameLoad(e)
{
	if (target_element)      
	{
		var c = document.createElement("div");
		c.innerHTML = GetFrameContent(e);
		var p = target_element.parentNode;
		p.replaceChild(c, target_element);
		target_element = 0;
	}
}

function BestOf(a,b)
{
	return a ? a : b;
}								

function DeletePost(id)
{
	var e = GetElement("post-" + id);
	if (e) 
	{
		if (confirm("Delete Post?"))
		{
			e.innerHTML = "";
			return true;
		}
	}
	return false;
}

function DeleteComment(id)
{
	var e = GetElement("comment-" + id);
	if (e) 
	{
		if (confirm("Delete Comment?"))
		{
			e.innerHTML = "";
			return true;
		}
	}
	return false;
}

function ShowCommentForm(id, postid)
{
	var e = GetElement(id);
	if (!e)
		return;
		
	var name = BestOf(GetCookie("name"),"anonymouse");
	var email = BestOf(GetCookie("email"),"");
	var url = BestOf(GetCookie("url"),"");
		
	e.innerHTML = "<p><input name='name' type='text' value='"+name+"'> <label for='name'>Name</label></p> <p><textarea style='width:100%; height:6em;' name='content' ></textarea></p> <div style='float:right;'> <button type='submit'>post</button> </div> <p><input name='email' type='text' value='"+email+"'> <label for='email'>Mail</label></p> <p><input name='url' type='text' value='"+url+"'> <label for='url'>URL</label></p> <input name='post_id' type='hidden' value='"+postid+"' > <input name='command' type='hidden' value='post-comment'>"
		;
	
}

