function jsInclude(src) 
{
	document.write('<scr' + 'ipt type="text/javascript" src="' + src + '">' + '</scr' + 'ipt>\n');
		
}

jsInclude("/javascript/global-deprecated.js");

function url(u, org, program)
{
// RewriteRule ^@([^/:]+)(:([0-9]+))?/(.*)$ /$4?_org=$1&_progId=$3 [L,NS,NC,QSA]
	var matches = /@([^\/:]+)(:([0-9]+))?/.exec(document.location.href);
	var o,p;
	if (matches != null)
	{
		o = matches[1];
		p = matches[3];
	}
	if (typeof org != "undefined" && org != null)
	{
		o = org == "none" ? null : org;
	}
	if (typeof program != "undefined")
	{
		p = program == "none" ? null : program;
	}

	if (o)
		u = "/@" + (p ? o + ":" + p + u : o + u);

	var spanHitId = $('hit-id');
	if (spanHitId)
	{
		if (u.lastIndexOf('?') == -1)
			u += "?";
		else
			u += "&";
		u += "h=" + spanHitId.innerHTML;
	}

	return u;
}

function site_redirect(u, append)
{
	location.href = append ? url(u) : url(u).replace($('hit-id').innerHTML, $('prev-hit-id').innerHTML);
}

function site_goback(url)
{
	var goback = $('go-back');
	location.href = goback ? goback.href : url;
}




/* Onload */
var DOMLoaded = false;
var DOM_onLoad_functions = new Array();
function dom_onLoad()
{
	if (DOMLoaded) return;
	DOMLoaded = true;
	
	for (var i=0; i<DOM_onLoad_functions.length; i++)
	{
		DOM_onLoad_functions[i]();
	}
}

function add_DOM_onLoad(func)
{
	DOM_onLoad_functions[DOM_onLoad_functions.length] = func;
}

var addLoadEvent = add_DOM_onLoad;

if (document.addEventListener) document.addEventListener("DOMContentLoaded", dom_onLoad, false);
Event.observe(window, 'load', dom_onLoad);

/*
add_DOM_onLoad(
	function() {
		radios = $$(".survey-multiple-choice-radio");
	    if(!radios) return;
	    for(var i = 0; i < radios.length; i++)
	    {
	        radios[i].checked = false;
			radios[i].setAttribute("checked",false);
	        radios[i].defaultChecked = false;
	    }
	}
);
*/

/* ========================== SURVEYS ========================== */

function calculate_percentages(inputs, changed_object)
{
	total = 0;

	for(var i = 0; i < inputs.length; i++)
	{
		var val = inputs[i].value;
		for(var j = 0; j < val.length; j++)
		{
			character = val.charAt(j);
			if(character < "0" || character > "9")
			{
				val = val.replace(character, "");
			}
			if(j == 0 && character == "0")
			{
				val = val.replace(character, "");
			}
		}
		inputs[i].blur();
		inputs[i].value = val;

		var subtot = parseInt(inputs[i].value);
		if(!isNaN(subtot)) total += subtot;
	}

	if(total > 100)
	{
		total -= changed_object.value;
		changed_object.value = 100 - total;
		total = 100;
	}

	changed_object.focus();
	
	//var question_id = changed_object.id.split("_");
	//$("percentage_total_" + question_id[1]).innerHTML = total;
	var question_id = changed_object.id.split("-");
	$("percentage_total_" + question_id[0]).innerHTML = total;
}

function dTable(tbl)
{
	this.domTable = tbl;
	/*
	this.maxHeight = 0;
	this.selectedRow = 0;
	this.column = new Array();
	*/
}

function drag_row(td)
{
	var tr = HTMLElement_firstParentOf(td, "TR");
	if (tr.parentNode.nodeName == "TBODY")
	{
		var self = this;
		this.domTable.style.cursor = "move !important";
		this.dragRow = tr;
		this.dragRowI = HTMLElement_myIndex(tr);
		this.setCSSDragTO = setTimeout(function() { if (self.dragRow == tr) HTMLElement_addClass(self.dragRow,"dragging"); }, 500);
		return false;
	}
}

function formElementPercentages_onKeyUp(event)
{
	var e = new xEvent(event);
	var o = e.getObject();

	var inputs = HTMLElement_firstParentOf(o, "TBODY").getElementsByTagName("INPUT");
	calculate_percentages(inputs, o);
}

add_DOM_onLoad(
	function()
	{
		$$("input.percentages").each(function(input)
		{
			Event.observe(input, 'keyup', formElementPercentages_onKeyUp);
		});
	}
);

function formElementRanked_onMouseDown(event)
{
	var e = new xEvent(event);
	var td = e.getObject();

	var tbl = HTMLElement_firstParentOf(td, "TABLE");

	drag_row(td);
}

function object_alert(o) {
	var txt;
	for (objprop in o)
	{
		txt += objprop + ' => ' + o[objprop] + '\n';
	}
	alert(txt);
}

add_DOM_onLoad(
	function()
	{
		$$("table.reorder-question").each(function(table)
		{
			Event.observe(table, 'mousedown', formElementRanked_onMouseDown);
		});
	}
);

function addOddEvenStyles()
{
	this.domTable.firstDescendant().childElements().each(function(tr, i)
	{
		tr.removeClassName(i&1 ? "odd" : "even").addClassName(i&1 ? "even" : "odd");
	});
};




// prevent session timeout, ping every 5 minutes
var g_pingCount = 0;
var g_pingInterval = window.setInterval(
	function() {
		new Ajax.Request("/rpc/ping.rpc", {method: "get"});		
		if (++g_pingCount > 100)
			window.clearInterval(g_pingInterval);
	}
, 300000);


// return the width / height of a scrollbar
function getScrollbarSize()
{
	var a = new Element("div", {style: "position: absolute; top: 0; left: -500px; overflow: scroll; height: 200px; width: 200px;"});
	var b = new Element("div", {style: "width: 100%; height: 100%;"});
	a.appendChild(b);	
	document.body.appendChild(a);	
	var w = 200 - b.offsetWidth, h = 200 - b.offsetHeight;
	document.body.removeChild(a);
	
	return {width: w, height: h};
}

Object.extend(Event,
{
	wheel: function (event)
	{
		var delta = 0;
		
		if (!event) event = window.event;		
		if (event.wheelDelta)
		{
			delta = event.wheelDelta/120;
			// if (window.opera) delta = -delta;		
		}
		else if (event.detail)
		{
			delta = -event.detail/3;
		}
		
		return Math.round(delta); //Safari Round
	}
});


Element.addMethods({
	cloneWidth: function (dest, src)
	{
		var dest = $(dest), src = $(src);
		var chrome = parseInt(dest.getStyle("border-left-width") || 0)
		           + parseInt(dest.getStyle("border-right-width") || 0)
		           + parseInt(dest.getStyle("padding-left") || 0)
		           + parseInt(dest.getStyle("padding-right") || 0);
		
		dest.style.width = (src.getWidth() - chrome) + "px";
	},
	
	cloneHeight: function (dest, src)
	{
		var dest = $(dest), src = $(src);
		var chrome = parseInt(dest.getStyle("border-top-width") || 0)
		           + parseInt(dest.getStyle("border-bottom-width") || 0)
		           + parseInt(dest.getStyle("padding-top") || 0)
		           + parseInt(dest.getStyle("padding-bottom") || 0);
		
		dest.style.height = (src.getHeight() - chrome) + "px";
	},
	
	appendChildren: function(dest)
	{
		$A(arguments).slice(1).each(function(e) {dest.appendChild(e);});
		return dest;
	},
	
	innerWrap: function(dest, tagName)
	{
		var e = new Element(tagName);
		while (dest.childNodes.length) e.appendChild(dest.childNodes[0]);
		dest.appendChild(e);
	},
	
	getInnerText: function(dest)
	{
		return dest.innerText != undefined ? dest.innerText : dest.innerHTML.replace(/<br>/gi,"\n").replace(/<[^>]+>/g,"");
	},

	setInnerText: function(dest, txt)
	{
		dest.innerHTML = "";
		dest.appendChild(document.createTextNode(txt));
	},
	
	getIndex: function(me)
	{
		var p = me.parentNode;
		var c = p.childElements();
		var i = 0;
		while (c[i] != me) ++i;
		return i;
	}
});

/* paginator */

function selectChange() {
	this.parentNode.submit();
}

document.observe("dom:loaded", function () {	
	
	if ($$('.select_totals').size() > 0) {
		$$('.select_totals').each(function(s) { s.observe('change', selectChange);}); 
	}
});

