var dragObj;

//--------------------------------------------------------------------------------------------------------------------------------------//

function lbAddLink(name, url, focus)
{
	if (top.document.getElementById('linkMoverWindow').style.display == 'block') return;
	if (!name) name = '';
	if (!url) url = '';
	url = url.replace(/(http:\/\/www.pagewizard.com)?(\/templates\/\d+)?(\/.*)/i,"$3");
	tbl = document.getElementById('linkBuilderEditTable');
	with (tbl.insertRow(tbl.rows.length))
	{
		className = 'linkRow';
		with (insertCell(cells.length))	innerHTML = "<input type=text onkeyup=lbUpdate() value=\"" + name.replace(/"/g, '&quot;') + "\" style='width: 132px' onchange=lbUpdate()>";
		with (insertCell(cells.length))	innerHTML = "<input type=text onkeyup=lbUpdate() value='" + url + "' style='width: 132px' onchange=lbUpdate()>";
		with (insertCell(cells.length))	innerHTML = "<span class=modifierLink onclick=lbRemoveLink(this) onmouseover=\"this.style.cssText+='; color: blue; text-decoration: underline'\" onmouseout=\"this.style.cssText+='; color: #009; text-decoration: none'\">Remove</span>";
	}
	if (document.getElementById('linkBuilderWindow').style.display == 'block')
	{
		tbl.rows[tbl.rows.length-1].firstChild.firstChild.focus();
		if (!ie) tbl.parentNode.scrollTop = tbl.parentNode.scrollHeight;
	}
	if (focus || document.getElementById('linkBuilderWindow').style.display == 'block')
		lbUpdate();
}

function lbEditObj(tbl)
{
	if (tbl.tagName != 'TABLE');
		tbl = tbl.firstChild;

	data = [];
	vertical = (tbl.getAttribute('orientation') == 'v');
	linkCount = (vertical) ? tbl.rows.length : tbl.rows[0].cells.length;

	for (i = 0; i < linkCount; i++)
	{
		cell = (vertical) ? tbl.rows[i].cells[0] : tbl.rows[0].cells[i];
		if (i == 0)
		{
			css = cell.style;

			styles = {
				alignment	 : css.textAlign,
				bold		 : css.fontWeight,
				italic		 : css.fontStyle,
				underline	 : cell.firstChild.style.textDecoration,
				fontFace	 : css.fontFamily.replace(/['"]/g, ''),
				fontSize	 : parseInt(css.fontSize),
				textColor0	 : cell.firstChild.style.color,
				bgColor0	 : css.backgroundColor,
				textColor	 : cell.firstChild.style.color,
				bgColor0	 : css.backgroundColor,
				borderColor0 : css.borderTopColor,
				borderStyle0 : css.borderTopStyle,
				borderWidth0 : parseInt(css.borderTopWidth),
				borderColor1 : '',
				borderStyle1 : '',
				//borderWidth1 : '',

				width		 : ((css.width) ? parseInt(css.width) : 0),
				height		 : ((css.height) ? parseInt(css.height) : 0),
				spacing		 : tbl.getAttribute('cellSpacing'),
				padding		 : parseInt(css.padding),
				orientation	 : ((vertical) ? 'v' : 'h'),

				colorHover	 : true,
				borderHover	 : true
			};

			MO = cell.getAttribute('onMouseOver').toString();
			matches = MO.match(/background-color:\s([^;]+);\sborder:\s([^\s]+)\s([^\s]+)\s([^']+)';.+='([^']+)'/);
			styles.bgColor1 = matches[1];
			styles.borderStyle1 = matches[2];
			//styles.borderWidth1 = parseInt(matches[3]);
			styles.borderColor1 = matches[4];
			styles.textColor1 = matches[5];

			styles.borderStyle0 = styles.borderStyle0.charAt(0).toUpperCase() + styles.borderStyle0.substr(1);
		}
		href = (cell.firstChild.getAttribute('href2')) ? cell.firstChild.getAttribute('href2') : cell.firstChild.getAttribute('href');
		if (href.indexOf(top.script_name) == 0) href = href.replace(top.script_name + '/', '');
		if (href == 'javascript:;') href = '';
		data.push([cell.firstChild.innerHTML, href]);
	}
	styles.data = data;

	lbSetValues(styles);
	return styles;
}

function lbGetData()
{
	data = [];
	tbl = document.getElementById('linkBuilderEditTable');
	for (i = 1; i < tbl.rows.length; i++)
	{
		name = tbl.rows[i].firstChild.firstChild.value.replace(/ /g, '&nbsp;');
		url = tbl.rows[i].firstChild.nextSibling.firstChild.value;
		data.push([name, url]);
	}
	return data;
}

function lbGetStyles()
{
	borderOn = document.getElementById('chkLinkBorderHover').checked;
	colorOn = document.getElementById('chkLinkColorHover').checked;

	styles = {
		alignment	 : '',
		bold		 : (document.getElementById('toolBtnBold').className.indexOf('Down') >= 0) ? 'bold' : '',
		italic		 : (document.getElementById('toolBtnItalic').className.indexOf('Down') >= 0) ? 'italic' : 'none',
		underline	 : (document.getElementById('toolBtnUnderline').className.indexOf('Down') >= 0) ? 'underline' : 'none',
		fontFace	 : document.getElementById('toolSelFontFace').innerHTML,
		fontSize	 : document.getElementById('toolSelFontSize').innerHTML,
		textColor0	 : document.getElementById('toolSelTextColor0').style.background,
		bgColor0	 : document.getElementById('toolSelBgColor0').style.background,
		textColor1	 : document.getElementById('toolSelTextColor'+(colorOn?'1':'0')).style.background,
		bgColor1	 : document.getElementById('toolSelBgColor'+(colorOn?'1':'0')).style.background,
		borderWidth0 : document.getElementById('toolSelBorderWidth0').value,
		borderColor0 : document.getElementById('toolSelBorderColor0').style.background,
		borderStyle0 : ((document.getElementById('toolSelBorderStyle0').getAttribute('value')) ? document.getElementById('toolSelBorderStyle0').getAttribute('value') : document.getElementById('toolSelBorderStyle0').innerHTML),
		//borderWidth1 : document.getElementById('toolSelBorderWidth'+(borderOn?'1':'0')).value,
		borderColor1 : document.getElementById('toolSelBorderColor'+(borderOn?'1':'0')).style.background,
		borderStyle1 : ((document.getElementById('toolSelBorderStyle'+(borderOn?'1':'0')).getAttribute('value')) ? document.getElementById('toolSelBorderStyle1').getAttribute('value') : document.getElementById('toolSelBorderStyle1').innerHTML),

		width		 : document.getElementById('linkBlockWidth').value,
		height		 : document.getElementById('linkBlockHeight').value,
		spacing		 : document.getElementById('linkBlockSpacing').value,
		padding		 : document.getElementById('linkBlockPadding').value,
		orientation	 : (document.getElementById('orientV').checked) ? 'v' : 'h',

		colorHover	 : document.getElementById('chkLinkColorHover').checked,
		borderHover	 : document.getElementById('chkLinkBorderHover').checked
	};
	styles.cursor	= (styles.bgColor0 || styles.bgColor1 || styles.borderWidth0 != '0' || (styles.borderWidth1 != '0' && document.getElementById('chkLinkBorderHover').checked)) ? 'pointer' : 'default';
	alignLeft		= (document.getElementById('toolBtnLeft').className.indexOf('Down') >= 0);
	alignCenter		= (document.getElementById('toolBtnCenter').className.indexOf('Down') >= 0);
	alignRight		= (document.getElementById('toolBtnRight').className.indexOf('Down') >= 0);
	styles.alignment = (alignLeft) ? 'left' : ((alignCenter) ? 'center' : 'right');

	return styles;
}

function lbSetValues(obj)
{
	// set values
	for (i in obj)
	{
		val = eval('obj.'+i);
		uname = i.charAt(0).toUpperCase() + i.substr(1);
		switch (i)
		{
			case 'width':	document.getElementById('linkBlockWidth').value = val;		break;
			case 'height':	document.getElementById('linkBlockHeight').value = val;		break;
			case 'spacing':	document.getElementById('linkBlockSpacing').value = val;	break;
			case 'padding':	document.getElementById('linkBlockPadding').value = val;	break;

			case 'alignment':
				val = val.charAt(0).toUpperCase() + val.substr(1);
				document.getElementById('toolBtnLeft').className = 'toolBtn';
				document.getElementById('toolBtnCenter').className = 'toolBtn';
				document.getElementById('toolBtnRight').className = 'toolBtn';
				document.getElementById('toolBtn'+val).className = 'toolBtnDown';
				break;

			case 'bold':			document.getElementById('toolBtnBold').className = (val == 'bold') ? 'toolBtnDown' : 'toolBtn';				break;
			case 'italic':			document.getElementById('toolBtnItalic').className = (val == 'italic') ? 'toolBtnDown' : 'toolBtn';			break;
			case 'underline':		document.getElementById('toolBtnUnderline').className = (val == 'underline') ? 'toolBtnDown' : 'toolBtn';	break;
			case 'fontFace':		document.getElementById('toolSelFontFace').innerHTML = val;													break;
			case 'fontSize':		document.getElementById('toolSelFontSize').innerHTML = val;													break;
			case 'bgColor0':
			case 'bgColor1':
			case 'textColor0':
			case 'textColor1':
			case 'borderColor0':
			case 'borderColor1':	document.getElementById('toolSel'+uname).style.background = val;	break;
			case 'borderStyle0':
			case 'borderStyle1':	document.getElementById('toolSel'+uname).innerHTML = val;			break;
			case 'borderWidth0':
			/*case 'borderWidth1':*/document.getElementById('toolSel'+uname).value = val;				break;
			case 'orientation':		document.getElementById('orient' + val.toUpperCase()).click();		break;
			case 'colorHover':		document.getElementById('chkLinkColorHover').checked = val;			break;
			case 'borderHover':		document.getElementById('chkLinkBorderHover').checked = val;		break;
		}
	}

	// if the data property wasn't included, exit the function -- the rest involves it
	if (!obj.data) return;

	// clear links
	tbl = document.getElementById('linkBuilderEditTable');
	for (i = tbl.rows.length - 1; i > 0; i--)
		tbl.deleteRow(tbl.rows[i].rowIndex);

	// add links
	for (i = 0; i < obj.data.length; i++)
		lbAddLink(obj.data[i][0], obj.data[i][1]);

	// update
	lbUpdate();
}

function lbResetValues()
{
	data = {
		alignment	 : 'left',
		bold		 : 'bold',
		italic		 : 'none',
		underline	 : 'none',
		fontFace	 : 'Arial',
		fontSize	 : '12',
		textColor0	 : '#FFF',
		bgColor0	 : '#003399',	//bgColor0	 : '#1C3586',
		textColor1	 : '#FFF',
		bgColor1	 : '#3C4150',
		borderWidth0 : '1',
		borderColor0 : '#000',
		borderStyle0 : 'Solid',
		//borderWidth1 : '1',
		borderColor1 : '#000',
		borderStyle1 : 'Solid',

		width		 : '0',
		height		 : '0',
		spacing		 : '3',
		padding		 : '4',
		orientation	 : 'v',

		colorHover	 : 'true',
		borderHover  : 'true',

		data : [
			['','']
		]
	};
	lbSetValues(data);
}

function lbRemoveLink(obj)
{
	tbl = document.getElementById('linkBuilderEditTable');
	/*if (ie)	tbl.deleteRow(obj.parentElement.parentElement.rowIndex);
	else	*/tbl.deleteRow(obj.parentNode.parentNode.rowIndex)
	lbUpdate();
}

function lbUpdate()
{
	// set variables
	htm = '';
	style = '';
	//type = document.getElementById('linkTypeImage').checked;
	type = false;
	vertical = document.getElementById('orientV').checked;
	blockWidth = document.getElementById('linkBlockWidth').value;
	blockHeight = document.getElementById('linkBlockHeight').value;
	blockSpacing = document.getElementById('linkBlockSpacing').value;
	blockPadding = document.getElementById('linkBlockPadding').value;

	// set type
	//document.getElementById('linkBuilderStyles').style.display = (!type) ? 'block' : 'none';
	//document.getElementById('linkBuilderStylesImage').style.display = (type) ? 'block' : 'none';

	// set style variables
	styles = lbGetStyles();

	// if deactivated, reset hover styles
	//document.getElementById('colorHoverToolbar').disabled = !document.getElementById('chkLinkColorHover').checked;
	document.getElementById('borderHoverToolbar').disabled = !document.getElementById('chkLinkBorderHover').checked;
	if (!document.getElementById('chkLinkColorHover').checked) {
		styles.textColor1 = styles.textColor0;
		styles.bgColor1 = styles.bgColor0;
	}
	/*
	if (!document.getElementById('chkLinkBorderHover').checked) {
		styles.borderWidth1 = styles.borderWidth0;
		styles.borderColor1 = styles.borderColor0;
		styles.borderStyle1 = styles.borderStyle0;
	}
	*/
		styles.borderWidth1 = styles.borderWidth0;

	// set template strings
	style = "font: [bold] [fontSize]px '[fontFace]'; font-style: [italic]; text-align: [alignment]; background-color: [bgColor0]; border: [borderStyle0] [borderWidth0]px [borderColor0]; cursor: pointer";
	cellTemplate = "<td onmouseover=\"this.style.cssText+='; background-color: [bgColor1]; border: [borderStyle1] [borderWidth1]px [borderColor1]';this.firstChild.style.color='[textColor1]'\" onmouseout=\"this.style.cssText+='; background-color: [bgColor0]; border: [borderStyle0] [borderWidth0]px [borderColor0]';this.firstChild.style.color='[textColor0]'\" onclick=\"if(this.firstChild.target!='_blank')location.href=this.firstChild.href\" style=\"[[STYLE]]\">";
	linkTemplate = "<a href=javascript:; href2='[[URL]]' style=\"color: [textColor0]; text-decoration: [underline]; white-space: nowrap; cursor: pointer\">[[NAME]]</a>"; //; cursor: pointer

	// additional style processing
	if (parseInt(blockWidth) > 0)	style += '; width:' + blockWidth + 'px;';
	if (parseInt(blockHeight) > 0)	style += '; height:' + blockHeight + 'px;';
	if (parseInt(blockPadding) > 0)	style += '; padding:' + blockPadding + 'px;';

	// set style from templates
	for (i in styles)
	{
		style = style.replace('['+i+']', eval('styles.'+i));
		cellTemplate = cellTemplate.replace('['+i+']', eval('styles.'+i));
		linkTemplate = linkTemplate.replace('['+i+']', eval('styles.'+i));
		if (i == 'textColor0') linkTemplate = linkTemplate.replace('['+i+']', eval('styles.'+i));
	}
	cellTemplate = cellTemplate.replace('[[STYLE]]', style);
	
	// get link data and reset preview window
	data = lbGetData();
	document.getElementById('linkBuilderPreview').innerHTML = '---';

	// update preview window
	htm += "<table cellspacing=" + blockSpacing + " orientation=" + (vertical ? 'v' : 'h') + " style='cursor: default'>";
	for (i = 0; i < data.length; i++)
	{
		name = data[i][0];
		url = data[i][1];
		if (!name) name = '&nbsp;';
		newLinkTemplate = linkTemplate.replace('[[NAME]]', name);
		newLinkTemplate = newLinkTemplate.replace('[[URL]]', url);
		htm += ((vertical) ? '<tr>':'') + cellTemplate;
		htm += newLinkTemplate;
		htm += '</td>';
	}
	htm += '</table>';
	htm = htm.replace(/none repeat scroll 0% 0%|none (transparent) scroll repeat 0% 0%/g, '$1');
	document.getElementById('linkBuilderPreview').innerHTML = htm;
}

function chooseColor(obj, type)
{
	/*obj = (ie) ? obj.firstChild.firstChild.firstChild.firstChild.nextSibling.firstChild
				: obj.firstChild.nextSibling.firstChild.firstChild.firstChild.nextSibling.firstChild.nextSibling;*/
	open_window(document.getElementById('palette'));

	switch (type)
	{
		case 'back0':	typestr = 'Inactive Background';top.ws.linkbgcolor0();		break;
		case 'back1':	typestr = 'Active Background';	top.ws.linkbgcolor1();		break;
		case 'border0':	typestr = 'Inactive Border';	top.ws.linkbordercolor0();	break;
		case 'border1':	typestr = 'Active Border';		top.ws.linkbordercolor1();	break;
		case 'text0':	typestr = 'Inactive Text';		top.ws.linkfgcolor0();		break;
		case 'text1':	typestr = 'Active Text';		top.ws.linkfgcolor1();		break;
		case 'cbBG':	typestr = '';					top.ws.cbBG();				break;
		case 'cbBorder':typestr = '';					top.ws.cbBorderColor();		break;
		default:		typestr = 'Unknown';																	break;
	}

	//bg = prompt('Enter a color for "'+typestr+'":','');

	/*if (!bg) return;
	if (parseInt(bg) == 0 || bg == 'none' || bg == 'transparent')
	{
		bg = 'url(NO_COLOR.gif) no-repeat #FFF';
		obj.style.backgroundColor = 'transparent';
	}
	obj.style.background = bg;
	lbUpdate();*/
}
