var brightnessThreshold = 150;
var differenceThreshold = 200;

var nsi;
var a;
var s;
var style;
var xmlhttp;


function Go(x)
{
	var isPostBack = document.getElementById('lblisPostBack').innerHTML;
	if (isPostBack=='False')
	{
		dstyle(x);
		var a = document.getElementById('lpCommodities_listAvailable');
		a.selectedIndex = rand(0,a.options.length);
		Add("lpCommodities");
		a.selectedIndex = rand(0,a.options.length);
		Add("lpCommodities");

		var b = document.getElementById('lpFields_listAvailable');
		b.selectedIndex = rand(0,b.options.length);
		Add("lpFields");
		b.selectedIndex = rand(0,b.options.length);
		Add("lpFields");
	}
	else
	{
		update('all');
	}
}

function op(u,h,w)
{
	var w=window.open(u,'','scrollbars=yes,width='+w+',height='+h+',resizable=yes');
	w.focus();
}

function createtable()
{
	var inststyle;
	var fieldstyle;
	var pricestyle;
	var captionstyle;
	var nooffields;
	var noofinsts;
	var bottomlogostyle;

	var site=document.getElementById('drpLogo').value;

	var logocol = 'FFCC33';
	if (site == 'TheBullionDesk')
	{
		logocol = 'FFCC33';
	}
	if (site == 'BaseMetals')
	{
		logocol = 'FF9933';
	}
	if (site == 'MinorMetals')
	{
		logocol = 'FF4242';
	}
	var lr= parseInt(logocol.substring(0,2),16);
	var lg= parseInt(logocol.substring(2,4),16);
	var lb= parseInt(logocol.substring(4,6),16);

	if (document.getElementById('txtCaption').value != '')
	{
		var color = document.getElementById('CaptionBackColorfield').value;	
	}
	else
	{
		var color = document.getElementById('FieldBackColorfield').value;	
	}
	var r = parseInt(color.substring(0,2),16);
	var g = parseInt(color.substring(2,4),16);
	var b = parseInt(color.substring(4,6),16);
	var bright = ((r*299) + (g*587) + (b*114)) / 1000;
	var diff = Math.max(r, lr) - Math.min(r , lr) + Math.max(g, lg) - Math.min(g , lg) + Math.max(b, lb) - Math.min(b , lb);
	if (bright > brightnessThreshold)
	{
		if (diff < differenceThreshold)
		{
			logo = 'img/logo/'+site+'ko.gif';
		}
		else
		{	
			logo = 'img/logo/'+site+'k.gif';
		}
	}
	else
	{
		if (diff < differenceThreshold)
		{
			logo = 'img/logo/'+site+'wo.gif';
		}
		else
		{
			logo = 'img/logo/'+site+'w.gif';
		}
	}

	var layout=3;
	var fix = false;
	if (document.getElementById('radLayout1').checked == true)
	{
		layout = 1;
	}
	else
	{
		if (document.getElementById('radLayout2').checked == true)
		{
			layout = 2;
		}
		else
		{
			layout = 3;
		}
	}
	if (document.getElementById('drpPriceType').value==1)
	{
		fix = true;	
	}
	else
	{
		fix = false;	
	}




	var divref = 'dynamictable';
	var fields = document.getElementById('lpFields_listSelected');
	nooffields = fields.length;
	var insts = document.getElementById('lpCommodities_listSelected');
	noofinsts = insts.length;

	if (document.getElementById('txtCaption').value=='')
	{
		captionstyle= 'display:none;' ;
	}
	else
	{
		captionstyle = 'background-color:'
				+ document.getElementById('CaptionBackColorfield').value;
		captionstyle += ';color:'
				+ document.getElementById('CaptionForeColorfield').value;
		captionstyle += ';font-size:'
				+ document.getElementById('drpCaptionFontSize').value;
		captionstyle += 'pt;font-family:\''
				+ document.getElementById('drpCaptionFont').options[document.getElementById('drpCaptionFont').selectedIndex].text;
		captionstyle += '\';';
	}

	if (document.getElementById('txtCaption').value != '')
	{
		bottomlogostyle = 'background-color:'
				+ document.getElementById('CaptionBackColorfield').value;
		bottomlogostyle += ';font-size:10pt;'
	}
	else
	{
		bottomlogostyle = 'background-color:'
				+ document.getElementById('FieldBackColorfield').value;
		bottomlogostyle += ';font-size:10pt;'
	}

	if (document.getElementById('chkShowFieldCaptions').checked == true)
	{
		fieldstyle = 'background-color:'
				+ document.getElementById('FieldCaptionBackColorfield').value;
		fieldstyle += ';color:'
				+ document.getElementById('FieldCaptionForeColorfield').value;
		fieldstyle += ';font-size:'
				+ document.getElementById('drpFieldCaptionFontSize').value;
		fieldstyle += 'pt;font-family:\''
				+ document.getElementById('drpFieldCaptionFont').options[document.getElementById('drpFieldCaptionFont').selectedIndex].text;
		fieldstyle += '\';';
	}
	else
	{
		fieldstyle = 'display:none;';
	}

	inststyle = 'background-color:'
			+ document.getElementById('CommodityBackColorfield').value;
	inststyle += ';color:'
			+ document.getElementById('CommodityForeColorfield').value;
	inststyle += ';font-size:'
			+ document.getElementById('drpCommodityFontSize').value;
	inststyle += 'pt;font-family:\''
			+ document.getElementById('drpCommodityFont').options[document.getElementById('drpCommodityFont').selectedIndex].text;
	inststyle += '\';';

	pricestyle = 'background-color:'
			+ document.getElementById('FieldBackColorfield').value;
	pricestyle += ';color:'
			+ document.getElementById('FieldForeColorfield').value;
	pricestyle += ';font-size:'
			+ document.getElementById('drpFieldFontSize').value;
	pricestyle += 'pt;font-family:\''
			+ document.getElementById('drpFieldFont').options[document.getElementById('drpFieldFont').selectedIndex].text;
	pricestyle += '\';';


	if (document.getElementById(divref))
	{
		var ts;
	
		if (layout == 1)
		{
			//Start Table
			
			ts = '<table style="border-collapse:collapse;'
				+ pricestyle
				+ '">';
	
			//Add Caption Row
	
			ts += '<tr style="'
				+ captionstyle
				+ '"><td id=caption';
			if (!fix)
			{
				ts += ' colspan='
					+ 2*(nooffields+1)
					+ '>';
			}
			else
			{
				ts += ' colspan='
					+ 2*(nooffields+1)+1
					+ '>';
			}
			ts += document.getElementById('txtCaption').value.substring(0,50);
			ts += '</td></tr>'
	
			//Add field header row
	
			ts += '<tr style='+fieldstyle+'>';
			ts += '<td>&nbsp;</td>';
			if (fix)
			{
				ts += '<td>&nbsp;</td>';
			}
			for (var c=0;c <= nooffields-1;c++)
			{
				ts += '<td>&nbsp;</td><td>'+fields.options[c].text+'</td>';
			}
			ts += '</tr>';

			//Create the rest of the table

			for (r=0;r<= (noofinsts-1);r++)
			{
				ts += '<tr><td style="text-align:left;'
					+ inststyle 
					+ '">'
				if (!fix)
				{
					ts += insts.options[r].text.replace(/ /g,'&nbsp;');
				}
				else
				{
					ts += insts.options[r].text.replace(/ /g,'&nbsp;')
						+ '</td><td>am&nbsp;'
						+ dateNow();
				}
				ts += '</td>';
				
				
				for (var c=0;c <= nooffields-1;c++)
				{
					ts += '<td>&nbsp;</td><td>'
						+ rand(0,100)
						+ '</td>';
				}
				ts += '</tr>';
				
				if ( (fix) && (insts.options[r].text != 'Silver') )
				{
					ts += '<tr><td style="text-align:left;'
						+ inststyle 
						+ '">'
					ts += insts.options[r].text.replace(/ /g,'&nbsp;')
						+ '</td><td>pm&nbsp;'
						+ dateNow();
					ts += '</td>';

					for (var c=0;c <= nooffields-1;c++)
					{
						ts += '<td>&nbsp;</td><td>'
							+ rand(0,100)
							+ '</td>';
					}
					ts += '</tr>';
				}

			}

			//Finish and write to div
			ts += '<tr><td style="text-align:left;'
				+ bottomlogostyle
				+ '"></td>'
		
			if (!fix)
			{

				ts += '<td style="'
					+ bottomlogostyle
					+'" colspan='
					+ ((2*(nooffields+1))-1)
					+ '>&nbsp;</td></tr>';
				ts += '<tr><td style="background-color:#FFFFFF;" colspan='+(2*(nooffields+1))+'>';
			}
			else
			{

				ts += '<td style="'
					+ bottomlogostyle
					+ '>&nbsp;</td><td style="text-align:center;'
					+ bottomlogostyle
					+'" colspan='
					+ ((2*(nooffields+1))-1)
					+ '>&nbsp;</td></tr>';
				ts += '<tr><td style="background-color:#FFFFFF;" colspan='+(2*(nooffields+1)+1)+'>';
			}
			ts += '<div style="width:100%;position:relative;bottom:18px;text-align:center;"><img src="'+logo+'"/></div>';
			ts += '</td></tr>';
			ts += '</table>';

			document.getElementById(divref).innerHTML = ts;
		}

		if (layout == 2)
		{
			if(!fix)
			{
				//Start Table
				
				ts = '<table style="border-collapse:collapse;'
					+ pricestyle
					+ '">';
		
				//Add Caption Row
		
				ts += '<tr style="'
					+ captionstyle
					+ '"><td id=caption';
				ts += ' colspan='
					+ 2*(noofinsts+1)
					+ '>';
				ts += document.getElementById('txtCaption').value;
				ts += '</td></tr>'
		
				//Add Instrument header row
		
				ts += '<tr style='
					+ inststyle
					+ '>';
				ts += '<td>&nbsp;</td>';
				for (var c=0;c <= noofinsts-1;c++)
				{
					ts += '<td>&nbsp;</td><td>'
						+ insts.options[c].text.replace(/ /g,'&nbsp;')
						+ '</td>';
				}
				ts += '</tr>';

				//Create the rest of the table
	
				for (r=0;r<= (nooffields-1);r++)
				{
					ts += '<tr><td style="text-align:left;'
						+ fieldstyle
						+ '">'
						+ fields.options[r].text
						+ '</td>';
					for (var c=0;c <= noofinsts-1;c++)
					{
						ts += '<td>&nbsp;</td><td>'
							+ rand(0,100)
							+ '</td>';
					}
					ts += '</tr>';
				}
	
				//Finish and write to div

				ts += '<tr><td style="text-align:left;'
					+ bottomlogostyle
					+ '">&nbsp;</td><td style="text-align:center;'
					+ bottomlogostyle
					+ '" colspan='
					+ ((2*(noofinsts+1))-1)
					+ '>&nbsp;</td></tr>';
				ts += '<tr><td style="background-color:#FFFFFF;" colspan='
					+ (2*(noofinsts+1))
					+ '>';
				ts += '<div style="width:100%;position:relative;bottom:18px;text-align:center;"><img src="'+logo+'"/></div>';
				ts += '</td></tr>';
				ts += '</table>';

				document.getElementById(divref).innerHTML = ts;
			}
			else
			{
			
				//Start Table
				var extracols=0;
				for (var c=0;c <= noofinsts-1;c++)
				{
					if (insts.options[c].text!='Silver')
					{
						extracols++;
					}
				}

				ts = '<table style="border-collapse:collapse;'
					+ pricestyle
					+ '">';
		
				//Add Caption Row
		
				ts += '<tr style="'
					+ captionstyle
					+ '"><td id=caption';
				ts += ' colspan='
					+ 2*(noofinsts+1+extracols)
					+ '>';
				ts += document.getElementById('txtCaption').value;
				ts += '</td></tr>'
		
				//Add Instrument header row
		
				ts += '<tr style='
					+ inststyle
					+ '>';
				ts += '<td>&nbsp;</td>';
				for (var c=0;c <= noofinsts-1;c++)
				{
					ts += '<td>&nbsp;</td><td>'
						+ insts.options[c].text.replace(/ /g,'&nbsp;')
						+ '</td>';
					if (insts.options[c].text != 'Silver')
					{
						ts += '<td>&nbsp;</td><td>'
							+ insts.options[c].text.replace(/ /g,'&nbsp;')
							+ '</td>';
					}
				}
				ts += '</tr>';
				ts += '<tr>'
				ts += '<td style="text-align:left;'+ fieldstyle+ '">&nbsp;</td>';
				for (var c=0;c <= noofinsts-1;c++)
				{
					ts += '<td>&nbsp;</td><td>am</td>';
					if (insts.options[c].text != 'Silver')
					{
						ts += '<td>&nbsp;</td><td>pm</td>';
					}

				}
				ts += '</tr>';
				ts += '<tr>'
				ts += '<td style="text-align:left;'+ fieldstyle+ '">&nbsp;</td>';
				for (var c=0;c <= noofinsts-1;c++)
				{
					ts += '<td>&nbsp;</td><td>'+dateNow()+'</td>';
					if (insts.options[c].text != 'Silver')
					{
						ts += '<td>&nbsp;</td><td>'+dateNow()+'</td>';
					}

				}
				ts += '</tr>';


				//Create the rest of the table
	
				for (r=0;r<= (nooffields-1);r++)
				{
					ts += '<tr><td style="text-align:left;'
						+ fieldstyle
						+ '">'
						+ fields.options[r].text
						+ '</td>';
					for (var c=0;c <= noofinsts-1+extracols;c++)
					{
						ts += '<td>&nbsp;</td><td>'
							+ rand(0,100)
							+ '</td>';
					}
					ts += '</tr>';
				}
	
				//Finish and write to div

				ts += '<tr><td style="text-align:left;'
					+ bottomlogostyle
					+ '">&nbsp;</td><td style="text-align:center;'
					+ bottomlogostyle
					+ '" colspan='
					+ ((2*(noofinsts+extracols)))
					+ '>&nbsp;</td></tr>';
				ts += '<tr><td style="background-color:#FFFFFF;" colspan='
					+ (2*(noofinsts+extracols)+1)
					+ '>';
				ts += '<div style="width:100%;position:relative;bottom:18px;text-align:center;"><img src="'+logo+'"/></div>';
				ts += '</td></tr>';
				ts += '</table>';

				document.getElementById(divref).innerHTML = ts;
			}
		}
		if (layout == 3)
		{
			if (!fix)
			{
				//Start Table
				
				ts = '<table style="border-collapse:collapse;'
					+ pricestyle
					+ '">';
		
				//Add Caption Row
		
				ts += '<tr style="'
					+ captionstyle
					+ '"><td id=caption';
				ts += ' colspan='
					+ 2*(nooffields)
					+ '>';
				ts += document.getElementById('txtCaption').value;
				ts += '</td></tr>'
		
				//Add field header row
		
				for (r=0;r<= (noofinsts-1);r++)
				{
					ts += '<tr><td style='
						+ inststyle
						+ ' colspan ='
						+ 2*(nooffields)
						+ '>'
						+ insts.options[r].text
						+ '</td></tr>';				
	
					ts += '<tr style='
						+ fieldstyle
						+ '>';
					for (var c=0;c <= nooffields-1;c++)
					{
						ts += '<td>'
							+ fields.options[c].text
							+ '</td><td>&nbsp;</td>';
					}
					ts += '</tr>';
					
					ts += '<tr>';
						for (var c=0;c <= nooffields-1;c++)
					{
						ts += '<td>' 
							+ rand(0,100) 
							+ '</td><td>&nbsp;</td>';
					}
					ts += '</tr>';
	
				}

				//Finish and write to div
				ts += '<tr><td style="text-align:center;'
					+ bottomlogostyle
					+'" colspan=' 
					+ 2*(nooffields) 
					+ '><img src="'+logo+'"/></td></tr>';
				ts += '</table>';
				document.getElementById(divref).innerHTML = ts;
			}
			else
			{
				//Start Table
				
				ts = '<table style="border-collapse:collapse;'
					+ pricestyle
					+ '">';
		
				//Add Caption Row
		
				ts += '<tr style="'
					+ captionstyle
					+ '"><td id=caption';
				ts += ' colspan='
					+ 2*(nooffields)+1
					+ '>';
				ts += document.getElementById('txtCaption').value;
				ts += '</td></tr>'
		
				//Add instrument header row
		
				for (r=0;r<= (noofinsts-1);r++)
				{
					ts += '<tr><td style='
						+ inststyle
						+ ' colspan ='
						+ 2*(nooffields)+1
						+ '>'
						+ insts.options[r].text
						+ '</td></tr>';				
	
					ts += '<tr style='
						+ fieldstyle
						+ '>';
					ts += '<td>&nbsp;</td>'
					for (var c=0;c <= nooffields-1;c++)
					{
						ts += '<td>'
							+ fields.options[c].text
							+ '</td><td>&nbsp;</td>';
					}
					ts += '</tr>';
					
					ts += '<tr>';
					ts += '<td>am&nbsp;'+dateNow()+'</td>';
					for (var c=0;c <= nooffields-1;c++)
					{
						ts += '<td>' 
							+ rand(0,100) 
							+ '</td><td>&nbsp;</td>';
					}
					ts += '</tr>';
					if (insts.options[r].text != 'Silver')
					{
						ts += '<tr>';
						ts += '<td>pm&nbsp;'+dateNow()+'</td>';
						for (var c=0;c <= nooffields-1;c++)
						{
							ts += '<td>' 
								+ rand(0,100) 
								+ '</td><td>&nbsp;</td>';
						}
						ts += '</tr>';	
					}
	
				}

				//Finish and write to div
				ts += '<tr><td style="text-align:center;'
					+ bottomlogostyle
					+'" colspan=' 
					+ (2*(nooffields)+1) 
					+ '><img src="'+logo+'"/></td></tr>';
				ts += '</table>';
				document.getElementById(divref).innerHTML = ts;
			}
		}
	}
}

function update(x)
{
	
	if (document.getElementById(x+'field'))
	{
		document.getElementById(x).style.backgroundColor='#'+document.getElementById(x+'field').value;
	}

	if (x=='all')
	{
		var i;
		ctl = new Array('CaptionBackColor','CaptionForeColor','CommodityBackColor','CommodityForeColor','FieldBackColor','FieldForeColor','FieldCaptionBackColor','FieldCaptionForeColor');
		for (i=0;i<ctl.length;i++)
		{
			document.getElementById(ctl[i]).style.backgroundColor='#'+document.getElementById(ctl[i]+'field').value;
		}
	}
	createtable();
}

function Add(c)
{
	a=document.getElementById(c+ "_listAvailable");
	s=document.getElementById(c+"_listSelected");
	if(a && s)
	{
		if(a.selectedIndex>=0)
		{
			if (a.selectedIndex == 0)
			{
				nsi=a.selectedIndex;
			}
			else
			{
				nsi=a.selectedIndex-1;
			}
			var itm=a.options[a.selectedIndex];
			var o=new Option(itm.text,itm.value,false,false);
			s.options[s.options.length]=o;
			a.remove(a.selectedIndex);
			var l=document.getElementById(c+"_selectedValues");
			l.value=l.value + ',' + o.value;
		}
		else alert("Please select something from the available list to add.");
	}
	createtable('dynamictable');
	if (a.options[nsi])
	{
		setTimeout("a.options[nsi].selected = true",1);
	}
}

function Rmv(c)
{
	a=document.getElementById(c+"_listAvailable");
	s=document.getElementById(c+"_listSelected");
	if(a && s)
	{
		if(s.selectedIndex>=0)
		{
			if (s.selectedIndex == 0)
			{
				nsi=s.selectedIndex;
			}
			else
			{
				nsi=s.selectedIndex-1;
			}
			var itm=s.options[s.selectedIndex];
			var o=new Option(itm.text,itm.value,false,false);
			a.options[a.options.length]=o;
			s.remove(s.selectedIndex);
			var l=document.getElementById(c+"_selectedValues");
			var r=l.value.split(',');
			for(var i=0;i<r.length;i++)
			{
				if(r[i]==o.value)
				{
					r[i]='';
					break;
				}
			}
			l.value=r.join(',');
		}
		else alert("Please select something from the selected list to remove.");
	}
	createtable('dynamictable');
	if (s.options[nsi])
	{
		setTimeout("s.options[nsi].selected = true",1);
	}
}

function Up(c)
{
	MoveItem(c,false);
	createtable();
}

function Down(c)
{
	MoveItem(c,true);
	createtable();
}

function MoveItem(c,d)
{
	a=document.getElementById(c+"_listAvailable");
	s=document.getElementById(c+"_listSelected");

	if(s)
	{
		var i=s.selectedIndex;
		nsi = s.options.selectedIndex;
		if(d)
		{
			nsi++;
		}
		else
		{
			nsi--;
		}
		if(i>=0)
		{
			var itm=s.options[i];
			if(!(i==0 && !d) && !(i>=s.options.length-2 && d))
			{
				var o=new Option(itm.text,itm.value,true,true);
				var m=(d?i+2:i-1);
				s.options.add(o,m);
				s.remove((d?i:i+1));
			}
			else 
			{
				if(i>=s.options.length-2 && d)
				{
					var o=new Option(itm.text,itm.value,true,true);
					s.options[s.options.length]=o;
					s.remove(i);
				}
			}
			var l=document.getElementById(c+"_selectedValues");
			l.value="";
			for(i=0;i<s.options.length;i++)
			{
				l.value+=","+s.options[i].value;
			}
			if (s.options[nsi])
			{
				setTimeout("s.options[nsi].selected = true",1);
			}
		}
		else 
		{
			alert("Please select something to move up/down.");
		}
	}
}

function rand(a,b)
{
    var ranNum= a + Math.floor(Math.random()*(b-a));
    return ranNum;
}

function dstyle(z)
{
	style = z;
	xmlDoc = loadXMLDoc("styles.xml");
}


function dstyleresponse()
{
	if(xmlhttp.readyState!=4)
	{
		return;
	}

	if(xmlhttp.status!=200)
	{
		alert("Problem retrieving XML data");
		return;
	}
	
	xmlDoc = xmlhttp.responseXML.documentElement;

	count =  xmlDoc.getElementsByTagName("pricestylemapping")[0].getElementsByTagName("*").length;

	var i;
	for(i=0 ; i<=count-1 ; i++)
	{
		tagname = xmlDoc.getElementsByTagName("pricestylemapping")[0].getElementsByTagName("*")[i].tagName;
		elementname = xmlDoc.getElementsByTagName("pricestylemapping")[0].getElementsByTagName("*")[i].childNodes[0].nodeValue;
		noofstyles = xmlDoc.getElementsByTagName("pricestyle").length;
		var j;
		for (j=0 ; j<noofstyles ; j++)
		{
			//alert(xmlDoc.getElementsByTagName("pricestyle")[j].attributes.getNamedItem("id").value);

			if (xmlDoc.getElementsByTagName("pricestyle")[j].attributes.getNamedItem("id").value == style )
			{

				elementvalue = xmlDoc.getElementsByTagName("pricestyle")[j].getElementsByTagName("*")[i].childNodes[0].nodeValue;
				try
				{
					if (elementname.indexOf('chk') == 0)
					{
						document.getElementById(elementname).checked = (elementvalue == 'true');
					}
					else
					{
						if (elementname.indexOf('drp') == 0)
						{						
							var optiondrop = document.getElementById(elementname);
							var k;
							if (optiondrop) 
							{
								for (k=0 ; k<optiondrop.options.length ; k++)
								{
									if (optiondrop.options[k].text == elementvalue)
									{
										optiondrop.selectedIndex = k;
										break;
									}
								}
							}
						}
						else
						{
							document.getElementById(elementname).value = elementvalue;
						}
					}
				}
				catch (e)
				{
				}
				break;
			}
		}
	}
	update('all');
}


function loadXMLDoc(url)
{
	xmlhttp=null;

	if (window.XMLHttpRequest)
	{// code for IE7, Firefox, Mozilla, etc.
		  xmlhttp=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{// code for IE5, IE6
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}

	if (xmlhttp!=null)
	{
		xmlhttp.onreadystatechange=dstyleresponse;
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);
	}
	else
	{
		alert("Your browser does not support XMLHTTP.");
	}
}

function dateNow()
{
	var d = new Date();
	var date = d.getDate();
	if (date <= 9)
	{
		date = '0' + date;
	}
	var month = d.getMonth();
	month++;
	if (month <= 9)
	{
		month = '0' + month;
	}
	var year = d.getFullYear();
	year = year.toString().substring(2,5);
	return (date+'/'+month+'/'+year);
}