(function(a) {
	var az, aC, O, V, v, ad, ac, ab, o, aa, c, ai, s, ag, am, t, l, D, n, U, A, ay, af, Y, aq, g, at, Z, y, h, S, p, an, M, H, b, ae, ap, d, ao, aj, aA, I, B, av, L, k, N, f, W, C, aw, e, T, au, m, ah, R, u;
	if ((typeof a.RPXNOW !== "undefined") && a.RPXNOW) {
		return
	}
	t = {};
	t.RPX_URL_PREFIX = "https://rpxnow.com/";
	ab = a.document;
	V = typeof a.ActiveXObject !== "undefined";
	s = ab.compatMode !== "CSS1Compat";
	o = (function() {
		var aE = a.navigator && a.navigator.userAgent, aD = aE
				.match(/MSIE\s([^;]*)/), aF;
		if (aD && aD[1]) {
			aF = 0;
			return (6 === parseFloat(aD[1].replace(/\./g, function() {
				return (aF++ === 1) ? "" : "."
			})))
		} else {
			return false
		}
	}());
	ai = (function() {
		var aE = "", aD = new RegExp(
				"iphone|ipod|ipad|android|palm|blackberry|windows ce");
		try {
			aE = a.navigator.userAgent.toLowerCase()
		} catch (aF) {
		}
		return aE.search(aD) !== -1
	}());
	D = ab.location.protocol === "https:";
	l = a.location.protocol.replace(/[:]$/, "");
	v = (D ? "https://s3.amazonaws.com/static.rpxnow.com"
			: "http://cdn.rpxnow.com");
	aa = {
		bg_social : [ "rel/img/5d24af2656cb7d5bfc959225ed93f78e.png",
				"rel/img/48225b514e12863809a27dbbd77e3bc9.gif" ],
		bg_auth : [ "images/bg_auth.png/072e699dadea176ace38e1f39c8b1c6f.png",
				"images/bg_auth.gif/59b67dc6128043d53a89808c2e08678a.gif" ],
		lb_close : [ "rel/img/43f137c98b7a6562f6ad5f076fce376b.png",
				"images/close_ie.png/6e03cf22aa59b4844d0b78df3bc6787d.png" ],
		lb_corners : [
				"images/corners.png/47464b01c238fc81a5a537859e37e930.png",
				"images/corners.gif/a5384cf51db4d3e85f3c4f95c546a9c5.gif" ],
		lb_border : [ "images/border.png/01c40882d59520662e8cebae63d73a2c.png",
				"images/border.gif/a7f3bf49b8e1d17d66a870e5b7d3b2b9.gif" ],
		auth_background : [
				"images/background.png/ce2da388a4e0fa1ef809b2c4cc4d5139.png",
				"images/background.png/ce2da388a4e0fa1ef809b2c4cc4d5139.png" ]
	};
	A = new RegExp(
			"[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]",
			"g");
	af = new RegExp(
			'[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]',
			"g");
	am = [ "/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\" ];
	ag = new RegExp("(\\" + am.join("|\\") + ")", "g");
	O = new RegExp(
			"^https?://([a-z0-9]([\\-a-z0-9]*[a-z0-9])?\\.)*[a-z0-9]([\\-a-z0-9]*[a-z0-9])?(:[0-9]+)?(/[^?#]*(\\?[^#]*)?)?$",
			"i");
	aC = new RegExp(
			"^https?://([a-z0-9]([\\-a-z0-9]*[a-z0-9])?\\.)*[a-z0-9]([\\-a-z0-9]*[a-z0-9])?(:[0-9]+)?(/[^?#]*(\\?[^#]*)?)?(#.*)?$",
			"i");
	az = new RegExp("^/[^?#]*(\\?[^#]*)?$");
	at = function() {
		return s ? ab.body : ab.documentElement
	};
	R = function(aD) {
		return ab.createElement(aD)
	};
	p = function(aD) {
		var aE = aa[aD][o ? 1 : 0];
		return v + "/" + aE
	};
	S = function(aD) {
		return "url('" + p(aD) + "')"
	};
	y = function(aG, aD) {
		var aE, aF = aG.style;
		for (aE in aD) {
			if (Object.hasOwnProperty.call(aD, aE)) {
				aF[aE] = aD[aE]
			}
		}
	};
	ah = null;
	H = function() {
		if (!ah) {
			ah = R("div");
			ah.setAttribute("id", "FB_HiddenContainer");
			y(ah, {
				position : "absolute",
				top : "-10000px",
				left : "-10000px",
				width : "0",
				height : "0"
			});
			ab.body.insertBefore(ah, ab.body.firstChild)
		}
		return ah
	};
	b = function(aD, aE, aF) {
		if (V) {
			aE.attachEvent("on" + aD, aF)
		} else {
			aE.addEventListener(aD, aF, false)
		}
	};
	ae = function(aD, aE) {
		b("click", aD, aE)
	};
	ap = function(aD, aE) {
		return function() {
			aD[aE].apply(aD, arguments)
		}
	};
	d = function(aD) {
		return (Object.prototype.toString.apply(aD) === "[object Array]")
	};
	ao = function(aD) {
		return (typeof aD === "boolean")
	};
	aj = function(aD) {
		return Object.prototype.toString.apply(aD) === "[object Function]"
	};
	aA = function(aD) {
		return aD === null
	};
	I = function(aD) {
		return typeof aD === "number" && isFinite(aD)
	};
	B = function(aD) {
		return (aD && (typeof aD === "object" || aj(aD))) || false
	};
	av = function(aD) {
		return typeof aD === "string"
	};
	L = function(aD) {
		return typeof aD === "undefined"
	};
	k = function(aD, aF) {
		for ( var aE = 0; aE < aD.length; aE++) {
			if (aD[aE] === aF) {
				return aE
			}
		}
		return -1
	};
	N = function(aD, aF) {
		for ( var aE = 0; aE < aD.length; aE++) {
			if (aD[aE] === aF) {
				return true
			}
		}
		return false
	};
	f = function(aD) {
		if (a.console) {
			a.console.log(aD)
		}
	};
	W = function() {
		if (I(a.innerHeight)) {
			return a.innerHeight
		} else {
			return at().clientHeight
		}
	};
	C = function() {
		if (I(a.innerWidth)) {
			return a.innerWidth
		} else {
			return at().clientWidth
		}
	};
	aw = function() {
		return Math.max(at().scrollHeight, W())
	};
	e = function() {
		return Math.max(at().scrollWidth, C())
	};
	T = function(aG) {
		var aF = new RegExp("([^=]+)=([^&]*)&?", "g"), aE = null, aH = aG
				.match(/^[^?]*(?:\?([^#]*))?(?:$|#.*$)/)[1], aD = {};
		while (!aA(aE = aF.exec(aH))) {
			(aD[decodeURIComponent(aE[1])] = decodeURIComponent(aE[2]))
		}
		return aD
	};
	au = function(aD) {
		return aD.replace(ag, "\\$1")
	};
	var F = function(aL, aJ) {
		var aG, aF, aE, aI, aD, aM, aN, aK, aH;
		aN = {
			"\b" : "\\b",
			"\t" : "\\t",
			"\n" : "\\n",
			"\f" : "\\f",
			"\r" : "\\r",
			'"' : '\\"',
			"\\" : "\\\\"
		};
		aK = aJ[aL];
		aD = function(aO) {
			af.lastIndex = 0;
			return af.test(aO) ? '"' + aO.replace(af, function(aP) {
				aH = aN[aP];
				return typeof aH === "string" ? aH : "\\u"
						+ ("0000" + aP.charCodeAt(0).toString(16)).slice(-4)
			}) + '"' : '"' + aO + '"'
		};
		switch (typeof aK) {
		case "string":
			return aD(aK);
		case "number":
			return isFinite(aK) ? String(aK) : "null";
		case "boolean":
		case "null":
			return String(aK);
		case "object":
			if (!aK) {
				return "null"
			}
			aI = [];
			if (Object.prototype.toString.apply(aK) === "[object Array]") {
				aE = aK.length;
				for (aG = 0; aG < aE; aG += 1) {
					aI[aG] = F(aG, aK) || "null"
				}
				aM = aI.length === 0 ? "[]" : "[" + aI.join(",") + "]";
				return aM
			}
			for (aF in aK) {
				if (Object.hasOwnProperty.call(aK, aF)) {
					aM = F(aF, aK);
					if (aM) {
						aI.push(aD(aF) + ":" + aM)
					}
				}
			}
			aM = aI.length === 0 ? "{}" : "{" + aI.join(",") + "}";
			return aM
		}
		throw new Error("What happened?.")
	}, x = function(aD) {
		return F("", {
			"" : aD
		})
	}, G = (function() {
		var aG, aE, aD = {
			'"' : '"',
			"\\" : "\\",
			"/" : "/",
			b : "\b",
			f : "\f",
			n : "\n",
			r : "\r",
			t : "\t"
		}, aP, aN = function(aQ) {
			throw {
				name : "SyntaxError",
				message : aQ,
				at : aG,
				text : aP
			}
		}, aJ = function(aQ) {
			if (aQ && aQ !== aE) {
				aN("Expected '" + aQ + "' instead of '" + aE + "'")
			}
			aE = aP.charAt(aG);
			aG += 1;
			return aE
		}, aI = function() {
			var aR, aQ = "";
			if (aE === "-") {
				aQ = "-";
				aJ("-")
			}
			while (aE >= "0" && aE <= "9") {
				aQ += aE;
				aJ()
			}
			if (aE === ".") {
				aQ += ".";
				while (aJ() && aE >= "0" && aE <= "9") {
					aQ += aE
				}
			}
			if (aE === "e" || aE === "E") {
				aQ += aE;
				aJ();
				if (aE === "-" || aE === "+") {
					aQ += aE;
					aJ()
				}
				while (aE >= "0" && aE <= "9") {
					aQ += aE;
					aJ()
				}
			}
			aR = +aQ;
			if (isNaN(aR)) {
				aN("Bad number")
			} else {
				return aR
			}
		}, aK = function() {
			var aT, aS, aR = "", aQ;
			if (aE === '"') {
				while (aJ()) {
					if (aE === '"') {
						aJ();
						return aR
					} else {
						if (aE === "\\") {
							aJ();
							if (aE === "u") {
								aQ = 0;
								for (aS = 0; aS < 4; aS += 1) {
									aT = parseInt(aJ(), 16);
									if (!isFinite(aT)) {
										break
									}
									aQ = aQ * 16 + aT
								}
								aR += String.fromCharCode(aQ)
							} else {
								if (typeof aD[aE] === "string") {
									aR += aD[aE]
								} else {
									break
								}
							}
						} else {
							aR += aE
						}
					}
				}
			}
			aN("Bad string")
		}, aM = function() {
			while (aE && aE <= " ") {
				aJ()
			}
		}, aF = function() {
			switch (aE) {
			case "t":
				aJ("t");
				aJ("r");
				aJ("u");
				aJ("e");
				return true;
			case "f":
				aJ("f");
				aJ("a");
				aJ("l");
				aJ("s");
				aJ("e");
				return false;
			case "n":
				aJ("n");
				aJ("u");
				aJ("l");
				aJ("l");
				return null
			}
			aN("Unexpected '" + aE + "'")
		}, aO, aL = function() {
			var aQ = [];
			if (aE === "[") {
				aJ("[");
				aM();
				if (aE === "]") {
					aJ("]");
					return aQ
				}
				while (aE) {
					aQ.push(aO());
					aM();
					if (aE === "]") {
						aJ("]");
						return aQ
					}
					aJ(",");
					aM()
				}
			}
			aN("Bad array")
		}, aH = function() {
			var aR, aQ = {};
			if (aE === "{") {
				aJ("{");
				aM();
				if (aE === "}") {
					aJ("}");
					return aQ
				}
				while (aE) {
					aR = aK();
					aM();
					aJ(":");
					if (Object.hasOwnProperty.call(aQ, aR)) {
						aN('Duplicate key "' + aR + '"')
					}
					aQ[aR] = aO();
					aM();
					if (aE === "}") {
						aJ("}");
						return aQ
					}
					aJ(",");
					aM()
				}
			}
			aN("Bad object")
		};
		aO = function() {
			aM();
			switch (aE) {
			case "{":
				return aH();
			case "[":
				return aL();
			case '"':
				return aK();
			case "-":
				return aI();
			default:
				return aE >= "0" && aE <= "9" ? aI() : aF()
			}
		};
		return function(aT, aR) {
			var aQ;
			aP = aT;
			aG = 0;
			aE = " ";
			aQ = aO();
			aM();
			if (aE) {
				aN("Syntax error")
			}
			return typeof aR === "function" ? (function aS(aX, aW) {
				var aV, aU, aY = aX[aW];
				if (aY && typeof aY === "object") {
					for (aV in aY) {
						if (Object.hasOwnProperty.call(aY, aV)) {
							aU = aS(aY, aV);
							if (aU !== undefined) {
								aY[aV] = aU
							} else {
								delete aY[aV]
							}
						}
					}
				}
				return aR.call(aX, aW, aY)
			}( {
				"" : aQ
			}, "")) : aQ
		}
	}());
	var j = {
		fetch : function(aD, aF) {
			var aE = this._newRequest();
			aE.onreadystatechange = function() {
				if (aE.readyState !== 4) {
					return
				}
				switch (aE.status) {
				case 200:
				case 304:
					aF.success(aE.responseText);
					return;
				case -1:
					return;
				default:
					break
				}
				aF.failure(aE.status, aE.statusText, aE.responseText)
			};
			aE.open("GET", aD, true);
			aE.send(null)
		},
		_newRequest : function() {
			if (L(a.XMLHttpRequest)) {
				try {
					return new a.ActiveXObject("Msxml2.XMLHTTP.6.0")
				} catch (aG) {
				}
				try {
					return new a.ActiveXObject("Msxml2.XMLHTTP.3.0")
				} catch (aF) {
				}
				try {
					return new a.ActiveXObject("Msxml2.XMLHTTP")
				} catch (aE) {
				}
				try {
					return new a.ActiveXObject("Microsoft.XMLHTTP")
				} catch (aD) {
				}
				throw new Error("This browser does not support XMLHttpRequest.")
			} else {
				return new a.XMLHttpRequest()
			}
		}
	};
	var ar = {
		_cached : null,
		get : function(aD) {
			return this._parsedCookies()[aD]
		},
		remove : function(aE, aD) {
			aD = aD || {};
			aD.expires = new Date(0);
			return this.set(aE, "", aD)
		},
		set : function(aE, aF, aD) {
			var aG = (encodeURIComponent(aE) + "=" + encodeURIComponent(aF));
			if (B(aD)) {
				if (aD.expires instanceof Date) {
					aG += "; expires=" + aD.expires.toGMTString()
				}
				if ((aD.path) && aD.path !== "") {
					aG += "; path=" + aD.path
				}
				if (av(aD.domain) && aD.domain !== "") {
					aG += "; domain=" + aD.domain
				}
				if (aD.secure === true) {
					aG += "; secure"
				}
			}
			ab.cookie = aG;
			return aG
		},
		_parsedCookies : function() {
			var aG, aM, aF, aH, aD, aL, aI, aE, aJ;
			if (aA(this._cached)) {
				aG = this._cached = {};
				aM = ab.cookie;
				if (/[^=]+=[^=;]?(?:; [^=]+=[^=]?)?/.test(aM)) {
					aF = aM.split(/;\s/g);
					aD = null;
					aL = null;
					aI = null;
					aE = null;
					for (aH = 0, aJ = aF.length; aH < aJ; aH++) {
						aE = aF[aH];
						aI = aE.match(/([^=]+)=(.*)/i);
						if (aI instanceof Array) {
							try {
								aD = decodeURIComponent(aI[1].replace(/\+/g,
										" "));
								aL = decodeURIComponent(aI[2].replace(/\+/g,
										" "));
								aG[aD] = aL
							} catch (aK) {
							}
						}
					}
				}
			}
			return this._cached
		}
	};
	var z = function(aE) {
		var aD;
		this.pairs = [];
		if (aE && typeof aE === "object") {
			for (aD in aE) {
				if (aE.hasOwnProperty(aD)) {
					this.add(aD, aE[aD])
				}
			}
		}
	};
	z.prototype = {
		add : function(aE, aF) {
			var aD = encodeURIComponent;
			if (!L(aF) && !aA(aF)) {
				this.pairs.push( [ aD(aE), aD(aF) ].join("="))
			}
		},
		toString : function() {
			return this.pairs.join("&")
		}
	};
	var K = function(aH, aI) {
		var aG, aD, aF, aE;
		aG = this.formElem = R("form");
		aD = this.submitElem = R("input");
		aD.setAttribute("type", "submit");
		aG.appendChild(aD);
		aF = H();
		aF.appendChild(aG);
		this.inputElems = {};
		if (aH) {
			this.setAction(aH)
		}
		if (aI && aI instanceof Object) {
			for (aE in aI) {
				if (aI.hasOwnProperty(aE)) {
					this.setHidden(aE, aI[aE])
				}
			}
		}
	};
	K.prototype = {
		setAction : function(aD) {
			this.formElem.setAttribute("action", aD)
		},
		setMethod : function(aD) {
			this.formElem.setAttribute("method", aD)
		},
		setTarget : function(aD) {
			this.formElem.setAttribute("target", aD)
		},
		setHidden : function(aD, aG) {
			var aF, aE = this.inputElems;
			if (aA(aG)) {
				this.deleteHidden(aD);
				return
			}
			aF = aE[aD];
			if (!aF) {
				aF = aE[aD] = R("input");
				aF.setAttribute("type", "hidden");
				aF.setAttribute("name", aD);
				this.formElem.appendChild(aF)
			}
			aF.setAttribute("value", aG)
		},
		deleteHidden : function(aD) {
			var aF = this.inputElems, aE = aF[aD];
			if (aE) {
				this.formElem.removeChild(aE);
				aF.slice(k(aF, aE), 1)
			}
		},
		submit : function() {
			this.submitElem.click()
		},
		submitTo : function(aD) {
			this.setTarget(aD.getName());
			this.submit()
		}
	};
	var ak = function() {
		var aG, aD, aE, aF;
		aG = R("div");
		aD = this.name = u();
		aE = H();
		aE.appendChild(aG);
		aF = o ? t.RPX_URL_PREFIX + "blank.html" : "";
		aG.innerHTML = ('<iframe src="' + aF + '" name="' + aD + '" id="' + aD + '"></iframe>');
		this.iframeElem = ab.getElementById(aD);
		if (V) {
			a.frames[aD].name = aD
		}
	};
	ak.prototype = {
		getName : function() {
			return this.name
		},
		setSrc : function(aD) {
			this.iframeElem.setAttribute("src", aD)
		},
		addOnloadListener : function(aE) {
			var aD = this.iframeElem;
			if (V) {
				aD.onreadystatechange = function() {
					if (aD.readyState === "complete") {
						aE()
					}
				}
			} else {
				aD.addEventListener("load", aE, false)
			}
		}
	};
	var r = function(aF, aD, aE) {
		this.width = aF;
		this.height = aD;
		this.window = null;
		if (L(aE)) {
			this.name = u()
		} else {
			this.name = aE
		}
		this.closeListeners = []
	};
	r.prototype = {
		show : function(aD) {
			var aG, aF, aE;
			if (!this.window) {
				aG = this._getCenteredCoords();
				this.window = a.open(aD || "", this.name, "width=" + this.width
						+ ",height=" + this.height
						+ ",status=1,location=1,resizable=yes,left=" + aG[0]
						+ ",top=" + aG[1] + ",scrollbars=yes");
				aF = this;
				aE = a.setInterval(function() {
					if (aF.window.closed) {
						a.clearInterval(aE);
						aF._onClose()
					}
				}, 500)
			}
		},
		setLocation : function(aD) {
			if (this.window) {
				this.window.location.href = aD
			}
		},
		setSize : function(aE, aD) {
			this.width = aE;
			this.height = aD;
			if (this.window) {
				this.window.outerWidth = aE;
				this.window.outerHeight = aD
			}
		},
		close : function() {
			if (this.window) {
				this.window.close()
			}
		},
		addCloseListener : function(aD) {
			this.closeListeners.push(aD)
		},
		removeCloseListener : function(aD) {
			this.closeListeners.splice(k(this.closeListeners, aD), 1)
		},
		getName : function() {
			return this.name
		},
		focus : function() {
			this.window.focus()
		},
		_getCenteredCoords : function() {
			var aG, aD, aF, aE;
			aG = null;
			aD = null;
			if (V) {
				aG = a.event.screenX - (this.width / 2) + 100;
				aD = a.event.screenY - (this.height / 2) - 100
			} else {
				aF = [ a.outerWidth, a.outerHeight ];
				aE = [ a.screenX, a.screenY ];
				aG = aE[0] + Math.max(0, Math.floor((aF[0] - this.width) / 2));
				aD = a.screenY + 15
			}
			return [ aG, aD ]
		},
		_onClose : function() {
			var aD, aE;
			for (aD = 0; aD < this.closeListeners.length; aD++) {
				aE = this.closeListeners[aD];
				aE()
			}
		}
	};
	var P = function(aS, aQ, aP) {
		var aT, aK, aG, aI, aM, aF, aW, aH, aV, aR, aE, aU, aD, aO, aJ, aN, aL;
		aS.style.position = "relative";
		aL = R("div");
		aL.className = "rpxnow_lightbox_trans";
		y(aL, {
			backgroundColor : "black",
			position : "absolute",
			top : 0,
			left : 0,
			width : "100%",
			height : "100%"
		});
		if (V) {
			aL.style.filter = "alpha(opacity=40)"
		} else {
			aD = "0.4";
			y(aL, {
				opacity : aD,
				KhtmlOpacity : aD,
				MozOpacity : aD
			})
		}
		aF = R("img");
		aF.src = p("lb_close");
		aF.alt = "close";
		y(aF, {
			position : "absolute",
			top : "-4px",
			right : "-4px",
			cursor : "pointer",
			width : "34px",
			height : "34px"
		});
		aW = this.containerElem = R("div");
		aW.className = "rpxnow_lightbox_container";
		y(aW, {
			position : "absolute",
			display : "block",
			padding : "10px",
			width : (aQ + (o && s ? 20 : 0)) + "px",
			height : (aP + (o && s ? 20 : 0)) + "px"
		});
		aH = {
			position : "absolute",
			width : "20px",
			height : "20px",
			backgroundImage : S("lb_corners")
		};
		aK = {
			position : "absolute",
			backgroundImage : S("lb_border")
		};
		aJ = R("div");
		y(aJ, aH);
		y(aJ, {
			top : "0",
			left : "0"
		});
		aO = R("div");
		y(aO, aK);
		y(aO, {
			top : "0",
			left : "20px",
			width : (aQ - 20) + "px",
			height : "20px"
		});
		aN = R("div");
		y(aN, aH);
		y(aN, {
			top : "0",
			right : "0",
			backgroundPosition : "top right"
		});
		aU = R("div");
		y(aU, aK);
		y(aU, {
			top : "20px",
			left : "0",
			width : (aQ + 20) + "px",
			height : (aP - 20) + "px"
		});
		aI = R("div");
		y(aI, aH);
		y(aI, {
			bottom : "0",
			left : "0",
			backgroundPosition : "0 -20px"
		});
		aG = R("div");
		y(aG, aK);
		y(aG, {
			bottom : "0",
			left : "20px",
			width : (aQ - 20) + "px",
			height : "20px"
		});
		aM = R("div");
		y(aM, aH);
		y(aM, {
			bottom : "0",
			right : "0",
			backgroundPosition : "-20px -20px"
		});
		aV = [ aJ, aO, aN, aI, aG, aM, aU, aS, aF ];
		for (aR = 0; aR < aV.length; aR++) {
			aW.appendChild(aV[aR])
		}
		aE = this.lightboxElem = R("div");
		aE.className = "rpxnow_lightbox";
		y(aE, {
			position : o ? "absolute" : "fixed",
			display : "none",
			top : 0,
			left : 0,
			zIndex : 10000
		});
		aE.appendChild(aL);
		aE.appendChild(aW);
		aT = ab.body;
		if (aT.firstChild) {
			aT.insertBefore(aE, aT.firstChild)
		} else {
			aT.appendChild(aE)
		}
		b("resize", a, ap(this, "resize"));
		b("click", aF, ap(this, "hide"));
		if (o) {
			a.attachEvent("onscroll", ap(this, "scroll"))
		}
		this.closeListeners = []
	};
	P.currentInstance = null;
	P.close = function() {
		P.currentInstance.hide()
	};
	P.prototype = {
		show : function() {
			if (P.currentInstance === null) {
				P.currentInstance = this
			} else {
				return false
			}
			this.containerElem.style.visibility = "hidden";
			this.resize();
			if (o) {
				this.scroll()
			}
			this.lightboxElem.style.display = "block";
			return true
		},
		hide : function() {
			var aD, aE;
			this.lightboxElem.style.display = "none";
			P.currentInstance = null;
			for (aD = 0; aD < this.closeListeners.length; aD++) {
				aE = this.closeListeners[aD];
				aE()
			}
		},
		addCloseListener : function(aD) {
			this.closeListeners.push(aD)
		},
		removeCloseListener : function(aD) {
			this.closeListeners.splice(k(this.closeListeners, aD), 1)
		},
		isVisible : function() {
			return (this.lightboxElem.style.display === "block")
		},
		resize : function() {
			var aE, aG, aF, aD;
			aE = C();
			aG = W();
			y(this.lightboxElem, {
				width : aE + "px",
				height : aG + "px"
			});
			aF = this.containerElem;
			aD = function() {
				var aH = o && s ? 0 : 10;
				y(aF, {
					top : (((aG - aF.offsetHeight) / 2) + aH) + "px",
					left : (((aE - aF.offsetWidth) / 2) + aH) + "px",
					visibility : "visible"
				})
			};
			if (aF.style.visibility === "hidden") {
				a.setTimeout(aD, 0)
			} else {
				aD()
			}
		},
		scroll : function() {
			var aD = at();
			y(this.lightboxElem, {
				top : aD.scrollTop + "px",
				left : aD.scrollLeft + "px"
			})
		}
	};
	var ax, E, J, i, al, X, w, q, Q;
	w = T(a.location.href);
	q = (w.flags || "").split(",");
	Q = k(q, "stay_in_window") > -1;
	al = function(aE) {
		var aD = document.createElement("a");
		aD.href = "http://" + aE + "/";
		return aD.hostname
	};
	ax = function(aD, aE, aF) {
		this.name = aD;
		this.popupWidth = aE;
		this.popupHeight = aF;
		this.base_params = {}
	};
	ax.prototype = {
		_start : function(aE, aD, aL, aF) {
			var aM, aK, aI, aG, aJ, aH;
			if (!aE) {
				m.setLastLoginTab(this.providerName())
			}
			aH = new z(this.base_params);
			aH.add("flags", w.flags);
			aH.add("language_preference", w.language_preference);
			aH.add("openid_proxy_url", w.openid_proxy_url);
			aH.add("token_url", aD);
			aH.add("bp_channel", w.bp_channel);
			if (!aE) {
				aH.add("display", "popup")
			}
			if (aF) {
				for (aJ in aF) {
					if (Object.hasOwnProperty.call(aF, aJ)) {
						aH.add(aJ, aF[aJ])
					}
				}
			}
			aK = null;
			aM = null;
			if (!ai) {
				aH.add("xdReceiver", t.config.xdReceiver);
				aH.add("callback", Z(function(aN) {
					if (!aA(aK)) {
						a.clearInterval(aM);
						aK.close()
					}
					aL(aN)
				}))
			}
			aI = this.startUrl() + "?" + aH.toString();
			if (aE) {
				aG = new ak();
				aG.setSrc(aI)
			} else {
				if (ai) {
					a.top.location.href = aI
				} else {
					aK = new r(this.popupWidth, this.popupHeight, this.name);
					aK.show(aI);
					aM = a.setInterval(function() {
						if (aK.window.closed) {
							a.clearInterval(aM);
							aL( {
								stat : "fail",
								err : {
									code : -1
								}
							})
						}
					}, 1000)
				}
			}
		},
		startUrl : function() {
			return t.config.appUrlPrefix + this.name + "/start"
		},
		providerName : function() {
			return this.name
		}
	};
	X = function(aD) {
		return function(aE) {
			if (aE.stat === "ok") {
				if (L(aD.success)) {
					a.setTimeout(function() {
						if (Q) {
							a.location.href = aE.redirectUrl
						} else {
							a.top.location.href = aE.redirectUrl
						}
					}, 1)
				} else {
					aD.success(aE.redirectUrl)
				}
			} else {
				if (L(aD.error)) {
					aD(aE.err)
				} else {
					aD.error(aE.err)
				}
			}
		}
	};
	i = function(aD, aE, aG, aI, aF, aH) {
		ax.call(this, "openid", aF, aH);
		this.prefix = aE;
		this.suffix = aG;
		this.isSubdomain = aI;
		this._immediate = {};
		this._providerName = aD
	};
	aq = i.prototype = new ax();
	aq.providerName = function() {
		return this._providerName
	};
	aq.immediate = function(aG) {
		var aE, aD, aF;
		if (V) {
			return
		}
		aE = m.getLastSuccessful();
		if (aE.providerName === this.providerName()) {
			aF = this._inputToUrl(aE.userInput);
			aD = this;
			this._start(true, aG, function(aH) {
				if (aH.stat === "ok") {
					aD._immediate.input = aE.userInput;
					aD._immediate.url = aH.redirectUrl
				}
			}, {
				openid_identifier : aF,
				immediate : true
			})
		}
	};
	aq.start = function(aE, aI, aH, aG) {
		if (!aA(this._immediate.url) && aE === this._immediate.input) {
			if (Q) {
				a.location.href = this._immediate.url
			} else {
				a.top.location.href = this._immediate.url
			}
			return
		}
		m.setLastUserInput(aE);
		var aF = this._inputToUrl(aE);
		var aD = X(aH);
		if (aA(aG) || L(aG)) {
			aG = {}
		}
		aG.openid_identifier = aF;
		this._start(false, aI, aD, aG)
	};
	aq._inputToUrl = function(aD) {
		var aG, aE, aF;
		if (this.prefix.length > 0 || this.suffix.length > 0) {
			if (this.isSubdomain) {
				aD = aD.toLowerCase();
				aG = aD.split(".");
				for (aF = 0; aF < aG.length; aF++) {
					aE = aG[aF];
					aE = aE.replace(/[\x00-\x2C\x2E\x2F\x3A-\x60\x7B-\x7F]/g,
							"");
					aG[aF] = aE.replace(/(^-|-$)/g, "")
				}
				aD = al(aG.join("."))
			} else {
				aD = aD.replace(/^\s+|\s+$/g, "");
				aD = encodeURI(aD);
				aD = aD.replace("?", "%3F").replace("#", "%23")
			}
		}
		return this.prefix + aD + this.suffix
	};
	J = function(aD, aG, aE, aF) {
		ax.call(this, "openid", aE, aF);
		this._providerName = aD;
		this.identifierSelectUrl = aG;
		this.immediateUrl = null
	};
	g = J.prototype = new ax();
	g.providerName = function() {
		return this._providerName
	};
	g.immediate = function(aG) {
		if (V) {
			return
		}
		var aF = m.getLastSuccessful();
		if (aF.providerName === this.providerName()) {
			var aD = ar.get(this.providerName() + "_identifier");
			if (aD) {
				var aE = this;
				this._start(true, aG, function(aH) {
					if (aH.stat === "ok") {
						aE.immediateUrl = aH.redirectUrl
					}
				}, {
					openid_identifier : aD,
					immediate : true
				})
			}
		}
	};
	g.start = function(aH, aG, aF) {
		if (!aA(this.immediateUrl)) {
			if (Q) {
				a.location.href = this.immediateUrl
			} else {
				a.top.location.href = this.immediateUrl
			}
			return
		}
		var aE = ar.get(this.providerName() + "_identifier");
		if (!aE) {
			aE = this.identifierSelectUrl
		}
		if (aA(aF) || L(aF)) {
			aF = {}
		}
		aF.openid_identifier = aE;
		var aD = X(aG);
		this._start(false, aH, aD, aF)
	};
	g.startFresh = function(aG, aF, aE) {
		var aD = X(aF);
		this._start(false, aG, aD, {
			openid_identifier : this.identifierSelectUrl,
			force_reauth : aE
		})
	};
	E = function(aE, aF, aD) {
		ax.call(this, aE, aF, aD)
	};
	U = E.prototype = new ax();
	U.start = function(aG, aF, aE) {
		var aD = X(aF);
		this._start(false, aG, aD, aE)
	};
	U.startFresh = function(aH, aG, aE, aF) {
		var aD = X(aG);
		if (aA(aF) || L(aF)) {
			aF = {
				force_reauth : aE
			}
		} else {
			aF.force_reauth = aE
		}
		this._start(false, aH, aD, aF)
	};
	m = {
		setLastLoginTab : function(aD) {
			var aE = {
				expires : new Date(),
				path : "/"
			};
			aE.expires.setDate(aE.expires.getDate() + 3650);
			ar.set("login_tab", aD, aE)
		},
		setLastUserInput : function(aD) {
			var aE = {
				expires : new Date(),
				path : "/"
			};
			aE.expires.setDate(aE.expires.getDate() + 3650);
			ar.set("user_input", aD, aE)
		},
		getLastSuccessful : function() {
			var aD = {
				providerName : ar.get("expected_tab"),
				userInput : ar.get("expected_user_input"),
				userName : null
			};
			var aF = ar.get("welcome_info");
			if (!aA(aF)) {
				try {
					var aE = G(aF);
					if (aE[0] === "welcome_user") {
						aD.userName = aE[1].name
					}
				} catch (aG) {
				}
			}
			return aD
		}
	};
	t.Auth = {
		CustomProvider : E,
		OpenID2Provider : J,
		OpenID1Provider : i,
		CookieUserStateStore : m,
		providers : {
			aol : new i("aol", "http://openid.aol.com/", "", false, 514, 550),
			blogger : new i("blogger", "", "", false, 800, 600),
			livejournal : new i("livejournal", "http://", ".livejournal.com/",
					true, 800, 600),
			netlog : new i("netlog", "http://netlog.com/", "", false, 800, 600),
			openid : new i("openid", "", "", false, 800, 600),
			wordpress : new i("wordpress", "http://", ".wordpress.com/", true,
					800, 600),
			flickr : new J("flickr", "https://me.yahoo.com/", 500, 500),
			google : new J("google", "https://www.google.com/accounts/o8/id",
					450, 500),
			hyves : new J("hyves", "http://hyves.nl/", 800, 600),
			myopenid : new J("myopenid", "http://myopenid.com/", 800, 600),
			paypal : new J("paypal",
					"https://www.paypal.com/webapps/auth/server", 800, 600),
			verisign : new J("verisign", "http://pip.verisignlabs.com/", 800,
					600),
			yahoo : new J("yahoo", "https://me.yahoo.com/", 500, 500),
			facebook : new E("facebook", 500, 500),
			live_id : new E("liveid", 900, 600),
			linkedin : new E("linkedin", 750, 550),
			myspace : new E("myspace", 800, 500),
			twitter : new E("twitter", 800, 500),
			salesforce : new E("salesforce", 800, 500),
			foursquare : new E("foursquare", 950, 550),
			vzn : new E("vzn", 600, 450),
			orkut : new E("orkut", 800, 600)
		}
	};
	t.Util = {
		LightBox : P,
		PopupWindow : r,
		QueryBuilder : z,
		addListener : b,
		addClickListener : ae,
		bind : ap,
		indexOf : k,
		parseQueryString : T
	};
	t._xdCallbacks = [];
	Z = function(aF) {
		var aD, aE;
		aD = t._xdCallbacks.length;
		aE = "RPXNOW._xdCallbacks[" + aD + "]";
		t._xdCallbacks.push(function(aI) {
			var aG, aH;
			aG = k(t._xdCallbacks, this);
			t._xdCallbacks[aG] = null;
			aH = G(aI);
			aF(aH)
		});
		return aD
	};
	M = function(aH, aD, aK) {
		var aI, aJ, aF, aE, aG;
		aI = Z(aK);
		aG = t.config.appUrlPrefix.replace(/^https?/, l);
		aJ = aG + "jsapi/v3/" + aH;
		aF = new K(aJ, aD);
		aF.setHidden("xdReceiver", t.config.xdReceiver);
		aF.setHidden("callback", aI);
		aE = new ak();
		aF.submitTo(aE)
	};
	ay = function(aH, aF, aG, aE, aD) {
		aH.innerHTML = ('<iframe src="'
				+ (o ? t.RPX_URL_PREFIX + "blank.html" : "") + '" name="' + aF
				+ '" id="' + aF + '" style="width: ' + aG + "px; height: " + aE + 'px; background: transparent; position: absolute; top: 0; left: 0; visibility: hidden; display: none;" scrolling="no" frameBorder="0" allowTransparency="true"></iframe>');
		y(aH, {
			backgroundColor : "transparent",
			backgroundImage : S(aD),
			backgroundRepeat : "no-repeat",
			backgroundPosition : "top left",
			fontSize : "17px",
			textAlign : "center",
			width : aG + "px",
			height : aE + "px",
			overflow : "hidden",
			fontFamily : "'lucida grande', Helvetica, Verdana, sans-serif"
		})
	};
	h = function(aD, aE) {
		if (V) {
			aD.onreadystatechange = function() {
				if (aD.readyState === "complete") {
					aE.style.visibility = "hidden";
					aD.style.visibility = "visible";
					a.setTimeout(function() {
						aD.style.display = "block"
					}, 1500)
				}
			}
		} else {
			aD.addEventListener("load", function() {
				aD.style.display = "block";
				a.setTimeout(function() {
					aE.style.visibility = "hidden";
					aD.style.visibility = "visible"
				}, 1)
			}, false)
		}
	};
	var aB = t.Social = {
		publishActivity : function(aG, aN) {
			var aF;
			if (aA(aG.title)) {
				aG.setTitle(ab.title)
			}
			var aE = u();
			var aD = R("div");
			var aH = new P(aD, 423, 280);
			ay(aD, aE, 423, 280, "bg_social");
			if (t.config.hasError()) {
				var aL = R("div");
				y(aL, {
					lineHeight : "280px",
					padding : "0px 13px",
					whiteSpace : "nowrap"
				});
				aL.appendChild(ab.createTextNode("Error: " + t.config.error));
				aD.appendChild(aL)
			} else {
				aD.style.lineHeight = "280px";
				aF = R("span");
				aF.appendChild(ab.createTextNode("Loading..."));
				aD.appendChild(aF)
			}
			var aI = ab.getElementById(aE);
			if (aj(aN)) {
				aN = {
					finishCallback : aN
				}
			} else {
				if (L(aN)) {
					aN = {}
				} else {
					if (!B(aN)) {
						throw new Error("options must be an associative array")
					} else {
						if (!L(aN.finishCallback) && !aj(aN.finishCallback)) {
							throw new Error("finishCallback must be a function")
						}
						if (!L(aN.exclusionList) && !d(aN.exclusionList)) {
							throw new Error("exclusionList must be an array")
						}
						if (!L(aN.urlShortening) && !ao(aN.urlShortening)) {
							throw new Error("urlShortening must be a boolean")
						}
						if (!L(aN.postTruncation) && !ao(aN.postTruncation)) {
							throw new Error("postTruncation must be a boolean")
						}
						if (!L(aN.prependName) && !ao(aN.prependName)) {
							throw new Error("prependName must be a boolean")
						}
						if (!L(aN.primaryKey)) {
							if (!av(aN.primaryKey)) {
								throw new Error("primaryKey must be a string")
							}
							if (L(aN.timestamp)) {
								throw new Error(
										"timestamp required for primaryKey")
							}
							if (!I(aN.timestamp)) {
								throw new Error("timestamp must be an integer")
							}
							if (L(aN.signature)) {
								throw new Error(
										"signature required for primaryKey")
							}
							if (!av(aN.signature)) {
								throw new Error("signature must be a string")
							}
						}
					}
				}
			}
			var aK = null;
			if (!aj(aN.finishCallback)) {
				aN.finishCallback = function(aO) {
				}
			}
			var aJ = function(aQ) {
				var aO = function() {
					aN.finishCallback(aQ.publishResults)
				};
				if (!aA(t.config.tokenCallbackUrl) && aQ.authTokens.length > 0) {
					var aP = new K(t.config.tokenCallbackUrl);
					aP.setHidden("tokens", aQ.authTokens);
					var aR = new ak();
					aP.setTarget(aR.getName());
					aR.addOnloadListener(aO);
					aP.setMethod("POST");
					aP.submit()
				} else {
					a.setTimeout(aO, 1)
				}
			};
			aK = Z(aJ);
			if (!t.config.hasError()) {
				var aM = function(aR) {
					var aQ, aP, aO;
					aQ = t.config.appUrlPrefix.replace(/^https?/, l);
					aP = aQ + "social/publish_activity";
					aO = new K(aP);
					aO.setMethod("POST");
					aO.setHidden("activity", x(aG));
					aO.setHidden("sessid", aR.sessid);
					aO.setHidden("appId", t.config.appId);
					aO.setHidden("language_preference", t.language_preference);
					if (!L(aN.exclusionList)) {
						aO.setHidden("exclusionList", aN.exclusionList.join())
					}
					if (!L(aN.urlShortening)) {
						aO.setHidden("urlShortening", aN.urlShortening)
					}
					if (!L(aN.postTruncation)) {
						aO.setHidden("postTruncation", aN.postTruncation)
					}
					if (!L(aN.prependName)) {
						aO.setHidden("prependActor", aN.prependName)
					}
					if (!L(aN.primaryKey)) {
						aO.setHidden("primaryKey", aN.primaryKey);
						aO.setHidden("timestamp", aN.timestamp);
						aO.setHidden("signature", aN.signature)
					}
					aO.setHidden("xdReceiver", t.config.xdReceiver);
					aO.setHidden("callback", aK);
					aO.setHidden("loginCallbackUrl", t.config.loginCallbackUrl);
					aO.setTarget(aE);
					aO.submit();
					h(aI, aF)
				};
				if (t.config.noXdReceiver) {
					aM( {
						sessid : null
					})
				} else {
					M("popup_session", {}, aM)
				}
			}
			aH.show();
			return false
		},
		clearSocialCookies : function(aE) {
			if (!L(aE)) {
				if (!aA(aE) && !O.test(aE)) {
					throw new Error("The dest must be an absolute URL")
				}
				var aD = new RegExp("^https?://" + au(ab.location.host) + "/");
				if (!aA(aE) && !aD.test(aE)) {
					throw new Error(
							"dest host does not match the current page.")
				}
			}
			var aH = t.config.appUrlPrefix + "social/logout";
			var aG = new K(aH);
			aG.setHidden("appId", t.config.appId);
			var aF = new ak();
			aG.setTarget(aF.getName());
			if (!L(aE)) {
				aF.addOnloadListener(function() {
					a.top.location.href = aE
				})
			}
			aG.submit();
			return false
		}
	};
	aB.Activity = function(aE, aF, aD) {
		if (!av(aE)) {
			throw new Error("a non-null share_display string is required.")
		}
		this.share_display = aE;
		if (!av(aF)) {
			throw new Error("a non-null action string must be provided.")
		}
		this.action = aF;
		if (!av(aD) || !aC.test(aD)) {
			throw new Error("a valid url must be provided.")
		}
		this.url = aD;
		this.provider_urls = {};
		this.title = null;
		this.description = null;
		this.user_generated_content = null;
		this.properties = {};
		this.action_links = [];
		this.media = null
	};
	aB.Activity.prototype = {
		setTitle : function(aD) {
			if (!av(aD)) {
				throw new Error("title must be a string")
			}
			this.title = aD
		},
		setDescription : function(aD) {
			if (!av(aD)) {
				throw new Error("description must be a string")
			}
			this.description = aD
		},
		setUserGeneratedContent : function(aD) {
			if (!av(aD)) {
				throw new Error("user_generated_content must be a string")
			}
			this.user_generated_content = aD
		},
		addActionLink : function(aE, aD) {
			if (!av(aD) || !aC.test(aD)) {
				throw new Error("a valid url must be provided.")
			}
			this.action_links.push( {
				text : aE,
				href : aD
			})
		},
		addTextProperty : function(aD, aE) {
			if (!av(aD) || !av(aE)) {
				throw new Error("The name and text must be strings")
			}
			this.properties[aD] = aE
		},
		addLinkProperty : function(aE, aF, aD) {
			if (!av(aE) || !av(aF)) {
				throw new Error("The name and text must be strings")
			}
			if (!av(aD) || !aC.test(aD)) {
				throw new Error("a valid url must be provided.")
			}
			this.properties[aE] = {
				text : aF,
				href : aD
			}
		},
		setMediaItem : function(aD) {
			this.media = aD.toMediaArray()
		},
		addProviderUrl : function(aE, aD) {
			if (!av(aE)) {
				throw new Error("a valid provider must be provided.")
			}
			if (!av(aD) || !aC.test(aD)) {
				throw new Error("a valid url must be provided.")
			}
			this.provider_urls[aE] = aD
		}
	};
	aB.Mp3MediaItem = function(aG, aF, aD, aE) {
		if (!av(aG) || !O.test(aG)) {
			throw new Error("The src must be a valid url")
		}
		this.type = "mp3";
		this.src = aG;
		if (av(aF)) {
			this.title = aF
		}
		if (av(aD)) {
			this.artist = aD
		}
		if (av(aE)) {
			this.album = aE
		}
	};
	aB.Mp3MediaItem.prototype = {
		toMediaArray : function() {
			return [ this ]
		},
		setTitle : function(aD) {
			this.title = aD
		},
		setArtist : function(aD) {
			this.artist = aD
		},
		setAlbum : function(aD) {
			this.album = aD
		}
	};
	aB.VideoMediaItem = function(aE, aD, aF, aG) {
		if (!av(aE) || !O.test(aE)) {
			throw new Error("video_src must be a valid url")
		}
		if (!av(aD) || !O.test(aD)) {
			throw new Error("preview_img must be a valid url")
		}
		this.type = "video";
		this.video_src = aE;
		this.preview_img = aD;
		if (av(aF)) {
			if (!aC.test(aF)) {
				throw new Error("video_link must be a valid url if provided")
			}
		}
		if (av(aG)) {
			this.video_title = aG
		}
	};
	aB.VideoMediaItem.prototype = {
		toMediaArray : function() {
			return [ this ]
		},
		setVideoLink : function(aD) {
			if (!av(aD) || !aC.test(aD)) {
				throw new Error("video_link must be a valid url")
			}
		},
		setVideoTitle : function(aD) {
			this.video_title = aD
		}
	};
	aB.FlashMediaItem = function(aH, aI, aG, aE, aF, aD) {
		if (!av(aH) || !O.test(aH)) {
			throw new Error("swfsrc must be a valid url")
		}
		if (!av(aI) || !O.test(aI)) {
			throw new Error("preview_img must be a valid url")
		}
		this.type = "flash";
		this.swfsrc = aH;
		this.imgsrc = aI;
		if (av(aG) || I(aG)) {
			this.width = "" + aG
		}
		if (av(aE) || I(aE)) {
			this.height = "" + aE
		}
		if (av(aF) || I(aF)) {
			this.expanded_width = "" + aF
		}
		if (av(aD) || I(aD)) {
			this.expanded_height = "" + aD
		}
	};
	aB.FlashMediaItem.prototype = {
		toMediaArray : function() {
			return [ this ]
		},
		setWidth : function(aD) {
			if (!av(aD) && !I(aD)) {
				throw new Error("width must be a number")
			}
			this.width = "" + aD
		},
		setHeight : function(aD) {
			if (!av(aD) && !I(aD)) {
				throw new Error("height must be a number")
			}
			this.height = "" + aD
		},
		setExpandedWidth : function(aD) {
			if (!av(aD) && !I(aD)) {
				throw new Error("expanded_width must be a number")
			}
			this.expanded_width = "" + aD
		},
		setExpandedHeight : function(aD) {
			if (!av(aD) && !I(aD)) {
				throw new Error("expanded_height must be a number")
			}
			this.expanded_height = "" + aD
		}
	};
	aB.ImageMediaCollection = function() {
		this.images = []
	};
	aB.ImageMediaCollection.prototype = {
		toMediaArray : function() {
			return this.images
		},
		addImage : function(aE, aD) {
			if (this.images.length >= 5) {
				throw new Error("Cannot have more than 5 images.")
			}
			if (!av(aE) || !O.test(aE)) {
				throw new Error("src must be a valid url")
			}
			if (!av(aD) || !aC.test(aD)) {
				throw new Error("href must be a valid url")
			}
			this.images.push( {
				type : "image",
				src : aE,
				href : aD
			})
		}
	};
	ac = function() {
		this.appId = null;
		this.xdReceiver = null;
		this.appUrlPrefix = null;
		this.error = null;
		this.tokenCallbackUrl = null;
		this.loginCallbackUrl = null
	};
	ac.prototype = {
		initialize : function(aF, aE, aG, aD) {
			this.appId = aF;
			this.xdReceiver = aE;
			this.tokenCallbackUrl = aG;
			this.loginCallbackUrl = aD
		},
		setError : function(aD) {
			this.error = aD
		},
		hasError : function() {
			return !aA(this.error)
		}
	};
	if ((L(t.config)) || !t.config) {
		t.config = new ac()
	}
	appUrlPrefixCallbacks = [];
	an = function(aD) {
		if (aA(t.config.appUrlPrefix)) {
			appUrlPrefixCallbacks.push(aD)
		} else {
			aD()
		}
	};
	t.loadAndRun = function(aD, aG) {
		var aF = t.config.xdReceiver;
		var aE = {
			success : function(aH) {
				an(aG)
			},
			failure : function() {
				t.config.setError("unable to load " + aF);
				an(aG)
			}
		};
		if (N(aD, "Social")) {
			j.fetch(aF, aE)
		} else {
			aE.success()
		}
	};
	t.init = function(aG, aM) {
		var aP, aI, aN, aJ, aD, aL, aK, aH = null, aO = null, aE = null, aF = ab.location;
		if (B(aG)) {
			aP = aG.appId;
			aI = aG.xdReceiver;
			aH = aG.rpxUrlPrefix;
			aO = aG.tokenCallbackUrl;
			aE = aG.loginCallbackUrl ? aG.loginCallbackUrl : null
		} else {
			aP = aG;
			aI = aM
		}
		if (L(aI)) {
			aI = aF.protocol + "//" + aF.host + "/rpx_xdcomm.html"
		} else {
			if (O.test(aI)) {
				aN = new RegExp("^https?://" + au(aF.host) + "/");
				if (!aN.test(aI)) {
					throw new Error(
							"RPXNow:init: xdReceiver host does not match.")
				}
			} else {
				if (az.test(aI)) {
					aI = aF.protocol + "//" + aF.host + aI
				} else {
					throw new Error(
							"RPXNow:init: xdReceiver must be either an absolute URL or a relative URL path starting with /.")
				}
			}
		}
		if (aH) {
			t.RPX_URL_PREFIX = aH
		}
		t.config.initialize(aP, aI, aO, aE);
		aK = t.RPX_URL_PREFIX.replace(/^https?/, l);
		aD = aK + "jsapi/v3/base_url";
		aD += "?appId=" + aP;
		aD += "&xdReceiver=" + a.escape(aI);
		aL = R("script");
		aL.src = aD;
		aL.type = "text/javascript";
		ab.body.appendChild(aL)
	};
	t._base_cb = function(aF, aE) {
		if (aF) {
			t.config.appUrlPrefix = aE
		} else {
			t.config.setError(aE)
		}
		var aD = appUrlPrefixCallbacks.shift();
		while (aj(aD)) {
			aD();
			aD = appUrlPrefixCallbacks.shift()
		}
	};
	t.loaded = false;
	t.show = function() {
		t.show_on_load = true
	};
	t.always_open = false;
	t.overlay = false;
	t.language_preference = "en";
	t.default_provider = null;
	t.lso_submit_action = null;
	t.token_url = null;
	t.realm = null;
	t.domain = null;
	t.flags = null;
	t.bp_channel = null;
	t.email = null;
	t.openid_proxy_url = null;
	t.ssl = null;
	t._frame_count = (new Date()).getTime();
	u = function() {
		var aD = t._frame_count += 1;
		return "janrain_" + aD
	};
	ad = [ "token_url", "language_preference", "user_identifier", "flags",
			"bp_channel", "default_provider", "email", "openid_proxy_url" ];
	Y = function(aE, aG) {
		var aL, aI, aJ, aF, aK, aD;
		if (!O.test(aE)) {
			f(aE);
			f("Error - token_url must be an absolute URL with no fragment.")
		}
		aL = t.RPX_URL_PREFIX.split("/")[2];
		aI = null;
		if (t.rp_id) {
			aI = t.rp_id
		} else {
			if (t.domain) {
				aL = t.domain
			} else {
				if (t.realm) {
					if (t.realm.match(/\./)) {
						aL = t.realm
					} else {
						aL = t.realm + "." + aL
					}
				} else {
					if (aG) {
						aL = aG
					}
				}
			}
		}
		aJ = new z();
		aJ.add("token_url", aE);
		aF = aA(t.ssl) ? l : (t.ssl ? "https" : "http");
		aK = aF + "://" + aL + "/openid/embed?";
		if (aI) {
			aJ.add("rp_id", aI)
		}
		for (aD = 0; aD < ad.length; aD++) {
			var aH = ad[aD];
			if (aH !== "token_url" && t[aH]) {
				aJ.add(aH, t[aH])
			}
		}
		return aK + aJ.toString()
	};
	c = {
		bg : "?????????",
		cs : "Nacítání",
		da : "Indlæser",
		de : "Lade",
		el : "loading",
		en : "Loading",
		es : "Cargando",
		et : "Laetakse",
		fi : "Ladataan",
		fr : "Chargement",
		hr : "Ucitavanje",
		hu : "Betöltés",
		it : "Caricamento",
		ja : "????????",
		ko : "??",
		nl : "Laden",
		no : "Laster",
		pl : "Loading",
		pt : "Carregando",
		"pt-BR" : "Carregando",
		ro : "Încarcare",
		ru : "????????",
		sr : "Ucitavam",
		"sv-SE" : "Laddar",
		uk : "????????????",
		vi : "Ðang t?i",
		zh : "???",
		"zh-CHT" : "???"
	};
	b("load", a, function() {
		var aE, aG, aH, aD, aF;
		aF = function(aJ) {
			var aM, aL, aI, aK;
			aI = aJ.href;
			aK = aI.match(/https?:\/\/([^\/]+)/);
			if (!t.token_url) {
				aM = T(aI).token_url
			}
			if (aK !== null) {
				aL = aK[1]
			}
			aJ.onclick = function() {
				t.show(aM, aL);
				return false
			}
		};
		t.show = function(aL, aQ) {
			var aM, aS, aK, aJ, aN, aO, aR, aP, aI;
			if (P.currentInstance !== null) {
				return false
			}
			if (L(aL)) {
				aL = t.token_url
			}
			aR = c[t.language_preference];
			if (!aR) {
				aR = c.en
			}
			aM = 373;
			aS = 265;
			aK = u();
			aJ = R("div");
			aO = new P(aJ, aM, aS);
			ay(aJ, aK, aM, aS, "bg_auth");
			aJ.style.lineHeight = aS + "px";
			aN = R("span");
			aN.appendChild(ab.createTextNode(aR + "..."));
			aJ.appendChild(aN);
			aP = ab.getElementById(aK);
			aP.style.marginTop = "12px";
			h(aP, aN);
			aO.show();
			aI = Y(aL, aQ);
			aP.contentWindow.location.replace(aI);
			if (!aL) {
				f("Error - RPXNOW.token_url is undefined.")
			}
			return false
		};
		aG = ab.getElementsByTagName("a");
		aH = new RegExp("(^|\\s)rpxnow(\\s|$)");
		for (aE = 0; aE < aG.length; aE++) {
			aD = aG[aE];
			if (aH.test(aD.className)) {
				aF(aD)
			}
		}
		if (t.show_on_load || t.always_open) {
			t.show()
		}
	});
	a.RPXNOW = t
}(this));
