/* JavaScript Document

Any part of this file that is not properly credited to a 3rd party is the property of Snap Data Systems (www.snapds.com)
and may not be used in whole or in part by anyone without written consent from Snap Data Systems.

Copyright 2009 Snap Data Systems. All rights reserved.

*/


var G = new Array(); // Global array of variables.

// vsmenu variables
G['vsMenuOffsetTop'] = 1; 			// The number of pixels to lower (or negative to raise) the menu below the target
G['vsMenuOffsetLeft'] = 1; 			// The number of pixels to move to the right (or negative to move to the left) the menu in respect to the left side of the target
G['vsMenuOffsetSubTop'] = 3;		// The number of pixels to lower (or negative to raise) the menu below the target (sub menus only)
G['vsMenuOffsetSubLeft'] = -2;		// The number of pixels to move to the right (or negative to move to the left) the menu in respect to the left side of the target (sub menus only)
G['vsMenuRightOffsetTop'] = -4;		// The number of pixels to lower (or negative to raise) the right click menu below the mouse.
G['vsMenuRightOffsetLeft'] = -11;	// The number of pixels to move to the right (or negative to move to the left) the right click menu in respect to the left side of the mouse.
G['vsMenuTimeout'] = 500;			// The number of miliseconds to wait before closing a menu once the mouse has left it.
G['vsMenuStartMenu'] = '';
G['vsMenuTimeoutHolder'] = '';

// Help variables
G['posX'] = false;
G['posY'] = false;
G['dragOffsetY'] = false;
G['dragOffsetX'] = false;
G['dragOBJ'] = false;
G['tst'] = false;
G['IE'] = document.all?true:false;
G['ns6'] = document.getElementById&&!document.all;
G['tooltipTimeout'] = false;
G['tooltipOver'] = false;
G['tooltipHideTimeout'] = false;
G['ajaxHelpUpdateTimeout'] = false;
G['mouseLastMovedAt'] = 0;


// Mouse Position
document.onmousemove = on_mouse_move;


function overhome(elem) { 
	elem.className = 'navstart_over';
}
function outhome(elem) { 
	elem.className = 'navstart';
}
function overnav(elem) { 
	elem.className = 'nav_over';
	if (elem.id == 'lastnav') { 
		document.getElementById('navend').className = 'navend_over';
	}
}
function outnav(elem) {
	elem.className = 'nav';
	if (elem.id == 'lastnav') { 
		document.getElementById('navend').className = 'navend';
	}
}
function oversubnav(elem) { 
	elem.className = 'subnav_over';
}
function outsubnav(elem) {
	elem.className = 'subnav';
}
function goto(url){
	document.location.href = url;
}
function switchcontent(elem) { 
	var content = elem.id+'_content';
	if (document.getElementById(content).style.display == '') { goto('/'+elem.id+'.php'); return; }
	shrinkcontent(content);
}
function shrinkcontent(elem) {
	var elems = new Array('users', 'developers', 'licensing');
	var ss = true;
	for (var i=0;i<elems.length;i++) { 
		shel = document.getElementById(elems[i]+'_content');
		shel.style.overflow = 'hidden';
		if (shel.style.display == '') { 
			var ht = parseInt(shel.style.height);
			if (!ht) { ht = parseInt(shel.offsetHeight); }
			var nh = parseInt(ht-20);
			if (nh <= 0) { shel.style.display = 'none'; }
			else { shel.style.height = nh+'px'; ss = false; }	
		}
	}
	
	if (ss) { showcontent(document.getElementById(elem)); } else { setTimeout("shrinkcontent('"+elem+"');", 20); }
}
function showcontent(elem) { 
	elem.style.position = 'absolute';
	elem.style.height = '';
	elem.style.visibility = 'hidden';
	elem.style.display = '';
	elem.style.overflow = '';
	var h = parseInt(elem.offsetHeight);
	elem.style.display = 'none';
	elem.style.visibility = '';
	elem.style.position = '';
	elem.style.height = 20+'px';
	elem.style.overflow = 'hidden';
	elem.style.display = '';
	growcontent(elem.id, h);
}
function growcontent(e, h) {
	var elem = document.getElementById(e);
	var ch = parseInt(elem.offsetHeight)+20;
	if (ch >= h) { 
		elem.style.overflow = '';
		elem.style.height = '';
	} else {
		elem.style.height = ch + 'px';
		setTimeout("growcontent('"+e+"', "+h+");", 20);
	}
}
function showfeature(elem) {
	if (elem.firstChild.className == 'preload') { 
		elem.firstChild.className = ''; 
		elem.lastChild.className = 'preload';
	} else { 
		elem.firstChild.className = 'preload';
		elem.lastChild.className = '';
	}
}
	
/*----------------------- vsmenu --------------------------*/
function vsMenuShow(menuid, target, where, activate) {
	var pos;
	hide_tooltip(1);
	if (target) { 
		var submenuof = target.getAttribute('subMenuOf'); 
		vsMenuHideSubs(submenuof);
		vsMenuSetNotActive(submenuof);
	}
	
	if ((activate)&&(target)) { vsMenuActivate(target); }
	
	if (menuid) { 
		var menu = document.getElementById(menuid);
		vsMenuSetNotActive(menuid);
		if (target) { pos = objFindPos(target); }
		else { 
			pos = [G['posX'], G['posY']]; 
			/* if (G['IE']) { 
				var winScroll = new Array(); winScroll = RP_getScroll();
				pos[0] += winScroll[0]; pos[1] += winScroll[1];
			} */
		}
		var shstyle = 'visible';
		if (where == 'bottom') { 
			if (menu.style.visibility == 'visible') { shstyle = 'hidden'; }
			vsMenuHideAll();
			if (target) { menu.style.left = (pos[0] + G['vsMenuOffsetLeft']) + 'px'; }
			else { menu.style.left = (pos[0] + G['vsMenuRightOffsetLeft']) + 'px'; }
			var top = '';
			if (target) { top = pos[1] + target.offsetHeight + G['vsMenuOffsetTop']; }
			else { var top = pos[1] + G['vsMenuRightOffsetTop']; }
			menu.style.top = top + 'px';
			if ((target)&&(shstyle=='visible')&&(activate)) { target.className = 'vsMenuMainMenuActive'; }
		} else if (where == 'right') { 
			var left = pos[0] + target.offsetWidth + G['vsMenuOffsetSubLeft'];
			menu.style.left = left + 'px';
			menu.style.top = (pos[1] + G['vsMenuOffsetSubTop']) + 'px';
		}
		
		menu.style.visibility = shstyle;
	}
}
function vsMenuActivate(target) {
	var isH = target.getAttribute('isHeader');
	if (isH == 1) { target.className = 'vsMenuItemHeaderActive'; } else { target.className = 'vsMenuItemActive'; }
}
function vsMenuShowRightClickMenu(menuid) { 
	G['vsMenuStartMenu'] = 1;
	vsMenuShow(menuid, '', 'bottom');
}
function vsMenuHide(menuid) {
	var x = document.getElementsByTagName('div');
	var reg = new RegExp('^'+menuid);
	for (var i=0;i<x.length;i++) {
		if (x[i].id.match(reg)) { 
			x[i].style.visibility = 'hidden';
			var mtarg = x[i].getAttribute('mainTarget');
			if (mtarg) { document.getElementById(mtarg).className = 'vsMenuMainMenu'; }
		}
	}
}
function vsMenuHideSubs(menuid) {
	var x = document.getElementsByTagName('div');
	var reg = new RegExp('^'+menuid+'.');
	for (var i=0;i<x.length;i++) {
		if (x[i].id.match(reg)) { 
			x[i].style.visibility = 'hidden';
			var mtarg = x[i].getAttribute('mainTarget');
			if (mtarg) { document.getElementById(mtarg).className = 'vsMenuMainMenu'; }
		}
	}
}
function vsMenuHideAll() {
	var x = document.getElementsByTagName('div');
	for (var i=0;i<x.length;i++) {
		var type = x[i].getAttribute('vsMenuType');
		if (type == 'menu') { 
			x[i].style.visibility = 'hidden';
			var mtarg = x[i].getAttribute('mainTarget');
			try { if (mtarg) { document.getElementById(mtarg).className = 'vsMenuMainMenu'; } }
			catch (e) { }
		}
	}
}		
function vsMenuSetNotActive(menuid) {
	var x = document.getElementsByTagName('div');
	var reg = new RegExp('^'+menuid);
	for (var i=0;i<x.length;i++) {
		if (x[i].id.match(reg)) { 
			var y = x[i].getElementsByTagName('tr');
			for (var j=0;j<y.length;j++) {
				var isA = y[j].getAttribute('isActive');
				var isH = y[j].getAttribute('isHeader');
				var cN;
				if      ((isA == 1)&&(isH == 1)) { cN = 'vsMenuItemHeaderActive'; }
				else if ((isA == 1)&&(isH == 0)) { cN = 'vsMenuItemActive'; }
				else if ((isA == 0)&&(isH == 1)) { cN = 'vsMenuItemHeader'; }
				else if ((isA == 0)&&(isH == 0)) { cN = 'vsMenuItem'; }
				else { cN = 'vsMenuItem'; }
				y[j].className =  cN;
			}
		}
	}
}
function vsMenuStartTimeout(menuid) {
	G['vsMenuTimeoutHolder'] = setTimeout("vsMenuHide('"+menuid+"')", G['vsMenuTimeout']);
}
function vsMenuCancelTimeout() {
	if (G['vsMenuTimeoutHolder']) { clearTimeout(G['vsMenuTimeoutHolder']); }
	G['vsMenuTimeoutHolder'] = '';
}
function vsUpdateMenu(menu, code) { 
	menu = document.getElementById(menu);
	menu.innerHTML = code;
}

/*----------------------- tooltip --------------------------*/
function hide_tooltip(force) { 
	if (G['tooltipTimeout']) { clearTimeout(G['tooltipTimeout']); }
	if (G['tooltipHideTimeout']) { clearTimeout(G['tooltipHideTimeout']); }
	G['tooltipTimeout'] = false;
	G['tooltipHideTimeout'] = false;
	var tt = document.getElementById('tooltip2');
	if (force) { G['tooltipOver'] = false; } else { G['tooltipOver'] = mouse_is_over_object(tt, 5); }
	if (!G['tooltipOver']) { 
		tt.innerHTML = '';
		tt.style.display = 'none';
	}
}
function show_tooltip(force) {
	if (!force) { 
		if (!G['tooltipTimeout']) { return; }
		var tch = new Date().valueOf();
		tch -= 500;
		if (tch < G['mouseLastMovedAt']) { var diff = tch - G['mouseLastMovedAt']; G['tooltipTimeout'] = setTimeout("show_tooltip();", (diff+10)); return; }
	}
	var tt = document.getElementById('tooltip2');
	tt.style.visibility = 'hidden';
	tt.style.display = '';
	updateToolTipPos();
	tt.style.visibility = '';
	G['tooltipTimeout'] = false;
}
function on_mouse_move(e) {
  G['posX'] = getMouseXPos(e);
  G['posY'] = getMouseYPos(e);
}
// Get the horizontal position of the mouse
function getMouseXPos(e) {
  if (G['IE']) { 
  	return (parseInt(event.clientX+10) + parseInt(document.documentElement.scrollLeft))
  } else if (document.layers||G['ns6']) {
    return parseInt(e.pageX+10)
  } else {
    return (parseInt(event.clientX+10) + parseInt(document.body.scrollLeft))
  }
}
// Get the vartical position of the mouse
function getMouseYPos(e) {
  if (G['IE']) { 
  	return (parseInt(event.clientY) + parseInt(document.documentElement.scrollTop))
  } else if (document.layers||G['ns6']) {
    return parseInt(e.pageY)
  } else {
    return (parseInt(event.clientY) + parseInt(document.body.scrollTop))
  }
}
function objFindPos(obj) {
	if (obj == null) return [0,0];
	var curleft = obj.offsetLeft;
	var curtop = obj.offsetTop;
	if (obj.offsetParent) {
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}

function showNetBubbleItem(title, content) {
	var active_c = document.getElementsByClassName('netcontent_active');
	var active_t = document.getElementsByClassName('nettitle_active');
	
	for (var i=0;i<active_c.length;i++) { 
		active_c[i].className = 'netcontent';
		active_t[i].className = 'nettitle';
	}
	
	title.className = 'nettitle_active';
	document.getElementById('ncontent'+content).className = 'netcontent_active';
	try { document.getElementById('id').value = content; } catch(err) { }
}
function features(div, clb) { 
	if (div.className == 'featuresg') {
		div.className = 'featuresexp';
	} else if (div.className == 'featuresw') {
		div.className = 'featuresexp';
	} else {
		div.className = clb;
	}
}
function settemplate(color, id, template) { 
	img = document.getElementById('img_'+id);
	if (!img) { return false; }
	code = document.getElementById('code_'+id);
	
	img.src = '/templates/'+template+'/'+color+'/icon_selected.gif';
	code.innerHTML = id+'-'+color;
}
function showtemplate(img) {
	src = img.src;
	expr = /(.*)_selected.gif/;
	matches = src.match(expr);
	var imgdiv = document.getElementById('template_img');
	imgdiv.innerHTML = '<img src="'+matches[1]+'_big.gif" />';
	document.getElementById('tlist').style.display = 'none';
	document.getElementById('template_preview').style.display = '';
}
function show_template_list() { 
	document.getElementById('tlist').style.display = '';
	document.getElementById('template_preview').style.display = 'none';
}


function goto(sel) { 
	var url = sel.options[sel.selectedIndex].value;
	document.location.href = url;
}
function geturl(url) { 
	document.location.href = url;
}
function fb_share() {
	var u=location.href;
	var t=document.title;
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
	return false;
}
function li_share() {
	var u=location.href;
	var t=document.title;
	window.open('http://www.linkedin.com/shareArticle?mini=true&url='+encodeURIComponent(u)+'&title='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=520,height=570');
	return false;
}
function tw_share() { 
	var u=location.href;
	var t=document.title;
	window.open('http://twitter.com/home?status=Currentlyreading '+encodeURIComponent(u),'sharer','toolbar=0,status=0,width=520,height=570');
	return false;
}

function getmap(address, id) { 
	mapdiv = document.getElementById('map_'+id);
	mapcontainer = document.getElementById('mapdiv_'+id);
	if (!mapdiv) { alert('Could not get the map'); return false; }
	mapdiv.style.display='';
	mapcontainer.style.display='';
	
	if (!GBrowserIsCompatible()) { alert("Your browser is not compatible with Google Maps."); return false; }
	var map = new GMap2(mapdiv);
	geocoder = new GClientGeocoder();
	if (geocoder) { geocoder.getLatLng(address, 
		function(point) { 
			if (!point) { alert(address + ' not found'); return; }
			map.setCenter(point, 13);
			var marker = new GMarker(point);
			map.addOverlay(marker);
			marker.openInfoWindowHtml(address);
		} );
	} else {
		alert('Could not generate map.');
	}

	/* 
	if (GBrowserIsCompatible()) {
		var map = new GMap2(mapdiv);
        if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              map.setCenter(point, 13);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);
            }
          }
        );
      }
   }
   */
}

 var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-28437632-1']);
_gaq.push(['_trackPageview']);

(function() {
	var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
	ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
	var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

