﻿<!--
/***********************\
* Joseph Harker  o__    *
*   Programmer   .>/ _  *
*   Consultant  (_)\(_) *
* JoeHarker@007dev.com  *
\***********************/

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// <body onmousemove="EnableXMLSave();" onkeyup="EnableXMLSave();" onunload="SaveXMLAlert('thispage.aspx');" onload="DisableXMLSave();">
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var request007	= null;
var	locked		= false;
var	pageXMLData	= '';
var HARD_RETURN	= 'HaRdReTuRn';

function Initialize()
{
	if(request007 == null)
	{
		try
		{
			request007	= new XMLHttpRequest();
		}
		catch(e1)
		{
			try
			{
				request007	= new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch(e2) 
			{
				try 
				{
  					request007	= new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch(e3) 
				{
  					request007	= null;
				}
			}
		}
	}

	if(request007 == null)
	{
		alert('It appears your web browser does not support this site');
	}
}

function LockThreads()
{
	locked	= true;
	if(document.body != null)
	{
		document.body.style.cursor  ='wait';
	}
	if(document.getElementById('throbber') != null)
	{
		document.getElementById('throbber').style.visibility	= 'visible';
	}
}

function UnlockThreads()
{
	if(document.body != null)
	{
		document.body.style.cursor	= 'default';
	}
	if(document.getElementById('throbber') != null)
	{
		document.getElementById('throbber').style.visibility	= 'hidden';
	}
	locked	= false;
}

function CallPage(page)
{
	CallPage(page, false);
}

function CallPage(page, forceGet)
{
	var	method		= 'GET';
	var	content		= null;
	var	index		= 0;
	var	overflow	= '';
	var	session		= '';
	
	if(locked)
	{
		page	= page.replace(/\'/g, 'SiNgLeQuOtE');
		page	= page.replace(/\"/g, 'DoUbLeQuOtE');
		setTimeout('CallPage(\''+ page +'\','+ forceGet +');', 100);
	}
	else
	{
		LockThreads();
		
		try
		{
			page	= page.replace(/SiNgLeQuOtE/g ,'\'');
			page	= page.replace(/DoUbLeQuOtE/g ,'"');
			
			if(page.match(/([^?]{1,})\?(.*$)/g))
			{
				page	= RegExp.$1;
				content	= RegExp.$2;
				
				if(!forceGet)
				{
					method	= 'POST';
				}
				else
				{
					//break up large gets IE breaks after 2083
					if(content.length > 1000)
					{
						index	= content.substring(0, 1000).lastIndexOf('&');
						if(index == -1)
						{
							index	= content.indexOf('&');
						}
					}
					else
					{
						index	= -1
					}
					if(index != -1)
					{
						overflow	= content.substring(index + 1);
						content		= content.substring(0, index);
						
						//session
						//if(content.match(/(session=[^\&]*)/ig))
						//{
						//	overflow	+= '&'+ RegExp.$1;
						//}
						//else if(overflow.match(/(session=[^\&]*)/ig))
						//{
						//	content		+= '&'+ RegExp.$1;
						//}
						//action
						if(content.match(/(action=[^\&]*)/ig))
						{
							overflow	+= '&'+ RegExp.$1;
						}
						else if(overflow.match(/(action=[^\&]*)/ig))
						{
							content		+= '&'+ RegExp.$1;
						}
						//eformId
						if(content.match(/(eformId=[^\&]*)/ig))
						{
							overflow	+= '&'+ RegExp.$1;
						}
						else if(overflow.match(/(eformId=[^\&]*)/ig))
						{
							content		+= '&'+ RegExp.$1;
						}
						//ModuleID
						if(content.match(/(ModuleID=[^\&]*)/ig))
						{
							overflow	+= '&'+ RegExp.$1;
						}
						else if(overflow.match(/(ModuleID=[^\&]*)/ig))
						{
							content		+= '&'+ RegExp.$1;
						}
						//PortalID
						if(content.match(/(PortalID=[^\&]*)/ig))
						{
							overflow	+= '&'+ RegExp.$1;
						}
						else if(overflow.match(/(PortalID=[^\&]*)/ig))
						{
							content		+= '&'+ RegExp.$1;
						}
						//XMLSave
						if(content.match(/(XMLSave=[^\&]*)/ig))
						{
							overflow	+= '&'+ RegExp.$1;
						}
						else if(overflow.match(/(XMLSave=[^\&]*)/ig))
						{
							content		+= '&'+ RegExp.$1;
						}
						
						CallPage(page +'?'+ overflow, forceGet);
						//alert(page +'?'+ overflow);
					}
					else
					{
						content	+= '&complete=true';
						try
						{
							SaveXMLDone();
						}
						catch(erx)
						{
						}
					}

					page	= page	+'?'+ content;
					content	= null;
				}
			}
			
			if(page.indexOf('?') == -1)
			{
				page	+= '?RefreshID='+ Date().replace(/[^0-9]/g,'');
			}
			else
			{
				page	+= '&RefreshID='+ Date().replace(/[^0-9]/g,'');
			}
			
			Initialize();
			
			if(request007 != null)
			{
				//alert('Page: '+ page +'\n\n'+ request007.readyState);	//debug
				
				request007.open(method, page, true);
				request007.onreadystatechange	= function(){ProcessPage(request007)};
				//request007.onreadystatechange	= ProcessPage;
				if(request007.readyState == 3) 
				{
					alert('211 readyState Error: '+ request007.getResponseHeader("Content-Type"));
				}
				
				if(method == 'POST')
				{
					request007.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
				}
				request007.send(content);
			}
		}
		catch(exr)
		{
			alert('242: '+ exr.message +'\n\n'+ exr);
		}
	}
}

function ProcessPage(request007)
{
	var	matches		= null;
	var	n			= 0;
	var	response	= '';
	var errorPage	= '';


	try
	{
		if(typeof request007 != 'undefined')
		{
			try
			{
				if(request007.status == 200)
				{
					if(request007.responseText != '')
					{
						response	= request007.responseText.replace(/[\r\n]{1,2}/g, 'HaRdReTuRn');
						
						matches		= response.match(/<!--div=([^(].*?)-->([^(].*?)<!--close-->/g);
						n			= 0;
						while(matches != null && n < matches.length)
						{
							if(matches[n].match(/<!--div=([^(].*?)-->([^(].*?)<!--close-->/g) && RegExp.$1 != null && RegExp.$2 != null && document.getElementById(RegExp.$1))
							{
								document.getElementById(RegExp.$1).innerHTML	= RegExp.$2.replace(/HaRdReTuRn/g, '\r\n');
							}
							n++;
						}
						
						response	= request007.responseText.replace(/[\r\n]{1,2}/g, ' ');
						
						matches	= response.match(/<!--script=([^(].*?)-->/g);
						n		= 0;
						while(matches != null && n < matches.length)
						{
							if(matches[n].match(/<!--script=([^(].*?)-->/g) && RegExp.$1 != null)
							{
								try
								{
									eval(RegExp.$1);
								}
								catch(e)
								{
									alert('272: '+ e +'\n\n'+ e.message +'\n\n'+ RegExp.$1);	////debug
								}
							}
							n++;
						}
					}
				}
				else
				{
					//alert('282 Status '+ request007.status +' = '+ request007.getResponseHeader("Content-Type"));
					alert(request007.responseText);
				}
			}
			catch(dumbstatuserror)
			{
			}
			//alert(request007.readyState);
			if(request007.readyState == 3)
			{
				UnlockThreads();
			}
			//request007.abort();
		}
	}
	catch(ex1)
	{
		alert('293: '+ ex1.message +'\n\n'+ ex1);
	}
}

function GetXMLPageData()
{
    var	data		= '';
	var	elements	= null;
	var	value		= '';
	var	id			= '';
	var	types		= new Array('input', 'textarea', 'select');
	
	for(var t = 0; t < types.length; t++)
	{
		elements	= document.getElementsByTagName(types[t]);
		for(var e = 0; e < elements.length; e++)
		{
			if(elements[e].type != null && (elements[e].type == 'radio' || elements[e].type == 'checkbox'))
			{
				elements[e].value	= elements[e].checked
			}
			
			if(elements[e].value != null && elements[e].id != '' && elements[e].id.charAt(0) != '_' && elements[e].id.charAt(0) != '.')
			{
				value	= elements[e].value;
				value	= enurl(value);
				
				id  	= elements[e].id;
				
				data	+= '&'+ id +'='+ value;
			}
		}
	}
    
	return data;
}

function enurl(input)
{
	var	output	= '';
	var	buff	= '';

	for(var i = 0; i < input.length; i++)
	{
		if(input.charAt(i).match(/[a-zA-Z0-9]/i) != null)
		{
			output	+= input.charAt(i);
		}
		else
		{
			buff	=  input.charCodeAt(i).toString(16);
			if(buff.length < 2)
			{
				buff	= '0'+ buff;
			}
			output	+= '%'+ buff;
		}
	}

	return output;
}

//body -> onload="DisableXMLSave();"
function DisableXMLSave()
{
	pageXMLData	= GetXMLPageData();
	
	if(document.getElementById('xmlSavePage') != null)
	{
		document.getElementById('xmlSavePage').style.visibility = 'hidden';
	}
}

//body -> onmousemove="EnableXMLSave();" onkeyup="EnableXMLSave();"
function EnableXMLSave()
{
	if(document.getElementById('xmlSavePage') != null)
	{
		if(pageXMLData == GetXMLPageData())
		{
			document.getElementById('xmlSavePage').style.visibility = 'hidden';
		}
		else
		{
			document.getElementById('xmlSavePage').style.visibility = 'visible';
		}
	}
}

//body -> onunload="SaveXMLAlert('thispage.aspx');"
function SaveXMLAlert(page)
{
	SaveXMLAlert(page, false);
}
function SaveXMLAlert(page, forceGet)
{
	if(document.getElementById('xmlSavePage') != null && document.getElementById('xmlSavePage').style != null && document.getElementById('xmlSavePage').style.visibility == 'visible')
	{
		if(confirm('You have not saved your changes\nClick Ok to Save or Cancel To Continue'))
		{
			SaveXMLPage(page, forceGet);
		}
	}
	
	if(document.getElementById('xmlSavePage') != null && document.getElementById('xmlSavePage').style != null)
	{
		document.getElementById('xmlSavePage').style.visibility	= 'hidden';
	}
}

function SaveXMLPage(page)
{
	SaveXMLPage(page, false);
}
function SaveXMLPage(page, forceGet)
{
	DisableXMLSave();

	if(page.indexOf('?') == -1)
	{
		page	+= '?';
	}
	else
	{
		page	+= '&';
	}
	page	+= 'XMLSave=true';
	page	+= GetXMLPageData();
	
	page	= page.replace(/\r/g, '%0D');
	page	= page.replace(/\n/g, '%0A');
	
	//document.getElementById('error').innerHTML	= page.replace(/[\&\?]/g, '<br />\n');	////debug
	//alert(page.replace(/[\&\?]/g, '\n'));	////debug
	CallPage(page, forceGet);
}

//<iframe id="iSaveFrame" src="" width="1" height="1" title="SaveFrame" longdesc="Save%20Frame">Save Frame</iframe>
function iSaveXMLPage(page)
{
	iSaveXMLPage(page, false);
}
function iSaveXMLPage(page, forceGet)
{
	DisableXMLSave();

	if(page.indexOf('?') == -1)
	{
		page	+= '?';
	}
	else
	{
		page	+= '&';
	}
	page	+= 'XMLSave=true';
	page	+= GetXMLPageData();
	
	page	= page.replace(/\r/g, '%0D');
	page	= page.replace(/\n/g, '%0A');
	
	//document.getElementById('error').innerHTML	= page.replace(/[\&\?]/g, '<br />\n');	////debug
	//alert(page.replace(/[\&\?]/g, '\n'));	////debug
	iCallPage(page, 'iSaveFrame');
}

function iCallPage(page, destId)
{
	var content		= '';
	var overflow	= '';
	
	if(locked)
	{
		page	= page.replace(/\'/g, 'SiNgLeQuOtE');
		page	= page.replace(/\"/g, 'DoUbLeQuOtE');
		setTimeout('iCallPage(\''+ page +'\',\''+ destId +'\');', 100);
	}
	else
	{
		LockThreads();
		
//		try
//		{
			page	= page.replace(/SiNgLeQuOtE/g ,'\'');
			page	= page.replace(/DoUbLeQuOtE/g ,'"');
			
			if(page.match(/([^?]{1,})\?(.*$)/g))
			{
				page	= RegExp.$1;
				content	= RegExp.$2;
						
				//break up large gets
				if(content.length > 1000)
				{
					index	= content.substring(0, 1000).lastIndexOf('&');
					if(index == -1)
					{
						index	= content.indexOf('&');
					}
				}
				else
				{
					index	= -1
				}
				if(index != -1)
				{
					overflow	= content.substring(index + 1);
					content		= content.substring(0, index);
					
					//document.getElementById('jhdebug').value	+= overflow +'\n\n';	////debug
						
					//session
					if(content.match(/(session=[^\&]*)/ig))
					{
						overflow	+= '&'+ RegExp.$1;
					}
					else if(overflow.match(/(session=[^\&]*)/ig))
					{
						content		+= '&'+ RegExp.$1;
					}
					//action
					if(content.match(/(action=[^\&]*)/ig))
					{
						overflow	+= '&'+ RegExp.$1;
					}
					else if(overflow.match(/(action=[^\&]*)/ig))
					{
						content		+= '&'+ RegExp.$1;
					}
					//eformId
					if(content.match(/(eformId=[^\&]*)/ig))
					{
						overflow	+= '&'+ RegExp.$1;
					}
					else if(overflow.match(/(eformId=[^\&]*)/ig))
					{
						content		+= '&'+ RegExp.$1;
					}
					//ModuleID
					if(content.match(/(ModuleID=[^\&]*)/ig))
					{
						overflow	+= '&'+ RegExp.$1;
					}
					else if(overflow.match(/(ModuleID=[^\&]*)/ig))
					{
						content		+= '&'+ RegExp.$1;
					}
					//PortalID
					if(content.match(/(PortalID=[^\&]*)/ig))
					{
						overflow	+= '&'+ RegExp.$1;
					}
					else if(overflow.match(/(PortalID=[^\&]*)/ig))
					{
						content		+= '&'+ RegExp.$1;
					}
					//XMLSave
					if(content.match(/(XMLSave=[^\&]*)/ig))
					{
						overflow	+= '&'+ RegExp.$1;
					}
					else if(overflow.match(/(XMLSave=[^\&]*)/ig))
					{
						content		+= '&'+ RegExp.$1;
					}
					
					iCallPage(page +'?'+ overflow, destId);
					//alert(page +'?'+ overflow);
				}
				else
				{
					content	+= '&complete=true';
					//iCallPage('http://www.google.com', destId);
					try
					{
						iSaveXMLDone();
					}
					catch(erx)
					{
					}
				}

				page	= page +'?'+ content;
				content	= null;
			}
			
			if(page.indexOf('?') == -1)
			{
				page	+= '?RefreshID='+ Date().replace(/[^0-9]/g,'');
			}
			else
			{
				page	+= '&RefreshID='+ Date().replace(/[^0-9]/g,'');
			}


			//DNN
			//page	= page.replace(/session.*?[\n&]/ig, '');
			
			//alert(page.replace(/[\&\?]/g, '\n'));	////debug
			//document.getElementById('jhdebug').value	+= page +'\n\n';	////debug
			
			//page	= 'http://cms.denvergov.com/DesktopModules/EForm/XMLEform.aspx';
			document.getElementById(destId).src	= page
//		}
//		catch(ex1)
//		{
//			alert('570: '+ ex1.message +'\n\n'+ ex1);
//		}
		
		UnlockThreads();
	}
}

function GetCursorPos(element)
{
	var	tempRange	= null;
	var	range		= null;
	var	pos			= -1;

	try
	{
		if(element != null)
		{
			element.focus();

			//Mozila
			if(typeof element.selectionStart == 'number') 
			{
				pos	= element.selectionStart;
			} 
			//IE
			else if(document.selection && element.createTextRange) 
			{
				if(document.selection != null)
				{
					try
					{
						//Input-text
						range		= document.selection.createRange();
						tempRange	= element.createTextRange();
						tempRange.setEndPoint('EndToEnd', range);
						pos			= tempRange.text.length;
					}
					catch(e)
					{
						//TextArea
						tempRange	= range.duplicate();
						tempRange.moveToElementText(element);
						tempRange.setEndPoint('EndToEnd', range);
						pos 		= tempRange.text.length - range.text.length;
					}
				}
			}
		}
	}
	catch(e1)
	{
		//fail on check box etc.
	}

	return pos;
}

function SetCursorPos(element, position)
{
	var	range	= null;

	try
	{
		if(element != null)
		{
			element.focus();
			
			//Mozila
			if(typeof element.selectionStart == 'number') 
			{
				element.selectionStart	= position;
				element.selectionEnd	= position;
			} 
			//IE
			else if(document.selection && element.createTextRange) 
			{
				try
				{
					//not working for textarea
					element.focus();
					range		= document.selection.createRange();
					range.moveEnd('character', -9999);
					range.moveStart('character', position);
					range.select();
				}
				catch(e)
				{
					alert('518: '+ e.message);
				}
			}
		}
	}
	catch(e1)
	{
		//fail on check box etc.
	}
}

function AddCSSLinks(id)
{
	var	elements	= null;
	var	html		= '';
	
	if(document.getElementById(id) != null)
	{
		elements	= document.getElementsByTagName('link');
		for(var e = 0; e < elements.length; e++)
		{
			if(elements[e].getAttribute('title') != null && elements[e].getAttribute('rel').indexOf('style') != -1)
			{
				html
					+= '<span class="skin">'
					+  '<a href="#" id="'+ elements[e].getAttribute('title') +'" onClick="SetCSS(\''+ elements[e].getAttribute('title') +'\');">'
					+  elements[e].getAttribute('title') 
					+  '</a></span>&nbsp;'
				;
			}
		}
		
		document.getElementById(id).innerHTML	= html;
	}
}

function SetCSS(title)
{
	var	elements	= null;

	elements	= document.getElementsByTagName('link');
	for(var e = 0; e < elements.length; e++)
	{
		if(elements[e].getAttribute('rel').indexOf('style') != -1)
		{
			elements[e].disabled	= true;
			if(elements[e].getAttribute('title') != null && elements[e].getAttribute('title') == title)
			{
				elements[e].disabled	= false;
			}
		}
	}
}

function SortTable(tableId, col)
{
	SortTable(tableId, col, false)
}
function SortTable(tableId, col, hilightCol)
{
	try
	{
		var table		= document.getElementById(tableId);
		var tbody		= table.getElementsByTagName('tbody')[0];
		var rows		= tbody.getElementsByTagName('tr');
		var colcount	= tbody.getElementsByTagName('td').length / rows.length;
		var newRows		= new Array();
		var newTbody	= document.createElement('tbody');
		var	contenter	= /(?:<[^>]*>)*([^<]*)/;
		var	revTest;
		
		for(var r = 0; r < rows.length; r++) 
		{
			for(var c = 0; c < colcount && hilightCol; c++)
			{
				if(c == col)
				{
					rows[r].getElementsByTagName('td')[c].innerHTML	= '<span style="background-color:yellow; width:100%; height:100%; float:left;">'+ rows[r].getElementsByTagName('td')[c].innerHTML +'</span>';
				}
				else
				{
					rows[r].getElementsByTagName('td')[c].innerHTML	= rows[r].getElementsByTagName('td')[c].innerHTML.replace(/<.{0,1}span[^>]*?>/gi, '');
				}
			}
			
			if(rows[r].getElementsByTagName('td')[col].innerHTML.match(contenter))
			{
				newRows[r]			= new Object;
				newRows[r].oldIndex	= r;
				newRows[r].value	= RegExp.$1;
			}
		}

		if(newRows.length > 0)
		{
			revTest	= newRows[0].value;
			newRows.sort(iCompare);
			if(revTest == newRows[0].value)
			{
				newRows.reverse();
			}
		
			for(var r = 0; r < newRows.length; r++) 
			{
				newTbody.appendChild(rows[newRows[r].oldIndex].cloneNode(true));
			}
		
			table.replaceChild(newTbody, tbody);
		}
	}
	catch(eError)
	{
	}
}

function iCompare(a, b)
{
	var aIsGreater	= 0;
	var	A			= '';
	var	B			= '';
	var	floater		= /^[$ \t%]{0,}([0-9]{1,}\.[0-9]{1,})/;
	var	inter		= /^[$ \t%]{0,}([0-9]{1,})[ \t]{0,}/;
	
	if(a.value.match(floater) && b.value.match(floater))
	{
		a.value.match(floater);
		A	= RegExp.$1;
		b.value.match(floater);
		B	= RegExp.$1;
		aIsGreater	= parseFloat(A.substr(1)) - parseFloat(B.substr(1));
	}
	else
	{
		A	= MonthToNum(a.value);
		B	= MonthToNum(b.value);
		
		if(A.match(inter) && B.match(inter))
		{
			A	= A.replace(/[^0-9]/g, '');
			B	= B.replace(/[^0-9]/g, '');
			aIsGreater	= Math.abs(A) - Math.abs(B);
		}
		else
		{
			if(a.value == b.value)
			{
				aIsGreater	= 0;
			}
			else if(a.value > b.value)
			{
				aIsGreater	= 1;
			}
			else
			{
				aIsGreater	= -1;
			}
		}
	}
	
	return aIsGreater;
}

function MonthToNum(string)
{
	string	= string.replace(/^[jJ][aA][nN]/, '01');
	string	= string.replace(/^[fF][eE][bB]/, '02');
	string	= string.replace(/^[mM][aA][rR]/, '03');
	string	= string.replace(/^[aA][pP][rR]/, '04');
	string	= string.replace(/^[mM][aA][yY]/, '05');
	string	= string.replace(/^[jJ][uU][nN]/, '06');
	string	= string.replace(/^[jJ][uU][lL]/, '07');
	string	= string.replace(/^[aA][uU][gG]/, '08');
	string	= string.replace(/^[sS][eE][pP]/, '09');
	string	= string.replace(/^[oO][cC][tT]/, '10');
	string	= string.replace(/^[nN][oO][vV]/, '11');
	string	= string.replace(/^[dD][eE][cC]/, '12');

	return string;
}

//<a href="#" onclick="TryToPop('Pop.htm');">Test</a>
//<span id="error"></span>
function TryToPop(page)
{
	try
	{
		var	win;
		win	= window.open(page, 'Pop1');
		win.focus();
	}
	catch(e)
	{ 
		document.getElementById('error').innerHTML	=
			 '<div style=\"border: 10px #FF0000 solid; background: #FFFFFF;\">\r\n'
			+'It appears you have a pop-up blocker that is preventing our site from opening a new page<br />\r\n'
			+'<br />\r\n'
			+'<a href="'+ page +'">Click this link to view your request on this page</a> OR <br />\r\n'
			+'<a href="#" onclick="PopInstructions();">Click this link for instructions to add our site to your safe list</a><br />\r\n'
			+'</div>\r\n'
		;
	}
}

function PopInstructions()
{
	document.location.href.match(/:\/\/([^\/]*)\//g);
	document.getElementById('error').innerHTML	=
		 '<div style=\"border: 10px #FF0000 solid; background: #FFFFFF;\">\r\n'
		+'To add our site to the Internet Explorer safe list:<br />\r\n'
		+'&nbsp;&nbsp;&nbsp;&nbsp;Click: Tools -> Pop-up Blocker -> Pop-up Blocker Settings<br />\r\n'
		+'&nbsp;&nbsp;&nbsp;&nbsp;In the first text box \'Address of Web site to allow:\' Add the following address:<br />\r\n'
		+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=\"blue\">'+ RegExp.$1 +'</font><br />\r\n'
		+'&nbsp;&nbsp;&nbsp;&nbsp;Click the Add button<br />\r\n'
		+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\''+ RegExp.$1 +'\' will be added to the \'Allowed sites\' list <br />\r\n'
		+'&nbsp;&nbsp;&nbsp;&nbsp;Click the Close button<br />\r\n'
		+'&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#\" onClick=\"document.location.reload();\">Refresh</a> this page<br />\r\n'
		+'<br />\r\n'
		+'Please refer to your manufacturers manual for all 3rd party pop-up blockers.\r\n'
		+'</div>\r\n'
	;
}

var	noScrolls	= new Array();
function AddNoScroll(id, x, y)
{
	if(noScrolls.length == 0)
	{
		window.onscroll	= UpdateNoScrolls;
	}
	noScrolls.splice(0, 0, new Array(id, x, y));
	document.getElementById(id).style.position	= 'absolute';
	UpdateNoScrolls();
}

function UpdateNoScrolls()
{
	var	sx	= document.body.scrollLeft;
	var	sy	= document.body.scrollTop;

	for(var n = 0; n < noScrolls.length; n++)
	{
		if(noScrolls[n][1] != null)
		{
			document.getElementById(noScrolls[n][0]).style.left	= sx + Math.floor(noScrolls[n][1]);
		}
		if(noScrolls[n][2] != null)
		{
			document.getElementById(noScrolls[n][0]).style.top	= sy + Math.floor(noScrolls[n][2]);
		}
	}
}

//<div id="dragZone" onmousemove="ShowDrag();" onmouseup="Drop();">
//	<div id="drop1" onmouseover="SetZone('drop1');" onmouseout="ClearZone('drop1');">
//		<div id="drag1" onmousedown="Drag('drag1');">

var	dragHTML	= null;
var	dragID		= null;
var	dragx		= null;
var	dragy		= null;
var	DragZColor	= null;
var	dragDropID	= null;
function Drag(id)
{
	if(dragID == null)
	{
		dragID					= id;
		document.getElementById('dragZone').innerHTML.match('(<([a-zA-Z]*)[^>]*[iI][dD][ \t="]{1,}'+ dragID +'(?![0-9])[^>]*>)');
		dragHTML				= RegExp.$1 + document.getElementById(dragID).innerHTML +'</'+ RegExp.$2 +'>';
		document.onmousemove	= TrackMouse;
	}
}

function Drop()
{
	var	old;

	document.body.style.cursor  ='wait';
	if(dragDropID != null)
	{
		document.getElementById('dragZone').innerHTML.match('(<([a-zA-Z]*)[^>]*[iI][dD][ \t="]{1,}'+ dragID +'(?![0-9])[^>]*>)');
		old	= RegExp.$1 +'\r\n'+ document.getElementById(dragID).innerHTML +'</'+ RegExp.$2 +'>';
		document.getElementById('dragZone').innerHTML	 = document.getElementById('dragZone').innerHTML.replace(old, '');
		old	= old.replace(/[\r\n]/g, '');
		document.getElementById('dragZone').innerHTML	 = document.getElementById('dragZone').innerHTML.replace(old, '');

		document.getElementById(dragDropID).innerHTML	+= dragHTML;
		ClearZone(dragDropID);
	}

	dragHTML	= null;
	dragID		= null;
	dragx		= null;
	dragy		= null;
	DragZColor	= null;
	dragDropID	= null;
	document.onmousemove	= null;
	document.body.style.cursor	= 'default';
}

function TrackMouse(e)
{
	try
	{
		dragx	= e.pageX;
		dragy	= e.pageY;
	}
	catch(ex)
	{
		dragx	= event.clientX;
		dragy	= event.clientY;
		dragx	+= document.body.scrollLeft;
		dragy	+= document.body.scrollTop;
	}
}

function ShowDrag()
{
	if(dragID != null)
	{
		document.getElementById(dragID).style.position	= 'absolute';
		document.getElementById(dragID).style.left		= dragx + 5;
		document.getElementById(dragID).style.top		= dragy + 5;
		SetCursorPos(document.body, 0);
	}
}

function SetZone(id)
{
	if(dragID != null)
	{
		dragDropID	= id;
		DragZColor	= document.getElementById(id).style.backgroundColor;
		document.getElementById(id).style.backgroundColor	= 'yellow';
	}
}

function ClearZone(id)
{
	if(id != null)
	{
		document.getElementById(id).style.backgroundColor	= DragZColor;
	}
}

//-->
