var $ = jQuery.noConflict();
$(document).ready(function() {
	$ = jQuery.noConflict();
	FbCommon.init();
});
//Common FB Object
FbCommon = {
	asset_for_fb_post:{},
	assetData:{},
	fbFriendIDs:[],
	fbFriendsInfo:[],
	init: function() {
		FB.ensureInit(function() {
			//LIstener for the FBConnect button in the registration page inside the chat
			$("#regFBConnect_btn").click( function() {
				try {
					Interface.FBConnect.popConnect(partnerParam);
				} catch (e) { 
					alert("Sorry, there has been an error with Facbook Connect. Please try again later");
				}
			});
			//Listener for the connect button, location unknown
			$("#connect_btn, #facebook_btn").click(function() {
				urchinTracker("/clicks/fbConnect/connect");
				FbCommon.fBLogin();
				return false;
			});
			
			//At homepage and not logged in show fb button 
			if (!FwpConnect.adapters.facebook.loggedIn && ( zwinkyPage == 'profile' || zwinkyPage == 'home' && sUsername != "" ))
				$('#connect_btn').show();
		});
		//Update link status text
		if ((window.location.href).indexOf("profile.jhtml") != -1)
			FbCommon.updateFBDisable(!FwpConnect.networks.facebook.loggedIn);
			
		//adds listeners to the logout buttons located through out the project
		$("a.logout").each(function(){
			urchinTracker("/clicks/fbConnect/logout");
			var href = $(this).attr("href");
			$(this).attr("href","#").click( function() {
				FwpConnect.adapters.facebook.getLinkStatus( function(sData) {//get link status
					if(sData.hasMatch){
						FwpConnect.logout(function(){ window.location = href; });
					}
					else{
						FwpConnect.FacebookAdapter.prototype.logoutInternal();
						window.location = href;
					}
				});
			});
		});
		
		//action to disable and enable FB Link
		$('#userFBClick').click( function() {
			if(FwpConnect.adapters.facebook.isZwinkyLinked) {
				urchinTracker("/clicks/fbConnect/disable_link");
				FbCommon.deleteLink( function( status ) { 
					if(status) { FbCommon.updateFBDisable(false); }
				});
			} else {
				urchinTracker("/clicks/fbConnect/enable_link");
				FbCommon.fBLogin();
			}
		});

		if ( zwinkyPage == "zwinkychatv2" || zwinkyPage == "home_external" ) {
			FbCommon.fBLogin();
		}
	
		// create modals
		createFbLinkModals();
		createZwinkyModals();
	},
	setDataController: function(a_val) {
		try {
			initData();
			var newUser = new oUser();
			newUser.FBConnected = a_val;
			newUser.username = sUsername;
			updateDataUser(newUser);
		} catch (e){}
	},
	fBLogin: function() {
		if (zwinkyPage == "zwinkychatv2" && window.location.href.indexOf("action=disconnect") != -1)
			FwpConnect.logout(function(){toggleDisplay("disconnect")});
		else if (typeof(FwpConnect.fbUserInfo) == 'object' && FwpConnect.adapters.facebook.loggedIn)
			FbCommon.startFBConnect();
		else FwpConnect.connect("facebook", FbCommon.startFBConnect);

	},
	startFBConnect: function() {
		if (zwinkyPage == 'home' || zwinkyPage == 'registration' || zwinkyPage == 'profile' || zwinkyPage=='zwinkychatv2' || zwinkyPage=='home_external') {
			FbCommon.checkLinkStatus( function(sData) { 
				//var x="";for(var k in sData)x+="\n"+k+": "+sData[k];
				if (sUsername && sUsername != "") {//zwinky user logged in confirm linking, 
					if (sData.isLinked) {//there is a zwinky account tied to this FB Account
						if (sData.hasMatch) {//Zwinky account matches logged in FB Account
							FbCommon.updateFbHeader();
							FbCommon.networkLogin();
						} else {//doesn't match log zwinky user out
							FbCommon.zwinkyLogout( function(loggedOut) {
								if (loggedOut) {
									sUsername = "";//wipe stored name so you can reload page
									FbCommon.networkLogin();
								} else alert('Logout failed. Try again');
							});
						}
					} else {
						$('#confirmLinkingModal .uName').val( sUsername );
						$('.zwinkUserName').html ('Not ' + sUsername + '?' );
						openDialog("confirmLinkingModal");
					}
				} else {
					if (sData.isLinked)//there is a zwinky account tied to this FB Account
						FbCommon.networkLogin();
					else { 
						openDialog("promptZwinkyAcctModal");
						setTimeout(function() {
							$("#FBUsersName").html(FwpConnect.fbUserInfo['firstName']);
							$("#FBLogout").click(function(){
								FB.Connect.logout(function(){
									FwpConnect.connect("facebook", FbCommon.startFBConnect);
								});
								closeDialog("promptZwinkyAcctModal");
							});
						},900);
					}
				}
			});
		}
	},
	/**
	 * ajax login for FB Connect
	 */
	zwinkyLogin: function(mSource) {
		var params = {username:$('#'+mSource+' .uName').val(),password:$('#'+mSource+' .uPwd').val()}
		
		if (sUsername != "" && sUsername != null && $('#'+mSource+' .uName').val() != sUsername) {//user is logged in, check if usernames match
			$('#'+ mSource +' .confirm_message').html('<Strong>Invalid Username. Please try again!</Strong>');
			$('#'+ mSource +' .confirm_message').css("color","Red");
		} else if (FwpConnect.adapters.facebook.isZwinkyLinked && FwpConnect.adapters.facebook.hasMatch) {
			//check if logged in zwinky account has a link
			$('#'+ mSource + ' .confirm_message').html('<Strong>This Zwinky Account already has a linked Facebook Account.</strong>');
			$('#'+ mSource +' .confirm_message').css("color","Red");
		} else if ($('#'+mSource+' .uName').val() != '' &&  $('#'+mSource+' .uPwd').val() != '') {
			if(!FwpConnect.adapters.facebook.isLinked) {//not linked
				$.post( FwpConnect.handler.remoteHost + "/loginAjax.jhtml", params, function (data, status) {
					data = eval("(" + data + ")");// parse JSON response
					if (data.status == "success") {//allow temp login
						FbCommon.checkLinkStatus( function(sData) {
							if (sData.isZwinkyLinked) {//zwinky account has an existing link ajax log out and alert.
								FbCommon.zwinkyLogout( function(status) {
									$('#'+ mSource +' .confirm_message').css("color","Red");
									$('#'+ mSource +' .confirm_message').html('<Strong>This Zwinky Account is already linked to a Facebook acount. Please try again.</Strong>');
								});
							} else 
								FbCommon.checkFBEmailPerms()
						});
					} else {
						$('#'+ mSource +' .confirm_message').css("color","Red");
						$('#'+ mSource +' .confirm_message').html('<Strong>'+data.message+'</Strong>');
					}
				});
			} else $('#'+ mSource +' .confirm_message').html('<Strong>This Facebook account is already linked to an existing Zwinky Account.</Strong>');
		} else $('#'+ mSource +' .confirm_message').html('<Strong>Missing Username or Password!</Strong>');
	},
	/**
	 * ajax logout for FB Connect
	 */
	zwinkyLogout: function(callback) {
		$.post( FwpConnect.handler.remoteHost + "/logoutAjax.jhtml", {}, function (data, status) {
			callback(status=="success");
		});
	},
	handleConnectedClick: function() {
		openDialog("FBConnectCongrats");
		setTimeout(FbCommon.addFBConnectCongratsListeners,1000);
	},
	addFBConnectCongratsListeners: function() {
		$("#closeCongrats").click(function(){
			closeDialog("FBConnectCongrats")
		});
		$("#openWardrobeBtn").click(function(){
			if (zwinkyPage=="profile")
				openWd();
			else launchWardrobe();
		});
		$("#viewFriendsBtn").click(function(){
			if (zwinkyPage=="profile")
				openWd("friends", null, null, "friends")
			else launchWardrobe("friends");
		});
	},
	deleteLink: function(callback) {
		if (FwpConnect.adapters.facebook.isZwinkyLinked) {
			$.post( FwpConnect.handler.remoteHost + "/deleteLink.jhtml", {network:"Facebook",networkId:""}, function (data, status) {
				data = eval("(" + data + ")");// parse JSON response
				if (data.status == "success") {
					//update DataController
					FbCommon.setDataController("0");
					//set islinked to false, and call logout
					FwpConnect.adapters.facebook.isLinked = false;
					FwpConnect.adapters.facebook.isZwinkyLinked = false
					FwpConnect.logout( function(){
						callback(true);
					});
				} else alert( data.message );
			});
		}
	},
	checkLinkStatus: function(callback) {
		if (FwpConnect.adapters.facebook) {//Logged in to FB?
			FwpConnect.adapters.facebook.getLinkStatus( function(sData) {//get link status
				FwpConnect.adapters.facebook.isLinked = sData.isLinked;
				if (sUsername != "" && sData.hasMatch != 'undefined') {
					FwpConnect.adapters.facebook.hasMatch = sData.hasMatch;//logged in zwinky user matches linked account
					FwpConnect.adapters.facebook.isZwinkyLinked = sData.isZwinkyLinked;//logged in zwinky user matches linked account
					FwpConnect.adapters.facebook.linkedNetworkId = sData.linkedNetworkId;//logged in zwinky user matches linked account
				}
				callback(sData);
			});
		}
	},
	/**
	 * ajax network login for FB Connect linking (reloads on success)
	 * //FbPublish.sendEmail(targetIds, "Email from webfetti","this is my body text","", function() { alert('email sent'); } );
	 */
	networkLogin: function() {
		FwpConnect.handler.networkLogin( FwpConnect.fbUserInfo, function() {
			FwpConnect.adapters.facebook.isLinked = true;
			if (sUsername=="") {//not signed in to zwinky refresh to show new state
				if (zwinkyPage=='registration')
					document.location.href=(successURL)?successURL:document.location.reload(); 
				else if (zwinkyPage=='home' || zwinkyPage=='profile')
					document.location.reload();
				else if (zwinkyPage=='zwinkychatv2') 
					FbCommon.onNetworkLoginCallBack();
			} else {
				if (zwinkyPage == "zwinkychatv2")
					onNetworkLoginCallBack();
				else FbCommon.onNetworkLogin(); 
			}
			closeDialog("promptZwinkyRegModal");
			closeDialog("confirmLinkingModal");
		});
	},
	//call getLinkStatus outside of fb library for the disable/enable link verification / toggling
	updateFBDisable: function(recall) {
		if(recall) {//check status
			$.post("/registration/getLinkStatus.jhtml", {network:"Facebook",networkId:""}, 
				function (data, status) {
					if (status == "success") {
						var data = eval("(" + data + ")");
						FwpConnect.adapters.facebook.isLinked = data.isLinked;//if fb logged in show link status of this fb account
						FwpConnect.adapters.facebook.hasMatch = data.hasMatch;//logged in zwinky user matches linked account
						FwpConnect.adapters.facebook.isZwinkyLinked = data.isZwinkyLinked;//logged in zwinky user matches linked account
						FwpConnect.adapters.facebook.linkedNetworkId = data.linkedNetworkId;//logged in zwinky user matches linked account
						$('#userFBClick').html(data.isZwinkyLinked?"Disable facebook account":"Enable facebook account");
					}
				}
			);
		} else {
			$('#userFBClick').html(FwpConnect.adapters.facebook.isZwinkyLinked?"Disable facebook account":"Enable facebook account");
		}
	},
	/**
	 * Partner Ids to keep track of the action that led to the toolbar downloads
	 */
	partnerIds: {
		zwinky: "ZJzeb031"
	},
	 /**
	 * For any new action add a relative message.
	 * @return message (String) - getAttachmentMessages[action]
	 */
	getAttachmentMessages: {
		ZwinkyDefaultPostAvatar: {"caption":"{*actor*} just became a cartoon!", "description":""},
		ZwinkyHalloweentPostAvatar: {"caption":"{*actor*} just became a cartoon!", "description":""}
	},
	/**
	 * @param action - type of action has taken such as friendsWall | ownWall
	 * @return asset info extracted from hidden variables in the asset placeholder
	 * "name" (String)
	 * "href" (String URL)
	 * "properties" (JSON with text and href)
	 * "action_links" (JSON with text href)
	 * "media" (JSON array with each object containing a type, src & href for images or imgUrl and swfUrl for Flash)
	 */
	extractAssetData: function(action) {
		var swfSrc = "", fullHeight = 263, fullWidth = 226, prevHeight = 263, prevWidth = 226;
		var type = "image", imageSrc = "", textForActionLink = "";
		if (permURL.indexOf('dev') != -1)
			imageSrc = "http://assets.zwinky.com/facebook/fbTestImage/zwinkyTestFBImage.jpg" 
		else imageSrc = permURL;
		
		if (action == "ZwinkyHalloweentPostAvatar")
			textForActionLink = "Halloween Yourself!";
		else textForActionLink = "Create Your Cartoon!"; 
		return {
			"assetName":		"",
			"action": 			action,
			"href": 			"",
			"imageSrc": 		imageSrc,
			"swfSrc": 			swfSrc,
			"fullHeight":		fullHeight,
			"fullWidth":		fullWidth,
			"prevHeight":		prevHeight,
			"prevWidth":		prevWidth,	
			"type": 			type,
			"textForActionLink":textForActionLink,
			"linkText"			:"Click Here to cartoon yourself!"
		}
	},
	/**
	 * @param assetData (object)
	 * @return data (object) needed to post to Facebook
	 */
	createPostData: function(assetData) {
		//create post messages (caption & description)
		var msg = FbCommon.generateMessages(assetData);
		assetData.href = getZwinkyDownloadPath();
		return {
			"name":assetData.assetName,
			"href":assetData.href,
			"action": assetData.action,
			"type": assetData.type,
			"assetId": assetData.assetId,
			"assetType": assetData.assetType,
			"subject":"",
			"caption":msg.caption,
			"description":msg.description,
			"properties":[{
				"text":assetData.linkText,
				"href":assetData.href
			}],
			"action_links":[{
				"text":assetData.textForActionLink,
				"href":assetData.href
			}],
			"media":[{
				'type':	  assetData.type,
				'swfSrc': assetData.swfSrc,
				"imgSrc": assetData.imageSrc,
				"href": assetData.href,
				"width": assetData.prevWidth,
				"height": assetData.prevHeight,
				"expanded_width": assetData.fullWidth,
				"expanded_height": assetData.fullHeight
			}],
			"modal_message":"What's on your mind?"
		};
	},
	/**
	 * Get the tokens needed for the particular asset type.
	 * @param asset (object)
	 * @return token (object)
	 */
	getTokens: function(asset) {
		/*return {
			"verb": FbCommon.verbs[asset.action],
			"noun": asset.assetType.replace(/s$/, ""),
			"where": ( (asset.action == "ownWall") ? "to their wall" : "at Webfetti" ),
			"do_what": (asset.action == "createLayout" ? "make" : "post" )
		};*/
		return {};
	},
	/**
	 * Generate the messages for the specific action and asset.
	 * Note: To generate a new message template add the necessary tokens:values pairs to getTokens()
	 * and add the message template to getAttachmentMessages (caption/description) for the specific action
	 * @param asset (object)
	 * @return message (string)
	 */
	generateMessages: function(asset) {
		var tokens = FbCommon.getTokens(asset);
		var template = FbCommon.getAttachmentMessages[asset.action];
		var messages = {};
		//tokenize message and replace key words with asset data
		for (msg in template) {
			messages[msg] = template[msg];//clone message template
			var wordTokens = messages[msg].split(/[\s!?]/g);
			for (var word in wordTokens) {
				if (wordTokens.hasOwnProperty(word)) {
					var token = wordTokens[word].split('%')[1];//%token%
					if (token && token != 'target') messages[msg] = messages[msg].replace(wordTokens[word], eval("tokens."+token));
				}
			}
		}
		return messages;
	},
	/**
	 * When FB login occurs update the header
	 * @param params (Object)
	 * @param firstTime (Boolean)
	 */
	onNetworkLogin: function(params, firstTime) {
		FbCommon.updateFbHeader();
	},
	onNetworkDisconnect: function(network) {

	},
	updateFbHeader: function() {
		if (zwinkyPage != "zwinkychatv2") {
			if (sUsername && sUsername != "") {//signed in
				$('#connect_btn').hide();//hide connect btn
				$('#fbDisplay').show()
				$('#fbDisplay').click(function(){FbCommon.handleConnectedClick()});
				
				if (zwinkyPage=='profile')//profile
					$('#fbDisplay').html('<span style="cursor:hand;text-decoration:underline;">Connected</span>');

				if( (window.location.href).indexOf("profile.jhtml") != -1 )//registration 
					FbCommon.updateFBDisable(!FwpConnect.adapters.facebook.isZwinkyLinked);
			}
		}
	},
	/**
	 * fill form given type (model or normal reg)  
	 */
	fillRegForm: function(type) {
		var fbInfo = FwpConnect.fbUserInfo;
		if (fbInfo.birthday!=null) {
			var bday = fbInfo.birthday.replace('\,','');
			bday = bday.split(' ');
			try {$('#uBdateMonth, #birthdayMonth')[0].selectedIndex = (getMonthIndex((bday[0]).toLowerCase()) ) | 0;}catch(e){}
			try {$('#uBdateDay, birthdayMonth')[0].selectedIndex = parseInt(bday[1]) | 0;}catch(e){}
			try {$('#uBdateYear, birthdayYear')[0].selectedIndex = ((new Date().getFullYear()) - parseInt(bday[2]) + 1) | 0; }catch(e){}
		}
		
		if (type=='modal') {
			$('#uGender')[0].selectedIndex = (fbInfo.gender.toLowerCase() == 'male')?0:1;
		} else {
			$('select[id*="gender"]')[0].selectedIndex = (fbInfo.gender.toLowerCase() == 'male')?1:2;
			$('input[id*="firstName"]').val( fbInfo.firstName );
			$('input[id*="lastName"]').val( fbInfo.lastName );
		}
	},
	/**
	 * validate FB Zwinky Registration modal info
	 */
	registerZwinkyValidation: function() {
		var emailregex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if ($('#promptZwinkyRegModal .uName').val() == '' || $('#promptZwinkyRegModal .uPwd').val() == '' || $('#uEmailAddr').val() == '')
			return 'Missing information!';
		else if (!($('#uEmailAddr').val()).match(emailregex)) 
			return 'Invalid email address!';
		else if ($('#uBdateMonth')[0].selectedIndex == 0 || $('#uBdateDay')[0].selectedIndex == 0 || $('#uBdateYear')[0].selectedIndex == 0)
			return'Missing birthday information!';
		else if (!$('#tos_opt')[0].checked)
			return'You must agree to the Terms of Service and Privacy Policy!';
		else return 'Valid';
	},
	/**
	 * ajax registration for FB Connect
	 */
	registerZwinkyUser: function() {
		var validationMsg = FbCommon.registerZwinkyValidation();
		//todo do a safety check for birthday on facebook if it doesnt exist use input value
		var age = parseInt((new Date()).getFullYear()) - parseInt($('#uBdateYear').val());
		if (age < 13) {
			closeDialog("promptZwinkyRegModal");
			openDialog("under13Modal");
		} else if (validationMsg == 'Valid') {
			var sGender;
			if ($("#uGender").val().toUpperCase() == "MALE" || $("#uGender").val().toUpperCase() == "FEMALE")
				sGender = $("#uGender").val().toUpperCase().substr(0,1);
			else
				sGender = $("#uGender").val().toUpperCase();
			
			var params = { 
				firstname:FwpConnect.fbUserInfo.firstName,
				lastname:FwpConnect.fbUserInfo.lastName,
				username:$('#promptZwinkyRegModal .uName').val(),
				birthDate: ($('#uBdateMonth')[0].selectedIndex+1)+'/'+$('#uBdateDay').val()+'/'+$('#uBdateYear').val(),
				password:$('#promptZwinkyRegModal .uPwd').val(),
				emailAddr:$('#uEmailAddr').val(),
				gender: sGender,
				tp: (zwinkyPage=='zwinkychatv2' || zwinkyPage=='home_external')?oQSParams['p']:oToolbarController.sPartnerID
			};
			formInfo = params;
			$.post(FwpConnect.handler.remoteHost + "/registerAjax.jhtml", params, function (data) {
				data = eval("(" + data + ")");// parse JSON response
				if (data.status == "success") {//before logging in call quest action to award zbucks and start quest track.
					urchinTracker("/clicks/fbconnect/shortRegistration/complete");
					FbCommon.zwinkyQuestAction( 12, "PRE_ENROLL", function() {
						document.body.removeChild($('#questAction_iframe_12')[0]);
						closeDialog("promptZwinkyRegModal");
						FbCommon.checkFBEmailPerms()
					});
					urchinTracker("/clicks/fbconnect/shortRegistration/complete");
				} else {
					var i, msg = '', msgs = data.messages[0];
					for (i in msgs) {
						msg = msgs[i] + '.';
					}
					if (msg == "too young..must be older than 13.") {
						closeDialog("promptZwinkyRegModal");
						openDialog("under13Modal");
					} else if (msg == "Username exists in database, choose another one.")
						alert( "Sorry, that username is already taken");
					else alert( msg );
				}
			});
			return false;
		} else alert(validationMsg);
	},
	/**
	 * reset registration form
	 */
	resetRegForm: function() {
		$("#promptZwinkyRegModal input").val("");
		$("#promptZwinkyRegModal #uBdateMonth")[0].selectedIndex = 0;
		$("#promptZwinkyRegModal #uBdateDay")[0].selectedIndex = 0;
		$("#promptZwinkyRegModal #uBdateYear")[0].selectedIndex = 0;
		$("#promptZwinkyRegModal #uGender")[0].selectedIndex = 0;
		$("#promptZwinkyRegModal #tos_opt")[0].checked = false;
	},
	/**
	 * trigger quest action given id, action and a callback function
	 */
	zwinkyQuestAction: function(id, action, callback) {
		var oEnv = (window.location.href.indexOf("dev")!=-1)?"dev.":"";
		var questUrl = "http://edits."+oEnv+"zwinky.com/zwinky-world/QuestAction.jhtml?questIds=["+id+"]&actions=["+action+"]";
		var oDiv=document.createElement('DIV');	
		oDiv.id="questAction_iframe_"+id;
		oDiv.style.display="none";
		oDiv.innerHTML='<iframe id="questAction_iframeDiv" src="'+questUrl+'" ></iframe>';
		document.body.appendChild(oDiv);
		setTimeout(callback, 500);//allow iframe page to load
	},
	/**
	 * just adding a middleman function 
	 */
	checkFBEmailPerms: function() {
		FbPublish.checkPermission( "email", true, function(a_args) {
			FbCommon.networkLogin();
			var tempUrchinCall = (a_args.toString().toLowerCase() == "email" || a_args.toString()=="1")? "accept" : "decline";
			urchinTracker("/clicks/fbconnect/"+tempUrchinCall+"Email");
		});
	}
}

function openDialog(ids) {
	try { 
		$("#" + ids ).dialog("open");
		setTimeout(function(){$('.uName').focus()},1000);
	} catch (e) {}
}
function closeDialog(ids,closeExternalWindow) {
	$("#"+ ids ).dialog("close");
	if (closeExternalWindow && typeof(closePopUpWindow) != "undefined")
		closePopUpWindow();
}
	
function createFbLinkModals() {
	if (zwinkyPage!='chat') {
		$("#promptLinkingModal").dialog("destroy").dialog({
			autoOpen:false,
			draggable:true,
			resizable:false,
			modal:true,
			overlay:{opacity:.6,background:"black"},
				dialogClass:"",
				position:"center",
				height:"auto",
				width:513,
				show:{effect:"fade",speed:500},
				hide:{effect:"fade",speed:250},
				open:function(){
					$('#promptLinkingModal .confirm_message').css("color","");
					//setTimeout(function(){$('#promptLinkingModal .uName').focus()},1000);
					// moved click tracking to the fb post button click function
				},
				close:function(){
					//ckTrk("/clicks/fbpostmodal/close/"+ratings_urchin_path);
				}
			 }
		).show();
		$('.ui-dialog-titlebar-close').css("display","none");
		$(".wf_fb_modal .ui-resizable-handle").hide();
		
		if($.browser.msie)
			$(".wf_fb_modal .ui-dialog-titlebar").hide();
	}
	
	$('#promptLinkingModal .signUp_btn').click( function() {
		urchinTracker("/clicks/fbConnect/signUp");
		FbCommon.zwinkyLogin("promptLinkingModal");
		return false;
	});
	
	$("#promptLinkingModal .reg_btn").click(function() {
		urchinTracker("/clicks/fbConnect/register");
		FbCommon.fillRegForm('modal');
		openDialog("promptZwinkyRegModal");
		closeDialog("promptLinkingModal");
	});
	
	$("#FBConnectCongrats").dialog("destroy").dialog({
			autoOpen:false,
			draggable:true,
			resizable:false,
			modal:true,
			overlay:{opacity:.6,background:"black"},
			dialogClass:"",
			position:"center",
			height:"auto",
			width:513,
			show:{effect:"fade",speed:500},
			hide:{effect:"fade",speed:250}
		}
	).show();
	
	$("#confirmLinkingModal").dialog("destroy").dialog({
		autoOpen:false,
		draggable:true,
		resizable:false,
		modal:true,
		overlay:{opacity:.6,background:"black"},
			dialogClass:"",
			position:"center",
			height:"auto",
			width:513,
			show:{effect:"fade",speed:500},
			hide:{effect:"fade",speed:250},
			open:function(){
				$('#promptLinkingModal .confirm_message').css("color","");
				$('#promptLinkingModal .confirm_message').html("");
			},
			close:function(){}
	}).show();
	$('.ui-dialog-titlebar-close').css("display","none");
	$(".wf_fb_modal .ui-resizable-handle").hide();
	if ($.browser.msie)
		$(".wf_fb_modal .ui-dialog-titlebar").hide();

	$('#confirmLinkingModal .confirm_btn').click( function() {
		urchinTracker("/clicks/fbConnect/confirm_zwinky_user");
		zwinkyLogin('confirmLinkingModal');
		return false;
	});
	
	$("#confirmLinkingModal .cancel_btn, #confirmLinkingModal .signOut_btn").click(function() {
		 if (zwinkyPage != 'chat') {//log out of zwinky
			FwpConnect.adapters.facebook.getLinkStatus( function(sData) {//get link status
				if (sData.hasMatch){
					FwpConnect.logout( function(){
						closeDialog("confirmLinkingModal", true);
						document.location.href = FwpConnect.handler.remoteHost + '/logout.jhtml';
					});
				}
				else {
					FwpConnect.FacebookAdapter.prototype.logoutInternal();
					document.location.href = FwpConnect.handler.remoteHost + '/logout.jhtml';
				}
			});
		} 
		else closeDialog("confirmLinkingModal", true);
	});
}
function createZwinkyModals() {
 	//Create Zwinky Account Checking Modal
 	$("#promptZwinkyAcctModal").dialog("destroy").dialog({
		autoOpen:false,
		draggable:true,
		resizable:false,
		modal:true,
		overlay:{opacity:.6,background:"black"},
			dialogClass:"",
			position:"center",
			height:"auto",
			width:490,
			show:{effect:"fade",speed:500},
			hide:{effect:"fade",speed:250},
			open:function(){
				$('#promptLinkingModal .confirm_message').html("");
				// moved click tracking to the fb post button click function
			}
	}).show();
	$('.ui-dialog-titlebar-close').css("display","none");
	
	$(".haveAcct_btn").click(function() {
		urchinTracker("/clicks/fbConnect/have_an_account");
		closeDialog("promptZwinkyAcctModal");
		openDialog("promptLinkingModal");
		//setTimeout(function(){$('#promptZwinkyRegModal .uName').focus()},1000);
	});
	$(".needAcct_btn").click(function() {
		urchinTracker("/clicks/fbConnect/need_an_account");
		closeDialog("promptZwinkyAcctModal");
		FbCommon.fillRegForm('modal');
		openDialog("promptZwinkyRegModal");
	});
  	//Create FB Zwinky registration modal
  	$("#promptZwinkyRegModal").dialog("destroy").dialog({
		autoOpen:false,
		draggable:true,
		resizable:false,
		modal:true,
		overlay:{opacity:.6,background:"black"},
			dialogClass:"",
			position:"center",
			height:"auto",
			width:513,
			show:{effect:"fade",speed:500},
			hide:{effect:"fade",speed:250}
		 }
	).show();
	$('.ui-dialog-titlebar-close').css("display","none");
	
	$("#promptZwinkyRegModal #linkedAcct").click(function() {
		urchinTracker("/clicks/fbConnect/prompt_linking");
		openDialog("promptLinkingModal");	
	});
	
	$("#promptZwinkyRegModal .cancel_btn, #under13Modal .cancel_btn, #promptLinkingModal .cancel_btn, #promptZwinkyAcctModal .cancel_btn, #confirmLinkingModal .cancel_btn").click(function() {
		closeDialog("under13Modal", true);
		closeDialog("promptLinkingModal", true);
		closeDialog("confirmLinkingModal", true);
		closeDialog("promptZwinkyRegModal", true);
		closeDialog("promptZwinkyAcctModal", true);
  	});
	
	$("#promptZwinkyRegModal .cancel_btn, #promptZwinkyRegModal #linkedAcct").click(function() {
		urchinTracker("/clicks/fbConnect/cancel_registration");
		FbCommon.resetRegForm();
		closeDialog("promptZwinkyRegModal");
  	});
  	 
  	$("#promptZwinkyRegModal .joinNow_btn").click(function() {
  		urchinTracker("/clicks/fbConnect/join_now");
		FbCommon.registerZwinkyUser();
  	});
  	
  	//Create under 13 dialog
  	$("#under13Modal").dialog("destroy").dialog({
		autoOpen:false,
		draggable:true,
		resizable:false,
		modal:true,
		overlay:{opacity:.6,background:"black"},
			dialogClass:"",
			position:"center",
			height:"auto",
			width:513,
			show:{effect:"fade",speed:500},
			hide:{effect:"fade",speed:250}
	}).show();
	$('.ui-dialog-titlebar-close').css("display","none");
}
/**
 * return month index given month string
 */
function getMonthIndex(m) {
	if (m=='february') return 2;
	else if (m=='march') return 3;
	else if (m=='april') return 4;
	else if (m=='may') return 5;
	else if (m=='june') return 6;
	else if (m=='july') return 7;
	else if (m=='august') return 8;
	else if (m=='september') return 9;
	else if (m=='october') return 10;
	else if (m=='november') return 11;
	else if (m=='december') return 12;
	else return 1;
}
/**
 * get cookie data given name
 */
function getCookie(name) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var ii = 0;
	while (ii < clen) {
		var jj = ii + alen;
		if (document.cookie.substring(ii, jj) == arg)
			return getCookieVal (jj);
		ii = document.cookie.indexOf(" ", ii) + 1;
		if (ii == 0) break;
	}
}