
var uiDetected = false;
var bZgreetings = false;
var sDownloadTheme = "";
var oHtmlMenuCtl = {id:null};
var oCardData = {
	cardID:null,
	cardThumbnail:null,
	cardUrl:null,
	copyCode:null,
	c:null,
	assetId:""
};
var oEventData = {
	eventId: null,
	eventDate: null,
	categoryId: null,
	eventRecipientEmail: null
};

var oQSParams = {};

// TODO
// Make sure this id the correct way to handle uid
var uid = ( oToolbarController.sUID == null ) ? "" : oToolbarController.sUID;

/*
 * common functions
 */

//-- debug --//

function DEBUG( msg ){
	try {
		console.log(msg);
	} catch(ERR){}
}

function deleteCookie(name)
{
	cookieString = name+"="
	                + ";expires=Thu, 01-Jan-1970 00:00:01 GMT"
	                + ";path=/"
	                + ";domain=" + sDocumentDomain;
	document.cookie=cookieString;
}

function readCookie(name) {
 	var theCookie=""+document.cookie;
 	var ind=theCookie.indexOf(name + "=");
	if (ind!=-1) {
		var ind1=theCookie.indexOf(';',ind);
 		if (ind1==-1) ind1=theCookie.length; 
		var cookieData = unescape(theCookie.substring(ind+name.length+1,ind1));
		return cookieData;
	}
}

function getRedirectCookie()
{
	var redir_val = readCookie(sRedirectCookieName);
	if (redir_val != null && redir_val != "") {
		type_and_value=redir_val.split(":");
		if (type_and_value.length > 1) {
			type = type_and_value[0];
			// Redirect to a Card
			if (type == "c") {
				deleteCookie(sRedirectCookieName);
				window.location = "http://" + type_and_value[1];
			// Redirect to a retrieval
			} else if (type == "r") {
				deleteCookie(sRedirectCookieName);
				window.location = sPickupCardUrl + "?c=" + type_and_value[1];
			}//end if
		}//end if
	}//end if
}

function generateExternalObject(html,oContainer)
{
	if ( oContainer ){
		oContainer.innerHTML=html;
	} else {
		document.write(html);
	}
} 

//Smiley Poll popup. 
function poppoll(){window.open('http://polls.smileycentral.com/scpolls/getPoll.htm?poll=mfc','scpoll','width=300,height=350,scrollbars=1');}

//-- error tracking --//
function trackError(sMsg,sUrl,sLine)
{
	var errGifUrl = "http://image.imgfarm.com/images/nocache/tr/fw/mfc/error.gif";
	
	var sVer = ( oToolbarController.sVersion == null ) ? "" : oToolbarController.sVersion;
	var sUid = ( oToolbarController.sUID == null ) ? "" : oToolbarController.sUID;
	var sPid = ( oToolbarController.sPartnerID == null ) ? "" : oToolbarController.sPartnerID;
	var iType = ( oToolbarController.iToolbarType == null ) ? -1 : oToolbarController.iToolbarType;
	
	var url = errGifUrl + "?a=jserror" +
			  "&u=" + escape(sUid) +
			  "&msg=" + escape(sMsg) +
			  "&line=" + escape(sLine) +
			  "&url=" + escape(sUrl) +
			  "&t=" + escape(sVer) +
			  "&p=" + escape(sPid) +
			  "&i=" + iType;
	var imgPixel = new Image();
	imgPixel.src = url;
}

function showJSErrorDialog(sMsg,sUrl,sLine)
{
	trackError(sMsg,sUrl,sLine);
	return false; //returning true stops normal error dialog
}

window.onerror=showJSErrorDialog;

//--  --//

function showHideToggle(a_div, a_show){
	var thisDiv = '#' + a_div;
	var lessDiv = thisDiv + 'Less'; 
	var moreDiv = thisDiv + 'More'; 
	if(a_show){
		$(thisDiv).show(); 
		$(lessDiv).show();
		$(moreDiv).hide();
	}
	else{
		$(thisDiv).hide(); 
		$(moreDiv).show();
		$(lessDiv).hide();
	}
}

var CardThumbObject = {

	click: function(e, objCard) {
					
// card is the jQuery object of <div class="thumb"... />
// it contains all neccessary card params
		var card = objCard || $(this).parent().parent();		  
				
// check cardType to display preview as flash or img

		var swfStyle = {
			width: 400,
			height: 290
		};	
		if(card.attr("swfStyle") && card.attr("swfStyle") != "") {
			$.each(card.attr("swfStyle").split(";"), function(i, style) {
				style = style.split(":");					 
				swfStyle[style[0]] = style[1];
			});
		}
		//DEBUG(swfStyle);
		if (card.attr("cardType") == "2") {					
			var flashvars = {},
				params = {},
				attributes = {
				  	id: "previewImage",
				  	name: "previewImage"
				};
			$("#previewImage").hide().parent().find("img").remove();
			
			swfobject.embedSWF(card.attr("cardUrl"), "previewImage", swfStyle.width, swfStyle.height, "9.0.0", "expressInstall.swf", flashvars, params, attributes);
		} else {
			$("#previewImage")
				.hide()
				.parent()
					.find("img")
						.remove()
					.end()														
					.append("<img width='" + swfStyle.width + "' height='" + swfStyle.height + "' src='" + card.attr("cardUrl") + "' alt='' />");
		}			
				
// set some other preview stuff
		$("#card_preview .name")
			.text(card.attr("cardAltText"));
		$("#card_preview .cardDesc")
			.text(card.attr("cardDesc"));
					
// set quickpost params					
		$("#card_preview .quickPost a")
			.attr("cardID", card.attr("cardID"));
		$("#card_preview .quickPost a")
			.attr("cardUrl", card.attr("cardUrl"));
		$("#card_preview .quickPost a")
			.attr("cardType", card.attr("cardType"));				
		$("#card_preview .quickPost a")				
			.attr("signatureLink", card.attr("signatureLink"));
//set clicktracking for preview buttons
		var baseClickPath = card.attr("cardClickPath");
				
					
// set 'email' and 'copycode' link click function
		$("#card_preview .email a")
			.click( function(){
				//SendToCompose({cardID:card.attr("cardID"),cardThumbnail:card.attr("cardThumbUrl"),cardUrl:card.attr("cardUrl")});
				//DEBUG("location.href=/ecards/" + sComposeCardUrl+"?cardID="+card.attr("cardID"));
				urchinTracker('/clicks' +baseClickPath+'/email_button');
				location.href=card.attr("composeUrl");
			} );				
		$("#card_preview .copyCode a")
			.click( function(){												
				//SendToCompose({cardID:card.attr("cardID"),cardThumbnail:card.attr("cardThumbUrl"),cardUrl:card.attr("cardUrl"),action:"copyCode"});
				urchinTracker('/clicks' +baseClickPath+'/copy_code_button');
				location.href=card.attr("composeUrl")+"?copyCode=true";
			} );
		$("#card_preview .quickPost a")
			.click( function(){	
				urchinTracker('/clicks' +baseClickPath+'/quick_post_button');
			} );
// show the preview modal
			var modalStyle = {
				width: 402,
				height: 417
			};	
			if(card.attr("modalStyle") && card.attr("modalStyle") != "") {
				$.each(card.attr("modalStyle").split(";"), function(i, style) {
					style = style.split(":");					 
					modalStyle[style[0]] = style[1];
				});
			}

			$("#adDiv").hide();
			tb_show(null, '#TB_inline?width=' + (modalStyle.width || 402) + '&height=' + (modalStyle.height || 417) + '&inlineId=card_preview&modal=true', null);
			$("#TB_ajaxContent")
				.css({
					background: "White",
					border: "solid 2px #666666"
				})
				.find("a")
					.css({
						color: "#32859D"
					});		
		
	},

	init: function() {
		/*
		$(".card_tile .composeCardLink").each(function(i, link) {
			link = $(link);
			link.attr("href", link.attr("href") + "&partner=" + oToolbarController.sParentPartnerID + "&toolbarID=" + oToolbarController.sUID);
		});
		*/
		$(".magnifying_glass")
			.hover(
				function() {					
					$(this)
						.attr("src", "http://ak.imgfarm.com/images/mfc/v3/thumb/preview_option1_over.gif");						
				},
				function() {					
					$(this)
						.attr("src", "http://ak.imgfarm.com/images/mfc/v3/thumb/preview_option1.gif");								
				}
			)
			.click(CardThumbObject.click);

			
// use <div class="thumb" nopreview="true"> to disable preview on hover of thumb
		$(".card_tile .thumb").not("[nopreview]")
			.hover(
				function(){					
					$(this).find(".magnifier").show();
				},
				function(){					
					$(this).find(".magnifier").hide();
				}
			);
	}

};

var FilterObject = {

	init: function() {
	
		$("#filter .menuHeader").click(function(){
		$(this)
			.toggleClass("expanded")
			.next(".menuBody")
				.slideToggle(300);				       
		});
		
		//used for the modal pop ups
		$("#cardThumbnails div.thumbnail").mouseover(function(){
			$("#cardThumbnails div.thumbnailRollOver_" + $(this).attr('name')).show();
		});
		$("#cardThumbnails div.thumbnail").mouseout(function(){
			$("#cardThumbnails div.thumbnailRollOver_" + $(this).attr('name')).hide();
		});
		
		//used for rollovers on filter submit button
		$("#filter div.submitRollOver").mouseover(function(){ 
			$("#filter img.submitBackgroundImage").attr("src", "http://ak.imgfarm.com//images/mfc/v3/btn/signin_btn_rollover.gif");
		});
		$("#filter div.submitRollOver").mouseout(function(){
			$("#filter img.submitBackgroundImage").attr("src", "http://ak.imgfarm.com//images/mfc/v3/btn/signin_btn.gif");
		});
		
		$("#filter .submit_section .button").click(function() {		
			FilterObject.submitFilterForm();		
		});
		
		// Dynamic changing of click tags
		$('#filterPanel .menuHeader').bind("click", function(e){
			var jQElement = $(this);
			var path = jQElement.attr('clickPath');
			
			if(typeof(path) != "undefined"){
				
				if (path.indexOf('open') > 0){
					path = path.replace('open','close');
				}
				else {
					path = path.replace('close','open');
				}				
				jQElement.attr('clickPath',path);
			}
	    });
		
		// logic to open filters on page load
		if( $("#filter").find("input:checkbox:checked").length > 0) {
			$("#filter").find(".menuBody").show();
			$("#filter").find(".menuHeader").each( function(i){
				var jQElement = $(this);
				var path = jQElement.attr('clickPath');
				if(typeof(path) != "undefined"){
					path = path.replace('open','close');									
					jQElement.attr('clickPath',path);
				}
			
			});
		}
	},
	
	clearOptions: function(divName){
		$(divName).find("input").attr("checked", false);
	},
	
	selectOptions: function(divName){
		$(divName).find("input").attr("checked", true);
	},
	
	submitFilterForm: function(){
		var finalQueryString ="";
		var cardTypeExists = false;
		var personTypeExists = false;
		var isFirst = true;
		$('#cardTypeOptions input').each(function(){
			if($(this).attr('checked') == true){
				if(isFirst){
					finalQueryString = "?filters={\"Card%20Style\":[";
					finalQueryString += "\"" + $(this).attr('id') + "\"";
				}
				else{
					finalQueryString += ", \"" + $(this).attr('id') + "\""
				}
				isFirst=false;
				cardTypeExists = true;
			}
		});
	
		if(cardTypeExists){
			finalQueryString += "]"
		}
		
		var firstTrue = isFirst;
		isFirst = true;
		$('#personOptions input').each(function(){
			if($(this).attr('checked') == true){
				if(cardTypeExists && isFirst){
					finalQueryString +=";";
				}
				if(isFirst){
					if(firstTrue){
						finalQueryString += "?filters={\"Intended%20Recipient\":[";
						finalQueryString += "\"" + $(this).attr('id') + "\"";
					}
					else{
						finalQueryString += "\"Intended%20Recipient\":[";
						finalQueryString += "\"" + $(this).attr('id') + "\"";
					}
				}
				else{
					finalQueryString += ", \"" + $(this).attr('id') + "\""
				}
				
				isFirst=false;
				personTypeExists = true;
			}
		});
		if(personTypeExists){
			finalQueryString += "]";
		}
		if(personTypeExists || cardTypeExists){
			finalQueryString += "}";
		}	
		var x = window.location.href.split("?");	
		window.location.href = x[0] + finalQueryString;
	}
};

var LeftNavObject = {
	init: function() {
		$("#leftnav .cat_name").not(".cat_selected")
			.hover(
				function() {
					$(this).addClass("cat_selected");
				},
				function() {
					$(this).removeClass("cat_selected");
				}
			
			)
			.click(function() {
				window.location.href = $($(this).find("a")[0]).attr("href");
			});
		$("a[categoryKey]")	// PHOTO/POST CARD DHTML 		
			.click(function() {				
				$(".cat_section").hide();
				$("#" + $(this).attr("categoryKey"))
					.find(".card_tile")
						.show()
					.end()
					.find(".paging")
						.hide()
					.end()
					.fadeIn(200);
				$(this).parent().siblings().removeClass('selected');
				$(this).parent().addClass('selected');
			});
	},
	
	toggle: function(a_div, a_show) {
		var thisDiv = '#' + a_div,
			lessDiv = thisDiv + 'Less', 
			moreDiv = thisDiv + 'More'; 
		if(a_show){
			$(thisDiv).show(); 
			$(lessDiv).show();
			$(moreDiv).hide();
		}
		else{
			$(thisDiv).hide(); 
			$(moreDiv).show();
			$(lessDiv).hide();
		}
	}
};

var QuickPostObject = {
	network: null,
	config: {},
	//copyCodeSwf: '<object type="application/x-shockwave-flash" allowScriptAccess="always" align="middle" data=""><param name="allowScriptAccess" value="always" /><param name="movie" value="CARD_URL" /><param name="loop" value="true" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="wmode" value="transparent" /></object><br />',
	//copyCodeSwf: '<object type="application/x-shockwave-flash" allowScriptAccess="always" align="middle" data=""><param name="allowScriptAccess" value="always" /><param name="movie" value="CARD_URL" /><param name="loop" value="true" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="wmode" value="transparent" /></object><br />',
	
	copyCodeSwf: '<br /><object data="CARD_URL" name="cardMovie" id="cardMovie" type="application/x-shockwave-flash" height="400" width="550"><embed src="CARD_URL2" width="550" height="400" name="cardMovie" type="application/x-shockwave-flash"></embed></object><br />',
	copyCodeImg: '<br /><img src="IMG_URL" alt="" /><br />',
	copyCodeInput: "quickPostCode",
	signatureCode: '<a href="http://www.cardboiled.com/ecards/ComposeCard.jhtml?cardID=CARD_ID&partner=ZUzeb011_' + oToolbarController.sPartnerID + '&utm_campaign=mfc_pl&utm_source=SIGNATURE_LINK1"><img vspace="5" border="0" alt="" src="http://t.myfuncards.com/images/nocache/tr/mfc/rds/SIGNATURE_LINK2.gif" /></a>',
	

	init: function() {
		QuickPostObject.config = QuickPostObject.getWildfireConfig();	
		$(".quickPostLauncher")			
			.click(function() {
				QuickPostObject.launch($(this).attr("cardType"), $(this).attr("cardUrl"), $(this).attr("signatureLink"), $(this).attr("cardID"));
				if($(this).attr("urchin")) {
					urchinTracker($(this).attr("urchin"));
				}
				return false;			
			});
	},
	
	launch: function(cardType, cardUrl, signatureLink, cardID) {				
		tb_remove(null,true);
		if(cardID){
			if (cardType == "2") {
				$("#" + QuickPostObject.copyCodeInput).val(		
					QuickPostObject.copyCodeSwf.replace("CARD_URL", cardUrl).replace("CARD_URL2", cardUrl).replace("SIGNATURE_LINK", signatureLink)
					+
					QuickPostObject.signatureCode.replace("CARD_ID", cardID).replace("SIGNATURE_LINK1", signatureLink).replace("SIGNATURE_LINK2", signatureLink)
				);
			} else {
				$("#" + QuickPostObject.copyCodeInput).val(		
					QuickPostObject.copyCodeImg.replace("IMG_URL", cardUrl.replace(".swf", ".jpg")).replace("SIGNATURE_LINK", signatureLink)
					+
					QuickPostObject.signatureCode.replace("CARD_ID", cardID).replace("SIGNATURE_LINK1", signatureLink).replace("SIGNATURE_LINK2", signatureLink)
				);	
			}
		}
		$('#adDiv').show();
		setTimeout("QuickPostObject.openWildfire();", 1000);
	},
	
	getWildfireConfig: function(network){			
		network = QuickPostObject.network || "myspace,blogger,hi5,livejournal,myspacecomment";
		return {
			CID: 'cardboiled.com',
			nowmode:true,
			includeShareButton: false,
			defaultContent: QuickPostObject.copyCodeInput, 
			UIConfig: '<config><display showEmail="false" showPost="true" showBookmark="false" showCodeBox="false" showCloseButton="false" postToSidebarChecked="false" networksWithCodeBox="" networksToShow="'+network+'" /></config>'
		};
	},
	
	updateWildfireConfig: function(network){
		QuickPostObject.config=getWildfireConfig(network);
		if(Wildfire.WildfireContainer){
			Wildfire.WildfireContainer.applyConfig(QuickPostObject.config);
		}
	},
	
	openWildfire: function(){	
		tb_show(null, '#TB_inline?width=415&height=200&inlineId=quickPost&modal=true', null);
		$("#TB_ajaxContent")
			.css({
				background: "White",
				border: "solid 2px #666666"
			});		
		Wildfire.initPost('332151', "quickPost_gigya", 400, 170, QuickPostObject.config);
		Wildfire.onPostProfile = QuickPostObject.SAFWildfire;
	},
	
	SAFWildfire: function(){
		//tb_remove();
		//UI_Window_Close();
		//content = "<div id='WildfireContainer' style='font-family:Arial;text-align:center;width:300px;height:160px;vertical-align:middle;'><br /><br />Item posted successfully.<br /><br />";
		//content += "</div>";
		//UI_Window_Open(content,'closeOnClick',true,300,187);
	}

};

var RatingsObject = {
	isUserLoggedIn: false,
	swfContainer: null,
	swfContainerCounter: 0,
	ratingElement: null,
	ratedCards: {},

	init: function() {		
		RatingsObject.initEventHandlers();
		RatingsObject.regModal.init();
		RatingsObject.removeMoreLinks();
		RatingsObject.setFavoritesText();		
	},
	
	initEventHandlers: function() {		 
		$(".rating").hover(
			function(e) {
				var	ratingElement = $(this);
				ratingElement.addClass("hover");
				ratingElement.find(".butterfly").addClass("hover");
				ratingElement.find(".info").hide();
				if(ratingElement.attr("rating") == "liked") {					
					ratingElement.find(".caption").text("I already like it!").show();					
				} else {
					ratingElement.find(".caption").text("I like it!").show();
				}
			},
			function(e) {
				var	ratingElement = $(this);
				ratingElement.removeClass("hover");
				ratingElement.find(".butterfly").removeClass("hover");
				ratingElement.find(".caption").text("").hide();	
				ratingElement.find(".info").show();	
			}
		);
		$(".rating").click(RatingsObject.ratingClick);
		$(".removeFavorite").click(RatingsObject.removeFavorite);
		$("#regModal_loginEmail, #regModal_loginPassword").keydown(function(e) {
			if(e.which == 13) {
				$("#regModal_signInButton").click();
			}
		});
		$("#regModal_registerEmail, #regModal_registerPassword").keydown(function(e) {
			if(e.which == 13) {
				$("#regModal_registerButton").click();
			}
		});  
	},
	
	setFavoritesText: function() {
		if($(".card_tile").length == 0) {
			$("#favoritesText").text("You have not indicated that you like any items yet. Just click on the heart icon below the cards you want to add to this page.");
		} else {
			$("#favoritesText").text("If you've indicated that you like a card, this is where it's stored. If you no longer want to save something on this page, you can remove it. But don't worry; the card's rating will not be affected.");
		}
	},
	
	ratingClick: function(e) {		
		if(!RatingsObject.isUserLoggedIn) {
			RatingsObject.regModal.show();
			RatingsObject.ratingElement = $(this);
			return false;
		}	
		var	ratingElement = $(this),
			cardId = ratingElement.attr("cardId");					
		if(ratingElement.attr("rating") != "liked") {
			$.get(
				"/ecards/addRating.jhtml?r=" + Math.floor(Math.random()*10000000+1),
				{
					cardId: cardId
				},
				function(data, status) {
					if(status == "success") {					
						var likeCount = ratingElement.find(".info").text().replace(" Likes", "")-0;						
						ratingElement.find(".info").text(++likeCount + " Likes");
						/*
						var flashvars = { },
							params = {
								menu: "false",
								wmode:"transparent",		
								id: "butterflySwf"
							},
							attributes = {
								id: "butterflySwf",
								name: "butterflySwf"
							};
							
						if($.browser.mozilla) {
							ratingElement.find(".butterflySwf").css({
								marginTop: "-115px",
								marginLeft: "-5px"
							});
						} else {
							ratingElement.find(".butterflySwf").css({
								marginTop: "-115px",
								marginLeft: "-60px"
							});
						}
						
						$("<div id='butterflySwfContainer" + (RatingsObject.swfContainerCounter++) + "'></div>").appendTo(ratingElement.find(".butterflySwf"));						
						RatingsObject.swfContainer = ratingElement.find(".butterflySwf");
						swfobject.embedSWF(
							"http://ak.imgfarm.com/images/mfc/v3/icons/butterfly.swf",
							ratingElement.find(".butterflySwf div").attr("id"),
							"130",
							"130",
							"7.0.0",
							"expressInstall.swf",
							flashvars,
							params,
							attributes
						);	
						*/				
						ratingElement.attr("rating", "liked");
						ratingElement.addClass("liked");
					    ratingElement.find(".butterfly").addClass("liked");
					    RatingsObject.ratedCards[cardId] = likeCount;		
					    RatingsObject.setFavoritesText();			
						//setTimeout("RatingsObject.swfContainer.html('');", 2000);
					}    
				}
				
			);
		}
	},
	
	removeFavorite: function(e) {			
		var	ratingElement = $(this),
			cardId = ratingElement.attr("cardId"),
			section = ratingElement.parents(".cat_section");			
		
		$.get(
			"/ecards/removeRating.jhtml?r=" + Math.floor(Math.random()*10000000+1),
			{
				cardId: cardId
			},
			function(data, status) {
				if(status == "success") {
					ratingElement.remove();				
					$(".thumb[cardId='" + cardId + "']")
						.parent()						
						.fadeOut(1000, function(){
							if(section.find(".card_tile:visible").length == 0) {
								if(window.location.href.toUpperCase().indexOf("TYPE") == -1) {
									section.remove();
								}
							} else {					
								$(this).replaceWith(section.find(".card_tile:hidden:eq(1)").fadeIn(1000));
							}
							RatingsObject.removeMoreLinks(section);
							RatingsObject.setFavoritesText();							
						});
				}    
			}				
		);
	},
	
	removeMoreLinks: function(section) {
		var sections = section || $(".fav_section");
		sections.each(function(){			
			if($(this).find(".card_tile").length < 5) {
				$(this).find(".more").remove();
			}
		});
	},
	
	regModal: {
	
		init: function() {
			RatingsObject.regModal.initEventHandlers();
		},
		
		initEventHandlers: function() {
			$("#regModal_registerButton")
				.click(RatingsObject.regModal.submitRegistration);
			$("#regModal_signInButton")
				.click(RatingsObject.regModal.submitLogin);
		},
		
		fakeLogin: function(username, cookieVal, cookieExp) {								  	
			RatingsObject.regModal.setCookie("usr_info", cookieVal);
			RatingsObject.regModal.swapState(username);
		},
		
		setCookie: function(name, value) {
			cookieString = name+"=" + value
		                    + ";expires=Fri, 01-Jan-1999 00:00:01 GMT"
			                + ";path=/"
			                + ";domain=" + sDocumentDomain;				
			document.cookie=cookieString;	
			cookieString = name+"=" + value
		                    + ";expires=Fri, 01-Jan-2016 00:00:01 GMT"
			                + ";path=/"
			                + ";domain=" + sDocumentDomain;
			document.cookie=cookieString;
		},
	
		show: function() {
			$(".errorRow").hide();
			$('#adDiv').hide();
			tb_show(null, '#TB_inline?width=738&height=450&inlineId=registration_modal&modal=true', null);
			$("#TB_ajaxContent")
				.css({
					background: "White",
					border: "solid 2px #666666"
				})
				.find("a")
					.css({
						color: "#32859D"
					});
		},
		
		swapState: function(username) {
			$("#my_profile_link").show();
			$(".loggedInLink").show();			
			$("#logoutFormDiv").show();
			$("#loginFormDiv").hide();
			$("#welcomeUser").text("Welcome, " + username);
		},
		
		submitLogin: function(e) {
			$(".errorRow").hide();
			var bError = false;
			$.each([
				"regModal_loginEmail",
				"regModal_loginPassword"
			],
			function(i, v) {				
				if($.trim($("#" + v).val()) == "") {
					$(".errorRow[field='" + v + "']").show();
					bError = true;
				}			
			});
			if(bError) {
				return false;
			}
			$.post(
				"/registration/loginAjax.jhtml",
				{
      				loginPassword:	HMAC_SHA256_MAC($("#regModal_loginEmail").val().toUpperCase(), $("#regModal_loginPassword").val()),
      				loginEmail:		$("#regModal_loginEmail").val()
    			},
    			function(data, status) {   				
      				if(status=="success") {      				
      					var dataObj = eval("("+data+")");
				        if(dataObj.Status == "success") {
				        	RatingsObject.isUserLoggedIn = true;
	       					tb_remove(null,true);
	       					$("#adDiv").show();
	       					RatingsObject.regModal.fakeLogin(dataObj.displayName,dataObj.usrInfo,dataObj.expiry);
	       					setTimeout("RatingsObject.ratingElement.click();", 1000);
				        }
				        else {
				          	if(dataObj.Error1) {				          		
				          		$("#regModal_loginError1").html(dataObj.Error1).show();
				          	}
				        }	
       					// FAKE LOGIN
        			} else {
        				// SHOW ERRORS
        			}
      			}
    		);  
		},
		
		submitRegistration: function(e) {
			$(".errorRow").hide();
			var bError = false;
			$.each([
				"regModal_registerEmail",
				"regModal_registerPassword",
				"regModal_registerBirthMonth",
				"regModal_registerBirthDay",
				"regModal_registerBirthYear",
				"regModal_registerGender"
			],
			function(i, v) {				
				if($.trim($("#" + v).val()) == "") {
					$(".errorRow[field='" + v + "']").show();
					bError = true;
				}			
			});
			if(bError) {
				return false;
			}
			$.post(
				"/registration/registerAjax.jhtml",
				{
			    	"account.toolbarId":	oToolbarController.sUID,
			    	"account.passwordHash":	HMAC_SHA256_MAC($("#regModal_registerEmail").val().toUpperCase(), $("#regModal_registerPassword").val()),
			    	"account.emailAddress":	$("#regModal_registerEmail").val(),
			    	birthdayMonth:			$("#regModal_registerBirthMonth option:selected").val(),
			    	birthdayDay:			$("#regModal_registerBirthDay option:selected").val(),
			    	birthdayYear:			$("#regModal_registerBirthYear option:selected").val(),
			    	gender:					$("#regModal_registerGender option:selected").val(),
			    	emailInternalOptIn:		$("#regModal_registerInternalEmailOptIn").attr("checked"),
			    	emailExternalOptIn:		$("#regModal_registerExternalEmailOptIn").attr("checked")
			    },
			    function(data, status) {			    	
		      		if(status=="success") {       					
       					var dataObj = eval("("+data+")");
				        if(dataObj.Status == "success") {
				        	RatingsObject.isUserLoggedIn = true;
	       					tb_remove(null,true);
	       					$("#adDiv").show();	       					
				         	RatingsObject.regModal.fakeLogin(dataObj.displayName,dataObj.usrInfo,dataObj.expiry);
				         	setTimeout("RatingsObject.ratingElement.click();", 1000);		          	
				        }
				        else {
				          if(dataObj.Error1) {
				          	$("#regModal_registerError1").html(dataObj.Error1).show();
				          }
				        }	
        			} else {
        				// SHOW ERRORS
        			}
		      	}		    
		  	);
		}
	}

};

/*
 * send user to fwp to get menuCtl id
 */

function SendToCompose()
{
	alert("SendToCompose IS DEPRECATED!");
}



/*
 * send user to fwp to get menuCtl id
 */

function GetHtmlMenuCtlId( _data )
{
	var compose_url = "";
	var partnerval = "";
	var detect_url = sMfcDetectUrl;
	var bGotoPromo = false;
	var redirect_url = "";
	var bEditCard = false;
	//DEBUG("***** GetHtmlMenuCtlId *****");
	//toolbar installed, don't use partnerval, get the value from the toolbar
	partnerval = oToolbarController.sPartnerID;
	if (oCardData.c != null || oCardData.assetId != "") {
		compose_url = sGalleryBaseUrlEscaped+"/groupCardEdit.jhtml";
	} else {
		compose_url = sGalleryBaseUrlEscaped+sComposeCardUrl;
	}
	// if we're on edit page, change the redirect url
	if ( window.location.href.indexOf("/ecards/EditCard.jhtml") > -1 ){
		redirect_url = sGalleryBaseUrlEscaped + "EditCard.jhtml";
		bEditCard = true;
	} else {
		redirect_url = compose_url;
	}
	
	//DEBUG("GetHtmlMenuCtlId: bEditCard = " + bEditCard);
	//DEBUG("GetHtmlMenuCtlId: oQSParams['editcard'] = " + oQSParams['editcard']);
	
	if (!partnerval) { partnerval= readCookie("partner"); }
	if ( typeof(partnerval) == "undefined" ){ partnerval = ""; }
	
	/*
	 * partner
	 * cardID
	 */
	var dl_url = ( sDownloadTheme != undefined && sDownloadTheme != null && sDownloadTheme != "" ) ? sDownloadUrl + "?theme=" + sDownloadTheme : sDownloadUrl;
	var zg = ( bZgreetings ) ? 1 : 0;
	var url_params = new Array();
	//DEBUG("GetHtmlMenuCtlId: dl_url = " + dl_url);
	if ( bEditCard ){
		url_params = new Array(
				"editcard="+oQSParams['editcard'],
				"redirect="+redirect_url,
				"fail="+urlencode(dl_url)
		);
	} else {
		url_params = new Array(
				"cardID="+oCardData.cardID,
				"cardThumbnail="+urlencode(oCardData.cardThumbnail),
				"cardUrl="+urlencode(oCardData.cardUrl),
				"copyCode="+urlencode(oCardData.copyCode),
				"zg="+zg,
				"c="+oCardData.c,
				"partner="+partnerval,
				"redirect="+redirect_url,
				"fail="+urlencode(dl_url)
		 );
	}
	
	if ( oEventData.eventId != null && oEventData.eventId != undefined && oEventData.eventId != "" ){
		url_params[url_params.length] = "eventId=" + oEventData.eventId;
		url_params[url_params.length] = "categoryId=" + oEventData.categoryId;
		url_params[url_params.length] = "eventDate=" + oEventData.eventDate;
		url_params[url_params.length] = "eventRecipientEmail=" + oEventData.eventRecipientEmail;
	}
	if (oCardData.assetId != null && oCardData.assetId != "")
		url_params[url_params.length] = "assetId="+oCardData.assetId;
	detect_url += "?" + url_params.join("&");
	//DEBUG("GetHtmlMenuCtlId: detect_url = " + detect_url);
	location.href = detect_url;
	/*
	if ( bGotoPromo ){
		DEBUG("GetHtmlMenuCtlId: promo url = " + compose_url + "?" + url_params.join("&"));
		location.href = compose_url + "?" + url_params.join("&");
	} else {
		location.href = detect_url;
	}
	*/
	
}

function ComposePromoCheck()
{
	var promo_url = "";
	var partnerval = "";
	var dl_url = "";
	DEBUG("ComposePromoCheck: oToolbarController.sVersion = " + oToolbarController.sVersion);
	if ( !oToolbarController || oToolbarController.sVersion==null ){
		promo_url = sGalleryBaseUrl+sComposePromoUrl;
		// get current location to return to
		var cookie_val = '';
		if ( location.href.indexOf("http://") == 0 ) {
			cookie_val = location.href.substr(7);
		} else {
			cookie_val = location.href;
		}
		
		if ( !uiDetected && !oToolbarController.bInstalled ){
			setCookie(sRedirectCookieName, "c:" + cookie_val, '', '/');
		}
		if (!partnerval) { partnerval= readCookie("partner"); }
		if ( typeof(partnerval) == "undefined" ){ partnerval = ""; }
		
		//dl_url = ( sDownloadTheme != undefined && sDownloadTheme != null ) ? sDownloadUrl + "?theme=" + sDownloadTheme : sDownloadUrl;
		var url_params = new Array(
							"cardID="+oCardData.cardID,
							"copyCode="+oCardData.copyCode
					 );
		promo_url += "?" + url_params.join("&");
		DEBUG("ComposePromoCheck: promo_url = " + promo_url);
		//location.href = promo_url;
		location.replace(promo_url);
	}
}

function HTMLMenuCtl_Detect()
{
	DEBUG("HTMLMenuCtl_Detect: oHtmlMenuCtl.id = " + oHtmlMenuCtl.id);
	// id is passed in url, no need to detect
	if ( typeof(oHtmlMenuCtl.id) == 'string' ){ if( oHtmlMenuCtl.id.length > 30 ){ return; } }
	// no id in url, check controller, otherwise do redirect
	if ( null != oToolbarController.oHtmlMenuCtl ){
		// try to get id, otherwise, do redirect
		//cardID,cardThumbnail,cardUrl,copyCode
		try {
			oHtmlMenuCtl.id = oToolbarController.oHtmlMenuCtl.GetUID('http://www.funwebproducts.com/');
		} catch(E) {
			GetHtmlMenuCtlId( oCardData );
		}
	} else {
		GetHtmlMenuCtlId( oCardData );
	}
	// check to see if detection worked
	if ( oHtmlMenuCtl.id == null ){
		GetHtmlMenuCtlId( oCardData );
	}
}

function SetFormTbId()
{
	if ( oHtmlMenuCtl.id == null || oHtmlMenuCtl.id == '' ){
		return;
	}
	
	$("#compose input").each( function(){
		if ( $(this).attr('name') == 'toolbarID' ){
			$(this).attr('value',oHtmlMenuCtl.id);
		}
	});
	
}

function urlencode(str) {
	str = escape(str);
	str = str.replace('+', '%2B');
	str = str.replace('%20', '+');
	str = str.replace('*', '%2A');
	str = str.replace('/', '%2F');
	str = str.replace('@', '%40');
	return str;
}

function urldecode(str) {
	str = str.replace('+', ' ');
	str = unescape(str);
	return str;
}

var ImportObject = {

	importWindow: null, 

	init: function() {
		$("a.composeImport").click(ImportObject.launch);		
	},
	
	launch: function(e) {
		e.preventDefault();
		ImportObject.importWindow = null;
		if($(this).attr("provider") == "mfc") {
			ImportObject.importWindow = window.open(
				"/myfuncards/abImportContacts.jhtml?nosave=true&provider=mfc",
	            "ImportWindow",
	            "resizable=yes,scrollbars=yes,status=yes,width=860,height=500"
	        );
		} else {
			ImportObject.importWindow = window.open(
				"/myfuncards/abSelect.jhtml?nosave=true&provider=" + $(this).attr("provider"),
	            "ImportWindow",
	            "resizable=yes,scrollbars=yes,status=yes,width=860,height=500"
	        );		
		}		
	}

};

var MyProfileObject = {

	init: function() {
		MyProfileObject.initEventHandlers();
		if($.browser.mozilla) {
			$("#my_profile_link .linkbox").css("margin-top", "35px");
		}
	},
	
	initEventHandlers: function() {
		$("#my_profile_link")
			.hover(
				function() {
					MyProfileObject.show();
				},
				function() {
					MyProfileObject.hide();
				}
			)
			//MyProfileObject.toggle)
			.children("a")
				.click(function(e){			
					e.preventDefault();
				})
				.end()
			.find(".linkbox")
				.click(function(e){			
					e.stopPropagation();
				});
		$(document).click(MyProfileObject.hide);
	},
	
	hide: function() {		
		$("#my_profile_link")
			.removeClass("on")
			.find(".linkbox")
				.hide();
	},
	
	show: function() {			
		$("#my_profile_link")
			.addClass("on")
			.find(".linkbox")
				.show();
	},
	
	toggle: function(e) {
		e.stopPropagation();
		if($(this).hasClass("on")) {
			MyProfileObject.hide();
		} else {
			
		}
	}
};

var SubnavObject = {
	init: function() {
		SubnavObject.disableLastLink();	
	},
	
	disableLastLink: function() {
		$("#subnav a:last").each(function() {
			$(this).replaceWith("<span>" + $(this).text() + "</span>");			
		});
	} 
};

$(document).ready(function(){
	CardThumbObject.init();
	FilterObject.init();
	LeftNavObject.init();
	QuickPostObject.init();
	ImportObject.init();
	RatingsObject.init();
	MyProfileObject.init();
	SubnavObject.init();	

	/*
	if ( bCompose ){
		// check for toolbar, send to promo if missing
		ComposePromoCheck();
		// check for htmlmenuctl id, if not detectable, go to fwp
		if ( null != oToolbarController.sVersion ){
			HTMLMenuCtl_Detect();
		}
	}
	*/
	if($.browser.mozilla) {
		$(document.body).css("margin-top", "-2px;");
	}
	if ( oHtmlMenuCtl.id != null && oHtmlMenuCtl.id != undefined && oHtmlMenuCtl.id != '' ){
		SetFormTbId();
	}
});

/*
 * logic used on retrieve page
 */

function getAccess()
{
	var cookieVal = "r:";
	cookieVal += sChash;
	setCookie(sRedirectCookieName, cookieVal);
	return true;
}

function redirectToCard(cardType)
{
	var url = "";
	if ( iFromIM == 1 ){
		url = sPickupCardUrl + "?c=&im=1&cat=" + catID + "&sub=" + subCatID + "&card=" + cardID + "&tp=" + sParentId;
	} else {
		if ( sChash == "null" ){ sChash = ""; }
		url = sPickupCardUrl + "?c=" + sChash;
	}//end if
    if ( cardType == 'custom' ) {
        url = url + "&custom=1";
    }
    //alert("redirect to card: " + url);
	location.href=url;
}

function isValueInArray( needle, haystack ) { for ( var i = 0; i < haystack.length; i++ ){ if ( haystack[i] == needle ){ return true; } } }

var validEmailRegExp = /^(\w[\w\.-]*\w|\w+)@(\w[\w-]*\w|\w+)\.(\w[\w-]*$|((\w[\w-]*\w|\w+)\.)+(\w[\w-]*\w$|\w+$))/;
function validEmail(email) {
	if (validEmailRegExp.test(email)) return true;
	else return false;
}

function swfClickTrack(s){
	if (s.indexOf('/') != 0)
			s = '/' + s;
	s = "/clicks" + s;
	urchinTracker(s);
}

jQuery(document).ready(function() {
	jQuery('.TrackClicks').bind("click", function(e){
		var jQElement = jQuery(this);
		var path = jQElement.attr('clickPath');
		if (path.indexOf('/') != 0)
			path = '/' + path;
		path = "/clicks" + path;
		urchinTracker(path);
    });
});

function generateFlashObject(url, id, width, height, oContainer, bReturn, Style, OtherAttributes, bUseCodeBase, quality, wmode, avatarParams, bPlay) {
	//is this old or new?
	if(arguments.length <= 3){
		//width is really params;
		params = arguments[2];
	}else{
		return generateFlashObject(url,id,
			{width:width, height:height, oContainer:oContainer, bReturn:bReturn,
			Style:Style, OtherAttributes:OtherAttributes, bUseCodeBase:bUseCodeBase,
			quality:quality, wmode:wmode, avatarParams:avatarParams, bPlay:bPlay
			}
		);			
	}
	//Function really starts here
	var defaults = {
		width:null, height:null, oContainer:null, bReturn:false,
		Style:null, OtherAttributes:null, bUseCodeBase:false,
		quality:"high", wmode:"Transparent", avatarParams:null, bPlay:false,
		salign:"tl"
	}
	//update params with default values
	for(key in defaults){
		if(params[key] == null){
			params[key] = defaults[key];
		}
	}
	//version # already in url
	//var VERSION_NUM=0;
	//URL required
	if (! url){ return false; }
	if (! id){ id="oAvatarControl"; }
	if(url.indexOf('?')==-1){
		url+='?';
	}
	//url+='&V='+VERSION_NUM;

	var html = '<object id="'+id+'" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';

	if ( params.bUseCodeBase ){
		html+=' codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"';
	} else {
		html+=' codebase="#version=8,0,0,0"';
	}
	html += ' align="middle"';
	html += ' onerror="if ( typeof(generateFlashObjectError) == \'function\' ) generateFlashObjectError();return false;"';

	if (params.width){
		html+=' width="'+params.width+'"';
	}
	if (params.height){
		html+=' height="'+params.height+'"';
	}
	if (params.Style) {
		html+=params.Style;
	}
	if (params.OtherAttributes){
		html+=params.OtherAttributes;
	}

	html+='>';

	html+='<param name="movie" value="'+url+'">';
	html+='<param name="WMode" value="'+params.wmode+'">';
	html+='<param name="allowScriptAccess" value="always">';
	html+='<param name="quality" value="'+params.quality+'">';
	html+='<param name="menu" value="0">';
	html+='<param name="play" value="'+params.bPlay+'">';
	if(params.salign){
		html+='<param name="salign" value="'+params.salign+'">';
	}
	if (params.avatarParams){
		html+='<param name="FlashVars" value="'+params.avatarParams+'">';
	}
	var NAV_IE=(navigator.appName.toLowerCase().indexOf("microsoft internet explorer")>-1);
	if (! NAV_IE) {
		html+='<embed src="'+url+'" play="'+params.bPlay+'" menu="'+params.bPlay+'" quality="'+params.quality+'" wmode="'+params.wmode+'"';
	if (params.width){ html+=' width="'+params.width+'"'; }
	if (params.height){ html+=' height="'+params.height+'"'; }
	if (params.avatarParams){ html+=' FlashVars="'+params.avatarParams+'"'; }
		html+=' name="'+id+'" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" '+
		'pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	}
	
	html+='</object>';
	
	if (params.oContainer) {
		params.oContainer.innerHTML = html;
	} else if (params.bReturn) {
		return html;
	} else {
		document.write(html);
	}
}

function thisMovie(movieName) {
	// IE and Netscape refer to the movie object differently.
	// This function returns the appropriate syntax depending on the browser.        
	if (navigator.appName.indexOf ("Microsoft") !=-1) {
	        return window[movieName];               
	} else {
	        return window.document[movieName];
	}
}

function modal(inlineID, height,width){
	try {
	 if(!height) height=417;
	 if(!width) width=402;

	tb_show(null, '#TB_inline?width='+width+'&height='+height+'&inlineId='+inlineID+'&modal=true', null);	 
	$("#TB_ajaxContent").css({background: "White",border: "solid 2px #666666"})
	.find("a").css({color: "#32859D"});	
	setTimeout('$("#TB_load").hide()',5);
	} catch(e) {
		DEBUG(e);
	}
}

/**
 * getQSParams
 * - retrieves the query string params and stores in oQSParams.
 */

function getQSParams()
{
	var query_string = window.location.search;
	var key_value_pairs = window.location.search.substr(1).split("&");
	for ( var idx=0; idx < key_value_pairs.length; idx++ ){
		if ( key_value_pairs[idx].indexOf("=") > -1 ){
			var key = key_value_pairs[idx].split("=")[0];
			var val = key_value_pairs[idx].split("=")[1];
			oQSParams[key] = val;
		}
	}
}
/*-- BEGIN: code for MFCIM and Zgreetings --*/

function isNewMfc(){ return true; }


var oMFCexternal = {
	hasToolbar:false,
	FuncPersonalize:null,
	FuncInsertIM:null,
	IMcardUrl:"",
	callingApp:"",
	viewCardPage: false,
	cardid: 0,
	
	init: function( _options )
	{
		if ( _options == null ){ _options={}; }
		if ( _options.app != null && _options.app != undefined ){
			this.setCallingApp( _options.app );
		} else {
			this.setCallingApp( "mfc" );
		}
		
		this.setViewCardFlag();
		
		if ( this.viewCardPage ){
			this.dislplayButtons();
			this.getCardData();
		}
		
	},
	
	getCardData: function()
	{
		this.cardid = $("#viewcardpageflag").attr('cardid');
	},
	
	setViewCardFlag: function()
	{
		if ( $("#viewcardpageflag")[0] ){
			this.viewCardPage = true;
		}
	},
	
	setCallingApp: function( _appname )
	{
		this.callingApp = _appname;
	},
	
	dislplayButtons: function()
	{
		if ( this.callingApp == 'zwinky' ){
			$(".Znote_buttons").show();
		} else if ( this.callingApp == 'mfc' ){
			$(".IM_buttons").show();
		}
	},
	
	hideCardButtons: function()
	{
		$(".card_buttons").hide();
	},
	
	sendInEmail: function()
	{
		if ( this.callingApp == 'zwinky' ){
			$("#MFCForm").submit();
		} else {
			this.FuncPersonalize(-1,-1,"",this.cardid,-1);
		}
	},
	
	sendZnote: function()
	{
		Parent.PreviewCard(window.msgHtmlString);
	},
	
	insertIntoIM: function()
	{
		this.FuncInsertIM(window.location.href);
	},
	
	disableMagnifier: function()
	{
		$(".card_tile .thumb").unbind();
	},
	
	addViewCardLink: function()
	{
		$(".card_tile .thumb").each( function(){
			var viewLink = "/ecards/" + $(this).attr('subPath') + "/" + $(this).attr('cardid') + "/" + $(this).attr('nameForUrl') + ".jhtml";
			$(this).find(".composeCardLink").attr('href',viewLink);
			DEBUG("composeCardLink = " + $(this).find(".composeCardLink").attr('href'));
		});
	}
};

function InitCallback( _opts ){
	oMFCexternal.init(_opts);
	oMFCexternal.addViewCardLink();
	oMFCexternal.disableMagnifier();
	uiDetected = true;
}
function setEmailCallbackFunc(func) { oMFCexternal.FuncPersonalize=func; }
function SendInEmail(){ oMFCexternal.sendInEmail(); }
function SendZnote(){ oMFCexternal.sendZnote(); }
function insertIntoIM(){ oMFCexternal.FuncInsertIM(window.location.href); }

function setIMCallbackFunc(func) {
	oMFCexternal.FuncInsertIM=func;
		
	if ( typeof(__utmSetVar) == "function" ) { __utmSetVar("mfc_im_user"); }
}

/*-- END:   code for MFCIM and Zgreetings --*/

function clearSearch(element){
	if(element.value.indexOf("Search")!=-1 && element.value.indexOf(".")!=-1 ){
		element.value="";
		element.style.color="#333";
	}
}

/*-- BEGIN: JSON methods to parse or stringify json objects --*/

if(!this.JSON){JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z';};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapeable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapeable.lastIndex=0;return escapeable.test(string)?'"'+string.replace(escapeable,function(a){var c=meta[a];if(typeof c==='string'){return c;}
return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(typeof value.length==='number'&&!value.propertyIsEnumerable('length')){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}})();

/*-- END:   JSON methods to parse or stringify json objects --*/

jQuery.fn.ajaxDisableBtn = function(options){
	var obj = $(this); 
	console.log(obj)
	
	var disable = function(){
	
	}
	var enable = function(){
		return	jQuery(item)
				.addClass("selected");		
	}
}
jQuery.extend($.expr[ ":" ], { reallyvisible : "!(jQuery(a).is(':hidden') || jQuery(a).parents(':hidden').length)" });
