
function initLoginBox()
{$('dSigninError').hide();window.setTimeout(focusLoginBox,700);}
function focusLoginBox()
{var loginForm=$('loginForm');var email=loginForm.down(".email");var password=loginForm.down(".password");try{if(isStrEmpty(email.value))
email.focus();else
password.focus();}catch(e){}}
function validateRequiredLogin(form){var isValid=true;$(form).down('.dSigninError').innerHTML='';var focusField=null;var i=0;var fields=new Array();var oRequired=new requiredLogin();for(var x in oRequired){var field=form[oRequired[x][0]];if(field.type=='text'||field.type=='textarea'||field.type=='file'||field.type=='select-one'||field.type=='radio'||field.type=='password'){var value='';if(field.type=="select-one"){var si=field.selectedIndex;if(si>=0){value=field.options[si].value;}}else{value=field.value;}
if($(field).hasClassName("email")){if(!value.match(/((([^<>()[\]\\.,;:\s@\""]+(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})))/ig))
{isValid=false;$(form).down('.dSigninError').innerHTML=gHeaderStrings.email_error;$(form).down('.dSigninError').show();return isValid;}}
if(trim(value).length==0){if(i==0){focusField=field;}
fields[i++]=oRequired[x][1];isValid=false;}}}
if(fields.length>0){focusField.focus();$(form).down('.dSigninError').innerHTML=fields[0];$(form).down('.dSigninError').show()}
return isValid;}
function submitSigninForm(isAjax)
{var oForm=$('loginForm');if(validateRequiredLogin(oForm)){if(isAjax){sendAjaxLoginRequest(oForm);}
else
oForm.submit();}}
function sendAjaxLoginRequest(oForm)
{showAJAXLoginSupporterError(false);oForm=$(oForm);var opt={method:'post',parameters:{ajax:true},onSuccess:function(response){onLoginSuccess(oForm,response);},onFailure:function(response){onLoginFailed(oForm,response);}};new JsonP.FormRequest(oForm,opt);}
function onLoginSuccess(oForm,response){var error=response.error;if(error){if(error.indexOf('User is disabled')>-1){showSuspended();}else{onLoginFailed(oForm,response)}}
else if(response.message){if(oForm.down('.dSigninError')){oForm.down('.dSigninError').hide();}
closeSigninBox();handleSuccessfullLogin(response);googleTrackPage("/sign-in");}}
function onDirectRegistrationSuccess(response){if(handleFailureAjaxResponse(response,$("RegForm").down(".sError"),gCommonErrors)){return false;}else{handleSuccessfullLogin(response,0);googleTrackPage("/sign-up");return true;}}
function handleSuccessfullLogin(response){var oMessage=response.message.user?response.message:response.message.evalJSON();gCurrentUser=new User(oMessage.user);gCurrentUser.whoAmI=CUSTOMER;if(gCurrentUser.isSupporter){disableConnectButtons();}
if($("dHeader")&&!gCurrentUser.isGuest){renderUserHeader(oMessage.user);renderMySpaceMenu(oMessage.menues);showOfflineMessageNotification(response.nbNewOfflineMessages);}
var customerSessionSigninLink=$("dCS")&&$("dCS").down("#signinLink");if(customerSessionSigninLink){customerSessionSigninLink.hide();if($("customerPhoneNumberInChat")&&oMessage.user.phones.length>0){$("customerPhoneNumberInChat").value=oMessage.user.phones[0].number;}}else{resumeSession(gCurrentUser);}
if(typeof(replaceBannerOnLogin)=="function"){replaceBannerOnLogin();}}
function onLoginFailed(oForm,response){var signinError=oForm.down('.dSigninError');if(signinError){var error=response.error;if(error=="loginLock"){signinError.innerHTML=gHeaderStrings.loginLock;}else if(error.indexOf('SupporterSigninDeniedException')>-1){showAJAXLoginSupporterError();}
else{signinError.innerHTML=gHeaderStrings.badlogin;}
signinError.show();}}
function showAJAXLoginSupporterError(bool){var errorElt=$('loginForm').down('.loginSupporterError');if(bool===false){errorElt.hide();}else{errorElt.show();}}
var User=Class.create({initialize:function(user){this.id=user.id;var isPartner=user.domainName;this.firstName=isPartner?"":user.firstName;this.lastName=isPartner?"":user.lastName;this.displayUserName=isPartner?user.name:user.displayUserName;this.jabberUserName=isPartner?"":user.jabberUsername;this.jabberFullUserName=typeof(gJabberConnection)!=typeof(undefined)?gJabberConnection.addJabberDomainSuffix(this.jabberUserName):this.jabberUserName+"@"+g_jabber_domain+"/web";this.jabberPassword=isPartner?"":"supportspace-web";this.username=isPartner?user.name:user.username;this.isSupporter=(!isPartner&&user.userType=="supporter");this.isCustomer=(!isPartner&&user.userType=="customer");this.whoAmI=this.isCustomer?CUSTOMER:this.isSupporter?SUPPORTER:"";this.isGuest=(!isPartner&&user.userType=="guest");this.isTester=(!isPartner&&user.isTester)?true:false;this.type=user.userType;this.inTestingPhase=(!isPartner&&user.inTestingPhase)?true:false;}});function disableConnectButtons()
{$$('.startSessionButton').each(function(btn){btn.replace('<img src="'+gStartSessionUrls.connect_disable+'"/>')})}
function renderUserHeader(user){buildUserRoleUI(user);showHelloUser(user);}
function resumeSession(user){if(user.isCustomer&&!getCookie("resumeNotNow")){getSessionResumeData({},true);}}
function getSessionResumeData(oButton,connectToJabberBeforeResume)
{if(typeof(supportManager)==typeof(undefined)){return;}
function startResumeSession(obj,oButton){gS2StartSession.resumeSession({id:obj['supporterId'],displayUserName:obj['supporterDisplayName'],photoUri:obj['photoUri']},obj['workflowId'],obj['supportRequestId'],oButton);}
supportManager.getSessionResumeBean(gCurrentUser.id,{callback:function(obj){if(obj['supporterId']){if(connectToJabberBeforeResume){gJabberConnection.doLogin({onConnect:function(){startResumeSession(obj,oButton);},errorHandler:function(){gS2StartSession.popupStartSession({status:'sorry',reason:'jabber_failure'});}});}else{startResumeSession(obj,oButton);}}},errorHandler:function(){}})}
function showSignin(){$('dSignin_1_1').show();$('dSignin_Disabled').hide();}
function showSuspended(){$('dSignin_1_1').hide();$('dSignin_Disabled').show();}
function openSigninBox(){if(!$('dSignin').open){moveSigninBox();showSignin();$('dSignin').open=true;new Effect.SlideDown($('dSignin'),{duration:1.2,queue:'end'});initLoginBox();}}
function closeSigninBox(){if(!$('dSignin')||!$('dSignin').visible())
return;new Effect.SlideUp($('dSignin'),{duration:1.2});window.setTimeout("$('dSignin').open = false;",1500);}
function moveSigninBox(){Position.clone($('headerSecondMenu'),$('dSignin'),{setWidth:false,setHeight:false,offsetLeft:-226,offsetTop:21})}
var gSigninHandler=function(){openSigninBox($('dSigninMenu'));};var gSignoutHandler=null;var gJsonPRequests=[];var JsonP={scriptCounter:1};JsonP.Base=Class.create({initialize:function(options){this.options={contentType:'text/javascript',encoding:'UTF-8',parameters:'',timeout:30};Object.extend(this.options,options||{});if(Object.isString(this.options.parameters))
this.options.parameters=this.options.parameters.toQueryParams();}});JsonP.Request=Class.create(JsonP.Base,{_complete:false,initialize:function($super,url,options){$super(options);this.url=url;this.noCacheIE='';this.headLoc=document.getElementsByTagName("head").item(0);this.options.parameters.onSuccess='gJsonPRequests['+JsonP.scriptCounter+'].onSuccess';this.options.parameters.onFailure='gJsonPRequests['+JsonP.scriptCounter+'].onFailure';gJsonPRequests[JsonP.scriptCounter]=this;this.scriptId='JscriptId'+JsonP.scriptCounter++;this.request(url);},request:function(url){this.url=url;var params=Object.clone(this.options.parameters);this.parameters=params;if(params=Object.toQueryString(params)){this.url+=(this.url.include('?')?'&':'?')+params;}
try{this.buildScriptTag();this.addScriptTag();this.startTimeout();}catch(e){throw e;}},buildScriptTag:function(){this.scriptObj=document.createElement("script");this.scriptObj.setAttribute("type","text/javascript");this.scriptObj.setAttribute("charset","utf-8");this.scriptObj.setAttribute("src",this.url+this.noCacheIE);this.scriptObj.setAttribute("id",this.scriptId);},removeScriptTag:function(){this.headLoc.removeChild(this.scriptObj);},addScriptTag:function(){this.headLoc.appendChild(this.scriptObj);},startTimeout:function(){this._complete=false;this.onTimeout.bind(this).delay(this.options.timeout);},onSuccess:function(response){this.onComplete();this.options['onSuccess'](response);},onFailure:function(response){this.onComplete();this.options['onFailure'](response);},onComplete:function(){this._complete=true;},onTimeout:function(){if(!this._complete){this.onFailure();}}});JsonP.FormRequest=Class.create({initialize:function(form,options){form=$(form),options=Object.clone(options||{});var params=options.parameters,action=form.readAttribute('action')||'';if(action.blank())action=window.location.href;options.parameters=form.serialize(true);if(params){if(Object.isString(params))params=params.toQueryParams();Object.extend(options.parameters,params);}
return new JsonP.Request(action,options);}});function header_init()
{if(typeof(gParamLocale)!=typeof(undefined)&&gParamLocale!=""){setLocaleCookies(gParamLocale);}
preloadImages(gHeaderUrls.home_over,gHeaderUrls.experts_over,gHeaderUrls.services_over);setVisible('sSearchBoxCategory',true);headerObserve();initExternalSearch();highlightRelevantElement();resumeSession(gCurrentUser);}
function headerObserve()
{if($("dSigninMenu")){Event.observe('dSigninMenu','click',function(){gSigninHandler()});}
if($("dSignOut")&&gSignoutHandler){Event.observe("dSignOut","click",gSignoutHandler);}
observeLanguages("dHeader_1");}
function createHeaderMenus(){var mySpaceMenuLinks=eval(gMySpaceMenu);if(mySpaceMenuLinks){buildMenu(mySpaceMenuLinks);}}
function renderMySpaceMenu(sMenus)
{if(!$("dMySpaceMenu"))
return;var menus=sMenus.evalJSON();for(var j=0;j<menus.length;j++)
{var linKey=menus[j].linkName;menus[j].linkName=g_mySpaceMenuStr[linKey];}
buildMenu(menus);}
var closeMenuTimer;function buildMenu(menu){var mySpaceMenu=$('dMySpaceMenu');var mySpaceMenuContent=$('dMySpaceMenuContent');if(!mySpaceMenu||!mySpaceMenuContent){return;}
if(isIE6||isIE7){Position.clone(mySpaceMenu,mySpaceMenuContent,{setWidth:false,setHeight:false,offsetTop:20});}
var openMenu=function(evt){clearTimeout(closeMenuTimer);var currentMenuEffect=Effect.Queues.get('menu').effects[0];if(mySpaceMenuContent.visible()||(currentMenuEffect&&currentMenuEffect.options.scaleTo==100)){return;}
new Effect.BlindDown(mySpaceMenuContent,{queue:{scope:"menu",position:"end",limit:3},duration:0.4});};var closeMenu=function(evt){var toElt=evt.relatedTarget||evt.toElement;if(toElt&&(toElt.id=="dMySpaceMenu"||toElt.id=="dMySpaceMenuContent"||toElt.up("#dMySpaceMenuContent"))){return;}
closeMenuTimer=setTimeout(function(){var currentMenuEffect=Effect.Queues.get('menu').effects[0];if(currentMenuEffect&&currentMenuEffect.options.scaleTo==100){return;}
new Effect.BlindUp(mySpaceMenuContent,{queue:{scope:"menu",position:"end",limit:3},duration:0.4});},500);};Event.stopObserving('dMySpaceMenu','mouseover');Event.stopObserving('dMySpaceMenuContent','mouseover');Event.observe("dMySpaceMenu","mouseover",openMenu);Event.observe("dMySpaceMenuContent","mouseover",openMenu);Event.stopObserving('dMySpaceMenu',"mouseout");Event.stopObserving('dMySpaceMenuContent',"mouseout");Event.observe("dMySpaceMenu","mouseout",closeMenu);Event.observe("dMySpaceMenuContent","mouseout",closeMenu);var html="";var addOverClass=function(evt){var elt=evt.element();if(elt.hasClassName("over")){elt.addClassName("over");}};var removeOverClass=function(evt){var elt=evt.element();if(elt.hasClassName("over")){elt.removeClassName("over");}};for(var i=0;i<menu.length;i++){var linkContext=menu[i].linkUrl.indexOf("javascript")==0?"":gHeaderUrls.home;html+='<li class="menu-item'+i+'"><a class="ellipsis" href="'+linkContext+menu[i].linkUrl+'">'+menu[i].linkName+'</a></li>';}
mySpaceMenuContent.update(html);mySpaceMenuContent.select("li").each(function(menuitem){Event.observe(menuitem,"mouseover",addOverClass);Event.observe(menuitem,"mouseout",removeOverClass);});}
function buildUserRoleUI(user){if(!$('dHeaderLinks'))
return;for(var i=0;i<user.roles.length;i++){if(user.roles[i].authority=='contentadmin'||user.roles[i].authority=='serviceadmin'){$('dMySpaceMenu').update("Administrator");break;}
else if(user.roles[i].authority=='tester')
{gCurrentUser.isTester=true;break;}
else if(user.roles[i].authority=='report_editor'&&user.certified){try{gIsUserEditor=true;checkAndShowEditSolutionReportLink();}catch(e){}}}
$('dHeaderLinks').hide();$('dHeaderLinksAfterLogin').show();}
function showHelloUser(user){var welcomeDiv=$('dHeaderWelcome');if(welcomeDiv){var name=user.displayUserName?user.displayUserName:user.name;welcomeDiv.update(gHeaderStrings.hello+'&nbsp;'+name);}}
if(typeof(removeAfterLoginSuffix)=="undefined"){removeAfterLoginSuffix=function(afterLoginSuffix,selectedMenuId){if(selectedMenuId!=gHeaderMenus.help&&selectedMenuId!=gHeaderMenus.aboutus){return"";}
return afterLoginSuffix;}}
function selectHeaderMenu(selectedMenuId)
{if(selectedMenuId==""){selectedMenuId=gHeaderMenus.home;}
var afterLoginSuffix=gCurrentUser.id=="anonymous"?"":"After";afterLoginSuffix=removeAfterLoginSuffix(afterLoginSuffix,selectedMenuId);for(var key in gHeaderMenus)
{var menuId=gHeaderMenus[key];var oMenu=$(menuId+afterLoginSuffix);if(!oMenu)continue;var menuImg=oMenu.down("img");if(menuImg){if(menuId==selectedMenuId){menuImg.src=menuImg.src.replace("regular","pressed");Event.stopObserving(menuImg,"mouseover");Event.stopObserving(menuImg,"mouseout");}else{menuImg.src=menuImg.src.replace("pressed","regular");Event.observe(menuImg,"mouseover",function(event){$(Event.element(event)).src=$(Event.element(event)).src.replace("regular","mouse_over")});Event.observe(menuImg,"mouseout",function(event){$(Event.element(event)).src=$(Event.element(event)).src.replace("mouse_over","regular")});}}else{if(menuId==selectedMenuId){oMenu.className="mainlevel-trans selected";}else{oMenu.className="mainlevel-trans";}}}}
function showOfflineMessageNotification(nbNewOfflineMessages){if(!$('dMessageNotification')||!$('dHeaderMailNotification')){return;}
var divToShow=(nbNewOfflineMessages>0)?"mailNotification":"nomailNotification";var divToHide=(nbNewOfflineMessages<1)?"mailNotification":"nomailNotification";if(nbNewOfflineMessages>0){$("dMessageNotification").down("#nbMessages").innerHTML=nbNewOfflineMessages;Effect.Appear.delay(1,"dMessageNotification");}
$(divToShow).down(".nbNewOfflineMessagesHeader").innerHTML=nbNewOfflineMessages||0;$(divToHide).hide();$(divToShow).show();}
function closeMessageNotification(){if($("dMessageNotification")){$("dMessageNotification").hide();}}
function initExternalSearch(){if(!$('searchBoxQuery')){return;}
$('searchBoxQuery').cleared=false;Event.observe('searchBoxQuery','focus',clearFieldOnlyOneTime);Event.observe('dSearchBoxGoBtn','click',runExternalSearch);}
function runExternalSearch(){var searchValue=encodeURI($('searchBoxQuery').value);redirectToUrl(gCommonUrls.external_search+"?q="+searchValue);}
function highlightRelevantElement(){if($("homePage")&&$("dHeader")){var homeLinkElement=$("dHeader").down(".headerCategories .headerHomeLink");if(homeLinkElement){homeLinkElement.addClassName("categorySelected");}}else{var currentUrl=window.location.href;$("dTemplateBody").select(".leftPanel .getHelp li").each(function(elt){if(currentUrl.endsWith(elt.down('a').href)){elt.addClassName("categorySelected");throw $break;}});if($("dHeader")){$("dHeader").select(".headerCategories .headerCategory").each(function(category){if(currentUrl.endsWith(category.down('a').href)){category.addClassName("categorySelected");throw $break;}});}}}
function openScheduling()
{new Ajax.Request(gHeaderUrls.my_account_scheduling,{parameters:{},method:'post',onSuccess:function(response){window.open(response.responseText)},onFailure:function(response){logme("failue: "+response.responseText);}});}
Object.extend(Function.prototype,{substr:function(){var __method=this;return function(){return"";}}});var supporterPictureWidth=50;var supporterPictureHeight=55;Choose4MeMode={none:"NONE",regular:"REGULAR",escalated:"ESCALATED"};function S2StartSession(oStartSessionParams)
{this.popupElementId=oStartSessionParams&&oStartSessionParams['popupElement']?oStartSessionParams['popupElement']:'dPopupElement';this.popupElementParentId=oStartSessionParams&&oStartSessionParams['popupElementParentId']?oStartSessionParams['popupElementParentId']:'';this.origin=oStartSessionParams?oStartSessionParams['origin']:null;this.workflowId=oStartSessionParams?oStartSessionParams['workflowId']:-1;this.supportRequestId=oStartSessionParams?oStartSessionParams['supportRequestId']:-1;this.allowStartSession=true;this.disconnectedByUser=false;this.overlayLightBox=oStartSessionParams&&oStartSessionParams.overlay?oStartSessionParams.overlay:"overlay";this.choose4MeMode=Choose4MeMode.none;this.waitingCounter=0;}
S2StartSession.prototype=new Object;S2StartSession.prototype.popupStartSession=function(oStatus)
{if(this.disconnectedByUser){return;}
if(!this.popupElement)
{this.popupElement=document.createElement('div');this.popupElement.id=this.popupElementId;this.popupElement.className='leightbox dPopupBox';this.popupElement=$(this.popupElement);if(this.popupElementParentId)
$(this.popupElementParentId).appendChild(this.popupElement);else
document.body.appendChild(this.popupElement)}
if(!this.popupElement.up||!this.popupElement.up())
{if(this.popupElementParentId)
$(this.popupElementParentId).appendChild(this.popupElement);else
document.body.appendChild(this.popupElement)}
if($(this.popupElementId))
this.popupElement=$(this.popupElementId);this.fillPopupElement(oStatus);lightBoxOn(this.buttonElement,this.overlayLightBox);}
S2StartSession.prototype.disableCancelButtons=function(bool){disableButton(this.cancelButton,bool);disableButton(this.closeButton,bool);}
S2StartSession.prototype.startConnectingFlow=function(isRequestTimedOut)
{if(this.disconnectedByUser){return;}
this.disableCancelButtons(true);var callType=this.origin.originExtraData&&this.origin.originExtraData.solutionId?'requestCallForPackage':'requestCall';var parametersMap={'callType':callType,'currentCustomerId':gCurrentUser.id,'supporterId':this.supporter.id,'searchId':this.searchId,'Origin':Object.toJSON(this.origin)};if(isRequestTimedOut){parametersMap['originalWorkflowId']=this.workflowId;}
new Ajax.Request(gStartSessionUrls.start_support_request,{parameters:parametersMap,onSuccess:function(response){var WorkflowIdAndSupportRequestId=response.responseText;var wsa=WorkflowIdAndSupportRequestId.split('###');if(DEBUG_MODE&&$("dEstorePage")){$(document.body).insert("<div id='dWorkflowIdAndSupportRequestId' style='font-size:0.1px;position: absolute;top:40%;left:34%;z-index:1002;'>"+WorkflowIdAndSupportRequestId+"</div>");}
this.startPolling(wsa[0],wsa[1]);googleTrackPage("/contacting-expert");}.bind(this),onFailure:function(response){var errorStatus=response.status;switch(errorStatus){case 770:this.handleSupporterNotOnline("offline");break;case 771:this.handleUserNotAllowedToPerformSession();break;case 772:getSessionResumeData(this.buttonElement,false);break;case 773:this.handleLoginRequiredError();break;case 774:this.popupStartSession({status:'sorry',reason:'accessdenied'});break;default:this.popupStartSession({status:'sorry',reason:response.statusText});}}.bind(this),onComplete:function(){this.disableCancelButtons(false);}.bind(this)});};S2StartSession.prototype.startConsultFlow=function(){this.popupStartSession({status:'calling',reason:'consult'});supportRequestFlow.inviteSupporterForConsult(this.workflowId,this.supporter.id,null,{callback:function(){this.expertStatePeriodExec=new PeriodicalExecuter(function(){this.handleConsultFlowState(false);}.bind(this),3);}.bind(this),exceptionHandler:function(errorString,exception){if(exception.javaClassName)
{if(exception.message.indexOf("(JOB_OFFER_CREATION)")>-1||exception.message.indexOf("(PAY)")>-1||exception.message.indexOf("(AGREE_JOB_OFFER)")>-1)
this.popupStartSession({status:'sorry',reason:'joboffer_consult'});if(exception.javaClassName.indexOf("UserNotOnlineException")>-1)
this.displaySupporterUnavailableMessage(errorString,exception);}
var desktop=gSessionContextManager.getSupporterSessionByWorkflowId(this.workflowId).getSupporterDesktop();desktop.getSearchWidget().disableCloseAndRefresh(false);}.bind(this)});}
S2StartSession.prototype.handleConsultQ4meFlowState=function(){var supporterSession=gSessionContextManager.getSupporterSessionByWorkflowId(this.workflowId);var desktop=supporterSession.getSupporterDesktop();var url=buildUrl(gSDUrls.get_last_consult_request_status,{supportSessionId:supporterSession.getSessionId()});new Ajax.Request(url,{method:'get',onSuccess:function(response){var state=response.responseText;switch(state){case"CLOSED":this.consultStatePeriodExec.stop();this.handleConsultFlowState(true);break;case"TIMEOUT":this.consultStatePeriodExec.stop();this.cancelOrTimeoutQ4MeConsultRequestAction();desktop.getSearchWidget().showMessage(gSDStrings.search_empty);break;case"CANCELED":this.consultStatePeriodExec.stop();break;default:}}.bind(this),onFailure:function(response){}.bind(this)});}
S2StartSession.prototype.handleConsultFlowState=function(isQ4me)
{supportRequestFlow.getActiveProcessCurrentState(this.workflowId,{callback:function(state){switch(state){case"CONSULTING":this.changeCancelConsultToStop();if(this.expertStatePeriodExec){this.expertStatePeriodExec.stop();}
if(isQ4me){var supporterSession=gSessionContextManager.getSupporterSessionByWorkflowId(this.workflowId);var desktop=supporterSession.getSupporterDesktop();supportManager.getLastConsultRequestSupporterBySupportSessionId(supporterSession.getSessionId(),{callback:function(supporter){this.supporter=supporter;var consultWidget=desktop.getConsultWidget();consultWidget.setConsultant(this.supporter);consultWidget.setJabberUsernameForConsult(this.supporter.jabberUsername);consultWidget.setDisplayUsernameForConsult(this.supporter.displayUserName);}.bind(this),errorHandler:function(errorString,exception){}});}
break;case"SUPPORT_REQUEST_ACCEPTED":case"IN_SESSION":if(this.expertStatePeriodExec){this.expertStatePeriodExec.stop();}
lightBoxOff();break;default:}}.bind(this),errorHandler:function(errorString,exception){}});}
S2StartSession.prototype.cancelJabberEstablishing=function(disconnectedByUser){this.allowStartSession=true;this.disconnectedByUser=disconnectedByUser;lightBoxOff();gJabberConnection.jabberDisconnect();}
S2StartSession.prototype.cancelConnection=function(){var cancelConnectionCbk=function(){if(this.expertStatePeriodExec){this.expertStatePeriodExec.stop();}
this.cancelJabberEstablishing(true);}.bind(this);debug_connection("cancelConnection - workflowId="+this.workflowId);supportRequestFlow.cancelSupportRequest(this.workflowId,{callback:cancelConnectionCbk,errorHandler:cancelConnectionCbk});}
S2StartSession.prototype.cancelConsult=function(isOverlay){var searchWidget=gSessionContextManager.getSupporterSessionByWorkflowId(this.workflowId).getSupporterDesktop().getSearchWidget();if(isOverlay){this.popupStartSession({status:'cancel',reason:'consult'});}else{searchWidget.showMessage(gSDStrings.search_cancel_queue_stopping);}
supportRequestFlow.cancelConsult(this.workflowId,{callback:function(){this.cancelOrTimeoutQ4MeConsultRequestAction();if(this.consultStatePeriodExec){this.consultStatePeriodExec.stop();}}.bind(this),errorHandler:function(errorString,exception){}.bind(this)});}
S2StartSession.prototype.stopConsult=function(){supportRequestFlow.stopConsult(this.workflowId,{callback:function(){},errorHandler:function(){}});},S2StartSession.prototype.changeCancelConsultToStop=function(){var session=gSessionContextManager.getSupporterSessionByWorkflowId(this.workflowId);var desktop=session.getSupporterDesktop();var consultWidget=desktop.getConsultWidget();var stopConsult=function(){consultWidget.stopConsult();}.bind(this);if(this.cancelButton){Event.stopObserving(this.cancelButton,'click');Event.observe(this.cancelButton,'click',stopConsult);}
if(this.closeButton){Event.stopObserving(this.closeButton,'click');Event.observe(this.closeButton,'click',stopConsult);}
var searchWidget=desktop.getSearchWidget();var cancelConsultLink=searchWidget.getCancelConsultLink();if(cancelConsultLink){Event.stopObserving(cancelConsultLink,'click');cancelConsultLink.onclick=null;Event.observe(cancelConsultLink,'click',stopConsult);}}
S2StartSession.prototype.cancelOrTimeoutQ4MeConsultRequestAction=function(){var desktop=gSessionContextManager.getSupporterSessionByWorkflowId(this.workflowId).getSupporterDesktop();var searchWidget=desktop.getSearchWidget();searchWidget.enableActions();searchWidget.disableCloseAndRefresh(false);searchWidget.clearExpertsResults();searchWidget.lightBoxOff();}
S2StartSession.prototype.startPolling=function(workflowId,supportRequestId)
{this.popupStartSession({status:'calling',reason:'customer'});this.setWorkflowId(workflowId);this.setSupportRequestId(supportRequestId);this.expertStatePeriodExec=new PeriodicalExecuter(this.getExpertStateFromServer.bind(this),3);}
S2StartSession.prototype.getExpertStateFromServer=function()
{supportRequestFlow.getActiveProcessCurrentState(this.workflowId,{callback:function(state){this.updatePopupElement(state)}.bind(this),errorHandler:function(errorString,exception){}});};S2StartSession.prototype.updatePopupElement=function(state)
{switch(state)
{case"C4ME_NO_ANSWER":case"CUSTOMER_IDLE":this.expertStatePeriodExec.stop();this.popupStartSession({status:"sorry",reason:"unavailable"});break;case"SUPPORTER_NOT_AVAILABLE":this.expertStatePeriodExec.stop();this.handleSupporterNotOnline("unavailable");break;case"SUPPORTER_OFFLINE":this.expertStatePeriodExec.stop();this.handleSupporterNotOnline("offline");break;case"CUSTOMER_CANCELED":break;case"SUPPORT_REQUEST_ACCEPTED":this.expertStatePeriodExec.stop();this.fillPopupElement({status:"success"});break;case"IN_QUEUE":this.switchInQueueMessage();break;default:}}
S2StartSession.prototype.switchInQueueMessage=function()
{var mod=this.waitingCounter%30;switch(mod)
{case 0:this.fillPopupElement({status:"in_queue",reason:gStartSessionStrings.in_queue_msg_0});break;case 10:this.fillPopupElement({status:"in_queue",reason:gStartSessionStrings.in_queue_msg_1});break;case 20:this.fillPopupElement({status:"in_queue",reason:gStartSessionStrings.in_queue_msg_2});break;}
this.waitingCounter++;}
S2StartSession.prototype.openServicePage=function(){lightBoxOff();saveSessionEvent({user:gCurrentUser,workflowId:this.workflowId,event:{action:SE_SP_OPEN,description:"Opening Service Page"},sessionIdList:[-1]});lightBoxOn({rel:"customerSessionContainer"});var url=buildUrl(gStartSessionUrls.start_session,{workflowId:this.workflowId,supportRequestId:this.supportRequestId});new Ajax.Request(url,{method:'post',onSuccess:function(transport){this.updateAllExpertCells("busy");$('customerSessionContainer').update(transport.responseText);var afterRender=function(){initCustomerSession();};afterRender.defer();}.bind(this),onFailure:function(response){logme("Failed to open service page");}});}
S2StartSession.prototype.handleSupporterNotOnline=function(reason){if(gCurrentUser.isSupporter||this.choose4MeMode!=Choose4MeMode.none){this.displaySupporterUnavailableMessage(reason);}else{var isShouldEscalateToC4Me=reason=="busy"||reason=="offline"||reason=="online4Customer"||reason=="unavailable";if(isShouldEscalateToC4Me){this.choose4MeMode=Choose4MeMode.escalated;this.setSupporter({jabberUsername:"c4me",id:"",displayUserName:this.supporter.displayUserName});this.origin=gEscalatedOrigin;this.startConnectingFlow(reason=="unavailable");}
this.updateAllExpertCells(reason);}};S2StartSession.prototype.displaySupporterUnavailableMessage=function(reason){this.popupStartSession({status:'sorry',reason:reason});this.updateAllExpertCells(reason);};S2StartSession.prototype.updateAllExpertCells=function(status){if(!this.expertCell)return;S2StartSession.updateExpertCell(this.expertCell,status);var classSelector=$A(this.expertCell.classNames()).join('.');if(isStrEmpty(classSelector)){return;}
var expertCells=$("dBodyPage").select("."+classSelector);if(expertCells.length>1){expertCells.each(function(expertCell){S2StartSession.updateExpertCell(expertCell,status);});}};S2StartSession.updateExpertCell=function(expertCell,status){var dExpertStatus=expertCell.down('.expertStatusImage')
if(dExpertStatus)
{var dExpertStatusImg=dExpertStatus.down('img');if(dExpertStatusImg)
dExpertStatusImg.src=getSupporterStatusImg(status);}
var dExpertStatusText=expertCell.down('.expertStatusText')
if(dExpertStatusText)
dExpertStatusText.innerHTML=getSupporterStatusTextHtml(status);var dSearchExpertStart=expertCell.down('.startSessionButton')
if(dSearchExpertStart)
{disableObject(dSearchExpertStart,true);var btnImg=dSearchExpertStart.src?dSearchExpertStart:dSearchExpertStart.down("img");btnImg.replace('<img class="startSessionButton" src="'+gStartSessionUrls.connect_disable+'"/>');}};S2StartSession.prototype.handleUserNotAllowedToPerformSession=function()
{this.popupStartSession({status:"sorry",reason:"nomoresession"});var dSearchExpertStart=this.expertCell&&this.expertCell.down('.startSessionButton');if(dSearchExpertStart){dSearchExpertStart.hide();}}
S2StartSession.prototype.handleLoginRequiredError=function(){gSignupOrSignin.display({ju:this.supporter.jabberUsername,action:"login"},lightBoxOff);}
S2StartSession.prototype.fillPopupElement=function(oPopupStatus)
{var supporterPicture=getSupporterPicture(this.supporter);if(this.popupElement.down(".dPopupCloseBtn")){this.popupElement.down(".dPopupCloseBtn").remove();}
this.closeButton=document.createElement("div");this.closeButton.className="dPopupCloseBtn";var closeImage=document.createElement("img");closeImage.src=gSessionUrls.close_regular;closeImage.width=15;closeImage.height=14;Event.observe(closeImage,'mousedown',function(){closeImage.src=gSessionUrls.close_press});Event.observe(closeImage,'mouseout',function(){closeImage.src=gSessionUrls.close_regular});Event.observe(closeImage,'mouseup',function(){closeImage.src=gSessionUrls.close_regular});var closeButtonClickHandler=lightBoxOff.bind(this);Event.observe(this.closeButton,'click',closeButtonClickHandler);this.closeButton.onClickEvent=closeButtonClickHandler;this.closeButton.appendChild(closeImage);var dContainer=this.popupElement.down(".container");if(dContainer){dContainer.update();}else{dContainer=document.createElement("div");dContainer.className='container';}
var dActions=document.createElement("div");dActions.className='dPopupActions';var oButtonParams=null;this.cancelButton=null;var cancelString=gStartSessionStrings.cancel;var okButton=null;var okString=gStartSessionStrings.ok;var html='';var cancelJabberEstablishingByUser=function(){this.cancelJabberEstablishing(true)}.bind(this);switch(oPopupStatus.status)
{case'in_queue':html='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+oPopupStatus.reason+'</div>'+'<div class="dConnecting"><img class="clock" src="'+gStartSessionUrls.connecting+'" align="absmiddle" alt=""/></div>';dContainer.innerHTML=html;oButtonParams={'text':cancelString,'onclick':this.cancelConnection.bind(this)};this.cancelButton=createGenericButton(oButtonParams);dActions.appendChild(this.cancelButton);Event.observe(this.closeButton,'click',this.cancelConnection.bind(this));break;case'jabber_connection':this.popupElement.className='leightbox dPopupBox dPleaseWaitBox';oButtonParams={'text':cancelString,'onclick':this.cancelConnection.bind(this)};this.cancelButton=createGenericButton(oButtonParams);dActions.appendChild(this.cancelButton);Event.observe(this.closeButton,'click',this.cancelConnection.bind(this));dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+gStartSessionStrings.establishing+'</div>'+'<div class="dConnecting"><img class="clock" src="'+gStartSessionUrls.connecting+'" align="absmiddle" alt=""/></div>';break;case'calling':this.popupElement.className='leightbox dPopupBox dPleaseWaitBox';var connectingImage;if(oPopupStatus.reason=='consult'){this.popupElement.addClassName("consult");oButtonParams={'text':cancelString,'onclick':function(){this.cancelConsult(true);}.bind(this)};this.cancelButton=createGenericButton(oButtonParams);dActions.appendChild(this.cancelButton);Event.stopObserving(this.closeButton,'click');Event.observe(this.closeButton,'click',function(){this.cancelConsult(true);}.bind(this));connectingImage=gStartSessionUrls.connecting_consult;}
else{oButtonParams={'text':cancelString,'onclick':this.cancelConnection.bind(this)};this.cancelButton=createGenericButton(oButtonParams);dActions.appendChild(this.cancelButton);Event.observe(this.closeButton,'click',this.cancelConnection.bind(this));connectingImage=gStartSessionUrls.connecting;}
var callingText;var callingTextClass="";switch(this.choose4MeMode){case Choose4MeMode.none:callingText=gStartSessionStrings.calling.replace(/###SUPPORTERNAME###/g,this.supporter.displayUserName);break;case Choose4MeMode.regular:callingText=gStartSessionStrings.c4me_calling;break;case Choose4MeMode.escalated:this.choose4MeMode=Choose4MeMode.regular;callingText=gStartSessionStrings.c4me_escalated_calling.replace(/###SUPPORTERNAME###/g,this.supporter.displayUserName);callingTextClass="twoLines";break;}
html='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText '+callingTextClass+'">'+callingText+'</div>'+'<div class="dConnecting"><img class="clock" src="'+connectingImage+'" align="absmiddle" alt=""/></div>';dContainer.innerHTML=html;break;case'success':this.openServicePage();break;case'cancel':this.popupElement.className='leightbox dPopupBox dPleaseWaitBox';switch(oPopupStatus.reason)
{case'consult':this.popupElement.addClassName("consult");this.closeButton.hide();dContainer.innerHTML='<div class="dPopupText">'+gSDStrings.search_cancel_stopping+'</div>';break;}
break;case'sorry':this.popupElement.className='leightbox dPopupBox dSorryBox';switch(oPopupStatus.reason)
{case'browser':dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+gStartSessionStrings.browser_not_supported+'</div>';break;case'joboffer_consult':this.popupElement.addClassName("consult");Event.observe(this.closeButton,'click',this.cancelOrTimeoutQ4MeConsultRequestAction.bind(this));dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+gStartSessionStrings.sorry_consult_joboffer+'</div>';break;case'busy':case'offline':case'online4Customer':if(gCurrentUser.isSupporter){this.popupElement.addClassName("consult");Event.observe(this.closeButton,'click',this.cancelOrTimeoutQ4MeConsultRequestAction.bind(this));oButtonParams={'text':okString,'onclick':this.cancelOrTimeoutQ4MeConsultRequestAction.bind(this)}
okButton=createGenericButton(oButtonParams);var leaveMessageUrl=setParamValueUrl("ju",this.supporter.jabberUsername,gCommonUrls.leave_message);var targetWindow=gCurrentUser.isSupporter?"_blank":"_self";dActions.innerHTML='<a style="float: left; padding-right: 20px;" class="linkTxt" target="'+targetWindow+'" href="'+leaveMessageUrl+'"><img src="'+gStartSessionUrls.leave_message_icon+'" width="16" height="14" class="linkImg icon leaveMessage" align="absmiddle" alt=""/>'+gCommonStrings.leave_message+'</a>';dActions.appendChild(okButton);var statustext=(oPopupStatus.reason=='busy'||oPopupStatus.reason=='online4Customer')?gStartSessionStrings.expert_busy:gStartSessionStrings.expert_offline;html='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+statustext+'</div>';dContainer.innerHTML=html.replace(/###SUPPORTERNAME###/g,this.supporter.displayUserName);}
break;case'unavailable':oButtonParams={'text':gStartSessionStrings.retry,'onclick':function(){this.startConnectingFlow(true);}.bind(this)}
var tryAgainButton=createGenericButton(oButtonParams);dActions.appendChild(tryAgainButton);oButtonParams={'text':okString,'onclick':this.cancelJabberEstablishing.bind(this)}
var diffExpertButton=createGenericButton(oButtonParams);dActions.appendChild(diffExpertButton);Event.observe(this.closeButton,'click',this.cancelJabberEstablishing.bind(this));var expert_unavailable_msg;if(this.choose4MeMode!=Choose4MeMode.none){expert_unavailable_msg=gStartSessionStrings.c4me_expert_unavailable;}else{expert_unavailable_msg=gStartSessionStrings.expert_unavailable.replace(/###SUPPORTERNAME###/g,this.supporter.displayUserName);}
dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+expert_unavailable_msg+'</div>';break;case'pending':this.popupElement.className='leightbox dPopupBox dWelcomeBackBox';oButtonParams={'text':gStartSessionStrings.not_now,'onclick':this.resumeSessionNotNowHandler.bind(this)}
var notNowButton=createGenericButton(oButtonParams);dActions.appendChild(notNowButton);oButtonParams={'text':gStartSessionStrings.resume_now,'onclick':this.openServicePage.bind(this)}
var resumeNowButton=createGenericButton(oButtonParams);dActions.appendChild(resumeNowButton);Event.observe(this.closeButton,'click',this.cancelJabberEstablishing.bind(this));var pendingSession=gStartSessionStrings.pending.replace(/###SUPPORTERNAME###/g,this.supporter.displayUserName);dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+pendingSession+'</div>';break;case'nomoresession':oButtonParams={'text':okString,'onclick':this.cancelJabberEstablishing.bind(this)};okButton=createGenericButton(oButtonParams);dActions.appendChild(okButton);Event.observe(this.closeButton,'click',this.cancelJabberEstablishing.bind(this));dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+gStartSessionStrings.service_close+'</div>';break;case'accessdenied':oButtonParams={'text':okString,'onclick':this.cancelJabberEstablishing.bind(this)};okButton=createGenericButton(oButtonParams);dActions.appendChild(okButton);Event.observe(this.closeButton,'click',this.cancelJabberEstablishing.bind(this));dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+gStartSessionStrings.access_denied+'</div>';break;case'jabber_failure':this.popupElement.className='leightbox dPopupBox simpleBox';this.buildJabberFailurePopup(dActions,dContainer);logme("Jabber Connection failed: "+oPopupStatus.reason);Event.observe(this.closeButton,'click',this.cancelJabberEstablishing.bind(this));openCustomerSessionFrame(false);break;case'ska_failure':oButtonParams={'text':gStartSessionStrings.retry,'onclick':function(){gS2StartSession.checkPopupConnectAndStartSession();}}
var retryButton=createGenericButton(oButtonParams);dActions.appendChild(retryButton);dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">&nbsp;&nbsp;'+gStartSessionStrings.ska_failure+'&nbsp;&nbsp;</div>';logme("SELF_KEEP_ALIVE failure");Event.observe(this.closeButton,'click',cancelJabberEstablishingByUser);gJabberConnection.justReconnectOnce=true;break;case'blocker':dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+gStartSessionStrings.popup_blocker+'</div>'+'<div style="clear:both"></div>';Event.observe(this.closeButton,'click',this.cancelJabberEstablishing.bind(this));break;default:dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+gStartSessionStrings.connecting_error+'</div>'+'<div style="clear:both"></div>';Event.observe(this.closeButton,'click',cancelJabberEstablishingByUser);break;}
break;}
dContainer.appendChild(dActions);dContainer.appendChild(this.closeButton);this.popupElement.appendChild(dContainer);};S2StartSession.prototype.buildJabberFailurePopup=function(dActions,dContainer){var supporterPicture=getSupporterPicture(this.supporter);var leaveMessageUrl=setParamValueUrl("ju",this.supporter.jabberUsername,gCommonUrls.leave_message);dActions.innerHTML='<a class="flashUrl" target="_blank" href="'+gStartSessionStrings.update_flash_url+'"><img src="'+gStartSessionUrls.update_flash_icon+'" width="16" height="16" class="linkImg icon" align="absmiddle" alt=""/>'+gStartSessionStrings.update_flash+'</a>'+'<a class="leaveMessage" href="'+leaveMessageUrl+'"><img src="'+gStartSessionUrls.leave_message_icon+'" width="16" height="14" class="linkImg icon" align="absmiddle" alt=""/>'+gCommonStrings.leave_message+'</a>';dContainer.innerHTML='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText linkTxt" onclick="redirectToUrl(\''+gCommonUrls.faq+'#connectionissues\')">'+gStartSessionStrings.connection_failure+'</div>';};S2StartSession.prototype.startSession=function(expertCellId,supporterId,searchId,buttonElement){this.setButtonElement(buttonElement);if(supporterId)
{var supporter=getSupporter(supporterId);this.setSupporter(supporter);}
this.setExpertCellElement(expertCellId);this.setSearchId(searchId);this.checkPopupConnectAndStartSession();}
S2StartSession.prototype.startC4MeSession=function(buttonElement){this.setButtonElement(buttonElement);this.choose4MeMode=Choose4MeMode.regular;this.setSupporter({jabberUsername:"c4me",id:"",displayUserName:""});this.checkPopupConnectAndStartSession();}
S2StartSession.prototype.startJoinP2sSession=function(){this.checkPopupConnectAndStartSession(true);}
S2StartSession.prototype.startSolutionSession=function(expertCellId,supporterId,searchId,buttonElement,oExtraData){this.setOriginExtraData(oExtraData);this.startSession(expertCellId,supporterId,searchId,buttonElement);}
S2StartSession.prototype.checkPopupConnectAndStartSession=function(shouldJoinSession)
{if(!Prototype.Browser.IE&&!Prototype.Browser.Firefox&&!Prototype.Browser.WebKit){this.popupStartSession({status:'sorry',reason:'browser'});return;}
if(gCurrentUser.isSupporter){this.popupStartSession({status:'sorry',reason:'accessdenied'});return;}
if(!shouldJoinSession&&gCheckPopupBlocker){popupBlockerEnabled({blockerDisabled:function(){this.connectAndStartSession(shouldJoinSession);}.bind(this),blockerEnabled:function(){this.popupStartSession({status:'sorry',reason:'blocker'});}.bind(this)});}else{this.connectAndStartSession(shouldJoinSession);}};S2StartSession.prototype.connectAndStartSession=function(shouldJoinSession){var securedAction=shouldJoinSession?"login":"";gSecuredAction.execute({ju:this.supporter.jabberUsername,action:securedAction},function(){this.disconnectedByUser=false;lightBoxOff();this.popupStartSession({status:'jabber_connection'});gJabberConnection.doLogin({onConnect:function(){if(this.allowStartSession){this.allowStartSession=false;if(shouldJoinSession){if(!gJabberConnection.isTryingToReconnect&&this.markCustomerConnectedToSession()){this.openServicePage();}}else{this.startConnectingFlow();}}}.bind(this),errorHandler:function(){this.popupStartSession({status:'sorry',reason:'jabber_failure'});}.bind(this)});}.bind(this));};S2StartSession.prototype.markCustomerConnectedToSession=function(){var isSuccess=false;supportManager.markCustomerConnectedToSession(this.workflowId,{async:false,callback:function(){isSuccess=true;}.bind(this),errorHandler:function(err){alert("An error occured. Please refresh the page. ["+err+"]");}});return isSuccess;}
S2StartSession.prototype.resumeSession=function(supporter,workflowId,supportRequestId,buttonElement){this.setButtonElement(buttonElement);this.setSupporter(supporter);this.setWorkflowId(workflowId);this.setSupportRequestId(supportRequestId);if(!Prototype.Browser.IE&&!Prototype.Browser.Firefox&&!Prototype.Browser.WebKit)
{this.popupStartSession({status:'sorry',reason:'browser'});return;}
this.popupStartSession({status:'sorry',reason:'pending'});}
S2StartSession.prototype.resumeSessionNotNowHandler=function(){this.cancelJabberEstablishing();setCookie("resumeNotNow","true",null,gHeaderUrls.base_url);}
S2StartSession.prototype.startConsult=function(expertCellId,supporterId,searchId,buttonElement,workflowId){if(supporterId)
{var supporter=getSupporter(supporterId);this.setSupporter(supporter);}
this.setButtonElement(buttonElement);this.setExpertCellElement(expertCellId);this.setSearchId(searchId);this.setWorkflowId(workflowId);var desktop=gSessionContextManager.getSupporterSessionByWorkflowId(this.workflowId).getSupporterDesktop();var consultWidget=desktop.getConsultWidget();consultWidget.setConsultant(this.supporter);consultWidget.setJabberUsernameForConsult(this.supporter.jabberUsername);consultWidget.setDisplayUsernameForConsult(this.supporter.displayUserName);var searchWidget=desktop.getSearchWidget();searchWidget.disableCloseAndRefresh(true);searchWidget.disableActions();this.startConsultFlow();}
S2StartSession.prototype.consultQ4meFill=function(expertCellId,buttonElement,workflowId){this.setButtonElement(buttonElement);this.setExpertCellElement(expertCellId);this.setWorkflowId(workflowId);};S2StartSession.prototype.startConsultQ4mePolling=function(){this.consultStatePeriodExec=new PeriodicalExecuter(this.handleConsultQ4meFlowState.bind(this),3);};S2StartSession.prototype.forwardSession=function(supporterId,workflowId)
{this.setSupporter({id:supporterId});this.startPolling(workflowId)};S2StartSession.prototype.setButtonElement=function(buttonElement){this.buttonElement=$(buttonElement);this.buttonElement.rel=this.popupElementId;};S2StartSession.prototype.setExpertCellElement=function(expertCellId){this.expertCell=$(expertCellId);};S2StartSession.prototype.setSearchId=function(searchId){this.searchId=searchId?searchId:-1;};S2StartSession.prototype.setSupporter=function(supporter){this.supporter=supporter;};S2StartSession.prototype.setWorkflowId=function(workflowId){this.workflowId=workflowId;};S2StartSession.prototype.setSupportRequestId=function(supportRequestId){this.supportRequestId=supportRequestId;};S2StartSession.prototype.setOriginType=function(originType){this.origin.originType=originType;};S2StartSession.prototype.setOriginExtraData=function(oExtraData){this.origin.originExtraData=oExtraData;};function S2AutoSuggest(searchType,searchInputId,callbackFunction,actionFunction,searchDelay,errorFieldId,noAjax)
{this.s2AutoCompleter=new S2AutoCompleter(searchType,searchInputId,callbackFunction,actionFunction,searchDelay,errorFieldId,this,noAjax);this.s2AutoCompleteFiller=new S2AutoCompleteFiller(this.s2AutoCompleter);}
S2AutoSuggest.prototype=new Object;S2AutoSuggest.prototype.setSearchType=function(searchType)
{this.s2AutoCompleter.setSearchType(searchType)}
S2AutoSuggest.prototype.setSearchDelay=function(searchDelay)
{this.s2AutoCompleter.setSearchDelay(searchDelay)}
S2AutoSuggest.prototype.setSearchInputId=function(searchInputId)
{this.s2AutoCompleter.setSearchInputId(searchInputId)
this.s2AutoCompleteFiller.setSearchInputId(searchInputId)}
S2AutoSuggest.prototype.setResults=function(resultsArray)
{this.s2AutoCompleteFiller.setResults(resultsArray)}
S2AutoSuggest.prototype.displayResults=function()
{this.s2AutoCompleteFiller.displayResults()}
S2AutoSuggest.prototype.setResultsIds=function(resultsIds)
{this.s2AutoCompleteFiller.setResultsIds(resultsIds)}
S2AutoSuggest.prototype.getResultsIds=function()
{return this.s2AutoCompleteFiller.getResultsIds();}
S2AutoSuggest.prototype.getFilteredIds=function()
{return this.s2AutoCompleteFiller.getFilteredIds();}
S2AutoSuggest.prototype.getSelectedValues=function()
{return this.s2AutoCompleteFiller.getSelectedValues();}
S2AutoSuggest.prototype.setSelectedValue=function(selectedVal)
{return this.s2AutoCompleteFiller.setSelectedValue(selectedVal);}
S2AutoSuggest.prototype.hideResults=function()
{return this.s2AutoCompleteFiller.hideResults();}
S2AutoSuggest.prototype.isMatch=function(searchIn,searchWhat){return this.s2AutoCompleteFiller.isMatch(searchIn,searchWhat);}
function S2AutoCompleter(searchType,searchInputId,callbackFunction,actionFunction,searchDelay,errorFieldId,s2AutoSuggestObj,noAjax)
{this.searchType=searchType;this.searchInput=$(searchInputId);this.searchInputId=this.searchInput.id?this.searchInput.id:this.searchInput.className;this.callbackFunction=callbackFunction;this.actionFunction=actionFunction;if(isUndefined(searchDelay))
searchDelay=200;this.searchDelay=searchDelay;this.errorFieldId=errorFieldId;this.pe=null;this.lastQueryValue="";this.forceQuery=false;this.inTransaction=false;var searchInput=$(searchInputId);Event.observe(searchInput,'focus',this.startMainLoop.bindAsEventListener(this));Event.observe(searchInput,'blur',this.stopMainLoop.bindAsEventListener(this));this.resultsDiv=document.createElement('DIV');this.resultsDiv.className='dResultsAutoComplete';this.resultsDiv=$(this.resultsDiv)
Element.hide(this.resultsDiv)
this.resultsDiv.style.zIndex=10000;this.dShadowRight=document.createElement('DIV');this.dShadowRight.className='dResultAutoCompleteShadowRight'
Element.hide(this.dShadowRight)
this.dShadowBottom=document.createElement('DIV');this.dShadowBottom.className='dResultAutoCompleteShadowBottom'
Element.hide(this.dShadowBottom)
document.body.appendChild(this.resultsDiv);document.body.appendChild(this.dShadowRight);document.body.appendChild(this.dShadowBottom);this.s2AutoSuggestObj=s2AutoSuggestObj;this.noAjax=noAjax;}
S2AutoCompleter.prototype=new Object;S2AutoCompleter.prototype.startMainLoop=function()
{new PeriodicalExecuter(this.mainLoop.bind(this),this.searchDelay/1000);}
S2AutoCompleter.prototype.stopMainLoop=function()
{if(this.pe)
this.pe.stop();}
S2AutoCompleter.prototype.setSearchType=function(searchType)
{this.searchType=searchType;}
S2AutoCompleter.prototype.setSearchDelay=function(searchDelay)
{this.searchDelay=searchDelay;}
S2AutoCompleter.prototype.setSearchInputId=function(searchInputId)
{this.searchInput=$(searchInputId);this.searchInputId=this.searchInput.id?this.searchInput.id:this.searchInput.className;Event.observe(this.searchInput,'focus',this.startMainLoop.bindAsEventListener(this));Event.observe(this.searchInput,'blur',this.stopMainLoop.bindAsEventListener(this));}
S2AutoCompleter.prototype.sendAjaxQuery=function()
{this.ajaxQueryRunning=true;if(!runAutoSearch(this.lastQueryValue))
{var clearQueryValue=removeBadForAutoSuggest(this.lastQueryValue);if(this.noAjax){this.callbackFunction(clearQueryValue);}else{autoCompleteManager.getJsonResult(clearQueryValue,this.searchType,{callback:function(result){this.ajaxQueryRunning=false;this.callbackFunction(result);}.bind(this),errorHandler:function(errorString,exception){this.ajaxQueryRunning=false;}.bind(this)});}}
else
this.ajaxQueryRunning=false;}
S2AutoCompleter.prototype.mainLoop=function(pe)
{this.pe=pe;if(!this.searchInput||!this.searchType){this.stopMainLoop();return;}
if(this.searchInput.value.length>0)
{if(this.lastQueryValue!=this.searchInput.value||this.forceQuery)
{this.lastQueryValue=this.searchInput.value
this.sendAjaxQuery(this.searchInput);this.forceQuery=false;}}
else
{this.lastQueryValue=this.searchInput.value
this.hideResults();Element.hide(this.errorFieldId);}}
S2AutoCompleter.prototype.hideResults=function()
{this.s2AutoSuggestObj.s2AutoCompleteFiller.hideResults();}
function S2AutoCompleteFiller(s2AutoCompleter)
{this.s2AutoCompleter=s2AutoCompleter;this.searchType=s2AutoCompleter.searchType;this.searchInput=s2AutoCompleter.searchInput;this.searchInputId=s2AutoCompleter.searchInputId;this.resultsDiv=s2AutoCompleter.resultsDiv;this.dShadowRight=s2AutoCompleter.dShadowRight;this.dShadowBottom=s2AutoCompleter.dShadowBottom;this.actionFunction=s2AutoCompleter.actionFunction;this.resultsArray=[];this.resultsIds=[];this.selectedValues={};this.index=-1;this.entryCount=0;Event.observe(this.searchInput,'keydown',this.onKeyPressed.bindAsEventListener(this));this.iframeId="autosuggest_iframe_"+this.searchInputId;}
S2AutoCompleteFiller.prototype=new Object;S2AutoCompleteFiller.prototype.setSearchInputId=function(searchInputId)
{this.searchInputId=searchInputId;this.searchInput=$(searchInputId);}
S2AutoCompleteFiller.prototype.setSearchInput=function(searchInput)
{this.searchInput=searchInput;this.searchInputId=searchInput.id;}
S2AutoCompleteFiller.prototype.setResults=function(resultsArray)
{this.s2AutoCompleter.ajaxQueryRunning=false;this.resultsArray=resultsArray;}
S2AutoCompleteFiller.prototype.setResultsIds=function(resultsIds)
{this.resultsIds=resultsIds;this.filteredIds=resultsIds;this.selectedValues[this.searchInputId]=null;}
S2AutoCompleteFiller.prototype.getResultsIds=function()
{return this.resultsIds;}
S2AutoCompleteFiller.prototype.getFilteredIds=function()
{return this.filteredIds;}
S2AutoCompleteFiller.prototype.getSelectedValues=function()
{return this.selectedValues;}
S2AutoCompleteFiller.prototype.setSelectedValues=function(selectedValues)
{this.selectedValues=selectedValues;}
S2AutoCompleteFiller.prototype.displayResults=function(){this.index=-1;Position.clone(this.searchInput,this.resultsDiv,{setWidth:false,setHeight:false,offsetTop:this.searchInput.offsetHeight+2})
var width=this.searchInput.offsetWidth-2;this.resultsDiv.innerHTML="";this.entryCount=this.resultsArray.length;for(var i=0;i<this.resultsArray.length;i++){var dResult=document.createElement('DIV');dResult.className="dResultAutoComplete";Element.setStyle(dResult,{width:width+"px"});var dResult_1=document.createElement('DIV');dResult_1.className="dResultAutoComplete_1";var dResult_2=document.createElement('DIV');dResult_2.className="dResultAutoComplete_2";var textResult=document.createTextNode(this.resultsArray[i]);var nobr1=document.createElement('NOBR');nobr1.appendChild(textResult);nobr1.setAttribute('title',this.resultsArray[i]);dResult_1.appendChild(nobr1);dResult.appendChild(dResult_1);dResult.resVal=this.resultsArray[i]
dResult.idVal=this.resultsIds[i]
dResult.index=i;dResult_1.idVal=this.resultsIds[i]
dResult_1.resVal=this.resultsArray[i]
dResult_1.index=i;nobr1.idVal=this.resultsIds[i];nobr1.resVal=this.resultsArray[i];nobr1.index=i;if(i==0){var textSuggestion=document.createTextNode('');var nobr2=document.createElement('NOBR');nobr2.appendChild(textSuggestion);dResult_2.appendChild(nobr2);dResult.appendChild(dResult_2);dResult_2.idVal=this.resultsIds[i];dResult_2.resVal=this.resultsArray[i];dResult_2.index=i;nobr2.idVal=this.resultsIds[i];nobr2.resVal=this.resultsArray[i];nobr2.index=i;}
Event.observe(document.body,'click',this.onClickBody.bindAsEventListener(this));Event.observe(dResult,'click',this.onClickResult.bindAsEventListener(this));Event.observe(dResult,'mouseover',this.onMouseOverResult.bindAsEventListener(this));Event.observe(dResult,'mouseout',this.onMouseOutResult.bindAsEventListener(this));this.resultsDiv.appendChild(dResult);}
if(isIE6){if(this.iframe){this.iframe.hide()}
else{this.iframe=document.createElement('iframe');this.iframe.id=this.iframeId;this.iframe.src="javascript:false";this.iframe.style.position="absolute";this.iframe.zIndex=-1;$(document.body).appendChild(this.iframe);}
var resultsWidth=Element.getWidth(this.resultsDiv);var resultsHeight=Element.getHeight(this.resultsDiv);$(this.iframe).setStyle({width:resultsWidth,height:resultsHeight,top:this.resultsDiv.style.top,left:this.resultsDiv.style.left,opacity:0});this.iframe.show();}
if(this.resultsArray.length>0){Element.show(this.resultsDiv);var shadowWidth=Element.getWidth(this.resultsDiv);var shadowHeight=Element.getHeight(this.resultsDiv);Position.clone(this.resultsDiv,this.dShadowRight,{setWidth:false,offsetLeft:shadowWidth,offsetTop:2})
$(this.dShadowRight).setStyle({height:shadowHeight-2,opacity:0.5});Position.clone(this.resultsDiv,this.dShadowBottom,{setHeight:false,offsetLeft:2,offsetTop:shadowHeight})
$(this.dShadowBottom).setStyle({opacity:0.5});Element.show(this.dShadowRight);Element.show(this.dShadowBottom);}
else{Element.hide(this.resultsDiv)
Element.hide(this.dShadowRight);Element.hide(this.dShadowBottom);}}
S2AutoCompleteFiller.prototype.setSelectedValue=function(selectedVal)
{this.selectedValues[this.searchInputId]=selectedVal;this.filteredIds=[selectedVal];}
S2AutoCompleteFiller.prototype.setCurrentEntry=function(idVal,resVal)
{this.searchInput.value=resVal;this.setSelectedValue(idVal);this.s2AutoCompleter.lastQueryValue=resVal;}
S2AutoCompleteFiller.prototype.hideResults=function()
{this.resultsDiv.hide();this.dShadowRight.hide();this.dShadowBottom.hide();if(this.iframe)
this.iframe.hide();}
S2AutoCompleteFiller.prototype.onClickBody=function()
{this.hideResults();}
S2AutoCompleteFiller.prototype.onClickResult=function(evt)
{var dResult=Event.element(evt);this.setCurrentEntry(dResult.idVal,dResult.resVal);this.hideResults();}
S2AutoCompleteFiller.prototype.onMouseOverResult=function(evt)
{var dResult=Event.element(evt);this.index=dResult.index;this.render();}
S2AutoCompleteFiller.prototype.onMouseOutResult=function(evt)
{var dResult=Event.element(evt);Element.removeClassName(dResult,"dResultAutoCompleteHover")}
S2AutoCompleteFiller.prototype.markPrevious=function()
{if(this.index>0)
this.index--;else
this.index=this.entryCount-1;}
S2AutoCompleteFiller.prototype.markNext=function()
{if(this.index<this.entryCount-1)
this.index++;else
this.index=0;}
S2AutoCompleteFiller.prototype.getEntry=function(index)
{return this.resultsDiv.childNodes[index];}
S2AutoCompleteFiller.prototype.getCurrentEntry=function()
{return this.getEntry(this.index);}
S2AutoCompleteFiller.prototype.render=function()
{if(this.entryCount>0)
for(var i=0;i<this.entryCount;i++)
if(i==this.index)
Element.addClassName(this.getEntry(i),"dResultAutoCompleteHover")
else
Element.removeClassName(this.getEntry(i),"dResultAutoCompleteHover");}
S2AutoCompleteFiller.prototype.onKeyPressed=function(evt)
{if(this.s2AutoCompleter.ajaxQueryRunning)return;var elt=Event.element(evt);if(elt.id!=this.searchInputId)return;switch(evt.keyCode){case Event.KEY_RETURN:this.hideResults();if(this.actionFunction)
this.actionFunction();Event.stop(evt);break;case Event.KEY_TAB:if(Element.visible(this.resultsDiv))
{this.hideResults();Event.stop(evt);}
break;case Event.KEY_ESC:Element.hide(this.resultsDiv)
Element.hide(this.dShadowRight);Element.hide(this.dShadowBottom);Event.stop(evt);break;case Event.KEY_LEFT:case Event.KEY_RIGHT:break;case Event.KEY_UP:if(!Element.visible(this.resultsDiv))
{this.s2AutoCompleter.forceQuery=true;return;}
this.markPrevious();this.render();var dResult=this.getCurrentEntry();if(dResult&&!isUndefined(dResult))
this.setCurrentEntry(dResult.idVal,dResult.resVal);if(navigator.appVersion.indexOf('AppleWebKit')>0)Event.stop(evt);break;case Event.KEY_DOWN:if(!Element.visible(this.resultsDiv))
{this.s2AutoCompleter.forceQuery=true;return;}
this.markNext();this.render();var dResult=this.getCurrentEntry();if(dResult&&!isUndefined(dResult))
this.setCurrentEntry(dResult.idVal,dResult.resVal);if(navigator.appVersion.indexOf('AppleWebKit')>0)Event.stop(evt);break;}}
S2AutoCompleteFiller.prototype.isMatch=function(searchIn,searchWhat){searchWhat=searchWhat.toLowerCase();searchIn=searchIn.toLowerCase();if(searchWhat.indexOf(' ')!=-1){if(searchIn.indexOf(searchWhat)==0){return true;}}else{var words=searchIn.split(' ');for(var i=0;i<words.length;i++){if(words[i].indexOf(searchWhat)==0){return true;}}}
return false;}
var invalidSearchCharactersForNotifying=/\<|\>|\"|\'|\:|\%|\;|\{|\}|\[|\]|\&|\!|\^|\+|\#|\?|\@/g;var invalidSearchCharacters=/\<|\>|\"|\'|\:|\%|\;|\{|\}|\[|\]|\&|\!|\^|\+|\#|\?|\@|\(|\)|\s+\*/g;function runAutoSearch(str){return(str.charAt(0)==' '||str.charAt(0)=='-'||str.charAt(0)=='*'||str.charAt(0).match(invalidSearchCharacters))}
function hasBadCharactersForNotifying(str){if(str.charAt(0)==' '||str.charAt(0)=='*'){return true;}
return str.match(invalidSearchCharactersForNotifying);}
function hasBadCharactersForRemove(str){if(str.charAt(0)==' '||str.charAt(0)=='*'){return true;}
return str.match(invalidSearchCharacters);}
function removeBad(strTemp){strTemp=strTemp.replace(invalidSearchCharacters," ");strTemp=strTemp.replace(/\b\s{2,}\b/g," ");strTemp=strTemp.replace(/^\s/g,"");if(strTemp.charAt(0)==' '||strTemp.charAt(0)=='*'){return'';}
return strTemp;}
function removeBadForAutoSuggest(strTemp){strTemp=strTemp.replace(invalidSearchCharacters," ");strTemp=strTemp.replace(/\b\s{2,}\b/g," ");strTemp=strTemp.replace(/\s{1,}-/g,"-");strTemp=strTemp.replace(/^\s/g,"");if(strTemp.charAt(0)==' '||strTemp.charAt(0)=='*'){return'';}
return strTemp;}
