var dbox = null;
function openbox(w,h,t,c)
{
	var box = document.createElement("div");
		if(document.all != null)
		{
			box.style.position = "absolute";
			box.style.width = w;
			box.style.height = h;
			box.style.left = ((document.documentElement.offsetWidth - w)/2);
			box.style.top = ((document.documentElement.offsetHeight - h)/2) + document.documentElement.scrollTop;
			document.documentElement.onscroll = function()
			{
					box.style.top = ((document.documentElement.offsetHeight - h)/2) + document.documentElement.scrollTop;
			}
		}
		else
		{
			box.style.position = "fixed";
			box.style.width = w + "px";
			box.style.height = h + "px";
			box.style.left = ((window.innerWidth - w)/2) + "px";
			box.style.top = ((window.innerHeight - h)/2) + "px";
		}
		
		if(t.length > 48)
		{
			titlestring = t.substr(0,45) + "...";
		}
		else titlestring = t;
		
		var titlebar = document.createElement("div");
			titlebar.className = "titlebar";
			titlebar.innerHTML = "<span class='introtitle' style='float:left'>"+ titlestring +"</span>";
			var close = document.createElement("div");
			close.className = "close";
			close.onclick = closebox;
			close.title = "close";
		titlebar.appendChild(close);
		box.appendChild(titlebar);
		box.appendChild(c);
		box.style.border = "2px solid #D4D4D4";
		box.style.background = "white";
	document.body.appendChild(box);
	dbox = box;
}

function openbusinessfeedopt(name,id, actions, updatecallback)
{
	if(!dbox)
	{
		if(updatecallback.args)
		{
			updatecallback.args.name = name;
			updatecallback.args.id = id;
			updatecallback.args.type = 1000;
		}
		
		var c = document.createElement("div");
		c.className = "maintext";
		var o = new OptionBox(name);
		o.addfeedoption("Updates their coupon", "/icons/subnav/specials.png", "Deals", actions.deals);
		o.addfeedoption("Posts a Newsletter or Pressrelease", "/myprofile/icons_newsletters.gif", "News", actions.news);
		o.addfeedoption("Receives a new review", "/icons/subnav/reviews.png", "Reviews", actions.reviews);
		c.appendChild(o.optsbox);
		var b = document.createElement("div");
		b.style.bottom = 5 + "px";
		b.style.right = 5 + "px";
		b.style.position = "absolute"; 
		var apply = document.createElement("button");
			apply.innerHTML = "Apply";
			apply.onclick = function(){applysettings(c,o,id,1000,updatecallback);};
		b.appendChild(apply);
		var cancel = document.createElement("button");
			cancel.innerHTML = "Cancel";
			cancel.onclick = function(){closebox();};
		b.appendChild(cancel);
		c.appendChild(b);
		openbox(512,256,name + " Feed",c);			
	}
}

function openmemberfeedopt(name,id, actions, updatecallback)
{
	if(!dbox)
	{
		if(updatecallback.args)
		{
			updatecallback.args.name = name;
			updatecallback.args.id = id;
			updatecallback.args.type = 1001;
		}
		
		var c = document.createElement("div");
		c.className = "maintext";
		var o = new OptionBox(name);
		o.addfeedoption("Posts a new Photo", "/icons/subnav/photos.png", "Photos", actions.photos);
		o.addfeedoption("Receives a comment on their Photo", "/icons/subnav/comments.png", "PostedComments", actions.post);
		o.addfeedoption("Posts a Comment", "/icons/subnav/comments.png", "ReceivedComments", actions.receive);
		o.addfeedoption("Reviews a Business", "/icons/subnav/reviews.png", "Reviews", actions.reviews);
		c.appendChild(o.optsbox);
		var b = document.createElement("div");
		b.style.bottom = 5 + "px";
		b.style.right = 5 + "px";
		b.style.position = "absolute"; 
		var apply = document.createElement("button");
			apply.innerHTML = "Apply";
			apply.onclick = function(){applysettings(c,o,id,1001,updatecallback);};
		b.appendChild(apply);
		var cancel = document.createElement("button");
			cancel.innerHTML = "Cancel";
			cancel.onclick = function(){closebox();};
		b.appendChild(cancel);
		c.appendChild(b);
		openbox(512,256,name + " Feed",c);			
	}
}

function openremovefeed(name, id, type, updatecallback)
{
	if(!dbox)
	{
		var c = document.createElement("div");
		c.className = "maintext";
		var o = new AlertBox(name,"Are you sure you want to remove %name% from your newsfeed?");
		c.appendChild(o.optsbox);
		var b = document.createElement("div");
		b.style.bottom = 5 + "px";
		b.style.right = 5 + "px";
		b.style.position = "absolute"; 
		var apply = document.createElement("button");
			apply.innerHTML = "Apply";
			apply.onclick = function(){applyremove(c, o, id, type, updatecallback);};
		b.appendChild(apply);
		var cancel = document.createElement("button");
			cancel.innerHTML = "Cancel";
			cancel.onclick = function(){closebox();};
		b.appendChild(cancel);
		c.appendChild(b);
		openbox(512,256,name + " Feed",c);			
	}
}

function opennotloggedinfeed(name)
{
	if(!dbox)
	{
		var c = document.createElement("div");
		c.className = "maintext";
		var o = new AlertBox(name,"Sorry, you must be logged in to configure notifications for %name% in your newsfeed.");
		c.appendChild(o.optsbox);
		var b = document.createElement("div");
		b.style.bottom = 5 + "px";
		b.style.right = 5 + "px";
		b.style.position = "absolute"; 
		var cancel = document.createElement("button");
			cancel.innerHTML = "Ok";
			cancel.onclick = function(){closebox();};
		b.appendChild(cancel);
		c.appendChild(b);
		openbox(512,256,name + " Feed",c);			
	}
}

function AlertBox(name, alerttext)
{
	this.optsbox = document.createElement("div");
	this.optsbox.style.left = 108 + "px";
	this.optsbox.style.top = 40 + "px";
	this.optsbox.style.height = 100 + "px";
	this.optsbox.style.width = 256 + "px";
	this.optsbox.style.position = "relative";
	this.optsbox.style.border = "1px solid #D4D4D4";
	this.optsbox.style.padding = 20 + "px";
	this.opts = document.createElement("table");
	this.opts.className = "maintext";
	this.opts.style.height = 100 + "px";
	var optrow = this.opts.insertRow(0);
	var r0 = optrow.insertCell(0);
	r0.style.verticalAlign = "middle";
	r0.style.textAlign = "center";
	r0.innerHTML = alerttext.replace("%name%",name);
	this.optsbox.appendChild(this.opts);
}

function OptionBox(name)
{
	
	if(name.length > 20)
	{
		namestring = name.substr(0,17) + "...";
	}
	else namestring = name;
	
	this.optsbox = document.createElement("div");
	this.optsbox.style.left = 108 + "px";
	this.optsbox.style.top = 40 + "px";
	this.optsbox.style.height = 100 + "px";
	this.optsbox.style.width = 256 + "px";
	this.optsbox.style.position = "relative";
	this.optsbox.style.border = "1px solid #D4D4D4";
	this.optsbox.style.padding = 20 + "px";
	this.optsarray = new Array();
	this.numopts = 0;
	this.optsbox.innerHTML = "<b>Notify me when " + namestring + ":</b><br>";
	this.opts = document.createElement("table");
	this.opts.className = "maintext";
	this.optsbox.appendChild(this.opts);
}

OptionBox.prototype.addfeedoption = function(description, img, value, checked)
{
	var optrow = this.opts.insertRow(this.numopts);
	var r0 = optrow.insertCell(0);
	r0.innerHTML = "<img src='" + img + "'>";
	r0.style.padding = 0;
	var opt = document.createElement("input");
		opt.value=value;
		opt.ievalue=value;
		opt.checked=checked;
		if(checked)opt.defaultChecked = true;
		opt.type="checkbox";
	this.numopts = this.optsarray.push(opt);
	var r1 = optrow.insertCell(1);
	r1.appendChild(opt);
	r1.style.padding = 0;
	var r2 = optrow.insertCell(2);
	r2.innerHTML = description;
	r2.style.padding = 0; 
};

function applysettings(c, o, id, type, updatecallback)
{
	c.style.display = "none";
		var statusImg = document.createElement("img");
			statusImg.src = '/main/working.gif';
			statusImg.style.left = 236 + "px";
			statusImg.style.top = 90 + "px";
			statusImg.style.position = "relative";
		c.parentNode.appendChild(statusImg);
		var args = "id=" + id + "&type=" + type;
		for(var i = 0; i < o.numopts; i++)
		{
			if(o.optsarray[i].checked)args += "&" + o.optsarray[i].ievalue;
		}
		if(updatecallback.args)
		{
			updatecallback.args.subact1 = o.optsarray[0].checked;
			updatecallback.args.subact2 = o.optsarray[1].checked;
			updatecallback.args.subact3 = o.optsarray[2].checked;
			if(updatecallback.args.type == 1001)
			{
				updatecallback.args.subact4 = o.optsarray[3].checked;	
			}
		}
	new Ajax("/myprofile/editfeed.cfm?" + args + "&clock=" + new Date().getTime(), {method: 'get', evalScripts: true,
		onComplete: function()
		{
			closebox();
			if(updatecallback.args) updatecallback.func(updatecallback.target,updatecallback.args);
			else updatecallback.func(updatecallback.target);
		}
	}).request();
}

function applyremove(c, o, id, type, updatecallback)
{
	
	c.style.display = "none";
		var statusImg = document.createElement("img");
			statusImg.src = '/main/working.gif';
			statusImg.style.left = 236 + "px";
			statusImg.style.top = 90 + "px";
			statusImg.style.position = "relative";
		c.parentNode.appendChild(statusImg);
		var args = "id=" + id + "&type=" + type + "&remove" + "&clock=" + new Date().getTime();
	new Ajax("/myprofile/editfeed.cfm?" + args, {method: 'get', evalScripts: true,
		onComplete: function()
		{
			closebox();
			updatecallback.func(updatecallback.target);
		}
	}).request();
}

function closebox()
{
	dbox.parentNode.removeChild(dbox);
	dbox = null;
	if(document.all != null)
	{
		document.documentElement.onscroll = null;
	}
}

function updatefeedoptions(me,args)
{
	/*
	var updated = "<td>" + args.name + "</td><td style='text-align:center;'>";
	if(args.type == 1000)
	{
		if(args.subact1)updated += "<img src='/icons/subnav/specials.png' title='Deals'> ";
		if(args.subact2)updated += "<img src='/myprofile/icons_newsletters.gif' title='News'> ";
		if(args.subact3)updated += "<img src='/icons/subnav/reviews.png' title='Reviews'> ";
		updated += "</td><td style='text-align:right'><a href='javascript:void(0);' onclick=\"openbusinessfeedopt('" + args.name + "'," + args.id + ",{deals:" + args.subact1 + ",news:" + args.subact2 + ",reviews:" + args.subact3 + "},{func:updatefeedoptions, target:this, args:{}});\">Edit Notifications</a>";
		updated += "</td><td style='text-align:right'><a href='javascript:void(0);'><span onclick=\"openremovefeed('" + args.name + "'," + args.id + ",1000, {func:updateremovefeedoptions, target:this})\">Remove</span></a></td>";
	}
	else // 1001
	{
		if(args.subact1)updated += "<img src='/icons/subnav/photos.png' title='Photos'> ";
		if(args.subact2)updated += "<img src='/icons/subnav/comments.png' title='Posted Comments'> ";
		if(args.subact3)updated += "<img src='/icons/subnav/comments.png' title='Received Comments'> ";
		if(args.subact4)updated += "<img src='/icons/subnav/reviews.png' title='Reviews'> ";
		updated += "</td><td style='text-align:right'><a href='javascript:void(0);' onclick=\"openmemberfeedopt('" + args.name + "'," + args.id + ",{photos:" + args.subact1 + ",post:" + args.subact2 + ",receive:" + args.subact3 + ",reviews:" + args.subact4 + "},{func:updatefeedoptions, target:this, args:{}});\">Edit Notifications</a>";
		updated += "</td><td style='text-align:right'><a href='javascript:void(0);'><span onclick=\"openremovefeed('" + args.name + "'," + args.id + ",1001, {func:updateremovefeedoptions, target:this})\">Remove</span></a></td>";
	}
	*/
	
	var row = me.parentNode.parentNode.parentNode.insertRow(me.parentNode.parentNode.rowIndex);
			  me.parentNode.parentNode.parentNode.deleteRow(me.parentNode.parentNode.rowIndex);
	var namecell = row.insertCell(0);
	namecell.innerHTML = args.name; //updated;
	if(args.type == 1000)
	{
		var subactcell = row.insertCell(1);
		subactcell.style.textAlign = "center";
		var updated = "";
		if(args.subact1)updated += "<img src='/icons/subnav/specials.png' title='Deals'> ";
		if(args.subact2)updated += "<img src='/myprofile/icons_newsletters.gif' title='News'> ";
		if(args.subact3)updated += "<img src='/icons/subnav/reviews.png' title='Reviews'> ";
		subactcell.innerHTML = updated;
		
		var editcell = row.insertCell(2);
		editcell.style.textAlign = "right";
		editcell.innerHTML = "<a href='javascript:void(0);' onclick=\"openbusinessfeedopt('" + args.name + "'," + args.id + ",{deals:" + args.subact1 + ",news:" + args.subact2 + ",reviews:" + args.subact3 + "},{func:updatefeedoptions, target:this, args:{}});\">Edit Notifications</a>";
		var removecell = row.insertCell(3);
		removecell.style.textAlign = "right";
		removecell.innerHTML = "<a href='javascript:void(0);'><span onclick=\"openremovefeed('" + args.name + "'," + args.id + ",1000, {func:updateremovefeedoptions, target:this})\">Remove</span></a>";
	}
	else // 1001
	{
		var subactcell = row.insertCell(1);
		subactcell.style.textAlign = "center";
		var updated = "";
		if(args.subact1)updated += "<img src='/icons/subnav/photos.png' title='Photos'> ";
		if(args.subact2)updated += "<img src='/icons/subnav/comments.png' title='Posted Comments'> ";
		if(args.subact3)updated += "<img src='/icons/subnav/comments.png' title='Received Comments'> ";
		if(args.subact4)updated += "<img src='/icons/subnav/reviews.png' title='Reviews'> ";
		subactcell.innerHTML = updated;
		
		var editcell = row.insertCell(2);
		editcell.style.textAlign = "right";
		editcell.innerHTML = "<a href='javascript:void(0);' onclick=\"openmemberfeedopt('" + args.name + "'," + args.id + ",{photos:" + args.subact1 + ",post:" + args.subact2 + ",receive:" + args.subact3 + ",reviews:" + args.subact4 + "},{func:updatefeedoptions, target:this, args:{}});\">Edit Notifications</a>";
		var removecell = row.insertCell(3);
		removecell.style.textAlign = "right";
		removecell.innerHTML = "<a href='javascript:void(0);'><span onclick=\"openremovefeed('" + args.name + "'," + args.id + ",1001, {func:updateremovefeedoptions, target:this})\">Remove</span></a>";
	}
	
	
	//me.parentNode.parentNode.replaceNode(row);
	//$(me.parentNode.parentNode).setHTML(updated);

	//me.parentNode.parentNode.innerHTML = updated;
}

function updateremovefeedoptions(me)
{
	me.parentNode.parentNode.parentNode.parentNode.removeChild(me.parentNode.parentNode.parentNode);
}

function updatelistview(me, args)
{
	/*
	 <tr onclick="openbusinessfeedopt('#jsstringformat(htmleditformat(businessname))#',#listingid#,{deals:1,news:1,reviews:1},{func:updatelistview, target:this});">
	 <td>
	 	<td class="icon_cell" nowrap>
			<a href="javascript:void(0);">
				<img src="/icons/subnav/rss.png" border="0">
			</a>
		</td>
		<td class="label_cell" nowrap>
			<a href="javascript:void(0);">
				<cfif isdefined('infeed') and #infeed# eq 1>
				Edit Notifications
				<cfelse>
				Get Notifications
				</cfif>
			</a>
		</td>
	</tr>
	 */
	var row = me.parentNode.insertRow(me.rowIndex);
	me.parentNode.deleteRow(me.rowIndex);
	
	if(args.type == 1000)
	{
		row.onclick = function(){
			openbusinessfeedopt(args.name,args.id,{deals:args.subact1,news:args.subact2,reviews:args.subact3},{func:updatelistview, target:this, args:{}});
		};
	}
	else
	{
		row.onclick = function(){
			openmemberfeedopt(args.name,args.id,{photos:args.subact1,post:args.subact2,receive:args.subact3,reviews:args.subact4},{func:updatelistview, target:this, args:{}});
		};
	}
	
	var iconcell = row.insertCell(0);
	iconcell.className = "icon_cell";
	iconcell.noWrap = true;
	iconcell.innerHTML = "<a href='javascript:void(0);'><img src='/icons/subnav/rss.png' border='0'></a>";
	
	var labelcell = row.insertCell(1);
	labelcell.className = "label_cell";
	labelcell.noWrap = true;
	labelcell.innerHTML = "<a href='javascript:void(0);'>Edit Notifications</a>";
	
	//me.innerHTML = me.innerHTML.replace(/Get /g,"Edit ");
}
