
var chs_clkw = 0;
var ws_t = Array();
var BoxFixed = null;
var DidMove = null;
var wb_tpl = '<table onmouseout="document.getElementById(\'wse{num}\').style.display=\'none\';" onmouseover="document.getElementById(\'wse{num}\').style.display=\'\';" cellpadding="0" cellspacing="0"><tbody><tr><td class="rb" style="padding-top: 7px;" align="center" valign="top"><table style="border-collapse: collapse;" border="0"><tbody><tr><td><div onmouseover="this.style.borderColor=\'#000000\'" onmouseout="this.style.borderColor=\'#9F9F9F\'" style="border: 1px solid rgb(159, 159, 159); overflow: hidden; width: 150px; height: 95px;"><a title="{title}" href="{url}" onmouseup="setTimeout(\'NoMove=null\',100);" onclick="if(NoMove){return false;}"><img src="http://images.websnapr.com/?size=S&key=8034537cDFCn&url={url}" style="position: relative; left: 0px; top: 0px;float: center;" border="0" width="150"></a></div></td></tr><tr><td><div style="width: 152px; position: absolute; float: left; text-align: center;"><font style="font-size: 8pt; font-weight: bold; padding-top: 2px; display: block; color: rgb(0, 0, 0);">{title}</font></div><div style="width: 152px; position: absolute; float: left; text-align: right; display: none;" id="wse{num}"><a href="#" title="Edit" onclick="chs_chg({num},0,\'{title}\',\'{url}\');return false;"><img style="background-color: rgb(251, 251, 251);" src="images/ed.gif" border="0"></a>&nbsp;<a href="#" onclick="chs_chg_del({num});return false;" title="Delete"><img style="background-color: rgb(251, 251, 251);" src="images/x.png" border="0"></a></div></td></tr></tbody></table></td></tr></tbody></table>';
var wb_blk_tpl='<table style="border-collapse: collapse;" border="0" cellpadding="0" height="128" width="171"><tbody><tr><td><table cellpadding="0" cellspacing="0" height="100%" width="100%"><tbody><tr><td class="rb" onclick="if(!NoMove){chs_chg({num},0,\'\',\'\');}" onmouseout="this.className=\'rb\';" onmouseover="this.className=\'rbh\';" align="center"><font size="7">{num}</font><font size="4"><br></font><b><font size="2">Click here to<br> add a website</font></b></td></tr></tbody></table></td></tr></tbody></table>';

function createXMLHttpRequest() {
	var ua;
	if(window.XMLHttpRequest) {
		try { ua = new XMLHttpRequest(); } catch(e) { ua = false; }
	} else if(window.ActiveXObject) {
		try { ua = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { ua = false; }
	}
	return ua;
}

var req = createXMLHttpRequest(); 

function dvc(vc,vx)	{
	if (!vx) { vx="tp_loading"; }
	var cx=document.getElementById(vx);
	cx.innerHTML='<table cellpadding="2" cellspacing="2"><tbody><tr><td><img src="images/ldin.gif"></td></tr></tbody></table>';
	cx.style.display='';
	if (!ldin) { dajx(vc,vx); } else { alert('The previous change hasn\'t saved yet. Please try again.'); }
}

function dajx(gv,dv) {
	g=gv;
	d=dv;
	if (g.match("\\?")) { var inbt='&tmp='; } else { var inbt='?'; }
	ldin=1;
	req.open('get','modules/'+g+inbt+Math.floor(Math.random()*999999));
	req.onreadystatechange = handleResponse;
	req.send(null);
}

function handleResponse() {
	if(req.readyState == 4) {
		ldin=0;
		var response = req.responseText;
		if (d) { document.getElementById(d).innerHTML=response; }
		if(donext) {
			eval(donext);
			donext=null;
		}
	}
}


function chs_chg(n,c,t,a) {
	if (c) {
		document.getElementById('ws'+n).innerHTML=ws_t[n];
		return false;
	}
	ws_t[n]=document.getElementById('ws'+n).innerHTML;
	document.getElementById('ws'+n).innerHTML='<form name="wsform'+n+'" style="margin-bottom: 0px;" onsubmit="chs_chg_frm('+n+'); return false;"><table cellpadding="0" cellspacing="0"><tbody><tr><td class="rb"><table style="padding-left: 10px;" cellpadding="3" cellspacing="3"><tbody><tr><td><font style="font-size: 11pt;" color="#000000"><b><nobr>&nbsp;&nbsp;Add a Website On '+n+'!</nobr></b></font><br><font style="font-size: 9pt;" color="#000000">&nbsp;&nbsp;Title of Website:</font><br>&nbsp;&nbsp;<input onmousedown="StopMove=1;" onmousemove="StopMove=1;" onmouseup="StopMove=null;" onmouseout="StopMove=null;" onblur="StopMove=null;" name="title" size="25" style="font-size: 8pt; color: rgb(75, 75, 75);" type="text"><br><font style="font-size: 8pt;" color="#000000">&nbsp;&nbsp;website url:</font><br>&nbsp;&nbsp;<input onmousedown="StopMove=1;" onmousemove="StopMove=1;" onmouseout="StopMove=null;" onmouseup="StopMove=null;" onblur="StopMove=null;" value="http://" name="url" size="25" style="font-size: 8pt; color: rgb(00, 00, 00); background-color: rgb(255, 255, 160);" type="text"><br>&nbsp;&nbsp;<input value="Save It" style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; font-weight: bold;" type="submit">&nbsp;&nbsp;&nbsp;&nbsp;<input value="Cancel" onClick="chs_chg('+n+',1);return false;" style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; font-weight: bold;" type="button"></td></tr></tbody></table></td></tr></tbody></table></form>';
	if (t) { eval("document.wsform"+n+".title.value='"+t+"';"); }
	if (a) { eval("document.wsform"+n+".url.value='"+a+"';"); }
	eval("document.wsform"+n+".title.focus();");
}

function chs_shw() {
	var sboxe = document.getElementById('sbox');
	var vpos = findPos(document.getElementById('tablesearch'));
	sboxe.style.left=vpos[0]+'px';
	sboxe.style.top=(vpos[1]+25)+'px';
	chs_clkw=1;
	if (sboxe.style.display) { sboxe.style.display=''; } else { sboxe.style.display='none'; }
}

function chs_clk(s) {
	chs_clkw=1;
	document.getElementById('sbox').style.display='none';
	document.pf.s.value=s;
	document.simg.src='images/'+s+'.gif';
	dvc('save.php?act=savesearch&n=s&v='+s,'');
}

function chs_eclk() {
	if (!chs_clkw) { document.getElementById('sbox').style.display='none'; }
	chs_clkw=0;
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;curtop = obj.offsetTop;
		while (obj = obj.offsetParent) { curleft += obj.offsetLeft; curtop += obj.offsetTop; }
	}
	return [curleft,curtop];
}

function mouseCoords(ev) {
	if(ev.pageX || ev.pageY) { return {x:ev.pageX, y:ev.pageY}; }
	return { x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, y:ev.clientY + document.body.scrollTop - document.body.clientTop};
}

function getMouseOffset(target, ev) {
	ev = ev || window.event;
	var docPos = getPosition(target);
	var mousePos = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e) {
	var left = 0;
	var top = 0;
	while (e.offsetParent){ left += e.offsetLeft; top += e.offsetTop; e = e.offsetParent; }
	left += e.offsetLeft; top += e.offsetTop;
	return {x:left, y:top};
}

function chs_chg_frm(n) {
	eval("var wsfrm = document.wsform"+n+";");
	if (wsfrm.title.value=='') {
		alert("Please enter a Title for the website.");
		wsfrm.title.focus();
		return false;
	}
	if (!wsfrm.url.value || wsfrm.url.value=="http://") {
		alert("Please enter the Website Address.");
		wsfrm.url.focus();
		return false;
	}
	dvc('save.php?act=add&n=ws_'+escape(n)+'&v='+escape(wsfrm.title.value+'|'+wsfrm.url.value),'');
	var wb_tpl_tmp=wb_tpl.replace(/{num}/g,n);
	var wb_tpl_title=wsfrm.title.value.replace(/'/g,'');
	wb_tpl_tmp=wb_tpl_tmp.replace(/{title}/g,wb_tpl_title.replace(/"/g,''));
	var wb_tpl_url=wsfrm.url.value.replace(/'/g,'');
	wb_tpl_tmp=wb_tpl_tmp.replace(/{url}/g,wb_tpl_url.replace(/"/g,''));
	wb_tpl_tmp=wb_tpl_tmp.replace(/{urlenc}/g,escape(wsfrm.url.value));
	document.getElementById('ws'+n).innerHTML=wb_tpl_tmp;
	return false;
}

function chs_chg_del(n) {
	if (confirm('Are you sure you want to remove Website '+n+'?')) {
		var wb_blk_tpl_tmp=wb_blk_tpl.replace(/{num}/g,n);
		dvc('save.php?act=del&n=ws_'+n+'&v=','');
		document.getElementById('ws'+n).innerHTML=wb_blk_tpl_tmp;
	}
}

document.onclick = function() { chs_eclk(); };
var NoMove = null;
var StopMove = null;
var dragObject = null;
var mouseOffset = null;

var g;
var d;
var ldin;
var donext;

ldimage = new Image();
ldimage.src = "images/ldin.gif";

function mouseCoords(ev) {
	if(ev.pageX || ev.pageY) { return {x:ev.pageX, y:ev.pageY}; }
	return { x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, y:ev.clientY + document.body.scrollTop - document.body.clientTop};
}

function getMouseOffset(target, ev) {
	ev = ev || window.event;
	var docPos = getPosition(target);
	var mousePos = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e) {
	var left = 0;
	var top = 0;
	while (e.offsetParent) {
		left += e.offsetLeft;
		top += e.offsetTop;
		e = e.offsetParent;
	}
	left += e.offsetLeft;
	top += e.offsetTop;
	return {x:left, y:top};
}

function mouseMove(ev) {
	ev = ev || window.event;
	var mousePos = mouseCoords(ev);
	if(dragObject && !StopMove) {
		NoMove=1;
		dragObject.style.position = 'absolute';
		dragObject.style.top = mousePos.y - mouseOffset.y; dragObject.style.left = mousePos.x - mouseOffset.x;
		DidMove=1;
		return false;
	}
}

function mouseUp() {
	dragObject = null;
	setTimeout('NoMove=null;',500);
}

function makeDraggable(item,s) {
	if(!item) return;
	item.onmousedown = function(ev) {
		if (!StopMove && !BoxFixed) {
			dragObject = this;
			mouseOffset = getMouseOffset(this, ev);
			DidMove=null;
			return false;
		}
	};
	item.onmouseup = function(ev) {
		if(!BoxFixed && !StopMove && DidMove) {
			if(item.style.top.replace(/px/g,'') && item.style.left.replace(/px/g,'')) {
				dvc('save.php?n=ws_p_'+s+'&v='+escape(item.style.left+'|'+item.style.top),'');
			}
			return false;
		}
	};
}

window.onload=dostartup;

function dostartup() {
	if (!BoxFixed) {
		var xdo=1;
		var x=0;
		while (xdo) {
			x=x+1;
			if (document.getElementById('wsm'+x) != null) { makeDraggable(document.getElementById('wsm'+x),x); } else { xdo=null; }
		}
	}
}

function rst_all() {
	var xdo=1;
	var x=0;
	while (xdo) {
		x=x+1;
		if (document.getElementById('wsm'+x) != null) {
			document.getElementById('wsm'+x).style.position='';
			document.getElementById('wsm'+x).style.left='0px';
			document.getElementById('wsm'+x).style.top='0px';
		} else { xdo=null; }
	}
}

function feed_chk(fm)	{
	if (!fm.name.value) {
		alert("Please enter your name.");
		fm.name.focus();
		return false;
	}
	if (!fm.email.value) {
		alert("Please enter your e-mail address.");
		fm.email.focus();
		return false;
	}
	if (emailCheck(fm.email.value) === false) {
		fm.email.focus();
		return false;
	}
	if (!fm.msg.value) {
		alert("Please enter your comment.");
		fm.msg.focus();
		return false;
	}
	dvc('save.php?act=feedback&name='+escape(fm.name.value)+'&email='+escape(fm.email.value)+'&msg='+escape(fm.msg.value),'tp_footers');
	return false;
}

function register_chk(fm)	{
	if (!fm.name.value) {
		alert("Please enter your name.");
		fm.name.focus();
		return false;
	}
	if (!fm.email.value) {
		alert("Please enter your e-mail address.");
		fm.email.focus();
		return false;
	}
	if (emailCheck(fm.email.value) === false) {
		fm.email.focus();
		return false;
	}
	if (!fm.password1.value) {
		alert("Please enter your password.");
		fm.password1.focus();
		return false;
	}
	if (!fm.password2.value) {
		alert("Please enter retype your password.");
		fm.password2.focus();
		return false;
	}
	if (fm.password1.value != fm.password2.value) {
		alert("Your password didn't match.");
		fm.password1.focus();
		return false;
	}
	dvc('save.php?act=register&name='+escape(fm.name.value)+'&email='+escape(fm.email.value)+'&password='+escape(fm.password1.value),'tp_footers');
	return false;
}

function resetpassword_chk(fm)	{
	if (!fm.password1.value) {
		alert("Please enter your password.");
		fm.password1.focus();
		return false;
	}
	if (!fm.password2.value) {
		alert("Please enter retype your password.");
		fm.password2.focus();
		return false;
	}
	if (fm.password1.value != fm.password2.value) {
		alert("Your password didn't match.");
		fm.password1.focus();
		return false;
	}
	dvc('save.php?act=resetpassword&c='+escape(fm.c.value)+'&password='+escape(fm.password1.value),'tp_footers');
	return false;
}

function myaccount_chk(fm)	{
	if (!fm.name.value) {
		alert("Please enter your name.");
		fm.name.focus();
		return false;
	}
	if ((fm.oldpass.value != fm.oldpass_value.value) && fm.oldpass.value != "") {
		alert("Please enter your old password. OR Your old password didn't match our records!");
		fm.oldpass.focus();
		return false;
	}
	if ((fm.password1.value != fm.password2.value) && (fm.password2.value != "") && (fm.password1.value != "")) {
		alert("Please enter your new password. OR Your password didn't match.");
		fm.password1.focus();
		return false;
	}
	dvc('save.php?act=myaccount&name='+escape(fm.name.value)+'&password='+escape(fm.password1.value)+'&col='+escape(fm.cols.value)+'&rows='+escape(fm.rows.value),'tp_footers');
	return false;
}

function lost_chk(fm)	{
	if (!fm.email.value) {
		alert("Please enter your e-mail address.");
		fm.email.focus();
		return false;
	}
	if (emailCheck(fm.email.value) === false) {
		fm.email.focus();
		return false;
	}
	dvc('save.php?act=lost&email='+escape(fm.email.value)+'','tp_footers');
	return false;
}

function emailCheck(emailStr)	{
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++)	{
		if (user.charCodeAt(i)>127) {
			alert("Ths username contains invalid characters.");
			return false;
		}
	}
	for (i=0; i<domain.length; i++)	{
		if (domain.charCodeAt(i)>127)	{
			alert("Ths domain name contains invalid characters.");
			return false;
		}
	}
	if (user.match(userPat)==null) {
		alert("The username doesn't seem to be valid.");
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Destination IP address is invalid!");
				return false;
			}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			alert("The domain name does not seem to be valid.");
			return false;
		}
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		alert("The address must end in a well-known domain or two letter " + "country.");
		return false;
	}
	if (len<2) {
		alert("This address is missing a hostname!");
		return false;
	}
	return true;
}

function CreateBookmarkLink() {
	var title = "SaveWebSites :: Your Ideal Startup Homepage";
	var url = "http://www.SaveWebSites.com";
	if (window.sidebar) {
		// Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
	} else if( window.external ) {
		// IE Favorite
		window.external.AddFavorite( url, title);
	} else if(window.opera && window.print) {
		// Opera Hotlist
		return true;
	}
}