window.loginRegister = {};
window.loginRegister = {
	"in_ajax":"0",
	"validateTimer":"0",
	"register_email":"",
	"register_username":"",
	"login_user":"",
	"curr_container":"",
	"callback":"",
	"domain":".grubstreet.com",
	"nymag_domain":".nymag.com"
}

// Read the cookie
function readCookie(name) {
	var needle = name + "=";
	var cookieArray = document.cookie.split(';');
	for(var i=0;i < cookieArray.length;i++) {
		var pair = cookieArray[i];
		while (pair.charAt(0)==' ') {
			pair = pair.substring(1, pair.length);
		}
		if (pair.indexOf(needle) == 0) {
			return pair.substring(needle.length, pair.length);
		}
	}
	return null;
}

function eraseCookie(name, domain) {
	setCookie(name,"",-1, domain);
}

// Set the cookie
function setCookie(name, value, days, domain) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = ";expires="+date.toGMTString();
	} else {
		expires = "";
	}
	if(domain) var dom = ";domain="+domain;
	else dom="";
	document.cookie = name+"="+value+expires+dom+";path=/;";
}


/*
	Membership-related functions
*/

function isLoggedInUser() {
	var session = readCookie("nymag_session");
	var session_state = readCookie("nymag_session_state");
	return (session && session_state) ? true : false;
}

function getUserName() {
	var name = readCookie("nymag_session_user");
	return isLoggedInUser() ? unescape(readCookie("nymag_session_user")) : "";
}

function getUserId() {
	return isLoggedInUser() ? readCookie("nymag_session_user_id") : "";
}

function updateLoginMessage() {
	var logged_in = isLoggedInUser();

	var user_name = document.getElementById("user_name");
	if (user_name) user_name.innerHTML = getUserName();

	var logged_out_bar = document.getElementById("logged_out_bar");
	if (logged_out_bar) {
		logged_out_bar.style.display = logged_in ? "none" : "block";
	}

	var logged_in_bar = document.getElementById("logged_in_bar");
	if (logged_in_bar) {
		logged_in_bar.style.display = logged_in ? "block" : "none";
	}
}

function logout(){
	eraseCookie("nymag_session_user", window.loginRegister.domain);
	eraseCookie("nymag_session_user_id", window.loginRegister.domain);
	eraseCookie("nymag_session_remember_me", window.loginRegister.domain);
	eraseCookie("nymag_session_state", window.loginRegister.domain);
	eraseCookie("nymag_session", window.loginRegister.domain);

	updateLoginMessage();
	
	var iframe = $("<iframe src='' id='cookie_iframe' style='height: 1px; width: 1px; visibility: hidden;'></iframe>");
	iframe.attr("src","https://secure" + window.loginRegister.nymag_domain + "/logout/remove_cookies/?domain=" + window.loginRegister.nymag_domain);
	$("body").append(iframe);
	setTimeout("$('#cookie_iframe').remove()", 5000);
	
	return true;
}



//Initialize Lightbox Popup
function initPopup(){
	$("#popup-lightbox").jqm({
		modal: true,
		onShow:  function(h){
			if($.browser.msie){
				$(h.w).css("left",document.getElementById("wrap").offsetLeft+44);
				$(h.w).css("top",document.documentElement.scrollTop);
			} else {
				$(h.w).css("top",window.pageYOffset);
			}
			$(h.w).show();
		}
	});
	if($.browser.msie && (navigator.userAgent.search("MSIE 8.0") < 0)){
		$("#popup-lightbox").insertBefore("#wrap");
		$("#mast #popup-lightbox").remove();
	}
}

// Load Register Markup
function loadRegister(container, callback){
	var validateTimer = window.loginRegister.validateTimer;
	$("#popup-lightbox").html("");
	window.loginRegister.curr_container = container;
	window.loginRegister.callback = callback;
		
	$popup = $(container);
	if(container=="#popup-lightbox") $popup.jqmShow();
	$popup.load("/includes/components/registration/registrationform.txt", function(){
		getNewCaptcha();
		$("#id_captcha").origText();
		var input_wrp = $("div.input-wrp",$popup);
		$("input[type=text],input[type=password]",input_wrp).keydown(function(e){
			if(e.keyCode != 9){
				clearTimeout(validateTimer);
				validateTimer = 0;
			}
		}).keyup(function(e){
			if(e.keyCode != 9){
				var func = "validateField";
				if((this.id=='id_membername') || (this.id=='id_email_address')) func="validateAjax";
				if(validateTimer==0) validateTimer = setTimeout(func+"('" + this.id + "')",1500);
			}
		}).blur(function(){
			if(this.value != ''){
				clearTimeout(validateTimer);
				validateTimer = 0;
				var func = "validateField";
				if((this.id=='id_membername') || (this.id=='id_email_address')) func="validateAjax";
				eval(func+"('" + this.id + "')");
			} else {
				$("#" + this.id.substring(3) + "_status").removeClass("status-error").removeClass("status-ok").html("");
				clearTimeout(validateTimer);
				validateTimer = 0;
			}
		});
		$("h5.closelightbox",$popup).click(function(){ 
			if(window.loginRegister.curr_container=="#popup-lightbox") $popup.jqmHide();
			else closeLoginPanel();
		});
		$("#submit1").css("cursor","pointer").click(submitRegister);
	});
	
	$(document).ready(function(){
		mp_setMetadata({'content.hierarchy' : "Service:Membership"});
		mp_setMetadata({'content.hierarchy.title' : "Registration & Member Center"});
		mp_setMetadata({'content.pagename' : "https://secure" +  window.loginRegister.domain + "/registration/lightbox"});
		mp_pageView();
	});
	
	return false;
}

//Load Login Markup
function loadLogin(container, callback){
	$("#popup-lightbox").html("");
	window.loginRegister.curr_container = container;
	window.loginRegister.callback = callback;
	
	if(callback && isLoggedInUser()){
		callback();
		return false;
	} 
	
	$popup = $(container);
	if(container=="#popup-lightbox") $popup.jqmShow();
	$popup.load("/includes/components/registration/login.txt", function(){
		$("h5.closelightbox",$popup).click(function(){ 
			if(window.loginRegister.curr_container=="#popup-lightbox") $popup.jqmHide();
			else closeLoginPanel();
		});
		
		$(".form-wrp a",$popup).click(function(){ loadForgotPass(container, callback); return false; });
		$("#register-now img.register-lightbox",$popup).click(function(){ return loadRegister(container, callback) });
	});
	
	$(document).ready(function(){
		mp_setMetadata({'content.hierarchy' : "Service:Membership"});
		mp_setMetadata({'content.hierarchy.title' : "Login"});
		mp_setMetadata({'content.pagename' : "https://secure" +  window.loginRegister.domain + "/login/lightbox"});
		mp_pageView();
	});
		
	return false;
}

//Load Login Markup
function loadForgotPass(container, callback){
	$("#popup-lightbox").html("");
	window.loginRegister.curr_container = container;
	window.loginRegister.callback = callback;
	
	$popup = $(container);
	if(container=="#popup-lightbox") $popup.jqmShow();
	$popup.load("/includes/components/registration/forgot.txt", function(){
		$("h5.closelightbox",$popup).click(function(){ 
			if(window.loginRegister.curr_container=="#popup-lightbox") $popup.jqmHide();
			else closeLoginPanel();
		});
		$("#register-now img.register-lightbox",$popup).click(function(){ return loadRegister(container, callback) });
		$("#submit1").css("cursor","pointer").click(submitForgotPass);
	});
	
	$(document).ready(function(){
		mp_setMetadata({'content.hierarchy' : "Service:Membership"});
		mp_setMetadata({'content.hierarchy.title' : "Forgot Password"});
		mp_setMetadata({'content.pagename' : "https://secure" +  window.loginRegister.domain + "/forgot-password/lightbox"});
		mp_pageView();
	});
	
	return false;
}

$(function() {
	$("a.register-lightbox").unbind("click").click(function(){ return loadRegister("#popup-lightbox") });
	$("a.logout-ajax").unbind("click").click(function(){ logout(); return false; 	});
});

function getNewCaptcha(){
	$(window.loginRegister.curr_container + " img.register-ajax").show();
	$.getJSON('https://secure' +  window.loginRegister.nymag_domain + '/get_captcha_id/?callback=?');
}

// Newsletter Callback Function
function newsletterSub(data) {
	$(window.loginRegister.curr_container + " img.register-ajax").hide();
	if(data.status=="0"){
		$(window.loginRegister.curr_container).load(
			"/includes/components/registration/newsletterconfirm.txt",
			function(){
				$("#newsletter-confirm-litebx h5.closelightbox").click(function(){ 
					if(window.loginRegister.curr_container=="#popup-lightbox") closeLightbox();
					else closeLoginPanel();
					
					callback();
				});
			}
		);
		$(document).ready(function(){
			mp_setMetadata({'content.hierarchy' : "Service:Membership"});
			mp_setMetadata({'content.hierarchy.title' : "Newsletter Thank You"});
			mp_setMetadata({'content.pagename' : "https://secure" +  window.loginRegister.domain + "/newsletter/thankyou"});
			mp_pageView();
		});

	}
}

// Register Callback Function
function registerValidate(data) {
	window.loginRegister.in_ajax = 0;
	if(data.field != "submit"){
		if(data.status=="0") $("#" + data.field + "_status").html("OK").removeClass("status-error").addClass("status-ok");
		else $("#" + data.field + "_status").html(data.message).removeClass("status-error").addClass("status-error");
	} else { 
		$(window.loginRegister.curr_container + " img.register-ajax").hide();
		if(data.status=="0"){
			 $(window.loginRegister.curr_container).load("/includes/components/registration/newsletterform.txt",function(){
				setCookie(data.user_id_cookie_name, data.user_id_cookie_value, ((data.user_id_cookie_expiration/60)/60)/24, window.loginRegister.domain);
				setCookie(data.session_cookie_name, data.session_cookie_value, ((data.session_cookie_expiration/60)/60)/24, window.loginRegister.domain);
				setCookie(data.remember_me_cookie_name, data.remember_me_cookie_value, ((data.remember_me_cookie_expiration/60)/60)/24,  window.loginRegister.domain);
				setCookie(data.state_cookie_name, data.state_cookie_value, ((data.state_cookie_expiration/60)/60)/24,  window.loginRegister.domain);
				setCookie(data.membername_cookie_name, data.membername_cookie_value, ((data.membername_cookie_expiration/60)/60)/24, window.loginRegister.domain);

				var iframe = $("<iframe src='' id='cookie_iframe' style='height: 1px; width: 1px; visibility: hidden;'></iframe>");
				iframe.attr("src","https://secure" + window.loginRegister.nymag_domain + "/login/set_cookies/?user_id=" + data.user_id_cookie_value + ";session=" + data.session_cookie_value + ";remember_me=" + data.remember_me_cookie_value + ";state=" + data.state_cookie_value + ";membername=" + data.membername_cookie_value + ";domain=" + window.loginRegister.nymag_domain);
				$("body").append(iframe);
				setTimeout("$('#cookie_iframe').remove()", 5000); 

				$("#newsletter_email_address").val(window.loginRegister.register_email);
				$("#reg-newsletter-litebx h5.closelightbox").unbind("click").click(function(){ 
					if(window.loginRegister.curr_container=="#popup-lightbox") closeLightbox();
					else closeLoginPanel();
				
					callback();
				});
				$("#submit1").click(function(){ 
					if($("#newsletter_130")[0].checked || $("#newsletter_120")[0].checked || $("#newsletter_40")[0].checked || $("#newsletter_20")[0].checked){
						$("#reg_newsletter_status").hide();
						$(window.loginRegister.curr_container + " img.register-ajax").show();
						$.getJSON("https://secure" +  window.loginRegister.domain + "/register/newsletter_process?callback=?&"+$("#reg-newsletter").serialize());
					}
					else
						$("#reg_newsletter_status").html("You must select a newsletter to subscribe").show();
				});
			});
			$(document).ready(function(){
				mp_setMetadata({'content.hierarchy' : "Service:Membership"});
				mp_setMetadata({'content.hierarchy.title' : "Newsletter Subscription"});
				mp_setMetadata({'content.pagename' : "https://secure" +  window.loginRegister.domain + "/newsletter/subscribe"});
				mp_pageView();
			});
		}
		else if(data.status=="4") $("#captcha_status").html(data.message).removeClass("status-ok").addClass("status-error");
	}
}

function closeLightbox(){
	$(window.loginRegister.curr_container).jqmHide();
	updateLoginMessage();
}

function callback(){
	if(typeof window.loginRegister.callback != "undefined"){
		if(typeof window.loginRegister.callback=="string"){
			document.location.href = window.loginRegister.callback;
		} else {
			window.loginRegister.callback.call(this);
		}
	}
}

// Login Callback Function
function loginValidate(data) {
	var isPopup = ((window.loginRegister.curr_container=="#popup-lightbox") || (window.loginRegister.curr_container=="#login-wrp")) ? true : false;
	window.loginRegister.in_ajax = 0;
	$(window.loginRegister.curr_container + " img.register-ajax").hide();
	if(data.status=="0"){
		setCookie(data.user_id_cookie_name, data.user_id_cookie_value, ((data.user_id_cookie_expiration/60)/60)/24,  window.loginRegister.domain);
		setCookie(data.session_cookie_name, data.session_cookie_value, ((data.session_cookie_expiration/60)/60)/24,  window.loginRegister.domain);
		setCookie(data.remember_me_cookie_name, data.remember_me_cookie_value, ((data.remember_me_cookie_expiration/60)/60)/24,  window.loginRegister.domain);
		setCookie(data.state_cookie_name, data.state_cookie_value, ((data.state_cookie_expiration/60)/60)/24,  window.loginRegister.domain);
		setCookie(data.membername_cookie_name, data.membername_cookie_value, ((data.membername_cookie_expiration/60)/60)/24,  window.loginRegister.domain);
		
		var iframe = $("<iframe src='' id='cookie_iframe' style='height: 1px; width: 1px; visibility: hidden;'></iframe>");
		iframe.attr("src","https://secure" + window.loginRegister.nymag_domain + "/login/set_cookies/?user_id=" + data.user_id_cookie_value + ";session=" + data.session_cookie_value + ";remember_me=" + data.remember_me_cookie_value + ";state=" + data.state_cookie_value + ";membername=" + data.membername_cookie_value + ";domain=" + window.loginRegister.nymag_domain);
		$("body").append(iframe);
		setTimeout("$('#cookie_iframe').remove()", 5000); 
		
		window.loginRegister.login_user = data.handle;

		if(isPopup){
			if(window.loginRegister.curr_container=="#popup-lightbox")
				$(window.loginRegister.curr_container + " div.head").css("background-image","url(/gfx/sect/registration/head-login-thanks-bg.png)");
			else
				$(window.loginRegister.curr_container + " div.head").css("background-image","url(/gfx/sect/registration/head-login-thanks-bg-slideshow.png)");
				$(window.loginRegister.curr_container + " div.form-wrp").addClass("thanks").html("<h4>You are now logged in.</h4> <a href='#'>Return to page &raquo;</a>");
				$(window.loginRegister.curr_container + " #register-now").remove();
				$(window.loginRegister.curr_container + " h5.closelightbox").unbind("click").click(function(){ 
				if(window.loginRegister.curr_container=="#popup-lightbox") closeLightbox();
				else closeLoginPanel();
				
				clearTimeout(validateTimer);
				callback();
			});
			$(window.loginRegister.curr_container + " div.form-wrp a").click(function(){ 
				if(window.loginRegister.curr_container=="#popup-lightbox") closeLightbox();
				else closeLoginPanel();
			
				clearTimeout(validateTimer);
				callback();
			
				return false;
			});
			validateTimer = setTimeout(function(){ $(window.loginRegister.curr_container + " h5.closelightbox").click() }, 5000);
		} else {
			updateLoginMessage();
		}
		
		$(document).ready(function(){
			mp_setMetadata({'content.hierarchy' : "Service:Membership"});
			mp_setMetadata({'content.hierarchy.title' : "Login Thank You"});
			mp_setMetadata({'content.pagename' : "https://secure" +  window.loginRegister.domain + "/login/thankyou"});
			mp_pageView();
		});
		
	} else if(data.status=="2"){
		if(isPopup){ $("#login_status").html(data.message).removeClass("status-ok").addClass("status-error"); $("#password_status").html("").removeClass("status-ok"); }
		else show_error("Username and/or password are incorrect. Please try again. Did you <a href='#' onclick=\"return loadForgotPass('#popup-lightbox');\">forget your password</a>?");
	} else {
		show_error("Username and/or password are incorrect. Please try again. Did you <a href='#' onclick=\"return loadForgotPass('#popup-lightbox');\">forget your password</a>?");
	}
}

// Forgot Password Callback Function
function forgot_password(data) {
	window.loginRegister.in_ajax = 0;
	$(window.loginRegister.curr_container + " img.register-ajax").hide();
	if(data.status=="0"){
		if(window.loginRegister.curr_container=="#login-wrp")
			$(window.loginRegister.curr_container + " div.form-wrp").addClass("forgot-thanks").html("<h4>The password has been sent.</h4><p>Please check your inbox</p><img class='button' src='/gfx/sect/registration/btn-login-slideshow.png' alt='Login' />");
		else
			$(window.loginRegister.curr_container + " div.form-wrp").addClass("forgot-thanks").html("<h4>The password has been sent.</h4><p>Please check your inbox</p><img class='button' src='/gfx/sect/registration/btn-login.png' alt='Login' />");
		$(window.loginRegister.curr_container + " div.form-wrp img").click(function(){ 
			loadLogin(window.loginRegister.curr_container);
		});
	} else if(data.status=="2") $("#email_address_status").html(data.message).removeClass("status-ok").addClass("status-error");
}

function refreshCaptcha(data){
	$(window.loginRegister.curr_container + " img.register-ajax").hide();
	$("#captcha_img").attr("src","https://secure" +  window.loginRegister.nymag_domain + "/pycaptcha/"+data.id);
	$("#id_captcha_hidden").val(data.id);
}

// Validate fields with Ajax
function validateAjax(item){
	var value = $("#"+item).val();
	var name = item.substring(3);
	
	if( (value != '') && (window.loginRegister.in_ajax !=1)) {
		window.loginRegister.in_ajax = 1;
		var path = "";
		var params;
		switch(name){
			case "membername": path="https://secure" +  window.loginRegister.nymag_domain + "/check_username/json/?callback=?"; params={"membername":value}; break;
			case "email_address": path="https://secure" +  window.loginRegister.nymag_domain + "/check_email/json/?callback=?"; params={"email_address":value}; break;
		}
		$("#" + name + "_status").removeClass("status-error").removeClass("status-ok").html('<img src="/gfx/ico/ajax-load.gif" />');
		$.getJSON(path,params);
	} else {
		$("#" + name + "_status").removeClass("status-error").removeClass("status-ok").html("");
	}
}

// Validate Text Fields
function validateField(id){
	var item= $("#"+id);
	var regText="";
	var reg;
	
	var status = item.parent().next();
	var value = item.val();
	
	if(status.length == 0) status =item.parent().parent().next();
	if((item[0].id == "id_password") || (item[0].id == "id_zip")) status.html("").addClass("status-ok").removeClass("status-error");
	
	switch(item[0].id){
		case "id_membername": reg=/[A-Za-z0-9_]*/; regText="Membername Invalid"; break;
		case "id_email_address": reg=/^([a-z0-9_\-\.]+)@([a-z0-9_\-\.]+)\.([a-z]{2,5})$/i; regText="E-Mail Address Invalid."; break;
		case "id_password": reg=/^[A-Za-z0-9]*[0-9][A-Za-z0-9]*$/; regText="Password must contain at least 1 number."; break;
		case "id_zip": reg=/^\d{5}(-\d{4})?$/; regText="Zip Code Invalid."; break;
		case "id_captcha": return true; break;
		default: reg=""; regText=""; break;
	}
	
	if ((reg!="") && !eval(reg+".test(value)")){
		if(status.html() == "") status.html(regText).removeClass("status-ok").addClass("status-error");
		return false;
	}
	if(item[0].id == "id_password"){
		reg=/[A-Za-z0-9]{6,}$/;
		regText="Password must be at least 6 characters long.";
		if (!eval(reg+".test(value)")){
			if(status.html() == "") status.html(regText).removeClass("status-ok").addClass("status-error");
			return false;
		}
	}
	
	if(item[0].id == "id_confirm_password"){
		if($("#id_password").val()=='') return true;
		if($("#id_password").val() != $("#id_confirm_password").val()){
			$("#confirm_password_status").html("Confirmation password not the same.").removeClass("status-ok").addClass("status-error");
			return false;	
		} else {
			status.html("").addClass("status-ok").removeClass("status-error");
		}
	}

	if(value == ''){
		status.html("You must enter a value.").removeClass("status-ok").addClass("status-error");
		return false;
	}

	return true;
}

// Clicking Gender buttons on Register box
function genderClick(){
	$("#gender_status").html("Ok").addClass("status-ok").removeClass("status-error");
}

// Submit Function for Register
function submitRegister(){
	var error = false;

	var input_wrp = $(window.loginRegister.curr_container + " div.input-wrp");
	$("input[type=text],input[type=password]",input_wrp).each(function(){
		if(!validateField(this.id)) error = true;
	});
	
	$("#gender_status").html("").removeClass("status-error");
	if(!$("#id_gender_0")[0].checked && !$("#id_gender_1")[0].checked){
		error=true;
		$("#gender_status").html("Please select a gender.").removeClass("status-ok").addClass("status-error");
	} else {
		$("#gender_status").html("Ok").addClass("status-ok").removeClass("status-error");
	}
	
	$("#tos_status").html("").removeClass("status-error");
	if(!$("#id_tos")[0].checked){
		error=true;
		$("#tos_status").html("Required").removeClass("status-ok").addClass("status-error");
	}

	if(!error){
		window.loginRegister.login_user = $("#id_membername").val();
		window.loginRegister.register_email = $("#id_email_address").val();
		$(window.loginRegister.curr_container + " img.register-ajax").show();
		$.getJSON("https://secure" +  window.loginRegister.nymag_domain + "/register/register?callback=?&"+$("#reg-login-form").serialize());
	}
	
	return false;
}

//Submit Function for Login
function submitLogin(div){
	if(div=="#reg-login-form"){
		var error = false;
		if($("#id_login").val()==""){
			error=true;
			$("#login_status").html("Please enter your username/email.").removeClass("status-ok").addClass("status-error");
		} else {
			$("#login_status").html("Ok").addClass("status-ok").removeClass("status-error");
		}
	
		if($("#id_password").val()==""){
			error=true;
			$("#password_status").html("Please enter your password.").removeClass("status-ok").addClass("status-error");
		} else {
			$("#password_status").html("Ok").addClass("status-ok").removeClass("status-error");
		}

		if(!error){
			$(window.loginRegister.curr_container + " img.register-ajax").show();
			$.getJSON("https://secure" +  window.loginRegister.nymag_domain + "/login/json/?callback=?&"+$(div).serialize());
		}
	} else {
		window.loginRegister.curr_container = div;
		$.getJSON("https://secure" +  window.loginRegister.nymag_domain + "/login/json/?callback=?&"+$(div).serialize());
	}

	return false;
}

//Submit Function for Login
function submitForgotPass(){
	var error = false;
	var input_wrp = $(window.loginRegister.curr_container + " div.input-wrp");
	$("input[type=text],input[type=password]",input_wrp).each(function(){
		if(!validateField(this.id)) error = true;
		else $("#email_address_status").html("").addClass("status-ok").removeClass("status-error");
	});

	if(!error){
		window.loginRegister.login_user = $("#id_login").val();
		$(window.loginRegister.curr_container + " img.register-ajax").show();
		$.getJSON("https://secure" +  window.loginRegister.nymag_domain + "/send_password/json/?callback=?&"+$("#reg-login-form").serialize());
	} 

	return false;
}


//.toggleText
jQuery.fn.origText = function(a) {
	return this.each(function() {
		var t = this.value;
		$(this).bind("blur",function(){ if(this.value=="") this.value=t; });
		$(this).bind("focus",function(){ if(this.value==t) this.value=""; });
	});
};


/*
 * jqModal - Minimalist Modaling with jQuery
 *   (http://dev.iceburg.net/jquery/jqModal/)
 *
 * Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 * 
 * $Version: 07/06/2008 +r13
 */
(function($) {
$.fn.jqm=function(o){
var p={
overlay: 50,
overlayClass: 'jqmOverlay',
closeClass: 'jqmClose',
trigger: '.jqModal',
ajax: F,
ajaxText: '',
target: F,
modal: F,
toTop: F,
onShow: F,
onHide: F,
onLoad: F
};
return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;
H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};
if(p.trigger)$(this).jqmAddTrigger(p.trigger);
});};

$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');};
$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');};
$.fn.jqmShow=function(t){return this.each(function(){$.jqm.open(this._jqm,t);});};
$.fn.jqmHide=function(t){return this.each(function(){$.jqm.close(this._jqm,t)});};

$.jqm = {
hash:{},
open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z);
 if(c.modal) {if(!A[0])L('bind');A.push(s);}
 else if(c.overlay > 0)h.w.jqmAddClose(o);
 else o=F;

 h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;
 if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}}

 if(c.ajax) {var r=c.target||h.w,u=c.ajax,r=(typeof r == 'string')?$(r,h.w):$(r),u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u;
  r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});}
 else if(cc)h.w.jqmAddClose($(cc,h.w));

 if(c.toTop&&h.o)h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);	
 (c.onShow)?c.onShow(h):h.w.show();e(h);return F;
},
close:function(s){var h=H[s];if(!h.a)return F;h.a=F;
 if(A[0]){A.pop();if(!A[0])L('unbind');}
 if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();
 if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return F;
},
params:{}};
var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version == "6.0"),F=false,
i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),
e=function(h){if(ie6)if(h.o)h.o.html('<p style="width:100%;height:100%"/>').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);},
f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}},
L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);},
m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r;},
hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function() {
 if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});};
})(jQuery);
