//==========================================================
/* global vars
-----------------------------------------------------------*/
var domain = {}; //main domain object
domain.settings = {};
domain.settings.isPerformingSearch = false;
domain.settings.defaultdomain = "johnsmith";

/* request a domain check
----------------------------------------------------------------*/
domain.check = function(SLD,DomainList,xhrObj){
	if ((!SLD && !DomainList) || (domain.settings.isPerformingSearch==true && !xhrObj)){
		//console.info("not enough info or already performing a search");
		return; 
	}else if (!xhrObj){
		agent.statusChange("Searching available domains - please wait a moment...",null,300000,true);
		agent.FX.newdomainsearch.slideOut();
		domain.settings.latestManualSearch = $("domainText").value.split(",")[0];
		if (SLD){ 			
			if (!dom.checkFieldFormat("domainText")){ 
				agent.statusChange("Invalid domain name:" + $("domainText").value,"error");				
				return;
			}
			DomainList = domain.FQDNcombo(SLD.split(",")[0]);
		}
		dom.addFormData("__domainSearchForm","ds","true","hidden");
		if (DomainList){
			DomainList = DomainList.toLowerCase();
			dom.addFormData("__domainSearchForm","DomainList",DomainList,"hidden");
		}		

		var sURL = rootPath + "incs/siteXHR.asp";
		xhr.connect(sURL,"POST",domain.check,[SLD,DomainList],"__domainSearchForm");
	}else if (xhrObj){
		//dump the response into an object
		var ir = xhr.XMLtoObj(xhrObj.getElementsByTagName("interface-response")[0]);
		//console.info(ir);
		if (parseInt(ir.ErrCount)!=0){ //check for errors in the retrieval
			//domain.displayStatus("There was an error trying to look up your domains.");
			console.info ("errors below:");
			console.info (ir.errors);

		}else{	//otherwise show search results
			console.info("found: ", ir);
			$("domainSearchResults").innerHTML = "";
			var availableCount = 0;
			//var curDom = dom.addNode(null,placeInObj,"div",{id:curDomName,isDomain:true,className:resultClassName},{textAlign:"left"});
			dom.addNode("Look up a <span class='fakeLink' id='__resetDomainSearch'>different domain</span>","domainSearchResults","div",{},{textAlign:"right"});
			addEvent("__resetDomainSearch","click",function(e){ 
														agent.statusChange(false);
														agent.FX.newdomainsearch.slideIn();
														agent.FX.newdomainresults.hide();
														$("domainSearchResults").innerHTML = "";
													});
			for (var i=1;i<parseInt(ir.DomainCount)+1;i++){
				var curDomName = ir["Domain" + i];
				var isCA = (ir["Domain" + i].indexOf(".ca") >-1)?true:false;
				var returnCode = parseInt(ir["RRPCode" + i]);
				var isAvailable = (returnCode == 210)?true:false;
				//var placeInObj = isAvailable?avDom:unavDom;
				//var resultClassName = (isAvailable)?((placeInObj.childNodes.length%2==0)?"searchResultEven":"searchResultOdd"):"searchResultFailed";
				//var curDom = dom.addNode(null,placeInObj,"div",{id:curDomName,isDomain:true,className:resultClassName},{textAlign:"left"});
				//var domName = dom.addNode("<b>" + curDomName + "</b>" + ((isCA)?" <span style='color:#CC0717;font-size:10px;'>*canada only</span>":""),curDom,"div",{id:"domName_" + curDomName},(isAvailable)?{styleFloat:"left",cssFloat:"left"}:{}); // add the domain name
				if (isAvailable){
					if (!hasAvailableHeader){
						var hasAvailableHeader = true;
						dom.addNode("Here's a list of the available domains we found:","domainSearchResults","h3",{},{});
                        dom.addNode("<a href='http://sfnet.opr.statefarm.org/agency/manuals/mct/int_redirect.shtml' target='_blank'>Does your domain conform to State Farm Guidelines?</a>","domainSearchResults","h4",{},{});
						//var avDom = dom.addNode("Available Domains<img src='" + rootPath + "images/interface/phantom.gif' width='100px' height='1px' border='0'>No. of Years","domainSearchResults","div",{id:"availableDomainResults",className:"textSFRed11Bold"},{});
						dom.addNode(null,"domainSearchResults","table",{id:"domainSearchAvailableTable"});
						var avTB = dom.addNode(null,"domainSearchAvailableTable","tbody",{});
						var avTR = dom.addNode(null,avTB,"tr",{});
						dom.addNode("Domain Name",avTR,"th",{colSpan:2});	
						dom.addNode("Years to Buy",avTR,"th",{},{textAlign:"right"});			
						dom.addNode("Cost",avTR,"th",{},{textAlign:"right"});
						dom.addNode("&nbsp;",avTR,"th",{});
						dom.addNode("&nbsp;",avTR,"th",{});
						//dom.addNode("To begin a transfer you need a few things:",headTR,"td",{className:"header",colSpan:3},{});
					}
					var curTR = dom.addNode(null,avTB,"tr",{id:curDomName,isDomain:true});
					dom.addNode(curDomName,curTR,"td",{},{});
					dom.addNode(((isCA)?" <span style='color:#CC0717;font-size:10px;'>*canada only</span>":"&nbsp;"),curTR,"td",{},{});
					var yearChoice = dom.addNode("",curTR,"td",{id:"avYearSelect_" + curDomName},{});
					for (var y=1;y<6;y++){
						var yearOption = dom.addNode(y,yearChoice,"span",{domname:curDomName,className:"inActiveYearDurationOption"});
						addEvent(yearOption,"click",function(e){
														var ob = (e.srcElement || e.target);																					
														domain.setActiveYearDuration(ob.domname,ob.innerHTML);
													});
					}					
					
					dom.addNode("",curTR,"td",{id:"avCost_" + curDomName},{textAlign:"right"});
					var avAddTD = dom.addNode(null,curTR,"td",{},{textAlign:"right"});
					var domAddBtn = dom.addNode(null,avAddTD,"input",{domainName:curDomName,id:"addBtn_" + curDomName,value:"Add to cart",type:"button",className:"smallActiveButton"},{styleFloat:"right",cssFloat:"right"});
					addEvent(domAddBtn,"click",function(e){cart.addDomain((e.srcElement || e.target).domainName)});
					dom.addNode("&nbsp;",curTR,"td",{id:"avStatus_" + curDomName},{});
	
					domain.setActiveYearDuration(curDomName,3);//default to 2 year purchase	
					availableCount++;
				}else{
					if (!hasNotAvailableHeader){
						var hasNotAvailableHeader = true;
					}
					//var unavDom = dom.addNode("These domains are not available:","domainSearchResults","div",{id:"unavailableDomainResults"});
				}
			}
			if (availableCount == 0){
				dom.addNode("We were unable to find any available domains for that name.","domainSearchResults","h3",{},{});
			}
			cart.disableMatchedSearchResults();
			agent.FX.newdomainresults.slideIn();
			agent.statusChange();
		}
	}else{
		alert("Rats... Nothing found.");
		domain.showSearchProgress();
	}
	dom.removeObject("__domainSearchForm");
};

/* request a domain check and add it to the cart if it's available
----------------------------------------------------------------*/
domain.checkAndAdd = function(cartList,yearObj,xhrObj){
	if (!xhrObj && cartList){
		var cartAry = cartList.split(",");
		DomainAry = [];
		var yearObj = {};
		for (var i=0;i<cartAry.length;i++){
			var domAry = cartAry[i].split(":");
			DomainAry.push(domAry[0]);
			yearObj[domAry[0]] = domAry[1]?domAry[1]:1;
		}
		var DomainList = DomainAry.join(",");

		dom.addFormData("__cartReloadSearchForm","ds","true","hidden");
		if (DomainList){
			dom.addFormData("__cartReloadSearchForm","DomainList",DomainList,"hidden");
		}		
		var sURL = rootPath + "incs/siteXHR.asp";
		xhr.connect(sURL,"POST",domain.checkAndAdd,[cartList,yearObj],"__cartReloadSearchForm");
	}else if (xhrObj){
		//dump the response into an object
		var ir = xhr.XMLtoObj(xhrObj.getElementsByTagName("interface-response")[0]);
		console.info(ir);
		if (parseInt(ir.ErrCount)!=0){ //check for errors in the retrieval
			//domain.displayStatus("There was an error trying to look up your domains.");
			//console.info ("errors below:");
			//console.info (ir.errors);
		}else{	//otherwise show search results
			for (var i=1;i<parseInt(ir.DomainCount)+1;i++){
				if (parseInt(ir["RRPCode" + i]) == 210){ //available
					cart.addDomain(ir["Domain" + i],yearObj[ir["Domain" + i]]);
				}else{
					console.info (ir["Domain" + i] + " is no longer available");
				}
			}
			cart.disableMatchedSearchResults();
		}
	}else{
		alert("Rats... Nothing found.");
		domain.showSearchProgress();
	}
	dom.removeObject("__domainSearchForm");
};

/* request a domain transfer
----------------------------------------------------------------*/
domain.transfer = function(domainName,xhrObj,xhrText){
	if (!xhrObj && $("domainTransferSLD").value && $("domainTransferTLD").value){
		var domainName = $("domainTransferSLD").value + "." +  $("domainTransferTLD").value
		agent.statusChange("Looking up <b>" + domainName + "</b> - please wait a moment... <img src='" + rootPath + "images/interface/loading_small.gif' border=0 />",null,300000);
		agent.FX.transferdomainsearch.slideOut();
		$("transferSearchResults").innerHTML = "";
		if (!$("dtr")){ dom.addFormData("transferForm","dtr","true","hidden");}
		var sURL = rootPath + "incs/siteXHR.asp";
		
		xhr.connect(sURL,"POST",domain.transfer,[domainName],"transferForm");
	}else if (xhrObj){ //response returned
		var wi = xhr.XMLtoObj(xhrObj.getElementsByTagName("QueryResult")[0]);
		console.info("transfer info: ",wi);
		//dump the response into an object
		var isPossible = (wi.FoundMatch=="Yes" || (wi.FoundMatch=="Unknown" && wi.QueryResult.FoundMatch=="Yes"))?true:false;
		if (!isPossible){
			agent.statusChange('We cannot locate <b>' + domainName + '</b>. Please check the spelling, or you may buy this domain as new (not transfer it).','error',15000);
			agent.FX.transferdomainsearch.slideIn();
		}else{				
			var wd = {};			
			var wir = (wi.QueryResult)?wi.QueryResult.WhoisRecord:wi.WhoisRecord;
			wd.status				= wir.Domain.Status;

			if (wd.status.constructor == Array){
				wd.isLocked = false;	
				for (var i = 0; i<wd.status.length; i++){
					if (wd.status[i] == "clientTransferProhibited" || wd.status[i].toLowerCase().indexOf("lock") > -1 ){
						tempStatus  = wd.status[i].toLowerCase();
						wd.isLocked = true;				
					}
				}
			}else if(wd.status == "clientTransferProhibited" || wd.status.toLowerCase().indexOf("lock") > -1 || wd.status=="TRANSFER PROHIBITED"){
				wd.isLocked = true;	
			}
			
			console.info(wir.ExpiresDate);
			wd.expDate			= smallDate(getWhoisDate(wir.ExpiresDate));
			if (wi.WhoisRecord && wi.WhoisRecord.ExpiresDate){
				altExpDate 		= smallDate(getWhoisDate(wi.WhoisRecord.ExpiresDate));
				wd.expDate 		= (altExpDate > wd.expDate)?altExpDate:wd.expDate;
			}
			wd.newExpDate 		= smallDate(dateAdd("yyyy",1,wd.expDate)); //reflects the one year extension during a transfer
			wd.remDays			= dateDiff("d",now(true),wd.expDate);
			wd.transferCost		= (wd.remDays + cart.settings.transferautoextension) * cart.settings.transferdailyprice;
			wd.registrar 		= (wir.Registrar.Name || wir.Registrar.Handle);
			wd.registrarURL		= wir.Registrar.HomePage?wir.Registrar.HomePage:"n/a";				
			wd.email			= (wi.WhoisRecord && wi.WhoisRecord.AdminContact)?wi.WhoisRecord.AdminContact.Email:null;
			
			if (!wd.email){
				if (wi.WhoisRecord && wi.WhoisRecord.RawText){
					var mailAry = /\b([\w-\.]+@[\w-\.]+\.[a-zA-Z]{2,4})\b/.exec(wi.WhoisRecord.RawText);
					wd.email 	= (mailAry && mailAry.length)?mailAry[0]:null;
					wd.unreliableEmail = true;
				}
			}
		
			if ($("cartTR_" + domainName)){
				agent.statusChange('This domain is already in your cart!','error');
				agent.FX.transferdomainsearch.slideIn();
			}else{
				dom.addNode("Look up a <span class='fakeLink' id='__resetTransferSearch'>different domain</span>","transferSearchResults","div",{},{textAlign:"right"});
				addEvent("__resetTransferSearch","click",function(e){ 
															agent.statusChange(false);
															agent.FX.transferdomainsearch.slideIn();
															$("transferSearchResults").innerHTML = "";
															});
				
				var stMsg = "<h4>Information found for <span style='color:green;background-color:yellow;'>www." + domainName + "</span>:</h4>";
				stMsg += "<ul><li>This domain expires on <b>" + wd.expDate + "</b></li>";
				stMsg += "<li>There are <b>" + wd.remDays + "</b> days left</li>";
				stMsg += "<li>Transfering this domain <b>adds 1 year</b> to your ownership";
				stMsg += "<li>After transfer, your new expiration date would be <b>" + smallDate(dateAdd("yyyy",1,wd.expDate)) + "</b></li>";
				
				stMsg += "<li>The one-time transfer fee would be <b>" + formatCurrency(wd.transferCost) + "</b></li>" ;
				stMsg += "<li>Email redirects are <b>not</b> transferred with a domain name but can be added back during the checkout process at an additional cost</li>" ;
				stMsg += "<li>Click here to find out <span id='faq6.2' class='fakeLink'>how to calculate the cost</span></li>";
				stMsg += "</ul>"

				dom.addNode(stMsg,"transferSearchResults","div",{},{});
				
				addEvent("faq6.2","click",function(e){dom.showModalDialog("faq6_answer",{title:"What is the cost to transfer?"})});
	
			
				dom.addNode(null,"transferSearchResults","table",{id:"transferStepTable"});
				var tsTB = dom.addNode(null,"transferStepTable","tbody",{});
				var headTR = dom.addNode(null,tsTB,"tr",{});
				dom.addNode("To begin a transfer you need a few things:",headTR,"td",{className:"header",colSpan:3},{});
				
				var tsTR = dom.addNode(null,tsTB,"tr",{});
				
				
				var liMsg = "<h4>1. Verify this e-mail</h4>";
				 //First, you need <b>email access</b> to the address listed in the domain ownership records. ";
				if (wd.email){
					//if (wd.unreliableEmail){
					//	liMsg += "We found an address that you may not recognize, but may give you a starting point for requesting a change:";
					//}else{
					//	liMsg += "The current domain owner's e-mail is listed as:";
					//}
					liMsg += "Does this e-mail address ring a bell?"
					liMsg += "<div style='color:green;font-weight:bold;text-align:center;'>"+ wd.email + "</div>";
					liMsg += "<br><b>If so, great!</b> You will need access to this e-mail address in order to approve the transfer request.";
					liMsg += "<br><br><b>If not</b>, you'll need to get this address changed to <b>your e-mail address</b> before you can start the transfer.";
				}else{
					liMsg += "<b style='color:red;'>We can't find an e-mail address</b> for this domain record.";
					liMsg += "Contact us at <b>1-877-828-3131</b> or write us at support@mysfdomain.com to look into this.<br><br>";
					liMsg += "If you've already verified with us this domain has the correct e-mail address, you may go ahead and "
					liMsg += "complete your transfer order."
				}				
				dom.addNode(liMsg,tsTR,"td");
				
				//console.error("XXXX--- domain transfers forced to show UNLOCKED -- remove this for production!!! ---XXXX");
				//wd.isLocked = false; //forced for debugging only
				
				if (wd.isLocked){  //oh noes!!111
					liMsg = "<h4>2. Change your lock</h4>";
					liMsg += "<b style='color:red;'>Your domain is currently \"Locked\"</b>.<br>";
					liMsg += "It needs to be unlocked to transfer it.  Contact who you originally bought the domain through and ";
					liMsg += "have them unlock your domain.  Click here for details on <span class='fakeLink' id='faq7a'>unlocking your domain</span>. ";
					liMsg += "<br><br><b>It often takes up to 24 hours</b> after you unlock it for the change to activate.  Please be patient. ";
					liMsg += "After 24 hours, search for your domain again on this page, and we'll show you the current status."
				}else{
					liMsg = "<h4>2. Don't change your lock</h4>";
					liMsg += "<b style='color:green;'>Your domain is \"unlocked\"</b>. This is perfect - don't change a thing.";
				}
				dom.addNode(liMsg,tsTR,"td",{},{width:"250px"});
				if (wd.isLocked){
					addEvent("faq7a","click",function(e){dom.showModalDialog("faq7_answer",{title:"Unlocking a Domain"})});
				}
				
				liMsg = "<h4>3. Paste the code</h4>";
				liMsg += "<b>Your \"Authorization Code\":</b> ";
				liMsg += "This is also known as your <b>\"EPP\"</b> or <b>\"AuthInfo Code\"</b>.  You need to request it from your ";
				liMsg += "current registrar and provide it here to allow the transfer to happen.";
				liMsg += "<br><b>Authorization Code:</b> ";
				
				var aiLI = dom.addNode(liMsg,tsTR,"td");
				//dom.addNode(liMsg,tList,"br",{className:'clearboth'});
				
				dom.addFormData(aiLI,"eppCode","","text");
				dom.setFieldFormat("eppCode",{keyup:"alphanumeric",minlength:2,maxlength:100});
				
				var tcTR = dom.addNode(null,tsTB,"tr",{});
				var tcTD = dom.addNode("",tcTR,"td",{colSpan:3},{background:"#D3FEBA",textAlign:"right"});
				if (wd.isLocked){
					tcTD.style.backgroundColor = "#eee";
					tcTD.style.color = "#555";
					tcTD.innerHTML = "After you've got this domain <b>unlocked</b>, you'll be able to add it to your cart and continue.";
					dom.addNode("",tcTD,"input",{id:"transferDomainButton",type:"button",value:"Cannot Add To Cart",className:"smallInActiveButton"});
				}else{
					tcTD.innerHTML =  "If the <b>E-Mail</b> above is yours and the <b>Authorization Code</b> is filled out, you can add this to your cart and start the transfer.";
					dom.addNode("",tcTD,"input",{dName:domainName,aEmail:wd.email,remDays:wd.remDays,id:"transferDomainButton",type:"button",value:"Add To Cart",className:"smallActiveButton"});
				
					addEvent("transferDomainButton","click",function(e){
																var b = (e.srcElement || e.target);
																if(dom.checkFieldFormat($("eppCode"))){
																	cart.addDomain(b.dName,null,true,$("eppCode").value,b.aEmail,b.remDays);
																	$("domainTransferSLD").value = "";
																	agent.FX.transferdomainsearch.slideIn();
																	$("transferSearchResults").innerHTML = "Your domain has been added to your cart.  Go to your cart to complete the checkout process.";
																}else{
																	alert("Please fill in your Authorization Code to continue");
																}
																});
				}
				
				var contactMsg = "If <span style='color:red;'>any of the above items</span> are missing or wrong, ";
				contactMsg += "you can't start a transfer. Contact who you bought your domain from originally and ";
				contactMsg += "have them make the necessary changes.  Below you can find the public records related to your domain.";
				
				contactMsg += "<h4>Current Registrar Information for " + domainName + ":</h4>";	
				if (!wd.email || wd.unreliableEmail){  //not so detailed info					
					contactMsg += "Possible contact info for <b>" + domainName + ":</b><br>";	
					contactMsg += "Registrar Name: " + wd.registrar + "<br>";
					contactMsg += "Home Page: <a href='" + wd.registrarURL + "' target='_blank'>" + wd.registrarURL + "</a><br>";
					if (wd.email){
						contactMsg += "E-Mail: <a href='mailto:" + wd.email +"?subject=Administrative Contact Information for " + domainName + "'>" + wd.email + "</a><br>";
					}

				}else{
					
					contactMsg += "Registrar Name: " + wd.registrar + "<br>";
					contactMsg += "Home Page: <a href='" + wd.registrarURL + "'>" + wd.registrarURL + "</a><br>";
					contactMsg += "<br><h4>Current Administrative Contact Details:</h4>";	
					contactMsg += "Owner Name: " + wi.WhoisRecord.AdminContact.Name + "<br>";
					contactMsg += "E-Mail: " + "<a href='mailto:" + wi.WhoisRecord.AdminContact.Email +"?subject=Administrative Contact Information for " + domainName + "'>" + wi.WhoisRecord.AdminContact.Email + "</a><br>";
					contactMsg += "Address: " + wi.WhoisRecord.AdminContact.Address + "<br>";
					contactMsg += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
					contactMsg += "&nbsp;" + wi.WhoisRecord.AdminContact.City + " " + wi.WhoisRecord.AdminContact.StateProvince + " " + wi.WhoisRecord.AdminContact.PostalCode + "<br>";
					contactMsg += "Phone: " + wi.WhoisRecord.AdminContact.Phone + "<br>";						
				}
				dom.addNode(contactMsg,"transferSearchResults","div",{className:"transferRegistrantInfo"},{});
			}
		agent.statusChange();
		//agent.FX.transferdomainsearch.slideIn();
		//agent.FX.transferdomainresults.slideIn();
		}
	}else if (!($("domainTransferSLD").value && $("domainTransferTLD").value)){
		agent.statusChange('You need to tell us the domain name to look up.','error');
	}
	//dom.removeObject("__domainTransferForm");
};

/* select the number of years to buy for a domain
----------------------------------------------------------------*/
domain.setActiveYearDuration = function(dVal,numYears){
	numYears = parseInt(numYears);
	$(dVal).years = numYears;
	
	var yn = $("avYearSelect_" + dVal);
	for (var i=0;i<yn.childNodes.length; i++){
		var yo = yn.childNodes[i];
		if (parseInt(yo.innerHTML)){
			if (parseInt(yo.innerHTML) == numYears){//matching number of years
				yo.className = "activeYearDurationOption";
			}else{
				yo.className = "inActiveYearDurationOption";
			}
		}
	}
	$("avCost_" + dVal).innerHTML = formatCurrency(cart.settings.newdomainprice[numYears]);
};
/* hide and show items while searching for domains
----------------------------------------------------------------*/
domain.showSearchProgress = function(isSearching,isTransfer){
	if (isSearching){
		if (isTransfer){
			dom.toggle("transferForm",false);
			dom.toggle("transferProgressDiv",true);		
		}else{
			$("badDomainNameMessage").innerHTML = "";
			domain.settings.isPerformingSearch = true;
			//dom.toggle("searchFieldDiv",false);
			//dom.toggle("searchProgressDiv",true);			
		}
	}else{
		if (isTransfer){
			dom.toggle("transferForm",true);
			dom.toggle("transferProgressDiv",false);
		}else{
			domain.settings.isPerformingSearch = false;
			//dom.toggle("searchFieldDiv",true);
			//dom.toggle("searchProgressDiv",false);		
		}
	}
};



/* create a delimited list of domain names
----------------------------------------------------------------*/
domain.FQDNcombo = function(sldList,tldList){
	if (sldList){
		if (!tldList){ tldList = "com,net,org,biz,us,ca"; }
		var sldAry = sldList.split(",");
		var tldAry = tldList.split(",");
		var delimVal = "";
		var outVal = "";
		for (var i=0; i<sldAry.length; i++){
				for (var j=0; j<tldAry.length; j++){
					outVal += delimVal + sldAry[i] + "." + tldAry[j];
					delimVal =  ",";
				}
		}
		return outVal;
	}else{
		return null;
	}
};

/* create combinations of domain names from posted agent info
----------------------------------------------------------------*/
domain.FQDNAgentNameCombo = function(){
	var SLDList = "";
	if (location.post.fName && location.post.lName){
		fName = location.post.fName.toLowerCase();
		lName = location.post.lName.toLowerCase();	
		SLDList += fName + lName;
		SLDList += "," + fName + lName + "agency";
		SLDList += "," + fName + "-" + lName + "agency";
		return domain.FQDNcombo(SLDList);
	}else{
		//domain.displayStatus("No login info");
		return null;
	}
};

/* generically display status info
----------------------------------------------------------------*/
domain.displayStatus = function(sMsg,parentObj,noFadeOut){	
	var s = parentObj?$(parentObj):$("statusMessage");
	if (typeof s.curOpacity == "undefined"){
		s.curOpacity=0;
		fadeCSS.setOpacity(s,0);
	}		
	if(!s.curOpacity==0 && !noFadeOut){
		fadeCSS.ease._out(s,domain.displayStatus,[sMsg,s]);
		s.curOpacity=0;		
	}else if(s.curOpacity==0 && sMsg){
		fadeCSS.setOpacity(s,0);
		setTimeout(function(){
				s.innerHTML = sMsg;
				},10);
		fadeCSS.ease._in(s,function(){setTimeout(function(){domain.displayStatus(null,s,noFadeOut);},1);});
		s.curOpacity = 100;
	}
};
