var email_req;
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"
		}
	]

};


function initSite() {
	BrowserDetect.init();
	if (BrowserDetect.browser == "Explorer" && BrowserDetect.version < 7) {
		document.getElementById('unsupported_browser_subheading').innerHTML = "You're using " + BrowserDetect.browser + " " + BrowserDetect.version + " on " + BrowserDetect.OS + "."
		toggleThePopUp('open', 'unsupported_browser');
	}
}

function password_switch(id){
    if (id.match(/text/)){
		var pwId = id.replace(/text/, ""); 
        document.getElementById(id).style.display="none";
        document.getElementById(pwId).style.display="inline";
        document.getElementById(pwId).focus();
    } else {
        document.getElementById(id).style.display="none";
        document.getElementById(id+'text').style.display="inline";
    }
}

// \S(uppercase S), we'll use to match non whitespace.
var notWhitespace = /\S/;
//takes a node argument
function cleanWhitespace(node) {
	//loop through the children of that node
	for (var x = 0; x < node.childNodes.length; x++) {
		//set childNode to each child.
		var childNode = node.childNodes[x];
		// check if that node is of type 3 and if it is not whitespace.
		if ((childNode.nodeType == 3)&&(!notWhitespace.test(childNode.nodeValue))) {
			//if that returns true remove that child.
			node.removeChild(node.childNodes[x]);
			x--;
		}
		//check if the next node is of type 1
		if (childNode.nodeType == 1) {
			//if yes, do recursion, on da childNode
			cleanWhitespace(childNode);
		}
	}
}

function getObject(obj) {
	var o;
	if(document.getElementById) o = document.getElementById(obj);
	else if(document.all) o = document.all.obj;	
	return o;	
}

function toggleMainNav(state){
	var main_nav = document.getElementById("main_nav");
	if(undefined===window.curCalendarList){
		if(state == "open") {
			if (BrowserDetect.browser == "Firefox" && BrowserDetect.version < 3 && (typeof(totalDirectoryGroups) != 'undefined')) {
				var directory_listings = document.getElementById("directory_listings");
				var directory_main_content = document.getElementById("directory_main_content");
				directory_listings.style.overflowY = 'hidden';
				directory_main_content.style.overflowY = 'hidden';
			}
			main_nav.style.visibility = 'visible';
		} else {
			if (BrowserDetect.browser == "Firefox" && BrowserDetect.version < 3 && (typeof(totalDirectoryGroups) != 'undefined')) {
				var directory_listings = document.getElementById("directory_listings");
				var directory_main_content = document.getElementById("directory_main_content");
				directory_listings.style.overflowY = 'auto';
				directory_main_content.style.overflowY = 'auto';
			}
			main_nav.style.visibility = 'hidden';
		}	
	} else {
		var calendar_list = document.getElementById("calendar_list");
		if(state == "open") {
			if (BrowserDetect.browser == "Firefox" && BrowserDetect.version < 3) {
				if(curView=='week'){
					var weekView_container = document.getElementById("weekView_container");
					weekView_container.style.overflowY = 'hidden';
				} else if(curView=='day'){
					var dayView_container = document.getElementById("dayView_container");
					dayView_container.style.overflowY = 'hidden';
				}
				calendar_list.style.overflowY = 'hidden';
			}
			main_nav.style.visibility = 'visible';
		} else {
			main_nav.style.visibility = 'hidden';
			if (BrowserDetect.browser == "Firefox" && BrowserDetect.version < 3) {
				calendar_list.style.overflowY = 'auto';
				if(curView=='week'){
					var weekView_container = document.getElementById("weekView_container");
					weekView_container.style.overflowY = 'auto';
				} else if(curView=='day'){
					var dayView_container = document.getElementById("dayView_container");
					dayView_container.style.overflowY = 'auto';
				}
			}
		}	
	}
}

function toggleThePopUp(state,id,x) {
	var popUp = document.getElementById("pop_up");
	if(undefined===window.curCalendarList){
		if(state == "open") {
			toggleMainNav('close');
			if (BrowserDetect.browser == "Firefox" && BrowserDetect.version < 3 && (typeof(totalDirectoryGroups) != 'undefined')) {
				document.getElementById("directory_listings").style.overflowY = 'hidden';
			}
			popUp.style.visibility = 'visible';
			var details = document.getElementById(id);
			var popUpContent = document.getElementById('pop_up_content');
			popUpContent.innerHTML = details.innerHTML;
			if(x){
				popUp.childNodes[0].style.visibility="hidden";
			}
		} else {
			popUp.style.visibility = 'hidden';
			if (BrowserDetect.browser == "Firefox" && BrowserDetect.version < 3 && (typeof(totalDirectoryGroups) != 'undefined')) {
				document.getElementById("directory_listings").style.overflowY = 'auto';
			}
		}
	}else{
		if(state == "open") {
			toggleMainNav('close');
			popUp.style.visibility = 'visible';
			var details = document.getElementById(id);
			var popUpContent = document.getElementById('pop_up_content');
			popUpContent.innerHTML = details.innerHTML;
		} else {
			popUp.style.visibility = 'hidden';
		}			
	}	
}

function toggleAppPopUp(state,id,x) {
	var popUp = document.getElementById("app_pop_up");	
	if(undefined===window.curCalendarList){
		if(state == "open") {
			toggleMainNav('close');
			if (BrowserDetect.browser == "Firefox" && BrowserDetect.version < 3 && (typeof(totalDirectoryGroups) != 'undefined')) {
				document.getElementById("directory_listings").style.overflowY = 'hidden';
			}
			popUp.style.display = 'block';
			var details = document.getElementById(id);
			var popUpContent = document.getElementById('app_pop_up_content');
			popUpContent.innerHTML = details.innerHTML;
			var popUpHeight = popUp.offsetHeight;
			popUp.style.marginTop = -(popUpHeight/2);
			if(x){
				popUp.childNodes[0].style.visibility="hidden";
			}
		} else {
			togglePopupEmailForm('close');
			popUp.style.display = 'none';
			if (BrowserDetect.browser == "Firefox" && BrowserDetect.version < 3 && (typeof(totalDirectoryGroups) != 'undefined')) {
				document.getElementById("directory_listings").style.overflowY = 'auto';
			}
		}
	}else{
		if(state == "open") {
			toggleMainNav('close');
			popUp.style.display = 'block';
			var details = document.getElementById(id);
			var popUpContent = document.getElementById('app_pop_up_content');
			popUpContent.innerHTML = details.innerHTML;
			var popUpHeight = popUp.offsetHeight;
			popUp.style.marginTop = -(popUpHeight/2)+"px";
		} else {
			togglePopupEmailForm('close');
			popUp.style.display = 'none';
		}			
	}	
}

/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/	
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

function toolbarHint(hint,obj){
	if(obj){
		hintDiv = obj;
	}else{
		var hintDiv = document.getElementById("toolbar_hint");
	}
	
	if(hint){
		hintDiv.innerHTML = hint;
		hintDiv.style.visibility = 'visible';
	}else{
		hintDiv.style.visibility = 'hidden';
	}
}

function toolbarExecute(job){
	eval(job+"()");
}

function printPage(){
	window.print();
}

function emailPageLink(whereFrom){
	var to_email = document.email_page_url.to_email.value;
	var from_email = document.email_page_url.from_email.value;
	var message = document.email_page_url.message.value;
	var link = location.href;
	
	var parameters = "to_email="+to_email+"&from_email="+from_email+"&message="+message+"&link="+escape(link);
	if(whereFrom=="website"){
		var url = "http://www.unquowa.org/common/php/email_page_url.php";
	}else{
		var url = "http://unquowa.org/common/php/email_page_url.php";
	}
	
	
	if(window.XMLHttpRequest) {
		email_req = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		email_req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	email_req.open("POST", url, true);
	email_req.onreadystatechange = emailPageCallback;
	email_req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	email_req.setRequestHeader("Content-length", parameters.length);
	email_req.setRequestHeader("Connection", "close");
	email_req.send(parameters);
}

function emailPageCallback() {	
	if(email_req.readyState == 4) {
		var response = email_req.responseXML;	
		var resp = response.getElementsByTagName("response");
		var sent = resp[0].getElementsByTagName("sent")[0].childNodes[0].nodeValue;
		
		if (sent == 'sent'){
			document.email_page_url.style.display = 'none';
			getObject('email_sent_message').innerHTML = "Email sent successfully.";
			getObject('email_sent_message').style.display = 'block';
			document.email_page_url.to_email.value = "Send to email address";
			document.email_page_url.from_email.value = "Send from email address";
			document.email_page_url.message.value = "Your message";
			document.email_page_url.to_email.className = "form_light";
			document.email_page_url.from_email.className = "form_light";
			document.email_page_url.message.className = "form_light";
		}else{
			document.email_page_url.to_email.value = resp[0].getElementsByTagName("to_email")[0].childNodes[0].nodeValue;
			document.email_page_url.from_email.value = resp[0].getElementsByTagName("from_email")[0].childNodes[0].nodeValue;			
			if(document.email_page_url.to_email.value=='Invalid Email Address'){
				document.email_page_url.to_email.className = 'red';
			}
			if(document.email_page_url.from_email.value=='Invalid Email Address'){
				document.email_page_url.from_email.className = 'red';
			}
		}
	}
}

function sendFeedback(){
	parent.location.href = 'mailto:website.feedback@unquowa.org';
}

function toggleEmailForm(action){

	var emailForm = getObject('footer_email_form');

	
	if(action == 'open'){
		document.email_page_url.to_email.value = "Send to email address";
		document.email_page_url.from_email.value = "Send from email address";
		document.email_page_url.message.value = "Your message";
		document.email_page_url.to_email.className = "form_light";
		document.email_page_url.from_email.className = "form_light";
		document.email_page_url.message.className = "form_light";
		emailForm.style.display = 'block';
		document.email_page_url.style.display = 'block';
		getObject('email_sent_message').style.display = 'none';
		getObject('email_sent_message').innerHTML = "";
	}else{
		emailForm.style.display = 'none';
	}
}
function togglePopupEmailForm(action,id){

	var emailForm = getObject('popup_email_form');
	getObject('popup_email_send_button').onclick = new Function("emailSingleEvent('"+id+"')");

	if(action == 'open'){
		document.email_single_event.to_email.value = "Send to email address";
		document.email_single_event.from_email.value = "Send from email address";
		document.email_single_event.message.value = "Your message";
		document.email_single_event.to_email.className = "form_light";
		document.email_single_event.from_email.className = "form_light";
		document.email_single_event.message.className = "form_light";
		emailForm.style.display = 'block';
		document.email_single_event.style.display = 'block';
		getObject('popup_email_sent_message').style.display = 'none';
		getObject('popup_email_sent_message').innerHTML = "";
	}else{
		emailForm.style.display = 'none';
	}
}
