var containers = new Array();
var widgetArray = new Array();
var mousePosition = [0, 0];
var activeWidget;
var activeRssWidget;




	
	

		
	
	


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 [left, top];
}

function getMouseXY(e)
{
	if(!e)
		e = window.event;

	if(e.clientX || e.clientY)
	{
		tempX = e.clientX + document.body.scrollLeft;
		tempY = e.clientY + document.body.scrollTop;
	}
	else
	{
		tempX = e.pageX;
		tempY = e.pageY;
	}

	mousePosition = [tempX, tempY];
}

function widget(id, container, collapseable, collapsed) //body for text only
{
	var body_obj = document.getElementById(id + '_body');
	
	if(body_obj)
	{
		this.id = id;
		this.container = container;
		this.order = 0;
		this.ypos = 0;
		this.collapseable = collapseable;
		this.collapsed = collapsed;
		this.obj = document.getElementById(id);
		this.offHeight = 0;
		this.offWidth = 0;
		this.containerObj = document.getElementById(container);
		this.beforeNode = null;
		this.editing = false;
		this.maxHeight = body_obj.offsetHeight;

		widgetArray[widgetArray.length] = this;
		
		if(collapsed)
		{
			body_obj.style.height = '1px';
			body_obj.style.display = 'none';
		}
	}

	return this;
}

function getWidgetById(id)
{
	for(var i = 0; i < widgetArray.length; i++)
	{
		if(widgetArray[i].id == id)
			return widgetArray[i];
	}

	return false;
}

function getWidgetPositionInArray(id)
{
	for(var i = 0; i < widgetArray.length; i++)
	{
		if(widgetArray[i].id == id)
			return i;
	}
	
	return false;
}

function dragWidgetStart(widgetObj, e)
{
	var widget = getWidgetById(widgetObj.id);

	if(widget)
	{
		//Get widget properties
		var height = widget.obj.offsetHeight;
		var width = widget.obj.offsetWidth;
		var position = getPosition(widget.obj);
		
		var newWidgetArray = new Array();
		var container_widget_count = 0;
		for(var i = 0; i < widgetArray.length; i++)
		{
			if(widgetArray[i].container == widget.container)
			{	
				newWidgetArray[newWidgetArray.length] = widgetArray[i];
				if(widgetArray[i].id == widgetObj.id)
					break;
					
				container_widget_count++;
			}
		}
		
		if(container_widget_count > 0)
		{
			newWidgetArray[container_widget_count-1].obj.style.marginBottom = 15 + height;
		}
		else
			document.getElementById(widget.container).style.paddingTop = 15 + height;

		//Set new widget properties
		widget.offWidth = parseInt(position[0] - mousePosition[0]);
		widget.offHeight = parseInt(position[1] - mousePosition[1]) - 20;
		widget.obj.style.height = height;
		widget.obj.style.width = width;
		widget.obj.style.top = position[1] + 'px';
		widget.obj.style.left = position[0] + 'px';
		widget.obj.style.position = "absolute";
		widget.obj.style.zIndex = 11;
		widget.obj.style.filter = 'alpha(opacity=75)';
		widget.obj.style.opacity = '0.75';

		activeWidget = widget;
	}
}

function dragWidgetDrag(e)
{
	getMouseXY(e);

	if(activeWidget)
	{
		unselectAll();

		clearContainerBackgrounds();

		var container = dragWidgetFindContainer(activeWidget);

		if(container)
		{
			activeWidget.containerObj = container;
			container.className = "wcbs";

			var containerWidgetArray = new Array();

			for(var i = 0; i < widgetArray.length; i++)
			{
				if(widgetArray[i].container == container.id && widgetArray[i].id != activeWidget.id)
					containerWidgetArray[containerWidgetArray.length] = widgetArray[i];
			}

			activeWidget.beforeNode = null;
			beforeNodeYpos = 0;

			for(var j = 0; j < containerWidgetArray.length; j++)
			{
				var objPosition = getPosition(containerWidgetArray[j].obj);
				var objPosOffset = objPosition[1] + 15;
				
				if(objPosOffset < mousePosition[1] && objPosOffset > beforeNodeYpos)
				{
					beforeNodeYpos = objPosition[1];
					activeWidget.beforeNode = containerWidgetArray[j].obj;
				}
			}

			clearSpacing();

			if(activeWidget.beforeNode)
			{
				activeWidget.beforeNode.style.marginBottom = (activeWidget.obj.offsetHeight + 15) + 'px';
			}
			else
			{
				container.style.paddingTop = (activeWidget.obj.offsetHeight) + 'px';
			}
		}

		activeWidget.obj.style.top = parseInt(mousePosition[1] + activeWidget.offHeight) + 'px';
		activeWidget.obj.style.left = parseInt(mousePosition[0] + activeWidget.offWidth) + 'px';
	}
}

function addWidgetToContainer(widget)
{
	if(widget.beforeNode)
	{
		var parentNode = widget.containerObj;

		if(widget.beforeNode.nextSibling)
			parentNode.insertBefore(widget.obj, widget.beforeNode.nextSibling);
		else
			parentNode.appendChild(widget.obj);
	}
	else if(widget.containerObj.hasChildNodes())
	{
		var parentNode = widget.containerObj;
		parentNode.insertBefore(widget.obj, parentNode.childNodes[0]);
	}
	else
	{
		var container = dragWidgetFindContainer(widget);
		var parentNode = widget.containerObj;
		
		if(container)
			parentNode.appendChild(widget.obj);
	}
	
}

function dragWidgetDrop()
{
	clearContainerBackgrounds();

	if(activeWidget)
	{
		if(activeWidget.containerObj)
		{
			//Set widget data
			activeWidget.obj.style.height = "auto";
			activeWidget.obj.style.width = "auto";
			activeWidget.obj.style.position = "relative";
			activeWidget.obj.style.top = 0;
			activeWidget.obj.style.left = 0;
			activeWidget.obj.style.zIndex = 10;
			activeWidget.obj.style.filter = 'alpha(opacity=100)';
			activeWidget.obj.style.opacity = '1.0';
			activeWidget.container = activeWidget.containerObj.id;
			addWidgetToContainer(activeWidget);
			activeWidget.beforeNode = null;

			clearSpacing();
			
			//Set widget order and save
			setContainerWidgetOrder(activeWidget.container);
			saveWidgetRequest(activeWidget);
		}
	}

	activeWidget = null;
}

function dragWidgetFindContainer(widget)
{
	for(var i = 0; i < containers.length; i++)
	{
		if(isMouseInContainer(containers[i]))
			return containers[i];
	}

	return false;
}

function isMouseInContainer(container)
{
	var position = getPosition(container);
	var height = container.offsetHeight;
	var width = container.offsetWidth;

	if(mousePosition[0] > position[0] && mousePosition[0] < position[0] + width && mousePosition[1] > position[1] && mousePosition[1] < position[1] + height)
		return true;

	return false;
}

function clearContainerBackgrounds()
{
	for(var i = 0; i < containers.length; i++)
		containers[i].className = "wcb";
}

function removeChildren(obj)
{
	while(obj.hasChildNodes())
		obj.removeChild(obj.lastChild);
}

function clearSpacing()
{
	for(var i = 0; i < widgetArray.length; i++)
		widgetArray[i].obj.style.marginBottom = 0;

	for(var j = 0; j < containers.length; j++)
		containers[j].style.paddingTop = 0;
}

function addContainer(id)
{
	containers[containers.length] = document.getElementById(id);
}

function closeWidget(id)
{
	var widget = getWidgetById(id);
	
	if(widget)
	{
		saveWidgetRequest(widget, "c");
		
		var container = widget.containerObj;
		var posInArr = getWidgetPositionInArray(widget.id);
		
		killDOMElement(widget.obj);
		
		if(container)
			container.removeChild(widget.obj);
			
		widgetArray.splice(posInArr, 1);
	}
}

function switchNavigationRequest()
{
	var url = "ct_xt_switch_navigation.bix?c=" + campaign_id + "&rand=" + generateRandomString(8);

	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	    }
	}
	// IE
	else if(window.ActiveXObject)
	{
	    try
	    {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
	    }
	}

	if(!http_request)
	{
	    alert("Cannot create an XMLHTTP instance");
	    return false;
	}

	http_request.abort();
	http_request.onreadystatechange = switchNavigationExecute;
	http_request.open('GET', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', '0');
	http_request.send(null);
}

function switchNavigationExecute()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			if(!checkSessionTimeout(http_request.responseText))
	    			return;
	    		
			var arr = http_request.responseText.split("|");
			var id = arr[0];
			var func = arr[1];

			if(func == "off")
			{
				document.getElementById('horizontal_nav').style.display = 'none';

				var widget = getWidgetById(id);
				if(widget)
				{
					document.getElementById(id).style.display = 'block';
				}
				else
				{
					addWidgetRequest(document.getElementById('default_nav_type'), default_container, page);
				}
			}
			else
			{
				document.getElementById('horizontal_nav').style.display = 'block';

				var widget = getWidgetById(id);
				if(widget)
					document.getElementById(id).style.display = 'none';
			}
		}
		else
		{
			openMessageBox('Server Error', 'There was a problem with the request.', 1700);
		}
	}
}

function switchWidgetEditability(id, edit_body)
{
	var widget = getWidgetById(id);
		
	if(widget)
	{
		if(widget.editing)
		{
			widget.editing = false;
			
			
			var newTitle = document.getElementById(widget.id + "_title_edit").value;
			document.getElementById(widget.id + "_title_text").innerHTML = newTitle;
			
			if(edit_body)
			{
				var newBody = document.getElementById(widget.id + "_body_edit").value;
				document.getElementById(widget.id + "_body").innerHTML = newBody;
				
				editWidgetRequest(widget);
			}
			else
			{
				editWidgetRequest(widget, "no_body");
				showHide(widget.id + "_image_changer");
			}
		}
		else
		{
			widget.editing = true;
			
			var titleTextObj = document.getElementById(widget.id + "_title_text");
			var oldTitleText = titleTextObj.innerHTML;
			oldTitleText = oldTitleText.replace(/\"/, "\"");
			titleTextObj.innerHTML = "<input onMouseDown='stopPropagation(event);' type='text' style='width:100%;' maxlength='90' id='" + widget.id + "_title_edit' value=\"" + oldTitleText + "\">";
			
			if(edit_body)
			{
				var bodyTextObj = document.getElementById(widget.id + "_body");
				var oldBodyText = bodyTextObj.innerHTML;
				oldBodyText = oldBodyText.replace(/\"/, "\"");
				bodyTextObj.innerHTML = "<textarea style='width:100%; height:150px;' id='" + widget.id + "_body_edit'>" + oldBodyText + "</textarea>";
			}
			else
			{
				showHide(widget.id + "_image_changer");
			}
		}
	}
}

function switchWidgetEditabilityRich(id, edit_body)
{
	var widget = getWidgetById(id);
		
	if(widget)
	{
		if(widget.editing)
		{
			widget.editing = false;
			
			var newTitle = document.getElementById(widget.id + "_title_edit").value;
			document.getElementById(widget.id + "_title_text").innerHTML = newTitle;
			
			if(edit_body)
			{
				tinyMCE.execCommand("mceRemoveControl", true, widget.id + "_rich_text_widget");
				editWidgetRequest(widget, "Rich");
			}
			else
			{
				editWidgetRequest(widget, "no_body");
				showHide(widget.id + "_image_changer");
			}
		}
		else
		{
			widget.editing = true;
			
			var titleTextObj = document.getElementById(widget.id + "_title_text");
			var oldTitleText = titleTextObj.innerHTML;
			oldTitleText = oldTitleText.replace(/\"/, "\"");
			titleTextObj.innerHTML = "<input onMouseDown='stopPropagation(event);' type='text' style='width:100%;' maxlength='90' id='" + widget.id + "_title_edit' value=\"" + oldTitleText + "\">";
			
			if(edit_body)
			{
				tinyMCE.settings = configArray[0];
				tinyMCE.execCommand("mceAddControl", true, widget.id + "_rich_text_widget");	
			}
			else
			{
				showHide(widget.id + "_image_changer");
			}
		}
	}
}

function switchWidgetEditabilityDevCustom(id)
{
	var widget = getWidgetById(id);

	if(widget)
	{
		if(widget.editing)
		{
			widget.editing = false;
			
			var newTitle = document.getElementById(widget.id + "_title_edit").value;
			document.getElementById(widget.id + "_title_text").innerHTML = newTitle;
			
			var code_input = document.getElementById(id + "_code");
			if(code_input)
				code_input.style.display = 'none';
				
			editWidgetRequest(widget, 'Dev Custom Code');
		}
		else
		{
			widget.editing = true;
			
			var titleTextObj = document.getElementById(widget.id + "_title_text");
			var oldTitleText = titleTextObj.innerHTML;
			oldTitleText = oldTitleText.replace(/\"/, "\"");
			titleTextObj.innerHTML = "<input onMouseDown='stopPropagation(event);' type='text' style='width:100%;' maxlength='90' id='" + widget.id + "_title_edit' value=\"" + oldTitleText + "\">";
			
			var code_input = document.getElementById(id + "_code");
			if(code_input)
				code_input.style.display = 'block';
		}
	}
}

function switchWidgetLabelEditability(id, lbl)
{
	var widget = getWidgetById(id);
		
	if(widget)
	{
		if(widget.editing)
		{
			widget.editing = false;
			
			var widget_options = document.getElementById(widget.id + '_options');
			if(widget_options)
			{
				document.getElementById(widget.id + '_title').className = 'title_back';
				widget_options.style.display = 'none';
			}
			
			var newTitle = document.getElementById(widget.id + "_title_edit").value;
			document.getElementById(widget.id + "_title_text").innerHTML = newTitle;
			
			editWidgetRequest(widget, "title_only");
			//editMenuLabelRequest(lbl, newTitle);
		}
		else
		{
			widget.editing = true;
			
			var widget_options = document.getElementById(widget.id + '_options');
			if(widget_options)
			{
				widget_options.style.display = 'block';
				document.getElementById(widget.id + '_title').style.height = 'auto';
			}
			
			var titleTextObj = document.getElementById(widget.id + "_title_text");
			var oldTitleText = titleTextObj.innerHTML;
			oldTitleText = oldTitleText.replace(/\"/, "\"");
			titleTextObj.innerHTML = "<input onMouseDown='stopPropagation(event);' type='text' style='width:100%;' maxlength='90' id='" + widget.id + "_title_edit' value=\"" + oldTitleText + "\">";
			document.getElementById(widget.id + "_title_edit").focus();
		}
	}
}

function switchWidgetRSSEditability(id)
{
	var widget = getWidgetById(id);

	if(widget)
	{
		if(widget.editing)
		{
			widget.editing = false;

			var newTitle = document.getElementById(widget.id + "_title_edit").value;
			document.getElementById(widget.id + "_title_text").innerHTML = newTitle;

			var newRssUrl = document.getElementById(widget.id + "_rss_edit").value;
			document.getElementById(widget.id + "_rss_url").value = newRssUrl;
			
			document.getElementById(widget.id + "_rss_body").innerHTML = "<center><img src='images/ajax-loader-big.gif'></center>";

			editWidgetRequest(widget, "RSS");
		}
		else
		{
			widget.editing = true;

			var titleTextObj = document.getElementById(widget.id + "_title_text");
			var oldTitleText = titleTextObj.innerHTML;
			oldTitleText = oldTitleText.replace(/\"/, "\"");
			titleTextObj.innerHTML = "<input onMouseDown='stopPropagation(event);' type='text' style='width:100%;' maxlength='90' id='" + widget.id + "_title_edit' value=\"" + oldTitleText + "\">";

			var rssUrlObj = document.getElementById(widget.id + "_rss_url");
			var oldRssUrl = rssUrlObj.value;
			oldRssUrl = oldRssUrl.replace(/\"/, "\"");
			document.getElementById(widget.id + "_rss_body").innerHTML = "URL: <input type='text' style='width:90%;' value=\"" + oldRssUrl + "\" id='" + widget.id + "_rss_edit'>";
		}
	}
}

function editWidgetRequest(widget, type)
{	
	var url = "ct_xt_edit_widget.bix?c=" + campaign_id + "&id=" + widget.id + "&type=" + type + "&page=" + page + "&rand=" + generateRandomString(8);
	var post_str = "";
	
	if(type == "title_bar")
	{
		var title_bar = 1;
		var title_bar_obj = document.getElementById(widget.id + "_title_img");

		if(title_bar_obj.src.indexOf("images/widg_2.gif") != -1)
		{
			title_bar_obj.src = "images/widg_1.gif";
			title_bar = 1;
		}
		else
		{
			title_bar_obj.src = "images/widg_2.gif";
			title_bar = 0;
		}
		
		url += "&tb=" + title_bar;
	}
	else if(type == "no_body" || type == "title_only")
	{
		var widgetTitle = document.getElementById(widget.id + "_title_text").innerHTML;
		post_str = "title=" + escape(encodeURI(widgetTitle));
	}
	else if(type == "RSS")
	{
		var widgetTitle = document.getElementById(widget.id + "_title_text").innerHTML;
		var widgetBody = document.getElementById(widget.id + "_rss_url").value;
		post_str = "title=" + escape(encodeURI(widgetTitle)) + "&body=" + escape(encodeURI(widgetBody));
	}
	else if(type == "Rich")
	{
		var widgetTitle = document.getElementById(widget.id + "_title_text").innerHTML;
		var widgetBody = document.getElementById(widget.id + "_rich_text_widget").innerHTML;
		widgetBody = widgetBody.replace(/\+/ig, "#$#");
		post_str = "title=" + escape(encodeURI(widgetTitle)) + "&body=" + escape(encodeURI(widgetBody));
	}
	else if(type == "RichEdit")
	{
		var widgetTitle = document.getElementById(widget.id + "_title_edit").value;
		var widgetBody = tinyMCE.activeEditor.getContent();
		widgetBody = widgetBody.replace(/\+/ig, "#$#");
		post_str = "title=" + escape(encodeURI(widgetTitle)) + "&body=" + escape(encodeURI(widgetBody));
	}
	else if(type == "Dev Custom Code")
	{
		var widgetTitle = document.getElementById(widget.id + "_title_text").innerHTML;
		var widgetBody = document.getElementById(widget.id + "_code").value;
		widgetBody = widgetBody.replace(/\+/ig, "#$#");
		post_str = "title=" + escape(encodeURI(widgetTitle)) + "&body=" + escape(encodeURI(widgetBody));
	}
	else
	{
		var widgetTitle = document.getElementById(widget.id + "_title_text").innerHTML;
		var widgetBody = document.getElementById(widget.id + "_body").innerHTML;
		widgetBody = widgetBody.replace(/\+/ig, "#$#");
		post_str = "title=" + escape(encodeURI(widgetTitle)) + "&body=" + escape(encodeURI(widgetBody));
	}
	
	var widget_options = document.getElementById(widget.id + "_option_data");
	if(widget_options)
		post_str += "&options=" + escape(encodeURI(widget_options.value));
	
	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	    }
	}
	// IE
	else if(window.ActiveXObject)
	{
	    try
	    {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
	    }
	}

	if(!http_request)
	{
	    alert("Cannot create an XMLHTTP instance");
	    return false;
	}
	
	http_request.abort();
	http_request.onreadystatechange = editWidgetExecute;
	http_request.open('POST', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', post_str.length);
	http_request.setRequestHeader('Connection', 'close');
	http_request.send(post_str);
}

function editWidgetExecute() 
{
	if (http_request.readyState == 4) 
	{
	    if (http_request.status == 200) 
	    {
	    	if(!checkSessionTimeout(http_request.responseText))
	    		return;
	    		
	    	//widget edited
	    	
	    	var response_str = http_request.responseText;
	    	
	    	if(response_str.length == "failed")
	    	{
	    		
	    	}
	    	else if(response_str.length > 10)
	    	{
	    		activeRssWidget = response_str;
	    		updateRSSFeedRequest();
	    	}
	    } 
	    else 
	    {
		openMessageBox('Server Error', 'There was a problem with the request.', 1700);
	    }
	}

}

function editWidgetTitleOptionsRequest(lbl, id_ipt, display_confirm)
{
	var url = "ct_xt_edit_widget_title_options.bix?c=" + campaign_id + "&lbl=" + lbl + "&val=" + escape(encodeURI(id_ipt)) + "&options=" + "&rand=" + generateRandomString(8);

	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	    }
	}
	// IE
	else if(window.ActiveXObject)
	{
	    try
	    {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
	    }
	}

	if(!http_request)
	{
	    alert("Cannot create an XMLHTTP instance");
	    return false;
	}
	
	http_request.abort();
	
	http_request.onreadystatechange = editWidgetTitleOptionsExecute;
		
	http_request.open('GET', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', '0');
	http_request.send(null);
}

function editWidgetTitleOptionsExecute() 
{
	if (http_request.readyState == 4) 
	{
	    if (http_request.status == 200) 
	    {
	    	if(!checkSessionTimeout(http_request.responseText))
	    		return;
	    		
	    	if(display_confirm)
	    	{
			if(http_request.responseText == "label edit sucessfull")
			{
				openMessageBox('Label Edit', 'Label edited successfully.', 1700);
			}
			else
			{
				openMessageBox('Label Edit', 'Error editing label.', 1700);
			}
		}
	    } 
	    else 
	    {
		openMessageBox('Server Error', 'There was a problem with the request.', 1700);
	    }
	}

}

function updateRSSFeedRequest()
{
	var url = "ct_xt_get_widget_rss_feed.bix?c=" + campaign_id + "&widget_id=" + activeRssWidget + "&rand=" + generateRandomString(8);

	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	    }
	}
	// IE
	else if(window.ActiveXObject)
	{
	    try
	    {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
	    }
	}

	if(!http_request)
	{
	    alert("Cannot create an XMLHTTP instance");
	    return false;
	}
	
	http_request.abort();
	http_request.onreadystatechange = updateRSSFeedExecute;
	http_request.open('GET', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', '0');
	http_request.send(null);
}

function updateRSSFeedExecute() 
{
	if (http_request.readyState == 4) 
	{
	    if (http_request.status == 200) 
	    {
	    	if(!checkSessionTimeout(http_request.responseText))
	    		return;
	    		
	    	//widget edited
	    	
	    	var response_str = http_request.responseText;
	    	
	    	if(response_str.length == "invalid")
	    	{
	    		document.getElementById(activeRssWidget + "_rss_body").innerHTML = "Invalid RSS feed.";
	    	}
	    	else
	    	{
	    		document.getElementById(activeRssWidget + "_rss_body").innerHTML = response_str;
	    	}
	    } 
	    else 
	    {
		openMessageBox('Server Error', 'There was a problem with the request.', 1700);
	    }
	}

}

function killDOMElement(d)
{
	var a = d.attributes, i, l, n;
	
	if(a)
	{
		l = a.length;
		
		for(i = 0; i < l; i += 1)
		{
			n = a[i].name;
			if(typeof d[n] === 'function')
				d[n] = null;
		}
	}
	
	a = d.childNodes;
	
	if(a)
	{
		l = a.length;
		
		for(i = 0; i < l; i += 1)
			killDOMElement(d.childNodes[i]);
	}
}

function unselectAll()
{
	if(window.getSelection)
		window.getSelection().removeAllRanges();
	else
	{
		//create textrange code for IE here...
	}
}

function saveWidgetRequest(widget, func)
{
	var order = widget.order;
	
	var url = "ct_xt_save_widget.bix?c=" + campaign_id + "&page=" + page + "&id=" + widget.id + "&clps=" + widget.collapsed + "&cntr=" + widget.container + "&odr=" + order + "&func=" + func + "&rand=" + generateRandomString(8);

	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	    }
	}
	// IE
	else if(window.ActiveXObject)
	{
	    try
	    {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
	    }
	}

	if(!http_request)
	{
	    alert("Cannot create an XMLHTTP instance");
	    return false;
	}
	
	http_request.abort();
	http_request.onreadystatechange = saveWidgetExecute;
	http_request.open('GET', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', '0');
	http_request.send(null);
}

function saveWidgetExecute() 
{
	if (http_request.readyState == 4) 
	{
	    if (http_request.status == 200) 
	    {
	    	if(!checkSessionTimeout(http_request.responseText))
	    		return;
	    		
	    	//widget info saved
	    } 
	    else 
	    {
		openMessageBox('Server Error', 'There was a problem with the request.', 1700);
	    }
	}

}

function addWidgetRequest(type, container, page)
{
	// Check if the default container is hidden
	if(getObjDisplay(document.getElementById(container)) == 'none')
	{
		// Look for a non-hidden div
		for(var i = 0; i < containers.length; i++)
		{
			if(getObjDisplay(containers[i]) != 'none')
			{
				container = containers[i].id;
				break;
			}
		}
	}
							
	var url = "ct_xt_add_widget.bix?c=" + campaign_id + "&type=" + escape(encodeURI(type)) + "&ctnr=" + container + "&page=" + page + "&rand=" + generateRandomString(8);

	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	    }
	}
	// IE
	else if(window.ActiveXObject)
	{
	    try
	    {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
	    }
	}

	if(!http_request)
	{
	    alert("Cannot create an XMLHTTP instance");
	    return false;
	}

	http_request.abort();
	http_request.onreadystatechange = addWidgetExecute;
	http_request.open('GET', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', '0');
	http_request.send(null);
}

function stripNonAlphanumeric(str)
{
	return str.replace(/^\s+|\s+$/g, '');
}

function addWidgetExecute()
{
	if (http_request.readyState == 4)
	{
	    if (http_request.status == 200)
	    {
	    	if(!checkSessionTimeout(http_request.responseText))
	    		return;
	    		
		var response_str = http_request.responseText;
		
		if(stripNonAlphanumeric(response_str) == "exists")
		{
			openMessageBox('Add Widget', 'This widget already exists on this page.', 2500);
			return;
		}
		else
		{
			var widgetData = http_request.responseText.split("<$%&*(#$>");

			var newWidgetDiv = document.createElement('div');
			newWidgetDiv.setAttribute('id', stripNonAlphanumeric(widgetData[0]));
			newWidgetDiv.className = "widget_container";
			
			newWidgetDiv.innerHTML = widgetData[3];

			//Add new widget to page
			document.getElementById(widgetData[1]).appendChild(newWidgetDiv);

			//Load widget to drag/drop system
			var new_widget = new widget(stripNonAlphanumeric(widgetData[0]), widgetData[1], false, false);
			new_widget.order = parseInt(widgetData[2]);
		}
	    }
	    else
	    {
		openMessageBox('Server Error', 'There was a problem with the request.', 1700);
	    }
	}

}

function setContainerWidgetOrder(container_id)
{
	var newWidgetArray = new Array();
		
	for(var i = 0; i < widgetArray.length; i++)
	{
		if(widgetArray[i].container == container_id)
		{	
			var position = getPosition(widgetArray[i].obj);
			widgetArray[i].ypos = position[1];
			newWidgetArray[newWidgetArray.length] = widgetArray[i];
		}
	}
	
	newWidgetArray.sort(sortYPos);
	
	for(var j = 0; j < newWidgetArray.length; j++)
		newWidgetArray[j].order = j;
}

function sortYPos(a, b)
{
	return a.ypos - b.ypos;
}

function updateImageWidget(widget_id,link_url)
{
	document.getElementById(widget_id + '_image').src = link_url;
}

function minMaxWidget(widget_id, content_id)
{
	var widget = getWidgetById(widget_id);
	var contentObj = document.getElementById(content_id);
	
	if(!widget.collapsed)
	{
		var new_height = parseInt(contentObj.offsetHeight) - 10;
		
		if(new_height < 1)
			new_height = 1;
			
		contentObj.style.height = new_height;
		
		if(parseInt(contentObj.offsetHeight) <= 1)
		{
			contentObj.style.height = 1;
			contentObj.style.display = "none";
			widget.collapsed = true;
			document.getElementById(widget_id + '_title_minmax_img').className = 'widget_maximize';
		}
		else
			window.setTimeout("minMaxWidget('" + widget_id + "', '" + content_id + "')", 45);
	}
	else
	{	
		contentObj.style.display = "block";
		contentObj.style.height = parseInt(contentObj.offsetHeight) + 10;
		
		if(parseInt(contentObj.offsetHeight) >= widget.maxHeight)
		{
			contentObj.style.height = widget.maxHeight;
			widget.collapsed = false;
			document.getElementById(widget_id + '_title_minmax_img').className = 'widget_minimize';
		}
		else
			window.setTimeout("minMaxWidget('" + widget_id + "', '" + content_id + "')", 45);
	}
}

function displayWidgetImport()
{
	var widget_import_iframe_container = document.getElementById('widget_import_iframe_container');

	widget_import_iframe_container.innerHTML = "<iframe src='i_widget_import.bix?c=" + campaign_id + "' scrolling='no' frameborder='0' id='widget_import_iframe' style='height:50px; width:170px;'></iframe>";
}

// Functions needed for specific widgets
/////////////////////////////////////////////////////////
function getMiniIdeaListRequest(order, page, strKeywords, num_ideas_page, strCat_id, strtag_name)
{
	var main_content = document.getElementById('mini_idea_list_content');
		
	if(main_content)
		main_content.innerHTML = "<div style='margin-top:15px; margin-bottom:15px;' align='center'><img src='images/ajax-loader-big.gif'></div>";
	
	var url = "ct_xt_get_mini_idea_list.bix?c=" + campaign_id + "&page=" + page + "&order=" + order + "&strKeywords=" + strKeywords + "&num_ideas_page=" + num_ideas_page + "&cat_id=" + strCat_id + "&strtag_name=" + strtag_name + "&rand=" + generateRandomString(8);

	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	    }
	}
	// IE
	else if(window.ActiveXObject)
	{
	    try
	    {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
	    }
	}

	if(!http_request)
	{
	    alert("Cannot create an XMLHTTP instance");
	    return false;
	}
	
	http_request.abort();
	http_request.onreadystatechange = getMiniIdeaListExecute;
	http_request.open('GET', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', '0');
	http_request.send(null);
}

function getMiniIdeaListExecute() 
{
	if (http_request.readyState == 4) 
	{
	    if (http_request.status == 200) 
	    {
	    	if(!checkSessionTimeout(http_request.responseText))
	    		return;
	    		
	    	document.getElementById('mini_idea_list_all_container').innerHTML = http_request.responseText;
	    } 
	    else 
	    {
		openMessageBox('Server Error', 'There was a problem with the request.', 1700);
	    }
	}

}



function getEntMiniIdeaListRequest(straffiliate, order, page, level_id)
{
	var url = "ct_xt_get_ent_mini_idea_list.bix?a=" + straffiliate + "&page=" + page + "&level_id=" + level_id + "&order=" + order + "&rand=" + generateRandomString(8);

	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	    }
	}
	// IE
	else if(window.ActiveXObject)
	{
	    try
	    {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
	    }
	}

	if(!http_request)
	{
	    alert("Cannot create an XMLHTTP instance");
	    return false;
	}
	
	http_request.abort();
	http_request.onreadystatechange = getEntMiniIdeaListExecute;
	http_request.open('GET', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', '0');
	http_request.send(null);
}

function getEntMiniIdeaListExecute() 
{
	if (http_request.readyState == 4) 
	{
	    if (http_request.status == 200) 
	    {
	    	if(!checkSessionTimeout(http_request.responseText))
	    		return;
	    		
	    	document.getElementById('ent_mini_idea_list_all_container').innerHTML = http_request.responseText;
	    } 
	    else 
	    {
		openMessageBox('Server Error', 'There was a problem with the request.', 1700);
	    }
	}

}

function SearchUsersWIDG()
{
	window.location = "ct_user_search.bix?c=" + campaign_id + "&page=0&user_search=" + document.getElementById('user_search').value;
}

function submitUserSearchWIDG(e)
{
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;

	if (keycode == 13)
	   {
		   SearchUsersWIDG();
		   return false;
	   }
	else
	   return true;
}

// Common functions
/////////////////////////////////////////////////////////
function getObjDisplay(obj)
{
	if(navigator.userAgent.toLowerCase().indexOf("msie") == -1)
		return getComputedStyle(obj, null).display; // DOM compliant browser
	else
		return obj.currentStyle.display; // for msie
}

function checkPassword(pass_1, pass_2, advanced_security, error_obj)
{
	var reNum = /[0-9]/;
	var reSym = /[!"#$%&'()*+,-./:;?@[\\\]_`{|}~]/;

	// Check basic security
	if(pass_1 != pass_2)
	{
		if(error_obj)
			error_obj.innerHTML = "*Passwords do not match.";
			
		return false;
	}
	else if(pass_1.length < 6)
	{
		if(error_obj)
			error_obj.innerHTML = "*Your password must be at least 6 characters.";
			
		return false;
	}
	else if(!reNum.test(pass_1))
	{
		if(error_obj)
			error_obj.innerHTML = "*Your password must contain at least one number (0-9).";
			
		return false;
	}

	// Check advanced security
	if(advanced_security)
	{
		if(pass_1.length < 8)
		{
			if(error_obj)
				error_obj.innerHTML = "*Your password must be at least 8 characters.";
				
			return false;
		}
		else if(pass_1 == pass_1.toUpperCase())
		{
			if(error_obj)
				error_obj.innerHTML = "<br>*Your password must contain at least one lowercase letter.";
				
			return false;
		}
		else if(pass_1 == pass_1.toLowerCase())
		{
			if(error_obj)
				error_obj.innerHTML = "<br>*Your password must contain at least one uppercase letter.";
				
			return false;
		}
	}
	
	return true;
}

// Idea List and View Idea page
/////////////////////////////////////////////////////////
function favoriteIdeaRequest(ref_, idea_id_)
{
	var url = "ct_xt_favorite.bix?c=" + campaign_id + "&ref_id=" + idea_id_ + "&return=" + ref_ + "&type=idea&rand=" + generateRandomString(8);

	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
	    http_request = new XMLHttpRequest();
	    if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
	    }
	}
	// IE
	else if(window.ActiveXObject)
	{
	    try
	    {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	    }
	    catch(e)
	    {
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
	    }
	}

	if(!http_request)
	{
	    alert("Cannot create an XMLHTTP instance");
	    return false;
	}

	http_request.abort();
	http_request.onreadystatechange = favoriteIdeaExecute;
	http_request.open('GET', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', '0');
	http_request.send(null);
}

function favoriteIdeaExecute()
{
	if(http_request.readyState == 4)
	{
	    if (http_request.status == 200)
	    {
		if(!checkSessionTimeout(http_request.responseText))
			return;

		if(http_request.responseText.substring(0, 9) == 'favorited' || http_request.responseText.substring(0, 11) == 'unfavorited')
		{
			var response_arr = http_request.responseText.split('##');
			var action_taken = response_arr[0];
			var ref_id = response_arr[1];
			var favorite_obj = document.getElementById('idea_favorite_' + ref_id);

			if(action_taken == 'favorited')
			{
				favorite_obj.className = 'object_action_unfavorite';
				favorite_obj.childNodes[0].title = 'Unfavorite';
				favorite_obj.childNodes[0].childNodes[0].innerHTML = 'Unfavorite';
			}
			else if(action_taken == 'unfavorited')
			{
				favorite_obj.className = 'object_action_favorite';
					favorite_obj.childNodes[0].title = 'Favorite';
					favorite_obj.childNodes[0].childNodes[0].innerHTML = 'Favorite';
			}
		}
	    }
	    else
	    {
			openMessageBox('Server Error', 'There was a problem with the request.', 1700);
	    }
	}

}

function subscribeToIdeaRequest()
{
	var ref_ = document.getElementById('flyover_subscription_active_ref_id').value;
	var idea_id_ = document.getElementById('flyover_subscription_active_idea_id').value;
	var url = "ct_xt_idea_subscribe.bix?c=" + campaign_id + "&idea_id=" + idea_id_ + "&return=" + ref_ + "&type=idea&rand=" + generateRandomString(8);

	http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
		}
	}
	// IE
	else if(window.ActiveXObject)
	{
		try
		{
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
		try
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e){}
		}
	}

	if(!http_request)
	{
		alert("Cannot create an XMLHTTP instance");
		return false;
	}

	http_request.abort();
	http_request.onreadystatechange = subscribeToIdeaExecute;
	http_request.open('GET', url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.setRequestHeader('Content-length', '0');
	http_request.send(null);
}

function subscribeToIdeaExecute()
{
	if(http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			if(!checkSessionTimeout(http_request.responseText))
				return;

			if(http_request.responseText.substring(0, 10) == 'subscribed' || http_request.responseText.substring(0, 12) == 'unsubscribed')
			{
				var response_arr = http_request.responseText.split('##');
				var action_taken = response_arr[0];
				var idea_id = response_arr[1];

				if(action_taken == 'subscribed')
				{
					document.getElementById('subscribe_idea_' + idea_id).value = 1;
				}
				else if(action_taken == 'unsubscribed')
				{
					document.getElementById('subscribe_idea_' + idea_id).value = '';
				}
			}
		}
		else
		{
			openMessageBox('Server Error', 'There was a problem with the request.', 1700);
		}
	}

}

function subscribeToCategoryRequest()
{
	var ref_ = document.getElementById('flyover_subscription_active_ref_id').value;
	var category_id = document.getElementById('flyover_subscription_active_category_id').value;
	var url = "ct_xt_idea_subscribe.bix?c=" + campaign_id + "&category_id=" + category_id + "&return=" + ref_ + "&type=category&rand=" + generateRandomString(8);
	
	BI.ajax_call(url, 'GET', null, subscribeToCategoryExecute);
}

function subscribeToCategoryExecute(response_, error_)
{
	// Check if any javascript errors occurred
	if(error_)
	{
		openMessageBox('Server Error', error_);
		return false;
	}
	
	var response = response_.responseText;

	if(response.substring(0, 10) == 'subscribed' || response.substring(0, 12) == 'unsubscribed')
	{
		var response_arr = response.split('##');
		var action_taken = response_arr[0];
		var category_id = response_arr[1];

		if(action_taken == 'subscribed')
		{
			document.getElementById('subscribe_category_' + category_id).value = 1;
		}
		else if(action_taken == 'unsubscribed')
		{
			document.getElementById('subscribe_category_' + category_id).value = '';
		}
	}
}

// Ajax call wrapper
/////////////////////////////////////////////////////////////////////
function bi()
{
	this.ajax_calls = new Array();
}

bi.prototype.ajax_call = function(url_, method_, parameters_, func_return_)
{
	var newAjaxCall = new ajax_call();
	this.ajax_calls[this.ajax_calls.length] = newAjaxCall;
	newAjaxCall.call_up(url_, method_, parameters_, func_return_);
}

function ajax_call()
{
	this.http_request = false;
}

ajax_call.prototype.call_up = function(url_, method_, parameters_, func_return_) {

	if(method_.length == 0)
		method_ = "GET";
		
	var param_str = "";
	if(parameters_)
	{
		var count = 0;
		for(key in parameters_)
		{
			if(count == 0)
				param_str += key + "=" + escape(encodeURI(parameters_[key]));
			else
				param_str += "&" + key + "=" + escape(encodeURI(parameters_[key]));
			
			count++;
		}
		
		if(method_ == "GET")
			url_ += param_str;
	}
	
	url_ += "&rand=" + generateRandomString(8);

	this.http_request = false;

	// Mozilla, Safari,...
	if(window.XMLHttpRequest)
	{
		this.http_request = new XMLHttpRequest();
		if(this.http_request.overrideMimeType)
		{
			this.http_request.overrideMimeType('text/xml');
		}
	}
	// IE
	else if(window.ActiveXObject)
	{
		try
		{
			this.http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e){}
		}
	}

	if(!this.http_request)
	{
		func_(null, 'Cannot create an XMLHTTP instance.');
		return false;
	}

	this.http_request.abort();
	var that = this;
	this.http_request.onreadystatechange = function () { that.call_return(that, func_return_); };
	this.http_request.open(method_, url_, true);
	this.http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	this.http_request.setRequestHeader('Content-length', param_str.length);
	this.http_request.send(param_str);
}

ajax_call.prototype.call_return = function(obj, func_) {

	if(obj.http_request)
	{
		if(obj.http_request.readyState == 4)
		{
			if(obj.http_request.status == 200)
			{
				var response = obj.http_request;
				func_(response, null);
			}
			else
			{
				func_(null, 'There was an error with the request.');
			}
		}
	}
}

var BI = new bi();

function genericAjaxExecution(response_, error_)
{
	// Check if any javascript errors occurred
	if(error_)
	{
		openMessageBox('Server Error', error_);
		return false;
	}
	
	if(!checkSessionTimeout(response_.responseText))
		return;

	eval(response_.responseText);
}

function genericAjaxExecutionSuppressErrors(response_, error_)
{
	if(!checkSessionTimeout(response_.responseText))
		return;

	eval(response_.responseText);
}