
var Prototype={Version:'1.6.0',Browser:{IE:!!(window.attachEvent&&!window.opera),Opera:!!window.opera,WebKit:navigator.userAgent.indexOf('AppleWebKit/')>-1,Gecko:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')==-1,Firefox:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')==-1&&navigator.userAgent.indexOf('Firefox')>-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement('div').__proto__&&document.createElement('div').__proto__!==document.createElement('form').__proto__},ScriptFragment:'<script[^>]*>([\\S\\s]*?)<\/script>',JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(x){return x}};if(Prototype.Browser.MobileSafari)
Prototype.BrowserFeatures.SpecificElementExtensions=false;if(Prototype.Browser.WebKit)
Prototype.BrowserFeatures.XPath=false;var Class={create:function(){var parent=null,properties=$A(arguments);if(Object.isFunction(properties[0]))
parent=properties.shift();function klass(){this.initialize.apply(this,arguments);}
Object.extend(klass,Class.Methods);klass.superclass=parent;klass.subclasses=[];if(parent){var subclass=function(){};subclass.prototype=parent.prototype;klass.prototype=new subclass;parent.subclasses.push(klass);}
for(var i=0;i<properties.length;i++)
klass.addMethods(properties[i]);if(!klass.prototype.initialize)
klass.prototype.initialize=Prototype.emptyFunction;klass.prototype.constructor=klass;return klass;}};Class.Methods={addMethods:function(source){var ancestor=this.superclass&&this.superclass.prototype;var properties=Object.keys(source);if(!Object.keys({toString:true}).length)
properties.push("toString","valueOf");for(var i=0,length=properties.length;i<length;i++){var property=properties[i],value=source[property];if(ancestor&&Object.isFunction(value)&&value.argumentNames().first()=="$super"){var method=value,value=Object.extend((function(m){return function(){return ancestor[m].apply(this,arguments)};})(property).wrap(method),{valueOf:function(){return method},toString:function(){return method.toString()}});}
this.prototype[property]=value;}
return this;}};var Abstract={};Object.extend=function(destination,source){for(var property in source)
destination[property]=source[property];return destination;};Object.extend(Object,{inspect:function(object){try{if(object===undefined)return'undefined';if(object===null)return'null';return object.inspect?object.inspect():object.toString();}catch(e){if(e instanceof RangeError)return'...';throw e;}},toJSON:function(object){var type=typeof object;switch(type){case'undefined':case'function':case'unknown':return;case'boolean':return object.toString();}
if(object===null)return'null';if(object.toJSON)return object.toJSON();if(Object.isElement(object))return;var results=[];for(var property in object){var value=Object.toJSON(object[property]);if(value!==undefined)
results.push(property.toJSON()+': '+value);}
return'{'+results.join(', ')+'}';},toQueryString:function(object){return $H(object).toQueryString();},toHTML:function(object){return object&&object.toHTML?object.toHTML():String.interpret(object);},keys:function(object){var keys=[];for(var property in object)
keys.push(property);return keys;},values:function(object){var values=[];for(var property in object)
values.push(object[property]);return values;},clone:function(object){return Object.extend({},object);},isElement:function(object){return object&&object.nodeType==1;},isArray:function(object){return object&&object.constructor===Array;},isHash:function(object){return object instanceof Hash;},isFunction:function(object){return typeof object=="function";},isString:function(object){return typeof object=="string";},isNumber:function(object){return typeof object=="number";},isUndefined:function(object){return typeof object=="undefined";}});Object.extend(Function.prototype,{argumentNames:function(){var names=this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip");return names.length==1&&!names[0]?[]:names;},bind:function(){if(arguments.length<2&&arguments[0]===undefined)return this;var __method=this,args=$A(arguments),object=args.shift();return function(){return __method.apply(object,args.concat($A(arguments)));}},bindAsEventListener:function(){var __method=this,args=$A(arguments),object=args.shift();return function(event){return __method.apply(object,[event||window.event].concat(args));}},curry:function(){if(!arguments.length)return this;var __method=this,args=$A(arguments);return function(){return __method.apply(this,args.concat($A(arguments)));}},delay:function(){var __method=this,args=$A(arguments),timeout=args.shift()*1000;return window.setTimeout(function(){return __method.apply(__method,args);},timeout);},wrap:function(wrapper){var __method=this;return function(){return wrapper.apply(this,[__method.bind(this)].concat($A(arguments)));}},methodize:function(){if(this._methodized)return this._methodized;var __method=this;return this._methodized=function(){return __method.apply(null,[this].concat($A(arguments)));};}});Function.prototype.defer=Function.prototype.delay.curry(0.01);Date.prototype.toJSON=function(){return'"'+this.getUTCFullYear()+'-'+
(this.getUTCMonth()+1).toPaddedString(2)+'-'+
this.getUTCDate().toPaddedString(2)+'T'+
this.getUTCHours().toPaddedString(2)+':'+
this.getUTCMinutes().toPaddedString(2)+':'+
this.getUTCSeconds().toPaddedString(2)+'Z"';};var Try={these:function(){var returnValue;for(var i=0,length=arguments.length;i<length;i++){var lambda=arguments[i];try{returnValue=lambda();break;}catch(e){}}
return returnValue;}};RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(str){return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,'\\$1');};var PeriodicalExecuter=Class.create({initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback();},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},execute:function(){this.callback(this);},stop:function(){if(!this.timer)return;clearInterval(this.timer);this.timer=null;},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();}finally{this.currentlyExecuting=false;}}}});Object.extend(String,{interpret:function(value){return value==null?'':String(value);},specialChar:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','\\':'\\\\'}});Object.extend(String.prototype,{gsub:function(pattern,replacement){var result='',source=this,match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length);}else{result+=source,source='';}}
return result;},sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=count===undefined?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},scan:function(pattern,iterator){this.gsub(pattern,iterator);return String(this);},truncate:function(length,truncation){length=length||30;truncation=truncation===undefined?'...':truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this);},strip:function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'');},stripScripts:function(){return this.replace(new RegExp(Prototype.ScriptFragment,'img'),'');},extractScripts:function(){var matchAll=new RegExp(Prototype.ScriptFragment,'img');var matchOne=new RegExp(Prototype.ScriptFragment,'im');return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||['',''])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script)});},escapeHTML:function(){var self=arguments.callee;self.text.data=this;return self.div.innerHTML;},unescapeHTML:function(){var div=new Element('div');div.innerHTML=this.stripTags();return div.childNodes[0]?(div.childNodes.length>1?$A(div.childNodes).inject('',function(memo,node){return memo+node.nodeValue}):div.childNodes[0].nodeValue):'';},toQueryParams:function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match)return{};return match[1].split(separator||'&').inject({},function(hash,pair){if((pair=pair.split('='))[0]){var key=decodeURIComponent(pair.shift());var value=pair.length>1?pair.join('='):pair[0];if(value!=undefined)value=decodeURIComponent(value);if(key in hash){if(!Object.isArray(hash[key]))hash[key]=[hash[key]];hash[key].push(value);}
else hash[key]=value;}
return hash;});},toArray:function(){return this.split('');},succ:function(){return this.slice(0,this.length-1)+
String.fromCharCode(this.charCodeAt(this.length-1)+1);},times:function(count){return count<1?'':new Array(count+1).join(this);},camelize:function(){var parts=this.split('-'),len=parts.length;if(len==1)return parts[0];var camelized=this.charAt(0)=='-'?parts[0].charAt(0).toUpperCase()+parts[0].substring(1):parts[0];for(var i=1;i<len;i++)
camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1);return camelized;},capitalize:function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase();},underscore:function(){return this.gsub(/::/,'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();},dasherize:function(){return this.gsub(/_/,'-');},inspect:function(useDoubleQuotes){var escapedString=this.gsub(/[\x00-\x1f\\]/,function(match){var character=String.specialChar[match[0]];return character?character:'\\u00'+match[0].charCodeAt().toPaddedString(2,16);});if(useDoubleQuotes)return'"'+escapedString.replace(/"/g,'\\"')+'"';return"'"+escapedString.replace(/'/g,'\\\'')+"'";},toJSON:function(){return this.inspect(true);},unfilterJSON:function(filter){return this.sub(filter||Prototype.JSONFilter,'#{1}');},isJSON:function(){var str=this.replace(/\\./g,'@').replace(/"[^"\\\n\r]*"/g,'');return(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);},evalJSON:function(sanitize){var json=this.unfilterJSON();try{if(!sanitize||json.isJSON())return eval('('+json+')');}catch(e){}
throw new SyntaxError('Badly formed JSON string: '+this.inspect());},include:function(pattern){return this.indexOf(pattern)>-1;},startsWith:function(pattern){return this.indexOf(pattern)===0;},endsWith:function(pattern){var d=this.length-pattern.length;return d>=0&&this.lastIndexOf(pattern)===d;},empty:function(){return this=='';},blank:function(){return/^\s*$/.test(this);},interpolate:function(object,pattern){return new Template(this,pattern).evaluate(object);}});if(Prototype.Browser.WebKit||Prototype.Browser.IE)Object.extend(String.prototype,{escapeHTML:function(){return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');},unescapeHTML:function(){return this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');}});String.prototype.gsub.prepareReplacement=function(replacement){if(Object.isFunction(replacement))return replacement;var template=new Template(replacement);return function(match){return template.evaluate(match)};};String.prototype.parseQuery=String.prototype.toQueryParams;Object.extend(String.prototype.escapeHTML,{div:document.createElement('div'),text:document.createTextNode('')});with(String.prototype.escapeHTML)div.appendChild(text);var Template=Class.create({initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern;},evaluate:function(object){if(Object.isFunction(object.toTemplateReplacements))
object=object.toTemplateReplacements();return this.template.gsub(this.pattern,function(match){if(object==null)return'';var before=match[1]||'';if(before=='\\')return match[2];var ctx=object,expr=match[3];var pattern=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/,match=pattern.exec(expr);if(match==null)return before;while(match!=null){var comp=match[1].startsWith('[')?match[2].gsub('\\\\]',']'):match[1];ctx=ctx[comp];if(null==ctx||''==match[3])break;expr=expr.substring('['==match[3]?match[1].length:match[0].length);match=pattern.exec(expr);}
return before+String.interpret(ctx);}.bind(this));}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable={each:function(iterator,context){var index=0;iterator=iterator.bind(context);try{this._each(function(value){iterator(value,index++);});}catch(e){if(e!=$break)throw e;}
return this;},eachSlice:function(number,iterator,context){iterator=iterator?iterator.bind(context):Prototype.K;var index=-number,slices=[],array=this.toArray();while((index+=number)<array.length)
slices.push(array.slice(index,index+number));return slices.collect(iterator,context);},all:function(iterator,context){iterator=iterator?iterator.bind(context):Prototype.K;var result=true;this.each(function(value,index){result=result&&!!iterator(value,index);if(!result)throw $break;});return result;},any:function(iterator,context){iterator=iterator?iterator.bind(context):Prototype.K;var result=false;this.each(function(value,index){if(result=!!iterator(value,index))
throw $break;});return result;},collect:function(iterator,context){iterator=iterator?iterator.bind(context):Prototype.K;var results=[];this.each(function(value,index){results.push(iterator(value,index));});return results;},detect:function(iterator,context){iterator=iterator.bind(context);var result;this.each(function(value,index){if(iterator(value,index)){result=value;throw $break;}});return result;},findAll:function(iterator,context){iterator=iterator.bind(context);var results=[];this.each(function(value,index){if(iterator(value,index))
results.push(value);});return results;},grep:function(filter,iterator,context){iterator=iterator?iterator.bind(context):Prototype.K;var results=[];if(Object.isString(filter))
filter=new RegExp(filter);this.each(function(value,index){if(filter.match(value))
results.push(iterator(value,index));});return results;},include:function(object){if(Object.isFunction(this.indexOf))
if(this.indexOf(object)!=-1)return true;var found=false;this.each(function(value){if(value==object){found=true;throw $break;}});return found;},inGroupsOf:function(number,fillWith){fillWith=fillWith===undefined?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number)slice.push(fillWith);return slice;});},inject:function(memo,iterator,context){iterator=iterator.bind(context);this.each(function(value,index){memo=iterator(memo,value,index);});return memo;},invoke:function(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args);});},max:function(iterator,context){iterator=iterator?iterator.bind(context):Prototype.K;var result;this.each(function(value,index){value=iterator(value,index);if(result==undefined||value>=result)
result=value;});return result;},min:function(iterator,context){iterator=iterator?iterator.bind(context):Prototype.K;var result;this.each(function(value,index){value=iterator(value,index);if(result==undefined||value<result)
result=value;});return result;},partition:function(iterator,context){iterator=iterator?iterator.bind(context):Prototype.K;var trues=[],falses=[];this.each(function(value,index){(iterator(value,index)?trues:falses).push(value);});return[trues,falses];},pluck:function(property){var results=[];this.each(function(value){results.push(value[property]);});return results;},reject:function(iterator,context){iterator=iterator.bind(context);var results=[];this.each(function(value,index){if(!iterator(value,index))
results.push(value);});return results;},sortBy:function(iterator,context){iterator=iterator.bind(context);return this.map(function(value,index){return{value:value,criteria:iterator(value,index)};}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0;}).pluck('value');},toArray:function(){return this.map();},zip:function(){var iterator=Prototype.K,args=$A(arguments);if(Object.isFunction(args.last()))
iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index));});},size:function(){return this.toArray().length;},inspect:function(){return'#<Enumerable:'+this.toArray().inspect()+'>';}};Object.extend(Enumerable,{map:Enumerable.collect,find:Enumerable.detect,select:Enumerable.findAll,filter:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray,every:Enumerable.all,some:Enumerable.any});function $A(iterable){if(!iterable)return[];if(iterable.toArray)return iterable.toArray();var length=iterable.length,results=new Array(length);while(length--)results[length]=iterable[length];return results;}
if(Prototype.Browser.WebKit){function $A(iterable){if(!iterable)return[];if(!(Object.isFunction(iterable)&&iterable=='[object NodeList]')&&iterable.toArray)return iterable.toArray();var length=iterable.length,results=new Array(length);while(length--)results[length]=iterable[length];return results;}}
Array.from=$A;Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse)Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype,{_each:function(iterator){for(var i=0,length=this.length;i<length;i++)
iterator(this[i]);},clear:function(){this.length=0;return this;},first:function(){return this[0];},last:function(){return this[this.length-1];},compact:function(){return this.select(function(value){return value!=null;});},flatten:function(){return this.inject([],function(array,value){return array.concat(Object.isArray(value)?value.flatten():[value]);});},without:function(){var values=$A(arguments);return this.select(function(value){return!values.include(value);});},reverse:function(inline){return(inline!==false?this:this.toArray())._reverse();},reduce:function(){return this.length>1?this:this[0];},uniq:function(sorted){return this.inject([],function(array,value,index){if(0==index||(sorted?array.last()!=value:!array.include(value)))
array.push(value);return array;});},intersect:function(array){return this.uniq().findAll(function(item){return array.detect(function(value){return item===value});});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return'['+this.map(Object.inspect).join(', ')+']';},toJSON:function(){var results=[];this.each(function(object){var value=Object.toJSON(object);if(value!==undefined)results.push(value);});return'['+results.join(', ')+']';}});if(Object.isFunction(Array.prototype.forEach))
Array.prototype._each=Array.prototype.forEach;if(!Array.prototype.indexOf)Array.prototype.indexOf=function(item,i){i||(i=0);var length=this.length;if(i<0)i=length+i;for(;i<length;i++)
if(this[i]===item)return i;return-1;};if(!Array.prototype.lastIndexOf)Array.prototype.lastIndexOf=function(item,i){i=isNaN(i)?this.length:(i<0?this.length+i:i)+1;var n=this.slice(0,i).reverse().indexOf(item);return(n<0)?n:i-n-1;};Array.prototype.toArray=Array.prototype.clone;function $w(string){if(!Object.isString(string))return[];string=string.strip();return string?string.split(/\s+/):[];}
if(Prototype.Browser.Opera){Array.prototype.concat=function(){var array=[];for(var i=0,length=this.length;i<length;i++)array.push(this[i]);for(var i=0,length=arguments.length;i<length;i++){if(Object.isArray(arguments[i])){for(var j=0,arrayLength=arguments[i].length;j<arrayLength;j++)
array.push(arguments[i][j]);}else{array.push(arguments[i]);}}
return array;};}
Object.extend(Number.prototype,{toColorPart:function(){return this.toPaddedString(2,16);},succ:function(){return this+1;},times:function(iterator){$R(0,this,true).each(iterator);return this;},toPaddedString:function(length,radix){var string=this.toString(radix||10);return'0'.times(length-string.length)+string;},toJSON:function(){return isFinite(this)?this.toString():'null';}});$w('abs round ceil floor').each(function(method){Number.prototype[method]=Math[method].methodize();});function $H(object){return new Hash(object);};var Hash=Class.create(Enumerable,(function(){if(function(){var i=0,Test=function(value){this.key=value};Test.prototype.key='foo';for(var property in new Test('bar'))i++;return i>1;}()){function each(iterator){var cache=[];for(var key in this._object){var value=this._object[key];if(cache.include(key))continue;cache.push(key);var pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}}}else{function each(iterator){for(var key in this._object){var value=this._object[key],pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}}}
function toQueryPair(key,value){if(Object.isUndefined(value))return key;return key+'='+encodeURIComponent(String.interpret(value));}
return{initialize:function(object){this._object=Object.isHash(object)?object.toObject():Object.clone(object);},_each:each,set:function(key,value){return this._object[key]=value;},get:function(key){return this._object[key];},unset:function(key){var value=this._object[key];delete this._object[key];return value;},toObject:function(){return Object.clone(this._object);},keys:function(){return this.pluck('key');},values:function(){return this.pluck('value');},index:function(value){var match=this.detect(function(pair){return pair.value===value;});return match&&match.key;},merge:function(object){return this.clone().update(object);},update:function(object){return new Hash(object).inject(this,function(result,pair){result.set(pair.key,pair.value);return result;});},toQueryString:function(){return this.map(function(pair){var key=encodeURIComponent(pair.key),values=pair.value;if(values&&typeof values=='object'){if(Object.isArray(values))
return values.map(toQueryPair.curry(key)).join('&');}
return toQueryPair(key,values);}).join('&');},inspect:function(){return'#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ');}).join(', ')+'}>';},toJSON:function(){return Object.toJSON(this.toObject());},clone:function(){return new Hash(this);}}})());Hash.prototype.toTemplateReplacements=Hash.prototype.toObject;Hash.from=$H;var ObjectRange=Class.create(Enumerable,{initialize:function(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive;},_each:function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ();}},include:function(value){if(value<this.start)
return false;if(this.exclusive)
return value<this.end;return value<=this.end;}});var $R=function(start,end,exclusive){return new ObjectRange(start,end,exclusive);};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false;},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(iterator){this.responders._each(iterator);},register:function(responder){if(!this.include(responder))
this.responders.push(responder);},unregister:function(responder){this.responders=this.responders.without(responder);},dispatch:function(callback,request,transport,json){this.each(function(responder){if(Object.isFunction(responder[callback])){try{responder[callback].apply(responder,[request,transport,json]);}catch(e){}}});}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(options){this.options={method:'post',asynchronous:true,contentType:'application/x-www-form-urlencoded',encoding:'UTF-8',parameters:'',evalJSON:true,evalJS:true};Object.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(Object.isString(this.options.parameters))
this.options.parameters=this.options.parameters.toQueryParams();}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,url,options){$super(options);this.transport=Ajax.getTransport();this.request(url);},request:function(url){this.url=url;this.method=this.options.method;var params=Object.clone(this.options.parameters);if(!['get','post'].include(this.method)){params['_method']=this.method;this.method='post';}
this.parameters=params;if(params=Object.toQueryString(params)){if(this.method=='get')
this.url+=(this.url.include('?')?'&':'?')+params;else if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
params+='&_=';}
try{var response=new Ajax.Response(this);if(this.options.onCreate)this.options.onCreate(response);Ajax.Responders.dispatch('onCreate',this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous)this.respondToReadyState.bind(this).defer(1);this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType)
this.onStateChange();}
catch(e){this.dispatchException(e);}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete))
this.respondToReadyState(this.transport.readyState);},setRequestHeaders:function(){var headers={'X-Requested-With':'XMLHttpRequest','X-Prototype-Version':Prototype.Version,'Accept':'text/javascript, text/html, application/xml, text/xml, */*'};if(this.method=='post'){headers['Content-type']=this.options.contentType+
(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005)
headers['Connection']='close';}
if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(Object.isFunction(extras.push))
for(var i=0,length=extras.length;i<length;i+=2)
headers[extras[i]]=extras[i+1];else
$H(extras).each(function(pair){headers[pair.key]=pair.value});}
for(var name in headers)
this.transport.setRequestHeader(name,headers[name]);},success:function(){var status=this.getStatus();return!status||(status>=200&&status<300);},getStatus:function(){try{return this.transport.status||0;}catch(e){return 0}},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);if(state=='Complete'){try{this._complete=true;(this.options['on'+response.status]||this.options['on'+(this.success()?'Success':'Failure')]||Prototype.emptyFunction)(response,response.headerJSON);}catch(e){this.dispatchException(e);}
var contentType=response.getHeader('Content-type');if(this.options.evalJS=='force'||(this.options.evalJS&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
this.evalResponse();}
try{(this.options['on'+state]||Prototype.emptyFunction)(response,response.headerJSON);Ajax.Responders.dispatch('on'+state,this,response,response.headerJSON);}catch(e){this.dispatchException(e);}
if(state=='Complete'){this.transport.onreadystatechange=Prototype.emptyFunction;}},getHeader:function(name){try{return this.transport.getResponseHeader(name);}catch(e){return null}},evalResponse:function(){try{return eval((this.transport.responseText||'').unfilterJSON());}catch(e){this.dispatchException(e);}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch('onException',this,exception);}});Ajax.Request.Events=['Uninitialized','Loading','Loaded','Interactive','Complete'];Ajax.Response=Class.create({initialize:function(request){this.request=request;var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;if((readyState>2&&!Prototype.Browser.IE)||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(transport.responseText);this.headerJSON=this._getHeaderJSON();}
if(readyState==4){var xml=transport.responseXML;this.responseXML=xml===undefined?null:xml;this.responseJSON=this._getResponseJSON();}},status:0,statusText:'',getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||'';}catch(e){return''}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders();}catch(e){return null}},getResponseHeader:function(name){return this.transport.getResponseHeader(name);},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders();},_getHeaderJSON:function(){var json=this.getHeader('X-JSON');if(!json)return null;json=decodeURIComponent(escape(json));try{return json.evalJSON(this.request.options.sanitizeJSON);}catch(e){this.request.dispatchException(e);}},_getResponseJSON:function(){var options=this.request.options;if(!options.evalJSON||(options.evalJSON!='force'&&!(this.getHeader('Content-type')||'').include('application/json')))
return null;try{return this.transport.responseText.evalJSON(options.sanitizeJSON);}catch(e){this.request.dispatchException(e);}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))};options=options||{};var onComplete=options.onComplete;options.onComplete=(function(response,param){this.updateContent(response.responseText);if(Object.isFunction(onComplete))onComplete(response,param);}).bind(this);$super(url,options);},updateContent:function(responseText){var receiver=this.container[this.success()?'success':'failure'],options=this.options;if(!options.evalScripts)responseText=responseText.stripScripts();if(receiver=$(receiver)){if(options.insertion){if(Object.isString(options.insertion)){var insertion={};insertion[options.insertion]=responseText;receiver.insert(insertion);}
else options.insertion(receiver,responseText);}
else receiver.update(responseText);}
if(this.success()){if(this.onComplete)this.onComplete.bind(this).defer();}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,container,url,options){$super(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start();},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent();},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments);},updateComplete:function(response){if(this.options.decay){this.decay=(response.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=response.responseText;}
this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency);},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options);}});function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++)
elements.push($(arguments[i]));return elements;}
if(Object.isString(element))
element=document.getElementById(element);return Element.extend(element);}
if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression,parentElement){var results=[];var query=document.evaluate(expression,$(parentElement)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var i=0,length=query.snapshotLength;i<length;i++)
results.push(Element.extend(query.snapshotItem(i)));return results;};}
if(!window.Node)var Node={};if(!Node.ELEMENT_NODE){Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12});}
(function(){var element=this.Element;this.Element=function(tagName,attributes){attributes=attributes||{};tagName=tagName.toLowerCase();var cache=Element.cache;if(Prototype.Browser.IE&&attributes.name){tagName='<'+tagName+' name="'+attributes.name+'">';delete attributes.name;return Element.writeAttribute(document.createElement(tagName),attributes);}
if(!cache[tagName])cache[tagName]=Element.extend(document.createElement(tagName));return Element.writeAttribute(cache[tagName].cloneNode(false),attributes);};Object.extend(this.Element,element||{});}).call(window);Element.cache={};Element.Methods={visible:function(element){return $(element).style.display!='none';},toggle:function(element){element=$(element);Element[Element.visible(element)?'hide':'show'](element);return element;},hide:function(element){$(element).style.display='none';return element;},show:function(element){$(element).style.display='';return element;},remove:function(element){element=$(element);element.parentNode.removeChild(element);return element;},update:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;},replace:function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();else if(!Object.isElement(content)){content=Object.toHTML(content);var range=element.ownerDocument.createRange();range.selectNode(element);content.evalScripts.bind(content).defer();content=range.createContextualFragment(content.stripScripts());}
element.parentNode.replaceChild(content,element);return element;},insert:function(element,insertions){element=$(element);if(Object.isString(insertions)||Object.isNumber(insertions)||Object.isElement(insertions)||(insertions&&(insertions.toElement||insertions.toHTML)))
insertions={bottom:insertions};var content,t,range;for(position in insertions){content=insertions[position];position=position.toLowerCase();t=Element._insertionTranslations[position];if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){t.insert(element,content);continue;}
content=Object.toHTML(content);range=element.ownerDocument.createRange();t.initializeRange(element,range);t.insert(element,range.createContextualFragment(content.stripScripts()));content.evalScripts.bind(content).defer();}
return element;},wrap:function(element,wrapper,attributes){element=$(element);if(Object.isElement(wrapper))
$(wrapper).writeAttribute(attributes||{});else if(Object.isString(wrapper))wrapper=new Element(wrapper,attributes);else wrapper=new Element('div',wrapper);if(element.parentNode)
element.parentNode.replaceChild(wrapper,element);wrapper.appendChild(element);return wrapper;},inspect:function(element){element=$(element);var result='<'+element.tagName.toLowerCase();$H({'id':'id','className':'class'}).each(function(pair){var property=pair.first(),attribute=pair.last();var value=(element[property]||'').toString();if(value)result+=' '+attribute+'='+value.inspect(true);});return result+'>';},recursivelyCollect:function(element,property){element=$(element);var elements=[];while(element=element[property])
if(element.nodeType==1)
elements.push(Element.extend(element));return elements;},ancestors:function(element){return $(element).recursivelyCollect('parentNode');},descendants:function(element){return $A($(element).getElementsByTagName('*')).each(Element.extend);},firstDescendant:function(element){element=$(element).firstChild;while(element&&element.nodeType!=1)element=element.nextSibling;return $(element);},immediateDescendants:function(element){if(!(element=$(element).firstChild))return[];while(element&&element.nodeType!=1)element=element.nextSibling;if(element)return[element].concat($(element).nextSiblings());return[];},previousSiblings:function(element){return $(element).recursivelyCollect('previousSibling');},nextSiblings:function(element){return $(element).recursivelyCollect('nextSibling');},siblings:function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings());},match:function(element,selector){if(Object.isString(selector))
selector=new Selector(selector);return selector.match($(element));},up:function(element,expression,index){element=$(element);if(arguments.length==1)return $(element.parentNode);var ancestors=element.ancestors();return expression?Selector.findElement(ancestors,expression,index):ancestors[index||0];},down:function(element,expression,index){element=$(element);if(arguments.length==1)return element.firstDescendant();var descendants=element.descendants();return expression?Selector.findElement(descendants,expression,index):descendants[index||0];},previous:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.previousElementSibling(element));var previousSiblings=element.previousSiblings();return expression?Selector.findElement(previousSiblings,expression,index):previousSiblings[index||0];},next:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.nextElementSibling(element));var nextSiblings=element.nextSiblings();return expression?Selector.findElement(nextSiblings,expression,index):nextSiblings[index||0];},select:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element,args);},adjacent:function(){var args=$A(arguments),element=$(args.shift());return Selector.findChildElements(element.parentNode,args).without(element);},identify:function(element){element=$(element);var id=element.readAttribute('id'),self=arguments.callee;if(id)return id;do{id='anonymous_element_'+self.counter++}while($(id));element.writeAttribute('id',id);return id;},readAttribute:function(element,name){element=$(element);if(Prototype.Browser.IE){var t=Element._attributeTranslations.read;if(t.values[name])return t.values[name](element,name);if(t.names[name])name=t.names[name];if(name.include(':')){return(!element.attributes||!element.attributes[name])?null:element.attributes[name].value;}}
return element.getAttribute(name);},writeAttribute:function(element,name,value){element=$(element);var attributes={},t=Element._attributeTranslations.write;if(typeof name=='object')attributes=name;else attributes[name]=value===undefined?true:value;for(var attr in attributes){var name=t.names[attr]||attr,value=attributes[attr];if(t.values[attr])name=t.values[attr](element,value);if(value===false||value===null)
element.removeAttribute(name);else if(value===true)
element.setAttribute(name,name);else element.setAttribute(name,value);}
return element;},getHeight:function(element){return $(element).getDimensions().height;},getWidth:function(element){return $(element).getDimensions().width;},classNames:function(element){return new Element.ClassNames(element);},hasClassName:function(element,className){if(!(element=$(element)))return;var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|$)").test(elementClassName)));},addClassName:function(element,className){if(!(element=$(element)))return;if(!element.hasClassName(className))
element.className+=(element.className?' ':'')+className;return element;},removeClassName:function(element,className){if(!(element=$(element)))return;element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)"),' ').strip();return element;},toggleClassName:function(element,className){if(!(element=$(element)))return;return element[element.hasClassName(className)?'removeClassName':'addClassName'](className);},cleanWhitespace:function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue))
element.removeChild(node);node=nextNode;}
return element;},empty:function(element){return $(element).innerHTML.blank();},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);if(element.compareDocumentPosition)
return(element.compareDocumentPosition(ancestor)&8)===8;if(element.sourceIndex&&!Prototype.Browser.Opera){var e=element.sourceIndex,a=ancestor.sourceIndex,nextAncestor=ancestor.nextSibling;if(!nextAncestor){do{ancestor=ancestor.parentNode;}
while(!(nextAncestor=ancestor.nextSibling)&&ancestor.parentNode);}
if(nextAncestor)return(e>a&&e<nextAncestor.sourceIndex);}
while(element=element.parentNode)
if(element==ancestor)return true;return false;},scrollTo:function(element){element=$(element);var pos=element.cumulativeOffset();window.scrollTo(pos[0],pos[1]);return element;},getStyle:function(element,style){element=$(element);style=style=='float'?'cssFloat':style.camelize();var value=element.style[style];if(!value){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null;}
if(style=='opacity')return value?parseFloat(value):1.0;return value=='auto'?null:value;},getOpacity:function(element){return $(element).getStyle('opacity');},setStyle:function(element,styles){element=$(element);var elementStyle=element.style,match;if(Object.isString(styles)){element.style.cssText+=';'+styles;return styles.include('opacity')?element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]):element;}
for(var property in styles)
if(property=='opacity')element.setOpacity(styles[property]);else
elementStyle[(property=='float'||property=='cssFloat')?(elementStyle.styleFloat===undefined?'cssFloat':'styleFloat'):property]=styles[property];return element;},setOpacity:function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;return element;},getDimensions:function(element){element=$(element);var display=$(element).getStyle('display');if(display!='none'&&display!=null)
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};},makePositioned:function(element){element=$(element);var pos=Element.getStyle(element,'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(window.opera){element.style.top=0;element.style.left=0;}}
return element;},undoPositioned:function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right='';}
return element;},makeClipping:function(element){element=$(element);if(element._overflow)return element;element._overflow=Element.getStyle(element,'overflow')||'auto';if(element._overflow!=='hidden')
element.style.overflow='hidden';return element;},undoClipping:function(element){element=$(element);if(!element._overflow)return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element;},cumulativeOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);},positionedOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(element.tagName=='BODY')break;var p=Element.getStyle(element,'position');if(p=='relative'||p=='absolute')break;}}while(element);return Element._returnOffset(valueL,valueT);},absolutize:function(element){element=$(element);if(element.getStyle('position')=='absolute')return;var offsets=element.positionedOffset();var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px';return element;},relativize:function(element){element=$(element);if(element.getStyle('position')=='relative')return;element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth;return element;},cumulativeScrollOffset:function(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode;}while(element);return Element._returnOffset(valueL,valueT);},getOffsetParent:function(element){if(element.offsetParent)return $(element.offsetParent);if(element==document.body)return $(element);while((element=element.parentNode)&&element!=document.body)
if(Element.getStyle(element,'position')!='static')
return $(element);return $(document.body);},viewportOffset:function(forElement){var valueT=0,valueL=0;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body&&Element.getStyle(element,'position')=='absolute')break;}while(element=element.offsetParent);element=forElement;do{if(!Prototype.Browser.Opera||element.tagName=='BODY'){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0;}}while(element=element.parentNode);return Element._returnOffset(valueL,valueT);},clonePosition:function(element,source){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});source=$(source);var p=source.viewportOffset();element=$(element);var delta=[0,0];var parent=null;if(Element.getStyle(element,'position')=='absolute'){parent=element.getOffsetParent();delta=parent.viewportOffset();}
if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop;}
if(options.setLeft)element.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop)element.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth)element.style.width=source.offsetWidth+'px';if(options.setHeight)element.style.height=source.offsetHeight+'px';return element;}};Element.Methods.identify.counter=1;Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});Element._attributeTranslations={write:{names:{className:'class',htmlFor:'for'},values:{}}};if(!document.createRange||Prototype.Browser.Opera){Element.Methods.insert=function(element,insertions){element=$(element);if(Object.isString(insertions)||Object.isNumber(insertions)||Object.isElement(insertions)||(insertions&&(insertions.toElement||insertions.toHTML)))
insertions={bottom:insertions};var t=Element._insertionTranslations,content,position,pos,tagName;for(position in insertions){content=insertions[position];position=position.toLowerCase();pos=t[position];if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){pos.insert(element,content);continue;}
content=Object.toHTML(content);tagName=((position=='before'||position=='after')?element.parentNode:element).tagName.toUpperCase();if(t.tags[tagName]){var fragments=Element._getContentFromAnonymousElement(tagName,content.stripScripts());if(position=='top'||position=='after')fragments.reverse();fragments.each(pos.insert.curry(element));}
else element.insertAdjacentHTML(pos.adjacency,content.stripScripts());content.evalScripts.bind(content).defer();}
return element;};}
if(Prototype.Browser.Opera){Element.Methods._getStyle=Element.Methods.getStyle;Element.Methods.getStyle=function(element,style){switch(style){case'left':case'top':case'right':case'bottom':if(Element._getStyle(element,'position')=='static')return null;default:return Element._getStyle(element,style);}};Element.Methods._readAttribute=Element.Methods.readAttribute;Element.Methods.readAttribute=function(element,attribute){if(attribute=='title')return element.title;return Element._readAttribute(element,attribute);};}
else if(Prototype.Browser.IE){$w('positionedOffset getOffsetParent viewportOffset').each(function(method){Element.Methods[method]=Element.Methods[method].wrap(function(proceed,element){element=$(element);var position=element.getStyle('position');if(position!='static')return proceed(element);element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});});Element.Methods.getStyle=function(element,style){element=$(element);style=(style=='float'||style=='cssFloat')?'styleFloat':style.camelize();var value=element.style[style];if(!value&&element.currentStyle)value=element.currentStyle[style];if(style=='opacity'){if(value=(element.getStyle('filter')||'').match(/alpha\(opacity=(.*)\)/))
if(value[1])return parseFloat(value[1])/100;return 1.0;}
if(value=='auto'){if((style=='width'||style=='height')&&(element.getStyle('display')!='none'))
return element['offset'+style.capitalize()]+'px';return null;}
return value;};Element.Methods.setOpacity=function(element,value){function stripAlpha(filter){return filter.replace(/alpha\([^\)]*\)/gi,'');}
element=$(element);var currentStyle=element.currentStyle;if((currentStyle&&!currentStyle.hasLayout)||(!currentStyle&&element.style.zoom=='normal'))
element.style.zoom=1;var filter=element.getStyle('filter'),style=element.style;if(value==1||value===''){(filter=stripAlpha(filter))?style.filter=filter:style.removeAttribute('filter');return element;}else if(value<0.00001)value=0;style.filter=stripAlpha(filter)+'alpha(opacity='+(value*100)+')';return element;};Element._attributeTranslations={read:{names:{'class':'className','for':'htmlFor'},values:{_getAttr:function(element,attribute){return element.getAttribute(attribute,2);},_getAttrNode:function(element,attribute){var node=element.getAttributeNode(attribute);return node?node.value:"";},_getEv:function(element,attribute){var attribute=element.getAttribute(attribute);return attribute?attribute.toString().slice(23,-2):null;},_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null;},style:function(element){return element.style.cssText.toLowerCase();},title:function(element){return element.title;}}}};Element._attributeTranslations.write={names:Object.clone(Element._attributeTranslations.read.names),values:{checked:function(element,value){element.checked=!!value;},style:function(element,value){element.style.cssText=value?value:'';}}};Element._attributeTranslations.has={};$w('colSpan rowSpan vAlign dateTime accessKey tabIndex '+'encType maxLength readOnly longDesc').each(function(attr){Element._attributeTranslations.write.names[attr.toLowerCase()]=attr;Element._attributeTranslations.has[attr.toLowerCase()]=attr;});(function(v){Object.extend(v,{href:v._getAttr,src:v._getAttr,type:v._getAttr,action:v._getAttrNode,disabled:v._flag,checked:v._flag,readonly:v._flag,multiple:v._flag,onload:v._getEv,onunload:v._getEv,onclick:v._getEv,ondblclick:v._getEv,onmousedown:v._getEv,onmouseup:v._getEv,onmouseover:v._getEv,onmousemove:v._getEv,onmouseout:v._getEv,onfocus:v._getEv,onblur:v._getEv,onkeypress:v._getEv,onkeydown:v._getEv,onkeyup:v._getEv,onsubmit:v._getEv,onreset:v._getEv,onselect:v._getEv,onchange:v._getEv});})(Element._attributeTranslations.read.values);}
else if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1)?0.999999:(value==='')?'':(value<0.00001)?0:value;return element;};}
else if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1||value==='')?'':(value<0.00001)?0:value;if(value==1)
if(element.tagName=='IMG'&&element.width){element.width++;element.width--;}else try{var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}
return element;};Element.Methods.cumulativeOffset=function(element){var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute')break;element=element.offsetParent;}while(element);return Element._returnOffset(valueL,valueT);};}
if(Prototype.Browser.IE||Prototype.Browser.Opera){Element.Methods.update=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content))return element.update().insert(content);content=Object.toHTML(content);var tagName=element.tagName.toUpperCase();if(tagName in Element._insertionTranslations.tags){$A(element.childNodes).each(function(node){element.removeChild(node)});Element._getContentFromAnonymousElement(tagName,content.stripScripts()).each(function(node){element.appendChild(node)});}
else element.innerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};}
if(document.createElement('div').outerHTML){Element.Methods.replace=function(element,content){element=$(element);if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){element.parentNode.replaceChild(content,element);return element;}
content=Object.toHTML(content);var parent=element.parentNode,tagName=parent.tagName.toUpperCase();if(Element._insertionTranslations.tags[tagName]){var nextSibling=element.next();var fragments=Element._getContentFromAnonymousElement(tagName,content.stripScripts());parent.removeChild(element);if(nextSibling)
fragments.each(function(node){parent.insertBefore(node,nextSibling)});else
fragments.each(function(node){parent.appendChild(node)});}
else element.outerHTML=content.stripScripts();content.evalScripts.bind(content).defer();return element;};}
Element._returnOffset=function(l,t){var result=[l,t];result.left=l;result.top=t;return result;};Element._getContentFromAnonymousElement=function(tagName,html){var div=new Element('div'),t=Element._insertionTranslations.tags[tagName];div.innerHTML=t[0]+html+t[1];t[2].times(function(){div=div.firstChild});return $A(div.childNodes);};Element._insertionTranslations={before:{adjacency:'beforeBegin',insert:function(element,node){element.parentNode.insertBefore(node,element);},initializeRange:function(element,range){range.setStartBefore(element);}},top:{adjacency:'afterBegin',insert:function(element,node){element.insertBefore(node,element.firstChild);},initializeRange:function(element,range){range.selectNodeContents(element);range.collapse(true);}},bottom:{adjacency:'beforeEnd',insert:function(element,node){element.appendChild(node);}},after:{adjacency:'afterEnd',insert:function(element,node){element.parentNode.insertBefore(node,element.nextSibling);},initializeRange:function(element,range){range.setStartAfter(element);}},tags:{TABLE:['<table>','</table>',1],TBODY:['<table><tbody>','</tbody></table>',2],TR:['<table><tbody><tr>','</tr></tbody></table>',3],TD:['<table><tbody><tr><td>','</td></tr></tbody></table>',4],SELECT:['<select>','</select>',1]}};(function(){this.bottom.initializeRange=this.top.initializeRange;Object.extend(this.tags,{THEAD:this.tags.TBODY,TFOOT:this.tags.TBODY,TH:this.tags.TD});}).call(Element._insertionTranslations);Element.Methods.Simulated={hasAttribute:function(element,attribute){attribute=Element._attributeTranslations.has[attribute]||attribute;var node=$(element).getAttributeNode(attribute);return node&&node.specified;}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);if(!Prototype.BrowserFeatures.ElementExtensions&&document.createElement('div').__proto__){window.HTMLElement={};window.HTMLElement.prototype=document.createElement('div').__proto__;Prototype.BrowserFeatures.ElementExtensions=true;}
Element.extend=(function(){if(Prototype.BrowserFeatures.SpecificElementExtensions)
return Prototype.K;var Methods={},ByTag=Element.Methods.ByTag;var extend=Object.extend(function(element){if(!element||element._extendedByPrototype||element.nodeType!=1||element==window)return element;var methods=Object.clone(Methods),tagName=element.tagName,property,value;if(ByTag[tagName])Object.extend(methods,ByTag[tagName]);for(property in methods){value=methods[property];if(Object.isFunction(value)&&!(property in element))
element[property]=value.methodize();}
element._extendedByPrototype=Prototype.emptyFunction;return element;},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(Methods,Element.Methods);Object.extend(Methods,Element.Methods.Simulated);}}});extend.refresh();return extend;})();Element.hasAttribute=function(element,attribute){if(element.hasAttribute)return element.hasAttribute(attribute);return Element.Methods.Simulated.hasAttribute(element,attribute);};Element.addMethods=function(methods){var F=Prototype.BrowserFeatures,T=Element.Methods.ByTag;if(!methods){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(Element.Methods.ByTag,{"FORM":Object.clone(Form.Methods),"INPUT":Object.clone(Form.Element.Methods),"SELECT":Object.clone(Form.Element.Methods),"TEXTAREA":Object.clone(Form.Element.Methods)});}
if(arguments.length==2){var tagName=methods;methods=arguments[1];}
if(!tagName)Object.extend(Element.Methods,methods||{});else{if(Object.isArray(tagName))tagName.each(extend);else extend(tagName);}
function extend(tagName){tagName=tagName.toUpperCase();if(!Element.Methods.ByTag[tagName])
Element.Methods.ByTag[tagName]={};Object.extend(Element.Methods.ByTag[tagName],methods);}
function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;for(var property in methods){var value=methods[property];if(!Object.isFunction(value))continue;if(!onlyIfAbsent||!(property in destination))
destination[property]=value.methodize();}}
function findDOMClass(tagName){var klass;var trans={"OPTGROUP":"OptGroup","TEXTAREA":"TextArea","P":"Paragraph","FIELDSET":"FieldSet","UL":"UList","OL":"OList","DL":"DList","DIR":"Directory","H1":"Heading","H2":"Heading","H3":"Heading","H4":"Heading","H5":"Heading","H6":"Heading","Q":"Quote","INS":"Mod","DEL":"Mod","A":"Anchor","IMG":"Image","CAPTION":"TableCaption","COL":"TableCol","COLGROUP":"TableCol","THEAD":"TableSection","TFOOT":"TableSection","TBODY":"TableSection","TR":"TableRow","TH":"TableCell","TD":"TableCell","FRAMESET":"FrameSet","IFRAME":"IFrame"};if(trans[tagName])klass='HTML'+trans[tagName]+'Element';if(window[klass])return window[klass];klass='HTML'+tagName+'Element';if(window[klass])return window[klass];klass='HTML'+tagName.capitalize()+'Element';if(window[klass])return window[klass];window[klass]={};window[klass].prototype=document.createElement(tagName).__proto__;return window[klass];}
if(F.ElementExtensions){copy(Element.Methods,HTMLElement.prototype);copy(Element.Methods.Simulated,HTMLElement.prototype,true);}
if(F.SpecificElementExtensions){for(var tag in Element.Methods.ByTag){var klass=findDOMClass(tag);if(Object.isUndefined(klass))continue;copy(T[tag],klass.prototype);}}
Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh)Element.extend.refresh();Element.cache={};};document.viewport={getDimensions:function(){var dimensions={};$w('width height').each(function(d){var D=d.capitalize();dimensions[d]=self['inner'+D]||(document.documentElement['client'+D]||document.body['client'+D]);});return dimensions;},getWidth:function(){return this.getDimensions().width;},getHeight:function(){return this.getDimensions().height;},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop);}};var Selector=Class.create({initialize:function(expression){this.expression=expression.strip();this.compileMatcher();},compileMatcher:function(){if(Prototype.BrowserFeatures.XPath&&!(/(\[[\w-]*?:|:checked)/).test(this.expression))
return this.compileXPathMatcher();var e=this.expression,ps=Selector.patterns,h=Selector.handlers,c=Selector.criteria,le,p,m;if(Selector._cache[e]){this.matcher=Selector._cache[e];return;}
this.matcher=["this.matcher = function(root) {","var r = root, h = Selector.handlers, c = false, n;"];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){this.matcher.push(Object.isFunction(c[i])?c[i](m):new Template(c[i]).evaluate(m));e=e.replace(m[0],'');break;}}}
this.matcher.push("return h.unique(n);\n}");eval(this.matcher.join('\n'));Selector._cache[this.expression]=this.matcher;},compileXPathMatcher:function(){var e=this.expression,ps=Selector.patterns,x=Selector.xpath,le,m;if(Selector._cache[e]){this.xpath=Selector._cache[e];return;}
this.matcher=['.//*'];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){if(m=e.match(ps[i])){this.matcher.push(Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m));e=e.replace(m[0],'');break;}}}
this.xpath=this.matcher.join('');Selector._cache[this.expression]=this.xpath;},findElements:function(root){root=root||document;if(this.xpath)return document._getElementsByXPath(this.xpath,root);return this.matcher(root);},match:function(element){this.tokens=[];var e=this.expression,ps=Selector.patterns,as=Selector.assertions;var le,p,m;while(e&&le!==e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){if(as[i]){this.tokens.push([i,Object.clone(m)]);e=e.replace(m[0],'');}else{return this.findElements(document).include(element);}}}}
var match=true,name,matches;for(var i=0,token;token=this.tokens[i];i++){name=token[0],matches=token[1];if(!Selector.assertions[name](element,matches)){match=false;break;}}
return match;},toString:function(){return this.expression;},inspect:function(){return"#<Selector:"+this.expression.inspect()+">";}});Object.extend(Selector,{_cache:{},xpath:{descendant:"//*",child:"/*",adjacent:"/following-sibling::*[1]",laterSibling:'/following-sibling::*',tagName:function(m){if(m[1]=='*')return'';return"[local-name()='"+m[1].toLowerCase()+"' or local-name()='"+m[1].toUpperCase()+"']";},className:"[contains(concat(' ', @class, ' '), ' #{1} ')]",id:"[@id='#{1}']",attrPresence:"[@#{1}]",attr:function(m){m[3]=m[5]||m[6];return new Template(Selector.xpath.operators[m[2]]).evaluate(m);},pseudo:function(m){var h=Selector.xpath.pseudos[m[1]];if(!h)return'';if(Object.isFunction(h))return h(m);return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);},operators:{'=':"[@#{1}='#{3}']",'!=':"[@#{1}!='#{3}']",'^=':"[starts-with(@#{1}, '#{3}')]",'$=':"[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",'*=':"[contains(@#{1}, '#{3}')]",'~=':"[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",'|=':"[contains(concat('-', @#{1}, '-'), '-#{3}-')]"},pseudos:{'first-child':'[not(preceding-sibling::*)]','last-child':'[not(following-sibling::*)]','only-child':'[not(preceding-sibling::* or following-sibling::*)]','empty':"[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]",'checked':"[@checked]",'disabled':"[@disabled]",'enabled':"[not(@disabled)]",'not':function(m){var e=m[6],p=Selector.patterns,x=Selector.xpath,le,m,v;var exclusion=[];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in p){if(m=e.match(p[i])){v=Object.isFunction(x[i])?x[i](m):new Template(x[i]).evaluate(m);exclusion.push("("+v.substring(1,v.length-1)+")");e=e.replace(m[0],'');break;}}}
return"[not("+exclusion.join(" and ")+")]";},'nth-child':function(m){return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",m);},'nth-last-child':function(m){return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",m);},'nth-of-type':function(m){return Selector.xpath.pseudos.nth("position() ",m);},'nth-last-of-type':function(m){return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",m);},'first-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-of-type'](m);},'last-of-type':function(m){m[6]="1";return Selector.xpath.pseudos['nth-last-of-type'](m);},'only-of-type':function(m){var p=Selector.xpath.pseudos;return p['first-of-type'](m)+p['last-of-type'](m);},nth:function(fragment,m){var mm,formula=m[6],predicate;if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';if(mm=formula.match(/^(\d+)$/))
return'['+fragment+"= "+mm[1]+']';if(mm=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(mm[1]=="-")mm[1]=-1;var a=mm[1]?Number(mm[1]):1;var b=mm[2]?Number(mm[2]):0;predicate="[((#{fragment} - #{b}) mod #{a} = 0) and "+"((#{fragment} - #{b}) div #{a} >= 0)]";return new Template(predicate).evaluate({fragment:fragment,a:a,b:b});}}}},criteria:{tagName:'n = h.tagName(n, r, "#{1}", c);   c = false;',className:'n = h.className(n, r, "#{1}", c); c = false;',id:'n = h.id(n, r, "#{1}", c);        c = false;',attrPresence:'n = h.attrPresence(n, r, "#{1}"); c = false;',attr:function(m){m[3]=(m[5]||m[6]);return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m);},pseudo:function(m){if(m[6])m[6]=m[6].replace(/"/g,'\\"');return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);},descendant:'c = "descendant";',child:'c = "child";',adjacent:'c = "adjacent";',laterSibling:'c = "laterSibling";'},patterns:{laterSibling:/^\s*~\s*/,child:/^\s*>\s*/,adjacent:/^\s*\+\s*/,descendant:/^\s/,tagName:/^\s*(\*|[\w\-]+)(\b|$)?/,id:/^#([\w\-\*]+)(\b|$)/,className:/^\.([\w\-\*]+)(\b|$)/,pseudo:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/,attrPresence:/^\[([\w]+)\]/,attr:/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/},assertions:{tagName:function(element,matches){return matches[1].toUpperCase()==element.tagName.toUpperCase();},className:function(element,matches){return Element.hasClassName(element,matches[1]);},id:function(element,matches){return element.id===matches[1];},attrPresence:function(element,matches){return Element.hasAttribute(element,matches[1]);},attr:function(element,matches){var nodeValue=Element.readAttribute(element,matches[1]);return Selector.operators[matches[2]](nodeValue,matches[3]);}},handlers:{concat:function(a,b){for(var i=0,node;node=b[i];i++)
a.push(node);return a;},mark:function(nodes){for(var i=0,node;node=nodes[i];i++)
node._counted=true;return nodes;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
node._counted=undefined;return nodes;},index:function(parentNode,reverse,ofType){parentNode._counted=true;if(reverse){for(var nodes=parentNode.childNodes,i=nodes.length-1,j=1;i>=0;i--){var node=nodes[i];if(node.nodeType==1&&(!ofType||node._counted))node.nodeIndex=j++;}}else{for(var i=0,j=1,nodes=parentNode.childNodes;node=nodes[i];i++)
if(node.nodeType==1&&(!ofType||node._counted))node.nodeIndex=j++;}},unique:function(nodes){if(nodes.length==0)return nodes;var results=[],n;for(var i=0,l=nodes.length;i<l;i++)
if(!(n=nodes[i])._counted){n._counted=true;results.push(Element.extend(n));}
return Selector.handlers.unmark(results);},descendant:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
h.concat(results,node.getElementsByTagName('*'));return results;},child:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++){for(var j=0,children=[],child;child=node.childNodes[j];j++)
if(child.nodeType==1&&child.tagName!='!')results.push(child);}
return results;},adjacent:function(nodes){for(var i=0,results=[],node;node=nodes[i];i++){var next=this.nextElementSibling(node);if(next)results.push(next);}
return results;},laterSibling:function(nodes){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
h.concat(results,Element.nextSiblings(node));return results;},nextElementSibling:function(node){while(node=node.nextSibling)
if(node.nodeType==1)return node;return null;},previousElementSibling:function(node){while(node=node.previousSibling)
if(node.nodeType==1)return node;return null;},tagName:function(nodes,root,tagName,combinator){tagName=tagName.toUpperCase();var results=[],h=Selector.handlers;if(nodes){if(combinator){if(combinator=="descendant"){for(var i=0,node;node=nodes[i];i++)
h.concat(results,node.getElementsByTagName(tagName));return results;}else nodes=this[combinator](nodes);if(tagName=="*")return nodes;}
for(var i=0,node;node=nodes[i];i++)
if(node.tagName.toUpperCase()==tagName)results.push(node);return results;}else return root.getElementsByTagName(tagName);},id:function(nodes,root,id,combinator){var targetNode=$(id),h=Selector.handlers;if(!targetNode)return[];if(!nodes&&root==document)return[targetNode];if(nodes){if(combinator){if(combinator=='child'){for(var i=0,node;node=nodes[i];i++)
if(targetNode.parentNode==node)return[targetNode];}else if(combinator=='descendant'){for(var i=0,node;node=nodes[i];i++)
if(Element.descendantOf(targetNode,node))return[targetNode];}else if(combinator=='adjacent'){for(var i=0,node;node=nodes[i];i++)
if(Selector.handlers.previousElementSibling(targetNode)==node)
return[targetNode];}else nodes=h[combinator](nodes);}
for(var i=0,node;node=nodes[i];i++)
if(node==targetNode)return[targetNode];return[];}
return(targetNode&&Element.descendantOf(targetNode,root))?[targetNode]:[];},className:function(nodes,root,className,combinator){if(nodes&&combinator)nodes=this[combinator](nodes);return Selector.handlers.byClassName(nodes,root,className);},byClassName:function(nodes,root,className){if(!nodes)nodes=Selector.handlers.descendant([root]);var needle=' '+className+' ';for(var i=0,results=[],node,nodeClassName;node=nodes[i];i++){nodeClassName=node.className;if(nodeClassName.length==0)continue;if(nodeClassName==className||(' '+nodeClassName+' ').include(needle))
results.push(node);}
return results;},attrPresence:function(nodes,root,attr){if(!nodes)nodes=root.getElementsByTagName("*");var results=[];for(var i=0,node;node=nodes[i];i++)
if(Element.hasAttribute(node,attr))results.push(node);return results;},attr:function(nodes,root,attr,value,operator){if(!nodes)nodes=root.getElementsByTagName("*");var handler=Selector.operators[operator],results=[];for(var i=0,node;node=nodes[i];i++){var nodeValue=Element.readAttribute(node,attr);if(nodeValue===null)continue;if(handler(nodeValue,value))results.push(node);}
return results;},pseudo:function(nodes,name,value,root,combinator){if(nodes&&combinator)nodes=this[combinator](nodes);if(!nodes)nodes=root.getElementsByTagName("*");return Selector.pseudos[name](nodes,value,root);}},pseudos:{'first-child':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.previousElementSibling(node))continue;results.push(node);}
return results;},'last-child':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(Selector.handlers.nextElementSibling(node))continue;results.push(node);}
return results;},'only-child':function(nodes,value,root){var h=Selector.handlers;for(var i=0,results=[],node;node=nodes[i];i++)
if(!h.previousElementSibling(node)&&!h.nextElementSibling(node))
results.push(node);return results;},'nth-child':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root);},'nth-last-child':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true);},'nth-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,false,true);},'nth-last-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,formula,root,true,true);},'first-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,false,true);},'last-of-type':function(nodes,formula,root){return Selector.pseudos.nth(nodes,"1",root,true,true);},'only-of-type':function(nodes,formula,root){var p=Selector.pseudos;return p['last-of-type'](p['first-of-type'](nodes,formula,root),formula,root);},getIndices:function(a,b,total){if(a==0)return b>0?[b]:[];return $R(1,total).inject([],function(memo,i){if(0==(i-b)%a&&(i-b)/a>=0)memo.push(i);return memo;});},nth:function(nodes,formula,root,reverse,ofType){if(nodes.length==0)return[];if(formula=='even')formula='2n+0';if(formula=='odd')formula='2n+1';var h=Selector.handlers,results=[],indexed=[],m;h.mark(nodes);for(var i=0,node;node=nodes[i];i++){if(!node.parentNode._counted){h.index(node.parentNode,reverse,ofType);indexed.push(node.parentNode);}}
if(formula.match(/^\d+$/)){formula=Number(formula);for(var i=0,node;node=nodes[i];i++)
if(node.nodeIndex==formula)results.push(node);}else if(m=formula.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(m[1]=="-")m[1]=-1;var a=m[1]?Number(m[1]):1;var b=m[2]?Number(m[2]):0;var indices=Selector.pseudos.getIndices(a,b,nodes.length);for(var i=0,node,l=indices.length;node=nodes[i];i++){for(var j=0;j<l;j++)
if(node.nodeIndex==indices[j])results.push(node);}}
h.unmark(nodes);h.unmark(indexed);return results;},'empty':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++){if(node.tagName=='!'||(node.firstChild&&!node.innerHTML.match(/^\s*$/)))continue;results.push(node);}
return results;},'not':function(nodes,selector,root){var h=Selector.handlers,selectorType,m;var exclusions=new Selector(selector).findElements(root);h.mark(exclusions);for(var i=0,results=[],node;node=nodes[i];i++)
if(!node._counted)results.push(node);h.unmark(exclusions);return results;},'enabled':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
if(!node.disabled)results.push(node);return results;},'disabled':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
if(node.disabled)results.push(node);return results;},'checked':function(nodes,value,root){for(var i=0,results=[],node;node=nodes[i];i++)
if(node.checked)results.push(node);return results;}},operators:{'=':function(nv,v){return nv==v;},'!=':function(nv,v){return nv!=v;},'^=':function(nv,v){return nv.startsWith(v);},'$=':function(nv,v){return nv.endsWith(v);},'*=':function(nv,v){return nv.include(v);},'~=':function(nv,v){return(' '+nv+' ').include(' '+v+' ');},'|=':function(nv,v){return('-'+nv.toUpperCase()+'-').include('-'+v.toUpperCase()+'-');}},matchElements:function(elements,expression){var matches=new Selector(expression).findElements(),h=Selector.handlers;h.mark(matches);for(var i=0,results=[],element;element=elements[i];i++)
if(element._counted)results.push(element);h.unmark(matches);return results;},findElement:function(elements,expression,index){if(Object.isNumber(expression)){index=expression;expression=false;}
return Selector.matchElements(elements,expression||'*')[index||0];},findChildElements:function(element,expressions){var exprs=expressions.join(','),expressions=[];exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(m){expressions.push(m[1].strip());});var results=[],h=Selector.handlers;for(var i=0,l=expressions.length,selector;i<l;i++){selector=new Selector(expressions[i].strip());h.concat(results,selector.findElements(element));}
return(l>1)?h.unique(results):results;}});function $$(){return Selector.findChildElements(document,$A(arguments));}
var Form={reset:function(form){$(form).reset();return form;},serializeElements:function(elements,options){if(typeof options!='object')options={hash:!!options};else if(options.hash===undefined)options.hash=true;var key,value,submitted=false,submit=options.submit;var data=elements.inject({},function(result,element){if(!element.disabled&&element.name){key=element.name;value=$(element).getValue();if(value!=null&&(element.type!='submit'||(!submitted&&submit!==false&&(!submit||key==submit)&&(submitted=true)))){if(key in result){if(!Object.isArray(result[key]))result[key]=[result[key]];result[key].push(value);}
else result[key]=value;}}
return result;});return options.hash?data:Object.toQueryString(data);}};Form.Methods={serialize:function(form,options){return Form.serializeElements(Form.getElements(form),options);},getElements:function(form){return $A($(form).getElementsByTagName('*')).inject([],function(elements,child){if(Form.Element.Serializers[child.tagName.toLowerCase()])
elements.push(Element.extend(child));return elements;});},getInputs:function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name)return $A(inputs).map(Element.extend);for(var i=0,matchingInputs=[],length=inputs.length;i<length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))
continue;matchingInputs.push(Element.extend(input));}
return matchingInputs;},disable:function(form){form=$(form);Form.getElements(form).invoke('disable');return form;},enable:function(form){form=$(form);Form.getElements(form).invoke('enable');return form;},findFirstElement:function(form){var elements=$(form).getElements().findAll(function(element){return'hidden'!=element.type&&!element.disabled;});var firstByIndex=elements.findAll(function(element){return element.hasAttribute('tabIndex')&&element.tabIndex>=0;}).sortBy(function(element){return element.tabIndex}).first();return firstByIndex?firstByIndex:elements.find(function(element){return['input','select','textarea'].include(element.tagName.toLowerCase());});},focusFirstElement:function(form){form=$(form);form.findFirstElement().activate();return form;},request: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);}
if(form.hasAttribute('method')&&!options.method)
options.method=form.method;return new Ajax.Request(action,options);}};Form.Element={focus:function(element){$(element).focus();return element;},select:function(element){$(element).select();return element;}};Form.Element.Methods={serialize:function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getValue();if(value!=undefined){var pair={};pair[element.name]=value;return Object.toQueryString(pair);}}
return'';},getValue:function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element);},setValue:function(element,value){element=$(element);var method=element.tagName.toLowerCase();Form.Element.Serializers[method](element,value);return element;},clear:function(element){$(element).value='';return element;},present:function(element){return $(element).value!='';},activate:function(element){element=$(element);try{element.focus();if(element.select&&(element.tagName.toLowerCase()!='input'||!['button','reset','submit'].include(element.type)))
element.select();}catch(e){}
return element;},disable:function(element){element=$(element);element.blur();element.disabled=true;return element;},enable:function(element){element=$(element);element.disabled=false;return element;}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers={input:function(element,value){switch(element.type.toLowerCase()){case'checkbox':case'radio':return Form.Element.Serializers.inputSelector(element,value);default:return Form.Element.Serializers.textarea(element,value);}},inputSelector:function(element,value){if(value===undefined)return element.checked?element.value:null;else element.checked=!!value;},textarea:function(element,value){if(value===undefined)return element.value;else element.value=value;},select:function(element,index){if(index===undefined)
return this[element.type=='select-one'?'selectOne':'selectMany'](element);else{var opt,value,single=!Object.isArray(index);for(var i=0,length=element.length;i<length;i++){opt=element.options[i];value=this.optionValue(opt);if(single){if(value==index){opt.selected=true;return;}}
else opt.selected=index.include(value);}}},selectOne:function(element){var index=element.selectedIndex;return index>=0?this.optionValue(element.options[index]):null;},selectMany:function(element){var values,length=element.length;if(!length)return null;for(var i=0,values=[];i<length;i++){var opt=element.options[i];if(opt.selected)values.push(this.optionValue(opt));}
return values;},optionValue:function(opt){return Element.extend(opt).hasAttribute('value')?opt.value:opt.text;}};Abstract.TimedObserver=Class.create(PeriodicalExecuter,{initialize:function($super,element,frequency,callback){$super(callback,frequency);this.element=$(element);this.lastValue=this.getValue();},execute:function(){var value=this.getValue();if(Object.isString(this.lastValue)&&Object.isString(value)?this.lastValue!=value:String(this.lastValue)!=String(value)){this.callback(this.element,value);this.lastValue=value;}}});Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element);}});Abstract.EventObserver=Class.create({initialize:function(element,callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=='form')
this.registerFormCallbacks();else
this.registerCallback(this.element);},onElementEvent:function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value;}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback,this);},registerCallback:function(element){if(element.type){switch(element.type.toLowerCase()){case'checkbox':case'radio':Event.observe(element,'click',this.onElementEvent.bind(this));break;default:Event.observe(element,'change',this.onElementEvent.bind(this));break;}}}});Form.Element.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element);}});if(!window.Event)var Event={};Object.extend(Event,{KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,cache:{},relatedTarget:function(event){var element;switch(event.type){case'mouseover':element=event.fromElement;break;case'mouseout':element=event.toElement;break;default:return null;}
return Element.extend(element);}});Event.Methods=(function(){var isButton;if(Prototype.Browser.IE){var buttonMap={0:1,1:4,2:2};isButton=function(event,code){return event.button==buttonMap[code];};}else if(Prototype.Browser.WebKit){isButton=function(event,code){switch(code){case 0:return event.which==1&&!event.metaKey;case 1:return event.which==1&&event.metaKey;default:return false;}};}else{isButton=function(event,code){return event.which?(event.which===code+1):(event.button===code);};}
return{isLeftClick:function(event){return isButton(event,0)},isMiddleClick:function(event){return isButton(event,1)},isRightClick:function(event){return isButton(event,2)},element:function(event){var node=Event.extend(event).target;return Element.extend(node.nodeType==Node.TEXT_NODE?node.parentNode:node);},findElement:function(event,expression){var element=Event.element(event);return element.match(expression)?element:element.up(expression);},pointer:function(event){return{x:event.pageX||(event.clientX+
(document.documentElement.scrollLeft||document.body.scrollLeft)),y:event.pageY||(event.clientY+
(document.documentElement.scrollTop||document.body.scrollTop))};},pointerX:function(event){return Event.pointer(event).x},pointerY:function(event){return Event.pointer(event).y},stop:function(event){Event.extend(event);event.preventDefault();event.stopPropagation();event.stopped=true;}};})();Event.extend=(function(){var methods=Object.keys(Event.Methods).inject({},function(m,name){m[name]=Event.Methods[name].methodize();return m;});if(Prototype.Browser.IE){Object.extend(methods,{stopPropagation:function(){this.cancelBubble=true},preventDefault:function(){this.returnValue=false},inspect:function(){return"[object Event]"}});return function(event){if(!event)return false;if(event._extendedByPrototype)return event;event._extendedByPrototype=Prototype.emptyFunction;var pointer=Event.pointer(event);Object.extend(event,{target:event.srcElement,relatedTarget:Event.relatedTarget(event),pageX:pointer.x,pageY:pointer.y});return Object.extend(event,methods);};}else{Event.prototype=Event.prototype||document.createEvent("HTMLEvents").__proto__;Object.extend(Event.prototype,methods);return Prototype.K;}})();Object.extend(Event,(function(){var cache=Event.cache;function getEventID(element){if(element._eventID)return element._eventID;arguments.callee.id=arguments.callee.id||1;return element._eventID=++arguments.callee.id;}
function getDOMEventName(eventName){if(eventName&&eventName.include(':'))return"dataavailable";return eventName;}
function getCacheForID(id){return cache[id]=cache[id]||{};}
function getWrappersForEventName(id,eventName){var c=getCacheForID(id);return c[eventName]=c[eventName]||[];}
function createWrapper(element,eventName,handler){var id=getEventID(element);var c=getWrappersForEventName(id,eventName);if(c.pluck("handler").include(handler))return false;var wrapper=function(event){if(!Event||!Event.extend||(event.eventName&&event.eventName!=eventName))
return false;Event.extend(event);handler.call(element,event)};wrapper.handler=handler;c.push(wrapper);return wrapper;}
function findWrapper(id,eventName,handler){var c=getWrappersForEventName(id,eventName);return c.find(function(wrapper){return wrapper.handler==handler});}
function destroyWrapper(id,eventName,handler){var c=getCacheForID(id);if(!c[eventName])return false;c[eventName]=c[eventName].without(findWrapper(id,eventName,handler));}
function destroyCache(){for(var id in cache)
for(var eventName in cache[id])
cache[id][eventName]=null;}
if(window.attachEvent){window.attachEvent("onunload",destroyCache);}
return{observe:function(element,eventName,handler){element=$(element);var name=getDOMEventName(eventName);var wrapper=createWrapper(element,eventName,handler);if(!wrapper)return element;if(element.addEventListener){element.addEventListener(name,wrapper,false);}else{element.attachEvent("on"+name,wrapper);}
return element;},stopObserving:function(element,eventName,handler){element=$(element);var id=getEventID(element),name=getDOMEventName(eventName);if(!handler&&eventName){getWrappersForEventName(id,eventName).each(function(wrapper){element.stopObserving(eventName,wrapper.handler);});return element;}else if(!eventName){Object.keys(getCacheForID(id)).each(function(eventName){element.stopObserving(eventName);});return element;}
var wrapper=findWrapper(id,eventName,handler);if(!wrapper)return element;if(element.removeEventListener){element.removeEventListener(name,wrapper,false);}else{element.detachEvent("on"+name,wrapper);}
destroyWrapper(id,eventName,handler);return element;},fire:function(element,eventName,memo){element=$(element);if(element==document&&document.createEvent&&!element.dispatchEvent)
element=document.documentElement;if(document.createEvent){var event=document.createEvent("HTMLEvents");event.initEvent("dataavailable",true,true);}else{var event=document.createEventObject();event.eventType="ondataavailable";}
event.eventName=eventName;event.memo=memo||{};if(document.createEvent){element.dispatchEvent(event);}else{element.fireEvent(event.eventType,event);}
return event;}};})());Object.extend(Event,Event.Methods);Element.addMethods({fire:Event.fire,observe:Event.observe,stopObserving:Event.stopObserving});Object.extend(document,{fire:Element.Methods.fire.methodize(),observe:Element.Methods.observe.methodize(),stopObserving:Element.Methods.stopObserving.methodize()});(function(){var timer,fired=false;function fireContentLoadedEvent(){if(fired)return;if(timer)window.clearInterval(timer);document.fire("dom:loaded");fired=true;}
if(document.addEventListener){if(Prototype.Browser.WebKit){timer=window.setInterval(function(){if(/loaded|complete/.test(document.readyState))
fireContentLoadedEvent();},0);Event.observe(window,"load",fireContentLoadedEvent);}else{document.addEventListener("DOMContentLoaded",fireContentLoadedEvent,false);}}else{document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");$("__onDOMContentLoaded").onreadystatechange=function(){if(this.readyState=="complete"){this.onreadystatechange=null;fireContentLoadedEvent();}};}})();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(element,content){return Element.insert(element,{before:content});},Top:function(element,content){return Element.insert(element,{top:content});},Bottom:function(element,content){return Element.insert(element,{bottom:content});},After:function(element,content){return Element.insert(element,{after:content});}};var $continue=new Error('"throw $continue" is deprecated, use "return" instead');var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;},within:function(element,x,y){if(this.includeScrollOffsets)
return this.withinIncludingScrolloffsets(element,x,y);this.xcomp=x;this.ycomp=y;this.offset=Element.cumulativeOffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth);},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=Element.cumulativeScrollOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=Element.cumulativeOffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth);},overlap:function(mode,element){if(!mode)return 0;if(mode=='vertical')
return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight;if(mode=='horizontal')
return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth;},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(element){Position.prepare();return Element.absolutize(element);},relativize:function(element){Position.prepare();return Element.relativize(element);},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(source,target,options){options=options||{};return Element.clonePosition(target,source,options);}};if(!document.getElementsByClassName)document.getElementsByClassName=function(instanceMethods){function iter(name){return name.blank()?null:"[contains(concat(' ', @class, ' '), ' "+name+" ')]";}
instanceMethods.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(element,className){className=className.toString().strip();var cond=/\s/.test(className)?$w(className).map(iter).join(''):iter(className);return cond?document._getElementsByXPath('.//*'+cond,element):[];}:function(element,className){className=className.toString().strip();var elements=[],classNames=(/\s/.test(className)?$w(className):null);if(!classNames&&!className)return elements;var nodes=$(element).getElementsByTagName('*');className=' '+className+' ';for(var i=0,child,cn;child=nodes[i];i++){if(child.className&&(cn=' '+child.className+' ')&&(cn.include(className)||(classNames&&classNames.all(function(name){return!name.toString().blank()&&cn.include(' '+name+' ');}))))
elements.push(Element.extend(child));}
return elements;};return function(className,parentElement){return $(parentElement||document.body).getElementsByClassName(className);};}(Element.Methods);Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(element){this.element=$(element);},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0;})._each(iterator);},set:function(className){this.element.className=className;},add:function(classNameToAdd){if(this.include(classNameToAdd))return;this.set($A(this).concat(classNameToAdd).join(' '));},remove:function(classNameToRemove){if(!this.include(classNameToRemove))return;this.set($A(this).without(classNameToRemove).join(' '));},toString:function(){return $A(this).join(' ');}};Object.extend(Element.ClassNames.prototype,Enumerable);Element.addMethods();var parseUri=function(source){if(isUndefined(source))source=window.location.href;var o=parseUri.options,value=o.parser[o.strictMode?"strict":"loose"].exec(source);for(var i=0,uri={};i<14;i++){uri[o.key[i]]=value[i]||"";}
uri[o.q.name]={};uri[o.key[12]].replace(o.q.parser,function($0,$1,$2){if($1)uri[o.q.name][$1]=$2;});return uri;};parseUri.options={strictMode:false,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}};var gBrowserVersion=new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})").exec(navigator.appVersion);var isIE6=((document.all)&&parseFloat(RegExp.$1)==6);var isIE7=((document.all)&&parseFloat(RegExp.$1)==7);var isIE8=((document.all)&&parseFloat(RegExp.$1)==8);var gErrorDivs={ui:"dError",msg:"dErrorMsg"};var g_regExpNoHtmlTags=new RegExp(/^[^<>]*$/ig);var gDebugLog="";function bookmarkUs(_204,url){if(isUndefined(_204)){_204=gCommonStrings.site_context;}
if(isUndefined(url)){url="http://www.supportspace.com";}
if(window.sidebar){window.sidebar.addPanel(_204,url,"");}else{if(window.opera&&window.print){var elem=document.createElement("a");elem.setAttribute("href",url);elem.setAttribute("title",_204);elem.setAttribute("rel","sidebar");elem.click();}else{if(document.all){window.external.AddFavorite(url,_204);}}}}
function fixFlashActivate(){var oFlash=document.getElementsByTagName("object");for(var i=0;i<oFlash.length;i++){if(!$(oFlash[i]).getAttribute("dontRewriteMe")){oFlash[i].outerHTML=oFlash[i].outerHTML;$(oFlash[i]).show();}}}
function isUndefined(_209){var _20a;return _209==_20a;}
function isInt(_20b){var _20c=parseInt(_20b);return(!isNaN(_20c));}
function setMyAttribute(obj,_212,_213){$(obj)[_212]=_213;$(obj).setAttribute(_212,_213);}
function trim(s){return s.replace(/^\s*/,"").replace(/\s*$/,"");}
function isStrEmpty(str){return(trim(str)=="");}
function jsEscape(str){if(!str){return null;}
str=str.replace("'","\\'");return str;}
function htmlEnc(str,replaceCarriageReturn){if(!str){return"";}
str=str.replace(/&/g,"&amp;");str=str.replace(/</g,"&lt;");str=str.replace(/>/g,"&gt;");str=str.replace(/\"/g,"&quot;");if(replaceCarriageReturn!==false){str=str.replace(/\n/g,"<br />");}
return str;}
function setCookie(name,_221,_222,path,_224,_225){document.cookie=name+"="+escape(_221)+((_222)?"; expires="+_222.toGMTString():"")+((path)?"; path="+path:"")+((_224)?"; domain="+_224:"")+((_225)?"; secure":"");}
function getCookie(name){var _227=name+"=";var _228=document.cookie.indexOf(_227);if(_228==-1){return null;}
var end=document.cookie.indexOf(";",_228+_227.length);if(end==-1){end=document.cookie.length;}
var _22a=document.cookie.substring(_228+_227.length,end);return unescape(_22a);}
function deleteCookie(name,path,_22d){if(getCookie(name)){document.cookie=name+"="+((path)?"; path="+path:"")+((_22d)?"; domain="+_22d:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";}}
function swapClass(obj,_22f){if(!obj)return;obj.className=_22f;}
function popupBlockerEnabled(){var win=window.open('','','width=1,height=1,left=0,top=0,scrollbars=no');var enabled=!win;if(win){win.close();}
return enabled;}
function initTabs(tabsContainer,tabName,methodHandler){var dTabsContainer=$(tabsContainer);var dAfterTabs=dTabsContainer.down(".dAfterTabs");var dAfterTabsCorner=dTabsContainer.down(".dAfterTabsCorner");var afterTabsWidth=Math.max((dTabsContainer.getWidth()-dAfterTabs.up().previous().getWidth()-dAfterTabsCorner.getWidth()),0);dAfterTabs.style.width=afterTabsWidth+"px";setVisible(dAfterTabs,true);setVisible(dAfterTabsCorner,true);if(methodHandler){methodHandler(tabName);}}
function selectTab(selectedTab,tabsContentParent,tabNum,useVisibility){if(!useVisibility){useVisibility=false;}
if(useVisibility){if(isVisible($(tabsContentParent).childElements()[tabNum])){return;}}else{if($(tabsContentParent).childElements()[tabNum].visible()){return;}}
selectedTab=$(selectedTab);var tabComponents=selectedTab.select("div");var otherTabs=selectedTab.siblings();var isFirstTab=(tabNum==0);var isLastTab=(tabNum==otherTabs.length);tabComponents[0].className=isFirstTab?"dSelectedTabLeftFirst":"dSelectedTabLeft";tabComponents[1].className="dSelectedTabMiddle";tabComponents[2].className=isLastTab?"dSelectedTabRightLast":(isFirstTab?"dSelectedTabRightFirst":"dSelectedTabRight");for(var i=0;i<otherTabs.length;i++){var theTab=otherTabs[i];tabComponents=theTab.select("div");isFirstTab=(theTab.up().down()==theTab);isLastTab=isUndefined(theTab.next());var _25a=(theTab.previous()==selectedTab);if(isFirstTab){tabComponents[0].className="dUnselectedTabLeftFirst";tabComponents[2].className="dUnselectedTabRightFirst";}else{if(_25a){tabComponents[0].className="dUnselectedTabLeftPrevSelected";}else{tabComponents[0].className="dUnselectedTabLeft";}
if(isLastTab){tabComponents[2].className="dUnselectedTabRightLast";}else{tabComponents[2].className="dUnselectedTabRight";}}
tabComponents[1].className="dUnselectedTabMiddle";if(useVisibility){setVisible($(tabsContentParent).childElements()[i],false);}else{$(tabsContentParent).childElements()[i].hide();}}
if(useVisibility){setVisible($(tabsContentParent).childElements()[i],false);setVisible($(tabsContentParent).childElements()[tabNum],true);}else{$(tabsContentParent).childElements()[i].hide();new Effect.toggle($(tabsContentParent).childElements()[tabNum],"appear",{duration:0.5,queue:{scope:"menus",position:"end",limit:3}});}}
function getChildElementIndex(container,child){var containerChilds=container.childElements();for(var i=0;i<containerChilds.length;i++){if(containerChilds[i]==child){return i;}}
return-1;}
function clearFieldOnlyOneTime(evt){var obj=Event.element(evt);if(!obj.cleared){if(obj.tagName=="INPUT"){obj.clear();}
if(obj.tagName=="TEXTAREA"){obj.value="";}}
obj.cleared=true;obj.style.color="";}
function setVisible(elt,bool){elt=$(elt);if(!elt)return;elt.style.visibility=bool?"visible":"hidden";elt.select('select').each(function(select){select.style.display=bool?"":"none";});}
function isVisible(elt){return elt.style.visibility!="hidden";}
function disableObject(elt,bool){elt=$(elt);if(!elt)return;elt.disabled=bool;if(elt.tagName.toLowerCase()=="a"||elt.tagName.toLowerCase()=="button"){elt.style.cursor=bool?"default":"pointer";}
elt.style.textDecoration="none";}
function submitEnter(input,e,submitFunction){var key;if(window.event){key=window.event.keyCode;}else{if(e){key=e.which;}else{return true;}}
if(key==13){if(submitFunction){submitFunction();}else{input.form.submit();}
return false;}else{return true;}}
function onWindowResize(){try{moveSigninBox();}catch(e){}
try{moveSDFishEye()}catch(e){}}
function dwrErrorHandler(msg){logme("DWR Error:"+msg);}
function getIndex(selectBox,optionValue){selectBox=$(selectBox);for(var i=0;i<selectBox.options.length;i++){if(selectBox.options[i].value==optionValue)return i;}
return-1;}
function roundNumber(num,dec){return Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);}
function createGenericButton(oButtonParams){var textSpan=document.createElement("span");textSpan.innerHTML=oButtonParams['text'];var button=document.createElement("a");Element.addClassName(button,"button");button.id=oButtonParams["id"];button.title=oButtonParams['text'].replace(/&nbsp;/g,"");button.appendChild(textSpan);Event.observe(button,'click',oButtonParams['onclick']);return button;}
function preloadImages(){var images=[];for(var i=0;i<preloadImages.arguments.length;i++){images[i]=new Image();images[i].src=preloadImages.arguments[i];}}
function getSupporterRatingHTML(rating,color)
{var fColor=color?color:'red';var expertEmptyStarImg=gSearchUrls['expert_rating_empty_image_'+fColor]?gSearchUrls['expert_rating_empty_image_'+fColor]:gSearchUrls.expert_rating_empty_image;var expertHalfStarImg=gSearchUrls['expert_rating_half_image_'+fColor]?gSearchUrls['expert_rating_half_image_'+fColor]:gSearchUrls.expert_rating_half_image;var expertFullStarImg=gSearchUrls['expert_rating_full_image_'+fColor]?gSearchUrls['expert_rating_full_image_'+fColor]:gSearchUrls.expert_rating_full_image;var html='';var floor_rating=Math.floor(rating);var rest=rating-floor_rating;var maxvalue=5;for(var i=0;i<floor_rating;i++)
html+='<img src="'+expertFullStarImg+'" alt="" />';if(rest>0){floor_rating++;if(rest<0.25)html+='<img src="'+expertEmptyStarImg+'" alt="" />';if(rest>=0.25&&rest<0.75)html+='<img src="'+expertHalfStarImg+'" alt="" />';if(rest>=0.75)html+='<img src="'+expertFullStarImg+'" alt="" />';}
for(i=floor_rating;i<maxvalue;i++)
html+='<img src="'+expertEmptyStarImg+'" alt="" />';return html;}
function setCursorInProgress(bool){$(document.body).style.cursor=bool?"progress":"default";}
function printPage(){if(window.print){window.print();}else{var WebBrowser='<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';document.body.insertAdjacentHTML('beforeEnd',WebBrowser);WebBrowser1.ExecWB(6,2);}}
function limitTextField(textField,maxSize,errorDiv){var field=$(textField)?$(textField):$("counttxt");var max=maxSize?maxSize:1024;if(field&&field.value.length>max){field.value=field.value.substring(0,max);if($(errorDiv))$(errorDiv).innerHTML="This field is limited to "+max+" characters"
return false;}
return true;}
gLastSessionEvent="";function saveSessionEvent(oEvent,dwrOptions){var sessionIdList=oEvent.sessionIdList?oEvent.sessionIdList:[-1];var workflowId=oEvent.workflowId?oEvent.workflowId:(typeof(g_workflowId)=="undefined"?-1:g_workflowId);var options=dwrOptions?dwrOptions:{async:false};ajaxLogManager.logSessionEvent(sessionIdList,oEvent.event.action,oEvent.event.description,oEvent.user.id,workflowId,options);gLastSessionEvent=oEvent.event.action;}
function setParamValueUrl(paramName,paramValue,url,setParamIfNull){if(setParamIfNull===false&&!paramValue&&paramValue!==false){return url;}
var pn=paramName+"=";var sep=url.indexOf("?")<0?"?":"&";if(url.indexOf(pn)<0)
{return(url+sep+pn+paramValue);}
else
{var regex=new RegExp(pn+"([^&]*)([&?]?)");return(url.replace(regex,pn+paramValue+'$2'));}}
function parseMessageForLinks(msg){var regExpStrUriWithProtocol=/[^=\"'](((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp):\/\/)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(\/?[a-zA-Z0-9\&;%_\.,\/\-=+~:#\?@]*)?)/ig
var regExpStrUriNoProtocol=/[^\/="']((www\.[a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})(\/?[a-zA-Z0-9\&;%_\.,\/\-=+~:#\?@]*)?)/ig
var regExpStrEmail=/((([^<>()[\]\\.,;:\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
msg=(' '+msg).replace(regExpStrUriWithProtocol,' ###HREF-::$1::### ');msg=(' '+msg).replace(regExpStrUriNoProtocol,' ###HREF-http::$1::### ');return msg;}
function parseMessageForSpecialStrings(msg){var regExpStrFull=/###HREF-::(.*?)::###/ig
var regExpStrNoProtocol=/###HREF-http::(.*?)::###/ig
var regExpStrMail=/###HREF-mail::(.*?)::###/ig
var regExpStrText=/###TEXT-::(.*?)::###/ig
msg=(msg).replace(regExpStrFull,' <a href="$1" target="_blank" alt="$1" title="$1">###TEXT-::$1::###</a> ');msg=(msg).replace(regExpStrNoProtocol,' <a href="http://$1" target="_blank" alt="$1" title="$1">###TEXT-::$1::###</a> ');msg=msg.replace(regExpStrMail,' <a href="mailto:$1" target="_blank" alt="$1" title="$1">###TEXT-::$1::###</a> ');var linkTexts=msg.match(regExpStrText);if(linkTexts)
{for(var i=0;i<linkTexts.length;i++)
{var tempText=linkTexts[i].substring(0,linkTexts[i].indexOf('::###')).substring(10);tempText=((linkTexts[i].length-15)>40)?tempText.substring(0,45)+'...':tempText;msg=(msg).replace(linkTexts[i],tempText);}}
return msg;}
function scrollDown(div){div.scrollTop=div.scrollHeight+50;}
var go4cCookie;function getSupporterDisplayStatus(supporter){if(!go4cCookie)
go4cCookie=getCookie("s2online4customer");if(supporter.supporterDynamicDetails.online4Customer)
{if(isCurrentUserLoggedIn())
{if(supporter.supporterDynamicDetails.online4Customer.customer.id==gCurrentUser.id)
{return supporter.supporterDynamicDetails.supporterDisplayPresenceStatusForExpectedCustoemr;}}
else if(supporter.supporterDynamicDetails.online4Customer.customerCookie==go4cCookie)
{return supporter.supporterDynamicDetails.supporterDisplayPresenceStatusForExpectedCustoemr;}}
return supporter.supporterDynamicDetails.supporterDisplayPresenceStatus;}
function observeConnectButtons(expertsList,containerIdPrefix){var experts_done=[];if(!expertsList||gCurrentUser.isSupporter)
return;for(var i=0;i<expertsList.length;i++){if(experts_done.indexAt(expertsList[i].id)>-1)
continue;experts_done.push(expertsList[i].id);if(getSupporterDisplayStatus(expertsList[i])=="online"){$$("."+containerIdPrefix+expertsList[i].id).each(function(containerDiv){var connectBtn=containerDiv.down(".startSessionButton");if(connectBtn){connectBtn.src=gStartSessionUrls.connect_regular;connectBtn.className="startSessionButton linkImg"
disableObject(connectBtn,false);Event.observe(connectBtn,'mouseout',function(){this.src=gStartSessionUrls.connect_regular});Event.observe(connectBtn,'mouseup',function(){this.src=gStartSessionUrls.connect_regular});Event.observe(connectBtn,'mouseover',function(){this.src=gStartSessionUrls.connect_over});Event.observe(connectBtn,'mousedown',function(){this.src=gStartSessionUrls.connect_pressed});Event.observe(connectBtn,'click',function(){googleTrackPage("/click-connect")});}
var dStatusText=containerDiv.down(".expertStatusText");if(dStatusText){dStatusText.className="expertStatusText online";dStatusText.update(gSearchStrings.expert_status_online);}})}}}
function isLoggedIn(){return(gCurrentUser&&gCurrentUser.jabberUserName!=gCommonStrings.anonymous);}
function handleFailureAjaxResponse(response,errorDiv,validationStrings){try{if(response.error){var aError=response.error.evalJSON();$(errorDiv).update();aError.each(function(error){var errorMsg=gCommonErrors[error.code];error.arguments.each(function(arg,index){var val=arg.code?validationStrings[arg.code]:arg;errorMsg=errorMsg.replace("{"+index+"}",val+"");});$(errorDiv).insert(errorMsg+"<br/>");})
return true;}}catch(e){return true;}
$(errorDiv).update();return false;}
function redirectToUrl(url){window.location.href=url;}
var DEBUG_CONNECTION=false;function debug_connection(msg){gDebugLog+=msg+"<br/>\n";}
function show_debug_log(){$("debug_log").down("div").innerHTML=gDebugLog;$("debug_log").style.height="500px";}
function logme(str){ajaxLogManager.log(str,{errorHandler:function(){}});}
function logClientLog(){logme(gDebugLog);}
function googleTrackPage(virtual_url){if(typeof(pageTracker)!="undefined"){pageTracker._trackPageview(virtual_url);}}
function isEltPresent(dList,namebase,value)
{var inputs=$(dList).getElementsBySelector('input');var res=false;inputs.each(function(oInput)
{if((oInput.readAttribute('namebase')==namebase)&&(oInput.value==value))
{res=true;throw $break;}});return res;}
function removeFromList(obj)
{var dList=$(obj).up().up();$(obj).up().remove();updateIndexes(dList);}
function updateIndexes(dList)
{var divs=$(dList).childElements();var i=0;divs.each(function(oDiv){var inputs=$(oDiv).getElementsBySelector('input');inputs.each(function(oInput){oInput.name=oInput.readAttribute('namebase').replace('INT',i);})
i++;})}
function getSelectedRadio(buttonGroup){if(buttonGroup[0]){for(var i=0;i<buttonGroup.length;i++){if(buttonGroup[i].checked){return i}}}else{if(buttonGroup.checked){return 0;}}
return-1;}
function getSelectedRadioValue(buttonGroup){var i=getSelectedRadio(buttonGroup);if(i==-1){return"";}else{if(buttonGroup[i]){return buttonGroup[i].value;}else{return buttonGroup.value;}}}
function isSupporterOffline(supporter)
{var presence=getSupporterStatus(supporter);return(presence=='offline')}
function isSupporterCanStartConversation(supporter)
{var presence=getSupporterStatus(supporter);var displayStatus=getSupporterDisplayStatus(supporter);return(presence=='online'||displayStatus=='online')}
function getSupporterPicture(supporter){return supporter&&supporter.photoUri?gSearchUrls['external_images_profiles']+supporter.photoUri:gSearchUrls.expert_nopicture_img;}
function getPackageImage(pkg){return isUndefined(pkg.smallImageURI)||pkg.smallImageURI==""?gSearchUrls['def_package_img']:gSearchUrls['external_images_packages']+pkg.smallImageURI;}
function getSupporterStatus(supporter){return supporter.supporterDynamicDetails.supporterPresenceStatus}
function getSupporterServiceDescription(supporter){return supporter.serviceDescription?supporter.serviceDescription:""}
function getSupporterRating(supporter){return supporter.supporterDynamicDetails.rating}
function getSupporterPrice(supporter){return supporter.supporterDynamicDetails.pricing}
function getSupporterTotalCases(supporter){var gap=10;return supporter.supporterDynamicDetails.totalCases<gap?gSearchStrings.experts_under+' '+gap:supporter.supporterDynamicDetails.totalCases}
function getSupporterSolvedCasesPercent(supporter){return supporter.supporterDynamicDetails.successRate;}
function getSupporterId(supporter){return supporter.id;}
function getJabberUsername(supporter){return supporter.jabberUsername;}
function getSupporter(supporterId){for(var i=0;i<g_experts.length;i++)
if(g_experts[i].id==supporterId)
return g_experts[i];return null;}
function getSupporterStatusImg(status)
{if(gSearchUrls['expert_status_'+status])
return gSearchUrls['expert_status_'+status];return gSearchUrls['expert_status_offline'];}
function getSupporterStatusTextHtml(status)
{if(isUndefined(gSearchStrings['expert_status_'+status]))
return status;return'<span class="'+status+'">'+gSearchStrings['expert_status_'+status]+'</span>';}
function generateCountryCodesSelectBox(){if($("customerPhoneDialingCode_combo")){return;}
var phoneDialSelects=$$("select.signupPhoneDialingCode");phoneDialSelects.each(function(phoneDialSelect){new Autocompleter.SelectBox(phoneDialSelect);displayCountryCodeInSelectBox(phoneDialSelect,"customerPhoneDialingCode_combo");});}
function displayCountryCodeInSelectBox(originalSelectBox,autocompleterInput){$(autocompleterInput).value="+"+$(originalSelectBox).value;}
function setLocaleCookies(locale){setCookie("s2locale_session",locale,null,"/");var expires=new Date();expires.setTime(expires.getTime()+300*24*60*60*1000);setCookie("s2locale",locale,expires,"/");}
window.defaultStatus=document.title;Event.observe(window,"load",function(){if(typeof(dwr)!="undefined"&&dwr&&dwr.engine)
dwr.engine.setErrorHandler(dwrErrorHandler);})
Event.observe(window,'resize',onWindowResize);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)
{oForm=$(oForm);var opt={method:'post',parameters:{ajax:true},onSuccess:function(response){onLoginSuccess(oForm,response);},onFailure:function(){onLoginFailed(oForm);}};new JsonP.FormRequest(oForm,opt);}
function onLoginSuccess(oForm,response){if(response.error){if(response.error.indexOf('User is disabled')!=-1){showSuspended();}
else{onLoginFailed(oForm)}}
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){if(typeof(gS2SupportPackageDetails)!="undefined"&&response){gS2SupportPackageDetails.checkCoupons(response.prepaidPackageCoupons);gS2SupportPackageDetails.checkCoupons(response.tokenBasedCoupons);}
var oMessage=response.message.evalJSON();gCurrentUser=new User(oMessage.user);if(gCurrentUser.isSupporter){disableConnectButtons();}
if($("dHeader")){renderUserHeader(oMessage.user);renderMySpaceMenu(oMessage.menues);showOfflineMessageNotification(response.nbNewOfflineMessages);}
if($("dHomePage")){$("dHomePage").down(".banner").innerHTML='<object id="homebanner" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="100%" height="100%" title="">'+'<param name="movie" value="'+gHomeUrls.login_banner+'" />'+'<param name="quality" value="high" />'+'<PARAM name="wmode" value="transparent" />'+'<param name="allowscriptaccess" value="always" />'+'<embed src="'+gHomeUrls.login_banner+'" quality="high" wmode="transparent" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="100%" height="100%"></embed>'+'</object>';}
resumeSession(gCurrentUser);}
function onLoginFailed(oForm){var signinError=oForm.down('.dSigninError');if(signinError){signinError.innerHTML=gHeaderStrings.badlogin;signinError.show();}}
var User=Class.create({initialize:function(user){this.id=user.id;this.displayUserName=user.displayUserName;this.jabberUserName=user.jabberUsername;this.jabberFullUserName=typeof(gJabberConnection)!=typeof(undefined)?gJabberConnection.addJabberDomainSuffix(this.jabberUserName):this.jabberUserName+"@"+g_jabber_domain+"/web";this.jabberPassword="supportspace-web";this.username=user.username;this.isSupporter=(user.userType=="supporter");this.isCustomer=(user.userType=="customer");this.isTester=user.isTester?true:false;this.inTestingPhase=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})}
function isCurrentUserLoggedIn()
{return(gCurrentUser.id!='anonymous')}
var Scriptaculous={Version:'1.8.0',require:function(libraryName){document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');},REQUIRED_PROTOTYPE:'1.6.0',load:function(){function convertVersionString(versionString){var r=versionString.split('.');return parseInt(r[0])*100000+parseInt(r[1])*1000+parseInt(r[2]);}
if((typeof Prototype=='undefined')||(typeof Element=='undefined')||(typeof Element.Methods=='undefined')||(convertVersionString(Prototype.Version)<convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))
throw("script.aculo.us requires the Prototype JavaScript framework >= "+
Scriptaculous.REQUIRED_PROTOTYPE);$A(document.getElementsByTagName("script")).findAll(function(s){return(s.src&&s.src.match(/scriptaculous\.js(\?.*)?$/))}).each(function(s){var path=s.src.replace(/scriptaculous\.js(\?.*)?$/,'');var includes=s.src.match(/\?.*load=([a-z,]*)/);(includes?includes[1]:'builder,effects,dragdrop,controls,slider,sound').split(',').each(function(include){Scriptaculous.require(path+include+'.js')});});}}
Scriptaculous.load();String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0;do{color+=parseInt(cols[i]).toColorPart()}while(++i<3);}else{if(this.slice(0,1)=='#'){if(this.length==4)for(var i=1;i<4;i++)color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7)color=this.toLowerCase();}}
return(color.length==7?color:(arguments[0]||this));};Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):''));}).flatten().join('');};Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):''));}).flatten().join('');};Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+'em'});if(Prototype.Browser.WebKit)window.scrollBy(0,0);return element;};Element.getInlineOpacity=function(element){return $(element).style.opacity||'';};Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n);}catch(e){}};var Effect={_elementDoesNotExistError:{name:'ElementDoesNotExistError',message:'The specified DOM element does not exist, but is required for this effect to operate'},Transitions:{linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;return pos>1?1:pos;},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;},pulse:function(pos,pulses){pulses=pulses||5;return(((pos%(1/pulses))*pulses).round()==0?((pos*pulses*2)-(pos*pulses*2).floor()):1-((pos*pulses*2)-(pos*pulses*2).floor()));},spring:function(pos){return 1-(Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6));},none:function(pos){return 0;},full:function(pos){return 1;}},DefaultOptions:{duration:1.0,fps:100,sync:false,from:0.0,to:1.0,delay:0.0,queue:'parallel'},tagifyText:function(element){var tagifyStyle='position:relative';if(Prototype.Browser.IE)tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(new Element('span',{style:tagifyStyle}).update(character==' '?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=='object')||Object.isFunction(element))&&(element.length))
elements=element;else
elements=$(element).childNodes;var options=Object.extend({speed:0.1,delay:0.0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}));});},PAIRS:{'slide':['SlideDown','SlideUp'],'blind':['BlindDown','BlindUp'],'appear':['Appear','Fade']},toggle:function(element,effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue:{position:'end',scope:(element.id||'global'),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options);}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[];this.interval=null;},_each:function(iterator){this.effects._each(iterator);},add:function(effect){var timestamp=new Date().getTime();var position=Object.isString(effect.options.queue)?effect.options.queue:effect.options.queue.position;switch(position){case'front':this.effects.findAll(function(e){return e.state=='idle'}).each(function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;});break;case'with-last':timestamp=this.effects.pluck('startOn').max()||timestamp;break;case'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break;}
effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit))
this.effects.push(effect);if(!this.interval)
this.interval=setInterval(this.loop.bind(this),15);},remove:function(effect){this.effects=this.effects.reject(function(e){return e==effect});if(this.effects.length==0){clearInterval(this.interval);this.interval=null;}},loop:function(){var timePos=new Date().getTime();for(var i=0,len=this.effects.length;i<len;i++)
this.effects[i]&&this.effects[i].loop(timePos);}});Effect.Queues={instances:$H(),get:function(queueName){if(!Object.isString(queueName))return queueName;return this.instances.get(queueName)||this.instances.set(queueName,new Effect.ScopedQueue());}};Effect.Queue=Effect.Queues.get('global');Effect.Base=Class.create({position:null,start:function(options){function codeForEvent(options,eventName){return((options[eventName+'Internal']?'this.options.'+eventName+'Internal(this);':'')+
(options[eventName]?'this.options.'+eventName+'(this);':''));}
if(options&&options.transition===false)options.transition=Effect.Transitions.linear;this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state='idle';this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.fromToDelta=this.options.to-this.options.from;this.totalTime=this.finishOn-this.startOn;this.totalFrames=this.options.fps*this.options.duration;eval('this.render = function(pos){ '+'if (this.state=="idle"){this.state="running";'+
codeForEvent(this.options,'beforeSetup')+
(this.setup?'this.setup();':'')+
codeForEvent(this.options,'afterSetup')+'};if (this.state=="running"){'+'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+'this.position=pos;'+
codeForEvent(this.options,'beforeUpdate')+
(this.update?'this.update(pos);':'')+
codeForEvent(this.options,'afterUpdate')+'}}');this.event('beforeStart');if(!this.options.sync)
Effect.Queues.get(Object.isString(this.options.queue)?'global':this.options.queue.scope).add(this);},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish)this.finish();this.event('afterFinish');return;}
var pos=(timePos-this.startOn)/this.totalTime,frame=(pos*this.totalFrames).round();if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},cancel:function(){if(!this.options.sync)
Effect.Queues.get(Object.isString(this.options.queue)?'global':this.options.queue.scope).remove(this);this.state='finished';},event:function(eventName){if(this.options[eventName+'Internal'])this.options[eventName+'Internal'](this);if(this.options[eventName])this.options[eventName](this);},inspect:function(){var data=$H();for(property in this)
if(!Object.isFunction(this[property]))data.set(property,this[property]);return'#<Effect:'+data.inspect()+',options:'+$H(this.options).inspect()+'>';}});Effect.Parallel=Class.create(Effect.Base,{initialize:function(effects){this.effects=effects||[];this.start(arguments[1]);},update:function(position){this.effects.invoke('render',position);},finish:function(position){this.effects.each(function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish)effect.finish(position);effect.event('afterFinish');});}});Effect.Tween=Class.create(Effect.Base,{initialize:function(object,from,to){object=Object.isString(object)?$(object):object;var args=$A(arguments),method=args.last(),options=args.length==5?args[3]:null;this.method=Object.isFunction(method)?method.bind(object):Object.isFunction(object[method])?object[method].bind(object):function(value){object[method]=value};this.start(Object.extend({from:from,to:to},options||{}));},update:function(position){this.method(position);}});Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}));},update:Prototype.emptyFunction});Effect.Opacity=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom:1});var options=Object.extend({from:this.element.getOpacity()||0.0,to:1.0},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({x:0,y:0,mode:'relative'},arguments[1]||{});this.start(options);},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle('left')||'0');this.originalTop=parseFloat(this.element.getStyle('top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop;}},update:function(position){this.element.setStyle({left:(this.options.x*position+this.originalLeft).round()+'px',top:(this.options.y*position+this.originalTop).round()+'px'});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create(Effect.Base,{initialize:function(element,percent){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:'box',scaleFrom:100.0,scaleTo:percent},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle('position');this.originalStyle={};['top','left','width','height','fontSize'].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=='box')
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];},update:function(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize)
this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish)this.element.setStyle(this.originalStyle);},setDimensions:function(height,width){var d={};if(this.options.scaleX)d.width=width.round()+'px';if(this.options.scaleY)d.height=height.round()+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY)d.top=this.originalTop-topd+'px';if(this.options.scaleX)d.left=this.originalLeft-leftd+'px';}else{if(this.options.scaleY)d.top=-topd+'px';if(this.options.scaleX)d.left=-leftd+'px';}}
this.element.setStyle(d);}});Effect.Highlight=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({startcolor:'#ffff99'},arguments[1]||{});this.start(options);},setup:function(){if(this.element.getStyle('display')=='none'){this.cancel();return;}
this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle('background-image');this.element.setStyle({backgroundImage:'none'});}
if(!this.options.endcolor)
this.options.endcolor=this.element.getStyle('background-color').parseColor('#ffffff');if(!this.options.restorecolor)
this.options.restorecolor=this.element.getStyle('background-color');this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this));},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=function(element){var options=arguments[1]||{},scrollOffsets=document.viewport.getScrollOffsets(),elementOffsets=$(element).cumulativeOffset(),max=(window.height||document.body.scrollHeight)-document.viewport.getHeight();if(options.offset)elementOffsets[1]+=options.offset;return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1]>max?max:elementOffsets[1],options,function(p){scrollTo(scrollOffsets.left,p.round())});};Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1.0,to:0.0,afterFinishInternal:function(effect){if(effect.options.to!=0)return;effect.element.hide().setStyle({opacity:oldOpacity});}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to:1.0,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show();}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle('position'),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:1.0,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element)},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle);}},arguments[1]||{}));};Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping();}},arguments[1]||{}));};Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));};Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});}})}},arguments[1]||{}));};Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle('top'),left:element.getStyle('left'),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0.0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);}},arguments[1]||{}));};Effect.Shake=function(element){element=$(element);var options=Object.extend({distance:20,duration:0.5},arguments[1]||{});var distance=parseFloat(options.distance);var split=parseFloat(options.duration)/10.0;var oldStyle={top:element.getStyle('top'),left:element.getStyle('left')};return new Effect.Move(element,{x:distance,y:0,duration:split,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance,y:0,duration:split,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle);}})}})}})}})}})}});};Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().setStyle({height:'0px'}).show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:'box',scaleFrom:100,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera)effect.element.setStyle({top:''});effect.element.makeClipping().show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px'});},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping();}});};Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break;}
return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:'0px'}).show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);}},options))}});};Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:'center',moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case'top-left':moveX=moveY=0;break;case'top-right':moveX=dims.width;moveY=0;break;case'bottom-left':moveX=0;moveY=dims.height;break;case'bottom-right':moveX=dims.width;moveY=dims.height;break;case'center':moveX=dims.width/2;moveY=dims.height/2;break;}
return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}},options));};Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{};var oldOpacity=element.getInlineOpacity();var transition=options.transition||Effect.Transitions.sinoidal;var reverser=function(pos){return transition(1-Effect.Transitions.pulse(pos,options.pulses))};reverser.bind(transition);return new Effect.Opacity(element,Object.extend(Object.extend({duration:2.0,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}},options),{transition:reverser}));};Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle);}});}},arguments[1]||{}));};Effect.Morph=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(options.style))this.style=$H(options.style);else{if(options.style.include(':'))
this.style=options.style.parseStyle();else{this.element.addClassName(options.style);this.style=$H(this.element.getStyles());this.element.removeClassName(options.style);var css=this.element.getStyles();this.style=this.style.reject(function(style){return style.value==css[style.key];});options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){effect.element.style[transform.style]='';});}}}
this.start(options);},setup:function(){function parseColor(color){if(!color||['rgba(0, 0, 0, 0)','transparent'].include(color))color='#ffffff';color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16)});}
this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor('#zzzzzz')!='#zzzzzz'){value=value.parseColor();unit='color';}else if(property=='opacity'){value=parseFloat(value);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom:1});}else if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;}
var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=='color'?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=='color'?parseColor(value):value,unit:unit};}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!='color'&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))))});},update:function(position){var style={},transform,i=this.transforms.length;while(i--)
style[(transform=this.transforms[i]).style]=transform.unit=='color'?'#'+
(Math.round(transform.originalValue[0]+
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+
(Math.round(transform.originalValue[1]+
(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+
(Math.round(transform.originalValue[2]+
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():(transform.originalValue+
(transform.targetValue-transform.originalValue)*position).toFixed(3)+
(transform.unit===null?'':transform.unit);this.element.setStyle(style,true);}});Effect.Transform=Class.create({initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks);},addTracks:function(tracks){tracks.each(function(track){track=$H(track);var data=track.values().first();this.tracks.push($H({ids:track.keys().first(),effect:Effect.Morph,options:{style:data}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var ids=track.get('ids'),effect=track.get('effect'),options=track.get('options');var elements=[$(ids)||$$(ids)].flatten();return elements.map(function(e){return new effect(e,Object.extend({sync:true},options))});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w('backgroundColor backgroundPosition borderBottomColor borderBottomStyle '+'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth '+'borderRightColor borderRightStyle borderRightWidth borderSpacing '+'borderTopColor borderTopStyle borderTopWidth bottom clip color '+'fontSize fontWeight height left letterSpacing lineHeight '+'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+'maxWidth minHeight minWidth opacity outlineColor outlineOffset '+'outlineWidth paddingBottom paddingLeft paddingRight paddingTop '+'right textIndent top width wordSpacing zIndex');Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.__parseStyleElement=document.createElement('div');String.prototype.parseStyle=function(){var style,styleRules=$H();if(Prototype.Browser.WebKit)
style=new Element('div',{style:this}).style;else{String.__parseStyleElement.innerHTML='<div style="'+this+'"></div>';style=String.__parseStyleElement.childNodes[0].style;}
Element.CSS_PROPERTIES.each(function(property){if(style[property])styleRules.set(property,style[property]);});if(Prototype.Browser.IE&&this.include('opacity'))
styleRules.set('opacity',this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);return styleRules;};if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(element){var css=document.defaultView.getComputedStyle($(element),null);return Element.CSS_PROPERTIES.inject({},function(styles,property){styles[property]=css[property];return styles;});};}else{Element.getStyles=function(element){element=$(element);var css=element.currentStyle,styles;styles=Element.CSS_PROPERTIES.inject({},function(hash,property){hash.set(property,css[property]);return hash;});if(!styles.opacity)styles.set('opacity',element.getOpacity());return styles;};};Effect.Methods={morph:function(element,style){element=$(element);new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element;},visualEffect:function(element,effect,options){element=$(element)
var s=effect.dasherize().camelize(),klass=s.charAt(0).toUpperCase()+s.substring(1);new Effect[klass](element,options);return element;},highlight:function(element,options){element=$(element);new Effect.Highlight(element,options);return element;}};$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+'pulsate shake puff squish switchOff dropOut').each(function(effect){Effect.Methods[effect]=function(element,options){element=$(element);Effect[effect.charAt(0).toUpperCase()+effect.substring(1)](element,options);return element;}});$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(function(f){Effect.Methods[f]=Element[f];});Element.addMethods(Effect.Methods);if(typeof Effect=='undefined')
throw("controls.js requires including script.aculo.us' effects.js library");var Autocompleter={};Autocompleter.Base=Class.create({baseInitialize:function(element,update,options){element=$(element);this.element=element;this.update=$(update);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;this.oldElementValue=this.element.value;if(this.setOptions)
this.setOptions(options);else
this.options=options||{};this.options.paramName=this.options.paramName||this.element.name;this.options.tokens=this.options.tokens||[];this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.options.onShow=this.options.onShow||function(element,update){Effect.Appear(update,{duration:0.15});};this.options.onHide=this.options.onHide||function(element,update){new Effect.Fade(update,{duration:0.15})};if(typeof(this.options.tokens)=='string')
this.options.tokens=new Array(this.options.tokens);if(!this.options.tokens.include('\n'))
this.options.tokens.push('\n');this.observer=null;this.element.setAttribute('autocomplete','off');Element.hide(this.update);Event.observe(document.body,'click',this.onBlur.bindAsEventListener(this));Event.observe(this.element,'keypress',this.onKeyPress.bindAsEventListener(this));},show:function(){if(Element.getStyle(this.update,'display')=='none')this.options.onShow(this.element,this.update);if(!this.iefix&&(Prototype.Browser.IE)&&(Element.getStyle(this.update,'position')=='absolute')){new Insertion.After(this.update,'<iframe id="'+this.update.id+'_iefix" '+'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" '+'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.update.id+'_iefix');}
if(this.iefix)setTimeout(this.fixIEOverlapping.bind(this),50);},fixIEOverlapping:function(){this.iefix.style.zIndex=1;this.update.style.zIndex=2;Element.show(this.iefix);},hide:function(){this.stopIndicator();if(Element.getStyle(this.update,'display')!='none')this.options.onHide(this.element,this.update);if(this.iefix)Element.hide(this.iefix);},startIndicator:function(){if(this.options.indicator)Element.show(this.options.indicator);},stopIndicator:function(){if(this.options.indicator)Element.hide(this.options.indicator);},onKeyPress:function(event){if(this.active)
switch(event.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry();Event.stop(event);case Event.KEY_ESC:this.hide();this.active=false;Event.stop(event);return;case Event.KEY_LEFT:case Event.KEY_RIGHT:return;case Event.KEY_UP:this.markPrevious();this.render();if(Prototype.Browser.WebKit)Event.stop(event);return;case Event.KEY_DOWN:this.markNext();this.render();if(Prototype.Browser.WebKit)Event.stop(event);return;}
else
if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN||(Prototype.Browser.WebKit>0&&event.keyCode==0))return;this.changed=true;this.hasFocus=true;if(this.observer)clearTimeout(this.observer);this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000);},activate:function(){this.changed=false;this.hasFocus=true;this.getUpdatedChoices();},onHover:function(event){var element=Event.findElement(event,'li');this.update.select("li").each(function(optionLi){Element.removeClassName(optionLi,"hover");});Element.addClassName(element,"hover");Event.stop(event);},onClick:function(event){var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide();},onBlur:function(event){if(event.element()==this.element){return;}
setTimeout(this.hide.bind(this),250);this.hasFocus=false;this.active=false;},render:function(){if(this.entryCount>0){for(var i=0;i<this.entryCount;i++){if(this.index==i){Element.addClassName(this.getEntry(i),"selected");}else{Element.removeClassName(this.getEntry(i),"selected");}}
if(this.hasFocus){this.show();this.active=true;}}else{this.active=false;this.hide();}},markPrevious:function(){if(this.index>0)this.index--
else this.index=this.entryCount-1;this.getEntry(this.index).scrollIntoView(true);},markNext:function(){if(this.index<this.entryCount-1)this.index++
else this.index=0;this.getEntry(this.index).scrollIntoView(false);},getEntry:function(index){return this.update.firstChild.childNodes[index];},getCurrentEntry:function(){return this.getEntry(this.index);},selectEntry:function(){this.active=false;this.updateElement(this.getCurrentEntry());var onChangeAttribute=$(this.select).getAttribute("onchange");if(onChangeAttribute){onChangeAttribute.toFunction().bind($(this.select))();}},updateElement:function(selectedElement){if(this.options.updateElement){this.options.updateElement(selectedElement);return;}
var value='';if(this.options.select){var nodes=$(selectedElement).select('.'+this.options.select)||[];if(nodes.length>0)value=Element.collectTextNodes(nodes[0],this.options.select);}else
value=Element.collectTextNodesIgnoreClass(selectedElement,'informal');this.element.value=value;this.oldElementValue=this.element.value;this.element.focus();if(this.options.afterUpdateElement)
this.options.afterUpdateElement(this.element,selectedElement);},updateChoices:function(choices){if(!this.changed&&this.hasFocus){this.update.innerHTML=choices;Element.cleanWhitespace(this.update);Element.cleanWhitespace(this.update.down());if(this.update.firstChild&&this.update.down().childNodes){this.entryCount=this.update.down().childNodes.length;for(var i=0;i<this.entryCount;i++){var entry=this.getEntry(i);entry.autocompleteIndex=i;this.addObservers(entry);}}else{this.entryCount=0;}
this.stopIndicator();if(this.entryCount==1&&this.options.autoSelect){this.selectEntry();this.hide();}else{this.render();}}},addObservers:function(element){Event.observe(element,"mouseover",this.onHover.bindAsEventListener(this));Event.observe(element,"click",this.onClick.bindAsEventListener(this));},onObserverEvent:function(){this.changed=false;this.tokenBounds=null;if(this.getToken().length>=this.options.minChars){this.getUpdatedChoices();}else{this.active=false;this.hide();}
this.oldElementValue=this.element.value;},getToken:function(){var bounds=this.getTokenBounds();return this.element.value.substring(bounds[0],bounds[1]).strip();},getTokenBounds:function(){if(null!=this.tokenBounds)return this.tokenBounds;var value=this.element.value;if(value.strip().empty())return[-1,0];var diff=arguments.callee.getFirstDifferencePos(value,this.oldElementValue);var offset=(diff==this.oldElementValue.length?1:0);var prevTokenPos=-1,nextTokenPos=value.length;var tp;for(var index=0,l=this.options.tokens.length;index<l;++index){tp=value.lastIndexOf(this.options.tokens[index],diff+offset-1);if(tp>prevTokenPos)prevTokenPos=tp;tp=value.indexOf(this.options.tokens[index],diff+offset);if(-1!=tp&&tp<nextTokenPos)nextTokenPos=tp;}
return(this.tokenBounds=[prevTokenPos+1,nextTokenPos]);}});Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos=function(newS,oldS){var boundary=Math.min(newS.length,oldS.length);for(var index=0;index<boundary;++index)
if(newS[index]!=oldS[index])
return index;return boundary;};Ajax.Autocompleter=Class.create(Autocompleter.Base,{initialize:function(element,update,url,options){this.baseInitialize(element,update,options);this.options.asynchronous=true;this.options.onComplete=this.onComplete.bind(this);this.options.defaultParams=this.options.parameters||null;this.url=url;},getUpdatedChoices:function(){this.startIndicator();var entry=encodeURIComponent(this.options.paramName)+'='+
encodeURIComponent(this.getToken());this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry;if(this.options.defaultParams)
this.options.parameters+='&'+this.options.defaultParams;new Ajax.Request(this.url,this.options);},onComplete:function(request){this.updateChoices(request.responseText);}});Autocompleter.Local=Class.create(Autocompleter.Base,{initialize:function(element,update,array,options){this.baseInitialize(element,update,options);this.options.array=array;},getUpdatedChoices:function(){this.updateChoices(this.options.selector(this));},setOptions:function(options){this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(instance){var ret=[];var partial=[];var entry=instance.getToken();var count=0;for(var i=0;i<instance.options.array.length&&ret.length<instance.options.choices;i++){var elem=instance.options.array[i];var foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase()):elem.indexOf(entry);while(foundPos!=-1){if(foundPos==0&&elem.length!=entry.length){ret.push("<li><strong>"+elem.substr(0,entry.length)+"</strong>"+
elem.substr(entry.length)+"</li>");break;}else if(entry.length>=instance.options.partialChars&&instance.options.partialSearch&&foundPos!=-1){if(instance.options.fullSearch||/\s/.test(elem.substr(foundPos-1,1))){partial.push("<li>"+elem.substr(0,foundPos)+"<strong>"+
elem.substr(foundPos,entry.length)+"</strong>"+elem.substr(foundPos+entry.length)+"</li>");break;}}
foundPos=instance.options.ignoreCase?elem.toLowerCase().indexOf(entry.toLowerCase(),foundPos+1):elem.indexOf(entry,foundPos+1);}}
if(partial.length)
ret=ret.concat(partial.slice(0,instance.options.choices-ret.length))
return"<ul>"+ret.join('')+"</ul>";}},options||{});}});Field.scrollFreeActivate=function(field){setTimeout(function(){Field.activate(field);},1);}
Ajax.InPlaceEditor=Class.create({initialize:function(element,url,options){this.url=url;this.element=element=$(element);this.prepareOptions();this._controls={};arguments.callee.dealWithDeprecatedOptions(options);Object.extend(this.options,options||{});if(!this.options.formId&&this.element.id){this.options.formId=this.element.id+'-inplaceeditor';if($(this.options.formId))
this.options.formId='';}
if(this.options.externalControl)
this.options.externalControl=$(this.options.externalControl);if(!this.options.externalControl)
this.options.externalControlOnly=false;this._originalBackground=this.element.getStyle('background-color')||'transparent';this.element.title=this.options.clickToEditText;this._boundCancelHandler=this.handleFormCancellation.bind(this);this._boundComplete=(this.options.onComplete||Prototype.emptyFunction).bind(this);this._boundFailureHandler=this.handleAJAXFailure.bind(this);this._boundSubmitHandler=this.handleFormSubmission.bind(this);this._boundWrapperHandler=this.wrapUp.bind(this);this.registerListeners();},checkForEscapeOrReturn:function(e){if(!this._editing||e.ctrlKey||e.altKey||e.shiftKey)return;if(Event.KEY_ESC==e.keyCode)
this.handleFormCancellation(e);else if(Event.KEY_RETURN==e.keyCode)
this.handleFormSubmission(e);},createControl:function(mode,handler,extraClasses){var control=this.options[mode+'Control'];var text=this.options[mode+'Text'];if('button'==control){var btn=document.createElement('input');btn.type='submit';btn.value=text;btn.className='editor_'+mode+'_button';if('cancel'==mode)
btn.onclick=this._boundCancelHandler;this._form.appendChild(btn);this._controls[mode]=btn;}else if('link'==control){var link=document.createElement('a');link.href='#';link.appendChild(document.createTextNode(text));link.onclick='cancel'==mode?this._boundCancelHandler:this._boundSubmitHandler;link.className='editor_'+mode+'_link';if(extraClasses)
link.className+=' '+extraClasses;this._form.appendChild(link);this._controls[mode]=link;}},createEditField:function(){var text=(this.options.loadTextURL?this.options.loadingText:this.getText());var fld;if(1>=this.options.rows&&!/\r|\n/.test(this.getText())){fld=document.createElement('input');fld.type='text';var size=this.options.size||this.options.cols||0;if(0<size)fld.size=size;}else{fld=document.createElement('textarea');fld.rows=(1>=this.options.rows?this.options.autoRows:this.options.rows);fld.cols=this.options.cols||40;}
fld.name=this.options.paramName;fld.value=text;fld.className='editor_field';if(this.options.submitOnBlur)
fld.onblur=this._boundSubmitHandler;this._controls.editor=fld;if(this.options.loadTextURL)
this.loadExternalText();this._form.appendChild(this._controls.editor);},createForm:function(){var ipe=this;function addText(mode,condition){var text=ipe.options['text'+mode+'Controls'];if(!text||condition===false)return;ipe._form.appendChild(document.createTextNode(text));};this._form=$(document.createElement('form'));this._form.id=this.options.formId;this._form.addClassName(this.options.formClassName);this._form.onsubmit=this._boundSubmitHandler;this.createEditField();if('textarea'==this._controls.editor.tagName.toLowerCase())
this._form.appendChild(document.createElement('br'));if(this.options.onFormCustomization)
this.options.onFormCustomization(this,this._form);addText('Before',this.options.okControl||this.options.cancelControl);this.createControl('ok',this._boundSubmitHandler);addText('Between',this.options.okControl&&this.options.cancelControl);this.createControl('cancel',this._boundCancelHandler,'editor_cancel');addText('After',this.options.okControl||this.options.cancelControl);},destroy:function(){if(this._oldInnerHTML)
this.element.innerHTML=this._oldInnerHTML;this.leaveEditMode();this.unregisterListeners();},enterEditMode:function(e){if(this._saving||this._editing)return;this._editing=true;this.triggerCallback('onEnterEditMode');if(this.options.externalControl)
this.options.externalControl.hide();this.element.hide();this.createForm();this.element.parentNode.insertBefore(this._form,this.element);if(!this.options.loadTextURL)
this.postProcessEditField();if(e)Event.stop(e);},enterHover:function(e){if(this.options.hoverClassName)
this.element.addClassName(this.options.hoverClassName);if(this._saving)return;this.triggerCallback('onEnterHover');},getText:function(){return this.element.innerHTML;},handleAJAXFailure:function(transport){this.triggerCallback('onFailure',transport);if(this._oldInnerHTML){this.element.innerHTML=this._oldInnerHTML;this._oldInnerHTML=null;}},handleFormCancellation:function(e){this.wrapUp();if(e)Event.stop(e);},handleFormSubmission:function(e){var form=this._form;var value=$F(this._controls.editor);this.prepareSubmission();var params=this.options.callback(form,value)||'';if(Object.isString(params))
params=params.toQueryParams();params.editorId=this.element.id;if(this.options.htmlResponse){var options=Object.extend({evalScripts:true},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Updater({success:this.element},this.url,options);}else{var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:params,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});new Ajax.Request(this.url,options);}
if(e)Event.stop(e);},leaveEditMode:function(){this.element.removeClassName(this.options.savingClassName);this.removeForm();this.leaveHover();this.element.style.backgroundColor=this._originalBackground;this.element.show();if(this.options.externalControl)
this.options.externalControl.show();this._saving=false;this._editing=false;this._oldInnerHTML=null;this.triggerCallback('onLeaveEditMode');},leaveHover:function(e){if(this.options.hoverClassName)
this.element.removeClassName(this.options.hoverClassName);if(this._saving)return;this.triggerCallback('onLeaveHover');},loadExternalText:function(){this._form.addClassName(this.options.loadingClassName);this._controls.editor.disabled=true;var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._form.removeClassName(this.options.loadingClassName);var text=transport.responseText;if(this.options.stripLoadedTextTags)
text=text.stripTags();this._controls.editor.value=text;this._controls.editor.disabled=false;this.postProcessEditField();}.bind(this),onFailure:this._boundFailureHandler});new Ajax.Request(this.options.loadTextURL,options);},postProcessEditField:function(){var fpc=this.options.fieldPostCreation;if(fpc)
$(this._controls.editor)['focus'==fpc?'focus':'activate']();},prepareOptions:function(){this.options=Object.clone(Ajax.InPlaceEditor.DefaultOptions);Object.extend(this.options,Ajax.InPlaceEditor.DefaultCallbacks);[this._extraDefaultOptions].flatten().compact().each(function(defs){Object.extend(this.options,defs);}.bind(this));},prepareSubmission:function(){this._saving=true;this.removeForm();this.leaveHover();this.showSaving();},registerListeners:function(){this._listeners={};var listener;$H(Ajax.InPlaceEditor.Listeners).each(function(pair){listener=this[pair.value].bind(this);this._listeners[pair.key]=listener;if(!this.options.externalControlOnly)
this.element.observe(pair.key,listener);if(this.options.externalControl)
this.options.externalControl.observe(pair.key,listener);}.bind(this));},removeForm:function(){if(!this._form)return;this._form.remove();this._form=null;this._controls={};},showSaving:function(){this._oldInnerHTML=this.element.innerHTML;this.element.innerHTML=this.options.savingText;this.element.addClassName(this.options.savingClassName);this.element.style.backgroundColor=this._originalBackground;this.element.show();},triggerCallback:function(cbName,arg){if('function'==typeof this.options[cbName]){this.options[cbName](this,arg);}},unregisterListeners:function(){$H(this._listeners).each(function(pair){if(!this.options.externalControlOnly)
this.element.stopObserving(pair.key,pair.value);if(this.options.externalControl)
this.options.externalControl.stopObserving(pair.key,pair.value);}.bind(this));},wrapUp:function(transport){this.leaveEditMode();this._boundComplete(transport,this.element);}});Object.extend(Ajax.InPlaceEditor.prototype,{dispose:Ajax.InPlaceEditor.prototype.destroy});Ajax.InPlaceCollectionEditor=Class.create(Ajax.InPlaceEditor,{initialize:function($super,element,url,options){this._extraDefaultOptions=Ajax.InPlaceCollectionEditor.DefaultOptions;$super(element,url,options);},createEditField:function(){var list=document.createElement('select');list.name=this.options.paramName;list.size=1;this._controls.editor=list;this._collection=this.options.collection||[];if(this.options.loadCollectionURL)
this.loadCollection();else
this.checkForExternalText();this._form.appendChild(this._controls.editor);},loadCollection:function(){this._form.addClassName(this.options.loadingClassName);this.showLoadingText(this.options.loadingCollectionText);var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){var js=transport.responseText.strip();if(!/^\[.*\]$/.test(js))
throw'Server returned an invalid collection representation.';this._collection=eval(js);this.checkForExternalText();}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadCollectionURL,options);},showLoadingText:function(text){this._controls.editor.disabled=true;var tempOption=this._controls.editor.firstChild;if(!tempOption){tempOption=document.createElement('option');tempOption.value='';this._controls.editor.appendChild(tempOption);tempOption.selected=true;}
tempOption.update((text||'').stripScripts().stripTags());},checkForExternalText:function(){this._text=this.getText();if(this.options.loadTextURL)
this.loadExternalText();else
this.buildOptionList();},loadExternalText:function(){this.showLoadingText(this.options.loadingText);var options=Object.extend({method:'get'},this.options.ajaxOptions);Object.extend(options,{parameters:'editorId='+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(transport){this._text=transport.responseText.strip();this.buildOptionList();}.bind(this),onFailure:this.onFailure});new Ajax.Request(this.options.loadTextURL,options);},buildOptionList:function(){this._form.removeClassName(this.options.loadingClassName);this._collection=this._collection.map(function(entry){return 2===entry.length?entry:[entry,entry].flatten();});var marker=('value'in this.options)?this.options.value:this._text;var textFound=this._collection.any(function(entry){return entry[0]==marker;}.bind(this));this._controls.editor.update('');var option;this._collection.each(function(entry,index){option=document.createElement('option');option.value=entry[0];option.selected=textFound?entry[0]==marker:0==index;option.appendChild(document.createTextNode(entry[1]));this._controls.editor.appendChild(option);}.bind(this));this._controls.editor.disabled=false;Field.scrollFreeActivate(this._controls.editor);}});Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions=function(options){if(!options)return;function fallback(name,expr){if(name in options||expr===undefined)return;options[name]=expr;};fallback('cancelControl',(options.cancelLink?'link':(options.cancelButton?'button':options.cancelLink==options.cancelButton==false?false:undefined)));fallback('okControl',(options.okLink?'link':(options.okButton?'button':options.okLink==options.okButton==false?false:undefined)));fallback('highlightColor',options.highlightcolor);fallback('highlightEndColor',options.highlightendcolor);};Object.extend(Ajax.InPlaceEditor,{DefaultOptions:{ajaxOptions:{},autoRows:3,cancelControl:'link',cancelText:'cancel',clickToEditText:'Click to edit',externalControl:null,externalControlOnly:false,fieldPostCreation:'activate',formClassName:'inplaceeditor-form',formId:null,highlightColor:'#ffff99',highlightEndColor:'#ffffff',hoverClassName:'',htmlResponse:true,loadingClassName:'inplaceeditor-loading',loadingText:'Loading...',okControl:'button',okText:'ok',paramName:'value',rows:1,savingClassName:'inplaceeditor-saving',savingText:'Saving...',size:0,stripLoadedTextTags:false,submitOnBlur:false,textAfterControls:'',textBeforeControls:'',textBetweenControls:''},DefaultCallbacks:{callback:function(form){return Form.serialize(form);},onComplete:function(transport,element){new Effect.Highlight(element,{startcolor:this.options.highlightColor,keepBackgroundImage:true});},onEnterEditMode:null,onEnterHover:function(ipe){ipe.element.style.backgroundColor=ipe.options.highlightColor;if(ipe._effect)
ipe._effect.cancel();},onFailure:function(transport,ipe){alert('Error communication with the server: '+transport.responseText.stripTags());},onFormCustomization:null,onLeaveEditMode:null,onLeaveHover:function(ipe){ipe._effect=new Effect.Highlight(ipe.element,{startcolor:ipe.options.highlightColor,endcolor:ipe.options.highlightEndColor,restorecolor:ipe._originalBackground,keepBackgroundImage:true});}},Listeners:{click:'enterEditMode',keydown:'checkForEscapeOrReturn',mouseover:'enterHover',mouseout:'leaveHover'}});Ajax.InPlaceCollectionEditor.DefaultOptions={loadingCollectionText:'Loading options...'};Form.Element.DelayedObserver=Class.create({initialize:function(element,delay,callback){this.delay=delay||0.5;this.element=$(element);this.callback=callback;this.timer=null;this.lastValue=$F(this.element);Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));},delayedListener:function(event){if(this.lastValue==$F(this.element))return;if(this.timer)clearTimeout(this.timer);this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000);this.lastValue=$F(this.element);},onTimerEvent:function(){this.timer=null;this.callback(this.element,$F(this.element));}});Autocompleter.SelectBox=Class.create();Autocompleter.SelectBox.prototype=Object.extend(new Autocompleter.Base(),{initialize:function(select,options){this.select=select;this.element="<input type=\"text\" id=\""+$(select).id+"_combo\" />"
new Insertion.Before(select,this.element)
var inputClasses=Element.classNames(select);inputClasses.each(function(inputClass)
{Element.addClassName($(select).id+"_combo",inputClass);});this.update="<div id=\""+$(select).id+"_options\" class=\"autocomplete\"></div>"
new Insertion.Before(select,this.update)
this.baseInitialize($(select).id+"_combo",$(select).id+"_options",options);this.index=this.select.selectedIndex;this.select=select;this.selectOptions=[];$(this.element.id).setAttribute('readonly','readonly');this.element.readOnly=true;if(this.options.debug)alert('input '+this.element.id+' and div '+this.update.id+' created, Autocompleter.Base() initialized');if(!this.options.debug)Element.hide(select);var optionList=$(this.select).getElementsByTagName('option');var nodes=$A(optionList);for(var i=0;i<nodes.length;i++){this.selectOptions.push("<li id=\""+nodes[i].value+"\">"+nodes[i].innerHTML+'</li>');if(nodes[i].getAttribute("selected"))this.element.value=nodes[i].innerHTML;if(this.options.debug)alert('option '+nodes[i].innerHTML+' added to '+this.update.id);}
Event.observe(this.element,"click",function(){this.activate();setTimeout(function(){this.getCurrentEntry().scrollIntoView(false);}.bind(this),300);}.bind(this));if($(select).selectedIndex>=0)this.element.value=$(select).options[$(select).selectedIndex].innerHTML;var self=this;this.options.afterUpdateElement=function(text,li){var optionList=$(select).getElementsByTagName('option');var nodes=$A(optionList);var opt=nodes.find(function(node){return(node.value==li.id);});$(select).selectedIndex=opt.index;if(self.options.redirect)document.location.href=opt.value;if(self.options.autoSubmit)
$(self.options.autoSubmit).submit;}},selectIndex:function(index){if(index>=0)this.element.value=$(this.select).options[index].innerHTML;},getUpdatedChoices:function(){this.updateChoices(this.getValues());if(this.update.visible()){this.hide();}},getValues:function(){return("<ul>"+this.selectOptions.join('')+"</ul>");},updateSelectOptions:function(){var optionList=$(this.select).getElementsByTagName('option');var nodes=$A(optionList);this.selectOptions=[];for(var i=0;i<nodes.length;i++){this.selectOptions.push("<li id=\""+nodes[i].value+"\">"+nodes[i].innerHTML+'</li>');if(nodes[i].getAttribute("selected"))this.element.value=nodes[i].innerHTML;if(this.options.debug)alert('option '+nodes[i].innerHTML+' added to '+this.update.id);}},setOptions:function(options){this.options=Object.extend({redirect:false,debug:false,autoSubmit:''},options||{});}})
Function.prototype.toFunction=function(){return this;}
String.prototype.toFunction=function(){return new Function(this);}
Array.prototype.indexAt=function(what){var L=this.length;var i=0;while(i<L){if(this[i]===what)return i;++i;}
return-1;}
Array.prototype.add=function(wot){if(this.indexAt(wot)==-1)this.push(wot);return this;}
Object.inherit=function(subClass,baseClass,baseFuncName){function inheritance(){}
inheritance.prototype=baseClass.prototype;Object.extend(subClass.prototype,new inheritance());subClass.prototype.constructor=subClass;if(!baseFuncName||baseFuncName=="")
baseFuncName="base";subClass[baseFuncName]=baseClass.prototype.initialize;}
Effect.ReSize=Class.create();Object.extend(Object.extend(Effect.ReSize.prototype,Effect.Base.prototype),{initialize:function(element){this.element=element;if(!this.element)throw(Effect._elementDoesNotExistError);var options=Object.extend({amount:100,direction:'vert',toSize:null},arguments[1]||{});if(options.direction=='vert')
this.originalSize=options.originalSize||parseInt(this.element.style.height);else
this.originalSize=options.originalSize||parseInt(this.element.style.width);if(options.toSize!=null){options.amount=options.toSize-this.originalSize;console.log('amount: '+options.amount);}
this.start(options);},setup:function(){if(this.element.style.display=='none'){this.cancel();return;}},update:function(position){if(this.options.direction=='vert'){this.element.style.height=this.originalSize+(this.options.amount*position)+'px';}else{this.element.style.width=this.originalSize+(this.options.amount*position)+'px';}},finish:function(){if(this.options.direction=='vert'){this.element.style.height=this.originalSize+this.options.amount+'px';}else{this.element.style.width=this.originalSize+this.options.amount+'px';}}});Effect.Shadow=function(element){element=$(element);element.setStyle("position:relative; display:block;");var html=element.innerHTML
element.innerHTML="<span>"+html+"</span>";$(element.firstChild).absolutize();new Insertion.Top(element,"<span style=\"color: #000; display:block; \">"+html+"</span>");Element.clonePosition($(element.childNodes[1]),$(element.firstChild),{offsetTop:-1,offsetLeft:-1})
$(element.firstChild).setOpacity(0.5);}
Prototype.Browser.Chrome=(navigator.userAgent.indexOf('AppleWebKit/')>-1&&navigator.userAgent.toLowerCase().indexOf('chrome/')>-1);Prototype.Browser.Safari=(navigator.userAgent.indexOf('AppleWebKit/')>-1&&navigator.userAgent.toLowerCase().indexOf('chrome/')==-1);var lightbox=Class.create();lightbox.prototype={yPos:0,xPos:0,initialize:function(ctrl,overlay){this.content=ctrl.rel?ctrl.rel:(ctrl.getAttribute?ctrl.getAttribute("rel"):null);this.overlay=overlay?overlay:"overlay";this.context=ctrl.context?$(ctrl.context):$(document.body);},activate:function(){this.getScroll();this.setScroll(0,0);if(Prototype.Browser.IE){this.hideSelects("hidden");}
this.addLightboxMarkup();this.displayLightbox("block");},hideSelects:function(_26e){var selects=this.context.select("select");for(var i=0;i<selects.length;i++){selects[i].style.visibility=_26e;}},getScroll:function(){if(self.pageYOffset)
this.yPos=self.pageYOffset;else if(document.documentElement&&document.documentElement.scrollTop)
this.yPos=document.documentElement.scrollTop;else if(document.body)
this.yPos=document.body.scrollTop;},setScroll:function(x,y){window.scrollTo(x,y);},displayLightbox:function(displayStyle){if($(this.overlay)){$(this.overlay).style.display=displayStyle;}
if($(this.content)){$(this.content).style.display=displayStyle;}
if(displayStyle!="none")this.actions();},actions:function(){var _272=$$("lbAction");for(var i=0;i<_272.length;i++){Event.observe(_272[i],"click",this[_272[i].rel].bindAsEventListener(this),false);_272[i].onclick=function(){return false;};}},deactivate:function(content,overlay){this.setScroll(0,this.yPos);if(Prototype.Browser.IE){this.hideSelects("visible");}
if(overlay){this.content=content;this.overlay=overlay;}
this.displayLightbox("none");},addLightboxMarkup:function(){var overlayHeight=Math.max(parseInt(document.body.scrollHeight),parseInt(document.body.clientWidth))+'px';if($(this.overlay)){$(this.overlay).style.height=overlayHeight;}
else{var overlay=document.createElement("div");overlay.id="overlay";overlay.style.height=overlayHeight;document.body.appendChild(overlay);}}};var oLightBox=null;function lightBoxOn(oElt,overlay){if(oLightBox){oLightBox.initialize(oElt,overlay);}
else{oLightBox=new lightbox(oElt,overlay);}
oLightBox.activate();}
function lightBoxOff(content,overlay){if(oLightBox){oLightBox.deactivate(content,overlay);}}
var Tooltip=Class.create();Tooltip.prototype={initialize:function(element,tool_tip){var options=Object.extend({default_css:false,margin:"0px",padding:"5px",backgroundColor:"#d6d6fc",min_distance_x:15,min_distance_y:15,delta_x:0,delta_y:0,zindex:1000},arguments[2]||{});this.element=$(element);this.options=options;if($(tool_tip)){this.tool_tip=$(tool_tip);}else{this.tool_tip=$(document.createElement("div"));document.body.appendChild(this.tool_tip);this.tool_tip.addClassName("tooltip");this.tool_tip.appendChild(document.createTextNode(tool_tip));}
this.tool_tip.hide();this.eventMouseOver=this.showTooltip.bindAsEventListener(this);this.eventMouseOut=this.hideTooltip.bindAsEventListener(this);this.eventMouseMove=this.moveTooltip.bindAsEventListener(this);this.registerEvents();},destroy:function(){Event.stopObserving(this.element,"mouseover",this.eventMouseOver);Event.stopObserving(this.element,"mouseout",this.eventMouseOut);Event.stopObserving(this.element,"mousemove",this.eventMouseMove);},registerEvents:function(){Event.observe(this.element,"mouseover",this.eventMouseOver);Event.observe(this.element,"mouseout",this.eventMouseOut);Event.observe(this.element,"mousemove",this.eventMouseMove);},moveTooltip:function(event){Event.stop(event);var mouse_x=Event.pointerX(event);var mouse_y=Event.pointerY(event);mouse_x=mouse_x+this.options.min_distance_x+this.options.delta_x;mouse_y=mouse_y+this.options.min_distance_y+this.options.delta_y;this.setStyles(mouse_x,mouse_y);},showTooltip:function(event){Event.stop(event);this.moveTooltip(event);this.tool_tip.show();},setStyles:function(x,y){Element.setStyle(this.tool_tip,{position:'absolute',top:y+this.options.delta_y+"px",left:x+"px",zindex:this.options.zindex});if(this.options.default_css){Element.setStyle(this.tool_tip,{margin:this.options.margin,padding:this.options.padding,backgroundColor:this.options.backgroundColor,zindex:this.options.zindex});}},hideTooltip:function(event){this.tool_tip.hide();},getWindowHeight:function(){var innerHeight;if(navigator.appVersion.indexOf('MSIE')>0){innerHeight=document.body.clientHeight;}else{innerHeight=window.innerHeight;}
return innerHeight;},getWindowWidth:function(){var innerWidth;if(navigator.appVersion.indexOf('MSIE')>0){innerWidth=document.body.clientWidth;}else{innerWidth=window.innerWidth;}
return innerWidth;}}
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();selectGetHelpBoxCategory();resumeSession(gCurrentUser);}
function headerObserve()
{if($("dSigninMenu")){Event.observe('dSigninMenu','click',function(){openSigninBox($('dSigninMenu'));});}
observeLanguages("dHeader_1");}
function observeLanguages(parentElt){parentElt=$(parentElt);if(parentElt){var enCAList=parentElt.select(".enCA");enCAList.each(function(elt){Event.observe(elt,'click',function(){refreshWithLocale("en_CA");});});var frCAList=parentElt.select(".frCA");frCAList.each(function(elt){Event.observe(elt,'click',function(){refreshWithLocale("fr_CA");});});}}
function createHeaderMenus(){var mySpaceMenuLinks=eval(gMySpaceMenu);if(mySpaceMenuLinks){buildMenu(mySpaceMenuLinks);}}
function renderMySpaceMenu(menuesArr)
{if(!$("dMySpaceMenu"))
return;for(var j=0;j<menuesArr.length;j++)
{var linKey=menuesArr[j].linkName;menuesArr[j].linkName=g_mySpaceMenuStr[linKey];}
buildMenu(menuesArr);}
var closeMenuTimer;function buildMenu(menu){var mySpaceMenu=$('dMySpaceMenu');var mySpaceMenuContent=$('dMySpaceMenuContent');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){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(){new Effect.BlindUp(mySpaceMenuContent,{queue:{scope:"menu",position:"end",limit:3},duration:0.4});},500);};Event.observe("dMySpaceMenu","mouseover",openMenu);Event.observe("dMySpaceMenuContent","mouseover",openMenu);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++){html+='<li><a href="'+gHeaderUrls.home+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'){try{gIsUserEditor=true;checkAndShowEditSolutionReportLink();}catch(e){}}}
$('dHeaderLinks').hide();$('dHeaderLinksAfterLogin').show();}
function showHelloUser(user){if($('dHeaderWelcome')){$('dHeaderWelcome').innerHTML=gHeaderStrings.hello+'&nbsp;'+user.displayUserName;}}
function selectHeaderMenu(selectedMenuId)
{if(selectedMenuId==""){selectedMenuId=gHeaderMenus.home;}
var afterLoginSuffix=gCurrentUser.id=="anonymous"?"":"After";if(selectedMenuId!=gHeaderMenus.help&&selectedMenuId!=gHeaderMenus.aboutus){afterLoginSuffix="";}
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 selectGetHelpBoxCategory(){$("dTemplateBody").select(".leftPanel .getHelp li").each(function(category){if(window.location.href.include(category.down('a').href)){category.addClassName("categorySelected");throw $break;}});}
function refreshWithLocale(locale){setLocaleCookies(locale);redirectToUrl(gHeaderUrls.home);}
Object.extend(Function.prototype,{substr:function(){var __method=this;return function(){return"";}}});function S2StartSession(oStartSessionParams)
{this.popupElementId='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.isChoose4Me=false;}
S2StartSession.prototype=new Object;S2StartSession.prototype.toHTML=function()
{return this.buttonElement.outerHTML;}
S2StartSession.prototype.popupStartSession=function(oStatus)
{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.startConnectingFlow=function()
{if(this.disconnectedByUser)
return;var callType='requestCall';if(this.origin.originExtraData&&this.origin.originExtraData.solutionId)
callType='requestCallForPackage';new Ajax.Request(gStartSessionUrls.start_support_request,{parameters:{'callType':callType,'currentCustomerId':gCurrentUser.id,'supporterId':this.supporter.id,'searchId':this.searchId,'Origin':Object.toJSON(this.origin)},onSuccess:function(response){var WorkflowIdAndSupportRequestId=response.responseText;var wsa=WorkflowIdAndSupportRequestId.split('###');this.startPolling(wsa[0],wsa[1]);googleTrackPage("/contacting-expert");}.bind(this),onFailure:function(response){var errorName=response.statusText;if(errorName.indexOf("UserNotOnlineException")>-1)
{var errorString=response.statusText.split(':');this.handleSupporterNotOnline(errorString[1]);}
else if(errorName.indexOf("UserNotAllowedToPerformSessionException")>-1)
{this.handleUserNotAllowedToPerformSession();}
else if(errorName.indexOf("UserHasLeftOpenSessionException")>-1)
{getSessionResumeData(this.buttonElement,false);}
else if(errorName.indexOf("LoginRequiredException")>-1){this.handleLoginRequiredError();}
else if(errorName.indexOf("AccessDeniedException")>-1){this.popupStartSession({status:'sorry',reason:'accessdenied'});}else{this.popupStartSession({status:'sorry',reason:response.statusText});}}.bind(this)});}
S2StartSession.prototype.startConsultFlow=function(){this.popupStartSession({status:'calling',reason:'consult'});supportRequestFlow.inviteSupporterForConsult(this.workflowId,this.supporter.id,{callback:function(){this.expertStatePeriodExec=new PeriodicalExecuter(this.handleConsultFlowState.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.handleSupporterNotOnline(errorString,exception);}}.bind(this)});}
S2StartSession.prototype.handleConsultFlowState=function(pe)
{supportRequestFlow.getActiveProcessCurrentState(this.workflowId,{callback:function(state){switch(state)
{case"CONSULTING":this.expertStatePeriodExec.stop();var desktop=gSessionContextManager.getSupporterSessionByWorkflowId(this.workflowId).getSupporterDesktop();desktop.getConsultWidget().showConsultWindow();desktop.getSearchWidget().hidePopupBox();break;case"SUPPORT_REQUEST_ACCEPTED":case"IN_SESSION":this.expertStatePeriodExec.stop();lightBoxOff();break;default:}}.bind(this),errorHandler:function(errorString,exception){}});}
S2StartSession.prototype.cancelJabberEstablishing=function(disconnectedByUser)
{this.allowStartSession=true;this.disconnectedByUser=disconnectedByUser?true:false;lightBoxOff();gJabberConnection.jabberDisconnect();}
S2StartSession.prototype.cancelConnection=function()
{var cancelConnectionCbk=function(){if(this.expertStatePeriodExec){this.expertStatePeriodExec.stop();}
this.cancelJabberEstablishing(false);}.bind(this);supportRequestFlow.cancelSupportRequest(this.workflowId,{callback:cancelConnectionCbk,errorHandler:cancelConnectionCbk});}
S2StartSession.prototype.cancelConsult=function()
{var cancelConnectionCbk=function(){if(this.expertStatePeriodExec)
this.expertStatePeriodExec.stop();lightBoxOff()}.bind(this);supportRequestFlow.stopConsult(this.workflowId,{callback:cancelConnectionCbk,errorHandler:cancelConnectionCbk});}
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"SUPPORTER_NOT_AVAILABLE":this.expertStatePeriodExec.stop();this.popupStartSession({status:"sorry",reason:"unavailable"});break;case"SUPPORTER_OFFLINE":this.expertStatePeriodExec.stop();this.popupStartSession({status:"sorry",reason:"offline"});break;case"CUSTOMER_CANCELED":break;case"SUPPORT_REQUEST_ACCEPTED":this.expertStatePeriodExec.stop();this.fillPopupElement({status:"success"});break;default:}}
S2StartSession.prototype.openServicePage=function()
{lightBoxOff();saveSessionEvent({user:gCurrentUser,workflowId:this.workflowId,event:{action:SE_SP_OPEN,description:"Opening Service Page"},sessionIdList:[-1]});lightBoxOn({rel:"dOverlayServicePage"});new Ajax.Request(gStartSessionUrls.start_session_light,{parameters:{workflowId:this.workflowId,supportRequestId:this.supportRequestId},method:'post',onSuccess:function(transport){this.updateExpertCell("busy");$('dOverlayServicePage').update(transport.responseText);var afterRender=function(){initCustomerSession();};afterRender.defer();}.bind(this),onFailure:function(response){logme("Failed to open service page");}});}
S2StartSession.prototype.handleSupporterNotOnline=function(status)
{this.popupStartSession({status:'sorry',reason:status});this.updateExpertCell(status);}
S2StartSession.prototype.updateExpertCell=function(status){if(!this.expertCell)return;var dExpertStatus=this.expertCell.down('.expertStatusImage')
if(dExpertStatus)
{var dExpertStatusImg=dExpertStatus.down('img');if(dExpertStatusImg)
dExpertStatusImg.src=getSupporterStatusImg(status);}
var dExpertStatusText=this.expertCell.down('.expertStatusText')
if(dExpertStatusText)
dExpertStatusText.innerHTML=getSupporterStatusTextHtml(status);var dSearchExpertStart=this.expertCell.down('.startSessionButton')
if(dSearchExpertStart)
{disableObject(dSearchExpertStart,true);var btnImg=dSearchExpertStart.src?dSearchExpertStart:dSearchExpertStart.down("img");btnImg.replace('<img src="'+gStartSessionUrls.connect_disable+'"/>');}}
S2StartSession.prototype.handleUserNotAllowedToPerformSession=function()
{this.popupStartSession({status:"sorry",reason:"nomoresession"});var dSearchExpertStart=this.expertCell.down('.startSessionButton');if(dSearchExpertStart)
dSearchExpertStart.hide();}
S2StartSession.prototype.handleLoginRequiredError=function(){gSignupOrSignin.display({ju:this.supporter.jabberUsername},lightBoxOff);}
S2StartSession.prototype.fillPopupElement=function(oPopupStatus)
{var supporterPicture=getSupporterPicture(this.supporter);var supporterPictureWidth=50;var supporterPictureHeight=55;if(this.popupElement.down(".dPopupCloseBtn")){this.popupElement.down(".dPopupCloseBtn").remove();}
var dCloseButton=document.createElement("div");dCloseButton.className="dPopupCloseBtn";var dCloseImg=document.createElement("img");dCloseImg.src=gSessionUrls.close_regular;Event.observe(dCloseImg,'mousedown',function(){dCloseImg.src=gSessionUrls.close_press});Event.observe(dCloseImg,'mouseout',function(){dCloseImg.src=gSessionUrls.close_regular});Event.observe(dCloseImg,'mouseup',function(){dCloseImg.src=gSessionUrls.close_regular});Event.observe(dCloseButton,'click',lightBoxOff.bind(this));dCloseButton.appendChild(dCloseImg);var dContainer=this.popupElement.down(".container")?this.popupElement.down(".container"):document.createElement("div");dContainer.className='container';var dActions=document.createElement("div");dActions.className='dPopupActions';var oButtonParams=null;var cancelButton=null;var cancelString="&nbsp;&nbsp;"+gCommonStrings.cancel+"&nbsp;&nbsp;";var okButton=null;var okString="&nbsp;&nbsp;&nbsp;&nbsp;"+gCommonStrings.ok+"&nbsp;&nbsp;&nbsp;&nbsp;";var html='';switch(oPopupStatus.status)
{case'jabber_connection':this.popupElement.className='leightbox dPopupBox dPleaseWaitBox';oButtonParams={'text':cancelString,'onclick':this.cancelJabberEstablishing.bind(this)}
cancelButton=createGenericButton(oButtonParams);dActions.appendChild(cancelButton);Event.observe(dCloseButton,'click',this.cancelJabberEstablishing.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';if(oPopupStatus.reason=='consult')
{this.popupElement.addClassName("consult");oButtonParams={'text':cancelString,'onclick':this.cancelConsult.bind(this)}
cancelButton=createGenericButton(oButtonParams);dActions.appendChild(cancelButton);Event.observe(dCloseButton,'click',this.cancelConsult.bind(this));}
else
{oButtonParams={'text':cancelString,'onclick':this.cancelConnection.bind(this)}
cancelButton=createGenericButton(oButtonParams);dActions.appendChild(cancelButton);Event.observe(dCloseButton,'click',this.cancelConnection.bind(this));}
var callingText;if(this.isChoose4Me){callingText=gStartSessionStrings.c4me_calling;}else{callingText=gStartSessionStrings.calling.replace(/###SUPPORTERNAME###/g,this.supporter.displayUserName);}
html='<div class="dPopupExpertPicture"><img src="'+supporterPicture+'" alt="" width="'+supporterPictureWidth+'" height="'+supporterPictureHeight+'"/></div>'+'<div class="dPopupText">'+callingText+'...</div>'+'<div class="dConnecting"><img class="clock" src="'+gStartSessionUrls.connecting+'" align="absmiddle" alt=""/></div>';dContainer.innerHTML=html;break;case'success':this.openServicePage();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");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){oButtonParams={'text':okString,'onclick':lightBoxOff.bind(this)}}else{Event.observe(dCloseButton,'click',this.cancelJabberEstablishing.bind(this));oButtonParams={'text':okString,'onclick':this.cancelJabberEstablishing.bind(this)}}
okButton=createGenericButton(oButtonParams);dActions.innerHTML='<a style="float: left; padding-right: 20px;" class="linkTxt" href="'+gCommonUrls.leave_message+this.supporter.jabberUsername+'"><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':"&nbsp;"+gStartSessionStrings.retry+"&nbsp;",'onclick':this.startConnectingFlow.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(dCloseButton,'click',this.cancelJabberEstablishing.bind(this));var expert_unavailable_msg;if(this.isChoose4Me){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(dCloseButton,'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(dCloseButton,'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(dCloseButton,'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';dActions.innerHTML='<a style="float:left" 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 style="float:right" href="'+gCommonUrls.leave_message+this.supporter.jabberUsername+'"><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>';logme("Jabber Connection failed: "+oPopupStatus.reason);Event.observe(dCloseButton,'click',this.cancelJabberEstablishing.bind(this));break;case'ska_failure':oButtonParams={'text':gStartSessionStrings.retry,'onclick':function(){gS2StartSession.connectAndStartSession();}}
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(dCloseButton,'click',this.cancelJabberEstablishing.bind(this));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(dCloseButton,'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(dCloseButton,'click',this.cancelJabberEstablishing.bind(this));break;}
break;}
dContainer.appendChild(dActions);this.popupElement.appendChild(dContainer);this.popupElement.appendChild(dCloseButton);}
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.connectAndStartSession();}
S2StartSession.prototype.startC4MeSession=function(buttonElement){this.setButtonElement(buttonElement);this.isChoose4Me=true;this.setSupporter({jabberUsername:"c4me",id:"",displayUserName:""});this.connectAndStartSession();}
S2StartSession.prototype.startSolutionSession=function(expertCellId,supporterId,searchId,buttonElement,oExtraData){this.setOriginExtraData(oExtraData);this.startSession(expertCellId,supporterId,searchId,buttonElement);}
S2StartSession.prototype.connectAndStartSession=function()
{if(!Prototype.Browser.IE&&!Prototype.Browser.Firefox&&!Prototype.Browser.WebKit)
{this.popupStartSession({status:'sorry',reason:'browser'});return;}
if(gCheckPopupBlocker&&popupBlockerEnabled()){this.popupStartSession({status:'sorry',reason:'blocker'});return;}
gSecuredAction.execute({ju:this.supporter.jabberUsername},function(){lightBoxOff();this.popupStartSession({status:'jabber_connection'});this.disconnectedByUser=false;gJabberConnection.doLogin({onConnect:function(){if(this.allowStartSession){this.allowStartSession=false;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 consultWidget=gSessionContextManager.getSupporterSessionByWorkflowId(this.workflowId).getSupporterDesktop().getConsultWidget();consultWidget.setConsultant(this.supporter);consultWidget.setJabberUsernameForConsult(this.supporter.jabberUsername);consultWidget.setDisplayUsernameForConsult(this.supporter.displayUserName)
this.startConsultFlow();}
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)
{this.s2AutoCompleter=new S2AutoCompleter(searchType,searchInputId,callbackFunction,actionFunction,searchDelay,errorFieldId,this);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();}
function S2AutoCompleter(searchType,searchInputId,callbackFunction,actionFunction,searchDelay,errorFieldId,s2AutoSuggestObj)
{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;}
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);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);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(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;}}
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;}
function S2Pager(onclickPageFunc,nbElts,nbEltsPerPage,currentPage)
{this.onclickPageFunc=onclickPageFunc;this.nbElts=nbElts;this.nbEltsPerPage=nbEltsPerPage;this.nbPages=Math.ceil(nbElts/nbEltsPerPage);this.selectedPageClassName='selectedPage';this.unselectedPageClassName='unselectedPage';this.disablePageClassName='disabledPage';this.enablePageClassName=this.unselectedPageClassName;this.currentPage=currentPage;this.pagerDiv=document.createElement('DIV');this.pagerDiv.className='dPager';this.pagerDiv=$(this.pagerDiv);if(this.nbPages<2)return;var firstLink=document.createElement('SPAN');var firstText=document.createTextNode('<<');firstLink.appendChild(firstText);firstLink.title=gSearchStrings.paging_first;Event.observe(firstLink,'click',this.onFirstClicked.bindAsEventListener(this));var prevLink=document.createElement('SPAN');var prevText=document.createTextNode('<');prevLink.appendChild(prevText);prevLink.title=gSearchStrings.paging_previous;Event.observe(prevLink,'click',this.onPrevClicked.bindAsEventListener(this));this.pagerDiv.appendChild(firstLink)
this.pagerDiv.appendChild(prevLink)
for(var i=1;i<=this.nbPages;i++)
{var page=document.createElement('SPAN');var pageText=document.createTextNode(i)
page.appendChild(pageText);page.val=i;Event.observe(page,'click',this.onPageClicked.bindAsEventListener(this));Event.observe(page,'mouseover',this.onPageOver.bindAsEventListener(this));Event.observe(page,'mouseout',this.onPageOut.bindAsEventListener(this));this.pagerDiv.appendChild(page);}
var nextLink=document.createElement('SPAN');var nextText=document.createTextNode('>');nextLink.appendChild(nextText);nextLink.title=gSearchStrings.paging_next;Event.observe(nextLink,'click',this.onNextClicked.bindAsEventListener(this));var lastLink=document.createElement('SPAN');var lastText=document.createTextNode('>>');lastLink.appendChild(lastText);lastLink.title=gSearchStrings.paging_last;Event.observe(lastLink,'click',this.onLastClicked.bindAsEventListener(this));this.pagerDiv.appendChild(nextLink)
this.pagerDiv.appendChild(lastLink)
this.refreshUI();}
S2Pager.prototype=new Object;S2Pager.prototype.getPagerElt=function()
{return this.pagerDiv;}
S2Pager.prototype.setNbElts=function(n)
{this.nbElts=n;this.nbPages=Math.ceil(this.nbElts/this.nbEltsPerPage);}
S2Pager.prototype.setNbEltsPerPage=function(n)
{this.nbEltsPerPage=n;this.nbPages=Math.ceil(this.nbElts/this.nbEltsPerPage);}
S2Pager.prototype.refreshUI=function()
{var pages=$(this.pagerDiv).immediateDescendants();for(var i=0;i<pages.length;i++)
{var page=pages[i];if(pages.length>6)
{if((page.val<this.currentPage-1)&&(page.val<this.nbPages-2))page.style.display='none';if((page.val>this.currentPage+1)&&(page.val>3))page.style.display='none';}
if(page.val==this.currentPage)
this.selectPage(page,true);else
this.selectPage(page,false);if(this.currentPage==1)
{this.disableLink(pages[0],true)
this.disableLink(pages[1],true)}
else
{this.disableLink(pages[0],false)
this.disableLink(pages[1],false)}
if(this.currentPage==this.nbPages)
{this.disableLink(pages[pages.length-1],true)
this.disableLink(pages[pages.length-2],true)}
else
{this.disableLink(pages[pages.length-1],false)
this.disableLink(pages[pages.length-2],false)}}}
S2Pager.prototype.selectPage=function(page,selectit)
{if(isUndefined(selectit))selectit=true;page.className=selectit?this.selectedPageClassName:this.unselectedPageClassName;}
S2Pager.prototype.disableLink=function(page,disableit)
{if(isUndefined(disableit))disableit=true;page.className=disableit?this.disablePageClassName:this.enablePageClassName;}
S2Pager.prototype.onPageClicked=function(evt)
{var sPage=Event.element(evt);this.currentPage=sPage.val;this.refreshUI();this.onclickPageFunc(this.currentPage);}
S2Pager.prototype.onFirstClicked=function()
{if(this.currentPage==1)
return;this.currentPage=1;this.refreshUI();this.onclickPageFunc(this.currentPage);}
S2Pager.prototype.onPrevClicked=function()
{if(this.currentPage==1)
return;this.currentPage--;this.refreshUI();this.onclickPageFunc(this.currentPage);}
S2Pager.prototype.onNextClicked=function()
{if(this.currentPage==this.nbPages)
return;this.currentPage++;this.refreshUI();this.onclickPageFunc(this.currentPage);}
S2Pager.prototype.onLastClicked=function()
{if(this.currentPage==this.nbPages)
return;this.currentPage=this.nbPages;this.refreshUI();this.onclickPageFunc(this.currentPage);}
S2Pager.prototype.onPageOver=function(evt)
{var sPage=Event.element(evt);sPage.style.textDecoration="underline"}
S2Pager.prototype.onPageOut=function(evt)
{var sPage=Event.element(evt);sPage.style.textDecoration="none"}
function S2Chat(oStartSessionParams)
{if(!oStartSessionParams)oStartSessionParams={};this.partnerJabber=oStartSessionParams['partnerJabber']?oStartSessionParams['partnerJabber']:gPartnerUser.jabberFullUserName;this.partnerName=oStartSessionParams['partnerName']?oStartSessionParams['partnerName']:gPartnerUser.displayUserName;this.workflowId=oStartSessionParams['workflowId']?oStartSessionParams['workflowId']:g_workflowId;this.sessionId=oStartSessionParams['sessionId']?oStartSessionParams['sessionId']:g_support_sessionId;this.messageStack=[];this.focusChat=true;this.typingNotificationTypeFlags={PHONE_NOTIFICATION:false,CHAT_NOTIFICATION:false,SUPPORTER_DISCONNECTED:false,CONSULTING_NOTIFICATION:false,SUPPORTER_CONNECTED:false}
this.widgetId=oStartSessionParams['widgetId'];this.flowMessages={};this.firstMessage=true;if(gCurrentUser.whoAmI==CUSTOMER){this.noMsgTimer=new S2Timer(gNoMsgTime,false,saveSessionEvent,{user:gCurrentUser,event:{action:SE_XMIN_NOMSG,description:"Customer:No chat messages sent during "+gNoMsgTime+" seconds"},sessionIdList:[this.sessionId]});}
else if(gCurrentUser.whoAmI==SUPPORTER)
this.noMsgTimer=new S2Timer(gNoMsgTime,false,saveSessionEvent,{user:gCurrentUser,event:{action:SE_XMIN_NOMSG,description:"Expert:No chat messages sent during "+gNoMsgTime+" seconds"},sessionIdList:[this.sessionId]});if(this.noMsgTimer)
this.noMsgTimer.start();}
S2Chat.prototype=new Object;S2Chat.prototype.onChatLoaded=function()
{this.observeElements();this.focus();this.displayMessageStack();this.startClearTyping();}
S2Chat.prototype.observeElements=function()
{var input=this.getInput();if(input){if(gCurrentUser.whoAmI==CUSTOMER){Event.observe(input,'click',clearFieldOnlyOneTime);setMyAttribute(input,'cleared',false);}
else{setMyAttribute(input,'cleared',true);}
Event.observe(input,'keypress',this.onInputKeyPress.bindAsEventListener(this));}
var sendButton=this.getSendButton();if(sendButton){Event.observe(sendButton,'click',this.onSendClicked.bindAsEventListener(this))}
var output=this.getOutput();if(output){Event.observe(output,'mouseenter',this.onOuptutEnter.bindAsEventListener(this))
Event.observe(output,'mouseleave',this.onOuptutLeave.bindAsEventListener(this))}
Event.observe($(this.widgetId),'resize',this.focus.bind(this));}
S2Chat.prototype.displayMessageStack=function()
{for(var i=0;i<this.messageStack.length;i++)
{var oMessage=this.messageStack.pop();this.updateChatZoneWithMessage(oMessage,false,false);}}
S2Chat.prototype.onSendClicked=function(){this.sendChatMsg();}
S2Chat.prototype.onInputKeyPress=function(evt){var d=new Date();if(!this.lastMessageSentDate||d.getTime()-this.lastMessageSentDate.getTime()>10000){this.sendTypingNotification();}
clearFieldOnlyOneTime(evt);if(!evt.shiftKey||evt.keyCode!=13)
{switch(evt.keyCode)
{case 13:this.sendChatMsg();Event.stop(evt);break;}}}
S2Chat.prototype.sendChatMsg=function()
{var input=this.getInput();if(!input)return false;var body=input.value;if(isUndefined(body)||body==''||!input.cleared)
return false;if(this.firstMessage)
{if(gCurrentUser.whoAmI==CUSTOMER){saveSessionEvent({user:gCurrentUser,event:{action:SE_FIRST_MSG,description:"Customer: First chat message sent"},sessionIdList:[this.sessionId]})}
else if(gCurrentUser.whoAmI==SUPPORTER){saveSessionEvent({user:gCurrentUser,event:{action:SE_FIRST_MSG,description:"Supporter: First chat message sent"},sessionIdList:[this.sessionId]})}}
this.firstMessage=false;gJabberConnection.sendMsg(gJabberConnection.addJabberDomainSuffix(this.partnerJabber),gJabberConnection.feature.chat,new ChatMessage().encode(this.sessionId,body),this.workflowId);var oMessage={from:gCurrentUser.jabberUserName,name:gCurrentUser.displayUserName,body:body};this.updateChatZoneWithMessage(oMessage,true,false);input.value='';if(this.noMsgTimer){this.noMsgTimer.restart();}
this.focus();this.lastMessageSentDate=null;return false;}
S2Chat.prototype.sendTypingNotification=function()
{gJabberConnection.sendMsg(gJabberConnection.addJabberDomainSuffix(this.partnerJabber),g_IS_TYPING,'',this.workflowId);this.lastMessageSentDate=new Date();}
S2Chat.prototype.setTypingText=function(text)
{var typingArea=this.getTypingArea();if(!typingArea)
return;text=text?text:'';if(typingArea.tagName=="INPUT"){typingArea.value=text;}else{typingArea.innerHTML=text;}
this.lastIsTypingDate=new Date();}
S2Chat.prototype.stopClearTyping=function()
{this.clearTypingPE.stop();}
S2Chat.prototype.startClearTyping=function()
{if(this.clearTypingPE&&this.clearTypingPE.timer){return;}
this.clearTypingPE=new PeriodicalExecuter(function(){var d=new Date();if(!this.lastIsTypingDate||d.getTime()-this.lastIsTypingDate.getTime()>15000){this.displayTypingNotification(CHAT_NOTIFICATION,false);}}.bind(this),10);}
S2Chat.prototype.displayTypingNotification=function(flagKey,flagValue,textNotification){this.setTypingNotificationFlag(flagKey,flagValue)
var text='';var partnerType=gCurrentUser.whoAmI==CUSTOMER?gCommonStrings.supporter:gCommonStrings.customer;for(var flag in this.typingNotificationTypeFlags){if(this.typingNotificationTypeFlags[flag])
{text=gSessionStrings[flag]?gSessionStrings[flag].replace(/###PARTNERNAME###/g,partnerType):textNotification;break;}}
this.setTypingText(text);}
S2Chat.prototype.setTypingNotificationFlag=function(flagKey,flagValue){this.typingNotificationTypeFlags[flagKey]=flagValue;}
S2Chat.prototype.updateChatZoneWithMessage=function(oMessage,encode,stepNum,whereToInsert)
{var output=this.getOutput();if(!output)
{this.messageStack.push(oMessage);return;}
var msgClass='';var msgFrom=oMessage.from;var msgName=oMessage.name;var sep=':';var fromDiv=stepNum?'':'<div class="dCSChatMsg_1">'+msgName+' ['+this.displayHour()+'] '+sep+'</div>';switch(msgFrom)
{case gJabberConnection.supportSpaceUsername:msgClass='dMsgS2'
fromDiv='';break;case PERMISSION_REQUEST:msgClass='dMsgRequest'
fromDiv='<div class="dCSChatMsg_1">'+'['+this.displayHour()+']'+sep+'</div>';break;case gCurrentUser.jabberUserName:switch(gCurrentUser.whoAmI)
{case CUSTOMER:msgClass='dMsgDefault customer'
break;case SUPPORTER:msgClass='dMsgDefault supporter'
break;case CONSULTANT:msgClass='dMsgDefault consultant'
break;}
break;case this.partnerJabber:this.disableChat(false);switch(gCurrentUser.whoAmI)
{case CUSTOMER:showOverlayServicePage();msgClass='dMsgDefault supporter'
break;case SUPPORTER:msgClass='dMsgDefault customer'
break;case CONSULTANT:msgClass='dMsgDefault supporter'
break;}
break;default:this.disableChat(false);msgClass='dMsgDefault consultant'}
var msg=encode?htmlEnc(oMessage.body):oMessage.body;msg=msg.replace(/###SUPPORTERNAME###/g,this.partnerName).replace(/###CUSTOMERNAME###/g,this.partnerName).replace(/###PARTNERNAME###/g,this.partnerName);msg=parseMessageForSpecialStrings(msg);var msgHTML='<div class="dCSChatMsg '+msgClass+'">'+fromDiv+'<div class="dCSChatMsg_2">'+msg+'</div></div>';if(window.focus&&this.focusChat)
{window.focus();this.focus();}
if(whereToInsert==0)
output.insert({top:msgHTML});else
output.insert(msgHTML);this.scrollDown();this.displayTypingNotification(CHAT_NOTIFICATION,false);}
S2Chat.prototype.insert=function(html){var output=this.getOutput();output.insert({top:html});}
S2Chat.prototype.scrollDown=function(){var output=this.getOutput();scrollDown(output);}
S2Chat.prototype.focus=function()
{var input=this.getInput();var focusTimer=setInterval(function(){var focused=false;try{input.focus();focused=true;}catch(e){}
if(focused){clearInterval(focusTimer);}}.bind(this),20)}
S2Chat.prototype.disableChat=function(bool,bLayout)
{var input=this.getInput();if(input.disabled==bool){return;}
var layout=this.getLayout();var sendButton=this.getSendButton();if(bool){if(bLayout)
new Effect.Opacity(layout,{duration:0.7,from:1.0,to:0.6});this.stopClearTyping();}
else{if(bLayout)
new Effect.Opacity(layout,{duration:0.5,from:0.6,to:1.0});this.startClearTyping();}
input.disabled=bool;sendButton.disabled=bool;}
S2Chat.prototype.displayHour=function(){var curDateTime=new Date();var curHour=curDateTime.getHours();var curMin=curDateTime.getMinutes();var curAMPM=" AM";var curTime="";if(curHour>=12){curHour-=12;curAMPM=" PM";}
if(curHour==0){curHour=12;}
curTime=((curHour<10)?"0":"")+curHour+":"+((curMin<10)?"0":"")+curMin+curAMPM;return curTime;}
S2Chat.prototype.onOuptutEnter=function(){this.setOnOutput(true);}
S2Chat.prototype.onOuptutLeave=function(){this.setOnOutput(false);}
S2Chat.prototype.getInput=function(){if(!this.input){this.input=this.getLayout()?this.getLayout().down(".chatInput"):null}
return this.input;}
S2Chat.prototype.getOutput=function(){if(!this.output){this.output=this.getLayout()?this.getLayout().down(".chatOutput"):null;}
return this.output;}
S2Chat.prototype.getSendButton=function(){if(!this.sendButton){this.sendButton=this.getLayout()?this.getLayout().down(".sendMessageButton"):null;}
return this.sendButton;}
S2Chat.prototype.getTypingArea=function(){if(!this.typingArea){this.typingArea=this.getLayout()?this.getLayout().down(".chatNotification"):null;}
return this.typingArea;}
S2Chat.prototype.getLayout=function(){if(!this.layout){this.layout=$(this.widgetId)?$(this.widgetId).down(".chatLayout"):null;}
return this.layout;}
S2Chat.prototype.setWidgetId=function(widgetId){$(this.widgetId).id=widgetId;}
S2Chat.prototype.setPartner=function(oPartner){this.partnerJabber=oPartner['partnerJabber'];this.partnerName=oPartner['partnerName'];}
S2Chat.prototype.setWorkflowId=function(workflowId){this.workflowId=workflowId;}
S2Chat.prototype.setSessionId=function(sessionId){this.sessionId=sessionId;}
S2Chat.prototype.setOnOutput=function(bool){this.isOnOutput=bool;}
S2Chat.prototype.setFocusChat=function(bool){this.focusChat=bool;}
var gChats={};function initChat(oChat){gChats[oChat.widgetId]=new S2Chat(oChat);}
var JSJAC_HAVEKEYS=true;var JSJAC_NKEYS=16;var JSJAC_INACTIVITY=300;var JSJAC_ERR_COUNT=10;var JSJAC_ALLOW_PLAIN=true;var JSJAC_CHECKQUEUEINTERVAL=1;var JSJAC_CHECKINQUEUEINTERVAL=1;var JSJACHBC_BOSH_VERSION="1.6";var JSJACHBC_USE_BOSH_VER=true;var JSJACHBC_MAX_HOLD=1;var JSJACHBC_MAX_WAIT=300;var JSJACHBC_MAXPAUSE=120;String.prototype.htmlEnc=function(){var str=this.replace(/&/g,"&amp;");str=str.replace(/</g,"&lt;");str=str.replace(/>/g,"&gt;");str=str.replace(/\"/g,"&quot;");str=str.replace(/\n/g,"<br />");return str;};Date.jab2date=function(ts){var date=new Date(Date.UTC(ts.substr(0,4),ts.substr(5,2)-1,ts.substr(8,2),ts.substr(11,2),ts.substr(14,2),ts.substr(17,2)));if(ts.substr(ts.length-6,1)!='Z'){var offset=new Date();offset.setTime(0);offset.setUTCHours(ts.substr(ts.length-5,2));offset.setUTCMinutes(ts.substr(ts.length-2,2));if(ts.substr(ts.length-6,1)=='+')
date.setTime(date.getTime()-offset.getTime());else if(ts.substr(ts.length-6,1)=='-')
date.setTime(date.getTime()+offset.getTime());}
return date;};Date.hrTime=function(ts){return Date.jab2date(ts).toLocaleString();};Date.prototype.jabberDate=function(){var padZero=function(i){if(i<10)return"0"+i;return i;};var jDate=this.getUTCFullYear()+"-";jDate+=padZero(this.getUTCMonth()+1)+"-";jDate+=padZero(this.getUTCDate())+"T";jDate+=padZero(this.getUTCHours())+":";jDate+=padZero(this.getUTCMinutes())+":";jDate+=padZero(this.getUTCSeconds())+"Z";return jDate;};Number.max=function(A,B){return(A>B)?A:B;};var hexcase=0;var b64pad="=";var chrsz=8;function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length*chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length*chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length*chrsz));}
function hex_hmac_sha1(key,data){return binb2hex(core_hmac_sha1(key,data));}
function b64_hmac_sha1(key,data){return binb2b64(core_hmac_sha1(key,data));}
function str_hmac_sha1(key,data){return binb2str(core_hmac_sha1(key,data));}
function sha1_vm_test()
{return hex_sha1("abc")=="a9993e364706816aba3e25717850c26c9cd0d89d";}
function core_sha1(x,len)
{x[len>>5]|=0x80<<(24-len%32);x[((len+64>>9)<<4)+15]=len;var w=Array(80);var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;var e=-1009589776;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;var olde=e;for(var j=0;j<80;j++)
{if(j<16)w[j]=x[i+j];else w[j]=rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1);var t=safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));e=d;d=c;c=rol(b,30);b=a;a=t;}
a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);e=safe_add(e,olde);}
return Array(a,b,c,d,e);}
function sha1_ft(t,b,c,d)
{if(t<20)return(b&c)|((~b)&d);if(t<40)return b^c^d;if(t<60)return(b&c)|(b&d)|(c&d);return b^c^d;}
function sha1_kt(t)
{return(t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514;}
function core_hmac_sha1(key,data)
{var bkey=str2binb(key);if(bkey.length>16)bkey=core_sha1(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_sha1(ipad.concat(str2binb(data)),512+data.length*chrsz);return core_sha1(opad.concat(hash),512+160);}
function rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binb(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(32-chrsz-i%32);return bin;}
function binb2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(32-chrsz-i%32))&mask);return str;}
function binb2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((3-i%4)*8))&0xF);}
return str;}
function binb2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(3-i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*(3-(i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*(3-(i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;}
function hex_md5(s){return binl2hex(core_md5(str2binl(s),s.length*chrsz));}
function b64_md5(s){return binl2b64(core_md5(str2binl(s),s.length*chrsz));}
function str_md5(s){return binl2str(core_md5(str2binl(s),s.length*chrsz));}
function hex_hmac_md5(key,data){return binl2hex(core_hmac_md5(key,data));}
function b64_hmac_md5(key,data){return binl2b64(core_hmac_md5(key,data));}
function str_hmac_md5(key,data){return binl2str(core_hmac_md5(key,data));}
function md5_vm_test()
{return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72";}
function core_md5(x,len)
{x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i<x.length;i+=16)
{var olda=a;var oldb=b;var oldc=c;var oldd=d;a=md5_ff(a,b,c,d,x[i+0],7,-680876936);d=md5_ff(d,a,b,c,x[i+1],12,-389564586);c=md5_ff(c,d,a,b,x[i+2],17,606105819);b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);a=md5_ff(a,b,c,d,x[i+4],7,-176418897);d=md5_ff(d,a,b,c,x[i+5],12,1200080426);c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);b=md5_ff(b,c,d,a,x[i+7],22,-45705983);a=md5_ff(a,b,c,d,x[i+8],7,1770035416);d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);c=md5_ff(c,d,a,b,x[i+10],17,-42063);b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);a=md5_ff(a,b,c,d,x[i+12],7,1804603682);d=md5_ff(d,a,b,c,x[i+13],12,-40341101);c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);b=md5_ff(b,c,d,a,x[i+15],22,1236535329);a=md5_gg(a,b,c,d,x[i+1],5,-165796510);d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);c=md5_gg(c,d,a,b,x[i+11],14,643717713);b=md5_gg(b,c,d,a,x[i+0],20,-373897302);a=md5_gg(a,b,c,d,x[i+5],5,-701558691);d=md5_gg(d,a,b,c,x[i+10],9,38016083);c=md5_gg(c,d,a,b,x[i+15],14,-660478335);b=md5_gg(b,c,d,a,x[i+4],20,-405537848);a=md5_gg(a,b,c,d,x[i+9],5,568446438);d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);c=md5_gg(c,d,a,b,x[i+3],14,-187363961);b=md5_gg(b,c,d,a,x[i+8],20,1163531501);a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);d=md5_gg(d,a,b,c,x[i+2],9,-51403784);c=md5_gg(c,d,a,b,x[i+7],14,1735328473);b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);a=md5_hh(a,b,c,d,x[i+5],4,-378558);d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);c=md5_hh(c,d,a,b,x[i+11],16,1839030562);b=md5_hh(b,c,d,a,x[i+14],23,-35309556);a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);d=md5_hh(d,a,b,c,x[i+4],11,1272893353);c=md5_hh(c,d,a,b,x[i+7],16,-155497632);b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);a=md5_hh(a,b,c,d,x[i+13],4,681279174);d=md5_hh(d,a,b,c,x[i+0],11,-358537222);c=md5_hh(c,d,a,b,x[i+3],16,-722521979);b=md5_hh(b,c,d,a,x[i+6],23,76029189);a=md5_hh(a,b,c,d,x[i+9],4,-640364487);d=md5_hh(d,a,b,c,x[i+12],11,-421815835);c=md5_hh(c,d,a,b,x[i+15],16,530742520);b=md5_hh(b,c,d,a,x[i+2],23,-995338651);a=md5_ii(a,b,c,d,x[i+0],6,-198630844);d=md5_ii(d,a,b,c,x[i+7],10,1126891415);c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);b=md5_ii(b,c,d,a,x[i+5],21,-57434055);a=md5_ii(a,b,c,d,x[i+12],6,1700485571);d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);c=md5_ii(c,d,a,b,x[i+10],15,-1051523);b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);a=md5_ii(a,b,c,d,x[i+8],6,1873313359);d=md5_ii(d,a,b,c,x[i+15],10,-30611744);c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);b=md5_ii(b,c,d,a,x[i+13],21,1309151649);a=md5_ii(a,b,c,d,x[i+4],6,-145523070);d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);c=md5_ii(c,d,a,b,x[i+2],15,718787259);b=md5_ii(b,c,d,a,x[i+9],21,-343485551);a=safe_add(a,olda);b=safe_add(b,oldb);c=safe_add(c,oldc);d=safe_add(d,oldd);}
return Array(a,b,c,d);}
function md5_cmn(q,a,b,x,s,t)
{return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);}
function md5_ff(a,b,c,d,x,s,t)
{return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);}
function md5_gg(a,b,c,d,x,s,t)
{return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);}
function md5_hh(a,b,c,d,x,s,t)
{return md5_cmn(b^c^d,a,b,x,s,t);}
function md5_ii(a,b,c,d,x,s,t)
{return md5_cmn(c^(b|(~d)),a,b,x,s,t);}
function core_hmac_md5(key,data)
{var bkey=str2binl(key);if(bkey.length>16)bkey=core_md5(bkey,key.length*chrsz);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++)
{ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;}
var hash=core_md5(ipad.concat(str2binl(data)),512+data.length*chrsz);return core_md5(opad.concat(hash),512+128);}
function safe_add(x,y)
{var lsw=(x&0xFFFF)+(y&0xFFFF);var msw=(x>>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);}
function bit_rol(num,cnt)
{return(num<<cnt)|(num>>>(32-cnt));}
function str2binl(str)
{var bin=Array();var mask=(1<<chrsz)-1;for(var i=0;i<str.length*chrsz;i+=chrsz)
bin[i>>5]|=(str.charCodeAt(i/chrsz)&mask)<<(i%32);return bin;}
function binl2str(bin)
{var str="";var mask=(1<<chrsz)-1;for(var i=0;i<bin.length*32;i+=chrsz)
str+=String.fromCharCode((bin[i>>5]>>>(i%32))&mask);return str;}
function binl2hex(binarray)
{var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var str="";for(var i=0;i<binarray.length*4;i++)
{str+=hex_tab.charAt((binarray[i>>2]>>((i%4)*8+4))&0xF)+
hex_tab.charAt((binarray[i>>2]>>((i%4)*8))&0xF);}
return str;}
function binl2b64(binarray)
{var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var str="";for(var i=0;i<binarray.length*4;i+=3)
{var triplet=(((binarray[i>>2]>>8*(i%4))&0xFF)<<16)|(((binarray[i+1>>2]>>8*((i+1)%4))&0xFF)<<8)|((binarray[i+2>>2]>>8*((i+2)%4))&0xFF);for(var j=0;j<4;j++)
{if(i*8+j*6>binarray.length*32)str+=b64pad;else str+=tab.charAt((triplet>>6*(3-j))&0x3F);}}
return str;}
function utf8t2d(t)
{t=t.replace(/\r\n/g,"\n");var d=new Array;var test=String.fromCharCode(237);if(test.charCodeAt(0)<0)
for(var n=0;n<t.length;n++)
{var c=t.charCodeAt(n);if(c>0)
d[d.length]=c;else{d[d.length]=(((256+c)>>6)|192);d[d.length]=(((256+c)&63)|128);}}
else
for(var n=0;n<t.length;n++)
{var c=t.charCodeAt(n);if(c<128)
d[d.length]=c;else if((c>127)&&(c<2048)){d[d.length]=((c>>6)|192);d[d.length]=((c&63)|128);}
else{d[d.length]=((c>>12)|224);d[d.length]=(((c>>6)&63)|128);d[d.length]=((c&63)|128);}}
return d;}
function utf8d2t(d)
{var r=new Array;var i=0;while(i<d.length)
{if(d[i]<128){r[r.length]=String.fromCharCode(d[i]);i++;}
else if((d[i]>191)&&(d[i]<224)){r[r.length]=String.fromCharCode(((d[i]&31)<<6)|(d[i+1]&63));i+=2;}
else{r[r.length]=String.fromCharCode(((d[i]&15)<<12)|((d[i+1]&63)<<6)|(d[i+2]&63));i+=3;}}
return r.join("");}
function b64arrays(){var b64s='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';b64=new Array();f64=new Array();for(var i=0;i<b64s.length;i++){b64[i]=b64s.charAt(i);f64[b64s.charAt(i)]=i;}}
function b64d2t(d){var r=new Array;var i=0;var dl=d.length;if((dl%3)==1){d[d.length]=0;d[d.length]=0;}
if((dl%3)==2)
d[d.length]=0;while(i<d.length)
{r[r.length]=b64[d[i]>>2];r[r.length]=b64[((d[i]&3)<<4)|(d[i+1]>>4)];r[r.length]=b64[((d[i+1]&15)<<2)|(d[i+2]>>6)];r[r.length]=b64[d[i+2]&63];i+=3;}
if((dl%3)==1)
r[r.length-1]=r[r.length-2]="=";if((dl%3)==2)
r[r.length-1]="=";var t=r.join("");return t;}
function b64t2d(t){var d=new Array;var i=0;t=t.replace(/\n|\r/g,"");t=t.replace(/=/g,"");while(i<t.length)
{d[d.length]=(f64[t.charAt(i)]<<2)|(f64[t.charAt(i+1)]>>4);d[d.length]=(((f64[t.charAt(i+1)]&15)<<4)|(f64[t.charAt(i+2)]>>2));d[d.length]=(((f64[t.charAt(i+2)]&3)<<6)|(f64[t.charAt(i+3)]));i+=4;}
if(t.length%4==2)
d=d.slice(0,d.length-2);if(t.length%4==3)
d=d.slice(0,d.length-1);return d;}
if(typeof(atob)=='undefined'||typeof(btoa)=='undefined')
b64arrays();if(typeof(atob)=='undefined'){atob=function(s){return utf8d2t(b64t2d(s));}}
if(typeof(btoa)=='undefined'){btoa=function(s){return b64d2t(utf8t2d(s));}}
function cnonce(size){var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";var cnonce='';for(var i=0;i<size;i++){cnonce+=tab.charAt(Math.round(Math.random(new Date().getTime())*(tab.length-1)));}
return cnonce;}
function JSJaCJSON(){}
JSJaCJSON.toString=function(obj){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},s={array:function(x){var a=['['],b,f,i,l=x.length,v;for(i=0;i<l;i+=1){v=x[i];f=s[typeof v];if(f){v=f(v);if(typeof v=='string'){if(b){a[a.length]=',';}
a[a.length]=v;b=true;}}}
a[a.length]=']';return a.join('');},'boolean':function(x){return String(x);},'null':function(x){return"null";},number:function(x){return isFinite(x)?String(x):'null';},object:function(x){if(x){if(x instanceof Array){return s.array(x);}
var a=['{'],b,f,i,v;for(i in x){if(x.hasOwnProperty(i)){v=x[i];f=s[typeof v];if(f){v=f(v);if(typeof v=='string'){if(b){a[a.length]=',';}
a.push(s.string(i),':',v);b=true;}}}}
a[a.length]='}';return a.join('');}
return'null';},string:function(x){if(/["\\\x00-\x1f]/.test(x)){x=x.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c;}
c=b.charCodeAt();return'\\u00'+
Math.floor(c/16).toString(16)+
(c%16).toString(16);});}
return'"'+x+'"';}};switch(typeof(obj)){case'object':return s.object(obj);case'array':return s.array(obj);}};JSJaCJSON.parse=function(str){try{return!(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(str.replace(/"(\\.|[^"\\])*"/g,'')))&&eval('('+str+')');}catch(e){return false;}};function XmlHttp(){}
XmlHttp.create=function(){try{if(window.XMLHttpRequest){var req=new XMLHttpRequest();if(req.readyState==null){req.readyState=1;req.addEventListener("load",function(){req.readyState=4;if(typeof req.onreadystatechange=="function")
req.onreadystatechange();},false);}
return req;}
if(window.ActiveXObject){return new ActiveXObject(XmlHttp.getPrefix()+".XmlHttp");}}
catch(ex){}
throw new Error("Your browser does not support XmlHttp objects");};XmlHttp.getPrefix=function(){if(XmlHttp.prefix)
return XmlHttp.prefix;var prefixes=["MSXML2","Microsoft","MSXML","MSXML3"];var o;for(var i=0;i<prefixes.length;i++){try{o=new ActiveXObject(prefixes[i]+".XmlHttp");return XmlHttp.prefix=prefixes[i];}
catch(ex){};}
throw new Error("Could not find an installed XML parser");};function XmlDocument(){}
XmlDocument.create=function(name,ns){name=name||'foo';ns=ns||'';try{var doc;if(document.implementation&&document.implementation.createDocument){doc=document.implementation.createDocument(ns,name,null);if(doc.readyState==null){doc.readyState=1;doc.addEventListener("load",function(){doc.readyState=4;if(typeof doc.onreadystatechange=="function")
doc.onreadystatechange();},false);}}else if(window.ActiveXObject){doc=new ActiveXObject(XmlDocument.getPrefix()+".DomDocument");}
if(!doc.documentElement||doc.documentElement.tagName!=name||(doc.documentElement.namespaceURI&&doc.documentElement.namespaceURI!=ns)){try{if(ns!='')
doc.appendChild(doc.createElement(name)).setAttribute('xmlns',ns);else
doc.appendChild(doc.createElement(name));}catch(dex){doc=document.implementation.createDocument(ns,name,null);if(doc.documentElement==null)
doc.appendChild(doc.createElement(name));if(ns!=''&&doc.documentElement.getAttribute('xmlns')!=ns){doc.documentElement.setAttribute('xmlns',ns);}}}
return doc;}
catch(ex){alert(ex.name+": "+ex.message);}
throw new Error("Your browser does not support XmlDocument objects");};XmlDocument.getPrefix=function(){if(XmlDocument.prefix)
return XmlDocument.prefix;var prefixes=["MSXML2","Microsoft","MSXML","MSXML3"];var o;for(var i=0;i<prefixes.length;i++){try{o=new ActiveXObject(prefixes[i]+".DomDocument");return XmlDocument.prefix=prefixes[i];}
catch(ex){};}
throw new Error("Could not find an installed XML parser");};if(typeof(Document)!='undefined'&&window.DOMParser){Document.prototype.loadXML=function(s){var doc2=(new DOMParser()).parseFromString(s,"text/xml");while(this.hasChildNodes())
this.removeChild(this.lastChild);for(var i=0;i<doc2.childNodes.length;i++){this.appendChild(this.importNode(doc2.childNodes[i],true));}};}
if(window.XMLSerializer&&window.Node&&Node.prototype&&Node.prototype.__defineGetter__){XMLDocument.prototype.__defineGetter__("xml",function(){return(new XMLSerializer()).serializeToString(this);});Document.prototype.__defineGetter__("xml",function(){return(new XMLSerializer()).serializeToString(this);});Node.prototype.__defineGetter__("xml",function(){return(new XMLSerializer()).serializeToString(this);});}
var JSJaCBuilder={buildNode:function(doc,elementName){var element;if(arguments[2])
if(JSJaCBuilder._isStringOrNumber(arguments[2])||(arguments[2]instanceof Array)){element=doc.createElement(elementName);JSJaCBuilder._children(doc,element,arguments[2]);}else{if(arguments[2]['xmlns']){try{element=doc.createElementNS(arguments[2]['xmlns'],elementName);}catch(e){element=doc.createElement(elementName);}}else
element=doc.createElement(elementName);for(attr in arguments[2]){if(arguments[2].hasOwnProperty(attr)){if(attr=='xmlns'&&element.namespaceURI==attr)
continue;element.setAttribute(attr,arguments[2][attr]);}}}
else
element=doc.createElement(elementName);if(arguments[3])
JSJaCBuilder._children(doc,element,arguments[3]);return element;},_text:function(doc,text){return doc.createTextNode(text);},_children:function(doc,element,children){if(typeof children=='object'){for(var i in children){if(children.hasOwnProperty(i)){var e=children[i];if(typeof e=='object'){if(e instanceof Array){var node=JSJaCBuilder.buildNode(doc,e[0],e[1],e[2]);element.appendChild(node);}else{element.appendChild(e);}}else{if(JSJaCBuilder._isStringOrNumber(e)){element.appendChild(JSJaCBuilder._text(doc,e));}}}}}else{if(JSJaCBuilder._isStringOrNumber(children)){element.appendChild(JSJaCBuilder._text(doc,children));}}},_attributes:function(attributes){var attrs=[];for(attribute in attributes)
if(attributes.hasOwnProperty(attribute))
attrs.push(attribute+'="'+attributes[attribute].toString().htmlEnc()+'"');return attrs.join(" ");},_isStringOrNumber:function(param){return(typeof param=='string'||typeof param=='number');}};var NS_DISCO_ITEMS="http://jabber.org/protocol/disco#items";var NS_DISCO_INFO="http://jabber.org/protocol/disco#info";var NS_VCARD="vcard-temp";var NS_AUTH="jabber:iq:auth";var NS_AUTH_ERROR="jabber:iq:auth:error";var NS_REGISTER="jabber:iq:register";var NS_SEARCH="jabber:iq:search";var NS_ROSTER="jabber:iq:roster";var NS_PRIVACY="jabber:iq:privacy";var NS_PRIVATE="jabber:iq:private";var NS_VERSION="jabber:iq:version";var NS_TIME="jabber:iq:time";var NS_LAST="jabber:iq:last";var NS_XDATA="jabber:x:data";var NS_IQDATA="jabber:iq:data";var NS_DELAY="jabber:x:delay";var NS_EXPIRE="jabber:x:expire";var NS_EVENT="jabber:x:event";var NS_XCONFERENCE="jabber:x:conference";var NS_STATS="http://jabber.org/protocol/stats";var NS_MUC="http://jabber.org/protocol/muc";var NS_MUC_USER="http://jabber.org/protocol/muc#user";var NS_MUC_ADMIN="http://jabber.org/protocol/muc#admin";var NS_MUC_OWNER="http://jabber.org/protocol/muc#owner";var NS_PUBSUB="http://jabber.org/protocol/pubsub";var NS_PUBSUB_EVENT="http://jabber.org/protocol/pubsub#event";var NS_PUBSUB_OWNER="http://jabber.org/protocol/pubsub#owner";var NS_PUBSUB_NMI="http://jabber.org/protocol/pubsub#node-meta-info";var NS_COMMANDS="http://jabber.org/protocol/commands";var NS_STREAM="http://etherx.jabber.org/streams";var NS_STANZAS="urn:ietf:params:xml:ns:xmpp-stanzas";var NS_STREAMS="urn:ietf:params:xml:ns:xmpp-streams";var NS_TLS="urn:ietf:params:xml:ns:xmpp-tls";var NS_SASL="urn:ietf:params:xml:ns:xmpp-sasl";var NS_SESSION="urn:ietf:params:xml:ns:xmpp-session";var NS_BIND="urn:ietf:params:xml:ns:xmpp-bind";var NS_FEATURE_IQAUTH="http://jabber.org/features/iq-auth";var NS_FEATURE_IQREGISTER="http://jabber.org/features/iq-register";var NS_FEATURE_COMPRESS="http://jabber.org/features/compress";var NS_COMPRESS="http://jabber.org/protocol/compress";function STANZA_ERROR(code,type,cond){if(window==this)
return new STANZA_ERROR(code,type,cond);this.code=code;this.type=type;this.cond=cond;}
var ERR_BAD_REQUEST=STANZA_ERROR("400","modify","bad-request");var ERR_CONFLICT=STANZA_ERROR("409","cancel","conflict");var ERR_FEATURE_NOT_IMPLEMENTED=STANZA_ERROR("501","cancel","feature-not-implemented");var ERR_FORBIDDEN=STANZA_ERROR("403","auth","forbidden");var ERR_GONE=STANZA_ERROR("302","modify","gone");var ERR_INTERNAL_SERVER_ERROR=STANZA_ERROR("500","wait","internal-server-error");var ERR_ITEM_NOT_FOUND=STANZA_ERROR("404","cancel","item-not-found");var ERR_JID_MALFORMED=STANZA_ERROR("400","modify","jid-malformed");var ERR_NOT_ACCEPTABLE=STANZA_ERROR("406","modify","not-acceptable");var ERR_NOT_ALLOWED=STANZA_ERROR("405","cancel","not-allowed");var ERR_NOT_AUTHORIZED=STANZA_ERROR("401","auth","not-authorized");var ERR_PAYMENT_REQUIRED=STANZA_ERROR("402","auth","payment-required");var ERR_RECIPIENT_UNAVAILABLE=STANZA_ERROR("404","wait","recipient-unavailable");var ERR_REDIRECT=STANZA_ERROR("302","modify","redirect");var ERR_REGISTRATION_REQUIRED=STANZA_ERROR("407","auth","registration-required");var ERR_REMOTE_SERVER_NOT_FOUND=STANZA_ERROR("404","cancel","remote-server-not-found");var ERR_REMOTE_SERVER_TIMEOUT=STANZA_ERROR("504","wait","remote-server-timeout");var ERR_RESOURCE_CONSTRAINT=STANZA_ERROR("500","wait","resource-constraint");var ERR_SERVICE_UNAVAILABLE=STANZA_ERROR("503","cancel","service-unavailable");var ERR_SUBSCRIPTION_REQUIRED=STANZA_ERROR("407","auth","subscription-required");var ERR_UNEXPECTED_REQUEST=STANZA_ERROR("400","wait","unexpected-request");function JSJaCConnection(oArg){if(oArg&&oArg.oDbg&&oArg.oDbg.log)
this.oDbg=oArg.oDbg;else{this.oDbg=new Object();this.oDbg.log=function(){};}
if(oArg&&oArg.httpbase)
this._httpbase=oArg.httpbase;if(oArg&&oArg.allow_plain)
this.allow_plain=oArg.allow_plain;else
this.allow_plain=JSJAC_ALLOW_PLAIN;this._connected=false;this._events=new Array();this._keys=null;this._ID=0;this._inQ=new Array();this._pQueue=new Array();this._regIDs=new Array();this._req=new Array();this._status='intialized';this._errcnt=0;this._inactivity=JSJAC_INACTIVITY;this._sendRawCallbacks=new Array();if(oArg&&oArg.timerval)
this.setPollInterval(oArg.timerval);}
JSJaCConnection.prototype.connect=function(oArg){this._setStatus('connecting');this.domain=oArg.domain||'localhost';this.username=oArg.username;this.resource=oArg.resource;this.pass=oArg.pass;this.register=oArg.register;this.authhost=oArg.authhost||this.domain;this.authtype=oArg.authtype||'sasl';if(oArg.xmllang&&oArg.xmllang!='')
this._xmllang=oArg.xmllang;this.host=oArg.host||this.domain;this.port=oArg.port||5222;if(oArg.secure)
this.secure='true';else
this.secure='false';if(oArg.wait)
this._wait=oArg.wait;this.jid=this.username+'@'+this.domain;this.fulljid=this.jid+'/'+this.resource;this._rid=Math.round(100000.5+(((900000.49999)-(100000.5))*Math.random()));var slot=this._getFreeSlot();this._req[slot]=this._setupRequest(true);var reqstr=this._getInitialRequestString();this.oDbg.log(reqstr,4);this._req[slot].r.onreadystatechange=JSJaC.bind(function(){if(this._req[slot].r.readyState==4){this.oDbg.log("async recv: "+this._req[slot].r.responseText,4);this._handleInitialResponse(slot);}},this);if(typeof(this._req[slot].r.onerror)!='undefined'){this._req[slot].r.onerror=JSJaC.bind(function(e){this.oDbg.log('XmlHttpRequest error',1);return false;},this);}
this._req[slot].r.send(reqstr);};JSJaCConnection.prototype.connected=function(){return this._connected;};JSJaCConnection.prototype.disconnect=function(){this._setStatus('disconnecting');if(!this.connected())
return;this._connected=false;clearInterval(this._interval);clearInterval(this._inQto);if(this._timeout)
clearTimeout(this._timeout);var slot=this._getFreeSlot();this._req[slot]=this._setupRequest(false);request=this._getRequestString(false,true);this.oDbg.log("Disconnecting: "+request,4);this._req[slot].r.send(request);try{JSJaCCookie.read('JSJaC_State').erase();}catch(e){}
this.oDbg.log("Disconnected: "+this._req[slot].r.responseText,2);this._handleEvent('ondisconnect');};JSJaCConnection.prototype.getPollInterval=function(){return this._timerval;};JSJaCConnection.prototype.registerHandler=function(event){event=event.toLowerCase();var eArg={handler:arguments[arguments.length-1],childName:'*',childNS:'*',type:'*'};if(arguments.length>2)
eArg.childName=arguments[1];if(arguments.length>3)
eArg.childNS=arguments[2];if(arguments.length>4)
eArg.type=arguments[3];if(!this._events[event])
this._events[event]=new Array(eArg);else
this._events[event]=this._events[event].concat(eArg);this._events[event]=this._events[event].sort(function(a,b){var aRank=0;var bRank=0;with(a){if(type=='*')
aRank++;if(childNS=='*')
aRank++;if(childName=='*')
aRank++;}
with(b){if(type=='*')
bRank++;if(childNS=='*')
bRank++;if(childName=='*')
bRank++;}
if(aRank>bRank)
return 1;if(aRank<bRank)
return-1;return 0;});this.oDbg.log("registered handler for event '"+event+"'",2);};JSJaCConnection.prototype.unregisterHandler=function(event,handler){event=event.toLowerCase();if(!this._events[event])
return;var arr=this._events[event],res=new Array();for(var i=0;i<arr.length;i++)
if(arr[i]!=handler)
res.push(arr[i]);if(arr.length!=res.length){this._events[event]=res;this.oDbg.log("unregistered handler for event '"+event+"'",2);}};JSJaCConnection.prototype.registerIQGet=function(childName,childNS,handler){this.registerHandler('iq',childName,childNS,'get',handler);};JSJaCConnection.prototype.registerIQSet=function(childName,childNS,handler){this.registerHandler('iq',childName,childNS,'set',handler);};JSJaCConnection.prototype.resume=function(){try{this._setStatus('resuming');var s=unescape(JSJaCCookie.read('JSJaC_State').getValue());this.oDbg.log('read cookie: '+s,2);var o=JSJaCJSON.parse(s);for(var i in o)
if(o.hasOwnProperty(i))
this[i]=o[i];if(this._keys){this._keys2=new JSJaCKeys();var u=this._keys2._getSuspendVars();for(var i=0;i<u.length;i++)
this._keys2[u[i]]=this._keys[u[i]];this._keys=this._keys2;}
try{JSJaCCookie.read('JSJaC_State').erase();}catch(e){}
if(this._connected){this._handleEvent('onresume');setTimeout(JSJaC.bind(this._resume,this),this.getPollInterval());this._interval=setInterval(JSJaC.bind(this._checkQueue,this),JSJAC_CHECKQUEUEINTERVAL);this._inQto=setInterval(JSJaC.bind(this._checkInQ,this),JSJAC_CHECKINQUEUEINTERVAL);}
return(this._connected===true);}catch(e){if(e.message)
this.oDbg.log("Resume failed: "+e.message,1);else
this.oDbg.log("Resume failed: "+e,1);return false;}};JSJaCConnection.prototype.send=function(packet,cb,arg){if(!packet||!packet.pType){this.oDbg.log("no packet: "+packet,1);return false;}
if(!this.connected())
return false;if(cb){if(!packet.getID())
packet.setID('JSJaCID_'+this._ID++);this._registerPID(packet.getID(),cb,arg);}
try{this._handleEvent(packet.pType()+'_out',packet);this._handleEvent("packet_out",packet);this._pQueue=this._pQueue.concat(packet.xml());}catch(e){this.oDbg.log(e.toString(),1);return false;}
return true;};JSJaCConnection.prototype.sendIQ=function(iq,handlers,arg){if(!iq||iq.pType()!='iq'){return false;}
handlers=handlers||{};var error_handler=handlers.error_handler||function(aIq){this.oDbg.log(iq.xml(),1);};var result_handler=handlers.result_handler||function(aIq){this.oDbg.log(aIq.xml(),2);};var default_handler=handlers.default_handler||function(aIq){this.oDbg.log(aIq.xml(),2);};var iqHandler=function(aIq,arg){switch(aIq.getType()){case'error':error_handler(aIq);break;case'result':result_handler(aIq,arg);break;default:default_handler(aIq,arg);}};return this.send(iq,iqHandler,arg);};JSJaCConnection.prototype.setPollInterval=function(timerval){if(timerval&&!isNaN(timerval))
this._timerval=timerval;return this._timerval;};JSJaCConnection.prototype.status=function(){return this._status;};JSJaCConnection.prototype.suspend=function(){clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._suspend();var u=('_connected,_keys,_ID,_inQ,_pQueue,_regIDs,_errcnt,_inactivity,domain,username,resource,jid,fulljid,_sid,_httpbase,_timerval,_is_polling').split(',');u=u.concat(this._getSuspendVars());var s=new Object();for(var i=0;i<u.length;i++){if(!this[u[i]])continue;if(this[u[i]]._getSuspendVars){var uo=this[u[i]]._getSuspendVars();var o=new Object();for(var j=0;j<uo.length;j++)
o[uo[j]]=this[u[i]][uo[j]];}else
var o=this[u[i]];s[u[i]]=o;}
var c=new JSJaCCookie('JSJaC_State',escape(JSJaCJSON.toString(s)),this._inactivity);this.oDbg.log("writing cookie: "+unescape(c.value)+"\n(length:"+
unescape(c.value).length+")",2);c.write();try{var c2=JSJaCCookie.read('JSJaC_State');if(c.value!=c2.value){this.oDbg.log("Suspend failed writing cookie.\nRead: "+
unescape(JSJaCCookie.read('JSJaC_State')),1);c.erase();}
this._connected=false;this._setStatus('suspending');}catch(e){this.oDbg.log("Failed reading cookie 'JSJaC_State': "+e.message);}};JSJaCConnection.prototype._abort=function(){clearTimeout(this._timeout);clearInterval(this._inQto);clearInterval(this._interval);this._connected=false;this._setStatus('aborted');this.oDbg.log("Disconnected.",1);this._handleEvent('ondisconnect');this._handleEvent('onerror',JSJaCError('500','cancel','service-unavailable'));};JSJaCConnection.prototype._checkInQ=function(){for(var i=0;i<this._inQ.length&&i<10;i++){var item=this._inQ[0];this._inQ=this._inQ.slice(1,this._inQ.length);var packet=JSJaCPacket.wrapNode(item);if(!packet)
return;this._handleEvent("packet_in",packet);if(packet.pType&&!this._handlePID(packet)){this._handleEvent(packet.pType()+'_in',packet);this._handleEvent(packet.pType(),packet);}}};JSJaCConnection.prototype._checkQueue=function(){if(this._pQueue.length!=0)
this._process();return true;};JSJaCConnection.prototype._doAuth=function(){if(this.has_sasl&&this.authtype=='nonsasl')
this.oDbg.log("Warning: SASL present but not used",1);if(!this._doSASLAuth()&&!this._doLegacyAuth()){this.oDbg.log("Auth failed for authtype "+this.authtype,1);this.disconnect();return false;}
return true;};JSJaCConnection.prototype._doInBandReg=function(){if(this.authtype=='saslanon'||this.authtype=='anonymous')
return;var iq=new JSJaCIQ();iq.setType('set');iq.setID('reg1');iq.appendNode("query",{xmlns:"jabber:iq:register"},[["username",this.username],["password",this.pass]]);this.send(iq,this._doInBandRegDone);};JSJaCConnection.prototype._doInBandRegDone=function(iq){if(iq&&iq.getType()=='error'){this.oDbg.log("registration failed for "+this.username,0);this._handleEvent('onerror',iq.getChild('error'));return;}
this.oDbg.log(this.username+" registered succesfully",0);this._doAuth();};JSJaCConnection.prototype._doLegacyAuth=function(){if(this.authtype!='nonsasl'&&this.authtype!='anonymous')
return false;var iq=new JSJaCIQ();iq.setIQ(this.server,'get','auth1');iq.appendNode('query',{xmlns:'jabber:iq:auth'},[['username',this.username]]);this.send(iq,this._doLegacyAuth2);return true;};JSJaCConnection.prototype._doLegacyAuth2=function(iq){if(!iq||iq.getType()!='result'){if(iq&&iq.getType()=='error')
this._handleEvent('onerror',iq.getChild('error'));this.disconnect();return;}
var use_digest=(iq.getChild('digest')!=null);var iq=new JSJaCIQ();iq.setIQ(this.server,'set','auth2');query=iq.appendNode('query',{xmlns:'jabber:iq:auth'},[['username',this.username],['resource',this.resource]]);if(use_digest){query.appendChild(iq.buildNode('digest',hex_sha1(this.streamid+this.pass)));}else if(this.allow_plain){query.appendChild(iq.buildNode('password',this.pass));}else{this.oDbg.log("no valid login mechanism found",1);this.disconnect();return false;}
this.send(iq,this._doLegacyAuthDone);};JSJaCConnection.prototype._doLegacyAuthDone=function(iq){if(iq.getType()!='result'){if(iq.getType()=='error')
this._handleEvent('onerror',iq.getChild('error'));this.disconnect();}else
this._handleEvent('onconnect');};JSJaCConnection.prototype._doSASLAuth=function(){if(this.authtype=='nonsasl'||this.authtype=='anonymous')
return false;if(this.authtype=='saslanon'){if(this.mechs['ANONYMOUS']){this.oDbg.log("SASL using mechanism 'ANONYMOUS'",2);return this._sendRaw("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='ANONYMOUS'/>",this._doSASLAuthDone);}
this.oDbg.log("SASL ANONYMOUS requested but not supported",1);}else{if(this.mechs['DIGEST-MD5']){this.oDbg.log("SASL using mechanism 'DIGEST-MD5'",2);return this._sendRaw("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='DIGEST-MD5'/>",this._doSASLAuthDigestMd5S1);}else if(this.allow_plain&&this.mechs['PLAIN']){this.oDbg.log("SASL using mechanism 'PLAIN'",2);var authStr=this.username+'@'+
this.domain+String.fromCharCode(0)+
this.username+String.fromCharCode(0)+
this.pass;this.oDbg.log("authenticating with '"+authStr+"'",2);authStr=btoa(authStr);return this._sendRaw("<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>"+authStr+"</auth>",this._doSASLAuthDone);}
this.oDbg.log("No SASL mechanism applied",1);this.authtype='nonsasl';}
return false;};JSJaCConnection.prototype._doSASLAuthDigestMd5S1=function(el){if(el.nodeName!="challenge"){this.oDbg.log("challenge missing",1);this._handleEvent('onerror',JSJaCError('401','auth','not-authorized'));this.disconnect();}else{var challenge=atob(el.firstChild.nodeValue);this.oDbg.log("got challenge: "+challenge,2);this._nonce=challenge.substring(challenge.indexOf("nonce=")+7);this._nonce=this._nonce.substring(0,this._nonce.indexOf("\""));this.oDbg.log("nonce: "+this._nonce,2);if(this._nonce==''||this._nonce.indexOf('\"')!=-1){this.oDbg.log("nonce not valid, aborting",1);this.disconnect();return;}
this._digest_uri="xmpp/";this._digest_uri+=this.domain;this._cnonce=cnonce(14);this._nc='00000001';var A1=str_md5(this.username+':'+this.domain+':'+this.pass)+':'+this._nonce+':'+this._cnonce;var A2='AUTHENTICATE:'+this._digest_uri;var response=hex_md5(hex_md5(A1)+':'+this._nonce+':'+this._nc+':'+
this._cnonce+':auth:'+hex_md5(A2));var rPlain='username="'+this.username+'",realm="'+this.domain+'",nonce="'+this._nonce+'",cnonce="'+this._cnonce+'",nc="'+this._nc+'",qop=auth,digest-uri="'+this._digest_uri+'",response="'+response+'",charset=utf-8';this.oDbg.log("response: "+rPlain,2);this._sendRaw("<response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>"+
binb2b64(str2binb(rPlain))+"</response>",this._doSASLAuthDigestMd5S2);}};JSJaCConnection.prototype._doSASLAuthDigestMd5S2=function(el){if(el.nodeName=='failure'){if(el.xml)
this.oDbg.log("auth error: "+el.xml,1);else
this.oDbg.log("auth error",1);this._handleEvent('onerror',JSJaCError('401','auth','not-authorized'));this.disconnect();return;}
var response=atob(el.firstChild.nodeValue);this.oDbg.log("response: "+response,2);var rspauth=response.substring(response.indexOf("rspauth=")+8);this.oDbg.log("rspauth: "+rspauth,2);var A1=str_md5(this.username+':'+this.domain+':'+this.pass)+':'+this._nonce+':'+this._cnonce;var A2=':'+this._digest_uri;var rsptest=hex_md5(hex_md5(A1)+':'+this._nonce+':'+this._nc+':'+
this._cnonce+':auth:'+hex_md5(A2));this.oDbg.log("rsptest: "+rsptest,2);if(rsptest!=rspauth){this.oDbg.log("SASL Digest-MD5: server repsonse with wrong rspauth",1);this.disconnect();return;}
if(el.nodeName=='success')
this._reInitStream(this.domain,this._doStreamBind);else
this._sendRaw("<response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>",this._doSASLAuthDone);};JSJaCConnection.prototype._doSASLAuthDone=function(el){if(el.nodeName!='success'){this.oDbg.log("auth failed",1);this._handleEvent('onerror',JSJaCError('401','auth','not-authorized'));this.disconnect();}else
this._reInitStream(this.domain,this._doStreamBind);};JSJaCConnection.prototype._doStreamBind=function(){var iq=new JSJaCIQ();iq.setIQ(this.domain,'set','bind_1');iq.appendNode("bind",{xmlns:"urn:ietf:params:xml:ns:xmpp-bind"},[["resource",this.resource]]);this.oDbg.log(iq.xml());this.send(iq,this._doXMPPSess);};JSJaCConnection.prototype._doXMPPSess=function(iq){if(iq.getType()!='result'||iq.getType()=='error'){this.disconnect();if(iq.getType()=='error')
this._handleEvent('onerror',iq.getChild('error'));return;}
this.fulljid=iq.getChildVal("jid");this.jid=this.fulljid.substring(0,this.fulljid.lastIndexOf('/'));iq=new JSJaCIQ();iq.setIQ(this.domain,'set','sess_1');iq.appendNode("session",{xmlns:"urn:ietf:params:xml:ns:xmpp-session"},[]);this.oDbg.log(iq.xml());this.send(iq,this._doXMPPSessDone);};JSJaCConnection.prototype._doXMPPSessDone=function(iq){if(iq.getType()!='result'||iq.getType()=='error'){this.disconnect();if(iq.getType()=='error')
this._handleEvent('onerror',iq.getChild('error'));return;}else
this._handleEvent('onconnect');};JSJaCConnection.prototype._handleEvent=function(event,arg){event=event.toLowerCase();this.oDbg.log("incoming event '"+event+"'",3);if(!this._events[event])
return;this.oDbg.log("handling event '"+event+"'",2);for(var i=0;i<this._events[event].length;i++){var aEvent=this._events[event][i];if(aEvent.handler){try{if(arg){if(arg.pType){if((!arg.getNode().hasChildNodes()&&aEvent.childName!='*')||(arg.getNode().hasChildNodes()&&!arg.getChild(aEvent.childName,aEvent.childNS)))
continue;if(aEvent.type!='*'&&arg.getType()!=aEvent.type)
continue;this.oDbg.log(aEvent.childName+"/"+aEvent.childNS+"/"+aEvent.type+" => match for handler "+aEvent.handler,3);}
if(aEvent.handler.call(this,arg))
break;}
else
if(aEvent.handler.call(this))
break;}catch(e){this.oDbg.log(aEvent.handler+"\n>>>"+e.name+": "+e.message,1);}}}};JSJaCConnection.prototype._handlePID=function(aJSJaCPacket){if(!aJSJaCPacket.getID())
return false;for(var i in this._regIDs){if(this._regIDs.hasOwnProperty(i)&&this._regIDs[i]&&i==aJSJaCPacket.getID()){var pID=aJSJaCPacket.getID();this.oDbg.log("handling "+pID,3);try{if(this._regIDs[i].cb.call(this,aJSJaCPacket,this._regIDs[i].arg)===false){return false;}else{this._unregisterPID(pID);return true;}}catch(e){this.oDbg.log(e.name+": "+e.message);this._unregisterPID(pID);return true;}}}
return false;};JSJaCConnection.prototype._handleResponse=function(req){var rootEl=this._parseResponse(req);if(!rootEl)
return;for(var i=0;i<rootEl.childNodes.length;i++){if(this._sendRawCallbacks.length){var cb=this._sendRawCallbacks[0];this._sendRawCallbacks=this._sendRawCallbacks.slice(1,this._sendRawCallbacks.length);cb.fn.call(this,rootEl.childNodes.item(i),cb.arg);continue;}
this._inQ=this._inQ.concat(rootEl.childNodes.item(i));}};JSJaCConnection.prototype._parseStreamFeatures=function(doc){if(!doc){this.oDbg.log("nothing to parse ... aborting",1);return false;}
var errorTag;if(doc.getElementsByTagNameNS)
errorTag=doc.getElementsByTagNameNS("http://etherx.jabber.org/streams","error").item(0);else{var errors=doc.getElementsByTagName("error");for(var i=0;i<errors.length;i++)
if(errors.item(i).namespaceURI=="http://etherx.jabber.org/streams"){errorTag=errors.item(i);break;}}
if(errorTag){this._setStatus("internal_server_error");clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._handleEvent('onerror',JSJaCError('503','cancel','session-terminate'));this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent('ondisconnect');return false;}
this.mechs=new Object();var lMec1=doc.getElementsByTagName("mechanisms");this.has_sasl=false;for(var i=0;i<lMec1.length;i++)
if(lMec1.item(i).getAttribute("xmlns")=="urn:ietf:params:xml:ns:xmpp-sasl"){this.has_sasl=true;var lMec2=lMec1.item(i).getElementsByTagName("mechanism");for(var j=0;j<lMec2.length;j++)
this.mechs[lMec2.item(j).firstChild.nodeValue]=true;break;}
if(this.has_sasl)
this.oDbg.log("SASL detected",2);else{this.authtype='nonsasl';this.oDbg.log("No support for SASL detected",2);}
return true;};JSJaCConnection.prototype._process=function(timerval){if(!this.connected()){this.oDbg.log("Connection lost ...",1);if(this._interval)
clearInterval(this._interval);return;}
this.setPollInterval(timerval);if(this._timeout)
clearTimeout(this._timeout);var slot=this._getFreeSlot();if(slot<0)
return;if(typeof(this._req[slot])!='undefined'&&typeof(this._req[slot].r)!='undefined'&&this._req[slot].r.readyState!=4){this.oDbg.log("Slot "+slot+" is not ready");return;}
if(!this.isPolling()&&this._pQueue.length==0&&this._req[(slot+1)%2]&&this._req[(slot+1)%2].r.readyState!=4){this.oDbg.log("all slots busy, standby ...",2);return;}
if(!this.isPolling())
this.oDbg.log("Found working slot at "+slot,2);this._req[slot]=this._setupRequest(true);this._req[slot].r.onreadystatechange=JSJaC.bind(function(){if(!this.connected())
return;if(this._req[slot].r.readyState==4){this._setStatus('processing');this.oDbg.log("async recv: "+this._req[slot].r.responseText,4);this._handleResponse(this._req[slot]);if(this._pQueue.length){this._timeout=setTimeout(JSJaC.bind(this._process,this),100);}else{this.oDbg.log("scheduling next poll in "+this.getPollInterval()+" msec",4);this._timeout=setTimeout(JSJaC.bind(this._process,this),this.getPollInterval());}}},this);try{this._req[slot].r.onerror=JSJaC.bind(function(){if(!this.connected())
return;this._errcnt++;this.oDbg.log('XmlHttpRequest error ('+this._errcnt+')',1);if(this._errcnt>JSJAC_ERR_COUNT){this._abort();return false;}
this._setStatus('onerror_fallback');setTimeout(JSJaC.bind(this._resume,this),this.getPollInterval());return false;},this);}catch(e){}
var reqstr=this._getRequestString();if(typeof(this._rid)!='undefined')
this._req[slot].rid=this._rid;this.oDbg.log("sending: "+reqstr,4);this._req[slot].r.send(reqstr);};JSJaCConnection.prototype._registerPID=function(pID,cb,arg){if(!pID||!cb)
return false;this._regIDs[pID]=new Object();this._regIDs[pID].cb=cb;if(arg)
this._regIDs[pID].arg=arg;this.oDbg.log("registered "+pID,3);return true;};JSJaCConnection.prototype._sendEmpty=function JSJaCSendEmpty(){var slot=this._getFreeSlot();this._req[slot]=this._setupRequest(true);this._req[slot].r.onreadystatechange=JSJaC.bind(function(){if(this._req[slot].r.readyState==4){this.oDbg.log("async recv: "+this._req[slot].r.responseText,4);this._getStreamID(slot);}},this);if(typeof(this._req[slot].r.onerror)!='undefined'){this._req[slot].r.onerror=JSJaC.bind(function(e){this.oDbg.log('XmlHttpRequest error',1);return false;},this);}
var reqstr=this._getRequestString();this.oDbg.log("sending: "+reqstr,4);this._req[slot].r.send(reqstr);};JSJaCConnection.prototype._sendRaw=function(xml,cb,arg){if(cb)
this._sendRawCallbacks.push({fn:cb,arg:arg});this._pQueue.push(xml);this._process();return true;};JSJaCConnection.prototype._setStatus=function(status){if(!status||status=='')
return;if(status!=this._status){this._status=status;this._handleEvent('onstatuschanged',status);this._handleEvent('status_changed',status);}};JSJaCConnection.prototype._unregisterPID=function(pID){if(!this._regIDs[pID])
return false;this._regIDs[pID]=null;this.oDbg.log("unregistered "+pID,3);return true;};function JSJaCConsoleLogger(level){this.level=level||4;this.start=function(){};this.log=function(msg,level){level=level||0;if(level>this.level)
return;if(typeof(console)=='undefined')
return;try{switch(level){case 0:console.warn(msg);break;case 1:console.error(msg);break;case 2:console.info(msg);break;case 4:console.debug(msg);break;default:console.log(msg);break;}}catch(e){try{console.log(msg)}catch(e){}}};this.setLevel=function(level){this.level=level;return this;};this.getLevel=function(){return this.level;};}
function JSJaCCookie(name,value,secs)
{if(window==this)
return new JSJaCCookie(name,value,secs);this.name=name;this.value=value;this.expires=secs;this.write=function(){if(this.secs){var date=new Date();date.setTime(date.getTime()+(this.secs*1000));var expires="; expires="+date.toGMTString();}else
var expires="";document.cookie=this.getName()+"="+this.getValue()+expires+"; path=/";};this.erase=function(){var c=new JSJaCCookie(this.getName(),"",-1);c.write();};this.getName=function(){return this.name;};this.setName=function(name){this.name=name;return this;};this.getValue=function(){return this.value;};this.setValue=function(value){this.value=value;return this;};}
JSJaCCookie.read=function(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return new JSJaCCookie(name,c.substring(nameEQ.length,c.length));}
throw new JSJaCCookieException("Cookie not found");};JSJaCCookie.get=function(name){return JSJaCCookie.read(name).getValue();};JSJaCCookie.remove=function(name){JSJaCCookie.read(name).erase();};function JSJaCCookieException(msg){this.message=msg;this.name="CookieException";}
function JSJaCError(code,type,condition){var xmldoc=XmlDocument.create("error","jsjac");xmldoc.documentElement.setAttribute('code',code);xmldoc.documentElement.setAttribute('type',type);xmldoc.documentElement.appendChild(xmldoc.createElement(condition)).setAttribute('xmlns','urn:ietf:params:xml:ns:xmpp-stanzas');return xmldoc.documentElement;}
var JSJACJID_FORBIDDEN=['"',' ','&','\'','/',':','<','>','@'];function JSJaCJID(jid){this._node='';this._domain='';this._resource='';if(typeof(jid)=='string'){if(jid.indexOf('@')!=-1){this.setNode(jid.substring(0,jid.indexOf('@')));jid=jid.substring(jid.indexOf('@')+1);}
if(jid.indexOf('/')!=-1){this.setResource(jid.substring(jid.indexOf('/')+1));jid=jid.substring(0,jid.indexOf('/'));}
this.setDomain(jid);}else{this.setNode(jid.node);this.setDomain(jid.domain);this.setResource(jid.resource);}}
JSJaCJID.prototype.getNode=function(){return this._node;};JSJaCJID.prototype.getDomain=function(){return this._domain;};JSJaCJID.prototype.getResource=function(){return this._resource;};JSJaCJID.prototype.setNode=function(node){JSJaCJID._checkNodeName(node);this._node=node||'';return this;};JSJaCJID.prototype.setDomain=function(domain){if(!domain||domain=='')
throw new JSJaCJIDInvalidException("domain name missing");JSJaCJID._checkNodeName(domain);this._domain=domain;return this;};JSJaCJID.prototype.setResource=function(resource){this._resource=resource||'';return this;};JSJaCJID.prototype.toString=function(){var jid='';if(this.getNode()&&this.getNode()!='')
jid=this.getNode()+'@';jid+=this.getDomain();if(this.getResource()&&this.getResource()!="")
jid+='/'+this.getResource();return jid;};JSJaCJID.prototype.removeResource=function(){return this.setResource();};JSJaCJID.prototype.clone=function(){return new JSJaCJID(this.toString());};JSJaCJID.prototype.isEntity=function(jid){if(typeof jid=='string')
jid=(new JSJaCJID(jid));jid.removeResource();return(this.clone().removeResource().toString()===jid.toString());};JSJaCJID._checkNodeName=function(nodeprep){if(!nodeprep||nodeprep=='')
return;for(var i=0;i<JSJACJID_FORBIDDEN.length;i++){if(nodeprep.indexOf(JSJACJID_FORBIDDEN[i])!=-1){throw new JSJaCJIDInvalidException("forbidden char in nodename: "+JSJACJID_FORBIDDEN[i]);}}};function JSJaCJIDInvalidException(message){this.message=message;this.name="JSJaCJIDInvalidException";}
function JSJaCKeys(func,oDbg){var seed=Math.random();this._k=new Array();this._k[0]=seed.toString();if(oDbg)
this.oDbg=oDbg;else{this.oDbg={};this.oDbg.log=function(){};}
if(func){for(var i=1;i<JSJAC_NKEYS;i++){this._k[i]=func(this._k[i-1]);oDbg.log(i+": "+this._k[i],4);}}
this._indexAt=JSJAC_NKEYS-1;this.getKey=function(){return this._k[this._indexAt--];};this.lastKey=function(){return(this._indexAt==0);};this.size=function(){return this._k.length;};this._getSuspendVars=function(){return('_k,_indexAt').split(',');}}
var JSJACPACKET_USE_XMLNS=true;function JSJaCPacket(name){this.name=name;if(typeof(JSJACPACKET_USE_XMLNS)!='undefined'&&JSJACPACKET_USE_XMLNS)
this.doc=XmlDocument.create(name,'jabber:client');else
this.doc=XmlDocument.create(name,'');}
JSJaCPacket.prototype.pType=function(){return this.name;};JSJaCPacket.prototype.getDoc=function(){return this.doc;};JSJaCPacket.prototype.getNode=function(){if(this.getDoc()&&this.getDoc().documentElement)
return this.getDoc().documentElement;else
return null;};JSJaCPacket.prototype.setTo=function(to){if(!to||to=='')
this.getNode().removeAttribute('to');else if(typeof(to)=='string')
this.getNode().setAttribute('to',to);else
this.getNode().setAttribute('to',to.toString());return this;};JSJaCPacket.prototype.setFrom=function(from){if(!from||from=='')
this.getNode().removeAttribute('from');else if(typeof(from)=='string')
this.getNode().setAttribute('from',from);else
this.getNode().setAttribute('from',from.toString());return this;};JSJaCPacket.prototype.setID=function(id){if(!id||id=='')
this.getNode().removeAttribute('id');else
this.getNode().setAttribute('id',id);return this;};JSJaCPacket.prototype.setType=function(type){if(!type||type=='')
this.getNode().removeAttribute('type');else
this.getNode().setAttribute('type',type);return this;};JSJaCPacket.prototype.setXMLLang=function(xmllang){if(!xmllang||xmllang=='')
this.getNode().removeAttribute('xml:lang');else
this.getNode().setAttribute('xml:lang',xmllang);return this;};JSJaCPacket.prototype.getTo=function(){return this.getNode().getAttribute('to');};JSJaCPacket.prototype.getFrom=function(){return this.getNode().getAttribute('from');};JSJaCPacket.prototype.getToJID=function(){return new JSJaCJID(this.getTo());};JSJaCPacket.prototype.getFromJID=function(){return new JSJaCJID(this.getFrom());};JSJaCPacket.prototype.getID=function(){return this.getNode().getAttribute('id');};JSJaCPacket.prototype.getType=function(){return this.getNode().getAttribute('type');};JSJaCPacket.prototype.getXMLLang=function(){return this.getNode().getAttribute('xml:lang');};JSJaCPacket.prototype.getXMLNS=function(){return this.getNode().namespaceURI;};JSJaCPacket.prototype.getChild=function(name,ns){if(!this.getNode()){return null;}
name=name||'*';ns=ns||'*';if(this.getNode().getElementsByTagNameNS){return this.getNode().getElementsByTagNameNS(ns,name).item(0);}
var nodes=this.getNode().getElementsByTagName(name);if(ns!='*'){for(var i=0;i<nodes.length;i++){if(nodes.item(i).namespaceURI==ns){return nodes.item(i);}}}else{return nodes.item(0);}
return null;}
JSJaCPacket.prototype.getChildVal=function(name,ns){var node=this.getChild(name,ns);if(node&&node.firstChild){return node.firstChild.nodeValue;}else{return'';}};JSJaCPacket.prototype.clone=function(){return JSJaCPacket.wrapNode(this.getNode());};JSJaCPacket.prototype.isError=function(){return(this.getType()=='error');};JSJaCPacket.prototype.errorReply=function(stanza_error){var rPacket=this.clone();rPacket.setTo(this.getFrom());rPacket.setFrom();rPacket.setType('error');rPacket.appendNode('error',{code:stanza_error.code,type:stanza_error.type},[[stanza_error.cond]]);return rPacket;};JSJaCPacket.prototype.xml=function(){if(this.getDoc().xml)
return this.getDoc().xml;var xml=(new XMLSerializer()).serializeToString(this.getNode());if(typeof(xml)!='undefined')
return xml;return(new XMLSerializer()).serializeToString(this.doc);};JSJaCPacket.prototype._getAttribute=function(attr){return this.getNode().getAttribute(attr);};JSJaCPacket.prototype._replaceNode=function(aNode){for(var i=0;i<aNode.attributes.length;i++)
if(aNode.attributes.item(i).nodeName!='xmlns')
this.getNode().setAttribute(aNode.attributes.item(i).nodeName,aNode.attributes.item(i).nodeValue);for(var i=0;i<aNode.childNodes.length;i++)
if(this.getDoc().importNode)
this.getNode().appendChild(this.getDoc().importNode(aNode.childNodes.item(i),true));else
this.getNode().appendChild(aNode.childNodes.item(i).cloneNode(true));};JSJaCPacket.prototype._setChildNode=function(nodeName,nodeValue){var aNode=this.getChild(nodeName);var tNode=this.getDoc().createTextNode(nodeValue);if(aNode)
try{aNode.replaceChild(tNode,aNode.firstChild);}catch(e){}
else{aNode=this.getNode().appendChild(this.getDoc().createElement(nodeName));aNode.appendChild(tNode);}
return aNode;};JSJaCPacket.prototype.buildNode=function(elementName){return JSJaCBuilder.buildNode(this.getDoc(),elementName,arguments[1],arguments[2]);};JSJaCPacket.prototype.appendNode=function(element){if(typeof element=='object'){return this.getNode().appendChild(element)}else{return this.getNode().appendChild(this.buildNode(element,arguments[1],arguments[2]));}};function JSJaCPresence(){this.base=JSJaCPacket;this.base('presence');}
JSJaCPresence.prototype=new JSJaCPacket;JSJaCPresence.prototype.setStatus=function(status){this._setChildNode("status",status);return this;};JSJaCPresence.prototype.setShow=function(show){if(show=='chat'||show=='away'||show=='xa'||show=='dnd')
this._setChildNode("show",show);return this;};JSJaCPresence.prototype.setPriority=function(prio){this._setChildNode("priority",prio);return this;};JSJaCPresence.prototype.setPresence=function(show,status,prio){if(show)
this.setShow(show);if(status)
this.setStatus(status);if(prio)
this.setPriority(prio);return this;};JSJaCPresence.prototype.getStatus=function(){return this.getChildVal('status');};JSJaCPresence.prototype.getShow=function(){return this.getChildVal('show');};JSJaCPresence.prototype.getPriority=function(){return this.getChildVal('priority');};function JSJaCIQ(){this.base=JSJaCPacket;this.base('iq');}
JSJaCIQ.prototype=new JSJaCPacket;JSJaCIQ.prototype.setIQ=function(to,type,id){if(to)
this.setTo(to);if(type)
this.setType(type);if(id)
this.setID(id);return this;};JSJaCIQ.prototype.setQuery=function(xmlns){var query;try{query=this.getDoc().createElementNS(xmlns,'query');}catch(e){query=this.getDoc().createElement('query');}
if(query&&query.getAttribute('xmlns')!=xmlns)
query.setAttribute('xmlns',xmlns);this.getNode().appendChild(query);return query;};JSJaCIQ.prototype.getQuery=function(){return this.getNode().getElementsByTagName('query').item(0);};JSJaCIQ.prototype.getQueryXMLNS=function(){if(this.getQuery())
return this.getQuery().namespaceURI;else
return null;};JSJaCIQ.prototype.reply=function(payload){var rIQ=this.clone();rIQ.setTo(this.getFrom());rIQ.setType('result');if(payload){if(typeof payload=='string')
rIQ.getChild.appendChild(rIQ.getDoc().loadXML(payload));else if(payload.constructor==Array){var node=rIQ.getChild();for(var i=0;i<payload.length;i++)
if(typeof payload[i]=='string')
node.appendChild(rIQ.getDoc().loadXML(payload[i]));else if(typeof payload[i]=='object')
node.appendChild(payload[i]);}
else if(typeof payload=='object')
rIQ.getChild().appendChild(payload);}
return rIQ;};function JSJaCMessage(){this.base=JSJaCPacket;this.base('message');}
JSJaCMessage.prototype=new JSJaCPacket;JSJaCMessage.prototype.setBody=function(body){this._setChildNode("body",body);return this;};JSJaCMessage.prototype.setSubject=function(subject){this._setChildNode("subject",subject);return this;};JSJaCMessage.prototype.setThread=function(thread){this._setChildNode("thread",thread);return this;};JSJaCMessage.prototype.getThread=function(){return this.getChildVal('thread');};JSJaCMessage.prototype.getBody=function(){return this.getChildVal('body');};JSJaCMessage.prototype.getSubject=function(){return this.getChildVal('subject')};JSJaCPacket.wrapNode=function(node){var aNode;switch(node.nodeName.toLowerCase()){case'presence':aNode=new JSJaCPresence();break;case'message':aNode=new JSJaCMessage();break;case'iq':aNode=new JSJaCIQ();break;default:return null;}
aNode._replaceNode(node);return aNode;};function JSJaCHttpBindingConnection(oArg){this.base=JSJaCConnection;this.base(oArg);this._hold=JSJACHBC_MAX_HOLD;this._inactivity=0;this._last_requests=new Object();this._last_rid=0;this._min_polling=0;this._pause=0;this._wait=JSJACHBC_MAX_WAIT;}
JSJaCHttpBindingConnection.prototype=new JSJaCConnection();JSJaCHttpBindingConnection.prototype.inherit=function(oArg){this.domain=oArg.domain||'localhost';this.username=oArg.username;this.resource=oArg.resource;this._sid=oArg.sid;this._rid=oArg.rid;this._min_polling=oArg.polling;this._inactivity=oArg.inactivity;this._setHold(oArg.requests-1);this.setPollInterval(this._timerval);if(oArg.wait)
this._wait=oArg.wait;this._connected=true;this._handleEvent('onconnect');this._interval=setInterval(JSJaC.bind(this._checkQueue,this),JSJAC_CHECKQUEUEINTERVAL);this._inQto=setInterval(JSJaC.bind(this._checkInQ,this),JSJAC_CHECKINQUEUEINTERVAL);this._timeout=setTimeout(JSJaC.bind(this._process,this),this.getPollInterval());};JSJaCHttpBindingConnection.prototype.setPollInterval=function(timerval){if(timerval&&!isNaN(timerval)){if(!this.isPolling())
this._timerval=100;else if(this._min_polling&&timerval<this._min_polling*1000)
this._timerval=this._min_polling*1000;else if(this._inactivity&&timerval>this._inactivity*1000)
this._timerval=this._inactivity*1000;else
this._timerval=timerval;}
return this._timerval;};JSJaCHttpBindingConnection.prototype.isPolling=function(){return(this._hold==0)};JSJaCHttpBindingConnection.prototype._getFreeSlot=function(){for(var i=0;i<this._hold+1;i++)
if(typeof(this._req[i])=='undefined'||typeof(this._req[i].r)=='undefined'||this._req[i].r.readyState==4)
return i;return-1;};JSJaCHttpBindingConnection.prototype._getHold=function(){return this._hold;};JSJaCHttpBindingConnection.prototype._getRequestString=function(raw,last){raw=raw||'';var reqstr='';if(this._rid<=this._last_rid&&typeof(this._last_requests[this._rid])!='undefined')
reqstr=this._last_requests[this._rid].xml;else{var xml='';while(this._pQueue.length){var curNode=this._pQueue[0];xml+=curNode;this._pQueue=this._pQueue.slice(1,this._pQueue.length);}
reqstr="<body rid='"+this._rid+"' sid='"+this._sid+"' xmlns='http://jabber.org/protocol/httpbind' ";if(JSJAC_HAVEKEYS){reqstr+="key='"+this._keys.getKey()+"' ";if(this._keys.lastKey()){this._keys=new JSJaCKeys(hex_sha1,this.oDbg);reqstr+="newkey='"+this._keys.getKey()+"' ";}}
if(last)
reqstr+="type='terminate' ";else if(this._reinit){if(JSJACHBC_USE_BOSH_VER)
reqstr+="xmpp:restart='true' ";this._reinit=false;}
if(xml!=''||raw!=''){reqstr+=">"+raw+xml+"</body>";}else{reqstr+="/>";}
this._last_requests[this._rid]=new Object();this._last_requests[this._rid].xml=reqstr;this._last_rid=this._rid;for(var i in this._last_requests)
if(this._last_requests.hasOwnProperty(i)&&i<this._rid-this._hold)
delete(this._last_requests[i]);}
return reqstr;};JSJaCHttpBindingConnection.prototype._getInitialRequestString=function(){var reqstr="<body hold='"+this._hold+"' xmlns='http://jabber.org/protocol/httpbind' to='"+this.authhost+"' wait='"+this._wait+"' rid='"+this._rid+"'";if(this.host||this.port)
reqstr+=" route='xmpp:"+this.host+":"+this.port+"'";if(this.secure)
reqstr+=" secure='"+this.secure+"'";if(JSJAC_HAVEKEYS){this._keys=new JSJaCKeys(hex_sha1,this.oDbg);key=this._keys.getKey();reqstr+=" newkey='"+key+"'";}
if(this._xmllang)
reqstr+=" xml:lang='"+this._xmllang+"'";if(JSJACHBC_USE_BOSH_VER){reqstr+=" ver='"+JSJACHBC_BOSH_VERSION+"'";reqstr+=" xmpp:xmlns='urn:xmpp:xbosh'";if(this.authtype=='sasl'||this.authtype=='saslanon')
reqstr+=" xmpp:version='1.0'";}
reqstr+="/>";return reqstr;};JSJaCHttpBindingConnection.prototype._getStreamID=function(slot){this.oDbg.log(this._req[slot].r.responseText,4);if(!this._req[slot].r.responseXML||!this._req[slot].r.responseXML.documentElement){this._handleEvent('onerror',JSJaCError('503','cancel','service-unavailable'));return;}
var body=this._req[slot].r.responseXML.documentElement;if(body.getAttribute('authid')){this.streamid=body.getAttribute('authid');this.oDbg.log("got streamid: "+this.streamid,2);}else{this._timeout=setTimeout(JSJaC.bind(this._sendEmpty,this),this.getPollInterval());return;}
this._timeout=setTimeout(JSJaC.bind(this._process,this),this.getPollInterval());if(!this._parseStreamFeatures(body))
return;if(this.register)
this._doInBandReg();else
this._doAuth();};JSJaCHttpBindingConnection.prototype._getSuspendVars=function(){return('host,port,secure,_rid,_last_rid,_wait,_min_polling,_inactivity,_hold,_last_requests,_pause').split(',');};JSJaCHttpBindingConnection.prototype._handleInitialResponse=function(slot){try{this.oDbg.log(this._req[slot].r.getAllResponseHeaders(),4);this.oDbg.log(this._req[slot].r.responseText,4);}catch(ex){this.oDbg.log("No response",4);}
if(this._req[slot].r.status!=200||!this._req[slot].r.responseXML){this.oDbg.log("initial response broken (status: "+this._req[slot].r.status+")",1);this._handleEvent('onerror',JSJaCError('503','cancel','service-unavailable'));return;}
var body=this._req[slot].r.responseXML.documentElement;if(!body||body.tagName!='body'||body.namespaceURI!='http://jabber.org/protocol/httpbind'){this.oDbg.log("no body element or incorrect body in initial response",1);this._handleEvent("onerror",JSJaCError("500","wait","internal-service-error"));return;}
if(body.getAttribute("type")=="terminate"){this.oDbg.log("invalid response:\n"+this._req[slot].r.responseText,1);clearTimeout(this._timeout);this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent('ondisconnect');this._handleEvent('onerror',JSJaCError('503','cancel','service-unavailable'));return;}
this._sid=body.getAttribute('sid');this.oDbg.log("got sid: "+this._sid,2);if(body.getAttribute('polling'))
this._min_polling=body.getAttribute('polling');if(body.getAttribute('inactivity'))
this._inactivity=body.getAttribute('inactivity');if(body.getAttribute('requests'))
this._setHold(body.getAttribute('requests')-1);this.oDbg.log("set hold to "+this._getHold(),2);if(body.getAttribute('ver'))
this._bosh_version=body.getAttribute('ver');if(body.getAttribute('maxpause'))
this._pause=Number.max(body.getAttribute('maxpause'),JSJACHBC_MAXPAUSE);this.setPollInterval(this._timerval);this._connected=true;this._inQto=setInterval(JSJaC.bind(this._checkInQ,this),JSJAC_CHECKINQUEUEINTERVAL);this._interval=setInterval(JSJaC.bind(this._checkQueue,this),JSJAC_CHECKQUEUEINTERVAL);this._getStreamID(slot);};JSJaCHttpBindingConnection.prototype._parseResponse=function(req){if(!this.connected()||!req)
return null;var r=req.r;try{if(r.status==404||r.status==403){this._abort();return null;}
if(r.status!=200||!r.responseXML){this._errcnt++;var errmsg="invalid response ("+r.status+"):\n"+r.getAllResponseHeaders()+"\n"+r.responseText;if(!r.responseXML)
errmsg+="\nResponse failed to parse!";this.oDbg.log(errmsg,1);if(this._errcnt>JSJAC_ERR_COUNT){this._abort();return null;}
this.oDbg.log("repeating ("+this._errcnt+")",1);this._setStatus('proto_error_fallback');setTimeout(JSJaC.bind(this._resume,this),this.getPollInterval());return null;}}catch(e){this.oDbg.log("XMLHttpRequest error: status not available",1);this._errcnt++;if(this._errcnt>JSJAC_ERR_COUNT){this._abort();}else{this.oDbg.log("repeating ("+this._errcnt+")",1);this._setStatus('proto_error_fallback');setTimeout(JSJaC.bind(this._resume,this),this.getPollInterval());}
return null;}
var body=r.responseXML.documentElement;if(!body||body.tagName!='body'||body.namespaceURI!='http://jabber.org/protocol/httpbind'){this.oDbg.log("invalid response:\n"+r.responseText,1);clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent('ondisconnect');this._setStatus('internal_server_error');this._handleEvent('onerror',JSJaCError('500','wait','internal-server-error'));return null;}
if(typeof(req.rid)!='undefined'&&this._last_requests[req.rid]){if(this._last_requests[req.rid].handled){this.oDbg.log("already handled "+req.rid,2);return null;}else
this._last_requests[req.rid].handled=true;}
if(body.getAttribute("type")=="terminate"){this.oDbg.log("session terminated:\n"+r.responseText,1);clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);if(body.getAttribute("condition")=="remote-stream-error")
if(body.getElementsByTagName("conflict").length>0)
this._setStatus("session-terminate-conflict");this._handleEvent('onerror',JSJaCError('503','cancel',body.getAttribute('condition')));this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent('ondisconnect');return null;}
this._errcnt=0;return r.responseXML.documentElement;};JSJaCHttpBindingConnection.prototype._reInitStream=function(to,cb,arg){this._reinit=true;cb.call(this,arg);};JSJaCHttpBindingConnection.prototype._resume=function(){if(this._pause==0&&this._rid>=this._last_rid)
this._rid=this._last_rid-1;this._process();};JSJaCHttpBindingConnection.prototype._setHold=function(hold){if(!hold||isNaN(hold)||hold<0)
hold=0;else if(hold>JSJACHBC_MAX_HOLD)
hold=JSJACHBC_MAX_HOLD;this._hold=hold;return this._hold;};JSJaCHttpBindingConnection.prototype._setupRequest=function(async){var req=new Object();var r=XmlHttp.create();try{r.open("POST",this._httpbase,async);r.setRequestHeader('Content-Type','text/xml; charset=utf-8');}catch(e){this.oDbg.log(e,1);}
req.r=r;this._rid++;req.rid=this._rid;return req;};JSJaCHttpBindingConnection.prototype._suspend=function(){if(this._pause==0)
return;var slot=this._getFreeSlot();this._req[slot]=this._setupRequest(false);var reqstr="<body pause='"+this._pause+"' xmlns='http://jabber.org/protocol/httpbind' sid='"+this._sid+"' rid='"+this._rid+"'";if(JSJAC_HAVEKEYS){reqstr+=" key='"+this._keys.getKey()+"'";if(this._keys.lastKey()){this._keys=new JSJaCKeys(hex_sha1,this.oDbg);reqstr+=" newkey='"+this._keys.getKey()+"'";}}
reqstr+=">";while(this._pQueue.length){var curNode=this._pQueue[0];reqstr+=curNode;this._pQueue=this._pQueue.slice(1,this._pQueue.length);}
reqstr+="</body>";this.oDbg.log("Disconnecting: "+reqstr,4);this._req[slot].r.send(reqstr);};function JSJaCHttpPollingConnection(oArg){this.base=JSJaCConnection;this.base(oArg);JSJACPACKET_USE_XMLNS=false;}
JSJaCHttpPollingConnection.prototype=new JSJaCConnection();JSJaCHttpPollingConnection.prototype.isPolling=function(){return true;};JSJaCHttpPollingConnection.prototype._getFreeSlot=function(){if(typeof(this._req[0])=='undefined'||typeof(this._req[0].r)=='undefined'||this._req[0].r.readyState==4)
return 0;else
return-1;};JSJaCHttpPollingConnection.prototype._getInitialRequestString=function(){var reqstr="0";if(JSJAC_HAVEKEYS){this._keys=new JSJaCKeys(b64_sha1,this.oDbg);key=this._keys.getKey();reqstr+=";"+key;}
var streamto=this.domain;if(this.authhost)
streamto=this.authhost;reqstr+=",<stream:stream to='"+streamto+"' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'";if(this.authtype=='sasl'||this.authtype=='saslanon')
reqstr+=" version='1.0'";reqstr+=">";return reqstr;};JSJaCHttpPollingConnection.prototype._getRequestString=function(raw,last){var reqstr=this._sid;if(JSJAC_HAVEKEYS){reqstr+=";"+this._keys.getKey();if(this._keys.lastKey()){this._keys=new JSJaCKeys(b64_sha1,this.oDbg);reqstr+=';'+this._keys.getKey();}}
reqstr+=',';if(raw)
reqstr+=raw;while(this._pQueue.length){reqstr+=this._pQueue[0];this._pQueue=this._pQueue.slice(1,this._pQueue.length);}
if(last)
reqstr+='</stream:stream>';return reqstr;};JSJaCHttpPollingConnection.prototype._getStreamID=function(){if(this._req[0].r.responseText==''){this.oDbg.log("waiting for stream id",2);this._timeout=setTimeout(JSJaC.bind(this._sendEmpty,this),1000);return;}
this.oDbg.log(this._req[0].r.responseText,4);if(this._req[0].r.responseText.match(/id=[\'\"]([^\'\"]+)[\'\"]/))
this.streamid=RegExp.$1;this.oDbg.log("got streamid: "+this.streamid,2);var doc;try{var response=this._req[0].r.responseText;if(!response.match(/<\/stream:stream>\s*$/))
response+='</stream:stream>';doc=XmlDocument.create("doc");doc.loadXML(response);if(!this._parseStreamFeatures(doc))
return;}catch(e){this.oDbg.log("loadXML: "+e.toString(),1);}
this._connected=true;if(this.register)
this._doInBandReg();else
this._doAuth();this._process(this._timerval);};JSJaCHttpPollingConnection.prototype._getSuspendVars=function(){return new Array();};JSJaCHttpPollingConnection.prototype._handleInitialResponse=function(){this.oDbg.log(this._req[0].r.getAllResponseHeaders(),4);var aPList=this._req[0].r.getResponseHeader('Set-Cookie');aPList=aPList.split(";");for(var i=0;i<aPList.length;i++){aArg=aPList[i].split("=");if(aArg[0]=='ID')
this._sid=aArg[1];}
this.oDbg.log("got sid: "+this._sid,2);this._connected=true;this._interval=setInterval(JSJaC.bind(this._checkQueue,this),JSJAC_CHECKQUEUEINTERVAL);this._inQto=setInterval(JSJaC.bind(this._checkInQ,this),JSJAC_CHECKINQUEUEINTERVAL);this._getStreamID();};JSJaCHttpPollingConnection.prototype._parseResponse=function(r){var req=r.r;if(!this.connected())
return null;if(req.status!=200){this.oDbg.log("invalid response ("+req.status+"):"+req.responseText+"\n"+req.getAllResponseHeaders(),1);this._setStatus('internal_server_error');clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent('ondisconnect');this._handleEvent('onerror',JSJaCError('503','cancel','service-unavailable'));return null;}
this.oDbg.log(req.getAllResponseHeaders(),4);var sid,aPList=req.getResponseHeader('Set-Cookie');if(aPList==null)
sid="-1:0";else{aPList=aPList.split(";");var sid;for(var i=0;i<aPList.length;i++){var aArg=aPList[i].split("=");if(aArg[0]=='ID')
sid=aArg[1];}}
if(typeof(sid)!='undefined'&&sid.indexOf(':0')!=-1){switch(sid.substring(0,sid.indexOf(':0'))){case'0':this.oDbg.log("invalid response:"+req.responseText,1);break;case'-1':this.oDbg.log("Internal Server Error",1);break;case'-2':this.oDbg.log("Bad Request",1);break;case'-3':this.oDbg.log("Key Sequence Error",1);break;}
this._setStatus('internal_server_error');clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._handleEvent('onerror',JSJaCError('500','wait','internal-server-error'));this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent('ondisconnect');return null;}
if(!req.responseText||req.responseText=='')
return null;try{var response=req.responseText.replace(/\<\?xml.+\?\>/,"");if(response.match(/<stream:stream/))
response+="</stream:stream>";var doc=JSJaCHttpPollingConnection._parseTree("<body>"+response+"</body>");if(!doc||doc.tagName=='parsererror'){this.oDbg.log("parsererror",1);doc=JSJaCHttpPollingConnection._parseTree("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>"+req.responseText);if(doc&&doc.tagName!='parsererror'){this.oDbg.log("stream closed",1);if(doc.getElementsByTagName('conflict').length>0)
this._setStatus("session-terminate-conflict");clearTimeout(this._timeout);clearInterval(this._interval);clearInterval(this._inQto);this._handleEvent('onerror',JSJaCError('503','cancel','session-terminate'));this._connected=false;this.oDbg.log("Disconnected.",1);this._handleEvent('ondisconnect');}else
this.oDbg.log("parsererror:"+doc,1);return doc;}
return doc;}catch(e){this.oDbg.log("parse error:"+e.message,1);}
return null;;};JSJaCHttpPollingConnection.prototype._reInitStream=function(to,cb,arg){this._sendRaw("<stream:stream xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' to='"+to+"' version='1.0'>",cb,arg);};JSJaCHttpPollingConnection.prototype._resume=function(){this._process(this._timerval);};JSJaCHttpPollingConnection.prototype._setupRequest=function(async){var r=XmlHttp.create();try{r.open("POST",this._httpbase,async);if(r.overrideMimeType)
r.overrideMimeType('text/plain; charset=utf-8');r.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}catch(e){this.oDbg.log(e,1);}
var req=new Object();req.r=r;return req;};JSJaCHttpPollingConnection.prototype._suspend=function(){};JSJaCHttpPollingConnection._parseTree=function(s){try{var r=XmlDocument.create("body","foo");if(typeof(r.loadXML)!='undefined'){r.loadXML(s);return r.documentElement;}else if(window.DOMParser)
return(new DOMParser()).parseFromString(s,"text/xml").documentElement;}catch(e){}
return null;};var JSJaC={Version:'1.3',require:function(libraryName){document.write('<script type="text/javascript" src="'+libraryName+'"></script>');},load:function(){var includes=['xmlextras','jsextras','crypt','JSJaCConfig','JSJaCConstants','JSJaCCookie','JSJaCJSON','JSJaCJID','JSJaCBuilder','JSJaCPacket','JSJaCError','JSJaCKeys','JSJaCConnection','JSJaCHttpPollingConnection','JSJaCHttpBindingConnection','JSJaCConsoleLogger'];var scripts=document.getElementsByTagName("script");var path='./';for(var i=0;i<scripts.length;i++){if(scripts.item(i).src&&scripts.item(i).src.match(/JSJaC\.js$/)){path=scripts.item(i).src.replace(/JSJaC.js$/,'');break;}}
for(var i=0;i<includes.length;i++)
this.require(path+includes[i]+'.js');},bind:function(fn,obj,arg){return function(){if(arg)
fn.apply(obj,arg);else
fn.apply(obj);};}};if(typeof JSJaCConnection=='undefined')
JSJaC.load();var gJabberConnection=new JabberConnection();function JabberConnection(){this.httpBindDomain=window.location.hostname;this.httpBindPath="/httpbind/JHB/";this.resource="web";this.httpbase=g_app_server+this.httpBindPath;this.feature={chat:"chat",rc:"rc",consult:"consult"}
this.supportSpaceUsername="supportspace"+'@'+g_jabber_domain;this.jabberConnector=null;this.nbOfConnectionRetries=0;this.maxConnectionRetries=g_nbRetriesJabberConnection;this.isTryingToReconnect=false;this.nbOfJSDisconnections=0;this.keepAlivePeriodExec=0;this.selfKeepAlivePeriodExec=0;this.selfKeepAliveTimer=0;this.currentPriorityOfFlashConnectionType=0;this.shouldUseJSAsFallback=g_ConnectionMode=='FlashXiff';this.currentConnectionMode="";this.isResourceConflictError=false;}
JabberConnection.prototype.doLogin=function(oCallback)
{if(oCallback){this.connectionCallback=oCallback;}
debug_connection('g_ConnectionMode='+g_ConnectionMode);if(g_ConnectionMode!='JSJac'){if($('jabberConnector')&&$('jabberConnector').connectToJabberServer){switch(this.currentPriorityOfFlashConnectionType){case 0:this.initFlashObject();this.doLogin_flash(g_jabberFlashPrimaryConnectionType);break;case 1:if(g_jabberFlashSecondaryConnectionType!=""&&g_jabberFlashSecondaryConnectionType!="none"){this.doLogin_flash(g_jabberFlashSecondaryConnectionType);}else if(this.shouldUseJSAsFallback){this.doLogin_jsjac();}else{this.handleError("jabber connection failed: "+g_jabberFlashPrimaryConnectionType);}
break;case 2:if(this.shouldUseJSAsFallback){this.doLogin_jsjac();}else{this.handleError("jabber connection failed: "+g_jabberFlashSecondaryConnectionType);}
break;}}else{debug_connection('Flash object not found');if(this.shouldUseJSAsFallback){this.doLogin_jsjac();}else{this.handleError("jabber connection failed - probably no flash exists.");}}}else{debug_connection('Using JSJac by configuration');this.doLogin_jsjac();}}
JabberConnection.prototype.initFlashObject=function(){this.jabberConnector=$('jabberConnector');this.jabberConnector.setKeepAliveInterval(g_keepAliveInterval);}
JabberConnection.prototype.prepareFlashConnector=function(){this.jabberConnector.setSocketConnectionTimeout(g_connectionTimeout);this.jabberConnector.setMyJabberUsername(gCurrentUser.jabberUserName);this.jabberConnector.setMyJabberPassword(gCurrentUser.jabberPassword);this.jabberConnector.setKeepAliveInterval(g_keepAliveInterval);}
JabberConnection.prototype.doLogin_flash=function(connectionType){if(connectionType=="socket"){this.jabberConnector.createConnection("socket");}else if(connectionType=="bosh"){this.jabberConnector.createConnection("http",80,this.resource,this.httpBindDomain,this.httpBindPath);}
this.prepareFlashConnector();this.currentConnectionMode=g_ConnectionMode;$("jabberConnector").connectToJabberServer(g_jabber_domain,true);}
JabberConnection.prototype.doLogin_jsjac=function()
{if(g_ConnectionMode=='FlashXiffOnly')
return;this.currentConnectionMode='JSJac';debug_connection('Connecting with jsjac')
try{var oArgs=new Object();oArgs.httpbase=this.httpbase;oArgs.timerval=3000;this.jabberConnector=new JSJaCHttpBindingConnection(oArgs);if(typeof(handleMessage_jsjac)!=typeof(undefined)){this.jabberConnector.registerHandler('message',handleMessage_jsjac);}
this.jabberConnector.registerHandler('presence',this.handlePresence.bind(this));this.jabberConnector.registerHandler('iq',this.handleEvent.bind(this));this.jabberConnector.registerHandler('onconnect',function(){this.handleConnected("JsJac")}.bind(this));this.jabberConnector.registerHandler('onerror',this.handleError.bind(this));this.jabberConnector.registerHandler('status_changed',this.handleStatusChanged.bind(this));this.jabberConnector.registerHandler('ondisconnect',function(){this.handleDisconnected("JsJac")}.bind(this));oArgs=new Object();oArgs.domain=g_jabber_domain;oArgs.username=gCurrentUser.jabberUserName;oArgs.resource=this.resource;oArgs.pass=gCurrentUser.jabberPassword;this.jabberConnector.connect(oArgs);if(!this.isTryingToReconnect){logme("Connecting with JsJac to "+g_jabber_domain+" jabberUsername:"+gCurrentUser.jabberUserName+" NbRetries="+this.nbOfConnectionRetries)}}catch(e){debug_connection(e.toString());logme("Connection failed with JsJac to "+g_jabber_domain+" jabberUsername:"+gCurrentUser.jabberUserName+" NbRetries="+this.nbOfConnectionRetries+" : error "+e.description);return false;}
return true;}
JabberConnection.prototype.reconnect=function()
{this.stopReconnectProcess();if(!this.isTryingToReconnect){this.isTryingToReconnect=true;this.nbOfConnectionRetries=0;}
var delayForReconnect=3000;setTimeout(this.do_reconnect.bind(this),delayForReconnect);}
JabberConnection.prototype.do_reconnect=function()
{if(this.nbOfConnectionRetries<this.maxConnectionRetries){this.isTryingToReconnect=true;logme("reconnecting - "+this.nbOfConnectionRetries+"/"+this.maxConnectionRetries+" jabberUsername:"+gCurrentUser.jabberUserName);this.nbOfConnectionRetries++;this.doLogin();}else{logme("no more retries to reconnect for user "+gCurrentUser.jabberUserName);this.isTryingToReconnect=false;this.failoverConnectionType();}}
JabberConnection.prototype.failoverConnectionType=function()
{this.currentPriorityOfFlashConnectionType++;this.doLogin();}
JabberConnection.prototype.handleMessage=function(subject,body,from,threadId)
{debug_connection('handleMessage called');if(isUndefined(subject))subject='';if(isUndefined(body))body='';if(isUndefined(from))from='';if(isUndefined(threadId))threadId='';var aJSJaCPacket=new Object();aJSJaCPacket.getSubject=function(){return subject;};aJSJaCPacket.getBody=function(){return unescape(body);};aJSJaCPacket.getFrom=function(){return from;};aJSJaCPacket.getThread=function(){return threadId;};handleMessage_jsjac(aJSJaCPacket);}
JabberConnection.prototype.handleEvent=function(aJSJaCPacket){debug_connection("IN (raw):<br/>"+htmlEnc(aJSJaCPacket.xml())+'<hr noshade size="1"/>');}
JabberConnection.prototype.handlePresence=function(aJSJaCPacket){var presenceRawName=aJSJaCPacket.getFrom();var presenceName=presenceRawName.substring(0,presenceRawName.indexOf('@'));var msg=presenceName;if(!aJSJaCPacket.getType()&&!aJSJaCPacket.getShow())
msg+=gJabberStrings.become_available;else{msg+=gJabberStrings.set_precence;if(aJSJaCPacket.getType())
msg+=aJSJaCPacket.getType();else
msg+=aJSJaCPacket.getShow();if(aJSJaCPacket.getStatus())
msg+=aJSJaCPacket.getStatus();}
debug_connection("handlePresence - "+msg);};JabberConnection.prototype.handleConnected=function(withwhat){this.isTryingToReconnect=false;this.stopReconnectProcess();debug_connection("user "+gCurrentUser.jabberUserName+" is connected with "+withwhat);logme("user "+gCurrentUser.jabberUserName+" is connected with "+withwhat);if(gS2StartSession.disconnectedByUser){debug_connection("user "+gCurrentUser.jabberUserName+" is going to be disconnected (disconnectedByUser)");this.jabberDisconnect();return;}
if(gCurrentUser.isSupporter)
{if(typeof(gSessionContextManager)!="undefined"){var sessionIdList=gSessionContextManager.getSupportSessionIdList();if(gLastSessionEvent==SE_SJB_DISCONNECT)
saveSessionEvent({user:gCurrentUser,event:{action:SE_SJB_RECONNECT,description:"Expert reconnected after disconnection with "+withwhat},sessionIdList:sessionIdList})
else
saveSessionEvent({user:gCurrentUser,event:{action:SE_SJB_CONNECT,description:"Expert connected to the Jabber server with "+withwhat+" - system:"+navigator.userAgent},sessionIdList:sessionIdList})}}
else
{debug_connection("Connected with flash");this.sendSelfKeepAlive();this.selfKeepAlivePeriodExec=new PeriodicalExecuter(this.sendSelfKeepAlive.bind(this),3);this.selfKeepAliveTimer=function(){this.selfKeepAlivePeriodExec.stop();logClientLog();gS2StartSession.popupStartSession({status:'sorry',reason:'ska_failure'});this.jabberDisconnect();saveSessionEvent({user:gCurrentUser,event:{action:SKA_FAILURE,description:"Message SELF_KEEP_ALIVE has not been received - ["+window.location.href+"] - "+navigator.userAgent}});}.bind(this).delay(20);if(gLastSessionEvent==SE_CJB_RECONNECT){saveSessionEvent({user:gCurrentUser,event:{action:SE_CJB_RECONNECT,description:"Service Page - Customer reconnected after disconnection with "+withwhat},sessionIdList:[g_support_sessionId]})}
else{saveSessionEvent({user:gCurrentUser,event:{action:SE_CJB_CONNECT,description:"Service Page - Customer connected to the Jabber server with "+withwhat+" - system:"+navigator.userAgent}});}}
if(gCurrentUser.isSupporter||!gMustWaitForGettingSelfKeepAliveToStartSession){if(this.connectionCallback){this.connectionCallback.onConnect();this.connectionCallback=null;}}
var jabberMode=(withwhat.indexOf("flash")>=0?"flash":"jsjac");if(jabberMode!="flash")
{debug_connection("Connected with JsJac");this.setConnectingStatus("Connected with JSJac");this.nbOfConnectionRetries=0;if(this.keepAlivePeriodExec==0)
this.keepAlivePeriodExec=new PeriodicalExecuter(this.sendKeepAlive.bind(this),g_keepAliveInterval);}};JabberConnection.prototype.handleStatusChanged=function(){debug_connection("handleStatusChanged");};JabberConnection.prototype.handleConnectionTimeoutEvent=function(){if(this.isTryingToReconnect){this.reconnect();}else{this.failoverConnectionType();}};JabberConnection.prototype.handleResourceConflictError=function(){this.isResourceConflictError=true;logme("Resource Conflict Error - "+gCurrentUser.jabberUserName);};JabberConnection.prototype.handleHTTPError=function(errorStr){if(g_ReconnectionProcessInterval>-1&&!this.isTryingToReconnect){logme("HTTP(Bind) Error - user: "+gCurrentUser.jabberUserName+" - connectionMode: "+this.currentConnectionMode+", g_ReconnectionTimeout = "+g_ReconnectionTimeout+"("+(errorStr?errorStr:"")+")");this.isTryingToReconnect=true;if(this.currentConnectionMode!="JSJac"){this.jabberConnector.setSocketConnectionTimeout(g_ReconnectionTimeout);}
this.startReconnectProcess();}};JabberConnection.prototype.startReconnectProcess=function(){this.stopReconnectProcess();this.doLogin();this.reconnectProcessInterval=new PeriodicalExecuter(function(){this.doLogin();}.bind(this),g_ReconnectionProcessInterval);};JabberConnection.prototype.stopReconnectProcess=function(){if(this.reconnectProcessInterval){this.reconnectProcessInterval.stop();}};JabberConnection.prototype.handleError=function(e){if(this.connectionCallback&&e){this.connectionCallback.errorHandler(e);}else{var errorStr=typeof(e)=="String"?e:e.xml?e.xml:"unknown error";this.handleHTTPError(errorStr);}};JabberConnection.prototype.handleDisconnected=function(withwhat,shouldTryToReconnect){logme("disconnected from "+withwhat+", jabberUsername:"+gCurrentUser.jabberUserName+", shouldTryToReconnect="+shouldTryToReconnect);if(withwhat.indexOf("flash")<0){this.nbOfJSDisconnections++;debug_connection("<b>Disconnected from JsJac</b>");}
else{if(gCurrentUser.isSupporter){var sessionIdList=gSessionContextManager.getSupportSessionIdList();saveSessionEvent({user:gCurrentUser,event:{action:SE_SJB_DISCONNECT,description:"Expert disconnected from"+withwhat},sessionIdList:sessionIdList})}else{saveSessionEvent({user:gCurrentUser,event:{action:SE_CJB_DISCONNECT,description:"Customer disconnected from "+withwhat},sessionIdList:[g_support_sessionId]})}}
if(shouldTryToReconnect){if(!this.isResourceConflictError){this.reconnect();}else{logme("will not reconnect due to resource conflict error - "+gCurrentUser.jabberUserName);}}}
JabberConnection.prototype.sendKeepAlive=function(){debug_connection(new Date()+":sendKeepAlive")
this.sendMsg(gJabberConnection.supportSpaceUsername,'KEEP_ALIVE','',-10);}
JabberConnection.prototype.sendSelfKeepAlive=function(){debug_connection(new Date()+":sendSelfKeepAlive");saveSessionEvent({user:gCurrentUser,event:{action:SKA_SENT,description:"Message SELF_KEEP_ALIVE has been sent ["+window.location.href+"]"}});this.sendMsg(gJabberConnection.addJabberDomainSuffix(gCurrentUser.jabberUserName),'SELF_KEEP_ALIVE','SELF_KEEP_ALIVE',-100);}
JabberConnection.prototype.sendMsg=function(to,subject,body,threadId){debug_connection("sendMsg:subject="+subject+"-body="+body)
threadId=""+(threadId?threadId:(typeof(g_workflowId)!="undefined"?g_workflowId:-1));if($('jabberConnector')&&$('jabberConnector').sendMessage&&this.currentConnectionMode!='JSJac'){$('jabberConnector').sendMessage(body,subject,to,threadId);}else{this.sendMsg_jsjac(to,subject,body,threadId)}}
JabberConnection.prototype.sendMsg_jsjac=function(to,subject,body,threadId){var aMsg=new JSJaCMessage();aMsg.setTo(to);aMsg.setSubject(subject);aMsg.setBody(body);aMsg.setThread(threadId);if(this.jabberConnector.send)
this.jabberConnector.send(aMsg);}
JabberConnection.prototype.sendInitMsg=function(recipient,threadId)
{var to=recipient?recipient:gPartnerUser.jabberFullUserName;var body=new MessageProperties();body.appendParam('event','onload');this.sendMsg(to,g_PAGE_EVENT,body.toString(),threadId);}
JabberConnection.prototype.sendUnblockMsg=function(recipient,workfowId)
{var body=new MessageProperties();body.appendParam('event','unblock');this.sendMsg(recipient.jabberFullUserName,g_PAGE_EVENT,body.toString(),workfowId);}
JabberConnection.prototype.displayConnectionMessage=function(){}
JabberConnection.prototype.displayDisconnectMessage=function(){g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body=gJabberStrings.unable_to_connect;displayMessage(false,"dChatWindow");}
JabberConnection.prototype.setConnectingStatus=function(jabberStatus){if(!this.jabberConnector)
return;var presence=new JSJaCPresence();presence.setStatus(jabberStatus);if(this.jabberConnector.send)
this.jabberConnector.send(presence);}
JabberConnection.prototype.jabberDisconnect=function(){if(!this.jabberConnector)
return;if(this.currentConnectionMode=='JSJac')
{this.jabberConnector.disconnect();if(this.keepAlivePeriodExec)
this.keepAlivePeriodExec.stop();}
else if(this.jabberConnector.disconnectFromJabberServer){try{this.jabberConnector.disconnectFromJabberServer();}catch(e){logme("Unable to disconnect from Jabber ["+gCurrentUser.jabberUserName+"]");}}}
JabberConnection.prototype.addJabberDomainSuffix=function(jabberUser){return jabberUser+'@'+g_jabber_domain+'/'+this.resource;}
JabberConnection.prototype.getConnectionCallback=function(){return this.connectionCallback;}
JabberConnection.prototype.setConnectionCallback=function(callback){this.connectionCallback=callback;}
function MessageProperties()
{this._params=new Object();this.appendParam=function(param,value)
{this._params[param]=value;}
this.toString=function()
{return Object.toJSON(this._params)}
this.load=function(input)
{this._params=null;try{this._params=input.evalJSON(true);}catch(e){this._params=null}};this.getValue=function(param)
{if(!param)
return this._params;else
if(isUndefined(this._params[param]))
return-1;else
return this._params[param];}}
function flashunescape(str){return str.replace(/%22/g,'"').replace(/%5c/g,"\\").replace(/%26/g,"&").replace(/%25/g,"%");}
function ChatMessage(){this.delimiter='|';}
ChatMessage.prototype.encode=function(sessionId,msg){return sessionId+this.delimiter+msg;}
ChatMessage.prototype.decode=function(str){if(isUndefined(str))
return"";return str.substring(str.indexOf(this.delimiter)+1);}
var g_FORWARD_OR_DISPATCH='';var g_PAGE_EVENT='page_event';var g_IS_TYPING='is_typing';var g_CUSTOMER_DISPATCH_REQUEST='customer_dispatch_request';var g_RCTV_REQUEST='rc_request';var g_RCWEBEX_REQUEST='rc_request_webex';var ACCEPTED='accepted';var DECLINED='declined';var CALL='call';var CANCEL='cancel';var JBMSG_CREATING_JOBOFFER='creatingJobOffer';var JBMSG_JOBOFFER='jobOffer';var JBMSG_JOBOFFER_REJECTED='jobOfferRejected';var JBMSG_JOBOFFER_ACCEPTED='jobOfferAccepted';var JBMSG_JOBOFFER_CANCELED='jobOfferCanceled';var JBMSG_START_CONSULTING='startConsult';var JBMSG_STOP_CONSULTING='stopConsult';var JBMSG_LEAVESESSIONOPEN_APPROVE='leaveSessionOpenApprove';var JBMSG_LEAVESESSIONOPEN_DISAPPROVE='leaveSessionOpenDisapprove';var g_CHANGE_DESKTOP_SHARING_STATUS='changeDesktopSharingStatus';var g_SCOPE_OF_WORK_IS_SET='scopeOfWorkIsSet';var g_SESSION_TERMINATED='SESSION_TERMINATED';var g_SESSION_REPORT_STEP='sessionReportStep';var g_SESSION_REPORT_STEP_FROM_HAND_OFF='sessionReportStepFromHandOff';var g_SESSION_REPORT_STEP_FROM_LEAVE_OPEN='sessionReportStepFromLeaveOpen';var g_CASE_RESOLVED_CONFIRM='RESOLVED';var g_CASE_PARTIALLY_RESOLVED='PARTIALLY_RESOLVED';var g_FORWARD_CONFIRM='FORWARD';var g_CASE_CANTRESOLVE='CANT_RESOLVE';var g_CASE_UNRESOLVED_CANTFORWARD='UNRESOLVED_CANT_FORWARD';var g_CASE_UNRESOLVED_DISCONNECTED='UNRESOLVED_DISCONNECTED';var g_CASE_UNRESOLVED_LEFT_OPEN='UNRESOLVED_LEFT_OPEN';var g_START_NEW_SUPPORT_REQUEST_FLOW='START_NEW_SUPPORT_REQUEST_FLOW';var JBMSG_CUSTOMER_FEEDBACK='CUSTOMER_FEEDBACK';var g_CONSULT_NOTIFICATION_ENDED="stargate_consult_notification";var g_CONSULT_NOTIFICATION_TIMEOUT="stargate_consult_notification_timeout";var g_CUSTOMER_PAYED="customer_payed";var g_RESUME_SESSION_TIMEOUT="resume_session_timeout";var g_CUSTOMER_SOFTWARE_ACTIVATION="customer_software_activation";var RESOLUTION_SET="RESOLUTION_SET";var g_SUBMIT_CALL_REQUEST="submit_phone_call_request";var g_PHONE_CALL_STATUS="phone_call_status";var g_PHONE_CALL_DECLINED="call_declined_call_request";var g_PHONE_CALL_PROBLEM="call_problem";var g_PHONE_CALL_ENDED="call_ended";var g_PHONE_CALL_CALLING_EXPERT="call_expert";var g_PHONE_CALL_CALLING_YOU="call_you";var g_PHONE_CALL_TALKING="call_talking";var g_PHONE_CALL_EXPERT_BUSY="call_expert_busy";var g_PHONE_CALL_EXPERT_NOT_ANSWER="call_expert_not_answer";var g_PHONE_CALL_YOU_BUSY="call_you_busy";var g_PHONE_CALL_YOU_NOT_ANSWER="call_you_not_answer";var g_PHONE_CALL_CONGESTION="call_congestion";var g_PHONE_CALL_EXPERT_ENDED="call_expert_ended";var g_CONSULTANT_DISPATCH_REQUEST='consultant_dispatch_request';var g_FORWARD_EVENT='forward_event';var g_DISPATCH_EVENT='dispatch_event';var g_FORWARD_APPROVED_BY_CONSULTANT='forward_was_approved';var g_APPROVE_FORWARD='approve_forward';var g_CALL_ME='call_me';var g_RC_AUTH='rc_auth';var g_RC_CANCEL='rc_cancel';var g_P2S_HANGUP='p2s_hangup';var g_P2S_BUSY='p2s_busy';var g_P2S_CLEAR='p2s_clear';var g_P2S_PHONE_PICKED_UP="p2s_phone_picked_up";var g_P2S_SUPPORTER_TRANSFER="p2s_supporter_transfer";var g_P2S_NOW_CALLING="p2s_now_calling";var g_DONT_BLINK=[g_IS_TYPING];var SUPPORT_REQUEST_ACCEPTED='SUPPORT_REQUEST_ACCEPTED';var JOB_OFFER_CREATION='JOB_OFFER_CREATION';var AGREE_JOB_OFFER='AGREE_JOB_OFFER';var PAY='PAY';var IN_SESSION='IN_SESSION';var CONSULTING='CONSULTING';var AWAITING_REPORT_APPROVAL='AWAITING_REPORT_APPROVAL';var SERVICE_REPORT_SUBMISSION_TASK='SERVICE_REPORT_SUBMISSION_TASK';var REPORT_TASK='REPORT_TASK';var CUSTOMER_FEEDBACK='CUSTOMER_FEEDBACK';var END='END';var AWAITING_SESSION_RESUME_RESPONSE='AWAITING_SESSION_RESUME_RESPONSE';var AWAITING_RESUME_LEFT_OPEN_SESSION='AWAITING_RESUME_LEFT_OPEN_SESSION';var CONSULTANT_DISPATCHE_APPROVE='CONSULTANT_DISPATCHE_APPROVE';var CUSTOMER_DISPATCHE_APPROVE='CUSTOMER_DISPATCHE_APPROVE';var WAIT_FOR_CONSULT_RESPONSE='WAIT_FOR_CONSULT_RESPONSE';var CHAT_NOTIFICATION="CHAT_NOTIFICATION";var SUPPORTER_CREATING_JOBOFFER="SUPPORTER_CREATING_JOBOFFER";var CONSULTING_NOTIFICATION="CONSULTING_NOTIFICATION";var CONSULTING_NOTIFICATION_STOP="CONSULTING_NOTIFICATION_STOP";var SUPPORTER_DISCONNECTED="SUPPORTER_DISCONNECTED";var SUPPORTER_CONNECTED="SUPPORTER_CONNECTED";var PHONE_NOTIFICATION="PHONE_NOTIFICATION";var SERVICE_PAGE_WIDGET_ID="dCS";var PERMISSION_REQUEST="RequestPermision";var CUSTOMER="CUSTOMER";var SUPPORTER="SUPPORTER";var CONSULTANT="CONSULTANT";var g_PHONE="PHONE";function initSession(){if(DEBUG_CONNECTION){$('debug_log').show();}else{$('debug_log').hide();}}
function disableRequest(oElt,answerText)
{if(!oElt)return;var dRequest=$(oElt).up(1);var dResponses=$(oElt).up();var dCSChatMsg=dRequest.up('.dCSChatMsg');dCSChatMsg.style.color="#9A9A9A";dRequest.getElementsBySelector('input').each(function(elt){elt.disabled=true});var text=answerText?answerText:"";dResponses.style.color="#000000";dResponses.update(text);}
function S2Timer(time,elt,callback){if(!time)return;if(!callback)return;this.initialTime=time;this.time=this.initialTime*1000;this.callback=callback;this.args=Array.prototype.slice.call(arguments,3);this.timerH=null;this.internal_timerH=null;this.internal_timer=time;this.elt=elt;}
S2Timer.prototype=new Object;S2Timer.prototype.start=function(){if(this.timerH)
return;this.internal_timer=this.initialTime;this.timerH=setTimeout(this.timeExpired.bind(this),this.time);this.internal_timerH=setInterval(this.oneSecondPassed.bind(this),1000);}
S2Timer.prototype.stop=function(){clearTimeout(this.timerH);this.timerH=null;clearTimeout(this.internal_timerH);this.internal_timerH=null;}
S2Timer.prototype.restart=function(){this.stop();this.start();}
S2Timer.prototype.timeExpired=function(){this.stop();var str="";for(var i=0;i<this.args.length;i++)
str+="this.args["+i+"],";str=str.slice(0,str.length-1);eval("this.callback("+str+")");}
S2Timer.prototype.oneSecondPassed=function(){this.internal_timer--;this.display();}
S2Timer.prototype.display=function(){if(!$(this.elt))
return;$(this.elt).update(this.internal_timer);}
var g_Birthdate='';function showError(str)
{if(!gErrorDivs||!$(gErrorDivs.msg)||!$(gErrorDivs.ui))
{alert(str)
return;}
if(str)
{$(gErrorDivs.msg).innerHTML=str;var index=str.indexOf("<br")==-1?str.length:str.indexOf("<br");$(gErrorDivs.msg).title=str.substr(0,index);$(gErrorDivs.ui).show();}
else
{$(gErrorDivs.msg).title="";$(gErrorDivs.ui).hide();}}
function validatePhoneNumber(phone)
{var len=phone.length;var re=/^\+?\d+([\+\-\.\s]?\d+)*$/;if((phone.match(re)!=null)&&len>=7&&len<=25)return null;else if(len<7)return gSessionStrings.call_seven_digit_number_required;else return gSessionStrings.call_invalid_number;}
function setBirthdateValidation(birthdateId)
{var birthdate=$(birthdateId);if(!birthdate)
return;Event.observe(birthdate,'keydown',saveBirthdate)
Event.observe(birthdate,'keyup',checkBirthDate)
g_Birthdate=birthdate.value}
function saveBirthdate(evt)
{var birthdate=Event.element(evt);if(isNumberEvt(evt)||isSlashEvt(evt))
g_Birthdate=birthdate.value}
function checkBirthDate(evt)
{if(evt.ctrlKey||evt.keyCode==13||evt.keyCode==37||evt.keyCode==39)
return true;$('sdateMonth').className="validationNormal"
$('sdateDay').className="validationNormal"
$('sdateYear').className="validationNormal"
var birthdate=Event.element(evt);if(!isDelete(evt)&&!isNumberEvt(evt)&&!isSlashEvt(evt))
{birthdate.value=g_Birthdate
return false}
var currVal=birthdate.value;var mm=currVal.substr(0,2);if(mm.length<2)
{g_Birthdate=birthdate.value
return true}
var iValue=parseFloat(mm);if(!isInt(iValue)||iValue<1||iValue>12)
{$('sdateMonth').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}
if(currVal.length>=3)
{if(currVal.substr(2,1)!='/')
{$('sdateMonth').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}}
$('sdateMonth').className="validationOK"
var dd=currVal.substr(3,2);if(dd.length<2)
{g_Birthdate=birthdate.value
return true}
iValue=parseFloat(dd);if(!isInt(iValue)||dd<1||dd>31)
{$('sdateDay').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}
if(currVal.length>=6)
{if(currVal.substr(5,1)!='/')
{$('sdateDay').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}}
$('sdateDay').className="validationOK"
var yyyy=currVal.substr(6);if(yyyy.length<4)
{g_Birthdate=birthdate.value
return true}
if(yyyy.length>4)
{$('sdateYear').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}
var now=new Date();var thisyear=now.getFullYear();iValue=parseFloat(yyyy);if(!isInt(iValue)||yyyy<(thisyear-100)||yyyy>thisyear)
{$('sdateYear').className="validationError"
if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}
if(!dateCheck(mm,dd,yyyy))
{if(evt.keyCode==8||evt.keyCode==46)
return true;else
{birthdate.value=g_Birthdate
return false}}
$('sdateYear').className="validationOK"
g_Birthdate=birthdate.value
return true;}
function dateCheck(mm,dd,yyyy)
{var year=parseFloat(yyyy);var month=parseFloat(mm);var day=parseFloat(dd);if(month!='')
{if(month==4||month==6||month==9||month==11)
{if(day>30){showError(gErrorStrings.validation_month)
return false;}}
if(month==2)
{if(parseFloat(year)%4!=0&&day=="29")
{showError(gErrorStrings.validation_feb28)
return false;}
else if(day==30||day==31)
{showError(gErrorStrings.validation_feb29)
return false;}}
return checkAge(year,month,day);}
return false;}
function checkAge(year,month,day)
{month=month-1;var min_age=18;var theirDate=new Date((year+min_age),month,day);var today=new Date;if((today.getTime()-theirDate.getTime())<0){showError(gErrorStrings.age18);return false;}
return true;}
function isNumberEvt(evt){return((evt.keyCode>47&&evt.keyCode<58)||(evt.keyCode>95&&evt.keyCode<106))}
function isDelete(evt){return(evt.keyCode==46||evt.keyCode==8)}
function isSlashEvt(evt){return(evt.keyCode==191||evt.keyCode==111)}
function validateSSN(ssn){if((ssn.length==11)||(ssn.length==9)){var segments=ssn.split("-")
if((segments.length==3)){if((segments[0].length==3)&&(segments[1].length==2)&&(segments[2].length==4)){for(var i=0;i<3;i++){if(isNaN(segments[i]))
return false;}
return true;}}
else{if((segments.length==1)&&(!isNaN(ssn)))
return true;}}
return false;}
var Validator=Class.create();Validator.prototype={initialize:function(className,error,test,options){if(typeof test=='function'){this.options=$H(options);this._test=test;}else{this.options=$H(test);this._test=function(){return true};}
this.error=error||'Validation failed.';this.className=className;},test:function(v,elm){return(this._test(v,elm)&&this.options.all(function(p){return Validator.methods[p.key]?Validator.methods[p.key](v,elm,p.value):true;}));}}
Validator.methods={pattern:function(v,elm,opt){return Validation.get('IsEmpty').test(v)||opt.test(v)},minLength:function(v,elm,opt){return v.length>=opt},maxLength:function(v,elm,opt){return v.length<=opt},min:function(v,elm,opt){return v>=parseFloat(opt)},max:function(v,elm,opt){return v<=parseFloat(opt)},notOneOf:function(v,elm,opt){return $A(opt).all(function(value){return v!=value;})},oneOf:function(v,elm,opt){return $A(opt).any(function(value){return v==value;})},is:function(v,elm,opt){return v==opt},isNot:function(v,elm,opt){return v!=opt},equalToField:function(v,elm,opt){return v==$F(opt)},notEqualToField:function(v,elm,opt){return v!=$F(opt)},include:function(v,elm,opt){return $A(opt).all(function(value){return Validation.get(value).test(v,elm);})}}
var Validation=Class.create();Validation.prototype={initialize:function(form,options){this.options=Object.extend({onSubmit:true,stopOnFirst:false,immediate:false,focusOnError:true,useTitles:false,onFormValidate:function(result,form){},onElementValidate:function(result,elm){}},options||{});this.form=$(form);if(this.options.onSubmit)Event.observe(this.form,'submit',this.onSubmit.bind(this),false);if(this.options.immediate){var useTitles=this.options.useTitles;var callback=this.options.onElementValidate;Form.getElements(this.form).each(function(input){Event.observe(input,'blur',function(ev){Validation.validate(Event.element(ev),{useTitle:useTitles,onElementValidate:callback});});if(input.type.toLowerCase()=="hidden"){Event.observe(input,'s2Event:blur',function(ev){Validation.validate(Event.element(ev),{useTitle:useTitles,onElementValidate:callback});});}});}},onSubmit:function(ev){if(!this.validate())Event.stop(ev);},validate:function(){var result=false;var useTitles=this.options.useTitles;var callback=this.options.onElementValidate;if(this.options.stopOnFirst){result=Form.getElements(this.form).all(function(elm){return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback});});}else{result=Form.getElements(this.form).collect(function(elm){return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback});}).all();}
if(!result&&this.options.focusOnError){var input=Form.getElements(this.form).findAll(function(elm){return $(elm).hasClassName('validation-failed')}).first();if(input.type!="hidden"){input.focus()}}
this.options.onFormValidate(result,this.form);return result;},reset:function(){Form.getElements(this.form).each(Validation.reset);}}
Object.extend(Validation,{validate:function(elm,options){options=Object.extend({useTitle:false,onElementValidate:function(result,elm){}},options||{});elm=$(elm);var cn=elm.classNames();return result=cn.all(function(value){var test=Validation.test(value,elm,options.useTitle);options.onElementValidate(test,elm);return test;});},test:function(name,elm,useTitle){var v=Validation.get(name);var prop='__advice'+name.camelize();try{if(Validation.isVisible(elm)&&!v.test($F(elm),elm)){if(!elm[prop]){var advice=Validation.getAdvice(name,elm);if(advice==null){var errorMsg=useTitle?((elm&&elm.title)?elm.title:v.error):v.error;advice='<div class="validation-advice" id="advice-'+name+'-'+Validation.getElmID(elm)+'" style="display:none">'+errorMsg+'</div>'
switch(elm.type.toLowerCase()){case'checkbox':case'radio':var p=elm.parentNode;if(p){new Insertion.Bottom(p,advice);}else{new Insertion.After(elm,advice);}
break;default:new Insertion.After(elm,advice);}
advice=Validation.getAdvice(name,elm);}
if(typeof Effect=='undefined'){advice.style.display='block';}else{new Effect.Appear(advice,{duration:1});}}
elm[prop]=true;elm.removeClassName('validation-passed');elm.addClassName('validation-failed');return false;}else{var advice=Validation.getAdvice(name,elm);if(advice!=null)advice.hide();elm[prop]='';elm.removeClassName('validation-failed');elm.addClassName('validation-passed');return true;}}catch(e){throw(e)}},isVisible:function(elm){while(elm.tagName!='BODY'){if(!$(elm).visible())return false;elm=elm.parentNode;}
return true;},getAdvice:function(name,elm){return $('advice-'+name+'-'+Validation.getElmID(elm))||$('advice-'+Validation.getElmID(elm));},getElmID:function(elm){return elm.id?elm.id:elm.name;},reset:function(elm){elm=$(elm);var cn=elm.classNames();cn.each(function(value){var prop='__advice'+value.camelize();if(elm[prop]){var advice=Validation.getAdvice(value,elm);advice.hide();elm[prop]='';}
elm.removeClassName('validation-failed');elm.removeClassName('validation-passed');});},add:function(className,error,test,options){var nv={};nv[className]=new Validator(className,error,test,options);Object.extend(Validation.methods,nv);},addAllThese:function(validators){var nv={};$A(validators).each(function(value){nv[value[0]]=new Validator(value[0],value[1],value[2],(value.length>3?value[3]:{}));});Object.extend(Validation.methods,nv);},get:function(name){return Validation.methods[name]?Validation.methods[name]:Validation.methods['_LikeNoIDIEverSaw_'];},methods:{'_LikeNoIDIEverSaw_':new Validator('_LikeNoIDIEverSaw_','',{})}});Validation.add('IsEmpty','',function(v){return((/^\s*$/.test(v)));});Validation.addAllThese([['required',gCommonErrors.required,function(v){return!Validation.get('IsEmpty').test(v);}],['validate-number',gCommonErrors.number,function(v){return Validation.get('IsEmpty').test(v)||(!isNaN(v)&&!/^\s+$/.test(v));}],['validate-digits',gCommonErrors.digits,function(v){return Validation.get('IsEmpty').test(v)||!/[^\d]/.test(v);}],['validate-alpha',gCommonErrors.alpha,function(v){return Validation.get('IsEmpty').test(v)||/^[a-zA-Z]+$/.test(v)}],['validate-alpha-more',gCommonErrors.alpha_more,function(v){return Validation.get('IsEmpty').test(v)||/^([a-zA-Z\s\-']+)$/.test(v)}],['validate-alphanum',gCommonErrors.alphanum,function(v){return Validation.get('IsEmpty').test(v)||!/\W/.test(v)}],['validate-ALPHANUM',gCommonErrors.alphanum,function(v){return Validation.get('IsEmpty').test(v)||/\w/.test(v)}],['validate-date',gCommonErrors.date,function(v){var test=new Date(v);return Validation.get('IsEmpty').test(v)||!isNaN(test);}],['validate-email',gCommonErrors.email,function(v){return Validation.get('IsEmpty').test(v)||/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v)}],['validate-url',gCommonErrors.url,function(v){return Validation.get('IsEmpty').test(v)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)}],['validate-zip-length',gCommonErrors.ziplength,function(v){return v.length>4;}],['validate-zipcode',gCommonErrors.zipcode,function(v){return Validation.get('IsEmpty').test(v)||/^[a-zA-Z0-9\- ]+$/.test(v);}],['validate-date-au',gCommonErrors.date_au,function(v){if(Validation.get('IsEmpty').test(v))return true;var regex=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!regex.test(v))return false;var d=new Date(v.replace(regex,'$2/$1/$3'));return(parseInt(RegExp.$2,10)==(1+d.getMonth()))&&(parseInt(RegExp.$1,10)==d.getDate())&&(parseInt(RegExp.$3,10)==d.getFullYear());}],['validate-currency-dollar',gCommonErrors.currency_dollar,function(v){return Validation.get('IsEmpty').test(v)||/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)}],['validate-currency',gCommonErrors.currency,function(v){return Validation.get('IsEmpty').test(v)||/^([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)}],['validate-selection',gCommonErrors.selection,function(v,elm){return elm.options?elm.selectedIndex>0:!Validation.get('IsEmpty').test(v);}],['validate-one-required',gCommonErrors.one_required,function(v,elm){var p=elm.parentNode;var options=p.getElementsByTagName('INPUT');return $A(options).any(function(elm){return $F(elm);});}],['security-code-length',gCommonErrors.code_length,function(v){return Validation.get('IsEmpty').test(v)||v.length==3||v.length==4;}]]);Validation.add('validation-credit-card',gCommonErrors.credit_card,function(v){return validatePaymentCreditCard(v);});Validation.add('validation-exp-date',gCommonErrors.exp_date,function(v){return verifyExpirationDate();});Validation.add('validation-full-name',gCommonErrors.fullname,function(v){return Validation.get('IsEmpty').test(v)||/^([a-zA-Z]+)\s([\sa-zA-Z]+)$/.test(v)});Validation.add('validation-address',gCommonErrors.address,function(v){return Validation.get('IsEmpty').test(v)||/^[^<>"'&]+$/.test(v)});Validation.add('validation-password',gCommonErrors.password,function(v){return Validation.get('IsEmpty').test(v)||!/\s/.test(v)});Validation.add("validate-identical",gCommonErrors.identical,function(v){return Validation.get('IsEmpty').test(v)||v==$F("password");});Validation.add('validation-phone-number',gCommonErrors.phone_number,function(v){return validatePhoneNumber(v);});var g_displaySupporterDisconnectMessage=true;var g_resumeSession;var gFixScore=0;var gSupporterConnectionTimer=5000;var gPhoneCallingStatusTimer=5000;var gConnectionTimeoutTimerId;var g_isResolutionApprovalReached=false;var g_stepNumber;var g_isPriceTypeFreeByExpert=false;function initCustomerSession()
{showChatWindow();saveSessionEvent({user:gCurrentUser,event:{action:SE_SP_LOADED,description:"Service page opened and done loading"},sessionIdList:[g_support_sessionId]});initChat({widgetId:"dCS",partnerJabber:gPartnerUser.jabberUserName,partnerName:gPartnerUser.displayUserName,workflowId:g_workflowId,sessionId:g_support_sessionId});gChats[SERVICE_PAGE_WIDGET_ID].onChatLoaded();refreshUIState();gConnectionTimeoutTimerId=connectionTimeout.delay(g_WaitingTime);Event.observe(window,'beforeunload',onBeforeUnloadServicePage);Event.observe(window,"unload",onCloseServicePage);if(g_resumeSession){showOverlayServicePage();}}
function connectionTimeout(){if(!g_resumeSession){$("dCSLOverlayPreloader").down(".connectionFailed").show()
setWarningOnClose(g_closeWarnings.nothing);}}
function showOverlayServicePage(){clearTimeout(gConnectionTimeoutTimerId);if($("dCSLOverlayServicePage")){$("dCSLOverlayServicePage").show();}
if($("dCSLOverlayPreloader")){$("dCSLOverlayPreloader").hide();}}
function moveOverlayServicePage(doReset){if($("dCSLPaymentPage").visible())
return;var x_offset=270;if(doReset){x_offset=-x_offset;}
var dur=Math.abs(x_offset)*0.005;new Effect.Move($("dCSLOverlayServicePage"),{x:x_offset,y:0,duration:dur})}
function refreshUIState(currentState,isPaymentSettled,supportPackageName,originalJobOfferPriceType)
{if(!g_flowStep)return;var stepNumber=0;var LAST_STEP=3;var steps={1:supporterAskToContact,2:scopeOfWorkIsSet,3:displaySessionResolution,4:displayThankYouMessage};if(!currentState)
{currentState=g_flowStep.currentState;if(!currentState)currentState=SUPPORT_REQUEST_ACCEPTED;var sessionReport=null;if(g_flowStep.additionalFlowData&&g_flowStep.additionalFlowData.sessionReport)
sessionReport=g_flowStep.additionalFlowData.sessionReport;var jobOffer=null;if(g_flowStep.additionalFlowData&&g_flowStep.additionalFlowData.jobOffer)
jobOffer=g_flowStep.additionalFlowData.jobOffer}
switch(currentState)
{case JOB_OFFER_CREATION:case SUPPORT_REQUEST_ACCEPTED:case CONSULTANT_DISPATCHE_APPROVE:stepNumber=1;break;case CUSTOMER_DISPATCHE_APPROVE:stepNumber=1;g_FORWARD_OR_DISPATCH=g_CUSTOMER_DISPATCH_REQUEST;displayDispatchRequest();break;case AGREE_JOB_OFFER:stepNumber=1;displayJobOffer(jobOffer,isPaymentSettled,originalJobOfferPriceType);break;case PAY:stepNumber=1;displayPAYstate(jobOffer);break;case IN_SESSION:stepNumber=2;break;case CUSTOMER_FEEDBACK:stepNumber=3;break;case END:stepNumber=4;break;case AWAITING_SESSION_RESUME_RESPONSE:case AWAITING_RESUME_LEFT_OPEN_SESSION:enableStep(1);enableStep(2);g_resumeSession=new S2ResumeSession({workflowId:g_workflowId,supporter:{displayUserName:gPartnerUser.displayUserName}});g_resumeSession.connect();Event.observe($("dCustomerSessionLight").down(".closeWin"),"click",function(){g_resumeSession.cancel();g_resumeSession.close();});break;default:stepNumber=0;}
if(stepNumber<LAST_STEP)
{if(!g_resumeSession){displayConnecting();}
initSession();}
if(stepNumber>0)
{for(var i=1;i<=stepNumber;i++)
{if(i==stepNumber)
steps[i]();else
enableStep(i);}
for(i=stepNumber+1;i<=LAST_STEP;i++)
disableStep(i)}}
function enableStep(stepNumber)
{g_stepNumber=stepNumber;for(var i=1;i<=stepNumber;i++){$('imgStep'+i).src=gCSUrls['step'+i];}
$('dSessionProgressLabel').innerHTML=gCSStrings['step'+stepNumber+'title'];}
function disableStep(stepNumber){$('imgStep'+stepNumber).src=gCSUrls['step'+stepNumber+'_disabled'];}
function displayConnecting()
{g_currentMsg.from=gJabberConnection.supportSpaceUsername;g_currentMsg.body="<div id='dConnecting'>"+gCSStrings.supporter_connecting+"</div>";displayMessage(false,false,0)}
function showChatWindow(){$("dCS").show();}
function showSupporterConnectedNotification(){gChats[SERVICE_PAGE_WIDGET_ID].displayTypingNotification(SUPPORTER_CONNECTED,true);setTimeout(function(){gChats[SERVICE_PAGE_WIDGET_ID].displayTypingNotification(SUPPORTER_CONNECTED,false);},gSupporterConnectionTimer);initCallmeButton();showChatWindow();}
function showSupporterConnection(bool)
{g_currentMsg.from=gJabberConnection.supportSpaceUsername;if(bool)
{showSupporterConnectedNotification();if($('spanDisconnect'))
{$('spanDisconnect').up().style.color='#9A9A9A';$('spanDisconnect').replace($('spanDisconnect').innerHTML);g_currentMsg.body=gCSStrings.supporter_reconnect;displayMessage(false);}
if($('dResume'))
$('dResume').up('.dCSChatMsg').remove();}
else
{gChats[SERVICE_PAGE_WIDGET_ID].displayTypingNotification(SUPPORTER_DISCONNECTED,true);gChats[SERVICE_PAGE_WIDGET_ID].noMsgTimer.stop();if(g_displaySupporterDisconnectMessage)
{if(g_stepNumber<=1||(g_isPriceTypeFreeByExpert&&!g_isResolutionApprovalReached)){g_currentMsg.body=gCSStrings.supporter_disconnect1+' <span class="linkTxt" id="spanDisconnect" onclick="disconnectAndHideConversation();displayThankYouMessage();">'+gCSStrings.supporter_disconnect2+'</span> '+gCSStrings.supporter_disconnect3a;displayMessage(false);}
else if(!g_isResolutionApprovalReached){g_currentMsg.body=gCSStrings.supporter_disconnect1+' <span class="linkTxt" id="spanDisconnect" onclick="displayFeedback()">'+gCSStrings.supporter_disconnect2+'</span> '+gCSStrings.supporter_disconnect3;displayMessage(false);handleBeforeFeedback();}
disableCallMeButton();terminateAfterSupporterDisconnect();}}
setConversationActive(bool);}
function terminateAfterSupporterDisconnect()
{supportRequestFlow.terminateAfterSupporterDisconnect(g_workflowId,{callback:function(){},errorHandler:function(errorString,exception){}});}
function setConversationActive(bool)
{gChats[SERVICE_PAGE_WIDGET_ID].disableChat(!bool,false);if(!bool){disableCallMeButton();}}
function enableServicePage(){showOverlayServicePage();showSupporterConnection(true);}
function displayMessage(encode,stepNum,whereToInsert)
{gChats[SERVICE_PAGE_WIDGET_ID].updateChatZoneWithMessage(g_currentMsg,encode,stepNum,whereToInsert);}
function supporterAskToContact()
{enableStep(1);}
function initCallmeButton(){$('callmeButton').src=gCSUrls.call_me_regular;$('callmeButton').className="linkImg";$('callmeButton').alt=gCSStrings.call_me_tlp.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName);$('callmeButton').disabled=false;Event.observe($('callmeButton'),'mousedown',function(){$('callmeButton').src=gCSUrls.call_me_pressed});Event.observe($('callmeButton'),'mouseup',function(){$('callmeButton').src=gCSUrls.call_me_regular});Event.observe($('callmeButton'),'mouseover',function(){$('callmeButton').src=gCSUrls.call_me_over});Event.observe($('callmeButton'),'mouseout',function(){$('callmeButton').src=gCSUrls.call_me_regular});Event.observe($('callmeButton'),'click',displayCallRequest);}
function disableCallMeButton(){$('callmeButton').replace('<img id="callmeButton" src="'+gCSUrls.call_me_disable+'" disabled/>');}
function displayCallRequest(phoneCallId)
{var expertRequest='';var denyAnswer=gSessionStrings.cancel;if(isInt(phoneCallId))
{expertRequest=gCSStrings.phone_call_request.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName)+'<br/>';denyAnswer=gSessionStrings.decline;}
phoneCallId=isInt(phoneCallId)?phoneCallId:-1;if($("customerPhoneRequest"))
{var phoneRequestDiv=$("customerPhoneRequest");phoneRequestDiv.innerHTML=gCSStrings.phone_call_rejected;phoneRequestDiv.parentNode.parentNode.style.color='black';phoneRequestDiv.id='';}
g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div class="dRequest" id="customerPhoneRequest">'+'<div>'+
expertRequest+
gCSStrings.phone_call_enter_number1+'<br/>'+'<font style="font-size:9px">'+gCSStrings.phone_call_enter_number2+'</font>'+'</div>'+'<div style="margin-top:6px;width:100%">'+'<input type="text" id="customerPhonePrefix" class="customerPhonePrefix grayBorderInput" maxlength="3" value="1"/>'+'<input type="text" id="customerPhoneNumber" class="customerPhoneNumber grayBorderInput" maxlength="16"/>'+'</div>'+'<div class="underFieldText">'+gCSStrings.phone_call_help+'</div>'+'<div class="sError"></div>'+'<div style="margin-top:3px">'+'<div id="dRequestDeny" class="dRequestDeny" onclick="requestCallResponse(this,DECLINED,'+phoneCallId+')">'+denyAnswer+'</div>'+'<div id="dRequestAcceptId" class="dRequestAccept" onclick="requestCallResponse(this,CALL,'+phoneCallId+')">'+gSessionStrings.call+'</div>'+'</div>'+'</div>';displayMessage(false);var focusPhoneField=function(){$("customerPhoneNumber").focus();}
setTimeout(focusPhoneField,500);}
function requestCallResponse(oElt,response,phoneCallId)
{var callAgreed=(response==CALL);var customerPhone=$('customerPhonePrefix').value+$('customerPhoneNumber').value;var errorDiv=$(oElt).up('.dCSChatMsg').down('.sError');errorDiv.hide();if(callAgreed)
{var validPhone=validatePhoneNumber(customerPhone);if(validPhone!=null)
{errorDiv.update(validPhone)
errorDiv.show();return;}}
disableRequest(oElt);$('customerPhonePrefix').id='customerPhonePrefixDisabled'
$('customerPhoneNumber').id='customerPhoneNumberDisabled'
if(phoneCallId>=0)
phoneCallManager.acceptSupporterCallRequest(phoneCallId,callAgreed,customerPhone,{callback:function(){}});else if(callAgreed)
phoneCallManager.submitCustomerCallRequest(g_support_sessionId,customerPhone,{callback:function(){}});}
function terminateCustomerSession()
{g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body=gCSStrings.gotoHomePage1+' <a href="'+gCSUrls.homeURL+'">'+gCSStrings.gotoHomePage2+'</a> '+gCSStrings.gotoHomePage3;displayMessage(false);setConversationActive(false);setWarningOnClose(g_closeWarnings.nothing);g_displaySupporterDisconnectMessage=false;enableStep(3);}
function displayJobOffer(jobOffer,isPaymentSettled,originalJobOfferPriceType)
{if(!jobOffer||typeof(isPaymentSettled)==typeof(undefined)||isPaymentSettled==null)return;var includes=jobOffer.offerInclude?jobOffer.offerInclude:'-';var not_includes=jobOffer.offerDoesNotInclude?jobOffer.offerDoesNotInclude:'-';var problem_description=jobOffer.problemDescription?jobOffer.problemDescription:'-';var time=jobOffer.timeEstimation?jobOffer.timeEstimation:0;var priceType=jobOffer.jobOfferPriceType;var originalPriceType=originalJobOfferPriceType?originalJobOfferPriceType:priceType;var isSupportPackageBased=jobOffer.supportPackage!=null;var intro=time>0?gCSStrings.job_offer_intro+" "+gCSStrings.within+" "+time+" "+gCSStrings.minutes:gCSStrings.job_offer_intro;var price=createJobOfferPriceDisplay(priceType,jobOffer.price,isPaymentSettled,true,isSupportPackageBased);var priceWithoutComments=createJobOfferPriceDisplay(priceType,jobOffer.price,isPaymentSettled,false,isSupportPackageBased);var session_type;if(isSupportPackageBased){session_type=jobOffer.supportPackage.name;}else{var isFreeByExpert=isPriceTypeFreeByExpert(priceType);if(isFreeByExpert||(priceType=='supportPackageBySupporter'&&jobOffer.price==0)){session_type=gSessionStrings.free;}else{session_type=gCSStrings[originalPriceType];}}
var sessionTypeHtml=session_type?'<div class="bold">'+gCSStrings.session_type+':</div><div>'+session_type+'</div>':"";var request;if(isFreeByExpert||(priceType=='supportPackageBySupporter'&&jobOffer.price==0))
request='<div>'+gCSStrings.job_offer_free_request+'</div>';else
{request='<hr/><div><div style="float:left;margin:0 7px 5px 0">';if(isPaymentSettled){if(priceType=="freePrepaidPackageSession"){request+=gCSStrings.job_offer_coupon_prepaid_request.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName);}else{request+=gCSStrings.offer_no_cost;}}else{request+='<div style="float:left;padding-right:6px;"><img src="'+gCSUrls.shopping_cart+'" alt="" align="absmiddle"/></div><div style="float:left;width:236px;">'
if(priceType=="fixed"){request+=gCSStrings.job_offer_coupon_request.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName);}
else{request+=gCSStrings.job_offer_request.replace(/###PRICE###/g,priceWithoutComments);}
request+='</div>';}
request+='</div><div style="clear:both"></div></div>'}
g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div style="color:#000000;">'+'<div class="bold">'+intro+'.</div>'+'<div class="bold" style="padding:10px 0 10px 0">'+gCSStrings.offer_price+': '+price+'</div>'+
sessionTypeHtml+'<div class="bold">'+gCSStrings.problem_description+':</div>'+'<div>'+htmlEnc(problem_description)+'</div>'+'<div class="bold">'+gCSStrings.offer_includes+':</div>'+'<div>'+htmlEnc(includes)+'</div>'+'<div class="bold">'+gCSStrings.offer_notincludes+':</div>'+'<div>'+htmlEnc(not_includes)+'</div>'+'</div>'+'<div class="dRequest darkBlue">'+'<div>'+
request+'<div></div>'+'<div>'+'<div class="dRequestAccept" onclick="jobOfferResponse(this,ACCEPTED, \''+priceType+'\''+','+isPaymentSettled+',\''+jobOffer.price+'\','+isSupportPackageBased+')">'+gSessionStrings.accept+'</div>'+'<div class="dRequestDeny" onclick="jobOfferResponse(this,DECLINED, \''+priceType+'\''+','+isPaymentSettled+',\''+jobOffer.price+'\','+isSupportPackageBased+')">'+gSessionStrings.decline+'</div>'+'</div>'+'<div class="clearboth"></div>'+'</div>'+'</div>';displayMessage(false);}
function createJobOfferPriceDisplay(jobOfferPriceType,jobOfferPrice,wasPaymentAlreadySettled,displayPricecomments,isSupportPackageBased)
{var sPriceDisplay;var sPriceComments="";if(isPriceTypeFreeByExpert(jobOfferPriceType)){sPriceDisplay=gSessionStrings.free;}else{if(jobOfferPriceType=="freePrepaidPackageSession"){sPriceDisplay=gCSStrings.offer_already_paid;}else{if(jobOfferPriceType=="fixed"){sPriceDisplay=gCSStrings.job_offer_price_coupon;}else{sPriceDisplay='$'+parseFloat(jobOfferPrice).toFixed(2);sPriceComments=' ('+gCSStrings.money_back+')';sPriceDisplay=(displayPricecomments&&!wasPaymentAlreadySettled)?sPriceDisplay+sPriceComments:sPriceDisplay;}
if(wasPaymentAlreadySettled){sPriceDisplay=displayPricecomments?"<strike>"+sPriceDisplay+"</strike> "+gCSStrings.offer_already_paid+sPriceComments:sPriceDisplay;}}}
return sPriceDisplay;}
function jobOfferResponse(oElt,response,priceType,isPaymentSettled,price,isSupportPackageBased)
{var dResponses=$(oElt).up();var dRequest=dResponses.previous();var jobOfferAgreed=(response==ACCEPTED);var sJobOfferPriceDisplay=createJobOfferPriceDisplay(priceType,price,isPaymentSettled,false,isSupportPackageBased);supportRequestFlow.agreeJobOffer(g_workflowId,jobOfferAgreed,{callback:function(){if(isPaymentSettled){if(jobOfferAgreed)
if(priceType=='freePrepaidPackageSession')
dRequest.up().innerHTML=gCSStrings.offer_prepaid_accepted.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName);else if(priceType=='fixed'&&price!=0&&!isSupportPackageBased)
dRequest.up().innerHTML=gCSStrings.offer_forwarded_accepted.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName);else
dRequest.up().innerHTML=gCSStrings.offer_accepted.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName).replace(/###PRICE###/g,sJobOfferPriceDisplay);else
if(priceType=='freePrepaidPackageSession')
dRequest.up().innerHTML=gCSStrings.offer_prepaid_declined.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName);else if(priceType=='fixed'&&price!=0&&!isSupportPackageBased)
dRequest.up().innerHTML=gCSStrings.offer_forwarded_declined.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName);else
dResponses.up().innerHTML=gCSStrings.offer_declined.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName).replace(/###PRICE###/g,sJobOfferPriceDisplay);}
else{if(jobOfferAgreed){if(isPriceTypeFreeByExpert(priceType)){dRequest.up().innerHTML=gCSStrings.offer_accepted.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName).replace(/###PRICE###/g,sJobOfferPriceDisplay);g_isPriceTypeFreeByExpert=true;}
else if(priceType=='supportPackageBySupporter'&&price==0){dRequest.up().innerHTML=gCSStrings.offer_accepted.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName).replace(/###PRICE###/g,sJobOfferPriceDisplay);}
else{dRequest.innerHTML=gCSStrings.offer_accepted.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName).replace(/###PRICE###/g,sJobOfferPriceDisplay);if(priceType=="fixed"){dResponses.innerHTML='<div id="dOpenPayment"><span class="linkTxt" onclick="openPaymentPage()">'+gSessionStrings.Click_here+'</span> '+gCSStrings.offer_settle_coupon;}else{dResponses.innerHTML='<div id="dOpenPayment"><span class="linkTxt" onclick="openPaymentPage()">'+gSessionStrings.Click_here+'</span> '+gCSStrings.offer_settle;}
gChats[SERVICE_PAGE_WIDGET_ID].scrollDown();openPaymentPage();}}
else{if(isPriceTypeFreeByExpert(priceType)){dResponses.up().innerHTML=gCSStrings.offer_declined.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName).replace(/###PRICE###/g,sJobOfferPriceDisplay);}
else if(priceType=='freePrepaidPackageSession'){dResponses.up().innerHTML=gCSStrings.offer_prepaid_declined.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName);}
else{dResponses.up().innerHTML=gCSStrings.offer_declined.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName).replace(/###PRICE###/g,sJobOfferPriceDisplay);}}}}});gChats[SERVICE_PAGE_WIDGET_ID].scrollDown();}
function displayPAYstate(jobOffer)
{if(!jobOffer)return;var includes=jobOffer.offerInclude?jobOffer.offerInclude:'-';var not_includes=jobOffer.offerDoesNotInclude?jobOffer.offerDoesNotInclude:'-';var problem_description=jobOffer.problemDescription?jobOffer.problemDescription:'-';var time=jobOffer.timeEstimation?jobOffer.timeEstimation:'-';var price=jobOffer.price?jobOffer.price:'-';var priceType=jobOffer.jobOfferPriceType;var isSupportPackageBased=jobOffer.serviceType=='supportPackageBased';var sJobOfferPriceDisplay=createJobOfferPriceDisplay(priceType,price,false,false,isSupportPackageBased);g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div style="color:#000000;">'+'<div style="font-weight:bold;">'+gCSStrings.problem_description+':</div>'+'<div>'+problem_description+'</div>'+'<div style="font-weight:bold;">'+gCSStrings.offer_includes+':</div>'+'<div>'+includes+'</div>'+'<div style="font-weight:bold;">'+gCSStrings.offer_notincludes+':</div>'+'<div>'+not_includes+'</div>'+'<div style="font-weight:bold;">'+gCSStrings.offer_time+':'+time+' '+gCSStrings.minutes+'</div>'+'<div style="font-weight:bold;">'+gCSStrings.offer_price+': $'+price+'</div>'+'</div>'+'<div class="dRequest">'+'<div>'+'<div>'+gCSStrings.offer_accepted.replace(/###SUPPORTERNAME###/g,gPartnerUser.displayUserName)+'</div>'+'<div style="float:left;margin-right:7px"><img src="'+gCSUrls.shopping_cart+'" alt=""/></div>'+'<div id="dOpenPayment"><span class="linkTxt" onclick="openPaymentPage()">'+gSessionStrings.Click_here+'</span> '+gCSStrings.offer_settle+'</div>'+'</div>'+'</div>';g_currentMsg.body=g_currentMsg.body.replace(/###PRICE###/g,sJobOfferPriceDisplay);openPaymentPage();displayMessage(false);}
function openPaymentPage()
{moveOverlayServicePage.delay(1);setWarningOnClose(g_closeWarnings.survey);var url=setParamValueUrl("pe","liveSession",gCSUrls.paymentURL);new Effect.Appear("dCSLPaymentPage",{delay:2});var loadIframe=function(){$("paymentPageIframe").src=url;};loadIframe.delay(3);}
function scopeOfWorkIsSet()
{enableStep(2);if($('dOpenPayment'))
$('dOpenPayment').innerHTML='';}
function displaySoftwareActivationKey(properties)
{var softwareName=properties.getValue('softwareName');var softwareLink=properties.getValue('softwareLink');var softwareDownloadLink=properties.getValue('softwareDownloadLink');var activationKey=properties.getValue('softwareActivationKey');var isPaymentSettled=properties.getValue('isPaymentSettled');g_currentMsg.from=PERMISSION_REQUEST;var message_part_1=gCSStrings.support_package_software_message_part1a;if(!(isPaymentSettled))
message_part_1=gCSStrings.support_package_software_message_part1b;var msgBody=message_part_1+' <a target="_blank" href="'+softwareLink+'">'+softwareName+'</a>.<br/>'+gCSStrings.support_package_software_message_part2+' <a target="_blank" href="'+softwareDownloadLink+'">'+gSessionStrings.click_here+'</a>.';if(activationKey!=-1)
msgBody=msgBody+'<br/>'+gCSStrings.support_package_software_message_part3+activationKey;g_currentMsg.body=msgBody;displayMessage(false);}
function displaySessionResolution(properties)
{var sessionResolution=properties.getValue('resolution');if(!sessionResolution)return;g_isResolutionApprovalReached=true;disableRequest($('dLSOAccept'));switch(sessionResolution)
{case'RESOLVED':displayResolutionApproval(gCSStrings.fixText);break;case'PARTIALLY_RESOLVED':displayResolutionApproval(gCSStrings.partiallyResolvedText);break;case'CANT_RESOLVE':displayCantResolve();break;case'UNRESOLVED_CANT_FORWARD':displayUnresolvedCantForward();break;case'UNRESOLVED_DISCONNECTED':displayUnresolvedDisconnect();break;case'FORWARD':displayForwardRequest();break;}}
function displayResolutionApproval(reportResolutionText)
{gFixScore++;g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div class="dRequest">'+'<div>'+reportResolutionText+'</div>'+'<div>'+'<div class="dRequestAccept" onclick="resolutionApprovalResponse(this,ACCEPTED)">'+gCSStrings.agree+'</div>'+'<div class="dRequestDeny" onclick="resolutionApprovalResponse(this,DECLINED)">'+gCSStrings.dontagree+'</div>'+'</div>'+'</div>';displayMessage(false);}
function displayCantResolve()
{g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div class="dRequest">'+'<div>'+gCSStrings.cantResolve+'</div>'+'<div>'+'<div class="dRequestDeny" onclick="resolutionApprovalResponse(this,ACCEPTED)">'+gCSStrings.ok+'</div>'+'</div>'+'</div>';displayMessage(false);}
function displayUnresolvedCantForward()
{g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div class="dRequest">'+'<div>'+gCSStrings.unResolveCantForward1+'</div>'+'<div>'+gCSStrings.unResolveCantForward2+'</div>'+'<div>'+'<div class="dRequestDeny" onclick="resolutionApprovalResponse(this,ACCEPTED)">'+gCSStrings.ok+'</div>'+'</div>'+'</div>';displayMessage(false);}
function displayUnresolvedDisconnect()
{g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div class="dRequest">'+'<div>'+gCSStrings.unResolveDisconnected1+'</div>'+'<div>'+gCSStrings.unResolveDisconnected2+'</div>'+'<div>'+'<div class="dRequestDeny" onclick="resolutionApprovalResponse(this,ACCEPTED)">'+gCSStrings.ok+'</div>'+'<div>'+'</div>';displayMessage(false);}
function resolutionApprovalResponse(oElt,response)
{disableRequest(oElt);var fixAgreed=(response==ACCEPTED);if(fixAgreed)gFixScore++;setWarningOnClose(g_closeWarnings.nothing);g_currentMsg.from=gJabberConnection.supportSpaceUsername;if(g_isPriceTypeFreeByExpert){var text='<div class="dRequest">'+'<div>'+gCSStrings.session_complete_no_feedback+'</div>'+'</div>';g_currentMsg.body=text.replace("###CLICKHERE###",'<span class="linkTxt" onclick="disconnectAndHideConversation();displayThankYouMessage();">'+gSessionStrings.Click_here+'</span>');displayMessage(false);}
else{var text='<div class="dRequest">'+'<div>'+gCSStrings.session_complete+'</div>'+'</div>';g_currentMsg.body=text.replace("###CLICKHERE###",'<span class="linkTxt" onclick="displayFeedback()">'+gSessionStrings.Click_here+'</span>');displayMessage(false);handleBeforeFeedback();}
supportRequestFlow.approveSupportSessionResolution(g_workflowId,fixAgreed,{callback:function(){}});}
function displayUnresolvedLeaveOpen()
{g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div class="dRequest">'+'<div>'+gCSStrings.leaveOpenText+'</div>'+'<div>'+'<div class="dRequestAccept" id="dLSOAccept" onclick="leaveOpenResponse(this,ACCEPTED)">'+gCSStrings.agree+'</div>'+'<div class="dRequestDeny" onclick="leaveOpenResponse(this,DECLINED)">'+gCSStrings.dontagree+'</div>'+'</div>'+'</div>';displayMessage(false);}
function leaveOpenResponse(oElt,response)
{disableRequest(oElt);var leaveOpenAgreed=(response==ACCEPTED);if(leaveOpenAgreed)
{setWarningOnClose(g_closeWarnings.nothing);setConversationActive(false);g_currentMsg.body='<div class="dRequest">'+'<div>'+gCSStrings.leaveOpenApproveText+'</div>'+'</div>';}
else
{g_currentMsg.body='<div class="dRequest">'+'<div>'+gCSStrings.leaveOpenDisapproveText+'</div>'+'</div>';}
displayMessage(false);supportRequestFlow.approveFix(g_workflowId,leaveOpenAgreed,{callback:function(){}});}
function displayDispatchRequest(prop)
{g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div class="dRequest">'+'<div>'+gCSStrings.forward_request+'</div>'+'<div>'+'<div class="dRequestAccept" onclick="dispatchResponse(this,ACCEPTED)">'+gCSStrings.dispatchMe+'</div>'+'<div class="dRequestDeny" onclick="dispatchResponse(this,DECLINED)">'+gCSStrings.noThanks+'</div>'+'</div>'+'</div>';if(prop)
{var forwardedSupporterDisplayName=prop.getValue('forwardedSupporterDisplayName');g_currentMsg.body=g_currentMsg.body.replace(/###SUPPORTERNAME###/g,forwardedSupporterDisplayName);}
displayMessage(false);}
function dispatchResponse(oElt,response)
{var dispatchAgreed=(response==ACCEPTED);var responseText=dispatchAgreed?"":gCSStrings.forward_decline;disableRequest(oElt,responseText);new Ajax.Request(gCSUrls.customerResponseOnDispatchURL,{parameters:{isDispatchAgreed:dispatchAgreed,workflowId:g_workflowId},method:'post',onSuccess:function(){},onFailure:function(){}});}
function displayForwardRequest(prop)
{var scopeOfWork=prop.getValue('scopeOfWork');var forwardedSupporterDisplayName=prop.getValue('forwardedSupporterDisplayName');g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div class="dRequestIntro" style="color:#000000;">'+'<div style="font-weight:bold;">'+gCSStrings.step3title+':</div>'+'<div>'+scopeOfWork+'</div>'+'</div>'+'<div class="dRequest">'+'<div>'+gCSStrings.forward_request+'</div>'+'<div>'+'<div class="dRequestAccept" onclick="forwardResponse(this,ACCEPTED)">'+gCSStrings.forwardMe+'</div>'+'<div class="dRequestDeny" onclick="forwardResponse(this,DECLINED)">'+gCSStrings.noThanks+'</div>'+'</div>'+'</div>';g_currentMsg.body=g_currentMsg.body.replace(/###SUPPORTERNAME###/g,forwardedSupporterDisplayName);displayMessage(false);}
function forwardResponse(oElt,response)
{var fwdAgreed=(response==ACCEPTED);var responseText=fwdAgreed?"":gCSStrings.forward_decline;disableRequest(oElt,responseText);supportRequestFlow.approveFix(g_workflowId,fwdAgreed,{callback:function(){}});}
function switchToNewSession(properties)
{g_workflowId=properties.getValue("workflowId");g_support_sessionId=properties.getValue("supportSessionId");g_isResolutionApprovalReached=false;gPartnerUser.id=properties.getValue("supporterId");gPartnerUser.jabberUserName=properties.getValue("supporterJabberUsername")
gPartnerUser.jabberFullUserName=gJabberConnection.addJabberDomainSuffix(properties.getValue("supporterJabberUsername"))
gPartnerUser.displayUserName=properties.getValue("supporterDisplayUsername")
gChats[SERVICE_PAGE_WIDGET_ID].setWorkflowId(g_workflowId);gChats[SERVICE_PAGE_WIDGET_ID].setSessionId(g_support_sessionId);gChats[SERVICE_PAGE_WIDGET_ID].setPartner({partnerJabber:gPartnerUser.jabberUserName,partnerName:gPartnerUser.displayUserName});var isPaymentSettled=properties.getValue('isPaymentSettled');var supportPackageName=properties.getValue('supportPackageName');var originalJobOfferPriceType=properties.getValue('originalJobOfferPriceType');refreshUIState(SUPPORT_REQUEST_ACCEPTED,isPaymentSettled,supportPackageName,originalJobOfferPriceType);setConversationActive(true);g_currentMsg.from=PERMISSION_REQUEST;var text=g_FORWARD_OR_DISPATCH==g_FORWARD_CONFIRM?gCSStrings.switch_session_forward:gCSStrings.switch_session_dispatch;g_currentMsg.body=text+" "+gPartnerUser.displayUserName+"<hr/>";displayMessage(false)
switchToSupporter({rating:properties.getValue("supporterRating"),picture:properties.getValue("supporterPicture"),displayUserName:gPartnerUser.displayUserName,supporterEstore:properties.getValue("supporterEstore")});}
function switchToSupporter(supporter){if($('supporterPicture').src.indexOf("/images/common/expert_picture_37x41.gif")<0&&supporter.picture==-1)
$('supporterPicture').src=gCSUrls.default_expert_picture;if(supporter.picture!=-1)
$('supporterPicture').src=gCSUrls.expert_picture_path+supporter.picture;$('supporterPicture').alt=supporter.displayUserName;$('supporterNameLink').innerHTML=supporter.displayUserName;gCSUrls.eStore=gCSUrls.eStorePrefix+supporter.supporterEstore;$('supporterNameLink').href=gCSUrls.eStore;$('supporterPictureLink').href=gCSUrls.eStore;}
function handleBeforeFeedback(){setWarningOnClose(g_closeWarnings.feedback);$("dCloseSPConfirm").down("#cancelButton").onclick="void(0)";Event.observe($("dCloseSPConfirm").down("#cancelButton"),"click",function(){onCancelCloseServicePage();if(!$('dCustomerFeedback').visible()){displayFeedback();}});}
function displayFeedback()
{enableStep(3);disconnectAndHideConversation();getCustomerFeedbackView();}
function disconnectAndHideConversation()
{gJabberConnection.jabberDisconnect();$("dCSChat").style.height="350px";$("dChatNotification").hide();$("dCSChatTextFrame").hide();}
function getCustomerFeedbackView()
{var opt={method:'get',onSuccess:function(response){$('dCustomerFeedback').innerHTML=response.responseText;setConversationActive(false);$('dCustomerFeedback').style.width=$('dCSChat').getWidth()+'px';if(Prototype.Browser.Gecko)
$('dCustomerFeedback').style.paddingBottom="4px";$('dCSChat').hide();$('dCustomerFeedback').show();var afterRender=function(){customerFeedback.initFeedback();}
afterRender.defer();},onFailure:function(response)
{alert("failed retreive feedback page for customer"+response.getErrorMessage());}}
new Ajax.Request(gCSUrls.customerFeedbackURL,opt);}
function displayThankYouMessage(){setWarningOnClose(g_closeWarnings.nothing);$('dServiceProgress').hide();$('dCustomerFeedback').hide();$('dCSChat').show();$('dCSChat').update();var checkout_deny_text=gFixScore>1?gCSStrings.checkout_disapprove_fixed.replace(/###CLICKHERE###/g,'<a href="'+gCSStrings.checkout_disapprove_refund_link+'='+g_support_sessionId+'" target="_blank">'+gSessionStrings.click_here+'</a>'):gCSStrings.checkout_disapprove_not_fixed.replace(/###HERE###/g,'<a href="'+gCSStrings.checkout_disapprove_refund_link+'='+g_support_sessionId+'" target="_blank">'+gSessionStrings.here+'</a>');g_currentMsg.from=gJabberConnection.supportSpaceUsername;g_currentMsg.body='<div id="dThankYou">'+'<div class="bold">'+gCSStrings.thanksMsg1+'</div>'+'<div class="close linkTxt" onclick="onCloseServicePage()">'+gCommonStrings.close_window+'</div><hr/>'+'<div>'+gCSStrings.thanksMsg2+'</div>'+'<div><img src="'+gCSUrls.bookmark_btn_regular+'" class="linkImg" alt="Bookmark Expert" onclick="bookmarkExpert()" onmousedown="this.src = \''+gCSUrls.bookmark_btn_pressed+'\'" onmouseup="this.src = \''+gCSUrls.bookmark_btn_regular+'\'" onmouseover="this.src = \''+gCSUrls.bookmark_btn_over+'\'" onmouseout="this.src = \''+gCSUrls.bookmark_btn_regular+'\'"/></div>'+'<div>'+gCSStrings.thanksMsg3+'</div>'+'<div><a href="'+gCSUrls.invite_friend+'" target="_blank"><img src="'+gCSUrls.invite_btn_regular+'" border="0" alt="Invite a Friend" onmousedown="this.src = \''+gCSUrls.invite_btn_pressed+'\'" onmouseup="this.src = \''+gCSUrls.invite_btn_regular+'\'" onmouseover="this.src = \''+gCSUrls.invite_btn_over+'\'" onmouseout="this.src = \''+gCSUrls.invite_btn_regular+'\'"/></a></div>'+'<div class="dRequestSmall">'+checkout_deny_text+'</div>'+'</div>';displayMessage(false);}
function handleRemoteControlRequest(){g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div>'+'<div>'+gCSStrings.rc_request+'</div>'+'<div style="padding-top:5px"><a href="#" onclick="displayRemoteControlForm()">'+gCSStrings.rc_link+'</a></div>'+'</div>';displayMessage(false);}
function displayRemoteControlForm(){openInIframe(gCSStrings.rc_url);if($("remoteControlID")){$("remoteControlID").id="";$("remoteControlPWD").id="";}
var instruction1=Prototype.Browser.IE?gCSStrings.rc_instruction1_ie:gCSStrings.rc_instruction1_ff;g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div class="dRequest">'+'<div>'+instruction1+'</div>'+'<div>'+gCSStrings.rc_instruction2+'</div>'+'<div style="padding-top:5px">'+
gSessionStrings.rc_id+'<input type="text" id="remoteControlID" class="remoteControlId grayBorderInput" value="">&nbsp;&nbsp;&nbsp;&nbsp;'+
gSessionStrings.rc_pwd+'<input type="text" id="remoteControlPWD" class="remoteControlPwd grayBorderInput" value="">'+'</div>'+'<div style="padding-top:5px">'+'<div class="dRequestAccept" onclick="sendRemoteControlAuth()">'+gCommonStrings.send+'</div>'+'<div class="dRequestDeny" onclick="cancelRemoteControlRequest(this)">'+gCommonStrings.cancel+'</div>'+'</div>'+'</div>';displayMessage(false);}
function cancelRemoteControlRequest(oElt){disableRequest(oElt);gJabberConnection.sendMsg(gPartnerUser.jabberFullUserName,g_RC_CANCEL,"",g_workflowId);}
function sendRemoteControlAuth(){var body=new MessageProperties();body.appendParam('id',$("remoteControlID").value);body.appendParam('pwd',$("remoteControlPWD").value);gJabberConnection.sendMsg(gPartnerUser.jabberFullUserName,g_RC_AUTH,body.toString(),g_workflowId);g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div>'+gCSStrings.rc_details_sent+'</div>';displayMessage(false);}
function handleRemoteWebexControlRequest(properties){var attendeeURL=properties.getValue('attendeeURL');g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div class="dWebexLink"><a href="#" onclick="openInIframe(\''+attendeeURL+'\');$$(\'.dWebexLink\').each(function(element){element.update()});">'+gSessionStrings.Click_here+'</a> '+gCSStrings.rc_webex+'</div><br/><div>'+gCSStrings.rc_webex_browser+'<br/>'+gCSStrings.rc_webex_let_expert_know+'</div>';displayMessage(false);}
function bookmarkExpert(){bookmarkUs(gPartnerUser.displayUserName+'@'+gCommonStrings.site_context_bookmark,gCSUrls.eStore);}
function onBeforeUnloadServicePage(evt){if(warningOnClose==g_closeWarnings.feedback||warningOnClose==g_closeWarnings.survey)
evt.returnValue=warningOnClose;}
function onCloseButtonPressed(){if(warningOnClose==g_closeWarnings.nothing){onCloseServicePage();}
else{$("dCloseSPConfirm").down(".dPopupText").update(warningOnClose);$("dCloseSPConfirm").show();$("dCustomerSessionLight").hide();}}
function onCancelCloseServicePage(){$("dCloseSPConfirm").hide();$("dCustomerSessionLight").show();}
function onCloseServicePage(){var body=new MessageProperties();body.appendParam('event','onclose');gJabberConnection.sendMsg(gPartnerUser.jabberFullUserName,g_PAGE_EVENT,body.toString(),g_workflowId);gJabberConnection.jabberDisconnect();gS2StartSession.allowStartSession=true;if(typeof(gS2SolutionStartSession)!=="undefined"){gS2SolutionStartSession.allowStartSession=true;}
saveSessionEvent({user:gCurrentUser,event:{action:SE_CCLOSE,description:"Service Page - Customer:close page"},sessionIdList:[g_support_sessionId]})
if(warningOnClose==g_closeWarnings.survey){openLeavingSurveyPage();}
lightBoxOff();$("dCustomerSessionLight").hide();Event.stopObserving(window,'beforeunload',onBeforeUnloadServicePage);Event.stopObserving(window,"unload",onCloseServicePage);}
function openLeavingSurveyPage(){window.open(gCSUrls.leavingSurveyURL+'?supporterId='+gPartnerUser.id+'&workflowId='+g_workflowId+'&supportRequestId='+g_supportRequestId,'leavingPage','width=500,height=325,resizable=1,toolbar=0,status=0,scrollbars=1');}
function openInIframe(url){$("openLinkIframe").src=url;}
function handleMessage_jsjac(aJSJaCPacket)
{var msgSubject=aJSJaCPacket.getSubject();var msgBody=aJSJaCPacket.getBody();var msgFrom=aJSJaCPacket.getFrom();var threadId=aJSJaCPacket.getThread();debug_connection('handleMessage_jsjac::subject::'+msgSubject+' body::'+msgBody+' from::'+msgFrom+' threadId::'+threadId);if((msgFrom==gJabberConnection.addJabberDomainSuffix(gCurrentUser.jabberUserName))&&(threadId==-100)){gJabberConnection.selfKeepAlivePeriodExec.stop();clearTimeout(gJabberConnection.selfKeepAliveTimer);var connectionCallback=gJabberConnection.getConnectionCallback();if(gMustWaitForGettingSelfKeepAliveToStartSession&&connectionCallback){connectionCallback.onConnect();gJabberConnection.setConnectionCallback(null);}}
if(typeof(g_workflowId)=="undefined"||(threadId!=g_workflowId)||(msgFrom!=gPartnerUser.jabberFullUserName&&msgFrom.indexOf(gJabberConnection.supportSpaceUsername)<0)){debug_connection('handleMessage_jsjac:FILTERED OUT:['+msgSubject+','+msgBody+"]");return;}
g_currentMsg.body=new ChatMessage().decode(msgBody);debug_connection('handleMessage_jsjac::body retrieved');switch(msgSubject)
{case gJabberConnection.feature.chat:g_currentMsg.from=gPartnerUser.jabberUserName;g_currentMsg.name=gPartnerUser.displayUserName;g_currentMsg.body=parseMessageForLinks(g_currentMsg.body);debug_connection('handleMessage_jsjac::chat message');displayMessage(true);break;default:var properties=new MessageProperties();properties.load(msgBody);debug_connection('handleMessage_jsjac::application message');handleApplicationMessages(msgSubject,properties);break;}}
function handleApplicationMessages(msgSubject,properties)
{switch(msgSubject)
{case g_RCTV_REQUEST:handleRemoteControlRequest();break;case g_RCWEBEX_REQUEST:handleRemoteWebexControlRequest(properties);break;case JBMSG_START_CONSULTING:gChats[SERVICE_PAGE_WIDGET_ID].displayTypingNotification(CONSULTING_NOTIFICATION,true);break;case JBMSG_STOP_CONSULTING:gChats[SERVICE_PAGE_WIDGET_ID].displayTypingNotification(CONSULTING_NOTIFICATION,false);break;case JBMSG_JOBOFFER:var oJobOffer=properties.getValue('jobOffer');var isPaymentSettled=properties.getValue('isPaymentSettled');var originalJobOfferPriceType=properties.getValue('originalJobOfferPriceType');displayJobOffer(oJobOffer,isPaymentSettled,originalJobOfferPriceType);break;case g_PAGE_EVENT:debug_connection('handleApplicationMessages::page event');handlePartnerPageEvent(properties);break;case g_SCOPE_OF_WORK_IS_SET:gChats[SERVICE_PAGE_WIDGET_ID].setTypingText();scopeOfWorkIsSet();break;case g_SESSION_REPORT_STEP_FROM_LEAVE_OPEN:break;case RESOLUTION_SET:displaySessionResolution(properties);break;case g_CASE_UNRESOLVED_LEFT_OPEN:displayUnresolvedLeaveOpen();g_displaySupporterDisconnectMessage=false;break;case g_FORWARD_CONFIRM:g_FORWARD_OR_DISPATCH=g_FORWARD_CONFIRM;displayForwardRequest(properties);g_displaySupporterDisconnectMessage=false;break;case g_CASE_CANTRESOLVE:displayCantResolve();g_displaySupporterDisconnectMessage=false;break;case g_CASE_UNRESOLVED_CANTFORWARD:displayUnresolvedCantForward(properties);g_displaySupporterDisconnectMessage=false;break;case g_CASE_UNRESOLVED_DISCONNECTED:displayUnresolvedDisconnect(properties);g_displaySupporterDisconnectMessage=false;break;case g_START_NEW_SUPPORT_REQUEST_FLOW:gChats[SERVICE_PAGE_WIDGET_ID].displayTypingNotification(CONSULTING_NOTIFICATION,false);switchToNewSession(properties);break;case JBMSG_CUSTOMER_FEEDBACK:displayFeedback();break;case g_SESSION_TERMINATED:terminateCustomerSession();break;case g_IS_TYPING:gChats[SERVICE_PAGE_WIDGET_ID].displayTypingNotification(CHAT_NOTIFICATION,true);break;case g_CUSTOMER_DISPATCH_REQUEST:g_FORWARD_OR_DISPATCH=g_CUSTOMER_DISPATCH_REQUEST;displayDispatchRequest(properties);break;case g_RESUME_SESSION_TIMEOUT:g_resumeSession.updateUI({status:"sorry",reason:"noanswer"});break;case g_CUSTOMER_SOFTWARE_ACTIVATION:displaySoftwareActivationKey(properties);break;case g_SUBMIT_CALL_REQUEST:var phoneCallId=properties.getValue('phoneCallId');displayCallRequest(phoneCallId);break;default:}}
function handlePartnerPageEvent(properties)
{var partnerEvent=properties.getValue('event');debug_connection('handlePartnerPageEvent::page event::'+partnerEvent);switch(partnerEvent){case'onload':gJabberConnection.sendUnblockMsg(gPartnerUser,g_workflowId);debug_connection('handlePartnerPageEvent::unblock sent');enableServicePage();saveSessionEvent({user:gCurrentUser,event:{action:SEND_UNBLOCK,description:"Customer sends unblock to "+gPartnerUser.jabberFullUserName},sessionIdList:[g_support_sessionId]});break;case'onclose':case'onrefresh':showSupporterConnection(false);break;default:logme("handlePartnerPageEvent("+partnerEvent+","+properties.toString()+") has been not handled");}}
function setWarningOnClose(msg){warningOnClose=msg;}
function isPriceTypeFreeByExpert(priceType){return priceType=='freeSession'||priceType=='freeTestingSession'||priceType=='freeSessionRedo';}
function S2ResumeSession(oStartSessionParams)
{this.workflowId=oStartSessionParams['workflowId']?oStartSessionParams['workflowId']:-1;this.supporter=oStartSessionParams['supporter']?oStartSessionParams['supporter']:null;this.sessionEndedByUser=false;}
S2ResumeSession.prototype=new Object;S2ResumeSession.prototype.connect=function()
{this.updateUI({status:'calling'});supportRequestFlow.resumeLeftOpenSession(this.workflowId,{callback:function(){},errorHandler:function(status,exception){this.updateUI({status:"sorry",reason:status});}.bind(this)});}
S2ResumeSession.prototype.updateUI=function(oPopupStatus)
{switch(oPopupStatus.status)
{case'calling':g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div id="dResume" class="dRequest">'+'<div>'+gCSStrings.resume+'</div>'+'<div style="text-align:center;margin-top:4px"><img src="'+gCommonUrls.preloader+'" alt=""/></div>'+'<div class="dRequestDeny" onclick="g_resumeSession.cancel()">'+gSessionStrings.cancel+'</div>'+'</div>';break;case'canceled':g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div id="dResume" class="dRequest">'+'<div>'+gCSStrings.resume_canceled+'</div>'+'<div>'+gCSStrings.noanswer1+' <span class="linkTxt" onclick="g_resumeSession.connect()">'+gCSStrings.noanswer2+'</span>,'+' <span class="linkTxt" onclick="g_resumeSession.close()">'+gCSStrings.noanswer3+'</span> '+
gCSStrings.noanswer4+' <span class="linkTxt" onclick="g_resumeSession.end()">'+gCSStrings.noanswer5+'</span> '+
gCSStrings.noanswer6+'</div>'+'</div>';g_currentMsg.body=g_currentMsg.body.replace(/###SUPPORTERNAME###/g,this.supporter.displayUserName);break;case'sorry':switch(oPopupStatus.reason)
{case'busy':case'offline':var statustext=(oPopupStatus.reason=='busy')?gStartSessionStrings.expert_busy:gStartSessionStrings.expert_offline;g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div id="dResume" class="dRequest">'+'<div>'+statustext+'</div>'+'<div>'+gCSStrings.noanswer1+' <span class="linkTxt" onclick="g_resumeSession.close()">'+gCSStrings.noanswer3+'</span> '+
gCSStrings.noanswer4+'&nbsp;<span class="linkTxt" onclick="g_resumeSession.end()">'+gCSStrings.noanswer5+'</span> '+
gCSStrings.noanswer6+'</div>'+'</div>';g_currentMsg.body=g_currentMsg.body.replace(/###SUPPORTERNAME###/g,this.supporter.displayUserName);break;case'noanswer':g_currentMsg.from=PERMISSION_REQUEST;g_currentMsg.body='<div id="dResume" class="dRequest">'+'<div>'+gStartSessionStrings.expert_unavailable+'</div>'+'<div>'+gCSStrings.noanswer1+' <span class="linkTxt" onclick="g_resumeSession.connect()">'+gCSStrings.noanswer2+'</span>,'+' <span class="linkTxt" onclick="g_resumeSession.close()">'+gCSStrings.noanswer3+'</span> '+gCSStrings.noanswer4+' <span class="linkTxt" onclick="g_resumeSession.end()">'+gCSStrings.noanswer5+'</span> '+
gCSStrings.noanswer6+'</div>'+'</div>';g_currentMsg.body=g_currentMsg.body.replace(/###SUPPORTERNAME###/g,this.supporter.displayUserName);break;}
showChatWindow();break;}
$('dCSChat').innerHTML='';displayMessage(false);}
S2ResumeSession.prototype.cancel=function()
{supportRequestFlow.cancelResumeSession(this.workflowId,{callback:function(){this.updateUI({status:'canceled'});setConversationActive(false);}.bind(this),errorHandler:function(errorString,exception){}});}
S2ResumeSession.prototype.close=function()
{setWarningOnClose(g_closeWarnings.nothing);onCloseServicePage();}
S2ResumeSession.prototype.end=function()
{supportRequestFlow.closeLeftOpenSession(this.workflowId,{callback:function(){this.sessionEndedByUser=true;displayFeedback();}.bind(this),errorHandler:function(errorString,exception){}});}
S2ResumeSession.prototype.setSupporter=function(supporter){this.supporter=supporter;}
S2ResumeSession.prototype.setWorkflowId=function(workflowId)
{this.workflowId=workflowId;}
var Feedback=Class.create({initialize:function(){this.numberOfSupporterQuestions=3;this.numberOfCustomerQuestions=5;this.feedbackRating=0;this.defaultWasChanged=false;},initFeedback:function(){this.answersContainer=$("dFeedbackBody");this.additionalComments=$('feedbackAdditionalComments');this.errorDiv=$('dFeedbackValidationError');},getAnsweredQuestionValueAsNumber:function(index)
{var radioGroup=this.answersContainer.select('.answerGroup_'+index);for(var i=0;i<radioGroup.length;i++)
{if(radioGroup[i].checked){return i+1;}}
return-1;},validateFeedbackForm:function(isSupporter)
{var numberOfQuestions=isSupporter?this.numberOfSupporterQuestions:this.numberOfCustomerQuestions;var errors=new Array();var missingQuestionErrorMessage=false;for(var i=0;i<numberOfQuestions;i++){var answeredQuestion=this.getAnsweredQuestionValue(i);if(answeredQuestion==-1&&!missingQuestionErrorMessage){missingQuestionErrorMessage=true;errors.push(gFeedbackStrings.feedback_answer_question);}}
if(isSupporter&&this.feedbackRating==0){errors.push(gFeedbackStrings.feedback_rate_customer);}
var textAdditionalComments=this.additionalComments;if(textAdditionalComments&&textAdditionalComments.value.length>255){errors.push(gCommonErrors["errors.maxlength"].replace('{0}',gFeedbackStrings.feedback_comments).replace('{1}','255'));}
if(textAdditionalComments&&!textAdditionalComments.value.match(g_regExpNoHtmlTags)){errors.push(gCommonErrors["errors.htmlEscape"].replace('{0}',gFeedbackStrings.feedback_comments));}
return errors;},getAnsweredQuestionValue:function(index)
{var radioGroup=this.answersContainer.select('.answerGroup_'+index);for(var i=0;i<radioGroup.length;i++){if(radioGroup[i].checked){return radioGroup[i].value;}}
return-1;},setErrorMessages:function(feedbackErrors)
{if(!this.errorDiv){return;}
this.errorDiv.innerHTML="";for(var i=0;i<feedbackErrors.length;i++){this.errorDiv.innerHTML+="<div> "+feedbackErrors[i]+"</div>";}},setServerReply:function(successBool,errorString,isSupporter){if(successBool){if(isSupporter){this.getSupporterSession().setWarningOnClose(g_closeWarnings.nothing);this.getSupporterSession().getSupporterDesktop().displayEndSession();}else{setWarningOnClose(g_closeWarnings.nothing);displayThankYouMessage();}}else{if(this.errorDiv){this.errorDiv.innerHTML=gFeedbackStrings.feedback_not_saved;}}},getAdditionalComment:function()
{if(this.additionalComments.value!=gSessionStrings.additional_comments){return trim(this.additionalComments.value)+' ';}
else{return' ';}},clearDefaultText:function()
{if(this.defaultWasChanged){return;}
this.defaultWasChanged=true;this.additionalComments.value='';this.additionalComments.style.color='#585858'},clearRadioButtons:function(isSupporter)
{var numberOfQuestions=isSupporter?this.numberOfSupporterQuestions:this.numberOfCustomerQuestions;for(var i=0;i<numberOfQuestions;i++){var radioGroup=this.answersContainer.select('.answerGroup_'+i);for(var j=0;j<radioGroup.length;j++){radioGroup[j].checked=false;}}}});var CustomerFeedback=Class.create(Feedback,{initialize:function(){CustomerFeedback.basefeedback.call(this);},clearCustomerFeedbackForm:function()
{this.clearRadioButtons(false);$('recommendExpert').checked=false;$('notRecommendExpert').checked=false;this.feedbackRating=0;this.additionalComments.value='';if(this.errorDiv){this.errorDiv.innerHTML='&nbsp;';}},submitCustomerFeedbackForm:function(formId)
{var oForm=$(formId)
if(eval($('dFeedbackButtonSubmit').submitted))
return;var feedbackErrors=this.validateFeedbackForm(false);if(feedbackErrors.length>0)
{this.setErrorMessages(feedbackErrors);return;}
disableObject('dFeedbackFormButtons',true)
$('dFeedbackButtonSubmit').submitted=true;$('dRating').value=this.getAnsweredQuestionValueAsNumber(4);this.additionalComments.innerHTML=this.getAdditionalComment();this.additionalComments.value=this.getAdditionalComment();oForm.request({parameters:{'workflowId':g_workflowId},onSuccess:function(response){this.setServerReply(true,null,false);}.bind(this),onFailure:function(response){this.setServerReply(false,response.text,false);}.bind(this)})}});Object.inherit(CustomerFeedback,Feedback,"basefeedback");var customerFeedback=new CustomerFeedback();function S2SignupOrSignin(){}
S2SignupOrSignin.prototype=new Object;S2SignupOrSignin.prototype.init=function(submitHandler){this.submitHandler=submitHandler;this.observeElements();},S2SignupOrSignin.prototype.initSignin=function(){if($('externalLoginForm')){this.essSigninValidation=new Validation('externalLoginForm',{immediate:true});}},S2SignupOrSignin.prototype.initSignup=function(){if($('RegForm')){this.essSignupValidation=new Validation('RegForm',{immediate:true});}
generateCountryCodesSelectBox();this.resetSignupSubmitButton();},S2SignupOrSignin.prototype.observeElements=function(){if($("signinSubtitleLink")&&$("signupSubtitleLink")){Event.observe("signinSubtitleLink",'click',this.switchToSigninView);Event.observe("signupSubtitleLink",'click',this.switchToSignupView);this.resetSigninSubmitButton();}}
S2SignupOrSignin.prototype.submitESSAjaxSignupForm=function(){var oForm=$('RegForm');if(this.essSignupValidation.validate())
{this.disableSignupSubmitButton(true);new JsonP.FormRequest(oForm,{parameters:{ajax:true,submission:true},onSuccess:function(response){if(onDirectRegistrationSuccess(response)){this.submitHandler.onSuccess(response);}else{this.submitHandler.onFailure(response);}}.bind(this),onFailure:function(response){this.submitHandler.onFailure(response);this.disableSignupSubmitButton(false);handleFailureAjaxResponse(response,$("RegForm").down(".sError"),gCommonErrors);}.bind(this),onComplete:function(){this.disableSignupSubmitButton(false);}.bind(this)});return true;}
return false;}
S2SignupOrSignin.prototype.submitESSAjaxSigninForm=function(){var oForm=$('externalLoginForm');if(this.essSigninValidation.validate()){this.disableSigninSubmitButton(true);new JsonP.FormRequest(oForm,{parameters:{ajax:true},onSuccess:function(response){this.disableSigninSubmitButton(false);onLoginSuccess(oForm,response);this.submitHandler.onSuccess(response);}.bind(this),onFailure:function(response){this.disableSigninSubmitButton(false);onLoginFailed(oForm,response);this.submitHandler.onFailure();}.bind(this)});return true;}
return false;}
S2SignupOrSignin.prototype.setSubmitButtonImages=function(prefix){var prfx=prefix?prefix:"start_session";this.submitImages={regular:gStartSessionUrls[prfx+"_regular"],over:gStartSessionUrls[prfx+"_over"],pressed:gStartSessionUrls[prfx+"_pressed"],disabled:gStartSessionUrls[prfx+"_disabled"]}}
S2SignupOrSignin.prototype.resetSignupSubmitButton=function(){if(!$("dESSSignupBody")){return;}
var submitImg=$("dESSSignupBody").down(".submitButton img");submitImg.src=this.submitImages.regular;submitImg.className="linkImg";submitImg.show();Event.observe(submitImg,'click',this.submitESSAjaxSignupForm.bind(this));Event.observe(submitImg,'mouseout',function(){submitImg.src=this.submitImages.regular}.bind(this));Event.observe(submitImg,'mouseup',function(){submitImg.src=this.submitImages.regular}.bind(this));Event.observe(submitImg,'mouseover',function(){submitImg.src=this.submitImages.over}.bind(this));Event.observe(submitImg,'mousedown',function(){submitImg.src=this.submitImages.pressed}.bind(this));}
S2SignupOrSignin.prototype.resetSigninSubmitButton=function(){if(!$("dESSSigninBody")){return;}
var submitImg=$("dESSSigninBody").down(".submitButton img");submitImg.src=gStartSessionUrls.signin_regular;submitImg.className="linkImg"
Event.observe(submitImg,'click',this.submitESSAjaxSigninForm.bind(this));Event.observe(submitImg,'mouseout',function(){this.src=gStartSessionUrls.signin_regular});Event.observe(submitImg,'mouseup',function(){this.src=gStartSessionUrls.signin_regular});Event.observe(submitImg,'mouseover',function(){this.src=gStartSessionUrls.signin_over});Event.observe(submitImg,'mousedown',function(){this.src=gStartSessionUrls.signin_pressed});}
S2SignupOrSignin.prototype.disableSigninSubmitButton=function(bool){if(!$("dESSSigninBody")){return;}
var submitImg=$("dESSSigninBody").down(".submitButton img");disableObject(submitImg,bool);if(bool){submitImg.replace('<img src="'+gStartSessionUrls.signin_disabled+'"/>');}
else{this.resetSigninSubmitButton();}}
S2SignupOrSignin.prototype.disableSignupSubmitButton=function(bool){if(!$("dESSSignupBody")){return;}
var submitImg=$("dESSSignupBody").down(".submitButton img");disableObject(submitImg,bool);if(bool){submitImg.replace('<img src="'+this.submitImages.disabled+'"/>');}
else{this.resetSignupSubmitButton();}}
S2SignupOrSignin.prototype.display=function(parameters,submitHandler,displayHandler){if(parameters.mode=="overlay"){this.setSubmitButtonImages(parameters.submitButtonImgPrefix);lightBoxOff();lightBoxOn(parameters);}
var para={aiu:"UserRegistration"};if(parameters.aiu==null){Object.extend(parameters,para);}
new Ajax.Request(parameters.url,{parameters:parameters,method:'get',onSuccess:function(transport){$(parameters.rel).update(transport.responseText);var afterRender=function(){this.init(submitHandler);this.initSignup();this.initSignin();if(displayHandler){displayHandler.onSuccess();}}.bind(this);afterRender.defer();}.bind(this),onFailure:function(response){logme("Failed to open start page");if(displayHandler){displayHandler.onFailure(response);}}});}
S2SignupOrSignin.prototype.switchToSigninView=function(){$("dESSSignupBody").hide();$("dESSSigninBody").show();$("signupSubtitleLink").className="linkTxt";$("signinSubtitleLink").className="";}
S2SignupOrSignin.prototype.switchToSignupView=function(){$("dESSSigninBody").hide();$("dESSSignupBody").show();$("signinSubtitleLink").className="linkTxt";$("signupSubtitleLink").className="";}
var gSignupOrSignin=new S2SignupOrSignin();function S2SecuredAction()
{}
S2SecuredAction.prototype=new Object;S2SecuredAction.prototype.execute=function(startPageParams,loggedInAction){if(isLoggedIn()){loggedInAction();}
else{Object.extend(startPageParams,{rel:"dOverlayStartPage"});Object.extend(startPageParams,{url:gStartSessionUrls.internal_start});Object.extend(startPageParams,{mode:"overlay"});gSignupOrSignin.display(startPageParams,{onSuccess:function(){loggedInAction();},onFailure:function(){logme("Failed to open start page")}});}}
var gSecuredAction=new S2SecuredAction();if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;dwr.engine.setErrorHandler=function(handler){dwr.engine._errorHandler=handler;};dwr.engine.setWarningHandler=function(handler){dwr.engine._warningHandler=handler;};dwr.engine.setTextHtmlHandler=function(handler){dwr.engine._textHtmlHandler=handler;};dwr.engine.setTimeout=function(timeout){dwr.engine._timeout=timeout;};dwr.engine.setPreHook=function(handler){dwr.engine._preHook=handler;};dwr.engine.setPostHook=function(handler){dwr.engine._postHook=handler;};dwr.engine.setHeaders=function(headers){dwr.engine._headers=headers;};dwr.engine.setParameters=function(parameters){dwr.engine._parameters=parameters;};dwr.engine.XMLHttpRequest=1;dwr.engine.IFrame=2;dwr.engine.ScriptTag=3;dwr.engine.setRpcType=function(newType){if(newType!=dwr.engine.XMLHttpRequest&&newType!=dwr.engine.IFrame&&newType!=dwr.engine.ScriptTag){dwr.engine._handleError(null,{name:"dwr.engine.invalidRpcType",message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag"});return;}
dwr.engine._rpcType=newType;};dwr.engine.setHttpMethod=function(httpMethod){if(httpMethod!="GET"&&httpMethod!="POST"){dwr.engine._handleError(null,{name:"dwr.engine.invalidHttpMethod",message:"Remoting method must be one of GET or POST"});return;}
dwr.engine._httpMethod=httpMethod;};dwr.engine.setOrdered=function(ordered){dwr.engine._ordered=ordered;};dwr.engine.setAsync=function(async){dwr.engine._async=async;};dwr.engine.setActiveReverseAjax=function(activeReverseAjax){if(activeReverseAjax){if(dwr.engine._activeReverseAjax)return;dwr.engine._activeReverseAjax=true;dwr.engine._poll();}
else{if(dwr.engine._activeReverseAjax&&dwr.engine._pollReq)dwr.engine._pollReq.abort();dwr.engine._activeReverseAjax=false;}};dwr.engine.defaultErrorHandler=function(message,ex){dwr.engine._debug("Error: "+ex.name+", "+ex.message,true);if(message==null||message=="")alert("A server error has occured.");else if(message.indexOf("0x80040111")!=-1)dwr.engine._debug(message);else alert(message);};dwr.engine.defaultWarningHandler=function(message,ex){dwr.engine._debug(message);};dwr.engine.beginBatch=function(){if(dwr.engine._batch){dwr.engine._handleError(null,{name:"dwr.engine.batchBegun",message:"Batch already begun"});return;}
dwr.engine._batch=dwr.engine._createBatch();};dwr.engine.endBatch=function(options){var batch=dwr.engine._batch;if(batch==null){dwr.engine._handleError(null,{name:"dwr.engine.batchNotBegun",message:"No batch in progress"});return;}
dwr.engine._batch=null;if(batch.map.callCount==0)return;if(options)dwr.engine._mergeBatch(batch,options);if(dwr.engine._ordered&&dwr.engine._batchesLength!=0){dwr.engine._batchQueue[dwr.engine._batchQueue.length]=batch;}
else{dwr.engine._sendData(batch);}};dwr.engine.setPollMethod=function(type){dwr.engine.setPollType(type);};dwr.engine.setMethod=function(type){dwr.engine.setRpcType(type);};dwr.engine.setVerb=function(verb){dwr.engine.setHttpMethod(verb);};dwr.engine.setPollType=function(){dwr.engine._debug("Manually setting the Poll Type is not supported");};dwr.engine._origScriptSessionId=""+JAWR.dwr_scriptSessionId+"";dwr.engine._sessionCookieName="JSESSIONID";dwr.engine._allowGetForSafariButMakeForgeryEasier="";dwr.engine._scriptTagProtection="throw 'allowScriptTagRemoting is false.';";dwr.engine._defaultPath=""+JAWR.jawr_dwr_path+"";dwr.engine._pollWithXhr="false";dwr.engine._scriptSessionId=null;dwr.engine._getScriptSessionId=function(){if(dwr.engine._scriptSessionId==null){dwr.engine._scriptSessionId=dwr.engine._origScriptSessionId+Math.floor(Math.random()*1000);}
return dwr.engine._scriptSessionId;};dwr.engine._errorHandler=dwr.engine.defaultErrorHandler;dwr.engine._warningHandler=dwr.engine.defaultWarningHandler;dwr.engine._preHook=null;dwr.engine._postHook=null;dwr.engine._batches={};dwr.engine._batchesLength=0;dwr.engine._batchQueue=[];dwr.engine._rpcType=dwr.engine.XMLHttpRequest;dwr.engine._httpMethod="POST";dwr.engine._ordered=false;dwr.engine._async=true;dwr.engine._batch=null;dwr.engine._timeout=0;dwr.engine._DOMDocument=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];dwr.engine._XMLHTTP=["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];dwr.engine._activeReverseAjax=false;dwr.engine._outstandingIFrames=[];dwr.engine._pollReq=null;dwr.engine._pollCometInterval=200;dwr.engine._pollRetries=0;dwr.engine._maxPollRetries=0;dwr.engine._textHtmlHandler=null;dwr.engine._headers=null;dwr.engine._parameters=null;dwr.engine._postSeperator="\n";dwr.engine._defaultInterceptor=function(data){return data;};dwr.engine._urlRewriteHandler=dwr.engine._defaultInterceptor;dwr.engine._contentRewriteHandler=dwr.engine._defaultInterceptor;dwr.engine._replyRewriteHandler=dwr.engine._defaultInterceptor;dwr.engine._nextBatchId=0;dwr.engine._propnames=["rpcType","httpMethod","async","timeout","errorHandler","warningHandler","textHtmlHandler"];dwr.engine._partialResponseNo=0;dwr.engine._partialResponseYes=1;dwr.engine._partialResponseFlush=2;dwr.engine._unloading=false;dwr.engine._execute=function(path,scriptName,methodName,vararg_params){var singleShot=false;if(dwr.engine._batch==null){dwr.engine.beginBatch();singleShot=true;}
var batch=dwr.engine._batch;var args=[];for(var i=0;i<arguments.length-3;i++){args[i]=arguments[i+3];}
if(batch.path==null){batch.path=path;}
else{if(batch.path!=path){dwr.engine._handleError(batch,{name:"dwr.engine.multipleServlets",message:"Can't batch requests to multiple DWR Servlets."});return;}}
var callData;var lastArg=args[args.length-1];if(typeof lastArg=="function"||lastArg==null)callData={callback:args.pop()};else callData=args.pop();dwr.engine._mergeBatch(batch,callData);batch.handlers[batch.map.callCount]={exceptionHandler:callData.exceptionHandler,callback:callData.callback};var prefix="c"+batch.map.callCount+"-";batch.map[prefix+"scriptName"]=scriptName;batch.map[prefix+"methodName"]=methodName;batch.map[prefix+"id"]=batch.map.callCount;for(i=0;i<args.length;i++){dwr.engine._serializeAll(batch,[],args[i],prefix+"param"+i);}
batch.map.callCount++;if(singleShot)dwr.engine.endBatch();};dwr.engine._poll=function(){if(!dwr.engine._activeReverseAjax)return;var batch=dwr.engine._createBatch();batch.map.id=0;batch.map.callCount=1;batch.isPoll=true;if(dwr.engine._pollWithXhr=="true"){batch.rpcType=dwr.engine.XMLHttpRequest;batch.map.partialResponse=dwr.engine._partialResponseNo;}
else{if(navigator.userAgent.indexOf("Gecko/")!=-1){batch.rpcType=dwr.engine.XMLHttpRequest;batch.map.partialResponse=dwr.engine._partialResponseYes;}
else{batch.rpcType=dwr.engine.XMLHttpRequest;batch.map.partialResponse=dwr.engine._partialResponseNo;}}
batch.httpMethod="POST";batch.async=true;batch.timeout=0;batch.path=dwr.engine._defaultPath;batch.preHooks=[];batch.postHooks=[];batch.errorHandler=dwr.engine._pollErrorHandler;batch.warningHandler=dwr.engine._pollErrorHandler;batch.handlers[0]={callback:function(pause){dwr.engine._pollRetries=0;setTimeout(dwr.engine._poll,pause);}};dwr.engine._sendData(batch);if(batch.rpcType==dwr.engine.XMLHttpRequest&&batch.map.partialResponse==dwr.engine._partialResponseYes){dwr.engine._checkCometPoll();}};dwr.engine._pollErrorHandler=function(msg,ex){dwr.engine._pollRetries++;dwr.engine._debug("Reverse Ajax poll failed (pollRetries="+dwr.engine._pollRetries+"): "+ex.name+" : "+ex.message);if(dwr.engine._pollRetries<dwr.engine._maxPollRetries){setTimeout(dwr.engine._poll,10000);}
else{dwr.engine._activeReverseAjax=false;dwr.engine._debug("Giving up.");}};dwr.engine._createBatch=function(){var batch={map:{callCount:0,page:window.location.pathname+window.location.search,httpSessionId:dwr.engine._getJSessionId(),scriptSessionId:dwr.engine._getScriptSessionId()},charsProcessed:0,paramCount:0,parameters:{},headers:{},isPoll:false,handlers:{},preHooks:[],postHooks:[],rpcType:dwr.engine._rpcType,httpMethod:dwr.engine._httpMethod,async:dwr.engine._async,timeout:dwr.engine._timeout,errorHandler:dwr.engine._errorHandler,warningHandler:dwr.engine._warningHandler,textHtmlHandler:dwr.engine._textHtmlHandler};if(dwr.engine._preHook)batch.preHooks.push(dwr.engine._preHook);if(dwr.engine._postHook)batch.postHooks.push(dwr.engine._postHook);var propname,data;if(dwr.engine._headers){for(propname in dwr.engine._headers){data=dwr.engine._headers[propname];if(typeof data!="function")batch.headers[propname]=data;}}
if(dwr.engine._parameters){for(propname in dwr.engine._parameters){data=dwr.engine._parameters[propname];if(typeof data!="function")batch.parameters[propname]=data;}}
return batch;};dwr.engine._mergeBatch=function(batch,overrides){var propname,data;for(var i=0;i<dwr.engine._propnames.length;i++){propname=dwr.engine._propnames[i];if(overrides[propname]!=null)batch[propname]=overrides[propname];}
if(overrides.preHook!=null)batch.preHooks.unshift(overrides.preHook);if(overrides.postHook!=null)batch.postHooks.push(overrides.postHook);if(overrides.headers){for(propname in overrides.headers){data=overrides.headers[propname];if(typeof data!="function")batch.headers[propname]=data;}}
if(overrides.parameters){for(propname in overrides.parameters){data=overrides.parameters[propname];if(typeof data!="function")batch.map["p-"+propname]=""+data;}}};dwr.engine._getJSessionId=function(){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=cookies[i];while(cookie.charAt(0)==' ')cookie=cookie.substring(1,cookie.length);if(cookie.indexOf(dwr.engine._sessionCookieName+"=")==0){return cookie.substring(dwr.engine._sessionCookieName.length+1,cookie.length);}}
return"";};dwr.engine._checkCometPoll=function(){for(var i=0;i<dwr.engine._outstandingIFrames.length;i++){var text="";var iframe=dwr.engine._outstandingIFrames[i];try{text=dwr.engine._getTextFromCometIFrame(iframe);}
catch(ex){dwr.engine._handleWarning(iframe.batch,ex);}
if(text!="")dwr.engine._processCometResponse(text,iframe.batch);}
if(dwr.engine._pollReq){var req=dwr.engine._pollReq;var text=req.responseText;if(text!=null)dwr.engine._processCometResponse(text,req.batch);}
if(dwr.engine._outstandingIFrames.length>0||dwr.engine._pollReq){setTimeout(dwr.engine._checkCometPoll,dwr.engine._pollCometInterval);}};dwr.engine._getTextFromCometIFrame=function(frameEle){var body=frameEle.contentWindow.document.body;if(body==null)return"";var text=body.innerHTML;if(text.indexOf("<PRE>")==0||text.indexOf("<pre>")==0){text=text.substring(5,text.length-7);}
return text;};dwr.engine._processCometResponse=function(response,batch){if(batch.charsProcessed==response.length)return;if(response.length==0){batch.charsProcessed=0;return;}
var firstStartTag=response.indexOf("//#DWR-START#",batch.charsProcessed);if(firstStartTag==-1){batch.charsProcessed=response.length;return;}
var lastEndTag=response.lastIndexOf("//#DWR-END#");if(lastEndTag==-1){return;}
if(response.charCodeAt(lastEndTag+11)==13&&response.charCodeAt(lastEndTag+12)==10){batch.charsProcessed=lastEndTag+13;}
else{batch.charsProcessed=lastEndTag+11;}
var exec=response.substring(firstStartTag+13,lastEndTag);dwr.engine._receivedBatch=batch;dwr.engine._eval(exec);dwr.engine._receivedBatch=null;};dwr.engine._sendData=function(batch){batch.map.batchId=dwr.engine._nextBatchId;dwr.engine._nextBatchId++;dwr.engine._batches[batch.map.batchId]=batch;dwr.engine._batchesLength++;batch.completed=false;for(var i=0;i<batch.preHooks.length;i++){batch.preHooks[i]();}
batch.preHooks=null;if(batch.timeout&&batch.timeout!=0){batch.timeoutId=setTimeout(function(){dwr.engine._abortRequest(batch);},batch.timeout);}
if(batch.rpcType==dwr.engine.XMLHttpRequest){if(window.XMLHttpRequest){batch.req=new XMLHttpRequest();}
else if(window.ActiveXObject&&!(navigator.userAgent.indexOf("Mac")>=0&&navigator.userAgent.indexOf("MSIE")>=0)){batch.req=dwr.engine._newActiveXObject(dwr.engine._XMLHTTP);}}
var prop,request;if(batch.req){if(batch.async){batch.req.onreadystatechange=function(){if(typeof dwr!='undefined')dwr.engine._stateChange(batch);};}
if(batch.isPoll){dwr.engine._pollReq=batch.req;if(!(document.all&&!window.opera))batch.req.batch=batch;}
var indexSafari=navigator.userAgent.indexOf("Safari/");if(indexSafari>=0){var version=navigator.userAgent.substring(indexSafari+7);if(parseInt(version,10)<400){if(dwr.engine._allowGetForSafariButMakeForgeryEasier=="true")batch.httpMethod="GET";else dwr.engine._handleWarning(batch,{name:"dwr.engine.oldSafari",message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier."});}}
batch.mode=batch.isPoll?dwr.engine._ModePlainPoll:dwr.engine._ModePlainCall;request=dwr.engine._constructRequest(batch);try{batch.req.open(batch.httpMethod,request.url,batch.async);try{for(prop in batch.headers){var value=batch.headers[prop];if(typeof value=="string")batch.req.setRequestHeader(prop,value);}
if(!batch.headers["Content-Type"])batch.req.setRequestHeader("Content-Type","text/plain");}
catch(ex){dwr.engine._handleWarning(batch,ex);}
batch.req.send(request.body);if(!batch.async)dwr.engine._stateChange(batch);}
catch(ex){dwr.engine._handleError(batch,ex);}}
else if(batch.rpcType!=dwr.engine.ScriptTag){var idname=batch.isPoll?"dwr-if-poll-"+batch.map.batchId:"dwr-if-"+batch.map.batchId;batch.div=document.createElement("div");document.body.appendChild(batch.div);batch.div.innerHTML="<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='"+idname+"' name='"+idname+"' onload='dwr.engine._iframeLoadingComplete ("+batch.map.batchId+");'></iframe>";batch.document=document;batch.iframe=batch.document.getElementById(idname);batch.iframe.batch=batch;batch.mode=batch.isPoll?dwr.engine._ModeHtmlPoll:dwr.engine._ModeHtmlCall;if(batch.isPoll)dwr.engine._outstandingIFrames.push(batch.iframe);request=dwr.engine._constructRequest(batch);if(batch.httpMethod=="GET"){batch.iframe.setAttribute("src",request.url);}
else{batch.form=batch.document.createElement("form");batch.form.setAttribute("id","dwr-form");batch.form.setAttribute("action",request.url);batch.form.setAttribute("style","display:none;");batch.form.setAttribute("target",idname);batch.form.target=idname;batch.form.setAttribute("method",batch.httpMethod);for(prop in batch.map){var value=batch.map[prop];if(typeof value!="function"){var formInput=batch.document.createElement("input");formInput.setAttribute("type","hidden");formInput.setAttribute("name",prop);formInput.setAttribute("value",value);batch.form.appendChild(formInput);}}
batch.document.body.appendChild(batch.form);batch.form.submit();}}
else{batch.httpMethod="GET";batch.mode=batch.isPoll?dwr.engine._ModePlainPoll:dwr.engine._ModePlainCall;request=dwr.engine._constructRequest(batch);batch.script=document.createElement("script");batch.script.id="dwr-st-"+batch.map["c0-id"];batch.script.src=request.url;document.body.appendChild(batch.script);}};dwr.engine._ModePlainCall="/call/plaincall/";dwr.engine._ModeHtmlCall="/call/htmlcall/";dwr.engine._ModePlainPoll="/call/plainpoll/";dwr.engine._ModeHtmlPoll="/call/htmlpoll/";dwr.engine._constructRequest=function(batch){var request={url:batch.path+batch.mode,body:null};if(batch.isPoll==true){request.url+="ReverseAjax.dwr";}
else if(batch.map.callCount==1){request.url+=batch.map["c0-scriptName"]+"."+batch.map["c0-methodName"]+".dwr";}
else{request.url+="Multiple."+batch.map.callCount+".dwr";}
var sessionMatch=location.href.match(/jsessionid=([^?]+)/);if(sessionMatch!=null){request.url+=";jsessionid="+sessionMatch[1];}
var prop;if(batch.httpMethod=="GET"){batch.map.callCount=""+batch.map.callCount;request.url+="?";for(prop in batch.map){if(typeof batch.map[prop]!="function"){request.url+=encodeURIComponent(prop)+"="+encodeURIComponent(batch.map[prop])+"&";}}
request.url=request.url.substring(0,request.url.length-1);}
else{request.body="";if(document.all&&!window.opera){var buf=[];for(prop in batch.map){if(typeof batch.map[prop]!="function"){buf.push(prop+"="+batch.map[prop]+dwr.engine._postSeperator);}}
request.body=buf.join("");}
else{for(prop in batch.map){if(typeof batch.map[prop]!="function"){request.body+=prop+"="+batch.map[prop]+dwr.engine._postSeperator;}}}
request.body=dwr.engine._contentRewriteHandler(request.body);}
request.url=dwr.engine._urlRewriteHandler(request.url);return request;};dwr.engine._stateChange=function(batch){var toEval;if(batch.completed){dwr.engine._debug("Error: _stateChange() with batch.completed");return;}
var req=batch.req;try{if(req.readyState!=4)return;}
catch(ex){dwr.engine._handleWarning(batch,ex);dwr.engine._clearUp(batch);return;}
if(dwr.engine._unloading){dwr.engine._debug("Ignoring reply from server as page is unloading.");return;}
try{var reply=req.responseText;reply=dwr.engine._replyRewriteHandler(reply);var status=req.status;if(reply==null||reply==""){dwr.engine._handleWarning(batch,{name:"dwr.engine.missingData",message:"No data received from server"});}
else if(status!=200){dwr.engine._handleError(batch,{name:"dwr.engine.http."+status,message:req.statusText});}
else{var contentType=req.getResponseHeader("Content-Type");if(!contentType.match(/^text\/plain/)&&!contentType.match(/^text\/javascript/)){if(contentType.match(/^text\/html/)&&typeof batch.textHtmlHandler=="function"){batch.textHtmlHandler({status:status,responseText:reply,contentType:contentType});}
else{dwr.engine._handleWarning(batch,{name:"dwr.engine.invalidMimeType",message:"Invalid content type: '"+contentType+"'"});}}
else{if(batch.isPoll&&batch.map.partialResponse==dwr.engine._partialResponseYes){dwr.engine._processCometResponse(reply,batch);}
else{if(reply.search("//#DWR")==-1){dwr.engine._handleWarning(batch,{name:"dwr.engine.invalidReply",message:"Invalid reply from server"});}
else{toEval=reply;}}}}}
catch(ex){dwr.engine._handleWarning(batch,ex);}
dwr.engine._callPostHooks(batch);dwr.engine._receivedBatch=batch;if(toEval!=null)toEval=toEval.replace(dwr.engine._scriptTagProtection,"");dwr.engine._eval(toEval);dwr.engine._receivedBatch=null;dwr.engine._validateBatch(batch);if(!batch.completed)dwr.engine._clearUp(batch);};dwr.engine._validateBatch=function(batch){if(!batch.completed){for(var i=0;i<batch.map.callCount;i++){if(batch.handlers[i]!=null){dwr.engine._handleWarning(batch,{name:"dwr.engine.incompleteReply",message:"Incomplete reply from server"});break;}}}}
dwr.engine._iframeLoadingComplete=function(batchId){var batch=dwr.engine._batches[batchId];if(batch)dwr.engine._validateBatch(batch);}
dwr.engine._remoteHandleCallback=function(batchId,callId,reply){var batch=dwr.engine._batches[batchId];if(batch==null){dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId="+batchId,true);return;}
try{var handlers=batch.handlers[callId];batch.handlers[callId]=null;if(!handlers){dwr.engine._debug("Warning: Missing handlers. callId="+callId,true);}
else if(typeof handlers.callback=="function")handlers.callback(reply);}
catch(ex){dwr.engine._handleError(batch,ex);}};dwr.engine._remoteHandleException=function(batchId,callId,ex){var batch=dwr.engine._batches[batchId];if(batch==null){dwr.engine._debug("Warning: null batch in remoteHandleException",true);return;}
var handlers=batch.handlers[callId];batch.handlers[callId]=null;if(handlers==null){dwr.engine._debug("Warning: null handlers in remoteHandleException",true);return;}
if(ex.message==undefined)ex.message="";if(typeof handlers.exceptionHandler=="function")handlers.exceptionHandler(ex.message,ex);else if(typeof batch.errorHandler=="function")batch.errorHandler(ex.message,ex);};dwr.engine._remoteHandleBatchException=function(ex,batchId){var searchBatch=(dwr.engine._receivedBatch==null&&batchId!=null);if(searchBatch){dwr.engine._receivedBatch=dwr.engine._batches[batchId];}
if(ex.message==undefined)ex.message="";dwr.engine._handleError(dwr.engine._receivedBatch,ex);if(searchBatch){dwr.engine._receivedBatch=null;dwr.engine._clearUp(dwr.engine._batches[batchId]);}};dwr.engine._remotePollCometDisabled=function(ex,batchId){dwr.engine.setActiveReverseAjax(false);var searchBatch=(dwr.engine._receivedBatch==null&&batchId!=null);if(searchBatch){dwr.engine._receivedBatch=dwr.engine._batches[batchId];}
if(ex.message==undefined)ex.message="";dwr.engine._handleError(dwr.engine._receivedBatch,ex);if(searchBatch){dwr.engine._receivedBatch=null;dwr.engine._clearUp(dwr.engine._batches[batchId]);}};dwr.engine._remoteBeginIFrameResponse=function(iframe,batchId){if(iframe!=null)dwr.engine._receivedBatch=iframe.batch;dwr.engine._callPostHooks(dwr.engine._receivedBatch);};dwr.engine._remoteEndIFrameResponse=function(batchId){dwr.engine._clearUp(dwr.engine._receivedBatch);dwr.engine._receivedBatch=null;};dwr.engine._eval=function(script){if(script==null)return null;if(script==""){dwr.engine._debug("Warning: blank script",true);return null;}
return eval(script);};dwr.engine._abortRequest=function(batch){if(batch&&!batch.completed){dwr.engine._clearUp(batch);if(batch.req)batch.req.abort();dwr.engine._handleError(batch,{name:"dwr.engine.timeout",message:"Timeout"});}};dwr.engine._callPostHooks=function(batch){if(batch.postHooks){for(var i=0;i<batch.postHooks.length;i++){batch.postHooks[i]();}
batch.postHooks=null;}};dwr.engine._clearUp=function(batch){if(!batch){dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()",true);return;}
if(batch.completed){dwr.engine._debug("Warning: Double complete",true);return;}
if(batch.div)batch.div.parentNode.removeChild(batch.div);if(batch.iframe){for(var i=0;i<dwr.engine._outstandingIFrames.length;i++){if(dwr.engine._outstandingIFrames[i]==batch.iframe){dwr.engine._outstandingIFrames.splice(i,1);}}
batch.iframe.parentNode.removeChild(batch.iframe);}
if(batch.form)batch.form.parentNode.removeChild(batch.form);if(batch.req){if(batch.req==dwr.engine._pollReq)dwr.engine._pollReq=null;delete batch.req;}
if(batch.timeoutId){clearTimeout(batch.timeoutId);delete batch.timeoutId;}
if(batch.map&&(batch.map.batchId||batch.map.batchId==0)){delete dwr.engine._batches[batch.map.batchId];dwr.engine._batchesLength--;}
batch.completed=true;if(dwr.engine._batchQueue.length!=0){var sendbatch=dwr.engine._batchQueue.shift();dwr.engine._sendData(sendbatch);}};dwr.engine._unloader=function(){dwr.engine._unloading=true;dwr.engine._batchQueue.length=0;for(var batchId in dwr.engine._batches){var batch=dwr.engine._batches[batchId];if(batch&&batch.map){if(batch.req){batch.req.abort();}
dwr.engine._clearUp(batch);}}};if(window.addEventListener)window.addEventListener('unload',dwr.engine._unloader,false);else if(window.attachEvent)window.attachEvent('onunload',dwr.engine._unloader);dwr.engine._handleError=function(batch,ex){if(typeof ex=="string")ex={name:"unknown",message:ex};if(ex.message==null)ex.message="";if(ex.name==null)ex.name="unknown";if(batch&&typeof batch.errorHandler=="function")batch.errorHandler(ex.message,ex);else if(dwr.engine._errorHandler)dwr.engine._errorHandler(ex.message,ex);if(batch)dwr.engine._clearUp(batch);};dwr.engine._handleWarning=function(batch,ex){if(typeof ex=="string")ex={name:"unknown",message:ex};if(ex.message==null)ex.message="";if(ex.name==null)ex.name="unknown";if(batch&&typeof batch.warningHandler=="function")batch.warningHandler(ex.message,ex);else if(dwr.engine._warningHandler)dwr.engine._warningHandler(ex.message,ex);if(batch)dwr.engine._clearUp(batch);};dwr.engine._serializeAll=function(batch,referto,data,name){if(data==null){batch.map[name]="null:null";return;}
switch(typeof data){case"boolean":batch.map[name]="boolean:"+data;break;case"number":batch.map[name]="number:"+data;break;case"string":batch.map[name]="string:"+encodeURIComponent(data);break;case"object":if(data instanceof String)batch.map[name]="String:"+encodeURIComponent(data);else if(data instanceof Boolean)batch.map[name]="Boolean:"+data;else if(data instanceof Number)batch.map[name]="Number:"+data;else if(data instanceof Date)batch.map[name]="Date:"+data.getTime();else if(data&&data.join)batch.map[name]=dwr.engine._serializeArray(batch,referto,data,name);else batch.map[name]=dwr.engine._serializeObject(batch,referto,data,name);break;case"function":break;default:dwr.engine._handleWarning(null,{name:"dwr.engine.unexpectedType",message:"Unexpected type: "+typeof data+", attempting default converter."});batch.map[name]="default:"+data;break;}};dwr.engine._lookup=function(referto,data,name){var lookup;for(var i=0;i<referto.length;i++){if(referto[i].data==data){lookup=referto[i];break;}}
if(lookup)return"reference:"+lookup.name;referto.push({data:data,name:name});return null;};dwr.engine._serializeObject=function(batch,referto,data,name){var ref=dwr.engine._lookup(referto,data,name);if(ref)return ref;if(data.nodeName&&data.nodeType){return dwr.engine._serializeXml(batch,referto,data,name);}
var reply="Object_"+dwr.engine._getObjectClassName(data)+":{";var element;for(element in data){if(typeof data[element]!="function"){batch.paramCount++;var childName="c"+dwr.engine._batch.map.callCount+"-e"+batch.paramCount;dwr.engine._serializeAll(batch,referto,data[element],childName);reply+=encodeURIComponent(element)+":reference:"+childName+", ";}}
if(reply.substring(reply.length-2)==", "){reply=reply.substring(0,reply.length-2);}
reply+="}";return reply;};dwr.engine._errorClasses={"Error":Error,"EvalError":EvalError,"RangeError":RangeError,"ReferenceError":ReferenceError,"SyntaxError":SyntaxError,"TypeError":TypeError,"URIError":URIError};dwr.engine._getObjectClassName=function(obj){if(obj&&obj.constructor&&obj.constructor.toString)
{var str=obj.constructor.toString();var regexpmatch=str.match(/function\s+(\w+)/);if(regexpmatch&&regexpmatch.length==2){return regexpmatch[1];}}
if(obj&&obj.constructor){for(var errorname in dwr.engine._errorClasses){if(obj.constructor==dwr.engine._errorClasses[errorname])return errorname;}}
if(obj){var str=Object.prototype.toString.call(obj);var regexpmatch=str.match(/\[object\s+(\w+)/);if(regexpmatch&&regexpmatch.length==2){return regexpmatch[1];}}
return"Object";};dwr.engine._serializeXml=function(batch,referto,data,name){var ref=dwr.engine._lookup(referto,data,name);if(ref)return ref;var output;if(window.XMLSerializer)output=new XMLSerializer().serializeToString(data);else if(data.toXml)output=data.toXml;else output=data.innerHTML;return"XML:"+encodeURIComponent(output);};dwr.engine._serializeArray=function(batch,referto,data,name){var ref=dwr.engine._lookup(referto,data,name);if(ref)return ref;if(document.all&&!window.opera){var buf=["Array:["];for(var i=0;i<data.length;i++){if(i!=0)buf.push(",");batch.paramCount++;var childName="c"+dwr.engine._batch.map.callCount+"-e"+batch.paramCount;dwr.engine._serializeAll(batch,referto,data[i],childName);buf.push("reference:");buf.push(childName);}
buf.push("]");reply=buf.join("");}
else{var reply="Array:[";for(var i=0;i<data.length;i++){if(i!=0)reply+=",";batch.paramCount++;var childName="c"+dwr.engine._batch.map.callCount+"-e"+batch.paramCount;dwr.engine._serializeAll(batch,referto,data[i],childName);reply+="reference:";reply+=childName;}
reply+="]";}
return reply;};dwr.engine._unserializeDocument=function(xml){var dom;if(window.DOMParser){var parser=new DOMParser();dom=parser.parseFromString(xml,"text/xml");if(!dom.documentElement||dom.documentElement.tagName=="parsererror"){var message=dom.documentElement.firstChild.data;message+="\n"+dom.documentElement.firstChild.nextSibling.firstChild.data;throw message;}
return dom;}
else if(window.ActiveXObject){dom=dwr.engine._newActiveXObject(dwr.engine._DOMDocument);dom.loadXML(xml);return dom;}
else{var div=document.createElement("div");div.innerHTML=xml;return div;}};dwr.engine._newActiveXObject=function(axarray){var returnValue;for(var i=0;i<axarray.length;i++){try{returnValue=new ActiveXObject(axarray[i]);break;}
catch(ex){}}
return returnValue;};dwr.engine._debug=function(message,stacktrace){var written=false;try{if(window.console){if(stacktrace&&window.console.trace)window.console.trace();window.console.log(message);written=true;}
else if(window.opera&&window.opera.postError){window.opera.postError(message);written=true;}}
catch(ex){}
if(!written){var debug=document.getElementById("dwr-debug");if(debug){var contents=message+"<br/>"+debug.innerHTML;if(contents.length>2048)contents=contents.substring(0,2048);debug.innerHTML=contents;}}};if(dwr==null)var dwr={};if(dwr.util==null)dwr.util={};if(DWRUtil==null)var DWRUtil=dwr.util;dwr.util._escapeHtml=true;dwr.util.setEscapeHtml=function(escapeHtml){dwr.util._escapeHtml=escapeHtml;};dwr.util._shouldEscapeHtml=function(options){if(options&&options.escapeHtml!=null){return options.escapeHtml;}
return dwr.util._escapeHtml;};dwr.util.escapeHtml=function(original){return original.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');};dwr.util.unescapeHtml=function(original){return original.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');};dwr.util.replaceXmlCharacters=function(original){original=original.replace("&","+");original=original.replace("<","\u2039");original=original.replace(">","\u203A");original=original.replace("\'","\u2018");original=original.replace("\"","\u201C");return original;};dwr.util.containsXssRiskyCharacters=function(original){return(original.indexOf('&')!=-1||original.indexOf('<')!=-1||original.indexOf('>')!=-1||original.indexOf('\'')!=-1||original.indexOf('\"')!=-1);};dwr.util.onReturn=function(event,action){if(!event)event=window.event;if(event&&event.keyCode&&event.keyCode==13)action();};dwr.util.selectRange=function(ele,start,end){ele=dwr.util._getElementById(ele,"selectRange()");if(ele==null)return;if(ele.setSelectionRange){ele.setSelectionRange(start,end);}
else if(ele.createTextRange){var range=ele.createTextRange();range.moveStart("character",start);range.moveEnd("character",end-ele.value.length);range.select();}
ele.focus();};if(document.getElementById){dwr.util.byId=function(){var elements=new Array();for(var i=0;i<arguments.length;i++){var element=arguments[i];if(typeof element=='string'){element=document.getElementById(element);}
if(arguments.length==1){return element;}
elements.push(element);}
return elements;};}
else if(document.all){dwr.util.byId=function(){var elements=new Array();for(var i=0;i<arguments.length;i++){var element=arguments[i];if(typeof element=='string'){element=document.all[element];}
if(arguments.length==1){return element;}
elements.push(element);}
return elements;};}
var $;if(!$){$=dwr.util.byId;}
dwr.util.toDescriptiveString=function(data,showLevels,options){if(showLevels===undefined)showLevels=1;var opt={};if(dwr.util._isObject(options))opt=options;var defaultoptions={escapeHtml:false,baseIndent:"",childIndent:"\u00A0\u00A0",lineTerminator:"\n",oneLineMaxItems:5,shortStringMaxLength:13,propertyNameMaxLength:30};for(var p in defaultoptions){if(!(p in opt)){opt[p]=defaultoptions[p];}}
var skipDomProperties={document:true,ownerDocument:true,all:true,parentElement:true,parentNode:true,offsetParent:true,children:true,firstChild:true,lastChild:true,previousSibling:true,nextSibling:true,innerHTML:true,outerHTML:true,innerText:true,outerText:true,textContent:true,attributes:true,style:true,currentStyle:true,runtimeStyle:true,parentTextEdit:true};function recursive(data,showLevels,indentDepth,options){var reply="";try{if(typeof data=="string"){var str=data;if(showLevels==0&&str.length>options.shortStringMaxLength)
str=str.substring(0,options.shortStringMaxLength-3)+"...";if(options.escapeHtml){var lines=str.split("\n");for(var i=0;i<lines.length;i++)lines[i]=dwr.util.escapeHtml(lines[i]);str=lines.join("\n");}
if(showLevels==0){str=str.replace(/\n|\r|\t/g,function(ch){switch(ch){case"\n":return"\\n";case"\r":return"";case"\t":return"\\t";}});}
else{str=str.replace(/\n|\r|\t/g,function(ch){switch(ch){case"\n":return options.lineTerminator+indent(indentDepth+1,options);case"\r":return"";case"\t":return"\\t";}});}
reply='"'+str+'"';}
else if(typeof data=="function"){reply="function";}
else if(dwr.util._isArray(data)){if(showLevels==0){if(data.length>0)
reply="[...]";else
reply="[]";}
else{var strarr=[];strarr.push("[");var count=0;for(var i=0;i<data.length;i++){if(!(i in data))continue;var itemvalue=data[i];if(count>0)strarr.push(", ");if(showLevels==1){if(count==options.oneLineMaxItems){strarr.push("...");break;}}
else{strarr.push(options.lineTerminator+indent(indentDepth+1,options));}
if(i!=count){strarr.push(i);strarr.push(":");}
strarr.push(recursive(itemvalue,showLevels-1,indentDepth+1,options));count++;}
if(showLevels>1)strarr.push(options.lineTerminator+indent(indentDepth,options));strarr.push("]");reply=strarr.join("");}}
else if(dwr.util._isObject(data)&&!dwr.util._isDate(data)){if(showLevels==0){reply=dwr.util._detailedTypeOf(data);}
else{var strarr=[];if(dwr.util._detailedTypeOf(data)!="Object"){strarr.push(dwr.util._detailedTypeOf(data));if(typeof data.valueOf()!="object"){strarr.push(":");strarr.push(recursive(data.valueOf(),1,indentDepth,options));}
strarr.push(" ");}
strarr.push("{");var isDomObject=dwr.util._isHTMLElement(data);var count=0;for(var prop in data){var propvalue=data[prop];if(isDomObject){if(!propvalue)continue;if(typeof propvalue=="function")continue;if(skipDomProperties[prop])continue;if(prop.toUpperCase()==prop)continue;}
if(count>0)strarr.push(", ");if(showLevels==1){if(count==options.oneLineMaxItems){strarr.push("...");break;}}
else{strarr.push(options.lineTerminator+indent(indentDepth+1,options));}
strarr.push(prop.length>options.propertyNameMaxLength?prop.substring(0,options.propertyNameMaxLength-3)+"...":prop);strarr.push(":");strarr.push(recursive(propvalue,showLevels-1,indentDepth+1,options));count++;}
if(showLevels>1&&count>0)strarr.push(options.lineTerminator+indent(indentDepth,options));strarr.push("}");reply=strarr.join("");}}
else{reply=""+data;}
return reply;}
catch(err){return(err.message?err.message:""+err);}}
function indent(count,options){var strarr=[];strarr.push(options.baseIndent);for(var i=0;i<count;i++){strarr.push(options.childIndent);}
return strarr.join("");};return recursive(data,showLevels,0,opt);};dwr.util.useLoadingMessage=function(message){var loadingMessage;if(message)loadingMessage=message;else loadingMessage="Loading";dwr.engine.setPreHook(function(){var disabledZone=dwr.util.byId('disabledZone');if(!disabledZone){disabledZone=document.createElement('div');disabledZone.setAttribute('id','disabledZone');disabledZone.style.position="absolute";disabledZone.style.zIndex="1000";disabledZone.style.left="0px";disabledZone.style.top="0px";disabledZone.style.width="100%";disabledZone.style.height="100%";document.body.appendChild(disabledZone);var messageZone=document.createElement('div');messageZone.setAttribute('id','messageZone');messageZone.style.position="absolute";messageZone.style.top="0px";messageZone.style.right="0px";messageZone.style.background="red";messageZone.style.color="white";messageZone.style.fontFamily="Arial,Helvetica,sans-serif";messageZone.style.padding="4px";disabledZone.appendChild(messageZone);var text=document.createTextNode(loadingMessage);messageZone.appendChild(text);dwr.util._disabledZoneUseCount=1;}
else{dwr.util.byId('messageZone').innerHTML=loadingMessage;disabledZone.style.visibility='visible';dwr.util._disabledZoneUseCount++;}});dwr.engine.setPostHook(function(){dwr.util._disabledZoneUseCount--;if(dwr.util._disabledZoneUseCount==0){dwr.util.byId('disabledZone').style.visibility='hidden';}});};dwr.util.setHighlightHandler=function(handler){dwr.util._highlightHandler=handler;};dwr.util.yellowFadeHighlightHandler=function(ele){dwr.util._yellowFadeProcess(ele,0);};dwr.util._yellowFadeSteps=["d0","b0","a0","90","98","a0","a8","b0","b8","c0","c8","d0","d8","e0","e8","f0","f8"];dwr.util._yellowFadeProcess=function(ele,colorIndex){ele=dwr.util.byId(ele);if(colorIndex<dwr.util._yellowFadeSteps.length){ele.style.backgroundColor="#ffff"+dwr.util._yellowFadeSteps[colorIndex];setTimeout("dwr.util._yellowFadeProcess('"+ele.id+"',"+(colorIndex+1)+")",200);}
else{ele.style.backgroundColor="transparent";}};dwr.util.borderFadeHighlightHandler=function(ele){ele.style.borderWidth="2px";ele.style.borderStyle="solid";dwr.util._borderFadeProcess(ele,0);};dwr.util._borderFadeSteps=["d0","b0","a0","90","98","a0","a8","b0","b8","c0","c8","d0","d8","e0","e8","f0","f8"];dwr.util._borderFadeProcess=function(ele,colorIndex){ele=dwr.util.byId(ele);if(colorIndex<dwr.util._borderFadeSteps.length){ele.style.borderColor="#ff"+dwr.util._borderFadeSteps[colorIndex]+dwr.util._borderFadeSteps[colorIndex];setTimeout("dwr.util._borderFadeProcess('"+ele.id+"',"+(colorIndex+1)+")",200);}
else{ele.style.backgroundColor="transparent";}};dwr.util.focusHighlightHandler=function(ele){try{ele.focus();}
catch(ex){}};dwr.util._highlightHandler=null;dwr.util.highlight=function(ele,options){if(options&&options.highlightHandler){options.highlightHandler(dwr.util.byId(ele));}
else if(dwr.util._highlightHandler!=null){dwr.util._highlightHandler(dwr.util.byId(ele));}};dwr.util.setValue=function(ele,val,options){if(val==null)val="";if(options==null)options={};var orig=ele;if(typeof ele=="string"){ele=dwr.util.byId(ele);if(ele&&ele.id!=orig)ele=null;}
var nodes=null;if(ele==null){nodes=document.getElementsByName(orig);if(nodes.length>=1)ele=nodes.item(0);}
if(ele==null){dwr.util._debug("setValue() can't find an element with id/name: "+orig+".");return;}
dwr.util.highlight(ele,options);if(dwr.util._isHTMLElement(ele,"select")){if(ele.type=="select-multiple"&&dwr.util._isArray(val))dwr.util._selectListItems(ele,val);else dwr.util._selectListItem(ele,val);return;}
if(dwr.util._isHTMLElement(ele,"input")){if(ele.type=="radio"||ele.type=="checkbox"){if(nodes&&nodes.length>=1){for(var i=0;i<nodes.length;i++){var node=nodes.item(i);if(node.type!=ele.type)continue;if(dwr.util._isArray(val)){node.checked=false;for(var j=0;j<val.length;j++)
if(val[j]==node.value)node.checked=true;}
else{node.checked=(node.value==val);}}}
else{ele.checked=(val==true);}}
else ele.value=val;return;}
if(dwr.util._isHTMLElement(ele,"textarea")){ele.value=val;return;}
if(val.nodeType){if(val.nodeType==9)val=val.documentElement;val=dwr.util._importNode(ele.ownerDocument,val,true);ele.appendChild(val);return;}
if(dwr.util._shouldEscapeHtml(options)&&typeof(val)=="string"){if(ele.textContent)ele.textContent=val;else if(ele.innerText)ele.innerText=val;else ele.innerHTML=dwr.util.escapeHtml(val);}
else{ele.innerHTML=val;}};dwr.util._selectListItems=function(ele,val){var found=false;var i;var j;for(i=0;i<ele.options.length;i++){ele.options[i].selected=false;for(j=0;j<val.length;j++){if(ele.options[i].value==val[j]){ele.options[i].selected=true;}}}
if(found)return;for(i=0;i<ele.options.length;i++){for(j=0;j<val.length;j++){if(ele.options[i].text==val[j]){ele.options[i].selected=true;}}}};dwr.util._selectListItem=function(ele,val){var found=false;var i;for(i=0;i<ele.options.length;i++){if(ele.options[i].value==val){ele.options[i].selected=true;found=true;}
else{ele.options[i].selected=false;}}
if(found)return;for(i=0;i<ele.options.length;i++){ele.options[i].selected=(ele.options[i].text==val);}};dwr.util.getValue=function(ele,options){if(options==null)options={};var orig=ele;if(typeof ele=="string"){ele=dwr.util.byId(ele);if(ele&&ele.id!=orig)ele=null;}
var nodes=null;if(ele==null){nodes=document.getElementsByName(orig);if(nodes.length>=1)ele=nodes.item(0);}
if(ele==null){dwr.util._debug("getValue() can't find an element with id/name: "+orig+".");return"";}
if(dwr.util._isHTMLElement(ele,"select")){if(ele.type=="select-multiple"){var reply=new Array();for(var i=0;i<ele.options.length;i++){var item=ele.options[i];if(item.selected){var valueAttr=item.getAttributeNode("value");if(valueAttr&&valueAttr.specified){reply.push(item.value);}
else{reply.push(item.text);}}}
return reply;}
else{var sel=ele.selectedIndex;if(sel!=-1){var item=ele.options[sel];var valueAttr=item.getAttributeNode("value");if(valueAttr&&valueAttr.specified){return item.value;}
return item.text;}
else{return"";}}}
if(dwr.util._isHTMLElement(ele,"input")){if(ele.type=="radio"){if(nodes&&nodes.length>=1){for(var i=0;i<nodes.length;i++){var node=nodes.item(i);if(node.type==ele.type){if(node.checked)return node.value;}}}
return ele.checked;}
if(ele.type=="checkbox"){if(nodes&&nodes.length>=1){var reply=[];for(var i=0;i<nodes.length;i++){var node=nodes.item(i);if(node.type==ele.type){if(node.checked)reply.push(node.value);}}
return reply;}
return ele.checked;}
return ele.value;}
if(dwr.util._isHTMLElement(ele,"textarea")){return ele.value;}
if(dwr.util._shouldEscapeHtml(options)){if(ele.textContent)return ele.textContent;else if(ele.innerText)return ele.innerText;}
return ele.innerHTML;};dwr.util.getText=function(ele){ele=dwr.util._getElementById(ele,"getText()");if(ele==null)return null;if(!dwr.util._isHTMLElement(ele,"select")){dwr.util._debug("getText() can only be used with select elements. Attempt to use: "+dwr.util._detailedTypeOf(ele)+" from  id: "+orig+".");return"";}
var sel=ele.selectedIndex;if(sel!=-1){return ele.options[sel].text;}
else{return"";}};dwr.util.setValues=function(data,options){var prefix="";if(options&&options.prefix)prefix=options.prefix;if(options&&options.idPrefix)prefix=options.idPrefix;dwr.util._setValuesRecursive(data,prefix);};dwr.util._setValuesRecursive=function(data,idpath){if(dwr.util._isArray(data)&&data.length>0&&dwr.util._isObject(data[0])){for(var i=0;i<data.length;i++){dwr.util._setValuesRecursive(data[i],idpath+"["+i+"]");}}
else if(dwr.util._isObject(data)&&!dwr.util._isArray(data)){for(var prop in data){var subidpath=idpath?idpath+"."+prop:prop;if(dwr.util._isObject(data[prop])&&!dwr.util._isArray(data[prop])||dwr.util._isArray(data[prop])&&data[prop].length>0&&dwr.util._isObject(data[prop][0])){dwr.util._setValuesRecursive(data[prop],subidpath);}
else if(typeof data[prop]=="function"){}
else{if(dwr.util.byId(subidpath)!=null||document.getElementsByName(subidpath).length>=1){dwr.util.setValue(subidpath,data[prop]);}}}}};dwr.util.getValues=function(data,options){if(typeof data=="string"||dwr.util._isHTMLElement(data)){return dwr.util.getFormValues(data);}
else{var prefix="";if(options!=null&&options.prefix)prefix=options.prefix;if(options!=null&&options.idPrefix)prefix=options.idPrefix;dwr.util._getValuesRecursive(data,prefix);return data;}};dwr.util.getFormValues=function(eleOrNameOrId){var ele=null;if(typeof eleOrNameOrId=="string"){ele=document.forms[eleOrNameOrId];if(ele==null)ele=dwr.util.byId(eleOrNameOrId);}
else if(dwr.util._isHTMLElement(eleOrNameOrId)){ele=eleOrNameOrId;}
if(ele!=null){if(ele.elements==null){alert("getFormValues() requires an object or reference to a form element.");return null;}
var reply={};var name;var value;for(var i=0;i<ele.elements.length;i++){if(ele[i].type in{button:0,submit:0,reset:0,image:0,file:0})continue;if(ele[i].name){name=ele[i].name;value=dwr.util.getValue(name);}
else{if(ele[i].id)name=ele[i].id;else name="element"+i;value=dwr.util.getValue(ele[i]);}
reply[name]=value;}
return reply;}};dwr.util._getValuesRecursive=function(data,idpath){if(dwr.util._isArray(data)&&data.length>0&&dwr.util._isObject(data[0])){for(var i=0;i<data.length;i++){dwr.util._getValuesRecursive(data[i],idpath+"["+i+"]");}}
else if(dwr.util._isObject(data)&&!dwr.util._isArray(data)){for(var prop in data){var subidpath=idpath?idpath+"."+prop:prop;if(dwr.util._isObject(data[prop])&&!dwr.util._isArray(data[prop])||dwr.util._isArray(data[prop])&&data[prop].length>0&&dwr.util._isObject(data[prop][0])){dwr.util._getValuesRecursive(data[prop],subidpath);}
else if(typeof data[prop]=="function"){}
else{if(dwr.util.byId(subidpath)!=null||document.getElementsByName(subidpath).length>=1){data[prop]=dwr.util.getValue(subidpath);}}}}};dwr.util.addOptions=function(ele,data){ele=dwr.util._getElementById(ele,"addOptions()");if(ele==null)return;var useOptions=dwr.util._isHTMLElement(ele,"select");var useLi=dwr.util._isHTMLElement(ele,["ul","ol"]);if(!useOptions&&!useLi){dwr.util._debug("addOptions() can only be used with select/ul/ol elements. Attempt to use: "+dwr.util._detailedTypeOf(ele));return;}
if(data==null)return;var argcount=arguments.length;var options={};var lastarg=arguments[argcount-1];if(argcount>2&&dwr.util._isObject(lastarg)){options=lastarg;argcount--;}
var arg3=null;if(argcount>=3)arg3=arguments[2];var arg4=null;if(argcount>=4)arg4=arguments[3];if(!options.optionCreator&&useOptions)options.optionCreator=dwr.util._defaultOptionCreator;if(!options.optionCreator&&useLi)options.optionCreator=dwr.util._defaultListItemCreator;var text,value,li;if(dwr.util._isArray(data)){for(var i=0;i<data.length;i++){options.data=data[i];options.text=null;options.value=null;if(useOptions){if(arg3!=null){if(arg4!=null){options.text=dwr.util._getValueFrom(data[i],arg4);options.value=dwr.util._getValueFrom(data[i],arg3);}
else options.text=options.value=dwr.util._getValueFrom(data[i],arg3);}
else options.text=options.value=dwr.util._getValueFrom(data[i]);if(options.text!=null||options.value){var opt=options.optionCreator(options);opt.text=options.text;opt.value=options.value;ele.options[ele.options.length]=opt;}}
else{options.value=dwr.util._getValueFrom(data[i],arg3);if(options.value!=null){li=options.optionCreator(options);if(dwr.util._shouldEscapeHtml(options)){options.value=dwr.util.escapeHtml(options.value);}
li.innerHTML=options.value;ele.appendChild(li);}}}}
else if(arg4!=null){if(!useOptions){alert("dwr.util.addOptions can only create select lists from objects.");return;}
for(var prop in data){options.data=data[prop];options.value=dwr.util._getValueFrom(data[prop],arg3);options.text=dwr.util._getValueFrom(data[prop],arg4);if(options.text!=null||options.value){var opt=options.optionCreator(options);opt.text=options.text;opt.value=options.value;ele.options[ele.options.length]=opt;}}}
else{if(!useOptions){dwr.util._debug("dwr.util.addOptions can only create select lists from objects.");return;}
for(var prop in data){if(typeof data[prop]=="function")continue;options.data=data[prop];if(!arg3){options.value=prop;options.text=data[prop];}
else{options.value=data[prop];options.text=prop;}
if(options.text!=null||options.value){var opt=options.optionCreator(options);opt.text=options.text;opt.value=options.value;ele.options[ele.options.length]=opt;}}}
dwr.util.highlight(ele,options);};dwr.util._getValueFrom=function(data,method){if(method==null)return data;else if(typeof method=='function')return method(data);else return data[method];};dwr.util._defaultOptionCreator=function(options){return new Option();};dwr.util._defaultListItemCreator=function(options){return document.createElement("li");};dwr.util.removeAllOptions=function(ele){ele=dwr.util._getElementById(ele,"removeAllOptions()");if(ele==null)return;var useOptions=dwr.util._isHTMLElement(ele,"select");var useLi=dwr.util._isHTMLElement(ele,["ul","ol"]);if(!useOptions&&!useLi){dwr.util._debug("removeAllOptions() can only be used with select, ol and ul elements. Attempt to use: "+dwr.util._detailedTypeOf(ele));return;}
if(useOptions){ele.options.length=0;}
else{while(ele.childNodes.length>0){ele.removeChild(ele.firstChild);}}};dwr.util.addRows=function(ele,data,cellFuncs,options){ele=dwr.util._getElementById(ele,"addRows()");if(ele==null)return;if(!dwr.util._isHTMLElement(ele,["table","tbody","thead","tfoot"])){dwr.util._debug("addRows() can only be used with table, tbody, thead and tfoot elements. Attempt to use: "+dwr.util._detailedTypeOf(ele));return;}
if(!options)options={};if(!options.rowCreator)options.rowCreator=dwr.util._defaultRowCreator;if(!options.cellCreator)options.cellCreator=dwr.util._defaultCellCreator;var tr,rowNum;if(dwr.util._isArray(data)){for(rowNum=0;rowNum<data.length;rowNum++){options.rowData=data[rowNum];options.rowIndex=rowNum;options.rowNum=rowNum;options.data=null;options.cellNum=-1;tr=dwr.util._addRowInner(cellFuncs,options);if(tr!=null)ele.appendChild(tr);}}
else if(typeof data=="object"){rowNum=0;for(var rowIndex in data){options.rowData=data[rowIndex];options.rowIndex=rowIndex;options.rowNum=rowNum;options.data=null;options.cellNum=-1;tr=dwr.util._addRowInner(cellFuncs,options);if(tr!=null)ele.appendChild(tr);rowNum++;}}
dwr.util.highlight(ele,options);};dwr.util._addRowInner=function(cellFuncs,options){var tr=options.rowCreator(options);if(tr==null)return null;for(var cellNum=0;cellNum<cellFuncs.length;cellNum++){var func=cellFuncs[cellNum];if(typeof func=='function')options.data=func(options.rowData,options);else options.data=func||"";options.cellNum=cellNum;var td=options.cellCreator(options);if(td!=null){if(options.data!=null){if(dwr.util._isHTMLElement(options.data))td.appendChild(options.data);else{if(dwr.util._shouldEscapeHtml(options)&&typeof(options.data)=="string"){td.innerHTML=dwr.util.escapeHtml(options.data);}
else{td.innerHTML=options.data;}}}
tr.appendChild(td);}}
return tr;};dwr.util._defaultRowCreator=function(options){return document.createElement("tr");};dwr.util._defaultCellCreator=function(options){return document.createElement("td");};dwr.util.removeAllRows=function(ele,options){ele=dwr.util._getElementById(ele,"removeAllRows()");if(ele==null)return;if(!options)options={};if(!options.filter)options.filter=function(){return true;};if(!dwr.util._isHTMLElement(ele,["table","tbody","thead","tfoot"])){dwr.util._debug("removeAllRows() can only be used with table, tbody, thead and tfoot elements. Attempt to use: "+dwr.util._detailedTypeOf(ele));return;}
var child=ele.firstChild;var next;while(child!=null){next=child.nextSibling;if(options.filter(child)){ele.removeChild(child);}
child=next;}};dwr.util.setClassName=function(ele,className){ele=dwr.util._getElementById(ele,"setClassName()");if(ele==null)return;ele.className=className;};dwr.util.addClassName=function(ele,className){ele=dwr.util._getElementById(ele,"addClassName()");if(ele==null)return;ele.className+=" "+className;};dwr.util.removeClassName=function(ele,className){ele=dwr.util._getElementById(ele,"removeClassName()");if(ele==null)return;var regex=new RegExp("(^|\\s)"+className+"(\\s|$)",'g');ele.className=ele.className.replace(regex,'');};dwr.util.toggleClassName=function(ele,className){ele=dwr.util._getElementById(ele,"toggleClassName()");if(ele==null)return;var regex=new RegExp("(^|\\s)"+className+"(\\s|$)");if(regex.test(ele.className)){ele.className=ele.className.replace(regex,'');}
else{ele.className+=" "+className;}};dwr.util.cloneNode=function(ele,options){ele=dwr.util._getElementById(ele,"cloneNode()");if(ele==null)return null;if(options==null)options={};var clone=ele.cloneNode(true);if(options.idPrefix||options.idSuffix){dwr.util._updateIds(clone,options);}
else{dwr.util._removeIds(clone);}
ele.parentNode.insertBefore(clone,ele);return clone;};dwr.util._updateIds=function(ele,options){if(options==null)options={};if(ele.id){ele.setAttribute("id",(options.idPrefix||"")+ele.id+(options.idSuffix||""));}
var children=ele.childNodes;for(var i=0;i<children.length;i++){var child=children.item(i);if(child.nodeType==1){dwr.util._updateIds(child,options);}}};dwr.util._removeIds=function(ele){if(ele.id)ele.removeAttribute("id");var children=ele.childNodes;for(var i=0;i<children.length;i++){var child=children.item(i);if(child.nodeType==1){dwr.util._removeIds(child);}}};dwr.util.cloneNodeForValues=function(templateEle,data,options){templateEle=dwr.util._getElementById(templateEle,"cloneNodeForValues()");if(templateEle==null)return null;if(options==null)options={};var idpath;if(options.idPrefix!=null)
idpath=options.idPrefix;else
idpath=templateEle.id||"";return dwr.util._cloneNodeForValuesRecursive(templateEle,data,idpath,options);};dwr.util._cloneNodeForValuesRecursive=function(templateEle,data,idpath,options){if(dwr.util._isArray(data)){var clones=[];for(var i=0;i<data.length;i++){var item=data[i];var clone=dwr.util._cloneNodeForValuesRecursive(templateEle,item,idpath+"["+i+"]",options);clones.push(clone);}
return clones;}
else
if(dwr.util._isObject(data)&&!dwr.util._isArray(data)){var clone=templateEle.cloneNode(true);if(options.updateCloneStyle&&clone.style){for(var propname in options.updateCloneStyle){clone.style[propname]=options.updateCloneStyle[propname];}}
dwr.util._replaceIds(clone,templateEle.id,idpath);templateEle.parentNode.insertBefore(clone,templateEle);dwr.util._cloneSubArrays(data,idpath,options);return clone;}
return null;};dwr.util._replaceIds=function(ele,oldidpath,newidpath){if(ele.id){var newId=null;if(ele.id==oldidpath){newId=newidpath;}
else if(ele.id.length>oldidpath.length){if(ele.id.substr(0,oldidpath.length)==oldidpath){var trailingChar=ele.id.charAt(oldidpath.length);if(trailingChar=="."||trailingChar=="["){newId=newidpath+ele.id.substr(oldidpath.length);}}}
if(newId){ele.setAttribute("id",newId);}
else{ele.removeAttribute("id");}}
var children=ele.childNodes;for(var i=0;i<children.length;i++){var child=children.item(i);if(child.nodeType==1){dwr.util._replaceIds(child,oldidpath,newidpath);}}};dwr.util._cloneSubArrays=function(data,idpath,options){for(prop in data){var value=data[prop];if(dwr.util._isArray(value)){if(value.length>0&&dwr.util._isObject(value[0])){var subTemplateId=idpath+"."+prop;var subTemplateEle=dwr.util.byId(subTemplateId);if(subTemplateEle!=null){dwr.util._cloneNodeForValuesRecursive(subTemplateEle,value,subTemplateId,options);}}}
else if(dwr.util._isObject(value)){dwr.util._cloneSubArrays(value,idpath+"."+prop,options);}}};dwr.util._getElementById=function(ele,source){var orig=ele;ele=dwr.util.byId(ele);if(ele==null){dwr.util._debug(source+" can't find an element with id: "+orig+".");}
return ele;};dwr.util._isHTMLElement=function(ele,nodeName){if(ele==null||typeof ele!="object"||ele.nodeName==null){return false;}
if(nodeName!=null){var test=ele.nodeName.toLowerCase();if(typeof nodeName=="string"){return test==nodeName.toLowerCase();}
if(dwr.util._isArray(nodeName)){var match=false;for(var i=0;i<nodeName.length&&!match;i++){if(test==nodeName[i].toLowerCase()){match=true;}}
return match;}
dwr.util._debug("dwr.util._isHTMLElement was passed test node name that is neither a string or array of strings");return false;}
return true;};dwr.util._detailedTypeOf=function(x){var reply=typeof x;if(reply=="object"){reply=Object.prototype.toString.apply(x);reply=reply.substring(8,reply.length-1);}
return reply;};dwr.util._isObject=function(data){return(data&&typeof data=="object");};dwr.util._isArray=function(data){return(data&&data.join);};dwr.util._isDate=function(data){return(data&&data.toUTCString)?true:false;};dwr.util._importNode=function(doc,importedNode,deep){var newNode;if(importedNode.nodeType==1){newNode=doc.createElement(importedNode.nodeName);for(var i=0;i<importedNode.attributes.length;i++){var attr=importedNode.attributes[i];if(attr.nodeValue!=null&&attr.nodeValue!=''){newNode.setAttribute(attr.name,attr.nodeValue);}}
if(typeof importedNode.style!="undefined"){newNode.style.cssText=importedNode.style.cssText;}}
else if(importedNode.nodeType==3){newNode=doc.createTextNode(importedNode.nodeValue);}
if(deep&&importedNode.hasChildNodes()){for(i=0;i<importedNode.childNodes.length;i++){newNode.appendChild(dwr.util._importNode(doc,importedNode.childNodes[i],true));}}
return newNode;};dwr.util._debug=function(message,stacktrace){var written=false;try{if(window.console){if(stacktrace&&window.console.trace)window.console.trace();window.console.log(message);written=true;}
else if(window.opera&&window.opera.postError){window.opera.postError(message);written=true;}}
catch(ex){}
if(!written){var debug=document.getElementById("dwr-debug");if(debug){var contents=message+"<br/>"+debug.innerHTML;if(contents.length>2048)contents=contents.substring(0,2048);debug.innerHTML=contents;}}};if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(ajaxLogManager==null)var ajaxLogManager={};ajaxLogManager._path=''+JAWR.jawr_dwr_path+'';ajaxLogManager.log=function(p0,callback){dwr.engine._execute(ajaxLogManager._path,'ajaxLogManager','log',p0,callback);}
ajaxLogManager.logSessionEvent=function(p0,p1,p2,p3,p4,callback){dwr.engine._execute(ajaxLogManager._path,'ajaxLogManager','logSessionEvent',p0,p1,p2,p3,p4,callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(phoneCallManager==null)var phoneCallManager={};phoneCallManager._path=''+JAWR.jawr_dwr_path+'';phoneCallManager.acceptSupporterCallRequest=function(p0,p1,p2,callback){dwr.engine._execute(phoneCallManager._path,'phoneCallManager','acceptSupporterCallRequest',p0,p1,p2,callback);}
phoneCallManager.submitCustomerCallRequest=function(p0,p1,callback){dwr.engine._execute(phoneCallManager._path,'phoneCallManager','submitCustomerCallRequest',p0,p1,callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(supportRequestFlow==null)var supportRequestFlow={};supportRequestFlow._path=''+JAWR.jawr_dwr_path+'';supportRequestFlow.startSupportRequestCall=function(p0,p1,p2,p3,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','startSupportRequestCall',p0,p1,p2,p3,callback);}
supportRequestFlow.cancelSupportRequest=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','cancelSupportRequest',p0,callback);}
supportRequestFlow.inviteSupporterForConsult=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','inviteSupporterForConsult',p0,p1,callback);}
supportRequestFlow.handOffAfterConsult=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','handOffAfterConsult',p0,callback);}
supportRequestFlow.dispatchAfterConsult=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','dispatchAfterConsult',p0,callback);}
supportRequestFlow.stopConsult=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','stopConsult',p0,callback);}
supportRequestFlow.approveConsultantDispatch=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','approveConsultantDispatch',p0,p1,callback);}
supportRequestFlow.approveConsultantForward=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','approveConsultantForward',p0,p1,callback);}
supportRequestFlow.completeSupportSession=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','completeSupportSession',p0,p1,callback);}
supportRequestFlow.leaveSessionOpen=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','leaveSessionOpen',p0,callback);}
supportRequestFlow.resumeLeftOpenSession=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','resumeLeftOpenSession',p0,callback);}
supportRequestFlow.cancelResumeSession=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','cancelResumeSession',p0,callback);}
supportRequestFlow.closeLeftOpenSession=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','closeLeftOpenSession',p0,callback);}
supportRequestFlow.cancelReport=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','cancelReport',p0,callback);}
supportRequestFlow.terminateSupportSession=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','terminateSupportSession',p0,callback);}
supportRequestFlow.terminateAfterStoppedWaiting=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','terminateAfterStoppedWaiting',p0,callback);}
supportRequestFlow.createJobOffer=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','createJobOffer',p0,callback);}
supportRequestFlow.cancelJobOffer=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','cancelJobOffer',p0,callback);}
supportRequestFlow.terminateJobOffer=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','terminateJobOffer',p0,callback);}
supportRequestFlow.terminateAfterSupporterDisconnect=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','terminateAfterSupporterDisconnect',p0,callback);}
supportRequestFlow.approveFix=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','approveFix',p0,p1,callback);}
supportRequestFlow.approveSupportSessionResolution=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','approveSupportSessionResolution',p0,p1,callback);}
supportRequestFlow.agreeJobOffer=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','agreeJobOffer',p0,p1,callback);}
supportRequestFlow.useOldCard=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','useOldCard',p0,p1,callback);}
supportRequestFlow.getActiveProcessCurrentState=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','getActiveProcessCurrentState',p0,callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(autoCompleteManager==null)var autoCompleteManager={};autoCompleteManager._path=''+JAWR.jawr_dwr_path+'';autoCompleteManager.getJsonResult=function(p0,p1,callback){dwr.engine._execute(autoCompleteManager._path,'autoCompleteManager','getJsonResult',p0,p1,callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(searchManager==null)var searchManager={};searchManager._path=''+JAWR.jawr_dwr_path+'';searchManager.findEligibleSupportersSorted=function(p0,p1,p2,callback){dwr.engine._execute(searchManager._path,'searchManager','findEligibleSupportersSorted',p0,p1,p2,callback);}
searchManager.getSearchResultSupporterByPackage=function(p0,p1,p2,p3,callback){dwr.engine._execute(searchManager._path,'searchManager','getSearchResultSupporterByPackage',p0,p1,p2,p3,callback);}
searchManager.getSearchResultDefaultPackages=function(p0,p1,p2,callback){dwr.engine._execute(searchManager._path,'searchManager','getSearchResultDefaultPackages',p0,p1,p2,callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(supportRequestFlow==null)var supportRequestFlow={};supportRequestFlow._path=''+JAWR.jawr_dwr_path+'';supportRequestFlow.startSupportRequestCall=function(p0,p1,p2,p3,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','startSupportRequestCall',p0,p1,p2,p3,callback);}
supportRequestFlow.cancelSupportRequest=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','cancelSupportRequest',p0,callback);}
supportRequestFlow.inviteSupporterForConsult=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','inviteSupporterForConsult',p0,p1,callback);}
supportRequestFlow.handOffAfterConsult=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','handOffAfterConsult',p0,callback);}
supportRequestFlow.dispatchAfterConsult=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','dispatchAfterConsult',p0,callback);}
supportRequestFlow.stopConsult=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','stopConsult',p0,callback);}
supportRequestFlow.approveConsultantDispatch=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','approveConsultantDispatch',p0,p1,callback);}
supportRequestFlow.approveConsultantForward=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','approveConsultantForward',p0,p1,callback);}
supportRequestFlow.completeSupportSession=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','completeSupportSession',p0,p1,callback);}
supportRequestFlow.leaveSessionOpen=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','leaveSessionOpen',p0,callback);}
supportRequestFlow.resumeLeftOpenSession=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','resumeLeftOpenSession',p0,callback);}
supportRequestFlow.cancelResumeSession=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','cancelResumeSession',p0,callback);}
supportRequestFlow.closeLeftOpenSession=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','closeLeftOpenSession',p0,callback);}
supportRequestFlow.cancelReport=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','cancelReport',p0,callback);}
supportRequestFlow.terminateSupportSession=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','terminateSupportSession',p0,callback);}
supportRequestFlow.terminateAfterStoppedWaiting=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','terminateAfterStoppedWaiting',p0,callback);}
supportRequestFlow.createJobOffer=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','createJobOffer',p0,callback);}
supportRequestFlow.cancelJobOffer=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','cancelJobOffer',p0,callback);}
supportRequestFlow.terminateJobOffer=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','terminateJobOffer',p0,callback);}
supportRequestFlow.terminateAfterSupporterDisconnect=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','terminateAfterSupporterDisconnect',p0,callback);}
supportRequestFlow.approveFix=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','approveFix',p0,p1,callback);}
supportRequestFlow.approveSupportSessionResolution=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','approveSupportSessionResolution',p0,p1,callback);}
supportRequestFlow.agreeJobOffer=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','agreeJobOffer',p0,p1,callback);}
supportRequestFlow.useOldCard=function(p0,p1,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','useOldCard',p0,p1,callback);}
supportRequestFlow.getActiveProcessCurrentState=function(p0,callback){dwr.engine._execute(supportRequestFlow._path,'supportRequestFlow','getActiveProcessCurrentState',p0,callback);}
if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(dwr==null)var dwr={};if(dwr.engine==null)dwr.engine={};if(DWREngine==null)var DWREngine=dwr.engine;if(supportManager==null)var supportManager={};supportManager._path=''+JAWR.jawr_dwr_path+'';supportManager.getSessionResumeBean=function(p0,callback){dwr.engine._execute(supportManager._path,'supportManager','getSessionResumeBean',p0,callback);}
supportManager.logRemoteControlApproval=function(p0,p1,callback){dwr.engine._execute(supportManager._path,'supportManager','logRemoteControlApproval',p0,p1,callback);}
supportManager.sendSoftwareActivationKeyToCustomer=function(p0,callback){dwr.engine._execute(supportManager._path,'supportManager','sendSoftwareActivationKeyToCustomer',p0,callback);}
supportManager.markCustomerConnectedToSession=function(p0,callback){dwr.engine._execute(supportManager._path,'supportManager','markCustomerConnectedToSession',p0,callback);}
supportManager.isCustomerConnectedToSession=function(p0,callback){dwr.engine._execute(supportManager._path,'supportManager','isCustomerConnectedToSession',p0,callback);}