var Prototype={Version:'1.6.0.3',Browser:{IE:!!(window.attachEvent&&navigator.userAgent.indexOf('Opera')===-1),Opera:navigator.userAgent.indexOf('Opera')>-1,WebKit:navigator.userAgent.indexOf('AppleWebKit/')>-1,Gecko:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')===-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,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;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=(function(m){return function(){return ancestor[m].apply(this,arguments)};})(property).wrap(method);value.valueOf=method.valueOf.bind(method);value.toString=method.toString.bind(method);}
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.isUndefined(object))return'undefined';if(object===null)return'null';return object.inspect?object.inspect():String(object);}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(!Object.isUndefined(value))
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!=null&&typeof object=="object"&&'splice'in object&&'join'in object;},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].replace(/\s+/g,'').split(',');return names.length==1&&!names[0]?[]:names;},bind:function(){if(arguments.length<2&&Object.isUndefined(arguments[0]))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);},defer:function(){var args=[0.01].concat($A(arguments));return this.delay.apply(this,args);},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)));};}});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=Object.isUndefined(count)?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=Object.isUndefined(truncation)?'...':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;if(str.blank())return false;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.stripTags().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('')});String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.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);});}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable={each:function(iterator,context){var index=0;try{this._each(function(value){iterator.call(context,value,index++);});}catch(e){if(e!=$break)throw e;}
return this;},eachSlice:function(number,iterator,context){var index=-number,slices=[],array=this.toArray();if(number<1)return array;while((index+=number)<array.length)
slices.push(array.slice(index,index+number));return slices.collect(iterator,context);},all:function(iterator,context){iterator=iterator||Prototype.K;var result=true;this.each(function(value,index){result=result&&!!iterator.call(context,value,index);if(!result)throw $break;});return result;},any:function(iterator,context){iterator=iterator||Prototype.K;var result=false;this.each(function(value,index){if(result=!!iterator.call(context,value,index))
throw $break;});return result;},collect:function(iterator,context){iterator=iterator||Prototype.K;var results=[];this.each(function(value,index){results.push(iterator.call(context,value,index));});return results;},detect:function(iterator,context){var result;this.each(function(value,index){if(iterator.call(context,value,index)){result=value;throw $break;}});return result;},findAll:function(iterator,context){var results=[];this.each(function(value,index){if(iterator.call(context,value,index))
results.push(value);});return results;},grep:function(filter,iterator,context){iterator=iterator||Prototype.K;var results=[];if(Object.isString(filter))
filter=new RegExp(filter);this.each(function(value,index){if(filter.match(value))
results.push(iterator.call(context,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=Object.isUndefined(fillWith)?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number)slice.push(fillWith);return slice;});},inject:function(memo,iterator,context){this.each(function(value,index){memo=iterator.call(context,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||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value>=result)
result=value;});return result;},min:function(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value<result)
result=value;});return result;},partition:function(iterator,context){iterator=iterator||Prototype.K;var trues=[],falses=[];this.each(function(value,index){(iterator.call(context,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){var results=[];this.each(function(value,index){if(!iterator.call(context,value,index))
results.push(value);});return results;},sortBy:function(iterator,context){return this.map(function(value,index){return{value:value,criteria:iterator.call(context,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||0,results=new Array(length);while(length--)results[length]=iterable[length];return results;}
if(Prototype.Browser.WebKit){$A=function(iterable){if(!iterable)return[];if(!(typeof iterable==='function'&&typeof iterable.length==='number'&&typeof iterable.item==='function')&&iterable.toArray)
return iterable.toArray();var length=iterable.length||0,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(!Object.isUndefined(value))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,context){$R(0,this,true).each(iterator,context);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(){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:function(iterator){for(var key in this._object){var value=this._object[key],pair=[key,value];pair.key=key;pair.value=value;iterator(pair);}},set:function(key,value){return this._object[key]=value;},get:function(key){if(this._object[key]!==Object.prototype[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.inject([],function(results,pair){var key=encodeURIComponent(pair.key),values=pair.value;if(values&&typeof values=='object'){if(Object.isArray(values))
return results.concat(values.map(toQueryPair.curry(key)));}else results.push(toQueryPair(key,values));return results;}).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();else if(Object.isHash(this.options.parameters))
this.options.parameters=this.options.parameters.toObject();}});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&&this.isSameOrigin()&&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;}},isSameOrigin:function(){var m=this.url.match(/^\s*https?:\/\/[^\/]*/);return!m||(m[0]=='#{protocol}//#{domain}#{port}'.interpolate({protocol:location.protocol,domain:document.domain,port:location.port?':'+location.port:''}));},getHeader:function(name){try{return this.transport.getResponseHeader(name)||null;}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=Object.isUndefined(xml)?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||!this.request.isSameOrigin());}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'))||this.responseText.blank())
return null;try{return this.responseText.evalJSON(options.sanitizeJSON||!this.request.isSameOrigin());}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=Object.clone(options);var onComplete=options.onComplete;options.onComplete=(function(response,json){this.updateContent(response.responseText);if(Object.isFunction(onComplete))onComplete(response,json);}).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);}}});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||{});if(element)this.Element.prototype=element.prototype;}).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=$(element);element.style.display='none';return element;},show:function(element){element=$(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,insert,tagName,childNodes;for(var position in insertions){content=insertions[position];position=position.toLowerCase();insert=Element._insertionTranslations[position];if(content&&content.toElement)content=content.toElement();if(Object.isElement(content)){insert(element,content);continue;}
content=Object.toHTML(content);tagName=((position=='before'||position=='after')?element.parentNode:element).tagName.toUpperCase();childNodes=Element._getContentFromAnonymousElement(tagName,content.stripScripts());if(position=='top'||position=='after')childNodes.reverse();childNodes.each(insert.curry(element));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 $(element).select("*");},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 Object.isNumber(expression)?ancestors[expression]:Selector.findElement(ancestors,expression,index);},down:function(element,expression,index){element=$(element);if(arguments.length==1)return element.firstDescendant();return Object.isNumber(expression)?element.descendants()[expression]:Element.select(element,expression)[index||0];},previous:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.previousElementSibling(element));var previousSiblings=element.previousSiblings();return Object.isNumber(expression)?previousSiblings[expression]:Selector.findElement(previousSiblings,expression,index);},next:function(element,expression,index){element=$(element);if(arguments.length==1)return $(Selector.handlers.nextElementSibling(element));var nextSiblings=element.nextSiblings();return Object.isNumber(expression)?nextSiblings[expression]:Selector.findElement(nextSiblings,expression,index);},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]=Object.isUndefined(value)?true:value;for(var attr in attributes){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(ancestor.contains)
return ancestor.contains(element)&&ancestor!==element;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||value=='auto'){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')?(Object.isUndefined(elementStyle.styleFloat)?'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(Prototype.Browser.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.toUpperCase()=='BODY')break;var p=Element.getStyle(element,'position');if(p!=='static')break;}}while(element);return Element._returnOffset(valueL,valueT);},absolutize:function(element){element=$(element);if(element.getStyle('position')=='absolute')return element;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;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&&(element.tagName.toUpperCase()=='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(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(proceed,element,style){switch(style){case'left':case'top':case'right':case'bottom':if(proceed(element,'position')==='static')return null;case'height':case'width':if(!Element.visible(element))return null;var dim=parseInt(proceed(element,style),10);if(dim!==element['offset'+style.capitalize()])
return dim+'px';var properties;if(style==='height'){properties=['border-top-width','padding-top','padding-bottom','border-bottom-width'];}
else{properties=['border-left-width','padding-left','padding-right','border-right-width'];}
return properties.inject(dim,function(memo,property){var val=proceed(element,property);return val===null?memo:memo-parseInt(val,10);})+'px';default:return proceed(element,style);}});Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(proceed,element,attribute){if(attribute==='title')return element.title;return proceed(element,attribute);});}
else if(Prototype.Browser.IE){Element.Methods.getOffsetParent=Element.Methods.getOffsetParent.wrap(function(proceed,element){element=$(element);try{element.offsetParent}
catch(e){return $(document.body)}
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;});$w('positionedOffset viewportOffset').each(function(method){Element.Methods[method]=Element.Methods[method].wrap(function(proceed,element){element=$(element);try{element.offsetParent}
catch(e){return Element._returnOffset(0,0)}
var position=element.getStyle('position');if(position!=='static')return proceed(element);var offsetParent=element.getOffsetParent();if(offsetParent&&offsetParent.getStyle('position')==='fixed')
offsetParent.setStyle({zoom:1});element.setStyle({position:'relative'});var value=proceed(element);element.setStyle({position:position});return value;});});Element.Methods.cumulativeOffset=Element.Methods.cumulativeOffset.wrap(function(proceed,element){try{element.offsetParent}
catch(e){return Element._returnOffset(0,0)}
return proceed(element);});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){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.extend({cellpadding:'cellPadding',cellspacing:'cellSpacing'},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 frameBorder').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.toUpperCase()=='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('outerHTML'in document.createElement('div')){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];if(t){div.innerHTML=t[0]+html+t[1];t[2].times(function(){div=div.firstChild});}else div.innerHTML=html;return $A(div.childNodes);};Element._insertionTranslations={before:function(element,node){element.parentNode.insertBefore(node,element);},top:function(element,node){element.insertBefore(node,element.firstChild);},bottom:function(element,node){element.appendChild(node);},after:function(element,node){element.parentNode.insertBefore(node,element.nextSibling);},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(){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.toUpperCase(),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={},B=Prototype.Browser;$w('width height').each(function(d){var D=d.capitalize();if(B.WebKit&&!document.evaluate){dimensions[d]=self['inner'+D];}else if(B.Opera&&parseFloat(window.opera.version())<9.5){dimensions[d]=document.body['client'+D]}else{dimensions[d]=document.documentElement['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();if(this.shouldUseSelectorsAPI()){this.mode='selectorsAPI';}else if(this.shouldUseXPath()){this.mode='xpath';this.compileXPathMatcher();}else{this.mode="normal";this.compileMatcher();}},shouldUseXPath:function(){if(!Prototype.BrowserFeatures.XPath)return false;var e=this.expression;if(Prototype.Browser.WebKit&&(e.include("-of-type")||e.include(":empty")))
return false;if((/(\[[\w-]*?:|:checked)/).test(e))
return false;return true;},shouldUseSelectorsAPI:function(){if(!Prototype.BrowserFeatures.SelectorsAPI)return false;if(!Selector._div)Selector._div=new Element('div');try{Selector._div.querySelector(this.expression);}catch(e){return false;}
return true;},compileMatcher:function(){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;var e=this.expression,results;switch(this.mode){case'selectorsAPI':if(root!==document){var oldId=root.id,id=$(root).identify();e="#"+id+" "+e;}
results=$A(root.querySelectorAll(e)).map(Element.extend);root.id=oldId;return results;case'xpath':return document._getElementsByXPath(this.xpath,root);default: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:function(m){m[1]=m[1].toLowerCase();return new Template("[@#{1}]").evaluate(m);},attr:function(m){m[1]=m[1].toLowerCase();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)]",'checked':"[@checked]",'disabled':"[(@disabled) and (@type!='hidden')]",'enabled':"[not(@disabled) and (@type!='hidden')]",'not':function(m){var e=m[6],p=Selector.patterns,x=Selector.xpath,le,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); c = false;',attr:function(m){m[3]=(m[5]||m[6]);return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); 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]+:)?[\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 nodeValue&&Selector.operators[matches[2]](nodeValue,matches[5]||matches[6]);}},handlers:{concat:function(a,b){for(var i=0,node;node=b[i];i++)
a.push(node);return a;},mark:function(nodes){var _true=Prototype.emptyFunction;for(var i=0,node;node=nodes[i];i++)
node._countedByPrototype=_true;return nodes;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
node._countedByPrototype=undefined;return nodes;},index:function(parentNode,reverse,ofType){parentNode._countedByPrototype=Prototype.emptyFunction;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._countedByPrototype))node.nodeIndex=j++;}}else{for(var i=0,j=1,nodes=parentNode.childNodes;node=nodes[i];i++)
if(node.nodeType==1&&(!ofType||node._countedByPrototype))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])._countedByPrototype){n._countedByPrototype=Prototype.emptyFunction;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,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){var uTagName=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()===uTagName)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,combinator){if(!nodes)nodes=root.getElementsByTagName("*");if(nodes&&combinator)nodes=this[combinator](nodes);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,combinator){if(!nodes)nodes=root.getElementsByTagName("*");if(nodes&&combinator)nodes=this[combinator](nodes);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._countedByPrototype){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)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._countedByPrototype)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&&(!node.type||node.type!=='hidden'))
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==v||nv&&nv.startsWith(v);},'$=':function(nv,v){return nv==v||nv&&nv.endsWith(v);},'*=':function(nv,v){return nv==v||nv&&nv.include(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()+'-');}},split:function(expression){var expressions=[];expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(m){expressions.push(m[1].strip());});return expressions;},matchElements:function(elements,expression){var matches=$$(expression),h=Selector.handlers;h.mark(matches);for(var i=0,results=[],element;element=elements[i];i++)
if(element._countedByPrototype)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){expressions=Selector.split(expressions.join(','));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;}});if(Prototype.Browser.IE){Object.extend(Selector.handlers,{concat:function(a,b){for(var i=0,node;node=b[i];i++)
if(node.tagName!=="!")a.push(node);return a;},unmark:function(nodes){for(var i=0,node;node=nodes[i];i++)
node.removeAttribute('_countedByPrototype');return nodes;}});}
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(Object.isUndefined(options.hash))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!='file'&&(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.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(Object.isUndefined(value))return element.checked?element.value:null;else element.checked=!!value;},textarea:function(element,value){if(Object.isUndefined(value))return element.value;else element.value=value;},select:function(element,value){if(Object.isUndefined(value))
return this[element.type=='select-one'?'selectOne':'selectMany'](element);else{var opt,currentValue,single=!Object.isArray(value);for(var i=0,length=element.length;i<length;i++){opt=element.options[i];currentValue=this.optionValue(opt);if(single){if(currentValue==value){opt.selected=true;return;}}
else opt.selected=value.include(currentValue);}}},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){event=Event.extend(event);var node=event.target,type=event.type,currentTarget=event.currentTarget;if(currentTarget&&currentTarget.tagName){if(type==='load'||type==='error'||(type==='click'&&currentTarget.tagName.toLowerCase()==='input'&&currentTarget.type==='radio'))
node=currentTarget;}
if(node.nodeType==Node.TEXT_NODE)node=node.parentNode;return Element.extend(node);},findElement:function(event,expression){var element=Event.element(event);if(!expression)return element;var elements=[element].concat(element.ancestors());return Selector.findElement(elements,expression,0);},pointer:function(event){var docElement=document.documentElement,body=document.body||{scrollLeft:0,scrollTop:0};return{x:event.pageX||(event.clientX+
(docElement.scrollLeft||body.scrollLeft)-
(docElement.clientLeft||0)),y:event.pageY||(event.clientY+
(docElement.scrollTop||body.scrollTop)-
(docElement.clientTop||0))};},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._prototypeEventID)return element._prototypeEventID[0];arguments.callee.id=arguments.callee.id||1;return element._prototypeEventID=[++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);}
if(Prototype.Browser.WebKit){window.addEventListener('unload',Prototype.emptyFunction,false);}
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;var event;if(document.createEvent){event=document.createEvent("HTMLEvents");event.initEvent("dataavailable",true,true);}else{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.extend(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(),loaded:false});(function(){var timer;function fireContentLoadedEvent(){if(document.loaded)return;if(timer)window.clearInterval(timer);document.fire("dom:loaded");document.loaded=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();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)+.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+.75)+Math.random()/4;return pos>1?1:pos;},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+.5;},pulse:function(pos,pulses){return(-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2)+.5;},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;this.render=(function(){function dispatch(effect,eventName){if(effect.options[eventName+'Internal'])
effect.options[eventName+'Internal'](effect);if(effect.options[eventName])
effect.options[eventName](effect);}
return function(pos){if(this.state==="idle"){this.state="running";dispatch(this,'beforeSetup');if(this.setup)this.setup();dispatch(this,'afterSetup');}
if(this.state==="running"){pos=(this.options.transition(pos)*this.fromToDelta)+this.options.from;this.position=pos;dispatch(this,'beforeUpdate');if(this.update)this.update(pos);dispatch(this,'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();if(options.offset)elementOffsets[1]+=options.offset;return new Effect.Tween(null,scrollOffsets.top,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]||{},oldOpacity=element.getInlineOpacity(),transition=options.transition||Effect.Transitions.linear,reverser=function(pos){return 1-transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2)+.5);};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(results,property){results[property]=css[property];return results;});if(!styles.opacity)styles.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(Object.isUndefined(Effect))
throw("dragdrop.js requires including script.aculo.us' effects.js library");var Droppables={drops:[],remove:function(element){this.drops=this.drops.reject(function(d){return d.element==$(element)});},add:function(element){element=$(element);var options=Object.extend({greedy:true,hoverclass:null,tree:false},arguments[1]||{});if(options.containment){options._containers=[];var containment=options.containment;if(Object.isArray(containment)){containment.each(function(c){options._containers.push($(c))});}else{options._containers.push($(containment));}}
if(options.accept)options.accept=[options.accept].flatten();Element.makePositioned(element);options.element=element;this.drops.push(options);},findDeepestChild:function(drops){deepest=drops[0];for(i=1;i<drops.length;++i)
if(Element.isParent(drops[i].element,deepest.element))
deepest=drops[i];return deepest;},isContained:function(element,drop){var containmentNode;if(drop.tree){containmentNode=element.treeNode;}else{containmentNode=element.parentNode;}
return drop._containers.detect(function(c){return containmentNode==c});},isAffected:function(point,element,drop){return((drop.element!=element)&&((!drop._containers)||this.isContained(element,drop))&&((!drop.accept)||(Element.classNames(element).detect(function(v){return drop.accept.include(v)})))&&Position.within(drop.element,point[0],point[1]));},deactivate:function(drop){if(drop.hoverclass)
Element.removeClassName(drop.element,drop.hoverclass);this.last_active=null;},activate:function(drop){if(drop.hoverclass)
Element.addClassName(drop.element,drop.hoverclass);this.last_active=drop;},show:function(point,element){if(!this.drops.length)return;var drop,affected=[];this.drops.each(function(drop){if(Droppables.isAffected(point,element,drop))
affected.push(drop);});if(affected.length>0)
drop=Droppables.findDeepestChild(affected);if(this.last_active&&this.last_active!=drop)this.deactivate(this.last_active);if(drop){Position.within(drop.element,point[0],point[1]);if(drop.onHover)
drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));if(drop!=this.last_active)Droppables.activate(drop);}},fire:function(event,element){if(!this.last_active)return;Position.prepare();if(this.isAffected([Event.pointerX(event),Event.pointerY(event)],element,this.last_active))
if(this.last_active.onDrop){this.last_active.onDrop(element,this.last_active.element,event);return true;}},reset:function(){if(this.last_active)
this.deactivate(this.last_active);}};var Draggables={drags:[],observers:[],register:function(draggable){if(this.drags.length==0){this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.updateDrag.bindAsEventListener(this);this.eventKeypress=this.keyPress.bindAsEventListener(this);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(document,"mousemove",this.eventMouseMove);Event.observe(document,"keypress",this.eventKeypress);}
this.drags.push(draggable);},unregister:function(draggable){this.drags=this.drags.reject(function(d){return d==draggable});if(this.drags.length==0){Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);Event.stopObserving(document,"keypress",this.eventKeypress);}},activate:function(draggable){if(draggable.options.delay){this._timeout=setTimeout(function(){Draggables._timeout=null;window.focus();Draggables.activeDraggable=draggable;}.bind(this),draggable.options.delay);}else{window.focus();this.activeDraggable=draggable;}},deactivate:function(){this.activeDraggable=null;},updateDrag:function(event){if(!this.activeDraggable)return;var pointer=[Event.pointerX(event),Event.pointerY(event)];if(this._lastPointer&&(this._lastPointer.inspect()==pointer.inspect()))return;this._lastPointer=pointer;this.activeDraggable.updateDrag(event,pointer);},endDrag:function(event){if(this._timeout){clearTimeout(this._timeout);this._timeout=null;}
if(!this.activeDraggable)return;this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null;},keyPress:function(event){if(this.activeDraggable)
this.activeDraggable.keyPress(event);},addObserver:function(observer){this.observers.push(observer);this._cacheObserverCallbacks();},removeObserver:function(element){this.observers=this.observers.reject(function(o){return o.element==element});this._cacheObserverCallbacks();},notify:function(eventName,draggable,event){if(this[eventName+'Count']>0)
this.observers.each(function(o){if(o[eventName])o[eventName](eventName,draggable,event);});if(draggable.options[eventName])draggable.options[eventName](draggable,event);},_cacheObserverCallbacks:function(){['onStart','onEnd','onDrag'].each(function(eventName){Draggables[eventName+'Count']=Draggables.observers.select(function(o){return o[eventName];}).length;});}};var Draggable=Class.create({initialize:function(element){var defaults={handle:false,reverteffect:function(element,top_offset,left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;new Effect.Move(element,{x:-left_offset,y:-top_offset,duration:dur,queue:{scope:'_draggable',position:'end'}});},endeffect:function(element){var toOpacity=Object.isNumber(element._opacity)?element._opacity:1.0;new Effect.Opacity(element,{duration:0.2,from:0.7,to:toOpacity,queue:{scope:'_draggable',position:'end'},afterFinish:function(){Draggable._dragging[element]=false}});},zindex:1000,revert:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false,delay:0};if(!arguments[1]||Object.isUndefined(arguments[1].endeffect))
Object.extend(defaults,{starteffect:function(element){element._opacity=Element.getOpacity(element);Draggable._dragging[element]=true;new Effect.Opacity(element,{duration:0.2,from:element._opacity,to:0.7});}});var options=Object.extend(defaults,arguments[1]||{});this.element=$(element);if(options.handle&&Object.isString(options.handle))
this.handle=this.element.down('.'+options.handle,0);if(!this.handle)this.handle=$(options.handle);if(!this.handle)this.handle=this.element;if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML){options.scroll=$(options.scroll);this._isScrollChild=Element.childOf(this.element,options.scroll);}
Element.makePositioned(this.element);this.options=options;this.dragging=false;this.eventMouseDown=this.initDrag.bindAsEventListener(this);Event.observe(this.handle,"mousedown",this.eventMouseDown);Draggables.register(this);},destroy:function(){Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);Draggables.unregister(this);},currentDelta:function(){return([parseInt(Element.getStyle(this.element,'left')||'0'),parseInt(Element.getStyle(this.element,'top')||'0')]);},initDrag:function(event){if(!Object.isUndefined(Draggable._dragging[this.element])&&Draggable._dragging[this.element])return;if(Event.isLeftClick(event)){var src=Event.element(event);if((tag_name=src.tagName.toUpperCase())&&(tag_name=='INPUT'||tag_name=='SELECT'||tag_name=='OPTION'||tag_name=='BUTTON'||tag_name=='TEXTAREA'))return;var pointer=[Event.pointerX(event),Event.pointerY(event)];var pos=Position.cumulativeOffset(this.element);this.offset=[0,1].map(function(i){return(pointer[i]-pos[i])});Draggables.activate(this);Event.stop(event);}},startDrag:function(event){this.dragging=true;if(!this.delta)
this.delta=this.currentDelta();if(this.options.zindex){this.originalZ=parseInt(Element.getStyle(this.element,'z-index')||0);this.element.style.zIndex=this.options.zindex;}
if(this.options.ghosting){this._clone=this.element.cloneNode(true);this._originallyAbsolute=(this.element.getStyle('position')=='absolute');if(!this._originallyAbsolute)
Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element);}
if(this.options.scroll){if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left;this.originalScrollTop=where.top;}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop;}}
Draggables.notify('onStart',this,event);if(this.options.starteffect)this.options.starteffect(this.element);},updateDrag:function(event,pointer){if(!this.dragging)this.startDrag(event);if(!this.options.quiet){Position.prepare();Droppables.show(pointer,this.element);}
Draggables.notify('onDrag',this,event);this.draw(pointer);if(this.options.change)this.options.change(this);if(this.options.scroll){this.stopScrolling();var p;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){p=[left,top,left+width,top+height];}}else{p=Position.page(this.options.scroll);p[0]+=this.options.scroll.scrollLeft+Position.deltaX;p[1]+=this.options.scroll.scrollTop+Position.deltaY;p.push(p[0]+this.options.scroll.offsetWidth);p.push(p[1]+this.options.scroll.offsetHeight);}
var speed=[0,0];if(pointer[0]<(p[0]+this.options.scrollSensitivity))speed[0]=pointer[0]-(p[0]+this.options.scrollSensitivity);if(pointer[1]<(p[1]+this.options.scrollSensitivity))speed[1]=pointer[1]-(p[1]+this.options.scrollSensitivity);if(pointer[0]>(p[2]-this.options.scrollSensitivity))speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity);if(pointer[1]>(p[3]-this.options.scrollSensitivity))speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity);this.startScrolling(speed);}
if(Prototype.Browser.WebKit)window.scrollBy(0,0);Event.stop(event);},finishDrag:function(event,success){this.dragging=false;if(this.options.quiet){Position.prepare();var pointer=[Event.pointerX(event),Event.pointerY(event)];Droppables.show(pointer,this.element);}
if(this.options.ghosting){if(!this._originallyAbsolute)
Position.relativize(this.element);delete this._originallyAbsolute;Element.remove(this._clone);this._clone=null;}
var dropped=false;if(success){dropped=Droppables.fire(event,this.element);if(!dropped)dropped=false;}
if(dropped&&this.options.onDropped)this.options.onDropped(this.element);Draggables.notify('onEnd',this,event);var revert=this.options.revert;if(revert&&Object.isFunction(revert))revert=revert(this.element);var d=this.currentDelta();if(revert&&this.options.reverteffect){if(dropped==0||revert!='failure')
this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);}else{this.delta=d;}
if(this.options.zindex)
this.element.style.zIndex=this.originalZ;if(this.options.endeffect)
this.options.endeffect(this.element);Draggables.deactivate(this);Droppables.reset();},keyPress:function(event){if(event.keyCode!=Event.KEY_ESC)return;this.finishDrag(event,false);Event.stop(event);},endDrag:function(event){if(!this.dragging)return;this.stopScrolling();this.finishDrag(event,true);Event.stop(event);},draw:function(point){var pos=Position.cumulativeOffset(this.element);if(this.options.ghosting){var r=Position.realOffset(this.element);pos[0]+=r[0]-Position.deltaX;pos[1]+=r[1]-Position.deltaY;}
var d=this.currentDelta();pos[0]-=d[0];pos[1]-=d[1];if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;}
var p=[0,1].map(function(i){return(point[i]-pos[i]-this.offset[i])}.bind(this));if(this.options.snap){if(Object.isFunction(this.options.snap)){p=this.options.snap(p[0],p[1],this);}else{if(Object.isArray(this.options.snap)){p=p.map(function(v,i){return(v/this.options.snap[i]).round()*this.options.snap[i]}.bind(this));}else{p=p.map(function(v){return(v/this.options.snap).round()*this.options.snap}.bind(this));}}}
var style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal'))
style.left=p[0]+"px";if((!this.options.constraint)||(this.options.constraint=='vertical'))
style.top=p[1]+"px";if(style.visibility=="hidden")style.visibility="";},stopScrolling:function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;Draggables._lastScrollPointer=null;}},startScrolling:function(speed){if(!(speed[0]||speed[1]))return;this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(this.scroll.bind(this),10);},scroll:function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){if(this.scrollSpeed[0]||this.scrollSpeed[1]){var d=delta/1000;this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1]);}}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000;}
Position.prepare();Droppables.show(Draggables._lastPointer,this.element);Draggables.notify('onDrag',this);if(this._isScrollChild){Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer);Draggables._lastScrollPointer[0]+=this.scrollSpeed[0]*delta/1000;Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*delta/1000;if(Draggables._lastScrollPointer[0]<0)
Draggables._lastScrollPointer[0]=0;if(Draggables._lastScrollPointer[1]<0)
Draggables._lastScrollPointer[1]=0;this.draw(Draggables._lastScrollPointer);}
if(this.options.change)this.options.change(this);},_getWindowScroll:function(w){var T,L,W,H;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft;}else if(w.document.body){T=body.scrollTop;L=body.scrollLeft;}
if(w.innerWidth){W=w.innerWidth;H=w.innerHeight;}else if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight;}else{W=body.offsetWidth;H=body.offsetHeight;}}
return{top:T,left:L,width:W,height:H};}});Draggable._dragging={};var SortableObserver=Class.create({initialize:function(element,observer){this.element=$(element);this.observer=observer;this.lastValue=Sortable.serialize(this.element);},onStart:function(){this.lastValue=Sortable.serialize(this.element);},onEnd:function(){Sortable.unmark();if(this.lastValue!=Sortable.serialize(this.element))
this.observer(this.element)}});var Sortable={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(element){while(element.tagName.toUpperCase()!="BODY"){if(element.id&&Sortable.sortables[element.id])return element;element=element.parentNode;}},options:function(element){element=Sortable._findRootElement($(element));if(!element)return;return Sortable.sortables[element.id];},destroy:function(element){element=$(element);var s=Sortable.sortables[element.id];if(s){Draggables.removeObserver(s.element);s.droppables.each(function(d){Droppables.remove(d)});s.draggables.invoke('destroy');delete Sortable.sortables[s.element.id];}},create:function(element){element=$(element);var options=Object.extend({element:element,tag:'li',dropOnEmpty:false,tree:false,treeTag:'ul',overlap:'vertical',constraint:'vertical',containment:element,handle:false,only:false,delay:0,hoverclass:null,ghosting:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:this.SERIALIZE_RULE,elements:false,handles:false,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});this.destroy(element);var options_for_draggable={revert:true,quiet:options.quiet,scroll:options.scroll,scrollSpeed:options.scrollSpeed,scrollSensitivity:options.scrollSensitivity,delay:options.delay,ghosting:options.ghosting,constraint:options.constraint,handle:options.handle};if(options.starteffect)
options_for_draggable.starteffect=options.starteffect;if(options.reverteffect)
options_for_draggable.reverteffect=options.reverteffect;else
if(options.ghosting)options_for_draggable.reverteffect=function(element){element.style.top=0;element.style.left=0;};if(options.endeffect)
options_for_draggable.endeffect=options.endeffect;if(options.zindex)
options_for_draggable.zindex=options.zindex;var options_for_droppable={overlap:options.overlap,containment:options.containment,tree:options.tree,hoverclass:options.hoverclass,onHover:Sortable.onHover};var options_for_tree={onHover:Sortable.onEmptyHover,overlap:options.overlap,containment:options.containment,hoverclass:options.hoverclass};Element.cleanWhitespace(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){Droppables.add(element,options_for_tree);options.droppables.push(element);}
(options.elements||this.findElements(element,options)||[]).each(function(e,i){var handle=options.handles?$(options.handles[i]):(options.handle?$(e).select('.'+options.handle)[0]:e);options.draggables.push(new Draggable(e,Object.extend(options_for_draggable,{handle:handle})));Droppables.add(e,options_for_droppable);if(options.tree)e.treeNode=element;options.droppables.push(e);});if(options.tree){(Sortable.findTreeElements(element,options)||[]).each(function(e){Droppables.add(e,options_for_tree);e.treeNode=element;options.droppables.push(e);});}
this.sortables[element.id]=options;Draggables.addObserver(new SortableObserver(element,options.onUpdate));},findElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.tag);},findTreeElements:function(element,options){return Element.findChildren(element,options.only,options.tree?true:false,options.treeTag);},onHover:function(element,dropon,overlap){if(Element.isParent(dropon,element))return;if(overlap>.33&&overlap<.66&&Sortable.options(dropon).tree){return;}else if(overlap>0.5){Sortable.mark(dropon,'before');if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,dropon);if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}else{Sortable.mark(dropon,'after');var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden";dropon.parentNode.insertBefore(element,nextElement);if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element);}}},onEmptyHover:function(element,dropon,overlap){var oldParentNode=element.parentNode;var droponOptions=Sortable.options(dropon);if(!Element.isParent(dropon,element)){var index;var children=Sortable.findElements(dropon,{tag:droponOptions.tag,only:droponOptions.only});var child=null;if(children){var offset=Element.offsetSize(dropon,droponOptions.overlap)*(1.0-overlap);for(index=0;index<children.length;index+=1){if(offset-Element.offsetSize(children[index],droponOptions.overlap)>=0){offset-=Element.offsetSize(children[index],droponOptions.overlap);}else if(offset-(Element.offsetSize(children[index],droponOptions.overlap)/2)>=0){child=index+1<children.length?children[index+1]:null;break;}else{child=children[index];break;}}}
dropon.insertBefore(element,child);Sortable.options(oldParentNode).onChange(element);droponOptions.onChange(element);}},unmark:function(){if(Sortable._marker)Sortable._marker.hide();},mark:function(dropon,position){var sortable=Sortable.options(dropon.parentNode);if(sortable&&!sortable.ghosting)return;if(!Sortable._marker){Sortable._marker=($('dropmarker')||Element.extend(document.createElement('DIV'))).hide().addClassName('dropmarker').setStyle({position:'absolute'});document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);}
var offsets=Position.cumulativeOffset(dropon);Sortable._marker.setStyle({left:offsets[0]+'px',top:offsets[1]+'px'});if(position=='after')
if(sortable.overlap=='horizontal')
Sortable._marker.setStyle({left:(offsets[0]+dropon.clientWidth)+'px'});else
Sortable._marker.setStyle({top:(offsets[1]+dropon.clientHeight)+'px'});Sortable._marker.show();},_tree:function(element,options,parent){var children=Sortable.findElements(element,options)||[];for(var i=0;i<children.length;++i){var match=children[i].id.match(options.format);if(!match)continue;var child={id:encodeURIComponent(match?match[1]:null),element:element,parent:parent,children:[],position:parent.children.length,container:$(children[i]).down(options.treeTag)};if(child.container)
this._tree(child.container,options,child);parent.children.push(child);}
return parent;},tree:function(element){element=$(element);var sortableOptions=this.options(element);var options=Object.extend({tag:sortableOptions.tag,treeTag:sortableOptions.treeTag,only:sortableOptions.only,name:element.id,format:sortableOptions.format},arguments[1]||{});var root={id:null,parent:null,children:[],container:element,position:0};return Sortable._tree(element,options,root);},_constructIndex:function(node){var index='';do{if(node.id)index='['+node.position+']'+index;}while((node=node.parent)!=null);return index;},sequence:function(element){element=$(element);var options=Object.extend(this.options(element),arguments[1]||{});return $(this.findElements(element,options)||[]).map(function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:'';});},setSequence:function(element,new_sequence){element=$(element);var options=Object.extend(this.options(element),arguments[2]||{});var nodeMap={};this.findElements(element,options).each(function(n){if(n.id.match(options.format))
nodeMap[n.id.match(options.format)[1]]=[n,n.parentNode];n.parentNode.removeChild(n);});new_sequence.each(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident];}});},serialize:function(element){element=$(element);var options=Object.extend(Sortable.options(element),arguments[1]||{});var name=encodeURIComponent((arguments[1]&&arguments[1].name)?arguments[1].name:element.id);if(options.tree){return Sortable.tree(element,arguments[1]).children.map(function(item){return[name+Sortable._constructIndex(item)+"[id]="+
encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));}).flatten().join('&');}else{return Sortable.sequence(element,arguments[1]).map(function(item){return name+"[]="+encodeURIComponent(item);}).join('&');}}};Element.isParent=function(child,element){if(!child.parentNode||child==element)return false;if(child.parentNode==element)return true;return Element.isParent(child.parentNode,element);};Element.findChildren=function(element,only,recursive,tagName){if(!element.hasChildNodes())return null;tagName=tagName.toUpperCase();if(only)only=[only].flatten();var elements=[];$A(element.childNodes).each(function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName&&(!only||(Element.classNames(e).detect(function(v){return only.include(v)}))))
elements.push(e);if(recursive){var grandchildren=Element.findChildren(e,only,recursive,tagName);if(grandchildren)elements.push(grandchildren);}});return(elements.length>0?elements.flatten():[]);};Element.offsetSize=function(element,type){return element['offset'+((type=='vertical'||type=='height')?'Height':'Width')];};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){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element,update,{setHeight:false,offsetTop:element.offsetHeight});}
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(this.element,'blur',this.onBlur.bindAsEventListener(this));Event.observe(this.element,'keydown',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(){Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});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();Event.stop(event);return;case Event.KEY_DOWN:this.markNext();this.render();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');if(this.index!=element.autocompleteIndex)
{this.index=element.autocompleteIndex;this.render();}
Event.stop(event);},onClick:function(event){var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide();},onBlur:function(event){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++)
this.index==i?Element.addClassName(this.getEntry(i),"selected"):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());},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');var bounds=this.getTokenBounds();if(bounds[0]!=-1){var newValue=this.element.value.substr(0,bounds[0]);var whitespace=this.element.value.substr(bounds[0]).match(/^\s+/);if(whitespace)
newValue+=whitespace[0];this.element.value=newValue+value+this.element.value.substr(bounds[1]);}else{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();this.index=0;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.unescapeHTML();},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));}});Glider=Class.create();Object.extend(Object.extend(Glider.prototype,Abstract.prototype),{initialize:function(wrapper,options){this.scrolling=false;this.wrapper=$(wrapper);this.scroller=this.wrapper.down('div.scroller');this.sections=this.wrapper.getElementsBySelector('div.section');this.options=Object.extend({duration:1.0,frequency:3},options||{});this.sections.each(function(section,index){section._index=index;});this.events={click:this.click.bind(this)};this.addObservers();if(this.options.initialSection)this.moveTo(this.options.initialSection,this.scroller,{duration:this.options.duration});if(this.options.autoGlide)this.start();},addObservers:function(){var controls=this.wrapper.getElementsBySelector('div.controls a');controls.invoke('observe','click',this.events.click);},click:function(event){this.stop();var element=Event.findElement(event,'a');if(this.scrolling)this.scrolling.cancel();this.moveTo(element.href.split("#")[1],this.scroller,{duration:this.options.duration});Event.stop(event);},moveTo:function(element,container,options){this.current=$(element);Position.prepare();var containerOffset=Position.cumulativeOffset(container),elementOffset=Position.cumulativeOffset($(element));this.scrolling=new Effect.SmoothScroll(container,{duration:options.duration,x:(elementOffset[0]-containerOffset[0]),y:(elementOffset[1]-containerOffset[1])});return false;},next:function(){if(this.current){var currentIndex=this.current._index;var nextIndex=(this.sections.length-1==currentIndex)?0:currentIndex+1;}else var nextIndex=1;this.moveTo(this.sections[nextIndex],this.scroller,{duration:this.options.duration});},previous:function(){if(this.current){var currentIndex=this.current._index;var prevIndex=(currentIndex==0)?this.sections.length-1:currentIndex-1;}else var prevIndex=this.sections.length-1;this.moveTo(this.sections[prevIndex],this.scroller,{duration:this.options.duration});},stop:function()
{clearTimeout(this.timer);},start:function()
{this.periodicallyUpdate();},periodicallyUpdate:function()
{if(this.timer!=null){clearTimeout(this.timer);this.next();}
this.timer=setTimeout(this.periodicallyUpdate.bind(this),this.options.frequency*1000);}});Effect.SmoothScroll=Class.create();Object.extend(Object.extend(Effect.SmoothScroll.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);var options=Object.extend({x:0,y:0,mode:'absolute'},arguments[1]||{});this.start(options);},setup:function(){if(this.options.continuous&&!this.element._ext){this.element.cleanWhitespace();this.element._ext=true;this.element.appendChild(this.element.firstChild);}
this.originalLeft=this.element.scrollLeft;this.originalTop=this.element.scrollTop;if(this.options.mode=='absolute'){this.options.x-=this.originalLeft;this.options.y-=this.originalTop;}},update:function(position){this.element.scrollLeft=this.options.x*position+this.originalLeft;this.element.scrollTop=this.options.y*position+this.originalTop;}});var BTX_DATE_FORMAT='%d/%m/%Y';var BTX_DATETIME_FORMAT='%d/%m/%Y %I:%M:%S %p';Windows.overlayShowEffectOptions=null;Windows.overlayHideEffectOptions=null;String.prototype.trim=function(){a=this.replace(/^\s+/,'');return a.replace(/\s+$/,'');};default_stage_arr=new Array();function get_default_stage_details(default_stage_arr){$('record_name').value=default_stage_arr[0];$('record_contact_numbers').value=default_stage_arr[1];$('record_contact_persons').value=default_stage_arr[2];$('record_comments').value=default_stage_arr[3];$('record_address_line1').value=default_stage_arr[4];$('record_address_line2').value=default_stage_arr[5];$('record_landmark').value=default_stage_arr[6];$('record_pin_code').value=default_stage_arr[7];$('record_city').value=default_stage_arr[8];$('record_state').value=default_stage_arr[9];$('record_country').value=default_stage_arr[10];return false;}
function validate_otherbooking_remarks(val)
{if(val==1){if($('pre_post_pone_ticket')&&$('pre_post_pone_ticket').checked){if($('comments').value.length<=0){alert("Please fill the Remarks");$("comments").focus();return false;}}
else{return true;}}}
function verify_subdomain(){subdomain=$("account_subdomain").value;if(subdomain.length<=0){return;}
Element.show("form-indicator-subdomain");new Ajax.Request('/account/verify_subdomain?subdomain='+subdomain,{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-subdomain');}});}
function validateTnc()
{if($('user_tnc').checked==false)
{alert(alrtmsg_accept_the_terms_conditions);$("user_tnc").focus();return false;}
else{return true;}}
function validate_remarks(val)
{if(val==1){if($('pre_post_pone_ticket_f')&&$('pre_post_pone_ticket_f').checked){if($('ticket_history_description_f').value.length<=0){alert("Please fill the Remarks");$("ticket_history_description_f").focus();return false;}}
else{return true;}}
else{if($('pre_post_pone_ticket_p')&&$('pre_post_pone_ticket_p').checked){if($('ticket_history_description_p').value.length<=0){alert("Please fill the Remarks");$("ticket_history_description_p").focus();return false;}}
else{return true;}}}
function show_status(){window.status="ticketSimply - Simply Manage Travels";setTimeout('show_status()',400);}
function printIframe(frameName)
{frames[frameName].focus();frames[frameName].print();}
function spreadNews(type){if(!validateEmail($("from").value.trim())){alert("Enter your valid e-mail address. For ex: yourname@gmail.com");return false;}
if($("to").value.trim().length<=0){alert("Enter valid comma separated e-mails addresses to which you want send. For ex: mail1@gmail.com, mail2@gmail.com");return false;}
to_mails=$("to").value.trim().split(',');to_mails_cleanedup="";for(i=0;i<to_mails.length;i++){if(to_mails[i].trim().length>0&&!validateEmail(to_mails[i].trim())){alert("Enter valid comma separated e-mails addresses to which you want send. For ex: mail1@gmail.com, mail2@gmail.com");return false;}
to_mails_cleanedup+=to_mails[i].trim();if(i<to_mails.length-1)
to_mails_cleanedup+=',';}
$("to").value=to_mails_cleanedup;Element.show('form-indicator-spread-it');new Ajax.Updater('spread_news_div','/e/o_tickets/spread_news/'+type,{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-spread-it');},parameters:Form.serialize($('spread_news_form'+type))});return false;}
function handle_already_reserved_seats(reserved_seats_nums){}
function handle_already_reserved_seats_etickets(reserved_seats_nums){}
function handleMaxminSlider(fieldname){if($('maxminslidertext').innerHTML=='Hide Above Options'){Effect.BlindUp(fieldname);$('maxminslidertext').innerHTML='Show Options';}
else{Effect.BlindDown(fieldname);$('maxminslidertext').innerHTML='Hide Above Options';}}
var server_date;function show_clock(date_time)
{if(server_date){server_date.setTime(server_date.getTime()+1000);}else{if(date_time){server_date=Date.parseDate(date_time,BTX_DATETIME_FORMAT);}else{server_date=new Date();}}
var thetime=server_date;var nhours=thetime.getHours();var nmins=thetime.getMinutes();var nsecn=thetime.getSeconds();var nday=thetime.getDay();var nmonth=thetime.getMonth();var ntoday=thetime.getDate();var nyear=thetime.getYear();var AorP=" ";if(nhours>=12)AorP="PM";else AorP="AM";if(nhours>=13)nhours-=12;else if(nhours==0)nhours=12;if(nsecn<10)nsecn="0"+nsecn;if(nmins<10)nmins="0"+nmins;if(nday==0)nday="Sun";else if(nday==1)nday="Mon";else if(nday==2)nday="Tue";else if(nday==3)nday="Wed";else if(nday==4)nday="Thu";else if(nday==5)nday="Fri";else if(nday==6)nday="Sat";nmonth+=1;if(nyear<=99)nyear="19"+nyear;if((nyear>99)&&(nyear<2000))nyear+=1900;$("js_clock").innerHTML=nday+" "+ntoday+"/"+nmonth+"/"+nyear+" "+nhours+":"+nmins+":"+nsecn+" "+AorP;setTimeout('show_clock()',1000);}
var gsMonthNames=new Array('January','February','March','April','May','June','July','August','September','October','November','December');var gsDayNames=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');Date.prototype.format=function(f)
{if(!this.valueOf())
return'&nbsp;';var d=this;return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a\/p)/gi,function($1)
{switch($1.toLowerCase())
{case'yyyy':return d.getFullYear();case'mmmm':return gsMonthNames[d.getMonth()];case'mmm':return gsMonthNames[d.getMonth()].substr(0,3);case'mm':return(d.getMonth()+1).zf(2);case'dddd':return gsDayNames[d.getDay()];case'ddd':return gsDayNames[d.getDay()].substr(0,3);case'dd':return d.getDate().zf(2);case'hh':return((h=d.getHours()%12)?h:12).zf(2);case'nn':return d.getMinutes().zf(2);case'ss':return d.getSeconds().zf(2);case'a/p':return d.getHours()<12?'a':'p';}});}
String.prototype.zf=function(l){return'0'.string(l-this.length)+this;}
String.prototype.string=function(l){var s='',i=0;while(i++<l){s+=this;}return s;}
Number.prototype.zf=function(l){return this.toString().zf(l);}
function show_context_help(anchName){coOrd=getAnchorPosition(anchName);top_pos=70;left_pos=(coOrd.x-260);width=300;height=500;var win=new Window('HelpWindow',{url:"/helplines",className:"alphacube",title:"<span class='bold blue'>ticket</span><span class='bold red'>Simply</span> - <b>Help</b>",top:top_pos,left:left_pos,width:width,height:height,zIndex:450,opacity:1,resizable:true,minimizable:true,maximizable:false,showEffect:Effect.BlindDown,hideEffect:Effect.BlindUp,draggable:true,wiredDrag:true,destroyOnClose:true});win.setDestroyOnClose();win.showCenter(false,top_pos,left_pos);win.setZIndex(450);win.toFront();WindowCloseKey.init();}
function showLayout(anchName,coachId,title)
{coOrd=getAnchorPosition(anchName);url='/admin/coaches/preview_layout/'+coachId;pw_popup_show(url,"<b>No. "+title+"</b> - Coach Layout",coOrd,420,330);}
function showLayoutForBlocking(anchName,reservationId)
{coOrd=getAnchorPosition(anchName);url='/reservations/show_layout/'+reservationId;pw_popup_show(url,"Block Seats",coOrd,220,250);}
function showLayoutForStages(anchName,coachId,from,to)
{url='/tickets/show_coach_stages_details/'+coachId+'?from='+from+'&to='+to;pw_ajax_alert(url,720,450,"Service Details");}
function showLayoutForStagesTTicketing(anchName,coachId,from,to)
{url='/t_tickets/show_coach_stages_details/'+coachId+'?from='+from+'&to='+to;pw_ajax_alert(url,720,450,"Service Details");}
function showLayoutForNotifying(anchName,reservationId)
{url='/charts/notify_popup/'+reservationId;win=new Window({url:url,className:"alphacube",title:"Notify All Passengers",width:450,height:400});win.showCenter(true);win.show();WindowCloseKey.init();}
function showLayoutForCargoUpdating(anchName,lr_number)
{url='/cargo_bookings/show_pay_balance_amount/'+lr_number;pw_ajax_alert(url,460,280,"Cargo Booking - Pay Balance Amount");}
function cargo_handle_lr_type(){lr_type=$('cargo_lr_type').value*1
if(lr_type==2){Element.hide('for_regular_booking');Element.show('on_accounts_div');}
else{Element.show('for_regular_booking');Element.hide('on_accounts_div');}}
function compute_cargos_balance_amount(){amount=$('cargo_bookings_amount').value
paid=$('cargo_bookings_paid').value
if(!validateAmount(amount)||!validateAmount(paid)){pw_alert("Enter a valid amount");return false;}
amount=amount*1;paid=paid*1;if(paid>amount){pw_alert("Amount Paid cannot be more than the Total amount.");return false;}
$('cargo_booking_balance_paid').value=(amount-paid);}
function check_agent_balance(commission){user_balance_amount=($('agent_balance_amount').value*1);agent_credit_limit=($('agent_credit_limit').value*1)
if((user_balance_amount+agent_credit_limit)<(($('ticket_net_amount_online_agent').value*1)-($('reserved-seat-count').value*1)*commission)){tickets_cost=$('reserved-tickets-cost').value*1+$('ticket_service_tax_amount').value*1;pw_alert("You do not have sufficient amount to book the tickets. <br/>Please contact Travels and deposit money.<br/>Balance Amount: "+user_balance_amount+"<br/>Tickets Cost: "+tickets_cost);return false;}
return true;}
function compute_cargos_amount(i)
{if(i>0){if(!$('cargo_booking_articles_'+i+'_quantity'))
return;count=$('cargo_booking_articles_'+i+'_quantity').value;rate=$('cargo_booking_articles_'+i+'_rate').value;if(!validateAmount(rate)){pw_alert("Enter a valid amount");return false;}
if(!validateAmount(count)){pw_alert("Enter  valid No of articles");return false;}
count=count*1;rate=rate*1;$('cargo_booking_articles_'+i+'_total').value=(count*rate);}
total_a=0;total_q=0;for(i=1;i<=5;i++){if($('cargo_booking_articles_'+i+'_total').value)total_a+=$('cargo_booking_articles_'+i+'_total').value*1;if($('cargo_booking_articles_'+i+'_quantity').value)total_q+=$('cargo_booking_articles_'+i+'_quantity').value*1;}
$('total_cost').innerHTML=total_a;$('total_quantity').innerHTML=total_q;$('cargo_bookings_amount').value=total_a;}
function select_radio_item(formname,fieldname,matching_value,disable_matching_values)
{field=eval("document."+formname+"."+fieldname);len=field.length;for(i=0;i<len;i++){if(field[i].value==matching_value){chosen=field[i].checked=true;}else{chosen=field[i].checked=false;}
if(disable_matching_values&&disable_matching_values.indexOf(field[i].value)!=-1)
{field[i].disabled=true;}else{field[i].disabled=false;}}}
function get_select_radio_value(formname,fieldname)
{field=eval("document."+formname+"."+fieldname);len=field.length;for(i=0;i<len;i++){if(field[i].checked){return field[i].value;}}}
function count_other_charges_in_cargo(){frieght_charges=$('cargo_bookings_balance_paid').value*1;delivery_charges=$('cargo_bookings_delivery_charges').value;under_charges=$('cargo_bookings_under_charges').value;demurrages=$('cargo_bookings_demurrages').value;intimation_charges=$('cargo_bookings_intimation_charges').value;other_charges=$('cargo_bookings_other_charges').value;total=$('cargo_bookings_total').value;if(!validateAmount(delivery_charges)||!validateAmount(under_charges)||!validateAmount(demurrages)||!validateAmount(intimation_charges)){pw_alert("Enter a valid amount");return false;}
delivery_charges=delivery_charges*1;under_charges=under_charges*1;demurrages=demurrages*1;intimation_charges=intimation_charges*1;$('cargo_bookings_other_charges').value=(delivery_charges+under_charges+demurrages+intimation_charges);other_charges_total=$('cargo_bookings_other_charges').value*1;$('cargo_bookings_total').value=(frieght_charges+other_charges_total);}
function showLayoutForEdit(record_id)
{Element.toggle('layout-div-'+record_id);}
function layout_column_sel(is_checked,column_id,action)
{for(row=0;row<20;row++){chkFldName="chk_"+row+"_"+column_id;if($(chkFldName)){$(chkFldName).checked=is_checked;$("inp_"+row+"_"+column_id).disabled=!is_checked;$("sel_"+row+"_"+column_id).disabled=!is_checked;}}}
function update_seat_layout()
{layout_type=$("record_layout_type").value
if(layout_type==""){alert("Please select Layout Type.");$("record_layout_type").focus();return false;}
total_seats=$("record_total_seats").value;if(total_seats==""){alert("Please select Total Seats.");$("record_total_seats").focus();return false;}
new Ajax.Updater({success:'seat_layout_div'},'/admin/coaches/update_seat_layout?total_seats='+total_seats+'&layout_type='+layout_type,{asynchronous:true,evalScripts:true});}
function updateCoachSeatLayout(e)
{coachId=$("record_id_for_layout").value;rowId=$("record_rowid_for_layout").value;cellId=$("record_cellid_for_layout").value;layoutStr="";total_seats=0;seat_nums_arrray=new Array();duplicate_seat_nums="";for(row=0;row<rowId;row++){rowLayoutStr="";for(col=0;col<7;col++){chkFldName="chk_"+row+"_"+col;inpFldName="inp_"+row+"_"+col;selFldName="sel_"+row+"_"+col;if($(chkFldName)){seat_num=$(inpFldName).value;seat_num=seat_num.trim();if($(chkFldName).checked)
{if(seat_num)
{if(seat_nums_arrray.indexOf(seat_num)!=-1){duplicate_seat_nums+=" "+seat_num;}else{rowLayoutStr+="1."+seat_num;rowLayoutStr+="-"+$(selFldName).value;total_seats++;}
seat_nums_arrray[seat_nums_arrray.length]=seat_num;}else{pw_alert("Please fill in the seat numbers for the checked seats.");$(inpFldName).focus();return true;}}else{if(seat_num){rowLayoutStr+="0."+seat_num;}else{rowLayoutStr+=' ';}}}else{rowLayoutStr+=' ';}
if(col<6)
rowLayoutStr+=':';}
if(rowLayoutStr.length<14&&rowLayoutStr.indexOf(": : : : : :")!=-1){continue;}
if(row<rowId)
layoutStr+=rowLayoutStr+'@';}
if(duplicate_seat_nums.length>0){pw_alert("Seat numbers cannot be same. <br/><b>Please check the seat numbers "+duplicate_seat_nums+"</b>");}else{$('record_layout').value=layoutStr;}}
function toggle_cls_sel(row,col,is_checked){if(is_checked){$('inp_'+row+'_'+col).disabled=false;$('sel_'+row+'_'+col).disabled=false;}
else{$('inp_'+row+'_'+col).disabled=true;$('sel_'+row+'_'+col).disabled=true;}}
function update_quota_coach_layout(fieldname){service_id=$("record_route").value;if(service_id==""){alert("Please select Service.");$("record_route").focus();return false;}
new Ajax.Updater({success:fieldname},'/admin/quotas/update_coach_layout?route_id='+service_id,{asynchronous:true,evalScripts:true});}
function performQuotaSelectSeats(rowCount,colCount)
{sel_seats_and_fare=getSelectedSeatsAsString(rowCount,colCount);sel_seats=sel_seats_and_fare[0];sel_seat_count=0;if(sel_seats.length>0){sel_seat_count=sel_seats.split(',').length;}
$('record_num_of_seats').value=sel_seat_count;$('record_seat_nums').value=sel_seats;}
function add_multi_stage_row(){index=$('multi_city_row_index').value*1+1;$('multi_city_row_index').value=index;optionshtml=$('record_origin').innerHTML;if(!optionshtml.include("selected")){org_value=$("record_origin").value;old_string='<option value="'+org_value+'">';new_string='<option value="'+org_value+'selected = "selected">';optionshtml=optionshtml.replace(old_string,new_string);}
origin_list='<select id="ms_'+index+'_0" name="ms_'+index+'_0" onchange="handle_multi_station_div();">'+optionshtml+'</select>';destination_list='<select id="ms_'+index+'_1" name="ms_'+index+'_0" onchange="handle_multi_station_div();">'+optionshtml+'</select>';onclick_js="'$(\"multi_city_row_index_"+index+"\").remove();handle_multi_station_div();return false;'";html='<tr class="size12" id="multi_city_row_index_'+index+'" ><td>'+origin_list+'</td><td>'+destination_list+'<td>Format: 22:30<br/><input id="ms_'+index+'_2" name="ms_'+index+'_2" size="5" maxlength="5" type="text"  onblur="handle_multi_station_div();"></td>'+'<td>Format: 13:00<br/><input id="ms_'+index+'_3" name="ms_'+index+'_3" size="5" maxlength="5" type="text"  onblur="handle_multi_station_div();"></td>'+'<td><div  class="table-class"><table><thead style="color:#FFF;" align="center"><tr>'+'<th><div class="center">SS</div></th> <th><div class="center">LB</div></th><th><div class="center">UB</div></th>'+'</tr></thead><tbody><tr>'+'<td>Fare<br/><input id="ms_'+index+'_4_1" name="ms_'+index+'_4_1" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();">'+' Commission<br/><input id="ms_'+index+'_5_1" name="ms_'+index+'_5_1" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"> </td>'+'<td> Fare<br/><input id="ms_'+index+'_4_2" name="ms_'+index+'_4_2" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"> '+' Commission<br/><input id="ms_'+index+'_5_2" name="ms_'+index+'_5_2" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"> </td> '+'<td> Fare<br/><input id="ms_'+index+'_4_3" name="ms_'+index+'_4_3" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"> '+' Commission<br/><input id="ms_'+index+'_5_3" name="ms_'+index+'_5_3" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"> </td> '+'</tr></tbody></table></div></td>'+'<td><a class="action" href="#" onclick='+onclick_js+'>Delete</a></td></tr>';new Insertion.Bottom('multi_stage_tbody',html);handle_multi_station_div();}
function handle_multi_station_div(){index=$('multi_city_row_index').value*1;m_origin=',';m_destination=',';m_route_fares=',';seat_type='';for(i=0;i<=index;i++){if(!$('ms_'+i+'_0'))
continue;origin=$('ms_'+i+'_0').value;destination=$('ms_'+i+'_1').value;departure=$('ms_'+i+'_2').value;if(!validateDeparture(departure))
{alert("Invalid Departure Time. Please enter in the format eg: '22:30'");focusElem=$('ms_'+i+'_2');focusElem.focus();return false;}
duration=$('ms_'+i+'_3').value;if(!validateDuration(duration))
{alert("Invalid Duration. Please enter in the format eg: '13:00'");focusElem=$('ms_'+i+'_3');focusElem.focus();return false;}
for(j=1;j<=3;j++){fare=$('ms_'+i+'_4_'+j).value;commission=$('ms_'+i+'_5_'+j).value;if(!validateAmount(fare)){alert("Enter valid fare");focusElem=$('ms_'+i+'_4_'+j);focusElem.focus();return false;}
if(!validateAmount(commission)){alert("Enter valid commission");focusElem=$('ms_'+i+'_5_'+j);focusElem.focus();return false;}}
seat_type_1='1/'+$('ms_'+i+'_4_'+'1').value+'/'+$('ms_'+i+'_5_'+'1').value+'@';seat_type_2='2/'+$('ms_'+i+'_4_'+'2').value+'/'+$('ms_'+i+'_5_'+'2').value+'@';seat_type_3='3/'+$('ms_'+i+'_4_'+'3').value+'/'+$('ms_'+i+'_5_'+'3').value+'@';seat_type=seat_type_1+seat_type_2+seat_type_3;m_origin+=origin+',';m_destination+=destination+',';m_route_fares+=origin+'-'+destination+'@'+departure+'@'+duration+'@'+seat_type+',';}
$('record_m_origin').value=m_origin;$('record_m_destination').value=m_destination;$('record_m_route_fares').value=m_route_fares;return true;}
function delete_multi_station(index){confirm_msg=confirm('Are you sure you want to delete this station?');if(confirm_msg){$("multi_city_row_index_"+index).remove();handle_multi_station_div();return false;}else{return false;}}
function handle_apply_commissions(){commission_percent=$('apply_commissions').value;if((commission_percent.length<=0)||!validateNumeric(commission_percent)){alert("Enter valid percentage");return;}
index=$('multi_city_row_index').value*1;for(i=0;i<=index;i++){if(!$('ms_'+i+'_0'))
continue;for(j=1;j<=3;j++){fare=$('ms_'+i+'_4_'+j).value;commission=$('ms_'+i+'_5_'+j).value;if(!validateAmount(fare)){alert("Enter valid fare to update the commission percentage");focusElem=$('ms_'+i+'_4_'+j);focusElem.focus();return false;}}
origin=$('ms_'+i+'_0').value;destination=$('ms_'+i+'_1').value;ss_amount=$('ms_'+i+'_4'+'_1').value;lb_amount=$('ms_'+i+'_4'+'_2').value;ub_amount=$('ms_'+i+'_4'+'_3').value;$('ms_'+i+'_5'+'_1').value=(ss_amount*commission_percent/100);$('ms_'+i+'_5'+'_2').value=(lb_amount*commission_percent/100);$('ms_'+i+'_5'+'_3').value=(ub_amount*commission_percent/100);}}
function add_multi_stage_row_reservations(){pw_alert("If you add another station here, Please check the following conditions:<br/> 1. Check if the same station is added in the routes. <br/> 2. Check if a stage is added for that station.");index=$('multi_city_row_index').value*1+1;$('multi_city_row_index').value=index;optionshtml=$('destination_list').innerHTML;origin_list='<select id="ms_'+index+'_0" name="ms_'+index+'_0" onchange="handle_multi_station_div_reservations();">'+optionshtml+'</select>';destination_list='<select id="ms_'+index+'_1" name="ms_'+index+'_0" onchange="handle_multi_station_div_reservations();">'+optionshtml+'</select>';onclick_js="'$(\"multi_city_row_index_"+index+"\").remove();handle_multi_station_div_reservations();return false;'";html='<tr id="multi_city_row_index_'+index+'" ><td>'+origin_list+'</td><td>'+destination_list+'<td><input id="ms_'+index+'_2" name="ms_'+index+'_2" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"></td>'+'<td><input id="ms_'+index+'_3" name="ms_'+index+'_3" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"></td>'+'<td><div  class="table-class"><table><tbody><tr>'+'<th>SS</th> <th>Lower Berth</th><th>Upper Berth</th>'+'</tr><tr>'+'<td>Fare:<input id="ms_'+index+'_4_1" name="ms_'+index+'_4_1" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();">'+' Commission:<input id="ms_'+index+'_5_1" name="ms_'+index+'_5_1" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"> </td>'+'<td> Fare:<input id="ms_'+index+'_4_2" name="ms_'+index+'_4_2" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"> '+' Commission:<input id="ms_'+index+'_5_2" name="ms_'+index+'_5_2" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"> </td> '+'<td> Fare:<input id="ms_'+index+'_4_3" name="ms_'+index+'_4_3" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"> '+' Commission:<input id="ms_'+index+'_5_3" name="ms_'+index+'_5_3" size="5" maxlength="6" type="text"  onblur="handle_multi_station_div();"> </td> '+'</tr></table></div></td>'+'<td><a class="action" href="#" onclick='+onclick_js+'>Delete</a></td></tr>';new Insertion.Bottom('multi_stage_tbody',html);handle_multi_station_div();}
function get_booking_seat_count(){index=$('other_booking_seat_numbers').value;if(index.length>0){var co=index.split(',');new_seats_arr=new Array();for(i=0;i<=co.length-1;i++){if(co[i].length>0){new_seats_arr.push(co[i]);}else{alert("Please eneter a valid seat format! Eg., 1, 2, 3");focusElem=$('other_booking_seat_numbers');focusElem.focus();return false;}}
count=new_seats_arr.length;}else{var count=0;}
$('seat_count').innerHTML=count;}
function get_seat_count(){index=$('booking_seat_numbers').value;if(index.length>0){var co=index.split(',');new_seats_arr=new Array();for(i=0;i<=co.length-1;i++){if(co[i].length>0){new_seats_arr.push(co[i]);}else{alert("Please eneter a valid seat format! Eg., 1, 2, 3");focusElem=$('booking_seat_numbers');focusElem.focus();return false;}}
count=new_seats_arr.length;}else{var count=0;}
$('seat_count').innerHTML=count;}
function get_amount_recieved(){index=$('booking_amount_received').value*1.0;if(!validateAmount($("booking_amount_received").value)){alert('Please correct. Amount should be numbers.');return false;}
else{$('booking_amount_to_be_recieved').innerHTML=$('tot_fare').innerHTML-index;}}
function get_layout_type_desc(){layout_type=$('account_ticket_layout_type').value*1;switch(layout_type){case 1:help_info_message="Default Agent Simply Layout with all the data";break;case 2:help_info_message="Default Agent Simply Layout with out Branches";break;case 3:help_info_message="Used for printing on the existing tickets.";break;case 4:help_info_message="Two Print Layout with all data.";break;case 5:help_info_message="Two Print Layout with out branches.";break;default:help_info_message="";}
$("layout_type_desc").innerHTML=help_info_message}
function handle_multi_station_div_reservations(){index=$('multi_city_row_index').value*1;m_origin=',';m_destination=',';m_route_fares=',';seat_type='';for(i=0;i<=index;i++){if(!$('ms_'+i+'_0'))
continue;origin=$('ms_'+i+'_0').value;destination=$('ms_'+i+'_1').value;departure=$('ms_'+i+'_2').value;if(!validateDeparture(departure))
{alert("Invalid Departure Time. Please enter in the format eg: '22:30'");focusElem=$('ms_'+i+'_2');focusElem.focus();return false;}
duration=$('ms_'+i+'_3').value;if(!validateDuration(duration))
{alert("Invalid Duration. Please enter in the format eg: '13:00'");focusElem=$('ms_'+i+'_3');focusElem.focus();return false;}
for(j=1;j<=3;j++){fare=$('ms_'+i+'_4_'+j).value;commission=$('ms_'+i+'_5_'+j).value;if(!validateAmount(fare)){alert("Enter valid fare");focusElem=$('ms_'+i+'_4_'+j);focusElem.focus();return false;}
if(!validateAmount(commission)){alert("Enter valid commission");focusElem=$('ms_'+i+'_5_'+j);focusElem.focus();return false;}}
seat_type_1='1/'+$('ms_'+i+'_4_'+'1').value+'/'+$('ms_'+i+'_5_'+'1').value+'@';seat_type_2='2/'+$('ms_'+i+'_4_'+'2').value+'/'+$('ms_'+i+'_5_'+'2').value+'@';seat_type_3='3/'+$('ms_'+i+'_4_'+'3').value+'/'+$('ms_'+i+'_5_'+'3').value+'@';seat_type=seat_type_1+seat_type_2+seat_type_3
m_origin+=origin+',';m_destination+=destination+',';m_route_fares+=origin+'-'+destination+'@'+departure+'@'+duration+'@'+seat_type+',';}
$('record_m_origin').value=m_origin;$('record_m_destination').value=m_destination;$('record_m_route_fares').value=m_route_fares;return true;}
function showWeeklySchedule(anchName,routeId,schedule,isEditable,title,showPopup)
{schedule+="";disabled="";if(!isEditable)
disabled='disabled = "true"';if(showPopup)
htmlStr="<div class=\"table-class\" style=\"width:300px;\"><br/>";else
htmlStr="<div class=\"table-class\" style=\"width:300px;color:#FFF;margin-left:160px;\">";htmlStr+="<table id=\"weekly_schedule_table\" width=\"90%\" align=\"center\" ><thead><tr><th style=\"text-align:center;\">Sun</th><th style=\"text-align:center;\">Mon</th><th style=\"text-align:center;\">Tue</th><th style=\"text-align:center;\">Wed</th><th style=\"text-align:center;\">Thu</th><th style=\"text-align:center;\">Fri</th><th style=\"text-align:center;\">Sat</th></tr></thead><tbody><tr>";for(i=0;i<schedule.length;i++)
{checked="";if(schedule.charAt(i)==1)
checked=" CHECKED ";htmlStr+='<td style=\"text-align:center;\"><input type="checkbox" id="schedule_index_'+routeId+'_'+i+'" onclick="updateSchedule('+routeId+', '+i+', this.checked );" name="schedule_index_'+i+'"'+checked+disabled+'/></td>';}
htmlStr+="</tr><tr><td colspan='10' style='width:500px;color:#999999;margin-left:160px;'>Select the days on which this service is scheduled to run. eg., if the service is not running on Wednesday and Thursday, uncheck those check boxes</td>";htmlStr+="</tr></tbody></table></div>";if(isEditable){}else{if(showPopup){if(isElementExists('divPopup_btt'))
fadeboxout('divPopup');coOrd=getAnchorPosition(anchName);Windows.closeAll();w=new Window({top:coOrd.y,left:coOrd.x,width:350,height:150,className:"alphacube",title:"<b>No. "+title+"</b> - Weekly Schedule"});w.setHTMLContent(htmlStr);w.show();WindowCloseKey.init();return;}}
return htmlStr;}
function hideDivPopup(){if(isElementExists('divPopup_btt'))
fadeboxout('divPopup');}
function updateSchedule(routeId,index,ischecked){schedule=$('record_weekly_schedule').value;sch="";for(i=0;i<schedule.length;i++)
{if(index==i)
sch+=(ischecked)?'1':'0';else
sch+=schedule.charAt(i);}
schedule=sch;if(schedule=='0000000'){$('record_weekly_schedule').value=schedule;pw_alert("Please select atleast one day for <b>Weekly Schedule</b>")
return;}
$('record_weekly_schedule').value=schedule;}
function validateRouteDates(){if($('record_status')&&($('record_status').value*1>=0)){return validateActiveStateRouteDates();}else{if($('record_end_date').value.length<=0||$('record_allowed_advance_booking').value.length<=0)
return;allowed_advance_booking=$('record_allowed_advance_booking').value*1;allowed_advance_booking_def=$('record_allowed_advance_booking').defaultValue*1;end_date=Date.parseDate($('record_end_date').value,BTX_DATE_FORMAT);end_date_def=Date.parseDate($('record_end_date').defaultValue,BTX_DATE_FORMAT);if((end_date_def==end_date)&&(allowed_advance_booking_def==allowed_advance_booking))
return;allowed_end_date=new Date();allowed_end_date=new Date(allowed_end_date.setDate(allowed_end_date.getDate()+allowed_advance_booking));allowed_end_date_str=allowed_end_date.format("dd/mm/yyyy");if(end_date<allowed_end_date){if(end_date_def!=end_date)
return pw_alert("Reservations may have already scheduled till <b>"+allowed_end_date_str+"</b><br/>. If you want to continue with this End date, you need to remove already Scheduled Reservations from the Reservations tab for this route.",350,200);else
return pw_alert("Reservations may have already scheduled till <b>"+allowed_end_date_str+"</b><br/>. If you want to continue changing the Allowed Advance Booking days, you need to remove already Scheduled Reservations from the Reservations tab for this route.",350,200);}}}
function validateActiveStateRouteDates(){if($('record_status')){select_value=$('record_status').value*1;if(select_value==0){current_date=get_current_date();start_date=Date.parseDate($('record_start_date').value,BTX_DATE_FORMAT);end_date=null;if($('record_end_date').value.length>1)
end_date=Date.parseDate($('record_end_date').value,BTX_DATE_FORMAT);allowed_advance_booking=$('record_allowed_advance_booking').value*1;message="";if(start_date<current_date)
message="Start Date should not be earlier than today for an 'Active' route";if(end_date){if(end_date<current_date)
message+="<br/>End Date should not be earlier than today for an 'Active' route";if(end_date<start_date)
message+="<br/>End Date should not be earlier than Start Date";}
if(message.length>0)
pw_alert(message);}}}
function show_services_4_sel_route(elmObj){if(elmObj.value!="")
elmObj.form.submit();else
pw_alert("Select a valid Starting point");}
var last_report_type=1;function handle_selected_bus_report(){report_type=$('report_id').value*1;help_info_message=""
Element.hide('show_branches');Element.hide('show_users');Element.show('other_operators');Element.show('report-filter-date-range');Element.hide('branch_users');Element.hide('branch_exclude');switch(report_type){case 1:help_info_message="Booking collection report by Operator wise by Travel date. ";Element.show('other_operators');Element.hide('show_branches');Element.hide('show_users');Element.hide('branch_users');Element.hide('branch_exclude');break;case 2:help_info_message="Shows Branch wise / User wise report by Travel date. ";Element.show('show_branches');Element.hide('other_operators');Element.hide('show_users');Element.show('branch_users');Element.show('branch_exclude');break;case 3:help_info_message="Shows users wise report by Travel date";Element.show('show_users');Element.hide('other_operators');Element.hide('show_branches');Element.hide('branch_users');Element.hide('branch_exclude');break;case 4:help_info_message="Shows all tickets booked by you by Travel date";Element.hide('show_users');Element.show('other_operators');Element.hide('show_branches');Element.hide('branch_users');Element.hide('branch_exclude');break;case 5:help_info_message="Shows booking revenues by Operator wise by Travel date";Element.hide('show_users');Element.show('other_operators');Element.hide('show_branches');Element.hide('branch_users')
Element.show('branch_exclude');break;case 6:help_info_message="Shows booking revenues by Operator wise by Issue date";Element.hide('show_users');Element.show('other_operators');Element.hide('show_branches');Element.hide('branch_users');Element.show('branch_exclude');break;case 7:help_info_message="Shows Branch wise / User wise bus booking's by Issue date";Element.hide('show_users');Element.hide('other_operators');Element.show('show_branches');Element.show('branch_users');Element.show('branch_exclude');break;case 8:help_info_message="Shows sms usage";Element.hide('show_users');Element.hide('other_operators');Element.hide('show_branches');Element.hide('branch_users');Element.hide('branch_exclude');break;case 9:help_info_message="Shows all tickets booked by you by Issue date";Element.hide('show_users');Element.show('other_operators');Element.hide('show_branches');Element.hide('branch_users');Element.hide('branch_exclude');break;case 10:help_info_message="Shows all Operator wise Payment Due Amount";Element.hide('show_users');Element.show('other_operators');Element.hide('show_branches');Element.hide('branch_users');Element.hide('branch_exclude');break;case 11:help_info_message="Shows all Operator wise Payment Paid Amount";Element.hide('show_users');Element.show('other_operators');Element.hide('show_branches');Element.hide('branch_users');Element.hide('branch_exclude');break;case 12:help_info_message="Booking collection report by Operator wise by Transaction date. ";Element.show('other_operators');Element.hide('show_branches');Element.hide('show_users');Element.hide('branch_users');Element.hide('branch_exclude');break;case 13:help_info_message="Booking collection report by branch wise by Transaction date. ";Element.hide('show_users');Element.hide('other_operators');Element.show('show_branches');Element.show('branch_users');Element.show('branch_exclude');break;default:help_info_message="";}
$('report_help_info').innerHTML=help_info_message;}
function handle_selected_contract_report(){report_type=$('report_id').value*1;help_info_message=""
Element.hide('service_options');Element.show('agent_options');Element.show('report-filter-date-range');switch(report_type){case 1:help_info_message="Collection Report By Service. ";Element.show('service_options');Element.hide('agent_options');Element.show('report-filter-date-range');break;case 2:help_info_message="Collection Report By Agent. ";Element.show('agent_options');Element.hide('service_options');Element.show('report-filter-date-range');break;case 3:help_info_message="Collection Report By Service. ";Element.show('service_options');Element.hide('agent_options');Element.show('report-filter-date-range');break;case 4:help_info_message="Un Paid amount for all services ";Element.hide('service_options');Element.hide('agent_options');Element.hide('report-filter-date-range');break;case 5:help_info_message="Un Paid amount for all agents ";Element.hide('service_options');Element.hide('agent_options');Element.hide('report-filter-date-range');break;default:help_info_message="";}
$('report_help_info').innerHTML=help_info_message;}
function show_report_details(url){pw_popup_show(url,"Report Details",null,800,450);}
function postpone_pending_ticket(pnr_number){var postpone_time=prompt("Enter time in MINUTES to postpone the ticket.\nThis will block the ticket for the additional extra MINUTES.\nFor one hour enter 60 mins, for 2 hours enter 120 mins","60");if(postpone_time){Element.show('form-indicator-postpone_ind_'+pnr_number);new Ajax.Request('/reports/postpone_pending_ticket/'+pnr_number+'?postpone_time='+postpone_time,{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-postpone_ind_'+pnr_number);}});return false;}else{return false;}}
function onbehalf_paynow(pnr_number,net_amount){var comments=prompt("Enter Payment Details - like Cash/Cheque received with its details \n"+"The net amount to be collected is Rs."+net_amount,"");if(comments){Element.show('form-indicator-onbehalf_'+pnr_number);new Ajax.Request('/reports/onbehalf_paynow/'+pnr_number+'?comments='+comments,{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-onbehalf_'+pnr_number);}});return false;}else{return false;}}
function other_booking_paynow(pnr_number,net_amount){url="/bus/booking/pay_now_form/"+pnr_number
windowPopUp(url,"",450,250,1);}
function multiple_bookings_paynow(operator_name,date_range){url="/bus/booking/multiple_pay_now_form/"+operator_name+"?d="+date_range
windowPopUp(url,"",750,700,1);}
function validateMultiplePaynow(pnr_numbers){var error_msg="";var count=0;pnr_numbers_arr=pnr_numbers.split(",");for(var i=0;i<pnr_numbers_arr.length;i++){checkbox_id="pnr_number_"+pnr_numbers_arr[i];fare_id="fare_"+pnr_numbers_arr[i];amount_paid_id="amount_paid_"+pnr_numbers_arr[i];if(($(checkbox_id)==null)||$(checkbox_id).checked==false){continue;}
else{fare=$(fare_id).value*1;amount_paid=$(amount_paid_id).value*1;count++;if($(amount_paid_id).value==""){error_msg+="\n Amount Paid not entered for this pnr number:  "+pnr_numbers_arr[i];continue;}
else if(fare<=amount_paid){error_msg+="\n Amount which you are paying should always less than FARE  Amount:  "+pnr_numbers_arr[i];}}}
if(count>0&&($("comments").value=="")){error_msg+="\n Write Comments for the paid amount."}
if(count==0){error_msg+="\n Please Select the check box";}
if(error_msg){alert(error_msg);return false;}
else{new Ajax.Updater({success:'items',failure:'notice'},{parameters:{text:$F('text')},insertion:Insertion.Bottom});}}
function SelectAllPnrNumbers(pnr_numbers){pnr_numbers_arr=pnr_numbers.split(",");if($("select_all").checked){for(var i=0;i<pnr_numbers_arr.length;i++){checkbox_id="pnr_number_"+pnr_numbers_arr[i];if($(checkbox_id)==null){continue;}
else{$(checkbox_id).checked=true;}}
$("select_all").checked=true;}
else{for(var i=0;i<pnr_numbers_arr.length;i++){checkbox_id="pnr_number_"+pnr_numbers_arr[i];if($(checkbox_id)==null){continue;}
else{$(checkbox_id).checked=false;}}}}
function other_booking_contract_bus_paynow(pnr_number,net_amount){url="/contract_bus/booking/pay_now_form/"+pnr_number
windowPopUp(url,"",600,400,1);}
function contract_bus_service_amount_paynow(pnr_number,net_amount){url="/contract_bus/charts/pay_now_form/"+pnr_number
windowPopUp(url,"",550,300,1);}
function show_ticket_confirm_details(url){windowPopUp(url,"",700,600,1);}
function show_other_booking_details(url){windowPopUp(url,"",700,600,1);}
function show_ticket_release_details(url){windowPopUp(url,"",700,600,1);}
function show_cargo_report_details(url){pw_popup_show(url,"Report Details",null,800,550);}
function show_cargo_daily_collection_report_paid(url){pw_popup_show(url,"Report Details",null,800,300);}
function viewChart(res_id){id=res_id;url="/charts/show_chart_details/"+id;windowPopUp(url,"",700,600,1);}
function viewResHistory(res_id){id=res_id;url="/ticket_history/show_res_history/"+id;windowPopUp(url,"",700,600,1);}
function viewPNRHistory(pnr){url="/ticket_history/show_pnr_history/"+pnr;windowPopUp(url,"",700,600,1);}
function update_manual_coach_number(res_id){coach_number=$("coach_number").value;new Ajax.Request("/charts/update_manual_coach_number/"+res_id+"?coach_number="+coach_number+"",{asynchronous:true,evalScripts:true,parameters:""});}
function updateOtherBookingSeatNumbers(pnr_number){seat_numbers=$("other_booking_seat_numbers").value;new Ajax.Request("/other_booking/update_seat_numbers/"+pnr_number+"?seat_numbers="+seat_numbers+"",{asynchronous:true,evalScripts:true,parameters:""});}
function performSelectSeat(seatNum)
{htmlStr="<tr valign='top' id='passenger-details-"+seatNum+"' name='passenger-details-"+seatNum+"' >"+"<td><input type='text' size='20' maxlength='30' name='ticket["+seatNum+"][passenger_name]' id='ticket_passenger_name'></td>"+"<td>"+seatNum+"</td><td> <input name='searchbus[primary]' onclick=\"showPrimaryPassengerDetails("+seatNum+")\" type=\"radio\"  value='"+seatNum+"'/> <div id='primary-passenger-details-"+seatNum+"'></div></td></tr>";new Insertion.Bottom("multi_passenger_details",htmlStr);new Effect.Highlight("passenger-details-"+seatNum,{});}
function performUnSelectSeat(seatNum,isSingleSeatsCol)
{Element.remove("passenger-details-"+seatNum);}
function performSelectSeats(rowCount,colCount)
{sel_seats_and_fare=getSelectedSeatsAsString(rowCount,colCount);sel_seats=sel_seats_and_fare[0];total_fare=sel_seats_and_fare[1];total_commission=sel_seats_and_fare[2];sel_seat_count=0;if(sel_seats.length>0){sel_seat_count=sel_seats.split(',').length;}
$('ticket[selected_seats]').value=sel_seats;updateReservationDetailsOnSeats(sel_seats,sel_seat_count,total_fare,total_commission);}
function handle_already_reserved_seats(reserved_seats_nums){}
function updateReservationDetailsOnSeats(sel_seats,sel_seat_count,total_fare,total_commission)
{if(sel_seat_count>0){$('res-selected-seats-field').value=sel_seats;}else{$('res-selected-seats-field').value="";}
if($('ticket_primary_passenger_name')!=null){if($("ticket_primary")!=undefined){if($("confirm_tickets_form").ticket_primary.checked==undefined){for(i=$("confirm_tickets_form").ticket_primary.length-1;i>-1;i--){if($("confirm_tickets_form").ticket_primary[i].checked){primary_passenger=$("confirm_tickets_form").ticket_primary[i].value;}}}
else
if($("confirm_tickets_form").ticket_primary.checked){primary_passenger=$("confirm_tickets_form").ticket_primary.value;}}
else{primary_passenger="";}
if(sel_seat_count>0){passenger_names_arr=new Array();passenger_ages_arr=new Array();passenger_titles_arr=new Array();sel_seats_arr=sel_seats.split(",");for(i=0;i<=sel_seats_arr.length-1;i++){seatNum=sel_seats_arr[i];passenger_name="ticket_passenger_name_"+seatNum;passenger_age="ticket_passenger_age_"+seatNum;passenger_title="ticket_title_"+seatNum;if($(passenger_name)!=null){passenger_names_arr[seatNum]=$(passenger_name).value;passenger_ages_arr[seatNum]=$(passenger_age).value;passenger_titles_arr[seatNum]=$(passenger_title).value;}}}
Element.update("multi_passenger_details","");if(sel_seat_count>0){if(sel_seat_count>1){Element.show("show_apply_same_passengers_link");}else{Element.hide("show_apply_same_passengers_link");}
html="<div class='table-class'><table width='100%;'><thead><th>&nbsp;</th><th>Title</th><th>Name</th><th>Age</th><th colspan='2'>Primary</th></thead><tbody>";sel_seats_arr=sel_seats.split(",");for(i=0;i<=sel_seats_arr.length-1;i++){seatNum=sel_seats_arr[i];passenger_name=passenger_names_arr[seatNum];passenger_age=passenger_ages_arr[seatNum];passenger_title=passenger_titles_arr[seatNum];if(passenger_name==undefined){passenger_name="";}
if(passenger_age==undefined){passenger_age="";}
if(passenger_title!=undefined){if((passenger_title=="Mr")||(passenger_title=="")){passenger_title_mr="selected='selected'";passenger_title_miss="";passenger_title_mrs="";}
else
if(passenger_title=="Miss"){passenger_title="selected='selected'";passenger_title_mr="";passenger_title_miss=passenger_title;passenger_title_mrs="";}
else
if(passenger_title=="Mrs"){passenger_title="selected='selected'";passenger_title_mr="";passenger_title_miss="";passenger_title_mrs=passenger_title;}
else{passenger_title_mr="selected='selected'";passenger_title_miss="";passenger_title_mrs="";}}
else{passenger_title_mr="selected='selected'";passenger_title_miss="";passenger_title_mrs="";}
if(primary_passenger!=seatNum){primary_pasenger_checked='';}
else{primary_pasenger_checked=' checked=""';}
if(!primary_passenger||(primary_passenger&&(sel_seats_arr.include!=primary_passenger))){if(seatNum==sel_seats_arr[0]){primary_pasenger_checked=' checked=""';}
else{primary_pasenger_checked='';}}
title="<td><select id='ticket_title_"+seatNum+"' name='ticket[title]["+seatNum+"]' onchange='apply_same_passenger_names()'>"+"<option value='Mr'"+
passenger_title_mr+" >Mr</option> <option value='Miss'"+
passenger_title_miss+">Miss</option> <option value='Mrs'"+
passenger_title_mrs+">Mrs</option> </select></td>"
html+="<tr valign='top' id='passenger-details-"+seatNum+"' name='passenger-details-"+seatNum+"' >"+"<td>"+seatNum+"</td>"+title+"<td><input type='text' size='10' maxlength='30' name='ticket[passenger_name]["+
seatNum+"]'"+"id='ticket_passenger_name_"+
seatNum+"' value='"+
passenger_name+"' onblur='update_primary_passenger(\""+
seatNum+"\");apply_same_passenger_names()'>"+"</td>";html+="<td><input type='text' size='2' maxlength='2' name='ticket[passenger_age]["+seatNum+"]'"+"id='ticket_passenger_age_"+seatNum+"' value='"+passenger_age+"' onblur='apply_same_passenger_names()'>"+"</td>";html+="<td> <input type='radio' value="+seatNum+" name='ticket[primary]'"+"id='ticket_primary' onclick=\"primary_passenger_details('"+seatNum+"')\""+primary_pasenger_checked+">"+"</td>";html+="</tr>";}
html+="</tbody></table></div>";new Insertion.Bottom('multi_passenger_details',html);new Effect.Highlight("multi_passenger_details",{});}}
$('reserved-tickets-cost').value=total_fare;dis_amount=$('ticket_discount_amount')?$('ticket_discount_amount').value:0;$('ticket_service_tax_amount').value=(((total_fare-dis_amount)*($('operator_service_tax').value*1.0)/100)).toFixed(2);$('reserved-seat-count').value=sel_seat_count;$('ticket_agent_commission').value=total_commission;if(is_offline_agent()){if($('ticket_net_amount')!=null){$('ticket_net_amount').value=total_fare-($('ticket_pre_post_pone_amount').value*1.0);$('ticket_net_amount').value=($('ticket_net_amount').value*1.0+$('ticket_service_tax_amount').value*1.0).toFixed(2);}
if($('ticket_net_amount_online_agent')!=null){$('ticket_net_amount_online_agent').value=total_fare-($('ticket_pre_post_pone_amount').value*1.0);$('ticket_net_amount_online_agent').value=($('ticket_net_amount_online_agent').value*1.0+$('ticket_service_tax_amount').value*1.0).toFixed(2);}}else{$('ticket_net_amount').value=total_fare-$("ticket_pre_post_pone_amount").value;$('ticket_net_amount').value=($('ticket_net_amount').value*1.0-dis_amount+$('ticket_service_tax_amount').value*1.0).toFixed(2);}}
function apply_same_passenger_names(){if($("apply_same_passengers").checked){myOption=-1;if($("confirm_tickets_form").ticket_primary==undefined){alert("Please select some seats");return;}
if($("confirm_tickets_form").ticket_primary.checked==undefined){for(i=$("confirm_tickets_form").ticket_primary.length-1;i>-1;i--){if($("confirm_tickets_form").ticket_primary[i].checked){myOption=i;i=-1;}}}
else
if($("confirm_tickets_form").ticket_primary.checked){myOption=0;}
if((myOption==-1)){alert("Please select some seats");return;}
primary_passenger=$("confirm_tickets_form").ticket_primary[myOption].value;sel_seats=$("res-selected-seats-field").value;sel_seats_arr=$("res-selected-seats-field").value.split(",");for(i=0;i<=sel_seats_arr.length-1;i++){seatNum=sel_seats_arr[i];$("ticket_passenger_name_"+seatNum).value=$("ticket_passenger_name_"+primary_passenger).value;$("ticket_passenger_age_"+seatNum).value=$("ticket_passenger_age_"+primary_passenger).value;$("ticket_title_"+seatNum).value=$("ticket_title_"+primary_passenger).value;}}}
function update_primary_passenger(seatNum){if($("confirm_tickets_form").ticket_primary.length==undefined){if($("ticket_primary").checked==true){primary_passenger=seatNum}}else{for(i=$("confirm_tickets_form").ticket_primary.length-1;i>-1;i--){if($("confirm_tickets_form").ticket_primary[i].checked){primary_passenger=$("confirm_tickets_form").ticket_primary[i].value;}}}
if(primary_passenger==seatNum){primary_passenger_details(seatNum);}}
function primary_passenger_details(seatNum){passenger_name="ticket_passenger_name_"+seatNum;$("ticket_primary_passenger_name").innerHTML=$(passenger_name).value;}
function getSelectedSeatsAsString(rowCount,colCount)
{seat_type_costs=new Array();seat_type_commissions=new Array();for(i=0;i<6;i++){if($("seat_type_cost_"+i)){seat_type_costs[i]=$("seat_type_cost_"+i).value*1.0;seat_type_commissions[i]=$("seat_type_commission_"+i).value*1.0;}}
sel_seats="";total_fare=0.0
total_commission=0.0
for(row=0;row<rowCount;row++){for(col=0;col<colCount;col++){chkFldName="chk_"+row+"_"+col;seatTypeFldName="seat_type_"+row+"_"+col;if($(chkFldName)&&$(chkFldName).checked){if(sel_seats!="")
sel_seats+=","
sel_seats+=$(chkFldName).value;total_fare+=seat_type_costs[$(seatTypeFldName).value*1];total_commission+=seat_type_commissions[$(seatTypeFldName).value*1];}}}
return[sel_seats,total_fare.toFixed(2),total_commission.toFixed(2)];}
function compute_tickets_total_fare(){alert("compute_tickets_total_fare");max_seats_allowed=$('max-seats-allowed').value;sel_seat_count=$('reserved-seat-count').value;if(!validateNumeric(sel_seat_count)){pw_alert("<b>No. of Seats:</b> Enter a valid number");return false;}
if(!sel_seat_count)
sel_seat_count=0;else
sel_seat_count=1*sel_seat_count;$('reserved-tickets-cost').value=(1.0*sel_seat_count*$('per-ticket-cost').value).toFixed(2);}
function compute_discount_amount(){dis_amount=$('ticket_discount_amount').value*1.0;original_cost=$("reserved-tickets-cost").value*1.0;pre_post_pone_amount=$("ticket_pre_post_pone_amount").value*1.0;if(dis_amount<0){alert("The discount amount should not be less than 0.");return;}
if(!validateAmount(dis_amount)){alert("Enter a valid amount");return false;}
result=(original_cost-dis_amount);$('ticket_service_tax_amount').value=(result*($('operator_service_tax').value*1.0)/100).toFixed(2);$("ticket_net_amount").value=(result-pre_post_pone_amount).toFixed(2);$('ticket_net_amount').value=($('ticket_net_amount').value*1.0+$('ticket_service_tax_amount').value*1.0).toFixed(2);result;}
function compute_agent_commission(){comm_amount=$('ticket_agent_commission').value;original_cost=$("reserved-tickets-cost").value;pre_post_pone_amount=$("ticket_pre_post_pone_amount").value;if(comm_amount<0){alert("The discount amount should not be less than 0.");return;}
if(!validateAmount(comm_amount)){alert("Enter a valid amount");return false;}
result=(original_cost-pre_post_pone_amount);$("ticket_net_amount").value=result.toFixed(2);$('ticket_net_amount').value=$('ticket_net_amount').value*1.0+$('ticket_service_tax_amount').value*1.0;result;}
function is_offline_agent(){if($('searchbus_on_behalf')){selected_text=$('searchbus_on_behalf').value;if(selected_text.indexOf('(A)')>0){return true;}else{return false;}}else{return true;}}
function update_ticket_fare_values(value_arr){seat_type_fare_comm=value_arr[2];for(i=0;i<seat_type_fare_comm.length;i++){seat_type=seat_type_fare_comm[i][0];seat_fare=seat_type_fare_comm[i][1];seat_comm=seat_type_fare_comm[i][2];$('seat_type_commission_'+seat_type).value=seat_comm;}}
function get_offline_branch_fields(show_commision_column,value_arr){update_ticket_fare_values(value_arr);row_count=$("row_count").value;col_count=$("col_count").value;performSelectSeats(row_count,col_count);total_fare=$('reserved-tickets-cost').value;total_commission=$('ticket_agent_commission').value;dis_amount=$('ticket_discount_amount').value;if($('searchbus_on_behalf').value==''){Element.hide('ticket_agent_booking_number_span');if(show_commision_column){Element.show('ticket_discount_amount_span');}else{Element.hide('ticket_discount_amount_span');}
Element.hide('ticket_agent_commission_span');$('ticket_net_amount').value=total_fare-dis_amount-($('ticket_pre_post_pone_amount').value*1.0);$('ticket_net_amount').value=$('ticket_net_amount').value*1.0+$('ticket_service_tax_amount').value*1.0;}
else{if(is_offline_agent()){Element.show('ticket_agent_booking_number_span');Element.hide('ticket_discount_amount_span');if(show_commision_column){Element.show('ticket_agent_commission_span');}else{Element.hide('ticket_agent_commission_span');}
$('ticket_net_amount').value=total_fare-($('ticket_pre_post_pone_amount').value*1.0);$('ticket_net_amount').value=$('ticket_net_amount').value*1.0+$('ticket_service_tax_amount').value*1.0;}else{Element.show('ticket_agent_booking_number_span');if(show_commision_column){Element.show('ticket_discount_amount_span');}else{Element.hide('ticket_discount_amount_span');}
Element.hide('ticket_agent_commission_span');$('ticket_net_amount').value=total_fare-dis_amount-($('ticket_pre_post_pone_amount').value*1.0);$('ticket_net_amount').value=$('ticket_net_amount').value*1.0+$('ticket_service_tax_amount').value*1.0;}}}
function update_offline_branch_value(offline_branch_value){$("booking_onbehalf_value").value=offline_branch_value
return true;}
function update_offline_branch_value_onblur(){offline_branch_value=$('booking_on_behalf').value;if(offline_branch_value.include("('")){onbehalf_value=offline_branch_value.split("('")[1].split("')")[0];$("booking_on_behalf_value").value=onbehalf_value;}else{return false;}
return true;}
function update_js_field_tag_onbehalf(){new Ajax.Request('/tickets/update_js_field_tag_onbehalf',{asynchronous:true,evalScripts:true,parameters:""});}
var last_set_primary_passenger_id;function showPrimaryPassengerDetails(seatNum)
{new_primary_passenger_id='primary-passenger-details-'+seatNum
if($(last_set_primary_passenger_id)&&new_primary_passenger_id!=last_set_primary_passenger_id){Element.update(last_set_primary_passenger_id,"")}
last_set_primary_passenger_id=new_primary_passenger_id;details="<table id='primary-pass-det'><tr><td><b>Phone Number<small>(Mobile)</small>:</b></td><td> <input type='text' size='20' maxlength='160' name='ticket["+seatNum+"][phone_number]' id='ticket_"+seatNum+"_contact_number'></td></tr>"+"<tr><td><b>e-mail:</b></td><td> <input type='text' size='20' maxlength='128' name='ticket["+seatNum+"][email]' > </td></tr></table>";Element.update(last_set_primary_passenger_id,details);new Effect.Highlight(last_set_primary_passenger_id,{});}
function validateSearchBus(){var errorMessage;var focusElem;if($("searchbus_from").value==""){if(!errorMessage){errorMessage="<li>Please select Origin</li>";focusElem=$("searchbus_from");}else{errorMessage+="<br/><li>Please select Origin</li>";}}
if($("searchbus_to").value==""){if(!errorMessage){errorMessage="<li>Please select Destination</li>";focusElem=$("searchbus_to");}else{errorMessage+="<br/><li>Please select Destination</li>";}}
if(errorMessage){errorMessage="<table><tr><td align=left><b>Please correct the following errors:</b><ul align='left'>"+errorMessage+"</ul></td></tr></table>";pw_alert(errorMessage,250,150);focusElem.focus();return false;}
Element.hide('search_button');Element.show('show_searching_button');return true;}
function handle_round_trip(is_round_trip)
{if(is_round_trip){Element.show("searchbus_return_div");new Effect.Highlight("searchbus_return_div",{});}else{Element.hide("searchbus_return_div");}}
function sort_search_results(sort_id){new Ajax.Request('/tickets/search_results',{asynchronous:true,evalScripts:true,parameters:"sort_by="+sort_id});}
function update_reservation_stage(name,landmark,time)
{$("res-boarding-at").innerHTML="<b>"+name+"</b><br/>"+landmark+"<br/> <nobr>@ <b>"+time+"</b></nobr>";}
function validateOtherBooking(){var errorMessage;var focusElem;if($("other_booking_fare").value.length<=0||!validateAmount($("other_booking_fare").value)){if(!errorMessage){errorMessage="=> Total Fare should be greater than zero. ";focusElem=$("other_booking_fare");}
else{errorMessage+="\n=> Total Fare should be greater than  zero";focusElem=$("other_booking_fare");}}
if($("other_booking_phone_number").value.length<=0||!validatePhoneNumber($("other_booking_phone_number").value)){if(!errorMessage){errorMessage="=> Enter valid phone number. ";focusElem=$("other_booking_phone_number");}
else{errorMessage+="\n=> Enter valid phone number.";focusElem=$("other_booking_phone_number");}}
if($("other_booking_email").value.length&&!validateEmail($("other_booking_email").value)){if(!errorMessage){errorMessage="=> Enter valid e-mail address. For ex: yourname@gmail.com";focusElem=$("other_booking_email");}
else{errorMessage+="\n=> Enter valid e-mail address. For ex: yourname@gmail.com";}}
if($('other_booking_boarding_at').value==""){if(!errorMessage){errorMessage="=> Please select one boarding stage";focusElem=$("other_booking_boarding_at");}
else{errorMessage+="\n=> Please select one boarding stage";}}
if($("other_booking_origin").selectedIndex==$("other_booking_destination").selectedIndex){if(!errorMessage){errorMessage="=> Origin and Destination should not be same.";focusElem=$("other_booking_destination");}
else{errorMessage+="\n=> Origin and Destination should not be same.";}}
if($("other_booking_passenger_age").value.length<=0||!validatePassengerAge($("other_booking_passenger_age").value)){if(!errorMessage){errorMessage="=> Please enter the passenger age.";focusElem=$("other_booking_passenger_age");}
else{errorMessage+="\n=> Please enter the passenger age.";}}
if($("other_booking_passenger_name").value.length<=0){if(!errorMessage){errorMessage="=> Please enter the passenger name.";focusElem=$("other_booking_passenger_name");}
else{errorMessage+="\n=> Please enter the passenger name.";}}
if($("other_booking_seat_numbers").value.length<=0||$("other_booking_seat_numbers").value.length-1==$("other_booking_seat_numbers").value.lastIndexOf(",")){if(!errorMessage){errorMessage="=> Please enter proper seat numbers.";focusElem=$("other_booking_seat_numbers");}
else{errorMessage+="\n=> Please enter proper seat numbers.";}}
if(errorMessage){errorMessage="Please correct the following errors:\n"+errorMessage;alert(errorMessage);focusElem.focus();return false;}}
function validateBooking(action_name){var errorMessage;var focusElem;if($("booking_fare").value.length<=0||!validatePhoneNumber($("booking_fare").value)){if(!errorMessage){errorMessage="Enter the ticket fare. ";focusElem=$("booking_fare");}
else{errorMessage+="\nEnter the ticket fare.";focusElem=$("booking_fare");}}
if($("booking_origin").selectedIndex==$("booking_destination").selectedIndex){if(!errorMessage){errorMessage="\nOrigin and Destination should not be same.";focusElem=$("booking_destination");}
else{errorMessage+="\nOrigin and Destination should not be same.";}}
if($("booking_seat_numbers").value.length<=0||$("booking_seat_numbers").value.length-1==$("booking_seat_numbers").value.lastIndexOf(",")){if(!errorMessage){errorMessage="\nPlease enter proper seat numbers.";focusElem=$("booking_seat_numbers");}
else{errorMessage+="\nPlease enter proper seat numbers.";}}
if(errorMessage){errorMessage="Please correct the following errors:\n"+errorMessage;alert(errorMessage);focusElem.focus();return false;}
$("action_name_type").value=action_name}
function validateChartBooking(){var errorMessage;var focusElem;if($("booking_phone_number").value.length<=0||!validatePhoneNumber($("booking_phone_number").value)){if(!errorMessage){errorMessage="Enter valid phone number.";focusElem=$("booking_phone_number");}
else{errorMessage+="\nEnter valid phone number.";focusElem=$("booking_phone_number");}}
if($("booking_origin").selectedIndex==$("booking_destination").selectedIndex){if(!errorMessage){errorMessage="\nOrigin and Destination should not be same.";}
else{errorMessage+="\nOrigin and Destination should not be same.";}}
if($("booking_passenger_age").value.length<=0||!validatePassengerAge($("booking_passenger_age").value)){if(!errorMessage){errorMessage="\nPlease enter the passenger age.";focusElem=$("booking_passenger_age");}
else{errorMessage+="\nPlease enter the passenger age.";}}
if($("booking_seat_numbers").value.length<=0){if(!errorMessage){errorMessage="\nPlease enter proper seat numbers.";focusElem=$("booking_seat_numbers");}
else{errorMessage+="\nPlease enter proper seat numbers.";}}
if($("booking_fare").value.length<=0||!validateAmount($("booking_fare").value)){if(!errorMessage){errorMessage="\nPlease enter fare.";focusElem=$("booking_fare");}
else{errorMessage+="\nPlease enter fare.";}}
if(errorMessage){errorMessage="Please correct the following errors:\n"+errorMessage;alert(errorMessage);focusElem.focus();return false;}}
function validateBookingFare(){var errorMessage;var focusElem;if($("booking_fare").value.length<=0||!validateAmount($("booking_fare").value)){if(!errorMessage){errorMessage="\nPlease enter fare.";focusElem=$("booking_fare");}
else{errorMessage+="\nPlease enter fare.";}}
if($("booking_seat_numbers").value.length<=0||$("booking_seat_numbers").value.length-1==$("booking_seat_numbers").value.lastIndexOf(",")){if(!errorMessage){errorMessage="\nPlease enter the seat number.";focusElem=$("booking_seat_numbers");}
else{errorMessage+="\nPlease enter the seat number.";}}
if(errorMessage){errorMessage="Please correct the following errors:\n"+errorMessage;alert(errorMessage);focusElem.focus();return false;}}
function validateChartDetails(){var errorMessage;var focusElem;if($("service_chart_fare").value.length<=0||!validateAmount($("service_chart_fare").value)){if(!errorMessage){errorMessage="\nPlease enter fare.";focusElem=$("service_chart_fare");}
else{errorMessage+="\nPlease enter fare.";focusElem=$("service_chart_fare");}}
if($("service_chart_contract_amount").value.length<=0||!validateAmount($("service_chart_contract_amount").value)){if(!errorMessage){errorMessage="\nPlease enter Contract amount.";focusElem=$("service_chart_contract_amount");}
else{errorMessage+="\nPlease enter Contract amount.";focusElem=$("service_chart_contract_amount");}}
if($("service_chart_total_seats").value.length<=0||!validateAmount($("service_chart_total_seats").value)){if(!errorMessage){errorMessage="\nPlease enter Total Seats.";focusElem=$("service_chart_total_seats");}
else{errorMessage+="\nPlease enter Total Seats.";focusElem=$("service_chart_total_seats");}}
if(errorMessage){errorMessage="Please correct the following errors:\n"+errorMessage;alert(errorMessage);focusElem.focus();return false;}}
function remove_origin_city_from_destinations(){selected_index=$("other_booking_origin").selectedIndex;$("other_booking_destination").innerHTML=$("other_booking_destinations_temp").innerHTML
destinations=document.getElementById("other_booking_destination");destinations.remove(selected_index);}
function get_chart_rep_time(){dep_hrs=$("service_chart_departure_time_hours").value;dep_mins=$("service_chart_departure_time_minutes").value*1;if((dep_mins-30)<0){hrs=((dep_hrs-1)<10)?'0'+(dep_hrs-1):(dep_hrs-1);$("service_chart_departure_time_hours").value=hrs;$("service_chart_departure_time_minutes").value=(30+dep_mins);}
else{$("service_chart_departure_time_hours").value=dep_hrs;mins=((dep_mins-30)<10)?'0'+(dep_mins-30):(dep_mins-30);$("service_chart_departure_time_minutes").value=mins;}}
function get_booking_rep_time(){dep_hrs=$("booking_departure_time_hours").value;dep_mins=$("booking_departure_time_minutes").value*1;if((dep_mins-30)<0){hrs=((dep_hrs-1)<10)?'0'+(dep_hrs-1):(dep_hrs-1);$("booking_reporting_time_hours").value=hrs;$("booking_reporting_time_minutes").value=(30+dep_mins);}
else{$("booking_reporting_time_hours").value=dep_hrs;mins=((dep_mins-30)<10)?'0'+(dep_mins-30):(dep_mins-30);$("booking_reporting_time_minutes").value=mins;}}
function get_rep_time(){dep_hrs=$("other_booking_departure_time_hours").value;dep_mins=$("other_booking_departure_time_minutes").value*1;if((dep_mins-30)<0){hrs=((dep_hrs-1)<10)?'0'+(dep_hrs-1):(dep_hrs-1);$("other_booking_reporting_time_hours").value=hrs;$("other_booking_reporting_time_minutes").value=(30+dep_mins);}
else{$("other_booking_reporting_time_hours").value=dep_hrs;mins=((dep_mins-30)<10)?'0'+(dep_mins-30):(dep_mins-30);$("other_booking_reporting_time_minutes").value=mins;}}
function validateConfirmTicket(show_confirm,is_agent,commission){if(is_agent){if(!check_agent_balance(commission)){return false;}}
var errorMessage;var focusElem;res_seats_count=$("reserved-seat-count").value*1;if(!res_seats_count||res_seats_count==0){pw_alert("<b>No. of Seats:</b> Select atleast one seat.",350,100);return false;}
selected_seats=$("res-selected-seats-field").value;selected_seats_array=new Array();if(selected_seats.length>0){selected_seats_array=selected_seats.split(",");}
if((selected_seats_array.length<res_seats_count)){pw_alert("Please select seats equal to the <b>No. of Seats</b>",350,100);return false;}
else{if($("ticket_phone_number").value.length<=0||!validatePhoneNumber($("ticket_phone_number").value)){if(!errorMessage){errorMessage="<li>Enter valid phone number.</li>";focusElem=$("ticket_phone_number");}
else{errorMessage+="<li>Enter valid phone number.</li>";focusElem=$("ticket_phone_number");}}
if($("ticket_discount_amount")&&!validateAmount($("ticket_discount_amount").value)){if(!errorMessage){errorMessage="<li>Enter valid amount for discount</li>";focusElem=$("ticket_discount_amount");}
else{errorMessage+="<li>Enter valid amount for discount</li>";}}
if($("ticket_agent_commission")&&!validateAmount($("ticket_agent_commission").value)){if(!errorMessage){errorMessage="<li>Enter valid amount for commission</li>";focusElem=$("ticket_agent_commission");}
else{errorMessage+="<li>Enter valid amount for commission</li>";}}
if($("ticket_email").value&&!validateEmail($("ticket_email").value)){if(!errorMessage){errorMessage="<li>Enter valid e-mail address. For ex: yourname@gmail.com</li>";focusElem=$("ticket_email");}
else{errorMessage+="<li>Enter valid e-mail address. For ex: yourname@gmail.com</li>";}}
if($("ticket_blocked_flag")&&$("ticket_blocked_flag").checked){if($("ticket_blocking_time").value.length==0){if(!errorMessage){errorMessage="<li>Please select the <b>Confirm Time Limit</b></li>";focusElem=$("ticket_blocking_time");}
else{errorMessage+="<li>Please select the <b>Confirm Time Limit</b></li>";}}}
if($('ticket_discount_amount')&&!validateAmount($('ticket_discount_amount').value)){if(!errorMessage){errorMessage="<li>Please give valid discount amount</b></li>";focusElem=$("ticket_discount_amount");}
else{errorMessage+="<li>Please give valid discount amount</b></li>";}}
if($('searchbus_boarding_at').value==0){if(!errorMessage){errorMessage="<li>Please select one boarding stage</b></li>";focusElem=$("searchbus_boarding_at");}
else{errorMessage+="<li>Please select one boarding stage</b></li>";}}
myOption=-1;if($("confirm_tickets_form").ticket_primary.checked==undefined){for(i=$("confirm_tickets_form").ticket_primary.length-1;i>-1;i--){if($("confirm_tickets_form").ticket_primary[i].checked){myOption=i;i=-1;}}}else if($("confirm_tickets_form").ticket_primary.checked){myOption=0;}
if(myOption==-1){if(!errorMessage){errorMessage="<li>Please select one person as Primary</li>";focusElem=$("ticket_primary");}
else{errorMessage+="<li>Please select one person as Primary</li>";focusElem=$("ticket_primary");}}
for(i=0;i<selected_seats_array.length;i++){seatNum=selected_seats_array[i];passenger_name="ticket_passenger_name_"+seatNum
passenger_age="ticket_passenger_age_"+seatNum
if($(passenger_name).value.length==0){if(!errorMessage){errorMessage="<li>Please enter the passenger name for the seat"+seatNum+"</b></li>";focusElem=$(passenger_name);}
else{errorMessage+="<li>Please enter the passenger name for the seat"+seatNum+"</b></li>";}}
if($(passenger_age).value.length<=0||!validatePhoneNumber($(passenger_age).value)){if(!errorMessage){errorMessage="<li>Please enter the passenger age for the seat"+seatNum+"</b></li>";focusElem=$(passenger_age);}
else{errorMessage+="<li>Please enter the passenger age for the seat"+seatNum+"</b></li>";}}}
if(($("searchbus_on_behalf"))&&is_offline_agent()){if($('ticket_agent_booking_number').value.length<=0){if(!errorMessage){errorMessage="<li>Please enter the Agent Booking Number</li>";focusElem=$('ticket_agent_booking_number');}else{errorMessage+="<li>Please enter the Agent Booking Number</li>";}}}
if(errorMessage){errorMessage="<table><tr><td align=left><b>Please correct the following errors:</b><ul align='left'>"+errorMessage+"</ul></td></tr></table>";pw_alert(errorMessage,350,200);focusElem.focus();return false;}}
if(show_confirm==true){show_tickets_confirm_dialogue();}
else{tickets_confirm_submit();}
return false;}
function show_tickets_confirm_dialogue()
{width=600;height=500;conf_msg=get_ticket_confirm_dailog_msg();formObj=$("reserved-seat-count").form;pw_confirm_form_submit(conf_msg,formObj,width,height,"Confirm Booking Details","tickets_confirm_submit()");}
function set_focus_popup_ok(){ok_elm=document.getElementsByClassName('ok_button');ok_elm.focus();}
function get_ticket_confirm_dailog_msg(){dis_amount=$('ticket_discount_amount')?$('ticket_discount_amount').value:0;original_cost=$("reserved-tickets-cost").value;commission=$("ticket_agent_commission").value;is_onbehalf=is_offline_agent();if(is_onbehalf){remaining_amount=(original_cost);remaining_amount=remaining_amount*1.0+$('ticket_service_tax_amount').value*1.0;}
else{pre_post_pone_amount=$("ticket_pre_post_pone_amount").value;remaining_amount=(original_cost-dis_amount-pre_post_pone_amount);remaining_amount=remaining_amount.toFixed(2);remaining_amount=remaining_amount*1.0+$('ticket_service_tax_amount').value*1.0;}
ticket="<table><tr><td><b><nobr>No. of Seats:</b></td><td> <span class='red bold'>"+$("reserved-seat-count").value+' seat(s)&nbsp; ('+$("res-selected-seats-field").value+')'+"</span></nobr></td></tr>";ticket+="<tr><td><nobr><b>Total Fare:</b></td><td>  <span class='red bold'> Rs "+original_cost+"</span></nobr></td></tr>";if(is_onbehalf&&is_offline_agent()){ticket+="<tr><td><nobr><b>Commission:</b> </td><td> <span class='red bold'> Rs "+commission+"</span></nobr></td></tr>";}
else{ticket+="<tr><td><nobr><b>Discount:</b> </td><td> <span class='red bold'> Rs "+dis_amount+"</span></nobr></td></tr>";}
ticket+="<tr><td><nobr><b>Net Amount:</b> </td><td> <span class='red bold'> Rs "+remaining_amount+"</span></nobr></td></tr>";passenger="<table><tr><td><b>Name:</b> </td><td> "+$("ticket_primary_passenger_name").innerHTML+"</td></tr>";passenger+="<tr><td><b>Phone:</b> </td><td> "+$("ticket_phone_number").value+"</td></tr>";passenger+="<tr><td><b>e-mail:</b></td><td>  "+$("ticket_email").value+"</td></tr></table>";onbehalf_index=$('searchbus_boarding_at').selectedIndex;selected_text=$('searchbus_boarding_at').options[onbehalf_index].text;coach_details=$("coach-details-hidden").innerHTML;boarding_at="<tr><td width='185'><b>Boarding @: </b></td><td><span>"+selected_text+"</span></td></tr></table>";conf_msg='<div class="table-class-popup"><table><thead><tr><th>Route/Coach</th></thead><tbody align="left" valign="top"><tr><td>'+coach_details+'</td></tr></tbody></table></div>';conf_msg+='<div class="table-class-popup"><table><thead><tr><th colspan="2">Ticket</th></thead><tbody align="left" valign="top"><tr><td colspan="2">'+ticket+boarding_at+'</td></tr></tbody></table></div>';conf_msg+='<div class="table-class-popup"><table><thead><tr><th>Passenger</th></thead><tbody align="left" valign="top"><tr><td>'+passenger+'</td></tr></tr></tbody></table></div>';conf_msg+='<div class="table-class-popup"><table><tr><td colspan="3"><span class="red bold">';conf_msg+='<span class="size12 bold center" >MAKE SURE YOU ARE NOT BOOKING THE MALE SEATS NEXT TO THE FEMALE SEATS.</span><br/>';conf_msg+='</span></td></tr>';conf_msg+='</table></div>';return conf_msg;}
function tickets_confirm_submit(){Element.show('form-indicator-ticket');new Ajax.Request('/tickets/select_seat_with_passenger_info',{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-ticket');},parameters:Form.serialize($('confirm_tickets_form'))});return false;}
function validate_cancel_tticket(){var errorMessage;var focusElem;if(($("ticket_number").value.length<=0)){if(!errorMessage){errorMessage="<li>Enter valid PNR Number</li>";focusElem=$("ticket_number");}
else{errorMessage+="<li>Enter valid PNR Number</li>";}}
if(($("ticket_email").value.length<=0)||!validateEmail($("ticket_email").value)){if(!errorMessage){errorMessage="<li>Enter valid e-mail address. For ex: yourname@gmail.com</li>";focusElem=$("ticket_email");}
else{errorMessage+="<li>Enter valid e-mail address. For ex: yourname@gmail.com</li>";}}
if(errorMessage){errorMessage="<table><tr><td align=left><b>Please correct the following errors:</b><ul align='left'>"+errorMessage+"</ul></td></tr></table>";pw_alert(errorMessage,350,200);focusElem.focus();return false;}else
{if(confirm('By clicking this, your ticket will be cancelled. A coupon code will be generated with the refund amount and will be sent to you by email. Are you sure you want to cancel the ticket?'))
{return true;}else{return false;}}}
function validateConfirmCancelTicket(){pnr_number=$("pnr_number").value;conf_msg=get_cancel_ticket_details();width=600;height=330;Dialog.confirm(conf_msg,{windowParameters:{title:"Confirm Cancelling Details",className:"alphacube",width:width,height:height},okLabel:"Yes",cancel:function(win){},ok:function(win){ticket_cancel_submit();return true;}});WindowCloseKey.init();}
function ticket_cancel_submit(){Element.show('form-indicator-cancel_ticket');new Ajax.Request('/tickets/cancel_ticket/?pnr_number='+pnr_number,{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.show('form-indicator-cancel_ticket');},parameters:Form.serialize($('search-results'))});return false;}
function get_cancel_ticket_details(){conf_msg="<br/><b>Ready to cancel the ticket(s), Please confirm.</b><br/>";conf_msg+='<div class="table-class-popup" style="margin-left:20px;width:500px;"><table width="100%" align="left" valign="top"><thead align="left" valign="top"><tr><th>Route/Coach</th><th>Booking Details</th><th>Cancellation Charges</th></thead>';conf_msg+='<tbody align="left" valign="top"><tr><td>'+$("coach-details-hidden").innerHTML+'</td><td>'+$("booking-details-alert").innerHTML+'</td><td>'+$("cancellation_charges").innerHTML+'</td></tr>';conf_msg+='<tr><td colspan="3"><span>';conf_msg+=$("cancellation_charges_procedure").innerHTML;conf_msg+='</span></td></tr></tbody>';conf_msg+='</table></div>';return conf_msg;}
function validateAlertCancelTicket(){coach_details=$("coach-details-hidden").innerHTML;booking_details_alert=$("booking-details-alert").innerHTML;conf_msg='<div class="table-class-popup" style="margin-left:20px;width:500px;"><table width="100%" align="left" valign="top"><thead align="left" valign="top"><tr><th>Route/Coach</th><th>Booking Details</th></thead>';conf_msg+='<tbody align="left" valign="top"><tr><td>'+coach_details+'</td><td>'+booking_details_alert+'</td></tr>';conf_msg+='<tr><td colspan="3"><span class="red bold">';conf_msg+=$("error_message_cancellation").innerHTML;conf_msg+='</span></td></tr></tbody>';conf_msg+='</table></div>';pw_alert(conf_msg,550,250);}
function validateConfirmCancelCargo(){var lr_number="";if($("pnr_number"))
lr_number=$("pnr_number").value;else
lr_number=$("lrnum").value;conf_msg=get_cancel_cargo_details();width=595;height=230;Dialog.confirm(conf_msg,{windowParameters:{title:"Confirm Cancelling Cargo Details",className:"alphacube",width:width,height:height},okLabel:"Yes",cancel:function(win){},ok:function(win){cargo_cancel_submit(lr_number);return true;}});WindowCloseKey.init();}
function cargo_cancel_submit(lr_number){Element.show('form-indicator-cancel_cargo');new Ajax.Request('/tickets/cancel_cargo_ticket/?lr_number='+lr_number,{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.show('form-indicator-cancel_cargo');},parameters:Form.serialize($('main-content'))});return false;}
function get_cancel_cargo_details(){conf_msg="<br/><b>Ready to cancel the cargo, Please confirm.</b><br/>";conf_msg+='<div class="table-class-popup" style="margin-left:20px;width:500px;"><table width="100%" align="left" valign="top"><thead align="left" valign="top"><tr><th>Booking Details</th></thead>';conf_msg+='<tbody align="left" valign="top"><tr><td>'+$("booking-details-hidden").innerHTML+'</td></tr>';conf_msg+='<tr><td colspan="3"><span class="red bold">';conf_msg+='</span></td></tr></tbody>';conf_msg+='</table></div>';return conf_msg;}
function userStatusUnBlock(user_id){conf_msg="\nAre you sure you want to make the user Active?";width=400;height=120;if(confirm(conf_msg)){user_status_unblock_submit(user_id);}else{return false;}}
function user_status_unblock_submit(user_id){new Ajax.Updater('status_column_'+user_id,'admin/users/update_status/'+user_id,{asynchronous:true,evalScripts:true,onSuccess:function(request){close_pw_info();},parameters:Form.serialize($('status_column_'+user_id))});return false;}
function userStatusBlock(user_id){conf_msg="You are terminating the access to the user, he will not be able to login.\n Are you sure you want to make the user In-Active?";width=400;height=120;if(confirm(conf_msg)){user_status_block_submit(user_id);}else{return false;}}
function user_status_block_submit(user_id){new Ajax.Updater('status_column_'+user_id,'admin/users/update_status/'+user_id,{asynchronous:true,evalScripts:true,onSuccess:function(request){close_pw_info();},parameters:Form.serialize($('status_column_'+user_id))});return false;}
function userResendActivation(user_id){conf_msg="You are asking user to Activate again, user will not be able to login to the system until he Activates again by setting a password.<br/>Are you sure you want the user to Activate again?<br/>";width=400;height=120;Dialog.confirm(conf_msg,{windowParameters:{title:"User Status",className:"alphacube",width:width,height:height},okLabel:"Yes",cancel:function(win){},ok:function(win){user_resend_activation_submit(user_id);return true;}});WindowCloseKey.init();}
function user_resend_activation_submit(user_id){pw_info('<b>Sending the Activation. Please wait ... </b>',250,100,12,true);new Ajax.Updater('status_column_'+user_id,'/users/resend_activation/'+user_id,{asynchronous:true,evalScripts:true,onSuccess:function(request){close_pw_info();},parameters:Form.serialize($('status_column_'+user_id))});return false;}
function allowReservation(res_id){conf_msg="<br/>Are you sure you want to allow the reservation?";width=400;height=120;Dialog.confirm(conf_msg,{windowParameters:{title:"User Status",className:"alphacube",width:width,height:height},okLabel:"Yes",cancel:function(win){},ok:function(win){allow_reservation_submit(res_id);return true;}});WindowCloseKey.init();}
function allow_reservation_submit(res_id){pw_info('<b>Allowing the reservation. Please wait ... </b>',250,100,12,true);new Ajax.Updater('stop_reservation_column_'+res_id,'/reservations/stop_reservation/'+res_id,{asynchronous:true,evalScripts:true,onSuccess:function(request){close_pw_info();},parameters:Form.serialize($('stop_reservation_column_'+res_id))});return false;}
function stopReservation(res_id){conf_msg="<br/>Are you sure you want to stop the reservation?";width=400;height=120;Dialog.confirm(conf_msg,{windowParameters:{title:"User Status",className:"alphacube",width:width,height:height},okLabel:"Yes",cancel:function(win){},ok:function(win){stop_reservation_submit(res_id);return true;}});WindowCloseKey.init();}
function stop_reservation_submit(res_id){pw_info('<b>Stopping the reservation. Please wait ... </b>',250,100,12,true);new Ajax.Updater('stop_reservation_column_'+res_id,'/reservations/stop_reservation/'+res_id,{asynchronous:true,evalScripts:true,onSuccess:function(request){close_pw_info();},parameters:Form.serialize($('stop_reservation_column_'+res_id))});return false;}
function changeServiceProposed(route_id,status){conf_msg="<br/>Are you sure you want to Change the service to Proposed?";width=400;height=120;Dialog.confirm(conf_msg,{windowParameters:{title:"Route Status",className:"alphacube",width:width,height:height},okLabel:"Yes",cancel:function(win){},ok:function(win){change_service_proposed_submit(route_id,status);return true;}});WindowCloseKey.init();}
function change_service_proposed_submit(route_id,status){pw_info('<b>Changing the status to Proposed. Please wait ... </b>',250,100,12,true);new Ajax.Updater('status_column_'+route_id,'/admin/routes/update_status/'+route_id+'?status='+status,{asynchronous:true,evalScripts:true,onSuccess:function(request){close_pw_info();},parameters:Form.serialize($('status_column_'+route_id))});return false;}
function changeServiceInActive(route_id,status){conf_msg="<br/>Are you sure you want to Change the service to InActive?";width=400;height=120;Dialog.confirm(conf_msg,{windowParameters:{title:"Route Status",className:"alphacube",width:width,height:height},okLabel:"Yes",cancel:function(win){},ok:function(win){change_service_inactive_submit(route_id,status);return true;}});WindowCloseKey.init();}
function change_service_inactive_submit(route_id,status){pw_info('<b>Changing the status to Proposed. Please wait ... </b>',250,100,12,true);new Ajax.Updater('status_column_'+route_id,'/admin/routes/update_status/'+route_id+'?status='+status,{asynchronous:true,evalScripts:true,onSuccess:function(request){close_pw_info();},parameters:Form.serialize($('status_column_'+route_id))});return false;}
function accountStatusCompleted(ta_account_id){var cheque_details=prompt("ENTER THE CHEQUE/DD DETAILS.\nThis will Complete the Transaction and do the necessary \nadjustments (Credit/Debit) to the Agent's Account Balance Amount.","");if(cheque_details){new Ajax.Request('/admin/ta_accounts/update_status/'+ta_account_id+'?cheque_details='+cheque_details,{asynchronous:true,evalScripts:true,onSuccess:function(request){}});return false;}else{alert("Please enter the cheque details like Number, Date, Amount etc.,");return false;}}
function ta_account_status_complete_submit(ta_account_id){pw_info('<b>Changing the status. Please wait ... </b>',250,100,12,true);new Ajax.Request('/admin/ta_accounts/update_status/'+ta_account_id,{asynchronous:true,evalScripts:true,onSuccess:function(request){close_pw_info();},parameters:Form.serialize($('status_column_'+ta_account_id))});return false;}
function view_quota(anchName,id){width=450;height=400;url='/admin/quotas/view_blocked_seats/'+id;pw_popup_show(url,"View Quota Allotment Details",null,width,height);}
function validateBlockSeats(show_confirm)
{var errorMessage;var focusElem;res_seats_count=$("reserved-seat-count").value*1;if(!res_seats_count||res_seats_count==0){pw_alert("<b>No. of Seats:</b> Enter a valid number",350,100);return false;}
selected_seats=$("res-selected-seats-field").value;selected_seats_array=new Array();if(selected_seats.length>0){selected_seats_array=selected_seats.split(",");}
if($("searchbus_on_behalf").value==""){if(!errorMessage){errorMessage="Please select Block for offline branch or agency.";focusElem=$("searchbus_on_behalf");}}
if(errorMessage){pw_alert(errorMessage,350,100);focusElem.focus();return false;}
if(show_confirm==true){show_blocktickets_confirm_dialogue();}
else{blockseats_confirm_submit();}
return false;}
function show_blocktickets_confirm_dialogue()
{conf_msg=get_blocktickets_confirm_dailog_msg();width=500;height=280;formObj=$("res-selected-seats-field").form;pw_confirm_form_submit(conf_msg,formObj,width,height,"Confirm Block Seat(s) Details","blockseats_confirm_submit()");}
function blockseats_confirm_submit(){Element.show('form-block');new Ajax.Request('/tickets/confirm_blocked_seats',{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-ticket')},parameters:Form.serialize($('confirm_blockseats_form'))});return false;}
function get_blocktickets_confirm_dailog_msg(){ticket="<b><nobr>No. of Seats:</b> <span class='red bold'>"+$("reserved-seat-count").value+"</span></nobr>";ticket+="<br/><nobr><b>Total Fare:</b> <span class='red bold'> Rs "+$("reserved-tickets-cost").value+"</span></nobr>";ticket+="<br/><b><nobr>Preferred Seats:</b> <span class='red bold'>"+$("res-selected-seats-field").value+"</span></nobr>";coach_details=$("coach-details-hidden").innerHTML;conf_msg="<br/><b>Ready to Block the seats, Please confirm the blocked seats</b><br/>";conf_msg+='<div class="table-class-popup"  style="margin-left:20px;width:400px;"><table align="left" valign="top"><thead align="left" valign="top"><tr><th>Route/Coach</th><th>Ticket</th></tr></thead>';conf_msg+='<tbody align="left" valign="top"><tr><td>'+coach_details+'</td><td>'+ticket+'</td></tr>';if($("apply_for_all_reservations").checked){block_apply_all_msg=" <br/> This will apply for all the scheduled services starting from today.";}else{block_apply_all_msg="";}
conf_msg+='<tr><td colspan="3"><span class="red bold">'+block_apply_all_msg+'</span></td></tr></tbody>';conf_msg+='</table></div>';return conf_msg;}
function block_apply_all(){if($("apply_for_all_reservations").checked){alert("This will apply for all the Scheduled Services starting from today. \n\nIF ANY OF THESE SEATS ALREADY BOOKED - THEN THEY WILL NOT BE BLOCKED!\nIF THEY ARE ALREADY BLOCKED FOR SOMEONE ELSE, THEY WILL BE REMOVED ABD BLOCKED FOR THIS SELECTED AGENT.\n\nCHECK THIS ONLY IF YOU REALLY WANT TO DO THIS.");}}
function validateUnBlockSeats(show_confirm)
{var errorMessage;var focusElem;if($("res-selected-seats-field").value.length<=0){pw_alert("Please select a seat before continue.",350,100);return false;}
if(show_confirm==true){show_unblocktickets_confirm_dialogue();}
else{unblockseats_confirm_submit();}
return false;}
function show_unblocktickets_confirm_dialogue()
{conf_msg=get_unblocktickets_confirm_dailog_msg();width=495;height=295;Dialog.confirm(conf_msg,{windowParameters:{title:"Confirm Unblock Seat(s) Details",className:"alphacube",width:width,height:height},okLabel:"Yes",cancel:function(win){},ok:function(win){unblockseats_confirm_submit();return true;}});WindowCloseKey.init();}
function unblockseats_confirm_submit(){Element.show('form-block');new Ajax.Request('/tickets/confirm_unblocked_seats',{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-block');},parameters:Form.serialize($('confirm_blockseats_form'))});return false;}
function get_unblocktickets_confirm_dailog_msg(){ticket="<b><nobr>Seats:</b> <span class='red bold'>"+$("res-selected-seats-field").value+"</span></nobr>";ticket+="<br/><nobr><b>Total Fare:</b> <span class='red bold'> Rs "+$("reserved-tickets-cost").value+"</span></nobr>";coach_details=$("coach-details-hidden").innerHTML;conf_msg="<br/><b>Ready to UnBlock the seats, Please confirm the seats that are getting unblocked</b><br/>";conf_msg+='<div class="table-class-popup"  style="margin-left:20px;width:420px;"><table align="left" valign="top"><thead align="left" valign="top"><tr><th>Route/Coach</th><th>Ticket</th></tr></thead>';conf_msg+='<tbody align="left" valign="top"><tr><td>'+coach_details+'</td><td>'+ticket+'</td></tr>';conf_msg+='<tr><td colspan="3"><span class="red bold">NOTE: All the requested seats will be unblocked, everyone can now book the tickets for these seats. </span></td></tr></tbody>';conf_msg+='</table></div>';return conf_msg;}
function validateUnBlockSeatsInSearch(ticket_id){block_ticket_id=ticket_id;show_unblocktickets_confirm_dialogueInSearch();return false;}
function show_unblocktickets_confirm_dialogueInSearch(){conf_msg=get_unblocktickets_confirm_dailog_msg_search();width=495;height=255;Dialog.confirm(conf_msg,{windowParameters:{title:"Confirm Unblock Seat(s) Details",className:"alphacube",width:width,height:height},okLabel:"Yes",cancel:function(win){},ok:function(win){unblockseats_confirm_submit_search();return true;}});WindowCloseKey.init();}
function get_unblocktickets_confirm_dailog_msg_search(){coach_details=$("coach-details-hidden").innerHTML;ticket=$("blocked-details-hidden").innerHTML;conf_msg="<br/><b>Ready to UnBlock the seats, Please confirm the seats that are getting unblocked</b><br/>";conf_msg+='<div class="table-class-popup"  style="margin-left:20px;width:420px;"><table align="left" valign="top"><thead align="left" valign="top"><tr><th>Route/Coach</th><th>Ticket</th></tr></thead>';conf_msg+='<tbody align="left" valign="top"><tr><td>'+coach_details+'</td><td>'+ticket+'</td></tr>';conf_msg+='<tr><td colspan="3"><span class="red bold">NOTE: All the requested seats will be unblocked, everyone can now book the tickets for these seats. </span></td></tr></tbody>';conf_msg+='</table></div>';return conf_msg;}
function unblockseats_confirm_submit_search(){Element.show('form-block');new Ajax.Request('/tickets/cancel_blocked_seats/'+block_ticket_id,{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-block');}});return false;}
function validateConfirmCargo(show_confirm){var errorMessage;var focusElem;if($("cargo_bookings_received_lr_number")){if($("cargo_bookings_received_lr_number").value.length<=0){if(!errorMessage){errorMessage="Enter valid Received LR Number";focusElem=$("cargo_bookings_received_lr_number");}else{errorMessage+="<br/>Enter valid Received LR Number";}}
if($("cargo_bookings_reservation_id").value.length<=0){if(!errorMessage){errorMessage="Select Service No.";focusElem=$("cargo_bookings_reservation_id");}else{errorMessage+="<br/>Select Service No.";}}}
if(!validateAmount($("cargo_bookings_value_of_contents").value)){if(!errorMessage){errorMessage="Please enter valid number for Value of Articles";focusElem=$("cargo_bookings_value_of_contents");}else{errorMessage+="<br/>Please enter valid number for Value of Articles";}}
if($("cargo_bookings_from").value==""){if(!errorMessage){errorMessage="Please select Origin";focusElem=$("cargo_bookings_from");}else{errorMessage+="<br/>Please select Origin";}}
if($("cargo_bookings_destination")&&$("cargo_bookings_destination").value==""){if(!errorMessage){errorMessage="Please select Destination";focusElem=$("cargo_bookings_destination");}else{errorMessage+="<br/>Please select Destination";}}
if($("cargo_bookings_to")&&$("cargo_bookings_to").value==""){if(!errorMessage){errorMessage="Please select Destination";focusElem=$("cargo_bookings_to");}else{errorMessage+="<br/>Please select Destination";}}
is_on_account=($("cargo_bookings_on_account_id").value!="");if(!is_on_account){if($("cargo_bookings_sender_name").value.length<=0){if(!errorMessage){errorMessage="Please Enter Sender Name.";focusElem=$("cargo_bookings_sender_name");}else{errorMessage+="<br/>Please Enter Sender Name";}}}
if($("cargo_bookings_consignee_name").value.length<=0){if(!errorMessage){errorMessage="Please Enter Reciever Name.";focusElem=$("cargo_bookings_consignee_name");}else{errorMessage+="<br/>Please Enter Reciever Name";}}
if($("cargo_booking_articles_1_item_details").value.length<=0){if(!errorMessage){errorMessage="Enter the details of contents";focusElem=$("cargo_booking_articles_1_item_details");}else{errorMessage+="<br/>Enter the details of contents";}}
if($("cargo_booking_articles_1_quantity").value.length<=0){if(!errorMessage){errorMessage="Enter the no of articles";focusElem=$("cargo_booking_articles_1_quantity");}else{errorMessage+="<br/>Enter the no of articles";}}
if($("cargo_booking_articles_1_rate").value.length<=0){if(!errorMessage){errorMessage="Enter valid rate for each article";focusElem=$("cargo_booking_articles_1_rate");}else{errorMessage+="<br/>Enter valid rate for each article";}}
if(errorMessage){pw_alert(errorMessage,380,230);focusElem.focus();return false;}
if(show_confirm==true){show_cargos_confirm_dialogue();}
else{cargos_confirm_submit();}
return false;}
function show_cargos_confirm_dialogue()
{conf_msg=get_cargo_confirm_dailog_msg();width=600;height=230;formObj=$("cargo_bookings_sender_name").form;pw_confirm_form_submit(conf_msg,formObj,width,height,"Confirm Cargo Booking Details","cargos_confirm_submit()");}
function get_cargo_confirm_dailog_msg(){conf_msg="<div class=\"size15 center\"> Ready to book the Cargo, Please confirm!</div>";return conf_msg;}
function cargos_confirm_submit(){Element.show('form-indicator-cargo');new Ajax.Request('/cargo_bookings/show_confirm_cargo_booking',{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-cargo')},parameters:Form.serialize($('confirm_cargo_booking_form'))});return false;}
function validateNotifyRoute(){var errorMessage;var focusElem;if($("charts_notify").value.length<=0){pw_alert("Please Enter a message",350,100);return false;}}
function validateNotify()
{var errorMessage;var focusElem;if($("notification_subject").value.length<=0){if(!errorMessage){errorMessage="Enter a valid Subject."
focusElem=$("notification_subject");}}
if($("notification_body").value.length<=0){if(!errorMessage){errorMessage="Enter a valid Message";focusElem=$("notification_body");}else{errorMessage+="<br/>Enter a valid Message";}}
if($('notifications[sent_to]')||!($('notifications[sent_to_tb]').checked||($('notifications[sent_to_travels]')&&$('notifications[sent_to_travels]').checked)||($('notifications[sent_to_ta]')&&$('notifications[sent_to_ta]').checked)||($('notifications[sent_to_passengers]')&&$('notifications[sent_to_passengers]').checked)||($('notifications[sent_to_emergency_contacts]')&&$('notifications[sent_to_emergency_contacts]').checked)))
{if(!errorMessage){errorMessage="Select whom you would like this message <b>Send To</b><br/>";focusElem=$("notifications[sent_to_tb]");}else{errorMessage="Select whom you would like this message <b>Send To</b><br/>"+errorMessage;}}
if(errorMessage){pw_alert(errorMessage,350,100);focusElem.focus();return false;}}
function validateNotifyTBTA()
{var errorMessage;var focusElem;if($("notification_subject").value.length<=0){if(!errorMessage){errorMessage="Enter a valid Subject.";focusElem=$("notification_subject");}}
if($("notification_body").value.length<=0){if(!errorMessage){errorMessage="Enter a valid Message";focusElem=$("notification_body");}else{errorMessage+="<br/>Enter a valid Message";}}
if(!($('routes[notify_tb]').checked||($('notifications[notify_ta]')&&$('routes[notify_ta]').checked)))
{if(!errorMessage){errorMessage="Select whom you would like this message <b>Send To</b><br/>";focusElem=$("routes[notify_tb]");}else{errorMessage="Select whom you would like this message <b>Send To</b><br/>"+errorMessage;}}
if(errorMessage){pw_alert(errorMessage,350,100);focusElem.focus();return false;}}
function validateResetPasswordFromAdmin(){var errorMessage;var focusElem;if($("user_password").value.length<=0){if(!errorMessage){errorMessage="Please enter the new password";focusElem=$("user_password");}else{errorMessage+="<br/>Please enter the new password";}}
if($("user_password_confirmation").value.length<=0){if(!errorMessage){errorMessage="Please enter the new confirmation password";focusElem=$("user_password_confirmation");}else{errorMessage+="<br/>Please enter the new confirmation password";}}
if($("user_password").value!=$("user_password_confirmation").value){if(!errorMessage){errorMessage="Password, Confirm Password should be same";focusElem=$("user_password_confirmation");}}
if(errorMessage){pw_alert(errorMessage,350,100);focusElem.focus();return false;}}
function validateChangePassword(){var errorMessage;var focusElem;if($("users_old_password").value.length<=0){if(!errorMessage){errorMessage="=> Please enter the old password";focusElem=$("users_old_password");}}
if($("user_password").value.length<=0){if(!errorMessage){errorMessage="=> Please enter the new password";focusElem=$("user_password");}else{errorMessage+="\n=> Please enter the new password";}}
if($("user_password_confirmation").value.length<=0){if(!errorMessage){errorMessage="=> Please enter the new confirmation password";focusElem=$("user_password_confirmation");}else{errorMessage+="\n=> Please enter the new confirmation password";}}
if($("user_password").value!=$("user_password_confirmation").value){if(!errorMessage){errorMessage="=> Password, Confirm Password should be same";focusElem=$("user_password_confirmation");}}
if(errorMessage){errorMessage="Please correct the following errors:\n"+errorMessage;alert(errorMessage,350,100);focusElem.focus();return false;}}
function validate_reports(){}
function date_diff(from_date_field,to_date_field){var one_day=1000*60*60*24;from_date=$(from_date_field).value;from_date_arr=from_date.split('/');from_date=new Date(from_date_arr[2],from_date_arr[1],from_date_arr[0]);to_date=$(to_date_field).value;to_date_arr=to_date.split('/');to_date=new Date(to_date_arr[2],to_date_arr[1],to_date_arr[0]);diff=Math.ceil(to_date.getTime()-from_date.getTime())/(one_day);return diff;}
function validate_travel_accounts(){var errorMessage;var focusElem;var diff;diff=date_diff("ta_accounts_from_date","ta_accounts_to_date");if(diff>31){if(!errorMessage){errorMessage="The dates should not be more than 31 days.";focusElem=$("ta_accounts_from_date");}}
if(errorMessage){pw_alert(errorMessage,350,100);focusElem.focus();return false;}}
function tab_selection_eticketing(obj_name)
{cur_selection=$('maintabs').getElementsByClassName('current');for(i=0;i<cur_selection.length;i++)
cur_selection[i].className='action';$(obj_name).className='current';}
function performSelectSeatTTicket(seat_num,seat_type)
{seat_id=seat_num.id;seat_num=seat_num.value;seat_type_costs=new Array();for(i=0;i<6;i++){if($("seat_type_cost_"+i))
seat_type_costs[i]=$("seat_type_cost_"+i).value*1.0;}
sel_seats=$('ticket[selected_seats]').value;if(sel_seats.length>0)
sel_seats+=',';sel_seats+=seat_num;sel_seat_count=sel_seats.split(',').length;if(sel_seat_count>6){alert("You cannot select more than 6 seats for ticket booking.");$(seat_id).checked=false;return false;}
if($("ticket_primary")!=undefined){if($("confirm_tickets_form").ticket_primary.checked==undefined){for(i=$("confirm_tickets_form").ticket_primary.length-1;i>-1;i--){if($("confirm_tickets_form").ticket_primary[i].checked){primary_passenger=$("confirm_tickets_form").ticket_primary[i].value;}}}else if($("confirm_tickets_form").ticket_primary.checked){primary_passenger=$("confirm_tickets_form").ticket_primary.value;}}else{primary_passenger="";}
if(sel_seat_count>0){passenger_names_arr=new Array();passenger_ages_arr=new Array();passenger_titles_arr=new Array();sel_seats_arr=sel_seats.split(",");for(i=0;i<=sel_seats_arr.length-1;i++){seatNum=sel_seats_arr[i];passenger_name="ticket_passenger_name_"+seatNum;passenger_age="ticket_passenger_age_"+seatNum;passenger_title="ticket_title_"+seatNum;if($(passenger_name)!=null){passenger_names_arr[seatNum]=$(passenger_name).value;passenger_ages_arr[seatNum]=$(passenger_age).value;passenger_titles_arr[seatNum]=$(passenger_title).value;}}}
Element.update("multi_passenger_details","");if(sel_seat_count>0){html="<div class='table-class'><table width='100%;'><thead><th>&nbsp;</th><th>Title</th><th>Name</th><th>Age</th><th colspan='2'>Primary</th></thead><tbody>";sel_seats_arr=sel_seats.split(",");for(i=0;i<=sel_seats_arr.length-1;i++){seatNum=sel_seats_arr[i];passenger_name=passenger_names_arr[seatNum];passenger_age=passenger_ages_arr[seatNum];passenger_title=passenger_titles_arr[seatNum];if(passenger_name==undefined){passenger_name="";}
if(passenger_age==undefined){passenger_age="";}
if(passenger_title!=undefined){if((passenger_title=="Mr")||(passenger_title=="")){passenger_title_mr="selected='selected'";passenger_title_miss="";passenger_title_mrs="";}else if(passenger_title=="Miss"){passenger_title="selected='selected'";passenger_title_mr="";passenger_title_miss=passenger_title;passenger_title_mrs="";}else if(passenger_title=="Mrs"){passenger_title="selected='selected'";passenger_title_mr="";passenger_title_miss="";passenger_title_mrs=passenger_title;}else{passenger_title_mr="selected='selected'";passenger_title_miss="";passenger_title_mrs="";}}else{passenger_title_mr="selected='selected'";passenger_title_miss="";passenger_title_mrs="";}
if(primary_passenger==seatNum){primary_pasenger_checked="checked=''";}else{primary_pasenger_checked="";}
if(!primary_passenger||(primary_passenger&&(sel_seats_arr.include!=primary_passenger))){if(seatNum==sel_seats_arr[0]){primary_pasenger_checked="checked=''";}}
title="<td><select id='ticket_title_"+seatNum+"' name='ticket[title]["+seatNum+"]'>"+"<option value='Mr'"+passenger_title_mr+" >Mr</option> <option value='Miss'"+passenger_title_miss+">Miss</option> <option value='Mrs'"+passenger_title_mrs+">Mrs</option> </select></td>"
html+="<tr valign='top' id='passenger-details-"+seatNum+"' name='passenger-details-"+seatNum+"' >"+"<td>"+seatNum+"</td>"+title+"<td><input type='text' size='10' maxlength='30' name='ticket[passenger_name]["+seatNum+"]'"+"id='ticket_passenger_name_"+seatNum+"' value='"+passenger_name+"' onblur='update_primary_passenger(\""+seatNum+"\")'>"+"</td>";html+="<td><input type='text' size='2' maxlength='2' name='ticket[passenger_age]["+seatNum+"]'"+"id='ticket_passenger_age_"+seatNum+"' value='"+passenger_age+"'>"+"</td>";html+="<td> <input type='radio' value="+seatNum+" name='ticket[primary]'"+"id='ticket_primary' onclick=\"primary_passenger_details('"+seatNum+"')\""+primary_pasenger_checked+">"+"</td>";html+="</tr>";}
html+="</tbody></table></div>";new Insertion.Bottom('multi_passenger_details',html);new Effect.Highlight("multi_passenger_details",{});}
total_fare=$('reserved-tickets-cost').value*1;total_fare+=seat_type_costs[seat_type];$('ticket[selected_seats]').value=sel_seats;$('res-selected-seats-field').value=sel_seats;$("reserved-seat-count").value=sel_seat_count;$('reserved-tickets-cost').value=total_fare.toFixed(2);dis_amount=$('ticket_discount_amount')?$('ticket_discount_amount').value:0;service_tax_amount=((($('reserved-tickets-cost').value*1.0-dis_amount)*($('operator_service_tax').value*1.0)/100));if($('reserved-tickets-cost').value*1.0==0.0){service_tax_amount=0.0;}
$('ticket_service_tax_amount').value=service_tax_amount;$('ticket_net_amount').value=$('reserved-tickets-cost').value*1.0-dis_amount+service_tax_amount*1.0;$('balance-total').value=(1.0*$('reserved-tickets-cost').value)-(1.0*$('coupon-amount').value).toFixed(2);}
function performUnSelectSeatTTicket(seat_num,seat_type){seat_type_costs=new Array();for(i=0;i<6;i++){if($("seat_type_cost_"+i))
seat_type_costs[i]=$("seat_type_cost_"+i).value*1.0;}
total_fare=$('reserved-tickets-cost').value*1;total_fare-=seat_type_costs[seat_type];sel_seats=$('ticket[selected_seats]').value;sel_seats_array=sel_seats.split(',');sel_seats_array.splice(sel_seats_array.indexOf(seat_num),1);sel_seats=sel_seats_array.join(',');sel_seat_count=sel_seats_array.size();if($("ticket_primary")!=undefined){if($("confirm_tickets_form").ticket_primary.checked==undefined){for(i=$("confirm_tickets_form").ticket_primary.length-1;i>-1;i--){if($("confirm_tickets_form").ticket_primary[i].checked){primary_passenger=$("confirm_tickets_form").ticket_primary[i].value;}}}else if($("confirm_tickets_form").ticket_primary.checked){primary_passenger=$("confirm_tickets_form").ticket_primary.value;}}else{primary_passenger="";}
if(sel_seat_count>0){passenger_names_arr=new Array();passenger_ages_arr=new Array();passenger_titles_arr=new Array();sel_seats_arr=sel_seats.split(",");for(i=0;i<=sel_seats_arr.length-1;i++){seatNum=sel_seats_arr[i];passenger_name="ticket_passenger_name_"+seatNum;passenger_age="ticket_passenger_age_"+seatNum;passenger_title="ticket_title_"+seatNum;if($(passenger_name)!=null){passenger_names_arr[seatNum]=$(passenger_name).value;passenger_ages_arr[seatNum]=$(passenger_age).value;passenger_titles_arr[seatNum]=$(passenger_title).value;}}}
Element.update("multi_passenger_details","");if(sel_seat_count>0){html="<div class='table-class'><table width='100%;'><thead><th>&nbsp;</th><th>Title</th><th>Name</th><th>Age</th><th colspan='2'>Primary</th></thead><tbody>";sel_seats_arr=sel_seats.split(",");for(i=0;i<=sel_seats_arr.length-1;i++){seatNum=sel_seats_arr[i];passenger_name=passenger_names_arr[seatNum];passenger_age=passenger_ages_arr[seatNum];passenger_title=passenger_titles_arr[seatNum];if(passenger_name==undefined){passenger_name="";}
if(passenger_age==undefined){passenger_age="";}
if(passenger_title!=undefined){if((passenger_title=="Mr")||(passenger_title=="")){passenger_title_mr="selected='selected'";passenger_title_miss="";passenger_title_mrs="";}else if(passenger_title=="Miss"){passenger_title="selected='selected'";passenger_title_mr="";passenger_title_miss=passenger_title;passenger_title_mrs="";}else if(passenger_title=="Mrs"){passenger_title="selected='selected'";passenger_title_mr="";passenger_title_miss="";passenger_title_mrs=passenger_title;}else{passenger_title_mr="selected='selected'";passenger_title_miss="";passenger_title_mrs="";}}else{passenger_title_mr="selected='selected'";passenger_title_miss="";passenger_title_mrs="";}
if(primary_passenger==seatNum){primary_pasenger_checked="checked=''";}else{primary_pasenger_checked="";}
title="<td><select id='ticket_title_"+seatNum+"' name='ticket[title]["+seatNum+"]'>"+"<option value='Mr'"+passenger_title_mr+" >Mr</option> <option value='Miss'"+passenger_title_miss+">Miss</option> <option value='Mrs'"+passenger_title_mrs+">Mrs</option> </select></td>"
html+="<tr valign='top' id='passenger-details-"+seatNum+"' name='passenger-details-"+seatNum+"' >"+"<td>"+seatNum+"</td>"+title+"<td><input type='text' size='15' maxlength='30' name='ticket[passenger_name]["+seatNum+"]'"+"id='ticket_passenger_name_"+seatNum+"' value='"+passenger_name+"' onblur='update_primary_passenger(\""+seatNum+"\")'>"+"</td>";html+="<td><input type='text' size='2' maxlength='2' name='ticket[passenger_age]["+seatNum+"]'"+"id='ticket_passenger_age_"+seatNum+"' value='"+passenger_age+"'>"+"</td>";html+="<td> <input type='radio' value="+seatNum+" name='ticket[primary]'"+"id='ticket_primary' onclick=\"primary_passenger_details('"+seatNum+"')\""+primary_pasenger_checked+">"+"</td>";html+="</tr>";}
html+="</tbody></table></div>";new Insertion.Bottom('multi_passenger_details',html);new Effect.Highlight("multi_passenger_details",{});}
$('ticket[selected_seats]').value=sel_seats;$('res-selected-seats-field').value=sel_seats;$("reserved-seat-count").value=sel_seat_count;$('reserved-tickets-cost').value=total_fare.toFixed(2);service_tax_amount=(($('reserved-tickets-cost').value*1.0*($('operator_service_tax').value*1.0)/100));if($('reserved-tickets-cost').value*1.0==0.0){service_tax_amount=0.0;}
$('ticket_service_tax_amount').value=service_tax_amount;$('ticket_net_amount').value=$('reserved-tickets-cost').value*1.0+service_tax_amount*1.0;$('balance-total').value=((1.0*$('reserved-tickets-cost').value)-(1.0*$('coupon-amount').value)).toFixed(2);}
function validateConfirmTTicket(show_confirm)
{var errorMessage;var focusElem;res_seats_count=$("reserved-seat-count").value*1;selected_seats=$("res-selected-seats-field").value;selected_seats_array=new Array();if(selected_seats.length>0){selected_seats_array=selected_seats.split(",");}
if(res_seats_count==0){pw_alert("<b>Select at least one Seat</b>",350,100);return false;}
if($("ticket_phone_number").value.length!=10||!validatePhoneNumber($("ticket_phone_number").value)){if(!errorMessage){errorMessage="<li>Enter valid Mobile/Phone number.</li>";focusElem=$("ticket_phone_number");}else{errorMessage+="<li>Enter valid phone number.</li>";}}
if($("ticket_email").value.length<=0||!validateEmail($("ticket_email").value)){if(!errorMessage){errorMessage="<li>Enter valid e-mail address. For ex: yourname@gmail.com</li>";focusElem=$("ticket_email");}else{errorMessage+="<li>Enter valid e-mail address. For ex: yourname@gmail.com</li>";}}
if($("ticket_address").value.length<=0){if(!errorMessage){errorMessage="<li>Enter your address. </li>";focusElem=$("ticket_address");}else{errorMessage+="<li>Enter your address. </li>";}}
myOption=-1;if($("confirm_tickets_form").ticket_primary.checked==undefined){for(i=$("confirm_tickets_form").ticket_primary.length-1;i>-1;i--){if($("confirm_tickets_form").ticket_primary[i].checked){myOption=i;i=-1;}}}else if($("confirm_tickets_form").ticket_primary.checked){myOption=0;}
if(myOption==-1){if(!errorMessage){errorMessage="<li>Please select one person as Primary</li>";focusElem=$("ticket_primary");}
else{errorMessage+="<li>Please select one person as Primary</li>";focusElem=$("ticket_primary");}}
for(i=0;i<selected_seats_array.length;i++){seatNum=selected_seats_array[i];passenger_name="ticket_passenger_name_"+seatNum
passenger_age="ticket_passenger_age_"+seatNum
if($(passenger_name).value.length==0){if(!errorMessage){errorMessage="<li>Please enter the passenger name for the seat "+seatNum+"</b></li>";focusElem=$(passenger_name);}
else{errorMessage+="<li>Please enter the passenger name for the seat "+seatNum+"</b></li>";}}
if($(passenger_age).value.length<=0||!validatePhoneNumber($(passenger_age).value)){if(!errorMessage){errorMessage="<li>Please enter the passenger age for the seat "+seatNum+"</b></li>";focusElem=$(passenger_age);}
else{errorMessage+="<li>Please enter the passenger age for the seat "+seatNum+"</b></li>";}}}
if($('searchbus_boarding_at').value==0){if(!errorMessage){errorMessage="<li>Please select one boarding stage</b></li>";focusElem=$("searchbus_boarding_at");}
else{errorMessage+="<li>Please select one boarding stage</b></li>";}}
if(errorMessage){errorMessage="<table><tr><td align=left><b>Please correct the following errors:</b><ul align='left'>"+errorMessage+"</ul></td></tr></table>"
pw_alert(errorMessage,350,200);focusElem.focus();return false;}
tickets_confirm_submit_tticket();return false;}
function tickets_confirm_submit_tticket(){Element.show('form-indicator-ticket');new Ajax.Request('/t_tickets/validate_t_ticket',{asynchronous:true,evalScripts:true,onSuccess:function(request){},parameters:Form.serialize($('confirm_tickets_form'))});return false;}
function ttickets_confirm_submit_popup(conf_msg){tickets_confirmed_submit_tticket(conf_msg);}
function tickets_confirmed_submit_tticket(conf_msg){Element.show('form-indicator-ticket');if(confirm(conf_msg)){new Ajax.Request('/t_tickets/prepare_4_payment',{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-ticket');},parameters:Form.serialize($('confirm_tickets_form'))});}else{Element.hide('form-indicator-ticket');}
return false;}
function tickets_confirm_pre_post_pone(conf_msg){Element.show('form-indicator-coupon');if(confirm(conf_msg)){serialized_data="pnr_number="+$("ticket_pre_post_pone_pnr").value;new Ajax.Request('/tickets/confirm_pre_post_pone_after_search',{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-coupon');},parameters:serialized_data});}else{alert("You have selected CANCEL button. Please give PNR Number again.");Element.hide('form-indicator-coupon');}
return false;}
function validatePrePostPoneTicket()
{var errorMessage;var focusElem;if($("ticket_pre_post_pone_pnr").value.length<=0){if(!errorMessage){errorMessage="<li>Enter valid PNR Number.</li>";focusElem=$("ticket_pre_post_pone_pnr");}}
if(errorMessage){errorMessage="<table><tr><td align=left><b>Please correct the following errors:</b><ul align='left'>"+errorMessage+"</ul></td></tr></table>";pw_alert(errorMessage,350,200);focusElem.focus();return false;}
ticket_pre_post_pone_submit();return false;}
function ticket_pre_post_pone_submit(){Element.show('form-indicator-coupon');serialized_data="pnr_number="+$("ticket_pre_post_pone_pnr").value;new Ajax.Request('/tickets/find_pnr_pre_post_pone',{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-coupon');},parameters:serialized_data});return false;}
function show_pre_postpone(){Element.show('pre_post_pone_div');Element.show('ticket_pre_post_amount_span');Element.hide('has_cash_coupons_span');}
function hide_pre_postpone(){Element.hide('pre_post_pone_div');Element.hide('ticket_pre_post_amount_span');Element.show('has_cash_coupons_span');if($("ticket_net_amount_online_agent")){$("ticket_net_amount_online_agent").value=$("reserved-tickets-cost").value;$('ticket_service_tax_amount').value=(($("reserved-tickets-cost").value*$("operator_service_tax").value/100)*1.0).toFixed(2);$('ticket_net_amount_online_agent').value=($('ticket_net_amount').value*1.0+$('ticket_service_tax_amount').value*1.0).toFixed(2);}
if($("ticket_net_amount")!=null){$("ticket_net_amount").value=$("reserved-tickets-cost").value*1-$("ticket_discount_amount").value*1;$('ticket_service_tax_amount').value=(($("ticket_net_amount").value*$("operator_service_tax").value/100)*1.0).toFixed(2);$('ticket_net_amount').value=($('ticket_net_amount').value*1.0+$('ticket_service_tax_amount').value*1.0).toFixed(2);}
serialized_data="";new Ajax.Request('/tickets/remove_pre_post_pone_in_session',{asynchronous:true,evalScripts:true,onSuccess:function(request){},parameters:serialized_data});return false;}
function validateCashCouponTTicket()
{var errorMessage;var focusElem;if($("cash_coupon_coupon_code").value.length<=0){if(!errorMessage){errorMessage="<li>Enter valid Coupon code.</li>";focusElem=$("cash_coupon_coupon_code");}}
if($("cash_coupon_email").value.length<=0||!validateEmail($("cash_coupon_email").value)){if(!errorMessage){errorMessage="<li>Enter valid e-mail address. For ex: yourname@gmail.com</li>";focusElem=$("cash_coupon_email");}else{errorMessage+="<li>Enter valid e-mail address. For ex: yourname@gmail.com</li>";}}
if(errorMessage){errorMessage="<table><tr><td align=left><b>Please correct the following errors:</b><ul align='left'>"+errorMessage+"</ul></td></tr></table>";pw_alert(errorMessage,350,200);focusElem.focus();return false;}
tticket_cash_coupon_submit();return false;}
function tticket_cash_coupon_submit(){Element.show('form-indicator-coupon');serialized_data="cash_coupon[coupon_code]="+$("cash_coupon_coupon_code").value+"&cash_coupon[email]="+$("cash_coupon_email").value;new Ajax.Request('/t_tickets/find_coupon',{asynchronous:true,evalScripts:true,onSuccess:function(request){Element.hide('form-indicator-coupon');},parameters:serialized_data});return false;}
function show_cash_coupons(){Element.show('cash_coupon_div');Element.show('coupon_values_div');Element.hide('has_cash_coupons_span');}
function hide_cash_coupons(){Element.hide('cash_coupon_div');Element.hide('coupon_values_div');Element.show('has_cash_coupons_span');}
var cal_cur_date;var cal_fld_value;function set_cal_fld_value(field_id){cal_fld_value=Date.parseDate($(field_id).value,BTX_DATE_FORMAT);}
function get_current_date(){dt=new Date();dt=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate());return dt;}
function showCalendar(field_name,dateStatusFuncName){cal_cur_date=get_current_date();calander=Calendar.setup({inputField:field_name,ifFormat:BTX_DATE_FORMAT,button:field_name+'-img',align:'cr',singleClick:true,firstDay:0,showOthers:true,weekNumbers:false,dateStatusFunc:dateStatusFuncName});}
function dateStatusHandler(date,y,m,d)
{if(cal_fld_value.getTime()==date.getTime()){return false;}
else if(date.getTime()<cal_cur_date.getTime()){return true;}else{return false;}}
function dateStatusHandlerForCharts()
{return false;}
function setFocus()
{if(document.forms.length>0){var field=document.forms[0];for(i=0;i<field.length;i++){if((field.elements[i].type=="input")||(field.elements[i].type=="textarea")||(field.elements[i].type.toString().charAt(0)=="s"))
{document.forms[0].elements[i].focus();break;}}}}
function validateDeparture(str){if(!str)
return true;str=str.trim();if(str.length==0){return true;}
str_arr=str.split(":");if(!validateNumeric(str_arr[0])||!validateNumeric(str_arr[1])||!(str_arr[0]>=0&&str_arr[0]<=23)||!(str_arr[1]>=0&&str_arr[1]<=59))
{return false;}
return true;}
function validateDuration(str){if(!str)
return true;str=str.trim();if(str.length==0){return true;}
str_arr=str.split(":");if(!validateNumeric(str_arr[0])||!validateNumeric(str_arr[1])||!(str_arr[0]>=0&&str_arr[0]<=40)||!(str_arr[1]>=0&&str_arr[1]<=59))
{return false;}
return true;}
function validateEmail(emailStr)
{var x,y,z;x=emailStr.indexOf('@');y=emailStr.lastIndexOf('@');z=emailStr.indexOf('.',y);var not_valid=/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;var valid=/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;if(emailStr!="")
{if((!valid.test(emailStr))||(not_valid.test(emailStr)))
{return false;}}
if(emailStr=="")
return false;else
return true;}
function validatePhoneNumber(checkStr){var checkOK="0123456789+-,";for(var i=0;i<checkStr.length;i++){ch=checkStr.charAt(i);for(var j=0;j<checkOK.length;j++){if(ch==checkOK.charAt(j)){break;}}
if(j==checkOK.length){return false;}}
return true;}
function validatePassengerAge(checkStr){var checkOK="0123456789";for(var i=0;i<checkStr.length;i++){ch=checkStr.charAt(i);for(var j=0;j<checkOK.length;j++){if(ch==checkOK.charAt(j)){break;}}
if(j==checkOK.length){return false;}}
return true;}
function validateAmount(checkStr){var checkOK="0123456789.";for(var i=0;i<checkStr.length;i++){ch=checkStr.charAt(i);for(var j=0;j<checkOK.length;j++){if(ch==checkOK.charAt(j)){break;}}
if(j==checkOK.length){return false;}}
return true;}
function validateNumeric(checkStr){var checkOK="0123456789";for(var i=0;i<checkStr.length;i++){ch=checkStr.charAt(i);for(var j=0;j<checkOK.length;j++){if(ch==checkOK.charAt(j)){break;}}
if(j==checkOK.length){return false;}}
return true;}
function validateIndianMobile(mobileNum){var numericOK="0123456789";if(mobileNum==''||mobileNum.length!=10){return false;}
if(mobileNum.charAt(0)!='9'||mobileNum.charAt(1)=='1'){return false;}
for(var i=1;i<mobileNum.length;i++){ch=mobileNum.charAt(i);for(var j=0;j<numericOK.length;j++){if(numericOK.charAt(j)==ch){break;}}
if(j==numericOK.length){return false;}}
return true;}
function pw_alert(errorMessage,width,height){errorMessage="<p align='left' class='red' style='margin:0px auto;'>"+errorMessage+"</p>"
if(!width)width=300;if(!height)height=150;Windows.closeAll();Dialog.alert(errorMessage,{windowParameters:{className:"alphacube",width:width,height:height},okLabel:"Close"});WindowCloseKey.init();}
function pw_ajax_alert(url,width,height,title){if(!width)width=300;if(!height)height=150;if(title)title="<b>"+title+"</b>";Windows.closeAll();win=new Window({url:url,className:"alphacube",title:title,width:width,height:height,destroyOnClose:true});win.showCenter(true);win.setZIndex(450);win.show();WindowCloseKey.init();}
function pw_ajax_alert_action_link(action_link,width,height,title){url=action_link.url.substring(0,action_link.url.indexOf('?'));pw_ajax_alert(url,width,height,title);}
function pw_confirm_form_submit(infoMessage,formObj,width,height,title,ok_func){if(!width)width=300;if(!height)height=150;Form.disable(formObj);Dialog.confirm(infoMessage,{windowParameters:{title:title,className:"alphacube",width:width,height:height},okLabel:"Yes",cancel:function(win){Form.enable(formObj);},ok:function(win){Form.enable(formObj);eval(ok_func);return true;}});WindowCloseKey.init();}
function pw_confirm(infoMessage,width,height,title){if(!width)width=300;if(!height)height=150;Dialog.confirm(infoMessage,{windowParameters:{title:title,className:"alphacube",width:width,height:height},okLabel:"Yes",ok:function(win){window.gFireModalLink();return true;}});WindowCloseKey.init();}
function pw_popup_show_tip(anchName,htmlContent,title,width,height)
{if(!width)width=300;if(!height)height=150;coOrd=getAnchorPosition(anchName);pw_popup_show_message(htmlContent,title,coOrd,width,height);}
function pw_popup_show(url,title,coOrd,width,height)
{if(!width)width=300;if(!height)height=150;Windows.closeAll()
if(coOrd)
new Window({top:coOrd.y,left:coOrd.x,url:url,hideEffect:Element.hide,showEffect:Element.show,className:"alphacube",title:title,width:width,height:height,destroyOnClose:true,zIndex:450}).show();else
new Window({url:url,hideEffect:Element.hide,showEffect:Element.show,className:"alphacube",title:title,width:width,height:height,destroyOnClose:true,zIndex:450}).showCenter(true);WindowCloseKey.init();}
function pw_popup_show_message(htmlContent,title,coOrd,width,height)
{if(!width)width=300;if(!height)height=150;Windows.closeAll()
if(coOrd){win_handle=new Window({top:coOrd.y,left:coOrd.x,hideEffect:Element.hide,showEffect:Element.show,maximizable:true,resizable:false,className:"alphacube",title:title,width:width,height:height,zIndex:450,destroyOnClose:true});win_handle.setHTMLContent(htmlContent);win_handle.setZIndex(450);win_handle.show();}
else{win_handle=new Window({className:"alphacube",hideEffect:Element.hide,showEffect:Element.show,maximizable:true,resizable:false,title:title,width:width,height:height,zIndex:450,destroyOnClose:true});win_handle.setHTMLContent(htmlContent);win_handle.setZIndex(450);win_handle.showCenter(true);}
WindowCloseKey.init();}
var pw_info_timeout;var pw_info_error_message;var pw_info_is_progress;function pw_info(errorMessage,width,height,timeout,is_progress){if(!errorMessage)errorMessage="<span class=\"red bold\"> **** Loading please wait ... **** </span>";if(!width)width=300;if(!height)height=150;if(!timeout)timeout=4;pw_info_error_message=errorMessage;pw_info_timeout=timeout;pw_info_is_progress=is_progress
win=Dialog.info(pw_info_error_message,{windowParameters:{className:"alphacube",width:width,height:height,zIndex:20,destroyOnClose:true,showProgress:true,showModal:true,hideEffect:Element.hide,showEffect:Element.show},okLabel:"close"});win.setZIndex(20);setTimeout(pw_infoTimeout,1000);}
function pw_infoTimeout(){pw_info_timeout--;if(pw_info_timeout>0){if(pw_info_is_progress)
Dialog.setInfoMessage(pw_info_error_message);else
Dialog.setInfoMessage(pw_info_error_message+", it will close <br>in "+pw_info_timeout+" secs");setTimeout(pw_infoTimeout,1000);}
else{Dialog.closeInfo();}}
function close_pw_info(){pw_info_timeout=0;Dialog.closeInfo();}
function close_pw_popups(is_called_from_parent)
{if(is_called_from_parent){Windows.closeAll();}else{parent.Windows.closeAll();}}
function auto_maximize_window(){window.moveTo(0,0);if(document.all){top.window.resizeTo(screen.availWidth,screen.availHeight);}
else if(document.layers||document.getElementById){if(top.window.outerHeight<screen.availHeight||top.window.outerWidth<screen.availWidth){top.window.outerHeight=screen.availHeight;top.window.outerWidth=screen.availWidth;}}}
function windowPopUp(url,winname,width,height,scrollbars){if(!scrollbars)scrollbars=0;if(!width)width=800;if(!height)height=500;leftpos1=248;toppos1=209;win_opt=('toolbar=0,scrollbars='+scrollbars+',location=0,statusbar=0,menubar=0,resizable=1,width='+width+',height='+height+',left = '+leftpos1+',top = '+toppos1);window.open(url,winname,win_opt);}
var arrayOfRolloverClasses=new Array();var arrayOfClickClasses=new Array();var activeRow=false;var activeRowClickArray=new Array();function highlightTableRow()
{var tableObj=this.parentNode;if(tableObj.tagName!='TABLE')tableObj=tableObj.parentNode;if(this!=activeRow){this.setAttribute('origCl',this.className);this.origCl=this.className;}
this.className=arrayOfRolloverClasses[tableObj.id];activeRow=this;}
function clickOnTableRow()
{var tableObj=this.parentNode;if(tableObj.tagName!='TABLE')tableObj=tableObj.parentNode;if(activeRowClickArray[tableObj.id]&&this!=activeRowClickArray[tableObj.id]){activeRowClickArray[tableObj.id].className='';}
this.className=arrayOfClickClasses[tableObj.id];activeRowClickArray[tableObj.id]=this;}
function resetRowStyle()
{var tableObj=this.parentNode;if(tableObj.tagName!='TABLE')tableObj=tableObj.parentNode;if(activeRowClickArray[tableObj.id]&&this==activeRowClickArray[tableObj.id]){this.className=arrayOfClickClasses[tableObj.id];return;}
var origCl=this.getAttribute('origCl');if(!origCl)origCl=this.origCl;this.className=origCl;}
function addTableRolloverEffect(tableId,whichClass,whichClassOnClick)
{arrayOfRolloverClasses[tableId]=whichClass;arrayOfClickClasses[tableId]=whichClassOnClick;var tableObj=document.getElementById(tableId);var tBody=tableObj.getElementsByTagName('TBODY');if(tBody){var rows=tBody[0].getElementsByTagName('TR');}else{var rows=tableObj.getElementsByTagName('TR');}
for(var no=0;no<rows.length;no++){rows[no].onmouseover=highlightTableRow;rows[no].onmouseout=resetRowStyle;if(whichClassOnClick){rows[no].onclick=clickOnTableRow;}}}
var CoachJs={create:function(id){var name;if(name=prompt('Enter a new coach name:')){new Ajax.Updater({},"/admin/coaches/save_coach_as",{parameters:Object.extend({"name":name,"id":id})});}}}