var sitePath = 'http://www.lwma.org';
var templatePath = sitePath +'/assets/templates/new-lwma/';

function imgSwap(imgId,newSrc) {
	var theimg = document.getElementById(imgId);
	theimg.src = newSrc;
}

function createTools(pid) {
//	var c = false; //(window.external) ? (window.sidebar) ? false : true : false;
	var printstr = "window.open('http://www.lwma.org/page-print?pid=" + pid +"','pagePrint','status=1,toolbar=1,location=0,menubar=0,height=700,width=575,resizable=1,scrollbars=1,directories=0')";
	document.write('<a href="javascript: void(0);" onclick="javascript: emailPage.launch(this);" ><img src="'+ templatePath +'images/email.jpg" border="0" title="Email this Page" alt="" /></a>'
		+'<a href="javascript: void(0);" onclick="javascript: ' + printstr +';"><img src="'+ templatePath +'images/print.jpg" border="0" title="Print this Page" alt="" /></a>');
}

function bookmarkPage() {
	if (!window.external) return;
	t = document.getElementsByTagName("title");
	window.external.AddFavorite(location.href, t[0].innerHTML);
}

var emailPage = {
	launch : function(a) {
		if (this.isOpen) return this.land();
		this.isOpen = true;
		this.sendingTo = ((this.getCookieValue("ccst") != "") ? this.getCookieValue("ccst") : "recip");
		this.offset(a)


		this.pageTitle = document.getElementsByTagName("title");
		this.pageTitle = this.pageTitle[0].innerHTML;

		this.ebody = document.getElementsByTagName("body").item(0);
		this.ebox = document.createElement("div");
		this.ebox.setAttribute("id", "emailer");
		this.ebox.style.width = "320px";
		this.ebox.style.top = this.offsetY+"px";
		this.ebox.style.left = (this.offsetX-(320+20+2))+"px"; // To offset right, add width plus l & r padding plus l & r border 
		this.ebody.insertBefore(this.ebox, this.ebody.firstChild);
		this.start();
		return true;
	},
	offset : function(e) {
		this.offsetX = e.childNodes[0].offsetLeft+e.childNodes[0].offsetWidth;
		this.offsetY = e.childNodes[0].offsetTop+e.childNodes[0].offsetHeight;
		var p = e.offsetParent;
		r=0;
		while (p) {
			r++;
			this.offsetX += p.offsetLeft;
			this.offsetY += p.offsetTop;
			p = p.offsetParent;
		}
		//alert("r"+r);
	},
	start : function() {
		var r = ((this.sendingTo == "recip"));

		this.ebox.innerHTML = '<div id="em_close"><a href="javascript: void(0);" onclick="javascript: emailPage.land();">x</a></div>'
			+'<div id="em_content">'
			+' <h3>E-mail this Page</h3>'
			//+' <h4>'+ this.pageTitle[0].innerHTML +'</h4>'
			+' <div id="em_error"></div>'
			+' <div id="em_status"></div>'
			+' <div id="em_form">'
			+'  <p id="em_select"><input type="radio" name="sendas" id="sendasrecip" value="recip" class="sm" onclick="javascript: emailPage.sendTo(\'recip\');"'+ ((r) ? ' checked' : '') +' /> <label for="sendasrecip" onclick="javascript: emailPage.sendTo(\'recip\');">Send to Recipient</label>&nbsp;&nbsp;&nbsp;<input type="radio" name="sendas" id="sendasself" value="self" class="sm" onclick="javascript: emailPage.sendTo(\'self\');"'+ ((!r) ? ' checked' : '') +' /> <label for="sendasself" onclick="javascript: emailPage.sendTo(\'self\');">Send to Myself</label></p> '
			+'  <div id="em_formelements">'
			+'   <p class="em_recip"'+ ((!r) ? ' style="display: none;"' : '') +'>Recipient\'s Name<br /><input type="text" class="txtbox" name="em_name" id="em_recp_name" value="" /></p>'
			+'   <p class="em_recip"'+ ((!r) ? ' style="display: none;"' : '') +'>Recipient\'s E-mail Address<br /><input type="text" class="txtbox" name="em_recp_em" id="em_recp_em" value="" /></p>'
			+'   <p>Your Name<br /><input type="text" class="txtbox" name="em_send_name" id="em_send_name" value="'+ this.getCookieValue("ccsn") +'" /></p>'
			+'   <p>Your E-mail Address<br /><input type="text" class="txtbox" name="em_send_em" id="em_send_em" value="'+ this.getCookieValue("ccse") +'" /></p> '
			+'   <p>Add a Message <span class="optional">(Optional)</span><br /><textarea name="em_msg" id="em_msg" rows="4"></textarea></p> '
			+'   <p class="em_recip"'+ ((!r) ? ' style="display: none;"' : '') +'><input type="checkbox" value="bcc" id="em_bbc" name="em_bbc" class="sm" /> Send me a copy (BCC)</p> '
			+'  </div>'
			+' </div>'
			+' <div id="em_buttons"><a id="em_btn_send" href="javascript: void(0);" onclick="emailPage.send();" class="hoverover src:btn_smsend_over.gif">Send'
			//<img src="'+sitePath+'images/btn_smsend.gif" border="0" width="" height="18" title="Send" alt="Send" />
			+'</a>&nbsp;&nbsp;&nbsp;<a href="javascript: void();" onclick="emailPage.land();" class="hoverover src:btn_smcancel_over.gif">Cancel'
			//<img src="'+sitePath+'images/btn_smcancel.gif" border="0" width="" height="18" title="Cancel" alt="Cancel" />
			+'</a></div>'
			+'</div>';
		attributeEffects.set("class", "hoverover", attributeEffects.imgover, "parent", "emailer");
		getElement(((r) ? "em_recp_name" : "em_send_name")).focus();
		//this.sendTo(this.sendingTo);
	},
	send : function() {
		if (this.check()) {
			this.statusBox = this.changeElement("em_status", "block", "Sending...");
			this.formBox = this.changeElement("em_form", "none");
			this.sendBox = getElement("em_btn_send");
			this.sendBox.removeAttribute("onclick");
			//this.sendBox.childNodes[0].oldsrc = this.sendBox.childNodes[0].src;
			//this.sendbox.childNodes[0].src = this.sendbox.childNodes[0].over;
			this.setCookieValue("ccsn", this.ob_form[2][1].value);
			this.setCookieValue("ccse", this.ob_form[3][1].value);
			this.setCookieValue("ccst", this.sendingTo);

			r = ((this.sendingTo == "recip"));
			ajax_init("em_sendto", this.sendingTo, "em_recp_name", ((r) ? this.ob_form[0][1].value : ""), "em_recp_em", ((r) ? this.ob_form[1][1].value : ""), "em_send_name", this.ob_form[2][1].value, "em_send_em", this.ob_form[3][1].value, "em_msg", this.ob_form[4][1].value, "em_bcc", ((r) ? ((this.ob_form[5][1].checked) ? this.ob_form[5][1].value : "") : ""), "page_title", this.pageTitle, "page_url", location.href, emailPageReceive);
		}
	},
	receive : function(a) {
		if (!this.ebox) return;
		//var str = ""; for(i in a) str += a[i]+"\n"; alert(str);
		if (a[0] == "pass") {
			this.statusBox = this.changeElement("em_status", "block", a[1]);
			window.setTimeout("emailPageClose()", 2000);
		} else {
			this.statusBox = this.changeElement("em_status", "none", "");
			this.formBox = this.changeElement("em_form", "block");
			this.errorBox = this.changeElement("em_error", "block", "");
	
			this.sendBox.onclick = function() {emailPage.send(); return false;};
			//this.sendbox.childNodes[0].src = this.sendbox.childNodes[0].oldsrc;
			this.errorFocus = false;
			
			for (var i=1; i<a.length; i++) {
				var inf = a[i].split("|||");
				var r = getElement(inf[0])
				if (r) {
					this.errorBox.innerHTML += ((this.errorBox.innerHTML != "") ? "<br />" : "") + inf[1];
					r.parentNode.className = "emerror";
					if (!this.errorFocus) {r.focus(); this.errorFocus = true;}
				}
			}
		}
	},
	check : function() {
		this.clearMessages();

		this.ob_form = new Array();
		if (this.sendingTo == "recip") this.ob_form[0] = new Array(true, getElement("em_recp_name"), "You must enter a recipient's name");
		if (this.sendingTo == "recip") this.ob_form[1] = new Array(true, getElement("em_recp_em"), "You must enter a recipient's email address");
		this.ob_form[2] = new Array(true, getElement("em_send_name"), "You must enter your name.");
		this.ob_form[3] = new Array(true, getElement("em_send_em"), "You must enter your email address.");
		this.ob_form[4] = new Array(false, getElement("em_msg"));
		if (this.sendingTo == "recip") this.ob_form[5] = new Array(false, getElement("em_bbc"));

		for (i in this.ob_form) {
			if (this.ob_form[i][0]) {
				if (this.ob_form[i][1].value == "") {
					this.ob_form[i][1].parentNode.className = "emerror";
					this.errorBox.style.display = "block";
					if (!this.errorFocus) {this.ob_form[i][1].focus(); this.errorFocus = true;}
					this.errorBox.innerHTML += ((this.errorBox.innerHTML != "") ? "<br />" : "") + this.ob_form[i][2];
				} else {
					this.ob_form[i][1].parentNode.className = "";
				}
			}
		}

		return ((this.errorFocus) ? false : true);
	},
	land : function() {
		this.isOpen = false;
		this.ebody.removeChild(getElement("emailer"));
		delete this.ebox;
		return false;
	},
	changeElement : function(a, b, c, d) {
		var e = getElement(a)
		if (e) {
			if (b != "" && b !== false) e.style.display = b;
			if (c == "") e.innerHTML = "";
			else if (c && c !== false) e.innerHTML = c;
			e.disabled = ((d) ? true : false);
			return e;
		}

		return false;
	},
	setCookieValue : function (a, b) {
		var d = new Date();
		d.setTime(d.getTime()+(365*24*60*60*1000));
		var e = "; expires="+d.toGMTString();
		document.cookie = a+"="+b+e+"; path=/";
	},
	getCookieValue : function (a) {
		var ab = a + "=";
		var c = document.cookie.split(';');
		for(var i=0;i < c.length;i++) {
			var d = c[i];
			while (d.charAt(0)==' ') d = d.substring(1,d.length);
			if (d.indexOf(ab) == 0) {
				return d.substring(ab.length,d.length);
			}
		}
		return "";
	},
	clearMessages : function () {
		this.errorBox = this.changeElement("em_error", "none", "");
		this.errorFocus = false;
		this.statusBox = this.changeElement("em_status", "none", "");

		for (i in this.ob_form) if (this.ob_form[i][0]) this.ob_form[i][1].parentNode.className = "";
	},
	sendTo : function (a) {
		this.sendingTo = a;
		b = ((a == "recip") ? "block" : "none");

		this.clearMessages();

		var l =  getFind(getElement("emailer"), "*", "class", "em_recip");
		for (var i in l) {
			if (typeof l[i] != "object") continue;
			l[i].style.display = b;
		}
	}
};
// For functions/instances that don't understand class functions (settimeout, func)
function emailPageReceive(x) {emailPage.receive(x);}
function emailPageClose(x) {emailPage.land();}


/* Ajax Functions */
var ajax_request_type = "POST";

function ajax_init_object() {
	var A;
	try {
		A=new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			A=new ActiveXObject("Microsoft.XMLHTTP");
		} catch (oc) {
			A=null;
		}
	}

	if (!A && typeof XMLHttpRequest != "undefined") A = new XMLHttpRequest();
	return A;
}

function ajax_do_call(func_name, args) {
	var i, x, n;
	var uri;
	var post_data;

	uri = templatePath + "scripts/emailer.php";
	if (ajax_request_type == "GET") {
		if (uri.indexOf("?") == -1) {
			uri = uri + "?rs=" + escape(func_name);
		} else {
			uri = uri + "&rs=" + escape(func_name);
		}

		for (i = 0; i < args.length-1; i++) uri = uri + "&rsargs[]=" + escape(args[i]);

		uri = uri + "&rsrnd=" + new Date().getTime();
		post_data = null;
	} else {
		post_data = "rs=" + escape(func_name);
		for (i = 0; i < args.length-1; i++) post_data = post_data + "&rsargs[]=" + escape(args[i]);
	}

	x = ajax_init_object();
	x.open(ajax_request_type, uri, true);
	if (ajax_request_type == "POST") {
		x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
		x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		x.setRequestHeader("Content-length",post_data.length); 
		x.setRequestHeader("Connection","close");
	}
	x.onreadystatechange = function() {
		if (x.readyState != 4) return;

		var status;
		var data;
		status = x.responseText.charAt(0);
		data = x.responseText.substring(2);
		
		if (status == "+") {
			args[args.length-1](data);
		} else if (status == "=") {
			groups = data.split(":<<:");
			dataArray = new Array;
			for (v=0; v<groups.length; v++) {
				n_array = groups[v].split(":>>:");
				n_key = n_array[0];
				dataArray[n_key] = n_array[1];
			}
			args[args.length-1](dataArray);
		} else {
			alert("Error: " + status+" == "+data +"\n"+x.responseText);
		}
	}
	x.send(post_data);
	delete x;
}
function ajax_init() {
	ajax_do_call("emailer", ajax_init.arguments);
}



/* DOM Functions */

function getElement(a) {	return ((document.getElementById) ? document.getElementById(a) : eval("document.all."+a));}

function getFind(a, b, c, d, e){
	if (!e || e == "") e = false;
    var f = ((b == "*" && a.all) ? a.all : a.getElementsByTagName(b));
    var r = new Array();
    var q = ((typeof d != "undefined") ? new RegExp("(^|\\s)" + d + ((e) ? ".*" : "") + "(\\s|$)") : null);
    for (var i=0; i<f.length; i++){
        var p = objGetAttr(f[i], c);
        if (p && p != "" && ((!d || d == "") || (q && q.test(p)))) r.push(f[i]);
    }
    return r;
}

function removeElement(e) {((em = getElement(e)) ? em.parentNode.removeChild(em) : e.parentNode.removeChild(e));}

function addEvent(elm, evType, fn, useCapture) {
	if (evType == "DOM") {
		return new domFunction(fn, useCapture);
	} else 	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		return elm.attachEvent("on"+evType, fn)
	}
	return false;
} 

function domFunction(f, a) {
	var n = 0;
	var t = setInterval(function() {
		var c = true;
		n++;
		if (typeof document.getElementsByTagName != 'undefined' && (document.getElementsByTagName('body')[0] != null || document.body != null)) {
			c = false;
			if (typeof a == 'object') {
				for (var i in a) {
					if ((a[i] == 'id' && document.getElementById(i) == null) || (a[i] == 'tag' && document.getElementsByTagName(i).length < 1)) {c = true; break;}
				}
			}
			if(!c) { f(); clearInterval(t); }
		}
		if(n >= 60) clearInterval(t);
	}, 250);
}



/* Replacement Functions */
String.prototype.remove = function (a) {
	var b = this.indexOf(a);
	if (b == -1) return this;
	return this.substring(0,b) + this.substring(b + a.length).remove(a);
}

Object.prototype.getAttr = function(a) {return objGetAttr(this, a);}
function objGetAttr(a, b) {
	if (typeof a != "object") return false;
	return (b == "class") ? a.className : (b == "href") ? a.href : (b == "src") ? a.src : (b == "value") ? a.value : a.getAttribute(b);
}




/* Browser Detection */
var browser = {
	events: function() {
		// if old browser, redirect to upgrade page
		if (pageId != 17 && ((browser.browser == "Netscape" && (browser.version < 7 || browser.version == "an unknown version")) || (browser.browser == "Explorer" && (browser.version < 6 || browser.version == "an unknown version")))) location.href = urlPath+"index.php?id=17";
	},
	compliance : function() {
		// Style Compliance Overrides
		if (browser.browser == "Explorer") document.write('<link rel="stylesheet" href="'+sitePath+'css/ie'+ ((browser.version < 7) ? '6' : '') +'.css" media="all">\n');
		if (browser.browser == "Netscape" || browser.browser == "Mozilla") document.write('<link rel="stylesheet" href="'+sitePath+'css/ns.css" media="all">\n');
	},
	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 && dataString.indexOf(data[i].subString) != -1) {
				return data[i].identity;
			} else if (dataProp) {
				return data[i].identity;
			}
		}
		return false;
	},
	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"}
	]

};

/* Run object checks */
browser.init();
browser.events();

