// window popup code
// Thanks to Caio Chassot, http://www.alistapart.com/articles/popuplinks/

var _POPUP_FEATURES = '';

function raw_popup(url, target, features) {
    // pops up a window containing url optionally named target, optionally having features
    if (isUndefined(features)) features = _POPUP_FEATURES;
    if (isUndefined(target  )) target   = '_blank';
    var theWindow = window.open(url, target, features);
    return theWindow;
}

function link_popup(src, features) {
    // to be used in an html event handler as in: <a href="..." onclick="link_popup(this,...)" ...
    // pops up a window grabbing the url from the event source's href
    return raw_popup(src.getAttribute('href'), src.getAttribute('target') || '_blank', features);
}

// MISC CLEANING-AFTER-MICROSOFT STUFF

function isUndefined(v) {
    var undef;
    return v===undef;
}


// addEvent cross-browser event handling for IE5+, NS6 and Mozilla
// By Scott Andrew
function addEvent(elm, evType, fn, useCapture) {	
	if (elm.addEventListener) {
	  elm.addEventListener(evType, fn, useCapture); 
	  return true;
	} else if (elm.attachEvent) {
	  var r = elm.attachEvent('on' + evType, fn);
	  return r;
	} else {
	  elm['on' + evType] = fn;
	}
}

function cancelClick() {
	return false;
}

/* Suckerfish dropdowns */
/* http://www.alistapart.com/articles/dropdowns/ */

function startList() {
	if (document.all&&document.getElementById) { 
		setupList(document.getElementById('toplevel'));
	}
}

function setupList(navRoot) { 
	for (var i=0; i<navRoot.childNodes.length; i++) {
		node = navRoot.childNodes[i];
		if (node.nodeName=="LI") {
			node.onmouseover=function() { 
				this.className += " over";
			}
			node.onmouseout=function() { 
				setTimeout('document.getElementById("'+this.id+'").className = document.getElementById("'+this.id+'").className.replace(" over", "");', 100);
			}
		} 
	}
}

ihvtimeout = new Object();
/* showHint */
var ihv = {
	currentResource: 0,
	
	init: function() {
		if (!document.getElementsByTagName || !document.getElementById)
		  return;
		
				
		// set up case studies if it's the right page
		if(document.getElementById('cssections')) {
			var divs = document.getElementsByTagName('div');
			for(var i = 0; i < divs.length; i++) {
				var div = divs[i];
				if(div.className.search(/cssection/) != -1) {
					if(div.className.search(/hide/) != -1) {
						new Effect.Opacity(div, {duration: 0.1, from: 1.0, to: 0.0});
					}
				}
			}
		}
		
		// set up resources if it's the right page
		if(document.getElementById('resourcetabs')) {
			
			var divs = document.getElementsByTagName('div');
			var ul = document.createElement('ul');
			for(var i = 0; i < divs.length; i++) {
				if(divs[i].className.search(/resourcetab/) != -1) {
					// get the name from the h3
					var h3 = document.getElementById(divs[i].getAttribute('id')+'name');
					h3.style.display = 'none';
					var li = document.createElement('li');
					li.id = divs[i].getAttribute('id')+'li';
					var link = document.createElement('a');
					link.id = divs[i].getAttribute('id')+'tab';
					link.href="#";
					link.innerHTML = h3.innerHTML;
					addEvent(link, 'mouseover', ihv.showResource, false)
					li.appendChild(link);
					ul.appendChild(li);
					
					// hide all frames but the one that's supposed to be active
					if(!(divs[i].className.search(/active/) != -1)) {
						divs[i].style.display = 'none';
						new Effect.Opacity(divs[i], {duration: 0, from: 1.0, to: 0.0});
					} else {
						li.className += 'active';
						ihv.currentResource = divs[i].getAttribute('id').replace(/tab([0-9]+)/, '$1');
					}
				}
			}
			document.getElementById('resourcetabs').appendChild(ul);
		}
		
		// set up rollover sections if it's the sales and marketing page
		if(document.getElementById('smsections')) {
			var divs = document.getElementsByTagName('div');
			for(var i = 0; i < divs.length; i++) {
				var div = divs[i];
				if(div.className.search(/smsection/) != -1) {
					var id = div.getAttribute('id');
					var h3 = document.getElementById(id+'name');
				//	h3.className += 'blocktitle';
					
					var ul = document.getElementById(id+'content');
					ul.style.display = 'none';
					new Effect.Opacity(ul, {duration: 0, from: 1.0, to: 0.0});
					
					var thelink = document.getElementById(id+'a');
					thelink.innerHTML = '<span class="blocktitle">'+h3.innerHTML+'</span>';
					addEvent(thelink, 'mouseover', ihv.showSMSection, false);
					addEvent(thelink, 'mouseout', ihv.delaySMHide, false);
					
					addEvent(document.getElementById(id+'ul'), 'mouseover', ihv.showSMSection, false);
					addEvent(document.getElementById(id+'ul'), 'mouseout', ihv.delaySMHide, false);
				}
			}
		}
	},
	
	showSMSection: function(e) {
		var el;
		if (window.event && window.event.srcElement)
		el = window.event.srcElement;
		if (e && e.target)
		el = e.target;
		if (!el)
		return;
		
		if(el.nodeName.toLowerCase() == 'ul' || el.nodeName.toLowerCase() == 'li') {
			while (el.nodeName.toLowerCase() != 'ul' &&
			  el.nodeName.toLowerCase() != 'body')
			el = el.parentNode;
			
			var ulid = el.getAttribute('id').substr(0,3);
			el = document.getElementById(ulid + 'a');
		} else {
		
			while (el.nodeName.toLowerCase() != 'a' &&
			  el.nodeName.toLowerCase() != 'body')
			el = el.parentNode;
		}
	
		clearTimeout(ihvtimeout[el.id.substr(2,1)]);
		
		// only trigger if it's not already active
		if(el.className.search(/smactive/) == -1) {
			// show current quadrant
			linkid = el.getAttribute('id');
			id = linkid.substr(0,3);
		
			var ul = document.getElementById(id+'content');
			var h3 = document.getElementById(id+'name');
			h3.className = h3.className.replace(/blocktitle/, '');
			ul.style.display = 'block';
			new Effect.Opacity(ul, {duration: .75, from: 0.0, to: 1.0});

			var div = document.getElementById(id);
			div.className += ' activequad';
		
			el.className += ' smactive';
		}
	},
	
	delaySMHide: function(e) {
		var el;
		if (window.event && window.event.srcElement)
		el = window.event.srcElement;
		if (e && e.target)
		el = e.target;
		if (!el)
		return;
		
		if(el.nodeName.toLowerCase() == 'ul' || el.nodeName.toLowerCase() == 'li') {
			while (el.nodeName.toLowerCase() != 'ul' &&
			  el.nodeName.toLowerCase() != 'body')
			el = el.parentNode;
			
			var ulid = el.getAttribute('id').substr(0,3);
			el = document.getElementById(ulid + 'a');
		} else {
		
			while (el.nodeName.toLowerCase() != 'a' &&
			  el.nodeName.toLowerCase() != 'body')
			el = el.parentNode;
		}
		
		var id = el.getAttribute('id');
		
		ihvtimeout[id.substr(2,1)] = setTimeout('ihv.hideSMSection("'+id+'");', 100);
	},
	
	hideSMSection: function(i) {
		el = document.getElementById(i); 
		
		// show current quadrant
		linkid = el.getAttribute('id');
		id = linkid.substr(0,3);
		var h3 = document.getElementById(id+'name');
		h3.className += 'blocktitle';
		var ul = document.getElementById(id+'content');
		ul.style.display = 'none';
		new Effect.Opacity(ul, {duration: 0, from: 1.0, to: 0.0});
		
		var div = document.getElementById(id);
		div.className = div.className.replace(/activequad/, '');
		
		el.className = el.className.replace(/smactive/, '');
		
	},
	
	showResource: function(e) {
		var el;
		if (window.event && window.event.srcElement)
		el = window.event.srcElement;
		if (e && e.target)
		el = e.target;
		if (!el)
		return;
		
		while (el.nodeName.toLowerCase() != 'a' &&
		  el.nodeName.toLowerCase() != 'body')
		el = el.parentNode;
		
		var id = el.getAttribute('id').replace(/tab([0-9]+)tab/, '$1');

		// turn off the old one
		var oldli = document.getElementById('tab'+ihv.currentResource+'li');
		oldli.className = oldli.className.replace(/\bactive\b/, '');
		var oldtab = document.getElementById('tab'+ihv.currentResource);
		oldtab.style.display = 'none';
		new Effect.Opacity(oldtab, {duration: 0, from: 1.0, to: 0.0});
		
		// turn on the new one
		var li = document.getElementById('tab'+id+'li');
		li.className += 'active';
		var newtab = document.getElementById('tab'+id);
		newtab.style.display = 'block';
		new Effect.Opacity(newtab, {duration: .75, from: 0.0, to: 1.0});
		
		ihv.currentResource = id;
	},
	
	showCaseStudy: function(id) {
		if(show = document.getElementById(id)) {
		
			// first turn on the button
			var btns = document.getElementsByTagName('a');
			for(var i = 0; i < btns.length; i++) {
				if(btns[i].id == (id + 'btn'))
					btns[i].className += ' active';
				else if(btns[i].className.search(/csbtn/) != -1)
					btns[i].className = 'csbtn';
			}
		
			var cs = document.getElementById('cssections');
			var divs = document.getElementsByTagName('div');
			for(var i = 0; i < divs.length; i++) {
				var div = divs[i];
				if(div.className.search(/cssection/) != -1) {
					if(div.className.search(/hide/) == -1) {
						ph = div.offsetHeight; 
						if(div.id == id) 
							return;
						else {
							div.className += ' hide';
							new Effect.Opacity(div, {duration: 0.1, from: 1.0, to: 0.0});
						}
					} 
				}
			}
		
			show.className = show.className.replace(/\bhide\b/, '');
			var nh = show.offsetHeight;
			var ratio = 100*nh/ph; 
			var w = show.offsetWidth;
		
			new Effect.Opacity(show, {duration: .5, from: 0.0, to: 1.0});
		}
	}
};




function dis()
{
	//gen.src = "images/general-off.gif"
//document.getElementById("gen").src="images/general-off.gif"
}
function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 90);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}


// JavaScript Document
var xmlHttp
function showHint(str)
{
if (str.length > 0)
{
fade = 10;
var url="resourcedb.php?str=" + str + "&fade=" + fade
xmlHttp=GetXmlHttpObject(stateChanged)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
fade = fade + 5;
opacity('ff',0,100,500);
//disp(str);
//
} 
else
{ 
document.getElementById("txtHint").innerHTML=""
} 
} 
function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{ 
document.getElementById("txtHint").innerHTML=xmlHttp.responseText 
} 
} 

function GetXmlHttpObject(handler)
{ 
var objXmlHttp=null

if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera") 
return 
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{ 
var strName="Msxml2.XMLHTTP"
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP"
} 
try
{ 
objXmlHttp=new ActiveXObject(strName)
objXmlHttp.onreadystatechange=handler 
return objXmlHttp
} 
catch(e)
{ 
alert("Error. Scripting for ActiveX might be disabled") 
return 
} 
} 
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest()
objXmlHttp.onload=handler
objXmlHttp.onerror=handler 
return objXmlHttp
}
}



/*
	DOMnews 1.0 
	homepage: http://www.onlinetools.org/tools/domnews/
	released 11.07.05
*/

/* Variables, go nuts changing those! */

var domnews = {
	dn_active: 1,
	// initial position 
	dn_startpos: 100, 			
	// end position
	dn_endpos: -300, 			
	// Speed of scroller higher number = slower scroller 
	dn_speed: 30, 
	// ID of the news box
	dn_newsID: 'news',			
	// class to add when JS is available
	dn_classAdd: 'hasJS',		
	// Message to stop scroller
	dn_stopMessage: 'Disable scrolling',	
	// ID of the generated paragraph
	dn_paraID: 'DOMnewsstopper',
	
	dn_scrollpos: 0,
	
	dn_step: 1,

	/* Initialise scroller when window loads */
	init: function()
	{	
		// check for DOM
		domnews.initDOMnews();
		// add more functions as needed
		
		addEvent(window, 'unload', domnews.unloadScroll, false);
	},
	
	/* stop scroller when window is closed */
	unloadScroll: function()
	{
		clearInterval(this.dn_interval);
	},



	
	/* Initialise scroller */
	initDOMnews: function()
	{
		if(!document.getElementById || !document.createTextNode || !document.getElementById(this.dn_newsID)){return;}
		
		this.dn_scrollpos = this.dn_startpos;
		domnews.dn_speed_backup = this.dn_speed;
		
		var thelist=document.getElementById(domnews.dn_newsID).getElementsByTagName('ul')[0];
		domnews.dn_endpos = thelist.offsetHeight * -1;
		
		
		var n=document.getElementById(domnews.dn_newsID);
		if(!n){return;}
		n.className=domnews.dn_classAdd;
		domnews.dn_interval=setInterval('domnews.scrollDOMnews()',domnews.dn_speed);
		var newa=document.createElement('a');
		var newp=document.createElement('p');
		newp.setAttribute('id',domnews.dn_paraID);
		newa.href='#';
		newa.appendChild(document.createTextNode(domnews.dn_stopMessage));
		newa.onclick=domnews.stopDOMnews;
		
		
		// down and up links
		var down = document.createElement('a');
		down.innerHTML = '<img src="images/news_down.gif" alt="Down" />';
		down.id = 'newsscrolldown';
		
		var up = document.createElement('a');
		up.innerHTML = '<img src="images/news_up.gif" alt="Up" />';
		up.id = 'newsscrollup';
		

		//newp.appendChild(newa);
		newp.appendChild(down);
		newp.appendChild(up);
		
		// event handlers
		
		addEvent(down, 'mouseover', domnews.speedUp, false);
		addEvent(down, 'mouseout', domnews.resumeSpeed, false);
		addEvent(up, 'mouseover', domnews.reverse, false);
		addEvent(up, 'mouseout', domnews.resumeSpeed, false);
		
				
		n.parentNode.insertBefore(newp,n.nextSibling);
		n.onmouseover=function()
		{		
			clearInterval(domnews.dn_interval);
		}
		n.onmouseout=function() 
		{
			if(!domnews.dn_active) return;
			domnews.dn_interval=setInterval('domnews.scrollDOMnews()',domnews.dn_speed);
			var debug = document.getElementById('debug');
		//	debug.innerHTML = domnews.dn_interval;
		}
	},
	
	speedUp: function(e) {
		var el;
		if (window.event && window.event.srcElement)
		el = window.event.srcElement;
		if (e && e.target)
		el = e.target;
		if (!el)
		return;
		
		while (el.nodeName.toLowerCase() != 'a' &&
		  el.nodeName.toLowerCase() != 'body')
		el = el.parentNode;
		
		el.style.cursor = 'pointer';
		
		domnews.dn_step = 5;
	},
	
	reverse: function(e) {
		var el;
		if (window.event && window.event.srcElement)
		el = window.event.srcElement;
		if (e && e.target)
		el = e.target;
		if (!el)
		return;
		
		while (el.nodeName.toLowerCase() != 'a' &&
		  el.nodeName.toLowerCase() != 'body')
		el = el.parentNode;
		
		el.style.cursor = 'pointer';
		
		domnews.dn_step = -5;
	},
	
	resumeSpeed: function() {
		if(!domnews.dn_active) return;
		clearInterval(domnews.dn_interval);
		domnews.dn_step = 1;
		domnews.dn_interval=setInterval('domnews.scrollDOMnews()',domnews.dn_speed);
	},
	

	stopDOMnews: function()
	{
		clearInterval(domnews.dn_interval);
		var n=document.getElementById(domnews.dn_newsID);
		n.className='';
		n.parentNode.removeChild(document.getElementById(domnews.dn_paraID));
		domnews.dn_active = 0;
		return false;
	}, 
	
	scrollDOMnews: function()
	{ 
		//var debug = document.getElementById('debug');
		//debug.innerHTML = this.dn_scrollpos;
		
		if(this.dn_scrollpos - domnews.dn_step <= domnews.dn_startpos) {
			var n=document.getElementById(domnews.dn_newsID).getElementsByTagName('ul')[0];
			n.style.top=this.dn_scrollpos+'px';	
			if(this.dn_scrollpos <= domnews.dn_endpos){this.dn_scrollpos=domnews.dn_startpos;}
			this.dn_scrollpos -= domnews.dn_step;
		}
	}
};




addEvent(window, 'load', domnews.init, false);
addEvent(window,'load', startList, false);
addEvent(window, 'load', ihv.init, false);