var wimzi = {	key:null,	creator:null,	cssURI: "snowdust_standard.css",	text: {		offlineMsg:null,		greetingMsg:null,		widgetTitle:null,		initialInputValue:"Type here, press \"Enter\" to send.",		nicknameLabel:"Your Name: "	},	init: function() {		var fn = function() {			AIM.params.DEBUG = false;			AIM.params.RENDER_SEND_BUTTON = false;			AIM.params.USE_EMOTICONS = false;			AIM.params.callbacks.startSession = ["wimzi.callbacks.startSession"];			AIM.params.callbacks.changeFriendly = ["wimzi.callbacks.changeFriendly"];			AIM.params.callbacks.endSession = ["wimzi.callbacks.endSession"];			AIM.params.callbacks.listener.buddylist = ["wimzi.callbacks.buddylist"];			AIM.params.callbacks.listener.presence = ["wimzi.callbacks.updatePresence","AIM.ui.displayStatusChange"];			AIM.params.SHOW_TIMESTAMP = false;			AIM.core.subscriptions = "buddylist,presence,im"			wimzi.key = document.getElementById("wimziContainer").getAttribute("wimzi_key");			AIM.params.wimKey = wimzi.key;			// much of the WIM API requires this element as a container element for various things it creates. Create it if its not there.			if(!document.getElementById("AIMBuddyListContainer")) {				var o = document.createElement("div");				o.setAttribute("id","AIMBuddyListContainer");				o.style.height = "1px"; o.style.width="1px";				document.getElementsByTagName("body")[0].appendChild(o);			}			//AIM.util.createSoundObjects();			//wimzi.startSession();					}		window.addEventListener?window.addEventListener("load",fn,false):window.attachEvent("onload",fn);		window.addEventListener?window.addEventListener("beforeunload",wimzi.endSession,false):window.attachEvent("onbeforeunload",wimzi.endSession);	},		startSession: function() {		var tObj = {			dataURI:AIM.params.baseTransactionURI + AIM.params.transactions.startSession + "?anonymous=1&k=" + wimzi.key + "&f=json&events=" + AIM.core.subscriptions + "&c=AIM%2Ecore%2EacceptData",			type:"startSession"		}		AIM.core.requestData(tObj);	},		endSession: function() {		var tObj = {			dataURI: AIM.params.baseTransactionURI + AIM.params.transactions.endSession + "?k=" + AIM.params.wimKey + "&aimsid=" + AIM.params.sessionId + "&f=json&c=AIM%2Ecore%2EacceptData",			type:"endSession"		}		AIM.core.requestData(tObj);	},		changeFriendly: function(fName) {		if(fName.length > 16) fName = fName.substring(0,16);		var tObj = {			dataURI: AIM.params.baseTransactionURI + "presence/setState?aimsid=" + AIM.params.sessionId + "&view=online&f=json&c=AIM%2Ecore%2EacceptData&friendly=" + fName,			type:"changeFriendly",			friendlyName:fName		}		AIM.core.requestData(tObj);	},		createWidget: function(json) {			var data = json.groups[0].buddies[0];		var windowId = data.aimId;		var aimId = windowId;		//AIM.util.createStyleSheet(wimzi.cssURI);		wimzi.greeting = data.greetingMsg;		wimzi.goodbye = data.offlineMsg;		if(document.getElementById(windowId + "_AIMwindow")) return;		var mObj = document.getElementById("wimziContainer");		var win = AIM.ui.createWindowFrame(windowId,"AIMBuddyListIMWindow", wimzi.text.widgetTitle);		win.style.display = "block";		var txtArea = document.createElement("div");		txtArea.className = "AIMBuddyListIMWindowTextArea";		txtArea.setAttribute("id","AIMTextArea_" + windowId);						var h1 = win.getElementsByTagName("h1")[0];		var ownerStatus = document.createElement("div");		ownerStatus.setAttribute("id","wimziOwnerStatus");		ownerStatus.className = "wimziOwnerStatus_" + data.state;		ownerStatus.innerHTML = data.displayId + " is " + data.state + ".";		wimzi.creator = data.displayId;		win.insertBefore(ownerStatus,h1.nextSibling);				var txtInput = document.createElement("input");		txtInput.setAttribute("type","text");		txtInput.className = "AIMBuddyListIMWindowTextInput";		txtInput.setAttribute("id","AIMTextInput_" + windowId);		txtInput.setAttribute("wim_aimId",aimId);		txtInput.setAttribute("maxlength","1024");		txtInput.setAttribute("value",wimzi.text.initialInputValue);		txtInput.onfocus = function() {			if(!this.cleared) {				this.value = "";				this.cleared = true;			}		}		AIM.util.addEvent(txtInput,AIM.eventHandlers.handleKeyUp,"keyup");				if(AIM.params.RENDER_SEND_BUTTON) {			var okBtn = document.createElement("button");			okBtn.setAttribute("type","button");			okBtn.className="AIMBuddyListIMWindowButton";			okBtn.setAttribute("id","AIMBuddyListIMWindowButton_" + windowId);			okBtn.setAttribute("wim_aimId",aimId);			okBtn.appendChild(document.createTextNode(AIM.params.text.sendButtonText));			AIM.util.addEvent(okBtn,AIM.eventHandlers.handleClick,"click");		}				var typingStatus = document.createElement("span");		typingStatus.className = "AIMBuddyListTypingStatus";		typingStatus.setAttribute("id",windowId + "_typingStatus");				//if(AIM.params.CREATE_AVAILABILITY_MENU_IM) win.appendChild(AIM.ui.createAvailabilityMenu());		win.appendChild(txtArea); 		win.appendChild(txtInput); 		if(AIM.params.RENDER_SEND_BUTTON) win.appendChild(okBtn);		win.appendChild(typingStatus);						var oNick = document.createElement("input");		oNick.setAttribute("type","text");		oNick.setAttribute("maxlength","16");		oNick.className = "AIMBuddyListIMWindowTextInput";						oNick.setAttribute("value",AIM.params.user);		wimzi.changeFriendly(oNick.value);					oNick.onblur = function(e) {				if(this.value.trim() == "") return;				wimzi.changeFriendly(this.value);			}						oLbl = document.createElement("label");		oLbl.style.display = "block";		oLbl.appendChild(document.createTextNode(wimzi.text.nicknameLabel));		oLbl.appendChild(oNick);			win.appendChild(oLbl);						mObj.appendChild(win);				if(data.state == "offline") { // || data.state == "away") {			var msg = decodeURIComponent(wimzi.text.offlineMsg);		} else {			var msg = decodeURIComponent(wimzi.text.greetingMsg);					}				//AIM.params.text.errors.serverErrors["401"] = "The connection has been lost. <a href=\"javascript:location.reload();\">Click here</a> to reload the page to continue your conversation.";		//AIM.params.text.errors.serverErrors["602"] = "That user is offline and unable to receive messages at this time.";		var ts = AIM.params.SHOW_TIMESTAMP?AIM.util.formatTimeStamp(new Date()):"";		document.getElementById("AIMTextArea_" + data.aimId).innerHTML =  "<p class=\"odd\">" + msg + "</p>";				//var string = AIM.params.user + "     IP:  " + window.IP + "        Palace:  " + document.LiveSupport.Palace.value;		//setTimeout('AIM.transactions.sendTextIM("support", "'+string+'")',500);	},		callbacks: {		startSession: function(json) {			var InputedPalace = document.LiveSupport.Palace.value;			var InputedName = document.LiveSupport.Name.value;			var obj = json.response;			switch(obj.statusCode) {				case 200:					if (InputedName == "") { InputedName = "IPalaces User"; }					AIM.params.user = InputedName; //"IPalaces User"; //obj.data.myInfo.displayId;					AIM.params.sessionId = obj.data.aimsid;					AIM.params.listenerURI = obj.data.fetchBaseURL + "&f=json&c=AIM%2Ecore%2Elisten&timeout=" + AIM.params.REQUEST_TIMEOUT;					AIM.core.destroyListenerObject(true);					AIM.core.activeSession = true;					wimzi.text.widgetTitle= "Live Support"; //obj.data.widgetTitle;					wimzi.text.greetingMsg = obj.data.greetingMsg;					wimzi.text.offlineMsg = obj.data.offlineMsg;					//if(obj.data.cssURI) wimzi.cssURI = obj.data.cssURI;						AIM.transactions.sendTextIM("Brian", AIM.params.user + "     IP:  " + window.IP + "        Palace:  " + InputedPalace);					break;				case 603:					//widget is disabled. stub out the data needed to build the widget					wimzi.text.widgetTitle = "Live Support"; //obj.data.widgetTitle;					wimzi.text.offlineMsg = obj.data.offlineMsg;					var oData = {						groups:[{							buddies:[{								aimId:obj.data.creatorDisplayName,								state:"offline",								displayId:obj.data.creatorDisplayName							}]						}]					}					wimzi.createWidget(oData);					break;				default:					return alert("Unable to start anonymous IM session.");					break;			}		},				endSession: function(json) {				},				changeFriendly: function(json) {			if(json.response.statusCode == 200) {				AIM.params.user = AIM.core.AIMData[json.response.requestId].objData.friendlyName;			} 		},				buddylist: function(json) {			wimzi.createWidget(json);		},						updatePresence: function(json) {			var oElement = document.getElementById("wimziOwnerStatus");			if(oElement) {				oElement.innerHTML = wimzi.creator + " is " + json.state;				oElement.className = "wimziOwnerStatus_" + json.state;			}		}	}}wimzi.init();