
var AttachEmailPopup = function() {

		var emailPageLinks = AJS.getElementsByTagAndClassName('a', 'cmd-email-page', null);
		
		for (var i = 0; i < emailPageLinks.length; i++) {
			emailPageLinks[i].href = "#";
			AJS.AEV(emailPageLinks[i], "click", function(e) { emailthis(); return false; });
		}
		
		if (AJS.$('firstHeading') && location.search.indexOf('printable=yes') == -1 ) {
			var linkEmailPage = AJS.A({className: "cmd-email-page", href: "javascript:emailpage()"}, "Email");
			AJS.AEV(linkEmailPage, "click", function(e) { emailthis(); return false; });

			var linkPrintPage = AJS.A({className: "cmd-print-page", href: wgScript + "?title=" + wgPageName + "&printable=yes", target: "_blank"}, "Printable Version");

			var divToolbar = AJS.DIV({id: "toolbar"});
			divToolbar.appendChild(linkEmailPage);
			divToolbar.appendChild(linkPrintPage);

			AJS.insertBefore(divToolbar, AJS.$('firstHeading').firstChild);
		}
		
}


/* Email This Page */

var emailregex = /^[\w\d\_\-\.]+@[\w\d\_\-\.]+\.[\w\d\_\-\.]+/;
var emailmsg = extEmailPagePopupErrEmail; // Please enter correct email address

var firstCheck = true;

function cimgurl() {
	var t = new Date();
	var nurl = extEmailPagePath + '/captcha/securimage_show.php?sid='+extEmailPageSID+'&t='+t.getTime();
	return nurl;
}

function dclose() {
	if (popupPtr) {
		AJS.fx.fadeOut(popupPtr);
		AJS.setStyle(popupPtr,"display","none");
	}
}

function CheckField(id,regex,errid,matchmsg,nomatchmsg) {
	var field = AJS.$(id);
	var error = AJS.$(errid);
	var rc = true;
	if (field) {
		if (error && field.value.match(regex)) {
			error.innerHTML = matchmsg;
			rc = true;
			AJS.removeClass(field,'fielderror');
		} else {
			error.innerHTML = nomatchmsg;
			rc = false;
			AJS.addClass(field,'fielderror');
		}
	}
	return rc;
}


var checkFrom = function() { CheckField('mailfrom',emailregex,'mailfromerr','',emailmsg); };
var checkTo = function() { CheckField('mailto',emailregex,'mailtoerr','',emailmsg); };
var emailthispage = function() { emailthis() };

function send() {
	var c = AJS.$('code');
	var mailfrom = AJS.$('mailfrom');
	var mailto = AJS.$('mailto');
	var mailfromerr = AJS.$('mailfromerr');
	var mailtoerr = AJS.$('mailtoerr');
	var cmsg = AJS.$('cmsg');
	var cform = AJS.$('cform');
	var cimg = AJS.$('cimg');
	var message = AJS.$('message');
	var imgloading = AJS.$('loading-indicator');
	var btnEmail = AJS.$('btn-email');

	var formOk = false;
	mailfromerr.innerHTML = '';
	mailtoerr.innerHTML = '';

	var d = AJS.getRequest(wgScriptPath + "/api.php?action=emailpage&format=json&code="+c.value+"&target="+mailto.value+"&from="+mailfrom.value+"&subject="+escape(message.value)+"&titles=" + escape(wgTitle));
	
	formOk = CheckField('mailfrom',emailregex,'mailfromerr','',emailmsg);
	formOk &= CheckField('mailto',emailregex,'mailtoerr','',emailmsg);

	if (firstCheck) {
		mailfrom.onchange = checkFrom;
		mailto.onchange = checkTo;
		firstCheck = false;
	}
 
	if (formOk) {
		AJS.hideElement(btnEmail);
		AJS.showElement(imgloading);
		
		//injectSpinner(btnEmail, 'page-emailing');

		d.addCallbacks(
			function(res_txt, req) { 
				try {
					eval('res = ' + res_txt);
				} catch(ex) { }
				
				//alert('debug: \n\n'+res_txt);
				
				/*if (captchaResult) {
				 if (captchaResult.valid) {*/
				
				//removeSpinner('page-emailing');
				AJS.hideElement(imgloading);
				 
				if (res) {


					var timeout = 1250;
					
					if (res.emailpage.error != "Bad security code") {
						cform.style.display = "none";
						cmsg.style.display = "block";
						if ( res.emailpage.error == "" ) {						
							cmsg.innerHTML = 'Thank you! Your message has been sent to ' + res.emailpage.target;
						}
						else {
							timeout = 5000;
							cmsg.innerHTML = 'We are unable to send email to ' + res.emailpage.target + '. Error code: ' + res.emailpage.error+ '.';
						}
						setTimeout("AJS.fx.fadeOut(popupPtr);AJS.removeElement(popupPtr);popupPtr=null",timeout);
					}
					else {
						AJS.showElement(btnEmail);
						//AJS.$('codeerr').innerHTML = captchaResult.msg;
						c.value = '';
						cimg.src = cimgurl();
					}
					
					
					
				}
			}
  		);

		d.sendReq();
	}
}

var popupPtr = null;
var myBody = null;

function emailthis() {

	if (!popupPtr) {
		var p = AJS.absolutePosition(AJS.$('content'));
		var divEmailPopup = AJS.DIV({id: "emailpopup", className: "emailpopup", style: "top:200px;left:"+p.x+"px"});

		var btnClose = AJS.A({href: "#", id: "btn-close"}, "x");
		AJS.AEV(btnClose, "click", function(e) { dclose(); return false; });
		divEmailPopup.appendChild(btnClose);

		var popupHeader = AJS.H3({id: "popup-header"}, extEmailPagePopupTitle + " " + wgTitle);
		//var popupHeader = AJS.H3({id: "popup-header"}, extEmailPagePopupTitle);
		divEmailPopup.appendChild(popupHeader);

		var divCform = AJS.DIV({id: "cform"});
		var tform = AJS.FORM({method: "POST", action: "/lib/captcha/check.php"})

		var lblTo = AJS.createDOM("label", [null, "To:"]);
		tform.appendChild(lblTo);

		var inputTo = AJS.INPUT({id: "mailto", name: "mailto", type: "text", value: ""});
		tform.appendChild(inputTo);

		var toErr = AJS.DIV({id: "mailtoerr"},null);
		tform.appendChild(toErr);
		
		tform.appendChild(AJS.DIV({style: "clear:both"},null));
		
		var lblFrom = AJS.createDOM("label", [null, "From:"]);
		tform.appendChild(lblFrom);

		var inputFrom = AJS.INPUT({id: "mailfrom", name: "mailfrom", type: "text", value: ""});
		tform.appendChild(inputFrom);

		var fromErr = AJS.DIV({id: "mailfromerr"},null);
		tform.appendChild(fromErr);

		tform.appendChild(AJS.DIV({style: "clear:both"},null));
		
		var lblMessage = AJS.createDOM("label", [null, "Message:"]);
		tform.appendChild(lblMessage);

		var inputMessage = AJS.TEXTAREA({id: "message", name: "message"}, "I thought you may find this link of interest");
		tform.appendChild(inputMessage);

		var imgCaptcha = AJS.IMG({id: "cimg"});
		imgCaptcha.src = cimgurl();

		tform.appendChild(imgCaptcha);

		var errMsg = AJS.DIV({id: "errormsg"},null);
		tform.appendChild(errMsg);

		var lblCaptcha = AJS.createDOM("label", [{id: "lblcode"}, "Enter the code shown in the image:"]);
		tform.appendChild(lblCaptcha);

		var inputCode =  AJS.INPUT({id: "code", type: "text", name: "code", autocomplete: "off"});
		tform.appendChild(inputCode);

		var errCode = AJS.DIV({id: "codeerr"},null);
		tform.appendChild(errCode);

		var btnEmail = AJS.INPUT({type: "submit", value: "Email", className: "btn", id: "btn-email"});
		btnEmail.onclick = function() { send(); return false; } ;
		tform.appendChild(btnEmail);

		var spinnerPlace = AJS.DIV({id: "insert-spinner-before"}, null);
		var imgLoading = AJS.DIV({id: "loading-indicator"},spinnerPlace);
		AJS.hideElement(imgLoading);
		tform.appendChild(imgLoading);
		injectSpinner(spinnerPlace, 'page-emailing');

		divCform.appendChild(tform);
		divEmailPopup.appendChild(divCform);

		var divCmsg = AJS.DIV({id: "cmsg", style: "display:none"},null);

		divEmailPopup.appendChild(divCmsg);

		popupPtr = divEmailPopup;
 
		myBody = AJS.getBody();
		myBody.appendChild(popupPtr);
		

	}
	
	AJS.setStyle(popupPtr,"display","block");
	
	AJS.fx.fadeIn(popupPtr);

}

/* end Email This Page */
