var llwin = null;
var gp = "/guest";
var mp = "/member";
var jsid = ";jsessionid=";
var ll = "_lavalife";

function focusLL (url) {
   try {
	var w = getLLTop();
	if (w && getLLApp(w)) { 
		w.focus();
		return;
	}
	// no opener or it is not ours - popup lavalife
	popLL(url);
   } catch (error) {
	popLL(url);
   }
}
function goTopLL (url, gUrl, mUrl) {
   try {
	var w = getLLTop();
	if (w) {
		var wApp =  getLLApp(w);	
		if (gp == wApp) {
			if (gUrl != null && gUrl != "") w.location = gUrl;
			w.focus();
			return;
		} else if (mp == wApp) {
			if (mUrl != null && mUrl != "") w.location = mUrl;
			w.focus();
			return;	
		}
	}
	// no opener or it is not ours - popup lavalife
	popLL(url);
   } catch (error) {
	popLL(url);
   }
}
function goLL (url, gUrl, gParams, mUrl, mParams) {
   try {
	var w = getLLBody();
	if (w) {
		var wApp =  getLLApp(w);
		var wSid = getLLSession(w);
		if (gp == wApp) {
			if (gUrl != null && gUrl != "") w.location = getLLAppPath(w, gp) + gUrl + wSid + gParams;
			w.focus();
			return;			
		} else if (mp == wApp) {
			if (mUrl != null && mUrl != "") w.location = getLLAppPath(w, mp) + mUrl + wSid + mParams;
			w.focus();
			return;	
		}
	}
	// we couldn't find wpbody - try top if it is ours
	w = getLLTop();
	if (w && getLLApp(w)) {
		w.location = url;
		w.focus();
		return;
	}
	// no opener or it is not ours - popup lavalife
	popLL(url);
   } catch (error) {
	popLL(url);
   }
}
function popLL(url) {
	llwin = window.open(url, ll);
	llwin.focus();
}
function getLLBody() {
	try {
		if (!llwin) llwin = this.opener.top;
		if (!llwin) return null;
		return llwin.top.wpbody;
	} catch (error) {
		return null;
	} 
}
function getLLTop() {   
	try {
		if (!llwin) llwin = this.opener.top;
		return llwin;
	} catch (error) {
		return null;
	} 
}
function getLLApp(w) {
	try {
		if (!w || !w.location) return null;
		var whref = w.location.href;
		return (whref.indexOf(gp) != -1) ? gp : ( (whref.indexOf(mp) != -1) ? mp : null );
	} catch (error) {
		return null;
	} 
	
}
function getLLAppPath(w, apType) {
	try {
		if (!w || !w.location || apType == null || apType == "") return "";
		var whref = w.location.href;
		return whref.substring(0, whref.indexOf(apType)) + apType;
	} catch (error) {
		return "";
	} 
	
}
function getLLSession(w) {
	try {
		if (!w || !w.location) return "";
		var whref = w.location.href;

		var idx = whref.indexOf(jsid);
		if (idx > 0) {
			var eidx = whref.indexOf("?", idx);
			if (eidx == -1) eidx = whref.length;
			return whref.substring(idx, eidx);
		}
		return "";
	} catch (error) {
		return "";
	} 
}
