﻿
function init()
{
	setExternalLinks();
	if(BrowserDetect.browser == "Explorer" && BrowserDetect.version < 7)
	{
		pngFix();
		var g = document.getElementById('green');
		if(g)
		{
			g.style.position = 'absolute';
			window.onscroll = movegreen;
		}
	}
}

window.onload = init;


// IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com
// Free usage permitted as long as this notice remains intact.
// This must be a path to a blank image. That's all the configuration you need here.
var blankImg = 'blank.gif';
var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
function filt(n, s, m) {
	if(n && s && n.style)
	{
		n.style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")';
		n.src = blankImg;
	}
}


var di = null;
function hide(el, delay)
{
	if(di) clearInterval(di);
	if(delay)
	{
		di = setInterval( function() { hide(el); }, delay);
		return;
	}
	el = $(el);
	el.style.display = "none";
}
var si = null;
function show(el, delay)
{
	var el = $(el);	
	
	if(di) clearInterval(di);
	if(si) clearInterval(si);
	
	if(delay)
	{
		si = setInterval( function() { show(el); }, delay);
		return;
	}
	
	$(el).style.display = "block";
}

function pngFix() 
{
	var nodes = document.getElementsByTagName('*');
	
	for(var i = nodes.length; i-- > 0;)
	{	
		var node = nodes[i];
		

		if (node.tagName == 'IMG') 
		{
			if ((/\.png$/i).test(node.src)) 
			{
				filt(node, node.src, 'image');  // was 'scale'
				src = blankImg;
			} 
		}
		
		if (node.style && node.style.backgroundImage) 
		{
		
			if (node.style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) 
			{
				var s = RegExp.$1;
				node.style.backgroundImage = '';
				filt(node, s, 'crop');
			}
			else 
			{
				filt();
			}
		}
		
		/*
		if(node.className && document.styleSheets)
		{
			var sheets = document.styleSheets;
			
			for(var i = sheets.length; i-- > 0;)
			{
				var sheet = sheets[i];
				
				if(sheet)
				{
					var rule = null;
					
					for(var c = sheet.cssRules.length; c-- > 0;)
					{
						if(sheet.cssRules[c].selectorText.indexOf(node.className) > -1)
						{
							rule = sheet.cssRules[c].style;
							break;
						}
					}
					
					if(rule)
					{
						if (rule.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) 
						{
							filt(node, s, 'crop');
						}
						
					}
				}
			}
		}*/
	}
}

var theTop = 30;
var old;

function movegreen()
{
	// this should only execute
	// if the browser is IE < 7
	
	var g = $('green');
	
	if( ! g.top) g.top = g.offsetTop;
	
	var t = g.top;
	var adj = document.documentElement.scrollTop;
	var ch = g.offsetTop;
	var h = t+adj;
	
	if(h > document.documentElement.offsetHeight + 30)
	{
		h = document.documentElement.offsetHeight - $('green').style.height + 30;
	}
		
	$('green').style.top = h+'px'; 
	//alert(t + ' ' + adj + ' ' + h + ' ' + ch);
}



var fade = null;
var timer = null;

var changing = false;

function ChangeImage(el, src) {


	if(changing) return;

	changing = true;
	
	var mi = $("mimg");
	
	
	fade = new fx.Opacity(mi, {duration: 300, onComplete: function() {
			
			mi.src = src;
			if(el) mi.alt = el.getElementsByTagName('img')[0].getAttribute('alt');
			mi.onload = function() { if(fade != null) { fade.toggle(); changing = false; fade = null; } };
		
		} });
	
	fade.toggle();
	
	if(el != null)
	{
		var p = $(el).parentNode.parentNode;
		
		var t = p.getElementsByTagName('div');
		
		for(var i = t.length; i-- > 0; )
		{
			t[i].className = 'thumb';
		}
		
		el.parentNode.className = 'thumb t1';
	}

	return false;

}

function showhide(a, el)
{
	var f = new fx.Height(el, {duration: 300, onComplete: function() { 
	
		if( $(el).offsetHeight > 0 ) { 
			a.className = "less"; 
			a.firstChild.nodeValue = "hide projects"; 
		} else { 
			a.className = 'more';
			a.firstChild.nodeValue = "more projects"; 
		} 
	}});
	
	f.toggle();
}


function updateFeature(res)
{
	var container = $("featureimage");
	if(!container) return;
	
	var sp = container.getElementsByTagName("span")[0];
	
	sp.innerHTML += res.responseText;
	
	sp.style.position = "relative";
	
	var top = 0;
	
	if(sp.style.top)
		top = parseInt(sp.style.top);
	
	var lfi = sp.getElementsByTagName("img")[1];
	
	lfi.onload = function() { 
	
		
	
	};
	

}

function initRotateFeatureImage()
{
	var fi = $("featureimage");
	
	fi.onmouseover = function() { window.over = true; }
	fi.onmouseout = function() { window.over = false; }
	
	//fi.style.overflow = "hidden";
	
	var pe = new PeriodicalExecuter( function() { 
		if(window.over) return; 
		if(! $("featureimage").fade)
		{
			$("featureimage").fade = new fx.Opacity( 
				$("featureimage"), 
				{ 
					duration: 200, 
					onComplete: function() { 
						new ajax(
							"randomfeature.aspx", 
							{ 
								update: "featureimage", 
								onComplete : function() { 
									$("featureimage").fade = new fx.Opacity($("featureimage"), { now: 0, duration: 200 });
									$("featureimage").fade = null;
								} 
							}); 
					} 
				});

		}
				
		$("featureimage").fade.toggle(); 
	
	}, 10);
}


function setExternalLinks() {
	var links = document.getElementsByTagName("a");
	for(var i = links.length; i-- > 0;)
		if(links[i].getAttribute("rel") == "ext") links[i].target = "_external";
		
}



function playimages(el, imageUrls, index)
{

	var el = $(el);
	
	if(!el) return;
	
	if(!index) index = 0;
	
	if(index > imageUrls.length - 1) index = 0;
	
	
	
	pe = new PeriodicalExecuter( function() { index ++; el.src = imageUrls[index]; }, 5);
	
}



var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();