var base_href, charset;

window.onload = setUp;

// !!! Note credittext event calls are inline (see {{nowthenImageCredits}})

function setUp()
	{
	var divs, lis, spans, i, j, giDiv;
	var tandc, llink, viewWidth, strDiffWidth;
	var els, mediaDiv, mediaSplash, mediaHref, mediaTitle, flashvars, params, attributes;
	var base;

	// base href for IE
	// ----------------
	base = document.getElementsByTagName('base');
	if (base && base[0] && base[0].href) base_href = base[0].href;
	else base_href = 'http://'+document.domain+'/';

	// Get charset
	metas = document.getElementsByTagName('meta');
	charset = metas[0].getAttribute('content').replace(/^(.+;)?\s*charset\=([^;]*)(.*)?$/, '$2');

	// ***** Hide noJS classes, reveal JS classes *****
	//
	divs = document.getElementsByTagName("div");
	for(i=0; i<divs.length; i++)
		{
		if (divs[i].className.indexOf("noJS") != -1)
			divs[i].style.display = "none";
		else if (divs[i].className.indexOf("JS") != -1)
			divs[i].style.display = "block";
		}

	// ***** Check for #extra-images (long/medium articles only) *****
	// ***** Simulate float: bottom; 		             *****
	var bottomFloat, textToWrap;
	bottomFloat = document.getElementById('extra-images'); // NB: see CSS fixes for IE6
	if (bottomFloat && typeof(floatBottom) == 'function')
		floatBottom(bottomFloat, 'right', 0, 1);

	// **** Footer grey bar fix ****
	viewWidth = document.body.offsetWidth;
	strDiffWidth = Math.max((viewWidth - document.getElementById('footer').offsetWidth) >> 1, 30).toString().concat('px');
	tandc = document.getElementById('footer-tandc');
	llink = document.getElementById('losource-link');
	tandc.style.marginLeft = '-'+strDiffWidth;
	tandc.style.paddingLeft = strDiffWidth;
	llink.style.marginRight = '-'+strDiffWidth;
	llink.style.paddingRight = strDiffWidth;

	// Postcode changes require lat/lng resetting
	postcode = document.getElementById('Postcode');
	if (postcode)
		{
		postcode.onchange = function()
			{
			document.getElementById('Latitude').value = '';
			document.getElementById('Longitude').value = '';
			}
		}

	/*	Media.
	 *	Common values.
	 */
	params =
		{
		'allowscriptaccess': 'true',
		'frontcolor': '0xFFFFFF',
		'backcolor': '0x000000'
		};
	attributes =
		{
		};

	/*	Video/audio file
	 */
	mediaDiv = document.getElementById('videoplayer');
	if (mediaDiv)
		{
		els = mediaDiv.getElementsByTagName('img');
		mediaSplash = els[0].src;
		els = mediaDiv.getElementsByTagName('a');
		mediaHref = els[0].href;

		// Linux video display issues
		if ((navigator.appVersion.indexOf("X11")!=-1 || navigator.appVersion.indexOf("Linux")!=-1))
			{
			els = mediaDiv.parentNode.getElementsByTagName('div');
			for (i=0; i<els.length; ++i)
				{
				if (els[i].className.match(/\bcredit-link\b/))
					{
					els[i].style.top = '100%';
					}
				}
			}

		flashvars =
			{
     			'file': mediaHref,
			'image': mediaSplash,
			'autostart': 'true'
			};

		swfobject.embedSWF(
				'assets/templates/nowthen/video/player.swf',
				'videoplayer', '400', '300',
				'9', 'false', flashvars, params, attributes);
		}

	/*	Audio
	 */
	for(i=1; i<=4; ++i)
		{
		mediaDiv = document.getElementById('audio'+i.toString());
		if (mediaDiv)
			{
			els = mediaDiv.getElementsByTagName('a');
			mediaHref = els[0].href;
			mediaTitle = els[0].innerHTML;

			flashvars =
                        	{
	                        'file': mediaHref,
        	                'autostart': 'false'
                	        };

			swfobject.embedSWF(
	                                'assets/templates/nowthen/video/player.swf',
        	                        mediaDiv.id, '400', '20',
                	                '9', 'false', flashvars, params, attributes);
			}
		}

	// ***** Maxigallery editing *****
	if (els = document.getElementById('editform')) els.scrollIntoView();

	// ***** Preload *****
	imgs = new Array();
	imgs[0] = new Image();
	imgs[0].src = base_href+'assets/templates/nowthen/images/get_involved_bottom_pink.gif';
	imgs[1] = new Image();
	imgs[1].src = base_href+'assets/templates/nowthen/images/get_involved_top_pink.gif';
	}

function animateWidth(obj, current, increment, end, delay, callback)
	{
	if (increment > 0)
		{
		current = Math.min(current + increment, end);
		}
	else
		{
		current = Math.max(current + increment, end);
		}

	obj.style.width = current.toString().concat('px');

	if ((increment > 0 && current < end) || (increment < 0 && current > end))
		{
		setTimeout(function(){animateWidth(obj, current, increment, end, delay, callback);});
		}
	else
		{
		if (!current) obj.style.display = "none";
		if (callback) callback();
		}
	}

function dispCredits(creditLink)
	{
	var containingDiv, creditDiv, i, divs, imgs, table, credittext;

	// Find div.credits
	creditDiv = creditLink.parentNode;
	while (!creditDiv.className.match(/\bcredits\b/) && creditDiv) creditDiv = creditDiv.parentNode;

	if (creditDiv)
		{

		containingDiv = creditDiv.parentNode;

		// Find .credittext
		divs = creditDiv.getElementsByTagName("div");
		for (i=0;i<divs.length;i++) if (divs[i].className == "credittext") credittext = divs[i];

		// Find image
		imgs = containingDiv.getElementsByTagName('img');

		if (containingDiv.getAttribute('id') == 'content-video' && (navigator.appVersion.indexOf("X11")!=-1 || navigator.appVersion.indexOf("Linux")!=-1))
			{
			// Special case - video player on linux 
			if(credittext.style.display != 'block') // SHOW
				{
				credittext.style.display = "block";
				credittext.style.left = '400px';
				animateWidth(credittext, 0, 10, 250, 2);
				table = credittext.getElementsByTagName('table');
				table[0].style.width = '250px';
				creditLink.innerHTML = 'close...';
				}
			else
				{
				animateWidth(credittext, 250, -10, 0, 2); // HIDE
				creditLink.innerHTML = 'credits...';
				}
			}
		else
			{
			if(credittext.style.display != 'block') // SHOW
				{
				// Open from left
				credittext.style.left = '0';
				credittext.style.display = "block";
				animateWidth(credittext, 0, 10, imgs[0].offsetWidth, 2);
				creditLink.innerHTML = 'close...';
				}
			else // HIDE
				{
				// Close to the right
				credittext.style.left = 'auto';
				credittext.style.right = (containingDiv.offsetWidth - imgs[0].offsetWidth).toString().concat('px');
				animateWidth(credittext, imgs[0].offsetWidth, -10, 0, 2, function()
					{
					credittext.style.display = 'none';
					});
				creditLink.innerHTML = 'credits...';
				}
			}
		return false;
		}
	else
		{
		// div.credits not found
		return true;
		}
	}

