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" }, { 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" }, { 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();
function fixIEBGFlicker() { try { document.execCommand("BackgroundImageCache", false, true); } catch (err) { } } function postBackHiddenField(hiddenFieldID) { var hiddenField = $get(hiddenFieldID); if (hiddenField) { hiddenField.value = (new Date()).getTime(); __doPostBack(hiddenFieldID, ''); } } function resize_elements(items, sub) { var recs = new Array(); for (i = 0; i < items.length; i++) { recs[i] = document.getElementById(items[i]); } var max = 0; for (i = 0; i < recs.length; i++) { if (existsDefined(recs[i])) { recs[i].style.height = ""; if (recs[i].offsetHeight > max) { max = recs[i].offsetHeight; } } } max -= sub; for (i = 0; i < recs.length; i++) { if (existsDefined(recs[i])) { recs[i].style.height = max + "px"; } } } function makePreWindow(url, window_width, window_height, scrollbars, posX, posY) { var screenPosX, screenPosY; var newWindow = null; if (!scrollbars) { scrollbars = 0; } if (window_width > screen.availWidth || window_height > screen.availHeight) { scrollbars = 1; window_height = window_height + 14; window_width = window_width + 14; } if (posX == null) posX = (screen.availWidth - window_width) / 2; if (posY == null) posY = (screen.availHeight - window_height) / 2; screenPosX = posX; screenPosY = posY; newWindow = window.open(url, 'Preview', 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=' + scrollbars + ',resizable=0,copyhistory=0,width=' + window_width + ',height=' + window_height + ',screenX=' + screenPosX + ',screenY=' + screenPosY); newWindow.focus(); } function DeselectAssociatedDropDown(txt, dropdown) { var ddl = document.getElementById(findControl(dropdown, 'select')); if (txt.value == "") ddl.selectedIndex = 0; return false; } function getSelectedDropDownValue(ddl) { if (existsDefined(ddl.length) && !existsDefined(ddl.options)) ddl = document.getElementById(ddl); return ddl.options[ddl.selectedIndex].value; } function SelectDropDownValue(value, ddl) { if (typeof ddl == "string") { ddl = document.getElementById(ddl); } for (var i = 0; i < ddl.options.length; i++) { if (ddl.options[i].value == value) ddl.options[i].selected = true; } } function clearOptions(ddl) { var i; for (i = ddl.options.length - 1; i >= 0; i--) { ddl.remove(i); } } function TableRowMouseOver() { this.className.indexOf(" HighlightedRow") == -1 ? this.className += " HighlightedRow" : this.className = this.className; } function TableRowMouseOut() { this.className = this.className.replace("HighlightedRow", ""); } function getScrollXY() { var scrOfX = 0, scrOfY = 0; if (typeof (window.pageYOffset) == 'number') { scrOfY = window.pageYOffset; scrOfX = window.pageXOffset; } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) { scrOfY = document.body.scrollTop; scrOfX = document.body.scrollLeft; } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) { scrOfY = document.documentElement.scrollTop; scrOfX = document.documentElement.scrollLeft; } return [scrOfX, scrOfY]; } function GenerateRandom(ceiling) { var randomnumber = Math.floor(Math.random() * ceiling); return randomnumber; } function isDigit(num) { if (num.length > 1) { return false; } var string = "1234567890"; if (string.indexOf(num) != -1) { return true; } return false; } function isInteger(val) { if (isNaN(val)) return false; for (var i = 0; i < val.length; i++) { if (!isDigit(val.charAt(i))) { return false; } } return true; } function isBlank(val) { if (val == null) { return true; } for (var i = 0; i < val.length; i++) { if ((val.charAt(i) != ' ') && (val.charAt(i) != "\t") && (val.charAt(i) != "\n") && (val.charAt(i) != "\r")) { return false; } } return true; } var fixoffsetleft = 0; var fixoffsettop = 0; function getposOffset(what, offsettype) { var totaloffset = (offsettype == "left") ? (what.offsetLeft - fixoffsetleft) : (what.offsetTop + fixoffsettop); var parentEl = what.offsetParent; while (parentEl != null) { totaloffset = (offsettype == "left") ? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop; parentEl = parentEl.offsetParent; } return totaloffset; } function get_query_string(qstr, qs, esc) { var i, pos, argname, argvalue, queryString, pairs; queryString = !existsDefined(qs) ? location.href.substring(location.href.indexOf("?") + 1) : qs; if (!existsDefined(esc)) esc = true; pairs = queryString.split("&"); for (i = 0; i < pairs.length; i++) { pos = pairs[i].indexOf('='); if (pos == -1) { continue; } argname = pairs[i].substring(0, pos); argvalue = pairs[i].substring(pos + 1); if (argname == qstr) { if (!esc) return argvalue; else return unescape(argvalue.replace(/\+/g, " ")); } } return ""; } function focusWindow(linkplace, windowname) { var win = window.open(linkplace, windowname); win.focus(); } function existsDefined(i, de) { if (de == null || de == "") de = false; if (de) alert(typeof i); if (typeof i == "undefined" || i == null) return false; else return true; } function printArray(arr) { var strAl = ""; for (var i = 0; i < arr.length; i++) { strAl += "[" + i + "]=" + arr[i] + "\n"; } return strAl; } function toggleVisibility(sender, el) { var sendere = null; sendere = sender; ele = el; if (ele.className.indexOf("Hidden") != -1) showElement(sendere, ele); else hideElement(sendere, ele); } function showElement(sender, el) { if (existsDefined(el)) { el.className = el.className.replace("Hidden", ""); if (existsDefined(sender)) sender.className += " Expanded"; } } function hideElement(sender, el) { if (existsDefined(el)) { if (el.className.indexOf("Hidden") == -1) { el.className += " Hidden"; if (existsDefined(sender)) sender.className = sender.className.replace("Expanded", ""); } } } function showInvisibleElement(sender, el) { if (existsDefined(el)) { el.className = el.className.replace("Invisible", ""); if (existsDefined(sender)) sender.className += " Expanded"; } } function hideVisibleElement(sender, el) { if (existsDefined(el)) { if (el.className.indexOf("Invisible") == -1) { el.className += " Invisible"; if (existsDefined(sender)) sender.className = sender.className.replace("Expanded", ""); } } } function getPageFileName() { return location.href.substring(location.href.lastIndexOf('/') + 1); } function elementHasScrollbar(elem_id) { elem = existsDefined(elem_id.length) ? document.getElementById(elem_id) : elem_id; if (elem.clientHeight < elem.scrollHeight) return true; else return false; } function catchEnter(e, focusel, eltype) { var el = null; el = focusel; if (existsDefined(focusel.length)) el = document.getElementById(focusel); if (!existsDefined(el) && existsDefined(eltype)) el = document.getElementById(findControl(focusel, eltype)); var id = !e ? window.event : e; if (id['keyCode'] == 13) { el.focus() } } function catchEnter(e, focusel, eltype) { var el = null; el = focusel; if (existsDefined(focusel.length)) el = document.getElementById(focusel); if (!existsDefined(el) && existsDefined(eltype)) el = document.getElementById(findControl(focusel, eltype)); var id = !e ? window.event : e; if (id['keyCode'] == 13) { el.focus() } } function RemoveCssClass(el, classname) { if (existsDefined(el)) if (el.className.indexOf(classname) != -1) el.className = el.className.replace(classname, ""); } function AddCssClass(el, classname) { if (existsDefined(el)) if (el.className.indexOf(classname) == -1) el.className = el.className + " " + classname; } function redirect(url) { window.location = url; }

/* New from Rob Nitti, who credits 
* http://bytes.com/groups/javascript/145532-replace-french-characters-form-inp
* The code finds accented vowels and replaces them with their unaccented version. */
function stripVowelAccent(str) {
	var rExps = [/[\xC0-\xC2]/g, /[\xE0-\xE2]/g,
		/[\xC8-\xCA]/g, /[\xE8-\xEB]/g,
		/[\xCC-\xCE]/g, /[\xEC-\xEE]/g,
		/[\xD2-\xD4]/g, /[\xF2-\xF4]/g,
		/[\xD9-\xDB]/g, /[\xF9-\xFB]/g];

	var repChar = ['A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u'];

	for (var i = 0; i < rExps.length; ++i)
		str = str.replace(rExps[i], repChar[i]);

	return str;
}
function highlightWord(node, word) {
	// Iterate into this nodes childNodes
	if (node.hasChildNodes) {
		var hi_cn;
		for (hi_cn = 0; hi_cn < node.childNodes.length; hi_cn++) {
			highlightWord(node.childNodes[hi_cn], word);
		}
	}

	// And do this node itself
	if (node.nodeType == 3) { // text node
		tempNodeVal = stripVowelAccent(node.nodeValue.toLowerCase());
		tempWordVal = stripVowelAccent(word.toLowerCase());
		if (tempNodeVal.indexOf(tempWordVal) != -1) {
			pn = node.parentNode;
			if (pn.className != "Highlighted") {
				// word has not already been highlighted!
				nv = node.nodeValue;
				ni = tempNodeVal.indexOf(tempWordVal);
				// Create a load of replacement nodes
				before = document.createTextNode(nv.substr(0, ni));
				docWordVal = nv.substr(ni, word.length);
				after = document.createTextNode(nv.substr(ni + word.length));
				hiwordtext = document.createTextNode(docWordVal);
				hiword = document.createElement("span");
				hiword.className = "Highlighted";
				hiword.appendChild(hiwordtext);
				pn.insertBefore(before, node);
				pn.insertBefore(hiword, node);
				pn.insertBefore(after, node);
				pn.removeChild(node);
			}
		}
	}
}

function unhighlight(node) {
	// Iterate into this nodes childNodes
	if (node.hasChildNodes) {
		var hi_cn;
		for (hi_cn = 0; hi_cn < node.childNodes.length; hi_cn++) {
			unhighlight(node.childNodes[hi_cn]);
		}
	}

	// And do this node itself
	if (node.nodeType == 3) { // text node
		pn = node.parentNode;
		if (pn.className == "Highlighted") {
			prevSib = pn.previousSibling;
			nextSib = pn.nextSibling;
			nextSib.nodeValue = prevSib.nodeValue + node.nodeValue + nextSib.nodeValue;
			prevSib.nodeValue = '';
			node.nodeValue = '';
		}
	}
}
function localSearchHighlight(searchStr, ElToSearch) {
	if (!document.createElement) return;
	if (searchStr == '') return;
	// Trim leading and trailing spaces after unescaping
	searchstr = unescape(searchStr).replace(/^\s+|\s+$/g, "");
	if (searchStr == '') return;
	phrases = searchStr.replace(/\+/g, ' ').split(/\"/);

	for (p = 0; p < phrases.length; p++) {
		phrases[p] = unescape(phrases[p]).replace(/^\s+|\s+$/g, "");
		if (phrases[p] == '') continue;
		if (p % 2 == 0) words = phrases[p].replace(/([+,()]|%(29|28)|\W+(AND|OR)\W+)/g, ' ').split(/\s+/);
		else { words = Array(1); words[0] = phrases[p]; }
		for (w = 0; w < words.length; w++) {
			if (words[w] == '') continue;
			var container = $('.BodyContent')[0];
			highlightWord(container, words[w]);
		}
	}
}
function headerToggleClass(el) { if (el.className.indexOf('Collapsed') != -1) { RemoveCssClass(el, 'Collapsed'); } else { AddCssClass(el, "Collapsed"); } }
function TogglePanelExpansion(el, closeOthers) 
{
	var pane = document.getElementById(el);

	if (existsDefined(pane)) 
	{
		if (pane.className.indexOf('Hidden') == -1) 
		{
			AddCssClass(pane, "Hidden");
			
		}
		else 
		{
			RemoveCssClass(pane, "Hidden");
			if (closeOthers) 
			{
				
				var divs = $('div[rel=grpExpPanel]');

				for (var i = 0; i < divs.length; i++) 
				{

					var titleForDiv = document.getElementById(divs[i].getAttribute("titleContainer"));
				
					if (divs[i] != pane) {
						if (existsDefined(titleForDiv))
							AddCssClass(titleForDiv, "Collapsed");
						AddCssClass(divs[i], "Hidden");
					}
				}
			}
		}
	}


}
function WireDonateButton()
{
	var jBtn = $('.HeaderDonateButton');
	var btn = jBtn[0];

	if (existsDefined(btn))
	{
		btn.href = "#";

		jBtn.click(function()
		{
			jBtn.hide("slow");
			$("#donatePanel").show("slow");
			return false;
		});
		$('#closeit').click(function()
		{
			jBtn.show("slow");
			$("#donatePanel").hide("slow");
			return false;
		});
	}
}
function resizeBodyContent() {
    var bod = $('#DivBodyContent');
    var right = $('#DivRightContent');
    var feature = $('#DivFeatureArea');

    var diff = right.height() - feature.height();
    if (right.height() >= bod.height() + feature.height()) {
        bod[0].style.minHeight = diff + "px";
    }
   }

   var xor_key = 1;
   function Obfuscate_String(val)
   {
   	var to_enc = val;
   	
   	var the_res = ""; //the result will be here
   	for (i = 0; i < to_enc.length; ++i)
   	{
   		the_res += String.fromCharCode(xor_key ^ to_enc.charCodeAt(i));
   	}
   	
   	return escape(the_res);
   }


   function Deobfuscate_String(val)
   {
   	var to_dec = unescape(val);

   	var the_res = ""; //the result will be here
   	
   	for (i = 0; i < to_dec.length; i++)
   	{
   		the_res += String.fromCharCode(xor_key ^ to_dec.charCodeAt(i));
   	}
   	
   	return the_res;
   }
   function WireUpGlobals() {
       fixLinks();
       resizeLeftRight();
   }
   function resizeLeftRight() {
       var lh = 0;
       var rh = 0;
       var l = $('.HomepageContent>.LeftColumn');
       var r = $('.HomepageContent>.RightColumn');

        lh = parseInt(l.height()) + parseInt(l.css("padding-top")) + parseInt(l.css("padding-bottom"));
        rh = parseInt(r.height()) + parseInt(r.css("padding-top")) + parseInt(r.css("padding-bottom"));

        if (lh >= rh) {
            r.css("height", lh);
        }
        else {
            l.css("height", rh);
        }
   }
   function fixLinks() {
   	
   		$.each($("*[ob$='true']"), function(i, val) {
   			var jv = $(val);
   			//alert(jv.attr("href"));
   			val.innerHTML = Deobfuscate_String(val.innerHTML);
   			jv.attr("href", Deobfuscate_String(jv.attr("href")));

   			jv.attr("ob", "false");
   		});

   	}
   	function RadEditorEmailLoad(editor) {
   		var links = editor.get_document().getElementsByTagName("A");

   		for (var i = 0; i < links.length; i++) {
   			var link = links[i];

   			//check if links is an email   
   			if (link && link.href) {
   				var ob = link.getAttribute("ob");

   				if (Boolean(ob)) {
   					var linkHref = $(link).attr("href");
   					var newHref = doDecode(linkHref);

   					//alert(linkHref);
   					//alert(newHref);

   					var linkText = link.innerHTML;
   					var newLinkText = link.innerHTML;


   					newLinkText = doDecode(linkText);

   					link.innerHTML = newLinkText;
   					link.setAttribute("href", newHref);
   					link.setAttribute("ob", 'false');
   				}
   			}
   		}
   	}
   	function RadEditorEmailSubmit(editor) {
   		var links = editor.get_document().getElementsByTagName("A");


   		editor.set_mode(1);

   		var isHtml = true;
   		if ($('.reMode_design').hasClass("reMode_selected")) {
   			isHtml = false;
   		}
   		//alert(isHtml);
   		for (var i = 0; i < links.length; i++) {
   			var link = links[i];
   			var ob = link.getAttribute("ob");

   			//check if links is an email
   			if (link && link.href && link.href.indexOf("@") > -1) {
   				var linkHref = link.href;
   				var newHref = doEncode(linkHref);

   				//alert(linkHref);
   				//alert(newHref);

   				var linkText = link.innerHTML;
   				var newLinkText = link.innerHTML;


   				newLinkText = doEncode(linkText);

   				link.innerHTML = newLinkText;
   				link.setAttribute("href", newHref);
   				link.setAttribute("ob", 'true');
   			}

   		}
   	}
   	function doEncode(text) {
		//TODO: PUT YOUR EMAIL ENCODING CODE HERE
		text = Obfuscate_String(text);
		return text;
	}

	function doDecode(text) {
		//TODO: PUT YOUR EMAIL ENCODING CODE HERE
		text = Deobfuscate_String(text);
		return text;
	}
   //-->

