/* START MicrosoftAjax.js */
//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// MicrosoftAjax.js
Function.__typeName="Function";Function.__class=true;Function.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){var d=[];for(var c=0;c<e;c++)d[c]=arguments[c];d[e]=a;return b.apply(this,d)}return b.call(this,a)}};Function.createDelegate=function(a,b){return function(){return b.apply(a,arguments)}};Function.emptyFunction=Function.emptyMethod=function(){};Function._validateParams=function(e,c){var a;a=Function._validateParameterCount(e,c);if(a){a.popStackFrame();return a}for(var b=0;b<e.length;b++){var d=c[Math.min(b,c.length-1)],f=d.name;if(d.parameterArray)f+="["+(b-c.length+1)+"]";a=Function._validateParameter(e[b],d,f);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(e,a){var c=a.length,d=0;for(var b=0;b<a.length;b++)if(a[b].parameterArray)c=Number.MAX_VALUE;else if(!a[b].optional)d++;if(e.length<d||e.length>c){var f=Error.parameterCount();f.popStackFrame();return f}return null};Function._validateParameter=function(c,a,h){var b,g=a.type,l=!!a.integer,k=!!a.domElement,m=!!a.mayBeNull;b=Function._validateParameterType(c,g,l,k,m,h);if(b){b.popStackFrame();return b}var e=a.elementType,f=!!a.elementMayBeNull;if(g===Array&&typeof c!=="undefined"&&c!==null&&(e||!f)){var j=!!a.elementInteger,i=!!a.elementDomElement;for(var d=0;d<c.length;d++){var n=c[d];b=Function._validateParameterType(n,e,j,i,f,h+"["+d+"]");if(b){b.popStackFrame();return b}}}return null};Function._validateParameterType=function(a,c,n,m,k,d){var b;if(typeof a==="undefined")if(k)return null;else{b=Error.argumentUndefined(d);b.popStackFrame();return b}if(a===null)if(k)return null;else{b=Error.argumentNull(d);b.popStackFrame();return b}if(c&&c.__enum){if(typeof a!=="number"){b=Error.argumentType(d,Object.getType(a),c);b.popStackFrame();return b}if(a%1===0){var e=c.prototype;if(!c.__flags||a===0){for(var i in e)if(e[i]===a)return null}else{var l=a;for(var i in e){var f=e[i];if(f===0)continue;if((f&a)===f)l-=f;if(l===0)return null}}}b=Error.argumentOutOfRange(d,a,String.format(Sys.Res.enumInvalidValue,a,c.getName()));b.popStackFrame();return b}if(m){var h;if(typeof a.nodeType!=="number"){var g=a.ownerDocument||a.document||a;if(g!=a){var j=g.defaultView||g.parentWindow;h=j!=a&&!(j.document&&a.document&&j.document===a.document)}else h=typeof g.body==="undefined"}else h=a.nodeType===3;if(h){b=Error.argument(d,Sys.Res.argumentDomElement);b.popStackFrame();return b}}if(c&&!c.isInstanceOfType(a)){b=Error.argumentType(d,Object.getType(a),c);b.popStackFrame();return b}if(c===Number&&n)if(a%1!==0){b=Error.argumentOutOfRange(d,a,Sys.Res.argumentInteger);b.popStackFrame();return b}return null};Error.__typeName="Error";Error.__class=true;Error.create=function(d,b){var a=new Error(d);a.message=d;if(b)for(var c in b)a[c]=b[c];a.popStackFrame();return a};Error.argument=function(a,c){var b="Sys.ArgumentException: "+(c?c:Sys.Res.argument);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentException",paramName:a});d.popStackFrame();return d};Error.argumentNull=function(a,c){var b="Sys.ArgumentNullException: "+(c?c:Sys.Res.argumentNull);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentNullException",paramName:a});d.popStackFrame();return d};Error.argumentOutOfRange=function(c,a,d){var b="Sys.ArgumentOutOfRangeException: "+(d?d:Sys.Res.argumentOutOfRange);if(c)b+="\n"+String.format(Sys.Res.paramName,c);if(typeof a!=="undefined"&&a!==null)b+="\n"+String.format(Sys.Res.actualValue,a);var e=Error.create(b,{name:"Sys.ArgumentOutOfRangeException",paramName:c,actualValue:a});e.popStackFrame();return e};Error.argumentType=function(d,c,b,e){var a="Sys.ArgumentTypeException: ";if(e)a+=e;else if(c&&b)a+=String.format(Sys.Res.argumentTypeWithTypes,c.getName(),b.getName());else a+=Sys.Res.argumentType;if(d)a+="\n"+String.format(Sys.Res.paramName,d);var f=Error.create(a,{name:"Sys.ArgumentTypeException",paramName:d,actualType:c,expectedType:b});f.popStackFrame();return f};Error.argumentUndefined=function(a,c){var b="Sys.ArgumentUndefinedException: "+(c?c:Sys.Res.argumentUndefined);if(a)b+="\n"+String.format(Sys.Res.paramName,a);var d=Error.create(b,{name:"Sys.ArgumentUndefinedException",paramName:a});d.popStackFrame();return d};Error.format=function(a){var c="Sys.FormatException: "+(a?a:Sys.Res.format),b=Error.create(c,{name:"Sys.FormatException"});b.popStackFrame();return b};Error.invalidOperation=function(a){var c="Sys.InvalidOperationException: "+(a?a:Sys.Res.invalidOperation),b=Error.create(c,{name:"Sys.InvalidOperationException"});b.popStackFrame();return b};Error.notImplemented=function(a){var c="Sys.NotImplementedException: "+(a?a:Sys.Res.notImplemented),b=Error.create(c,{name:"Sys.NotImplementedException"});b.popStackFrame();return b};Error.parameterCount=function(a){var c="Sys.ParameterCountException: "+(a?a:Sys.Res.parameterCount),b=Error.create(c,{name:"Sys.ParameterCountException"});b.popStackFrame();return b};Error.prototype.popStackFrame=function(){if(typeof this.stack==="undefined"||this.stack===null||typeof this.fileName==="undefined"||this.fileName===null||typeof this.lineNumber==="undefined"||this.lineNumber===null)return;var a=this.stack.split("\n"),c=a[0],e=this.fileName+":"+this.lineNumber;while(typeof c!=="undefined"&&c!==null&&c.indexOf(e)===-1){a.shift();c=a[0]}var d=a[1];if(typeof d==="undefined"||d===null)return;var b=d.match(/@(.*):(\d+)$/);if(typeof b==="undefined"||b===null)return;this.fileName=b[1];this.lineNumber=parseInt(b[2]);a.shift();this.stack=a.join("\n")};Object.__typeName="Object";Object.__class=true;Object.getType=function(b){var a=b.constructor;if(!a||typeof a!=="function"||!a.__typeName||a.__typeName==="Object")return Object;return a};Object.getTypeName=function(a){return Object.getType(a).getName()};String.__typeName="String";String.__class=true;String.prototype.endsWith=function(a){return this.substr(this.length-a.length)===a};String.prototype.startsWith=function(a){return this.substr(0,a.length)===a};String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};String.prototype.trimEnd=function(){return this.replace(/\s+$/,"")};String.prototype.trimStart=function(){return this.replace(/^\s+/,"")};String.format=function(){return String._toFormattedString(false,arguments)};String.localeFormat=function(){return String._toFormattedString(true,arguments)};String._toFormattedString=function(l,j){var c="",e=j[0];for(var a=0;true;){var f=e.indexOf("{",a),d=e.indexOf("}",a);if(f<0&&d<0){c+=e.slice(a);break}if(d>0&&(d<f||f<0)){c+=e.slice(a,d+1);a=d+2;continue}c+=e.slice(a,f);a=f+1;if(e.charAt(a)==="{"){c+="{";a++;continue}if(d<0)break;var h=e.substring(a,d),g=h.indexOf(":"),k=parseInt(g<0?h:h.substring(0,g),10)+1,i=g<0?"":h.substring(g+1),b=j[k];if(typeof b==="undefined"||b===null)b="";if(b.toFormattedString)c+=b.toFormattedString(i);else if(l&&b.localeFormat)c+=b.localeFormat(i);else if(b.format)c+=b.format(i);else c+=b.toString();a=d+1}return c};Boolean.__typeName="Boolean";Boolean.__class=true;Boolean.parse=function(b){var a=b.trim().toLowerCase();if(a==="false")return false;if(a==="true")return true};Date.__typeName="Date";Date.__class=true;Date._appendPreOrPostMatch=function(e,b){var d=0,a=false;for(var c=0,g=e.length;c<g;c++){var f=e.charAt(c);switch(f){case "'":if(a)b.append("'");else d++;a=false;break;case "\\":if(a)b.append("\\");a=!a;break;default:b.append(f);a=false}}return d};Date._expandFormat=function(a,b){if(!b)b="F";if(b.length===1)switch(b){case "d":return a.ShortDatePattern;case "D":return a.LongDatePattern;case "t":return a.ShortTimePattern;case "T":return a.LongTimePattern;case "F":return a.FullDateTimePattern;case "M":case "m":return a.MonthDayPattern;case "s":return a.SortableDateTimePattern;case "Y":case "y":return a.YearMonthPattern;default:throw Error.format(Sys.Res.formatInvalidString)}return b};Date._expandYear=function(c,a){if(a<100){var b=(new Date).getFullYear();a+=b-b%100;if(a>c.Calendar.TwoDigitYearMax)return a-100}return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)")}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(g,c,h){var e=false;for(var a=1,i=h.length;a<i;a++){var f=h[a];if(f){e=true;var b=Date._parseExact(g,f,c);if(b)return b}}if(!e){var d=c._getDateTimeFormats();for(var a=0,i=d.length;a<i;a++){var b=Date._parseExact(g,d[a],c);if(b)return b}}return null};Date._parseExact=function(s,y,j){s=s.trim();var m=j.dateTimeFormat,v=Date._getParseRegExp(m,y),x=(new RegExp(v.regExp)).exec(s);if(x===null)return null;var w=v.groups,f=null,c=null,h=null,g=null,d=0,n=0,o=0,e=0,k=null,r=false;for(var p=0,z=w.length;p<z;p++){var a=x[p+1];if(a)switch(w[p]){case "dd":case "d":h=parseInt(a,10);if(h<1||h>31)return null;break;case "MMMM":c=j._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=j._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":var c=parseInt(a,10)-1;if(c<0||c>11)return null;break;case "y":case "yy":f=Date._expandYear(m,parseInt(a,10));if(f<0||f>9999)return null;break;case "yyyy":f=parseInt(a,10);if(f<0||f>9999)return null;break;case "h":case "hh":d=parseInt(a,10);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=parseInt(a,10);if(d<0||d>23)return null;break;case "m":case "mm":n=parseInt(a,10);if(n<0||n>59)return null;break;case "s":case "ss":o=parseInt(a,10);if(o<0||o>59)return null;break;case "tt":case "t":var u=a.toUpperCase();r=u===m.PMDesignator.toUpperCase();if(!r&&u!==m.AMDesignator.toUpperCase())return null;break;case "f":e=parseInt(a,10)*100;if(e<0||e>999)return null;break;case "ff":e=parseInt(a,10)*10;if(e<0||e>999)return null;break;case "fff":e=parseInt(a,10);if(e<0||e>999)return null;break;case "dddd":g=j._getDayIndex(a);if(g<0||g>6)return null;break;case "ddd":g=j._getAbbrDayIndex(a);if(g<0||g>6)return null;break;case "zzz":var q=a.split(/:/);if(q.length!==2)return null;var i=parseInt(q[0],10);if(i<-12||i>13)return null;var l=parseInt(q[1],10);if(l<0||l>59)return null;k=i*60+(a.startsWith("-")?-l:l);break;case "z":case "zz":var i=parseInt(a,10);if(i<-12||i>13)return null;k=i*60}}var b=new Date;if(f===null)f=b.getFullYear();if(c===null)c=b.getMonth();if(h===null)h=b.getDate();b.setFullYear(f,c,h);if(b.getDate()!==h)return null;if(g!==null&&b.getDay()!==g)return null;if(r&&d<12)d+=12;b.setHours(d,n,o,e);if(k!==null){var t=b.getMinutes()-(k+b.getTimezoneOffset());b.setHours(b.getHours()+parseInt(t/60,10),t%60)}return b};Date.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Date.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Date.prototype._toFormattedString=function(e,h){if(!e||e.length===0||e==="i")if(h&&h.name.length>0)return this.toLocaleString();else return this.toString();var d=h.dateTimeFormat;e=Date._expandFormat(d,e);var a=new Sys.StringBuilder,b;function c(a){if(a<10)return "0"+a;return a.toString()}function g(a){if(a<10)return "00"+a;if(a<100)return "0"+a;return a.toString()}var j=0,i=Date._getTokenRegExp();for(;true;){var l=i.lastIndex,f=i.exec(e),k=e.slice(l,f?f.index:e.length);j+=Date._appendPreOrPostMatch(k,a);if(!f)break;if(j%2===1){a.append(f[0]);continue}switch(f[0]){case "dddd":a.append(d.DayNames[this.getDay()]);break;case "ddd":a.append(d.AbbreviatedDayNames[this.getDay()]);break;case "dd":a.append(c(this.getDate()));break;case "d":a.append(this.getDate());break;case "MMMM":a.append(d.MonthNames[this.getMonth()]);break;case "MMM":a.append(d.AbbreviatedMonthNames[this.getMonth()]);break;case "MM":a.append(c(this.getMonth()+1));break;case "M":a.append(this.getMonth()+1);break;case "yyyy":a.append(this.getFullYear());break;case "yy":a.append(c(this.getFullYear()%100));break;case "y":a.append(this.getFullYear()%100);break;case "hh":b=this.getHours()%12;if(b===0)b=12;a.append(c(b));break;case "h":b=this.getHours()%12;if(b===0)b=12;a.append(b);break;case "HH":a.append(c(this.getHours()));break;case "H":a.append(this.getHours());break;case "mm":a.append(c(this.getMinutes()));break;case "m":a.append(this.getMinutes());break;case "ss":a.append(c(this.getSeconds()));break;case "s":a.append(this.getSeconds());break;case "tt":a.append(this.getHours()<12?d.AMDesignator:d.PMDesignator);break;case "t":a.append((this.getHours()<12?d.AMDesignator:d.PMDesignator).charAt(0));break;case "f":a.append(g(this.getMilliseconds()).charAt(0));break;case "ff":a.append(g(this.getMilliseconds()).substr(0,2));break;case "fff":a.append(g(this.getMilliseconds()));break;case "z":b=this.getTimezoneOffset()/60;a.append((b<=0?"+":"-")+Math.floor(Math.abs(b)));break;case "zz":b=this.getTimezoneOffset()/60;a.append((b<=0?"+":"-")+c(Math.floor(Math.abs(b))));break;case "zzz":b=this.getTimezoneOffset()/60;a.append((b<=0?"+":"-")+c(Math.floor(Math.abs(b)))+d.TimeSeparator+c(Math.abs(this.getTimezoneOffset()%60)))}}return a.toString()};Number.__typeName="Number";Number.__class=true;Number.parseLocale=function(a){return Number._parse(a,Sys.CultureInfo.CurrentCulture)};Number.parseInvariant=function(a){return Number._parse(a,Sys.CultureInfo.InvariantCulture)};Number._parse=function(b,o){b=b.trim();if(b.match(/^[+-]?infinity$/i))return parseFloat(b);if(b.match(/^0x[a-f0-9]+$/i))return parseInt(b);var a=o.numberFormat,g=Number._parseNumberNegativePattern(b,a,a.NumberNegativePattern),h=g[0],e=g[1];if(h===""&&a.NumberNegativePattern!==1){g=Number._parseNumberNegativePattern(b,a,1);h=g[0];e=g[1]}if(h==="")h="+";var j,d,f=e.indexOf("e");if(f<0)f=e.indexOf("E");if(f<0){d=e;j=null}else{d=e.substr(0,f);j=e.substr(f+1)}var c,k,m=d.indexOf(a.NumberDecimalSeparator);if(m<0){c=d;k=null}else{c=d.substr(0,m);k=d.substr(m+a.NumberDecimalSeparator.length)}c=c.split(a.NumberGroupSeparator).join("");var n=a.NumberGroupSeparator.replace(/\u00A0/g," ");if(a.NumberGroupSeparator!==n)c=c.split(n).join("");var l=h+c;if(k!==null)l+="."+k;if(j!==null){var i=Number._parseNumberNegativePattern(j,a,1);if(i[0]==="")i[0]="+";l+="e"+i[0]+i[1]}if(l.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/))return parseFloat(l);return Number.NaN};Number._parseNumberNegativePattern=function(a,d,e){var b=d.NegativeSign,c=d.PositiveSign;switch(e){case 4:b=" "+b;c=" "+c;case 3:if(a.endsWith(b))return ["-",a.substr(0,a.length-b.length)];else if(a.endsWith(c))return ["+",a.substr(0,a.length-c.length)];break;case 2:b+=" ";c+=" ";case 1:if(a.startsWith(b))return ["-",a.substr(b.length)];else if(a.startsWith(c))return ["+",a.substr(c.length)];break;case 0:if(a.startsWith("(")&&a.endsWith(")"))return ["-",a.substr(1,a.length-2)]}return ["",a]};Number.prototype.format=function(a){return this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Number.prototype.localeFormat=function(a){return this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Number.prototype._toFormattedString=function(d,j){if(!d||d.length===0||d==="i")if(j&&j.name.length>0)return this.toLocaleString();else return this.toString();var o=["n %","n%","%n"],n=["-n %","-n%","-%n"],p=["(n)","-n","- n","n-","n -"],m=["$n","n$","$ n","n $"],l=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function g(a,c,d){for(var b=a.length;b<c;b++)a=d?"0"+a:a+"0";return a}function i(j,i,l,n,p){var h=l[0],k=1,o=Math.pow(10,i),m=Math.round(j*o)/o;if(!isFinite(m))m=j;j=m;var b=j.toString(),a="",c,e=b.split(/e/i);b=e[0];c=e.length>1?parseInt(e[1]):0;e=b.split(".");b=e[0];a=e.length>1?e[1]:"";var q;if(c>0){a=g(a,c,false);b+=a.slice(0,c);a=a.substr(c)}else if(c<0){c=-c;b=g(b,c+1,true);a=b.slice(-c,b.length)+a;b=b.slice(0,-c)}if(i>0){if(a.length>i)a=a.slice(0,i);else a=g(a,i,false);a=p+a}else a="";var d=b.length-1,f="";while(d>=0){if(h===0||h>d)if(f.length>0)return b.slice(0,d+1)+n+f+a;else return b.slice(0,d+1)+a;if(f.length>0)f=b.slice(d-h+1,d+1)+n+f;else f=b.slice(d-h+1,d+1);d-=h;if(k<l.length){h=l[k];k++}}return b.slice(0,d+1)+n+f+a}var a=j.numberFormat,e=Math.abs(this);if(!d)d="D";var b=-1;if(d.length>1)b=parseInt(d.slice(1),10);var c;switch(d.charAt(0)){case "d":case "D":c="n";if(b!==-1)e=g(""+e,b,true);if(this<0)e=-e;break;case "c":case "C":if(this<0)c=l[a.CurrencyNegativePattern];else c=m[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;e=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=p[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;e=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=n[a.PercentNegativePattern];else c=o[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;e=i(Math.abs(this)*100,b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var k=/n|\$|-|%/g,f="";for(;true;){var q=k.lastIndex,h=k.exec(c);f+=c.slice(q,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=e;break;case "$":f+=a.CurrencySymbol;break;case "-":f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol}}return f};RegExp.__typeName="RegExp";RegExp.__class=true;Array.__typeName="Array";Array.__class=true;Array.add=Array.enqueue=function(a,b){a[a.length]=b};Array.addRange=function(a,b){a.push.apply(a,b)};Array.clear=function(a){a.length=0};Array.clone=function(a){if(a.length===1)return [a[0]];else return Array.apply(null,a)};Array.contains=function(a,b){return Array.indexOf(a,b)>=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a<f;a++){var c=b[a];if(typeof c!=="undefined")e.call(d,c,a,b)}};Array.indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b<c;b++)if(typeof d[b]!=="undefined"&&d[b]===e)return b}return -1};Array.insert=function(a,b,c){a.splice(b,0,c)};Array.parse=function(value){if(!value)return [];return eval(value)};Array.remove=function(b,c){var a=Array.indexOf(b,c);if(a>=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};if(!window)this.window=this;window.Type=Function;Type.prototype.callBaseMethod=function(a,d,b){var c=this.getBaseMethod(a,d);if(!b)return c.apply(a);else return c.apply(a,b)};Type.prototype.getBaseMethod=function(d,c){var b=this.getBaseType();if(b){var a=b.prototype[c];return a instanceof Function?a:null}return null};Type.prototype.getBaseType=function(){return typeof this.__baseType==="undefined"?null:this.__baseType};Type.prototype.getInterfaces=function(){var a=[],b=this;while(b){var c=b.__interfaces;if(c)for(var d=0,f=c.length;d<f;d++){var e=c[d];if(!Array.contains(a,e))a[a.length]=e}b=b.__baseType}return a};Type.prototype.getName=function(){return typeof this.__typeName==="undefined"?"":this.__typeName};Type.prototype.implementsInterface=function(d){this.resolveInheritance();var c=d.getName(),a=this.__interfaceCache;if(a){var e=a[c];if(typeof e!=="undefined")return e}else a=this.__interfaceCache={};var b=this;while(b){var f=b.__interfaces;if(f)if(Array.indexOf(f,d)!==-1)return a[c]=true;b=b.__baseType}return a[c]=false};Type.prototype.inheritsFrom=function(b){this.resolveInheritance();var a=this.__baseType;while(a){if(a===b)return true;a=a.__baseType}return false};Type.prototype.initializeBase=function(a,b){this.resolveInheritance();if(this.__baseType)if(!b)this.__baseType.apply(a);else this.__baseType.apply(a,b);return a};Type.prototype.isImplementedBy=function(a){if(typeof a==="undefined"||a===null)return false;var b=Object.getType(a);return !!(b.implementsInterface&&b.implementsInterface(this))};Type.prototype.isInstanceOfType=function(b){if(typeof b==="undefined"||b===null)return false;if(b instanceof this)return true;var a=Object.getType(b);return !!(a===this)||a.inheritsFrom&&a.inheritsFrom(this)||a.implementsInterface&&a.implementsInterface(this)};Type.prototype.registerClass=function(c,b,d){this.prototype.constructor=this;this.__typeName=c;this.__class=true;if(b){this.__baseType=b;this.__basePrototypePending=true}Sys.__upperCaseTypes[c.toUpperCase()]=this;if(d){this.__interfaces=[];for(var a=2,f=arguments.length;a<f;a++){var e=arguments[a];this.__interfaces.push(e)}}return this};Type.prototype.registerInterface=function(a){Sys.__upperCaseTypes[a.toUpperCase()]=this;this.prototype.constructor=this;this.__typeName=a;this.__interface=true;return this};Type.prototype.resolveInheritance=function(){if(this.__basePrototypePending){var b=this.__baseType;b.resolveInheritance();for(var a in b.prototype){var c=b.prototype[a];if(!this.prototype[a])this.prototype[a]=c}delete this.__basePrototypePending}};Type.getRootNamespaces=function(){return Array.clone(Sys.__rootNamespaces)};Type.isClass=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__class};Type.isInterface=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__interface};Type.isNamespace=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__namespace};Type.parse=function(typeName,ns){var fn;if(ns){fn=Sys.__upperCaseTypes[ns.getName().toUpperCase()+"."+typeName.toUpperCase()];return fn||null}if(!typeName)return null;if(!Type.__htClasses)Type.__htClasses={};fn=Type.__htClasses[typeName];if(!fn){fn=eval(typeName);Type.__htClasses[typeName]=fn}return fn};Type.registerNamespace=function(f){var d=window,c=f.split(".");for(var b=0;b<c.length;b++){var e=c[b],a=d[e];if(!a){a=d[e]={__namespace:true,__typeName:c.slice(0,b+1).join(".")};if(b===0)Sys.__rootNamespaces[Sys.__rootNamespaces.length]=a;a.getName=function(){return this.__typeName}}d=a}};window.Sys={__namespace:true,__typeName:"Sys",getName:function(){return "Sys"},__upperCaseTypes:{}};Sys.__rootNamespaces=[Sys];Sys.IDisposable=function(){};Sys.IDisposable.prototype={};Sys.IDisposable.registerInterface("Sys.IDisposable");Sys.StringBuilder=function(a){this._parts=typeof a!=="undefined"&&a!==null&&a!==""?[a.toString()]:[];this._value={};this._len=0};Sys.StringBuilder.prototype={append:function(a){this._parts[this._parts.length]=a},appendLine:function(a){this._parts[this._parts.length]=typeof a==="undefined"||a===null||a===""?"\r\n":a+"\r\n"},clear:function(){this._parts=[];this._value={};this._len=0},isEmpty:function(){if(this._parts.length===0)return true;return this.toString()===""},toString:function(a){a=a||"";var b=this._parts;if(this._len!==b.length){this._value={};this._len=b.length}var d=this._value;if(typeof d[a]==="undefined"){if(a!=="")for(var c=0;c<b.length;)if(typeof b[c]==="undefined"||b[c]===""||b[c]===null)b.splice(c,1);else c++;d[a]=this._parts.join(a)}return d[a]}};Sys.StringBuilder.registerClass("Sys.StringBuilder");if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){var b=["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP"];for(var a=0,c=b.length;a<c;a++)try{return new ActiveXObject(b[a])}catch(d){}return null};Sys.Browser={};Sys.Browser.InternetExplorer={};Sys.Browser.Firefox={};Sys.Browser.Safari={};Sys.Browser.Opera={};Sys.Browser.agent=null;Sys.Browser.hasDebuggerStatement=false;Sys.Browser.name=navigator.appName;Sys.Browser.version=parseFloat(navigator.appVersion);Sys.Browser.documentMode=0;if(navigator.userAgent.indexOf(" MSIE ")>-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);if(Sys.Browser.version>=8)if(document.documentMode>=7)Sys.Browser.documentMode=document.documentMode;Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" AppleWebKit/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/AppleWebKit\/(\d+(\.\d+)?)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Type.registerNamespace("Sys.UI");Sys._Debug=function(){};Sys._Debug.prototype={_appendConsole:function(a){if(typeof Debug!=="undefined"&&Debug.writeln)Debug.writeln(a);if(window.console&&window.console.log)window.console.log(a);if(window.opera)window.opera.postError(a);if(window.debugService)window.debugService.trace(a)},_appendTrace:function(b){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value+=b+"\n"},assert:function(c,a,b){if(!c){a=b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.assert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.format(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value=""},fail:function(message){this._appendConsole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){var c=this._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=c?c:"traceDump";b=b?b:"";if(a===null){this.trace(b+c+": null");return}switch(typeof a){case "undefined":this.trace(b+c+": Undefined");break;case "number":case "string":case "boolean":this.trace(b+c+": "+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){this.trace(b+c+": "+a.toString());break}if(!d)d=[];else if(Array.contains(d,a)){this.trace(b+c+": ...");return}Array.add(d,a);if(a==window||a===document||window.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName==="string"){var k=a.tagName?a.tagName:"DomElement";if(a.id)k+=" - "+a.id;this.trace(b+c+" {"+k+"}")}else{var i=Object.getTypeName(a);this.trace(b+c+(typeof i==="string"?" {"+i+"}":""));if(b===""||f){b+="    ";var e,j,l,g,h;if(Array.isInstanceOfType(a)){j=a.length;for(e=0;e<j;e++)this._traceDump(a[e],"["+e+"]",f,b,d)}else for(g in a){h=a[g];if(!Function.isInstanceOfType(h))this._traceDump(h,g,f,b,d)}}}Array.remove(d,a)}}};Sys._Debug.registerClass("Sys._Debug");Sys.Debug=new Sys._Debug;Sys.Debug.isDebug=false;function Sys$Enum$parse(c,e){var a,b,i;if(e){a=this.__lowerCaseValues;if(!a){this.__lowerCaseValues=a={};var g=this.prototype;for(var f in g)a[f.toLowerCase()]=g[f]}}else a=this.prototype;if(!this.__flags){i=e?c.toLowerCase():c;b=a[i.trim()];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c,this.__typeName));return b}else{var h=(e?c.toLowerCase():c).split(","),j=0;for(var d=h.length-1;d>=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(b,c){Sys.__upperCaseTypes[b.toUpperCase()]=this;for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=b;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=c;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.EventHandlerList=function(){this._list={}};Sys.EventHandlerList.prototype={addHandler:function(b,a){Array.add(this._getEvent(b,true),a)},removeHandler:function(c,b){var a=this._getEvent(c);if(!a)return;Array.remove(a,b)},getHandler:function(b){var a=this._getEvent(b);if(!a||a.length===0)return null;a=Array.clone(a);return function(c,d){for(var b=0,e=a.length;b<e;b++)a[b](c,d)}},_getEvent:function(a,b){if(!this._list[a]){if(!b)return null;this._list[a]=[]}return this._list[a]}};Sys.EventHandlerList.registerClass("Sys.EventHandlerList");Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Sys.INotifyPropertyChange=function(){};Sys.INotifyPropertyChange.prototype={};Sys.INotifyPropertyChange.registerInterface("Sys.INotifyPropertyChange");Sys.PropertyChangedEventArgs=function(a){Sys.PropertyChangedEventArgs.initializeBase(this);this._propertyName=a};Sys.PropertyChangedEventArgs.prototype={get_propertyName:function(){return this._propertyName}};Sys.PropertyChangedEventArgs.registerClass("Sys.PropertyChangedEventArgs",Sys.EventArgs);Sys.INotifyDisposing=function(){};Sys.INotifyDisposing.prototype={};Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing");Sys.Component=function(){if(Sys.Application)Sys.Application.registerDisposableObject(this)};Sys.Component.prototype={_id:null,_initialized:false,_updating:false,get_events:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_id:function(){return this._id},set_id:function(a){this._id=a},get_isInitialized:function(){return this._initialized},get_isUpdating:function(){return this._updating},add_disposing:function(a){this.get_events().addHandler("disposing",a)},remove_disposing:function(a){this.get_events().removeHandler("disposing",a)},add_propertyChanged:function(a){this.get_events().addHandler("propertyChanged",a)},remove_propertyChanged:function(a){this.get_events().removeHandler("propertyChanged",a)},beginUpdate:function(){this._updating=true},dispose:function(){if(this._events){var a=this._events.getHandler("disposing");if(a)a(this,Sys.EventArgs.Empty)}delete this._events;Sys.Application.unregisterDisposableObject(this);Sys.Application.removeComponent(this)},endUpdate:function(){this._updating=false;if(!this._initialized)this.initialize();this.updated()},initialize:function(){this._initialized=true},raisePropertyChanged:function(b){if(!this._events)return;var a=this._events.getHandler("propertyChanged");if(a)a(this,new Sys.PropertyChangedEventArgs(b))},updated:function(){}};Sys.Component.registerClass("Sys.Component",null,Sys.IDisposable,Sys.INotifyPropertyChange,Sys.INotifyDisposing);function Sys$Component$_setProperties(a,i){var d,j=Object.getType(a),e=j===Object||j===Sys.UI.DomElement,h=Sys.Component.isInstanceOfType(a)&&!a.get_isUpdating();if(h)a.beginUpdate();for(var c in i){var b=i[c],f=e?null:a["get_"+c];if(e||typeof f!=="function"){var k=a[c];if(!b||typeof b!=="object"||e&&!k)a[c]=b;else Sys$Component$_setProperties(k,b)}else{var l=a["set_"+c];if(typeof l==="function")l.apply(a,[b]);else if(b instanceof Array){d=f.apply(a);for(var g=0,m=d.length,n=b.length;g<n;g++,m++)d[m]=b[g]}else if(typeof b==="object"&&Object.getType(b)===Object){d=f.apply(a);Sys$Component$_setProperties(d,b)}}}if(h)a.endUpdate()}function Sys$Component$_setReferences(c,b){for(var a in b){var e=c["set_"+a],d=$find(b[a]);e.apply(c,[d])}}var $create=Sys.Component.create=function(h,f,d,c,g){var a=g?new h(g):new h,b=Sys.Application,i=b.get_isCreatingComponents();a.beginUpdate();if(f)Sys$Component$_setProperties(a,f);if(d)for(var e in d)a["add_"+e](d[e]);if(a.get_id())b.addComponent(a);if(i){b._createdComponents[b._createdComponents.length]=a;if(c)b._addComponentToSecondPass(a,c);else a.endUpdate()}else{if(c)Sys$Component$_setReferences(a,c);a.endUpdate()}return a};Sys.UI.MouseButton=function(){throw Error.notImplemented()};Sys.UI.MouseButton.prototype={leftButton:0,middleButton:1,rightButton:2};Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton");Sys.UI.Key=function(){throw Error.notImplemented()};Sys.UI.Key.prototype={backspace:8,tab:9,enter:13,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40,del:127};Sys.UI.Key.registerEnum("Sys.UI.Key");Sys.UI.Point=function(a,b){this.x=a;this.y=b};Sys.UI.Point.registerClass("Sys.UI.Point");Sys.UI.Bounds=function(c,d,b,a){this.x=c;this.y=d;this.height=a;this.width=b};Sys.UI.Bounds.registerClass("Sys.UI.Bounds");Sys.UI.DomEvent=function(e){var a=e,b=this.type=a.type.toLowerCase();this.rawEvent=a;this.altKey=a.altKey;if(typeof a.button!=="undefined")this.button=typeof a.which!=="undefined"?a.button:a.button===4?Sys.UI.MouseButton.middleButton:a.button===2?Sys.UI.MouseButton.rightButton:Sys.UI.MouseButton.leftButton;if(b==="keypress")this.charCode=a.charCode||a.keyCode;else if(a.keyCode&&a.keyCode===46)this.keyCode=127;else this.keyCode=a.keyCode;this.clientX=a.clientX;this.clientY=a.clientY;this.ctrlKey=a.ctrlKey;this.target=a.target?a.target:a.srcElement;if(!b.startsWith("key"))if(typeof a.offsetX!=="undefined"&&typeof a.offsetY!=="undefined"){this.offsetX=a.offsetX;this.offsetY=a.offsetY}else if(this.target&&this.target.nodeType!==3&&typeof a.clientX==="number"){var c=Sys.UI.DomElement.getLocation(this.target),d=Sys.UI.DomElement._getWindow(this.target);this.offsetX=(d.pageXOffset||0)+a.clientX-c.x;this.offsetY=(d.pageYOffset||0)+a.clientY-c.y}this.screenX=a.screenX;this.screenY=a.screenY;this.shiftKey=a.shiftKey};Sys.UI.DomEvent.prototype={preventDefault:function(){if(this.rawEvent.preventDefault)this.rawEvent.preventDefault();else if(window.event)this.rawEvent.returnValue=false},stopPropagation:function(){if(this.rawEvent.stopPropagation)this.rawEvent.stopPropagation();else if(window.event)this.rawEvent.cancelBubble=true}};Sys.UI.DomEvent.registerClass("Sys.UI.DomEvent");var $addHandler=Sys.UI.DomEvent.addHandler=function(a,d,e){if(!a._events)a._events={};var c=a._events[d];if(!c)a._events[d]=c=[];var b;if(a.addEventListener){b=function(b){return e.call(a,new Sys.UI.DomEvent(b))};a.addEventListener(d,b,false)}else if(a.attachEvent){b=function(){var b={};try{b=Sys.UI.DomElement._getWindow(a).event}catch(c){}return e.call(a,new Sys.UI.DomEvent(b))};a.attachEvent("on"+d,b)}c[c.length]={handler:e,browserHandler:b}},$addHandlers=Sys.UI.DomEvent.addHandlers=function(e,d,c){for(var b in d){var a=d[b];if(c)a=Function.createDelegate(c,a);$addHandler(e,b,a)}},$clearHandlers=Sys.UI.DomEvent.clearHandlers=function(a){if(a._events){var e=a._events;for(var b in e){var d=e[b];for(var c=d.length-1;c>=0;c--)$removeHandler(a,b,d[c].handler)}a._events=null}},$removeHandler=Sys.UI.DomEvent.removeHandler=function(a,e,f){var d=null,c=a._events[e];for(var b=0,g=c.length;b<g;b++)if(c[b].handler===f){d=c[b].browserHandler;break}if(a.removeEventListener)a.removeEventListener(e,d,false);else if(a.detachEvent)a.detachEvent("on"+e,d);c.splice(b,1)};Sys.UI.DomElement=function(){};Sys.UI.DomElement.registerClass("Sys.UI.DomElement");Sys.UI.DomElement.addCssClass=function(a,b){if(!Sys.UI.DomElement.containsCssClass(a,b))if(a.className==="")a.className=b;else a.className+=" "+b};Sys.UI.DomElement.containsCssClass=function(b,a){return Array.contains(b.className.split(" "),a)};Sys.UI.DomElement.getBounds=function(a){var b=Sys.UI.DomElement.getLocation(a);return new Sys.UI.Bounds(b.x,b.y,a.offsetWidth||0,a.offsetHeight||0)};var $get=Sys.UI.DomElement.getElementById=function(f,e){if(!e)return document.getElementById(f);if(e.getElementById)return e.getElementById(f);var c=[],d=e.childNodes;for(var b=0;b<d.length;b++){var a=d[b];if(a.nodeType==1)c[c.length]=a}while(c.length){a=c.shift();if(a.id==f)return a;d=a.childNodes;for(b=0;b<d.length;b++){a=d[b];if(a.nodeType==1)c[c.length]=a}}return null};switch(Sys.Browser.agent){case Sys.Browser.InternetExplorer:Sys.UI.DomElement.getLocation=function(a){if(a.self||a.nodeType===9)return new Sys.UI.Point(0,0);var b=a.getBoundingClientRect();if(!b)return new Sys.UI.Point(0,0);var d=a.ownerDocument.documentElement,e=b.left-2+d.scrollLeft,f=b.top-2+d.scrollTop;try{var c=a.ownerDocument.parentWindow.frameElement||null;if(c){var g=c.frameBorder==="0"||c.frameBorder==="no"?2:0;e+=g;f+=g}}catch(h){}return new Sys.UI.Point(e,f)};break;case Sys.Browser.Safari:Sys.UI.DomElement.getLocation=function(c){if(c.window&&c.window===c||c.nodeType===9)return new Sys.UI.Point(0,0);var f=0,g=0,j=null,e=null,b;for(var a=c;a;j=a,(e=b,a=a.offsetParent)){b=Sys.UI.DomElement._getCurrentStyle(a);var d=a.tagName?a.tagName.toUpperCase():null;if((a.offsetLeft||a.offsetTop)&&(d!=="BODY"||(!e||e.position!=="absolute"))){f+=a.offsetLeft;g+=a.offsetTop}}b=Sys.UI.DomElement._getCurrentStyle(c);var h=b?b.position:null;if(!h||h!=="absolute")for(var a=c.parentNode;a;a=a.parentNode){d=a.tagName?a.tagName.toUpperCase():null;if(d!=="BODY"&&d!=="HTML"&&(a.scrollLeft||a.scrollTop)){f-=a.scrollLeft||0;g-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(f,g)};break;case Sys.Browser.Opera:Sys.UI.DomElement.getLocation=function(b){if(b.window&&b.window===b||b.nodeType===9)return new Sys.UI.Point(0,0);var d=0,e=0,i=null;for(var a=b;a;i=a,a=a.offsetParent){var f=a.tagName;d+=a.offsetLeft||0;e+=a.offsetTop||0}var g=b.style.position,c=g&&g!=="static";for(var a=b.parentNode;a;a=a.parentNode){f=a.tagName?a.tagName.toUpperCase():null;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)&&(c&&(a.style.overflow==="scroll"||a.style.overflow==="auto"))){d-=a.scrollLeft||0;e-=a.scrollTop||0}var h=a&&a.style?a.style.position:null;c=c||h&&h!=="static"}return new Sys.UI.Point(d,e)};break;default:Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,i=null,g=null,b=null;for(var a=d;a;i=a,(g=b,a=a.offsetParent)){var c=a.tagName?a.tagName.toUpperCase():null;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!g||g.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var h=b?b.position:null;if(!h||h!=="absolute")for(var a=d.parentNode;a;a=a.parentNode){c=a.tagName?a.tagName.toUpperCase():null;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);if(b){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}}return new Sys.UI.Point(e,f)}}Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement.getVisibilityMode=function(a){return a._visibilityMode===Sys.UI.VisibilityMode.hide?Sys.UI.VisibilityMode.hide:Sys.UI.VisibilityMode.collapse};Sys.UI.DomElement.setVisibilityMode=function(a,b){Sys.UI.DomElement._ensureOldDisplayMode(a);if(a._visibilityMode!==b){a._visibilityMode=b;if(Sys.UI.DomElement.getVisible(a)===false)if(a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none";a._visibilityMode=b}};Sys.UI.DomElement.getVisible=function(b){var a=b.currentStyle||Sys.UI.DomElement._getCurrentStyle(b);if(!a)return true;return a.visibility!=="hidden"&&a.display!=="none"};Sys.UI.DomElement.setVisible=function(a,b){if(b!==Sys.UI.DomElement.getVisible(a)){Sys.UI.DomElement._ensureOldDisplayMode(a);a.style.visibility=b?"visible":"hidden";if(b||a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none"}};Sys.UI.DomElement._ensureOldDisplayMode=function(a){if(!a._oldDisplayMode){var b=a.currentStyle||Sys.UI.DomElement._getCurrentStyle(a);a._oldDisplayMode=b?b.display:null;if(!a._oldDisplayMode||a._oldDisplayMode==="none")switch(a.tagName.toUpperCase()){case "DIV":case "P":case "ADDRESS":case "BLOCKQUOTE":case "BODY":case "COL":case "COLGROUP":case "DD":case "DL":case "DT":case "FIELDSET":case "FORM":case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":case "HR":case "IFRAME":case "LEGEND":case "OL":case "PRE":case "TABLE":case "TD":case "TH":case "TR":case "UL":a._oldDisplayMode="block";break;case "LI":a._oldDisplayMode="list-item";break;default:a._oldDisplayMode="inline"}}};Sys.UI.DomElement._getWindow=function(a){var b=a.ownerDocument||a.document||a;return b.defaultView||b.parentWindow};Sys.UI.DomElement._getCurrentStyle=function(a){if(a.nodeType===3)return null;var c=Sys.UI.DomElement._getWindow(a);if(a.documentElement)a=a.documentElement;var b=c&&a!==c&&c.getComputedStyle?c.getComputedStyle(a,null):a.currentStyle||a.style;if(!b&&Sys.Browser.agent===Sys.Browser.Safari&&a.style){var g=a.style.display,f=a.style.position;a.style.position="absolute";a.style.display="block";var e=c.getComputedStyle(a,null);a.style.display=g;a.style.position=f;b={};for(var d in e)b[d]=e[d];b.display="none"}return b};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys._ScriptLoader=function(){this._scriptsToLoad=null;this._sessions=[];this._scriptLoadedDelegate=Function.createDelegate(this,this._scriptLoadedHandler)};Sys._ScriptLoader.prototype={dispose:function(){this._stopSession();this._loading=false;if(this._events)delete this._events;this._sessions=null;this._currentSession=null;this._scriptLoadedDelegate=null},loadScripts:function(d,b,c,a){var e={allScriptsLoadedCallback:b,scriptLoadFailedCallback:c,scriptLoadTimeoutCallback:a,scriptsToLoad:this._scriptsToLoad,scriptTimeout:d};this._scriptsToLoad=null;this._sessions[this._sessions.length]=e;if(!this._loading)this._nextSession()},notifyScriptLoaded:function(){if(!this._loading)return;this._currentTask._notified++;if(Sys.Browser.agent===Sys.Browser.Safari)if(this._currentTask._notified===1)window.setTimeout(Function.createDelegate(this,function(){this._scriptLoadedHandler(this._currentTask.get_scriptElement(),true)}),0)},queueCustomScriptTag:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,a)},queueScriptBlock:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{text:a})},queueScriptReference:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=[];Array.add(this._scriptsToLoad,{src:a})},_createScriptElement:function(c){var a=document.createElement("script");a.type="text/javascript";for(var b in c)a[b]=c[b];return a},_loadScriptsInternal:function(){var b=this._currentSession;if(b.scriptsToLoad&&b.scriptsToLoad.length>0){var c=Array.dequeue(b.scriptsToLoad),a=this._createScriptElement(c);if(a.text&&Sys.Browser.agent===Sys.Browser.Safari){a.innerHTML=a.text;delete a.text}if(typeof c.src==="string"){this._currentTask=new Sys._ScriptLoaderTask(a,this._scriptLoadedDelegate);this._currentTask.execute()}else{document.getElementsByTagName("head")[0].appendChild(a);Sys._ScriptLoader._clearScript(a);this._loadScriptsInternal()}}else{this._stopSession();var d=b.allScriptsLoadedCallback;if(d)d(this);this._nextSession()}},_nextSession:function(){if(this._sessions.length===0){this._loading=false;this._currentSession=null;return}this._loading=true;var a=Array.dequeue(this._sessions);this._currentSession=a;if(a.scriptTimeout>0)this._timeoutCookie=window.setTimeout(Function.createDelegate(this,this._scriptLoadTimeoutHandler),a.scriptTimeout*1000);this._loadScriptsInternal()},_raiseError:function(a){var c=this._currentSession.scriptLoadFailedCallback,b=this._currentTask.get_scriptElement();this._stopSession();if(c){c(this,b,a);this._nextSession()}else{this._loading=false;throw Sys._ScriptLoader._errorScriptLoadFailed(b.src,a)}},_scriptLoadedHandler:function(a,b){if(b&&this._currentTask._notified)if(this._currentTask._notified>1)this._raiseError(true);else{Array.add(Sys._ScriptLoader._getLoadedScripts(),a.src);this._currentTask.dispose();this._currentTask=null;this._loadScriptsInternal()}else this._raiseError(false)},_scriptLoadTimeoutHandler:function(){var a=this._currentSession.scriptLoadTimeoutCallback;this._stopSession();if(a)a(this);this._nextSession()},_stopSession:function(){if(this._timeoutCookie){window.clearTimeout(this._timeoutCookie);this._timeoutCookie=null}if(this._currentTask){this._currentTask.dispose();this._currentTask=null}}};Sys._ScriptLoader.registerClass("Sys._ScriptLoader",null,Sys.IDisposable);Sys._ScriptLoader.getInstance=function(){var a=Sys._ScriptLoader._activeInstance;if(!a)a=Sys._ScriptLoader._activeInstance=new Sys._ScriptLoader;return a};Sys._ScriptLoader.isScriptLoaded=function(b){var a=document.createElement("script");a.src=b;return Array.contains(Sys._ScriptLoader._getLoadedScripts(),a.src)};Sys._ScriptLoader.readLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){var b=Sys._ScriptLoader._referencedScripts=[],c=document.getElementsByTagName("script");for(i=c.length-1;i>=0;i--){var d=c[i],a=d.src;if(a.length)if(!Array.contains(b,a))Array.add(b,a)}}};Sys._ScriptLoader._clearScript=function(a){if(!Sys.Debug.isDebug)a.parentNode.removeChild(a)};Sys._ScriptLoader._errorScriptLoadFailed=function(b,d){var a;if(d)a=Sys.Res.scriptLoadMultipleCallbacks;else a=Sys.Res.scriptLoadFailed;var e="Sys.ScriptLoadFailedException: "+String.format(a,b),c=Error.create(e,{name:"Sys.ScriptLoadFailedException","scriptUrl":b});c.popStackFrame();return c};Sys._ScriptLoader._getLoadedScripts=function(){if(!Sys._ScriptLoader._referencedScripts){Sys._ScriptLoader._referencedScripts=[];Sys._ScriptLoader.readLoadedScripts()}return Sys._ScriptLoader._referencedScripts};Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a;this._notified=0};Sys._ScriptLoaderTask.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){if(this._disposed)return;this._disposed=true;this._removeScriptElementHandlers();Sys._ScriptLoader._clearScript(this._scriptElement);this._scriptElement=null},execute:function(){this._addScriptElementHandlers();document.getElementsByTagName("head")[0].appendChild(this._scriptElement)},_addScriptElementHandlers:function(){this._scriptLoadDelegate=Function.createDelegate(this,this._scriptLoadHandler);if(Sys.Browser.agent!==Sys.Browser.InternetExplorer){this._scriptElement.readyState="loaded";$addHandler(this._scriptElement,"load",this._scriptLoadDelegate)}else $addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelegate);if(this._scriptElement.addEventListener){this._scriptErrorDelegate=Function.createDelegate(this,this._scriptErrorHandler);this._scriptElement.addEventListener("error",this._scriptErrorDelegate,false)}},_removeScriptElementHandlers:function(){if(this._scriptLoadDelegate){var a=this.get_scriptElement();if(Sys.Browser.agent!==Sys.Browser.InternetExplorer)$removeHandler(a,"load",this._scriptLoadDelegate);else $removeHandler(a,"readystatechange",this._scriptLoadDelegate);if(this._scriptErrorDelegate){this._scriptElement.removeEventListener("error",this._scriptErrorDelegate,false);this._scriptErrorDelegate=null}this._scriptLoadDelegate=null}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(a.readyState!=="loaded"&&a.readyState!=="complete")return;var b=this;window.setTimeout(function(){b._completedCallback(a,true)},0)}};Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDisposable);Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys.HistoryEventArgs=function(a){Sys.HistoryEventArgs.initializeBase(this);this._state=a};Sys.HistoryEventArgs.prototype={get_state:function(){return this._state}};Sys.HistoryEventArgs.registerClass("Sys.HistoryEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._appLoadHandler=null;this._beginRequestHandler=null;this._clientId=null;this._currentEntry="";this._endRequestHandler=null;this._history=null;this._enableHistory=false;this._historyFrame=null;this._historyInitialized=false;this._historyInitialLength=0;this._historyLength=0;this._historyPointIsNew=false;this._ignoreTimer=false;this._initialState=null;this._state={};this._timerCookie=0;this._timerHandler=null;this._uniqueId=null;this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);this._loadHandlerDelegate=Function.createDelegate(this,this._loadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);Sys.UI.DomEvent.addHandler(window,"load",this._loadHandlerDelegate)};Sys._Application.prototype={_creatingComponents:false,_disposing:false,get_isCreatingComponents:function(){return this._creatingComponents},get_stateString:function(){var a=window.location.hash;if(this._isSafari2()){var b=this._getHistory();if(b)a=b[window.history.length-this._historyInitialLength]}if(a.length>0&&a.charAt(0)==="#")a=a.substring(1);if(Sys.Browser.agent===Sys.Browser.Firefox)a=this._serializeState(this._deserializeState(a,true));return a},get_enableHistory:function(){return this._enableHistory},set_enableHistory:function(a){this._enableHistory=a},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_navigate:function(a){this.get_events().addHandler("navigate",a)},remove_navigate:function(a){this.get_events().removeHandler("navigate",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},addHistoryPoint:function(c,f){this._ensureHistory();var b=this._state;for(var a in c){var d=c[a];if(d===null){if(typeof b[a]!=="undefined")delete b[a]}else b[a]=d}var e=this._serializeState(b);this._historyPointIsNew=true;this._setState(e,f);this._raiseNavigate()},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(this._timerCookie){window.clearTimeout(this._timerCookie);delete this._timerCookie}if(this._endRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(this._endRequestHandler);delete this._endRequestHandler}if(this._beginRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(this._beginRequestHandler);delete this._beginRequestHandler}if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,e=b.length;a<e;a++)b[a].dispose();Array.clear(this._disposableObjects);Sys.UI.DomEvent.removeHandler(window,"unload",this._unloadHandlerDelegate);if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}var d=Sys._ScriptLoader.getInstance();if(d)d.dispose();Sys._Application.callBaseMethod(this,"dispose")}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a<d;a++){var c=b[a].component;Sys$Component$_setReferences(c,b[a].references);c.endUpdate()}this._secondPassComponents=[];this._creatingComponents=false},findComponent:function(b,a){return a?Sys.IContainer.isInstanceOfType(a)?a.findComponent(b):a[b]||null:Sys.Application._components[b]||null},getComponents:function(){var a=[],b=this._components;for(var c in b)a[a.length]=b[c];return a},initialize:function(){if(!this._initialized&&!this._initializing){this._initializing=true;window.setTimeout(Function.createDelegate(this,this._doInitialize),0)}},notifyScriptLoaded:function(){var a=Sys._ScriptLoader.getInstance();if(a)a.notifyScriptLoaded()},registerDisposableObject:function(a){if(!this._disposing)this._disposableObjects[this._disposableObjects.length]=a},raiseLoad:function(){var b=this.get_events().getHandler("load"),a=new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents),!this._initializing);if(b)b(this,a);if(window.pageLoad)window.pageLoad(this,a);this._createdComponents=[]},removeComponent:function(b){var a=b.get_id();if(a)delete this._components[a]},setServerId:function(a,b){this._clientId=a;this._uniqueId=b},setServerState:function(a){this._ensureHistory();this._state.__s=a;this._updateHiddenField(a)},unregisterDisposableObject:function(a){if(!this._disposing)Array.remove(this._disposableObjects,a)},_addComponentToSecondPass:function(b,a){this._secondPassComponents[this._secondPassComponents.length]={component:b,references:a}},_deserializeState:function(a,i){var e={};a=a||"";var b=a.indexOf("&&");if(b!==-1&&b+2<a.length){e.__s=a.substr(b+2);a=a.substr(0,b)}var g=a.split("&");for(var f=0,k=g.length;f<k;f++){var d=g[f],c=d.indexOf("=");if(c!==-1&&c+1<d.length){var j=d.substr(0,c),h=d.substr(c+1);e[j]=i?h:decodeURIComponent(h)}}return e},_doInitialize:function(){Sys._Application.callBaseMethod(this,"initialize");var b=this.get_events().getHandler("init");if(b){this.beginCreateComponents();b(this,Sys.EventArgs.Empty);this.endCreateComponents()}if(Sys.WebForms){this._beginRequestHandler=Function.createDelegate(this,this._onPageRequestManagerBeginRequest);Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(this._beginRequestHandler);this._endRequestHandler=Function.createDelegate(this,this._onPageRequestManagerEndRequest);Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._endRequestHandler)}var a=this.get_stateString();if(a!==this._currentEntry)this._navigate(a);this.raiseLoad();this._initializing=false},_enableHistoryInScriptManager:function(){this._enableHistory=true},_ensureHistory:function(){if(!this._historyInitialized&&this._enableHistory){if(Sys.Browser.agent===Sys.Browser.InternetExplorer&&Sys.Browser.documentMode<8){this._historyFrame=document.getElementById("__historyFrame");this._ignoreIFrame=true}if(this._isSafari2()){var a=document.getElementById("__history");this._setHistory([window.location.hash]);this._historyInitialLength=window.history.length}this._timerHandler=Function.createDelegate(this,this._onIdle);this._timerCookie=window.setTimeout(this._timerHandler,100);try{this._initialState=this._deserializeState(this.get_stateString())}catch(b){}this._historyInitialized=true}},_getHistory:function(){var a=document.getElementById("__history");if(!a)return "";var b=a.value;return b?Sys.Serialization.JavaScriptSerializer.deserialize(b,true):""},_isSafari2:function(){return Sys.Browser.agent===Sys.Browser.Safari&&Sys.Browser.version<=419.3},_loadHandler:function(){if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=null}this.initialize()},_navigate:function(c){this._ensureHistory();var b=this._deserializeState(c);if(this._uniqueId){var d=this._state.__s||"",a=b.__s||"";if(a!==d){this._updateHiddenField(a);__doPostBack(this._uniqueId,a);this._state=b;return}}this._setState(c);this._state=b;this._raiseNavigate()},_onIdle:function(){delete this._timerCookie;var a=this.get_stateString();if(a!==this._currentEntry){if(!this._ignoreTimer){this._historyPointIsNew=false;this._navigate(a);this._historyLength=window.history.length}}else this._ignoreTimer=false;this._timerCookie=window.setTimeout(this._timerHandler,100)},_onIFrameLoad:function(a){this._ensureHistory();if(!this._ignoreIFrame){this._historyPointIsNew=false;this._navigate(a)}this._ignoreIFrame=false},_onPageRequestManagerBeginRequest:function(){this._ignoreTimer=true},_onPageRequestManagerEndRequest:function(e,d){var b=d.get_dataItems()[this._clientId],a=document.getElementById("__EVENTTARGET");if(a&&a.value===this._uniqueId)a.value="";if(typeof b!=="undefined"){this.setServerState(b);this._historyPointIsNew=true}else this._ignoreTimer=false;var c=this._serializeState(this._state);if(c!==this._currentEntry){this._ignoreTimer=true;this._setState(c);this._raiseNavigate()}},_raiseNavigate:function(){var c=this.get_events().getHandler("navigate"),b={};for(var a in this._state)if(a!=="__s")b[a]=this._state[a];var d=new Sys.HistoryEventArgs(b);if(c)c(this,d)},_serializeState:function(d){var b=[];for(var a in d){var e=d[a];if(a==="__s")var c=e;else b[b.length]=a+"="+encodeURIComponent(e)}return b.join("&")+(c?"&&"+c:"")},_setHistory:function(b){var a=document.getElementById("__history");if(a)a.value=Sys.Serialization.JavaScriptSerializer.serialize(b)},_setState:function(a,c){a=a||"";if(a!==this._currentEntry){if(window.theForm){var e=window.theForm.action,f=e.indexOf("#");window.theForm.action=(f!==-1?e.substring(0,f):e)+"#"+a}if(this._historyFrame&&this._historyPointIsNew){this._ignoreIFrame=true;this._historyPointIsNew=false;var d=this._historyFrame.contentWindow.document;d.open("javascript:'<html></html>'");d.write("<html><head><title>"+(c||document.title)+"</title><scri"+'pt type="text/javascript">parent.Sys.Application._onIFrameLoad(\''+a+"');</scri"+"pt></head><body></body></html>");d.close()}this._ignoreTimer=false;var h=this.get_stateString();this._currentEntry=a;if(a!==h){if(this._isSafari2()){var g=this._getHistory();g[window.history.length-this._historyInitialLength+1]=a;this._setHistory(g);this._historyLength=window.history.length+1;var b=document.createElement("form");b.method="get";b.action="#"+a;document.appendChild(b);b.submit();document.removeChild(b)}else window.location.hash=a;if(typeof c!=="undefined"&&c!==null)document.title=c}}},_unloadHandler:function(){this.dispose()},_updateHiddenField:function(b){if(this._clientId){var a=document.getElementById(this._clientId);if(a)a.value=b}}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Type.registerNamespace("Sys.Net");Sys.Net.WebRequestExecutor=function(){this._webRequest=null;this._resultObject=null};Sys.Net.WebRequestExecutor.prototype={get_webRequest:function(){return this._webRequest},_set_webRequest:function(a){this._webRequest=a},get_started:function(){throw Error.notImplemented()},get_responseAvailable:function(){throw Error.notImplemented()},get_timedOut:function(){throw Error.notImplemented()},get_aborted:function(){throw Error.notImplemented()},get_responseData:function(){throw Error.notImplemented()},get_statusCode:function(){throw Error.notImplemented()},get_statusText:function(){throw Error.notImplemented()},get_xml:function(){throw Error.notImplemented()},get_object:function(){if(!this._resultObject)this._resultObject=Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData());return this._resultObject},executeRequest:function(){throw Error.notImplemented()},abort:function(){throw Error.notImplemented()},getResponseHeader:function(){throw Error.notImplemented()},getAllResponseHeaders:function(){throw Error.notImplemented()}};Sys.Net.WebRequestExecutor.registerClass("Sys.Net.WebRequestExecutor");Sys.Net.XMLDOM=function(d){if(!window.DOMParser){var c=["Msxml2.DOMDocument.3.0","Msxml2.DOMDocument"];for(var b=0,f=c.length;b<f;b++)try{var a=new ActiveXObject(c[b]);a.async=false;a.loadXML(d);a.setProperty("SelectionLanguage","XPath");return a}catch(g){}}else try{var e=new window.DOMParser;return e.parseFromString(d,"text/xml")}catch(g){}return null};Sys.Net.XMLHttpExecutor=function(){Sys.Net.XMLHttpExecutor.initializeBase(this);var a=this;this._xmlHttpRequest=null;this._webRequest=null;this._responseAvailable=false;this._timedOut=false;this._timer=null;this._aborted=false;this._started=false;this._onReadyStateChange=function(){if(a._xmlHttpRequest.readyState===4){try{if(typeof a._xmlHttpRequest.status==="undefined")return}catch(b){return}a._clearTimer();a._responseAvailable=true;try{a._webRequest.completed(Sys.EventArgs.Empty)}finally{if(a._xmlHttpRequest!=null){a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest=null}}}};this._clearTimer=function(){if(a._timer!=null){window.clearTimeout(a._timer);a._timer=null}};this._onTimeout=function(){if(!a._responseAvailable){a._clearTimer();a._timedOut=true;a._xmlHttpRequest.onreadystatechange=Function.emptyMethod;a._xmlHttpRequest.abort();a._webRequest.completed(Sys.EventArgs.Empty);a._xmlHttpRequest=null}}};Sys.Net.XMLHttpExecutor.prototype={get_timedOut:function(){return this._timedOut},get_started:function(){return this._started},get_responseAvailable:function(){return this._responseAvailable},get_aborted:function(){return this._aborted},executeRequest:function(){this._webRequest=this.get_webRequest();var c=this._webRequest.get_body(),a=this._webRequest.get_headers();this._xmlHttpRequest=new XMLHttpRequest;this._xmlHttpRequest.onreadystatechange=this._onReadyStateChange;var e=this._webRequest.get_httpVerb();this._xmlHttpRequest.open(e,this._webRequest.getResolvedUrl(),true);if(a)for(var b in a){var f=a[b];if(typeof f!=="function")this._xmlHttpRequest.setRequestHeader(b,f)}if(e.toLowerCase()==="post"){if(a===null||!a["Content-Type"])this._xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");if(!c)c=""}var d=this._webRequest.get_timeout();if(d>0)this._timer=window.setTimeout(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.send(c);this._started=true},getResponseHeader:function(b){var a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){var a=0;try{a=this._xmlHttpRequest.status}catch(b){}return a},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var a=this._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=Sys.Net.XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)return null}else if(navigator.userAgent.indexOf("MSIE")!==-1)a.setProperty("SelectionLanguage","XPath");if(a.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName==="parsererror")return null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagName==="parsererror")return null;return a},abort:function(){if(this._aborted||this._responseAvailable||this._timedOut)return;this._aborted=true;this._clearTimer();if(this._xmlHttpRequest&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=Function.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=null;this._webRequest.completed(Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExecutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor);Sys.Net._WebRequestManager=function(){this._defaultTimeout=0;this._defaultExecutorType="Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManager.prototype={add_invokingRequest:function(a){this._get_eventHandlerList().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){this._get_eventHandlerList().removeHandler("invokingRequest",a)},add_completedRequest:function(a){this._get_eventHandlerList().addHandler("completedRequest",a)},remove_completedRequest:function(a){this._get_eventHandlerList().removeHandler("completedRequest",a)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_defaultTimeout:function(){return this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(webRequest){var executor=webRequest.get_executor();if(!executor){var failed=false;try{var executorType=eval(this._defaultExecutorType);executor=new executorType}catch(a){failed=true}webRequest.set_executor(executor)}if(executor.get_aborted())return;var evArgs=new Sys.Net.NetworkRequestEventArgs(webRequest),handler=this._get_eventHandlerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);if(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestManager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};Sys.Net.NetworkRequestEventArgs.prototype={get_webRequest:function(){return this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=function(){this._url="";this._headers={};this._body=null;this._userContext=null;this._httpVerb=null;this._executor=null;this._invokeCalled=false;this._timeout=0};Sys.Net.WebRequest.prototype={add_completed:function(a){this._get_eventHandlerList().addHandler("completed",a)},remove_completed:function(a){this._get_eventHandlerList().removeHandler("completed",a)},completed:function(b){var a=Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");if(a)a(this._executor,b);a=this._get_eventHandlerList().getHandler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){if(this._httpVerb===null){if(this._body===null)return "GET";return "POST"}return this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor},set_executor:function(a){this._executor=a;this._executor._set_webRequest(this)},get_timeout:function(){if(this._timeout===0)return Sys.Net.WebRequestManager.get_defaultTimeout();return this._timeout},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this);this._invokeCalled=true}};Sys.Net.WebRequest._resolveUrl=function(b,a){if(b&&b.indexOf("://")!==-1)return b;if(!a||a.length===0){var d=document.getElementsByTagName("base")[0];if(d&&d.href&&d.href.length>0)a=d.href;else a=document.URL}var c=a.indexOf("?");if(c!==-1)a=a.substr(0,c);c=a.indexOf("#");if(c!==-1)a=a.substr(0,c);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||b.length===0)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=function(d,b){if(!b)b=encodeURIComponent;var a=new Sys.StringBuilder,f=0;for(var c in d){var e=d[c];if(typeof e==="function")continue;var g=Sys.Serialization.JavaScriptSerializer.serialize(e);if(f!==0)a.append("&");a.append(c);a.append("=");a.append(b(g));f++}return a.toString()};Sys.Net.WebRequest._createUrl=function(a,b){if(!b)return a;var d=Sys.Net.WebRequest._createQueryString(b);if(d.length>0){var c="?";if(a&&a.indexOf("?")!==-1)c="&";return a+c+d}else return a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys.Net.WebServiceProxy=function(){};Sys.Net.WebServiceProxy.prototype={get_timeout:function(){return this._timeout},set_timeout:function(a){if(a<0)throw Error.argumentOutOfRange("value",a,Sys.Res.invalidTimeout);this._timeout=a},get_defaultUserContext:function(){return this._userContext},set_defaultUserContext:function(a){this._userContext=a},get_defaultSucceededCallback:function(){return this._succeeded},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultFailedCallback:function(){return this._failed},set_defaultFailedCallback:function(a){this._failed=a},get_path:function(){return this._path},set_path:function(a){this._path=a},_invoke:function(d,e,g,f,c,b,a){if(c===null||typeof c==="undefined")c=this.get_defaultSucceededCallback();if(b===null||typeof b==="undefined")b=this.get_defaultFailedCallback();if(a===null||typeof a==="undefined")a=this.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout())}};Sys.Net.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebServiceProxy.invoke=function(k,a,j,d,i,c,f,h){var b=new Sys.Net.WebRequest;b.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!d)d={};var g=d;if(!j||!g)g={};b.set_url(Sys.Net.WebRequest._createUrl(k+"/"+encodeURIComponent(a),g));var e=null;if(!j){e=Sys.Serialization.JavaScriptSerializer.serialize(d);if(e==="{}")e=""}b.set_body(e);b.add_completed(l);if(h&&h>0)b.set_timeout(h);b.invoke();function l(d){if(d.get_responseAvailable()){var g=d.get_statusCode(),b=null;try{var e=d.getResponseHeader("Content-Type");if(e.startsWith("application/json"))b=d.get_object();else if(e.startsWith("text/xml"))b=d.get_xml();else b=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),h=k==="true";if(h){if(b)b=new Sys.Net.WebServiceError(false,b.Message,b.StackTrace,b.ExceptionType)}else if(e.startsWith("application/json"))b=b.d;if(g<200||g>=300||h){if(c){if(!b||!h)b=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a),"","");b._statusCode=g;c(b,f,a)}}else if(i)i(b,f,a)}else{var j;if(d.get_timedOut())j=String.format(Sys.Res.webServiceTimedOut,a);else j=String.format(Sys.Res.webServiceFailedNoMsg,a);if(c)c(new Sys.Net.WebServiceError(d.get_timedOut(),j,"",""),f,a)}}return b};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys.Net.WebServiceError=function(c,d,b,a){this._timedOut=c;this._message=d;this._stackTrace=b;this._exceptionType=a;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace},get_exceptionType:function(){return this._exceptionType}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError");Type.registerNamespace("Sys.Services");Sys.Services._ProfileService=function(){Sys.Services._ProfileService.initializeBase(this);this.properties={}};Sys.Services._ProfileService.DefaultWebServicePath="";Sys.Services._ProfileService.prototype={_defaultLoadCompletedCallback:null,_defaultSaveCompletedCallback:null,_path:"",_timeout:0,get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_defaultSaveCompletedCallback:function(){return this._defaultSaveCompletedCallback},set_defaultSaveCompletedCallback:function(a){this._defaultSaveCompletedCallback=a},get_path:function(){return this._path||""},load:function(c,d,e,f){var b,a;if(!c){a="GetAllPropertiesForCurrentUser";b={authenticatedUserOnly:false}}else{a="GetPropertiesForCurrentUser";b={properties:this._clonePropertyNames(c),authenticatedUserOnly:false}}this._invoke(this._get_path(),a,false,b,Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[d,e,f])},save:function(d,b,c,e){var a=this._flattenProperties(d,this.properties);this._invoke(this._get_path(),"SetPropertiesForCurrentUser",false,{values:a.value,authenticatedUserOnly:false},Function.createDelegate(this,this._onSaveComplete),Function.createDelegate(this,this._onSaveFailed),[b,c,e,a.count])},_clonePropertyNames:function(e){var c=[],d={};for(var b=0;b<e.length;b++){var a=e[b];if(!d[a]){Array.add(c,a);d[a]=true}}return c},_flattenProperties:function(a,i,j){var b={},e,d,g=0;if(a&&a.length===0)return {value:b,count:0};for(var c in i){e=i[c];d=j?j+"."+c:c;if(Sys.Services.ProfileGroup.isInstanceOfType(e)){var k=this._flattenProperties(a,e,d),h=k.value;g+=k.count;for(var f in h){var l=h[f];b[f]=l}}else if(!a||Array.indexOf(a,d)!==-1){b[d]=e;g++}}return {value:b,count:g}},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._ProfileService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoadComplete:function(a,e,g){if(typeof a!=="object")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,g,"Object"));var c=this._unflattenProperties(a);for(var b in c)this.properties[b]=c[b];var d=e[0]||this.get_defaultLoadCompletedCallback()||this.get_defaultSucceededCallback();if(d){var f=e[2]||this.get_defaultUserContext();d(a.length,f,"Sys.Services.ProfileService.load")}},_onLoadFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.ProfileService.load")}},_onSaveComplete:function(a,b,f){var c=b[3];if(a!==null)if(a instanceof Array)c-=a.length;else if(typeof a==="number")c=a;else throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Array"));var d=b[0]||this.get_defaultSaveCompletedCallback()||this.get_defaultSucceededCallback();if(d){var e=b[2]||this.get_defaultUserContext();d(c,e,"Sys.Services.ProfileService.save")}},_onSaveFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.ProfileService.save")}},_unflattenProperties:function(e){var c={},d,f,h=0;for(var a in e){h++;f=e[a];d=a.indexOf(".");if(d!==-1){var g=a.substr(0,d);a=a.substr(d+1);var b=c[g];if(!b||!Sys.Services.ProfileGroup.isInstanceOfType(b)){b=new Sys.Services.ProfileGroup;c[g]=b}b[a]=f}else c[a]=f}e.length=h;return c}};Sys.Services._ProfileService.registerClass("Sys.Services._ProfileService",Sys.Net.WebServiceProxy);Sys.Services.ProfileService=new Sys.Services._ProfileService;Sys.Services.ProfileGroup=function(a){if(a)for(var b in a)this[b]=a[b]};Sys.Services.ProfileGroup.registerClass("Sys.Services.ProfileGroup");Sys.Services._AuthenticationService=function(){Sys.Services._AuthenticationService.initializeBase(this)};Sys.Services._AuthenticationService.DefaultWebServicePath="";Sys.Services._AuthenticationService.prototype={_defaultLoginCompletedCallback:null,_defaultLogoutCompletedCallback:null,_path:"",_timeout:0,_authenticated:false,get_defaultLoginCompletedCallback:function(){return this._defaultLoginCompletedCallback},set_defaultLoginCompletedCallback:function(a){this._defaultLoginCompletedCallback=a},get_defaultLogoutCompletedCallback:function(){return this._defaultLogoutCompletedCallback},set_defaultLogoutCompletedCallback:function(a){this._defaultLogoutCompletedCallback=a},get_isLoggedIn:function(){return this._authenticated},get_path:function(){return this._path||""},login:function(c,b,a,h,f,d,e,g){this._invoke(this._get_path(),"Login",false,{userName:c,password:b,createPersistentCookie:a},Function.createDelegate(this,this._onLoginComplete),Function.createDelegate(this,this._onLoginFailed),[c,b,a,h,f,d,e,g])},logout:function(c,a,b,d){this._invoke(this._get_path(),"Logout",false,{},Function.createDelegate(this,this._onLogoutComplete),Function.createDelegate(this,this._onLogoutFailed),[c,a,b,d])},_get_path:function(){var a=this.get_path();if(!a.length)a=Sys.Services._AuthenticationService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_onLoginComplete:function(e,c,f){if(typeof e!=="boolean")throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Boolean"));var b=c[4],d=c[7]||this.get_defaultUserContext(),a=c[5]||this.get_defaultLoginCompletedCallback()||this.get_defaultSucceededCallback();if(e){this._authenticated=true;if(a)a(true,d,"Sys.Services.AuthenticationService.login");if(typeof b!=="undefined"&&b!==null)window.location.href=b}else if(a)a(false,d,"Sys.Services.AuthenticationService.login")},_onLoginFailed:function(d,b){var a=b[6]||this.get_defaultFailedCallback();if(a){var c=b[7]||this.get_defaultUserContext();a(d,c,"Sys.Services.AuthenticationService.login")}},_onLogoutComplete:function(f,a,e){if(f!==null)throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,e,"null"));var b=a[0],d=a[3]||this.get_defaultUserContext(),c=a[1]||this.get_defaultLogoutCompletedCallback()||this.get_defaultSucceededCallback();this._authenticated=false;if(c)c(null,d,"Sys.Services.AuthenticationService.logout");if(!b)window.location.reload();else window.location.href=b},_onLogoutFailed:function(c,b){var a=b[2]||this.get_defaultFailedCallback();if(a)a(c,b[3],"Sys.Services.AuthenticationService.logout")},_setAuthenticated:function(a){this._authenticated=a}};Sys.Services._AuthenticationService.registerClass("Sys.Services._AuthenticationService",Sys.Net.WebServiceProxy);Sys.Services.AuthenticationService=new Sys.Services._AuthenticationService;Sys.Services._RoleService=function(){Sys.Services._RoleService.initializeBase(this);this._roles=[]};Sys.Services._RoleService.DefaultWebServicePath="";Sys.Services._RoleService.prototype={_defaultLoadCompletedCallback:null,_rolesIndex:null,_timeout:0,_path:"",get_defaultLoadCompletedCallback:function(){return this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:function(a){this._defaultLoadCompletedCallback=a},get_path:function(){return this._path||""},get_roles:function(){return Array.clone(this._roles)},isUserInRole:function(a){var b=this._get_rolesIndex()[a.trim().toLowerCase()];return !!b},load:function(a,b,c){Sys.Net.WebServiceProxy.invoke(this._get_path(),"GetRolesForCurrentUser",false,{},Function.createDelegate(this,this._onLoadComplete),Function.createDelegate(this,this._onLoadFailed),[a,b,c],this.get_timeout())},_get_path:function(){var a=this.get_path();if(!a||!a.length)a=Sys.Services._RoleService.DefaultWebServicePath;if(!a||!a.length)throw Error.invalidOperation(Sys.Res.servicePathNotSet);return a},_get_rolesIndex:function(){if(!this._rolesIndex){var b={};for(var a=0;a<this._roles.length;a++)b[this._roles[a].toLowerCase()]=true;this._rolesIndex=b}return this._rolesIndex},_onLoadComplete:function(a,c,f){if(a&&!(a instanceof Array))throw Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,f,"Array"));this._roles=a;this._rolesIndex=null;var b=c[0]||this.get_defaultLoadCompletedCallback()||this.get_defaultSucceededCallback();if(b){var e=c[2]||this.get_defaultUserContext(),d=Array.clone(a);b(d,e,"Sys.Services.RoleService.load")}},_onLoadFailed:function(d,b){var a=b[1]||this.get_defaultFailedCallback();if(a){var c=b[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.RoleService.load")}}};Sys.Services._RoleService.registerClass("Sys.Services._RoleService",Sys.Net.WebServiceProxy);Sys.Services.RoleService=new Sys.Services._RoleService;Type.registerNamespace("Sys.Serialization");Sys.Serialization.JavaScriptSerializer=function(){};Sys.Serialization.JavaScriptSerializer.registerClass("Sys.Serialization.JavaScriptSerializer");Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs=[];Sys.Serialization.JavaScriptSerializer._charsToEscape=[];Sys.Serialization.JavaScriptSerializer._dateRegEx=new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"',"g");Sys.Serialization.JavaScriptSerializer._escapeChars={};Sys.Serialization.JavaScriptSerializer._escapeRegEx=new RegExp('["\\\\\\x00-\\x1F]',"i");Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal=new RegExp('["\\\\\\x00-\\x1F]',"g");Sys.Serialization.JavaScriptSerializer._jsonRegEx=new RegExp("[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]","g");Sys.Serialization.JavaScriptSerializer._jsonStringRegEx=new RegExp('"(\\\\.|[^"\\\\])*"',"g");Sys.Serialization.JavaScriptSerializer._serverTypeFieldName="__type";Sys.Serialization.JavaScriptSerializer._init=function(){var c=["\\u0000","\\u0001","\\u0002","\\u0003","\\u0004","\\u0005","\\u0006","\\u0007","\\b","\\t","\\n","\\u000b","\\f","\\r","\\u000e","\\u000f","\\u0010","\\u0011","\\u0012","\\u0013","\\u0014","\\u0015","\\u0016","\\u0017","\\u0018","\\u0019","\\u001a","\\u001b","\\u001c","\\u001d","\\u001e","\\u001f"];Sys.Serialization.JavaScriptSerializer._charsToEscape[0]="\\";Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs["\\"]=new RegExp("\\\\","g");Sys.Serialization.JavaScriptSerializer._escapeChars["\\"]="\\\\";Sys.Serialization.JavaScriptSerializer._charsToEscape[1]='"';Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs['"']=new RegExp('"',"g");Sys.Serialization.JavaScriptSerializer._escapeChars['"']='\\"';for(var a=0;a<32;a++){var b=String.fromCharCode(a);Sys.Serialization.JavaScriptSerializer._charsToEscape[a+2]=b;Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[b]=new RegExp(b,"g");Sys.Serialization.JavaScriptSerializer._escapeChars[b]=c[a]}};Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder=function(b,a){a.append(b.toString())};Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder=function(a,b){if(isFinite(a))b.append(String(a));else throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers)};Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder=function(a,c){c.append('"');if(Sys.Serialization.JavaScriptSerializer._escapeRegEx.test(a)){if(Sys.Serialization.JavaScriptSerializer._charsToEscape.length===0)Sys.Serialization.JavaScriptSerializer._init();if(a.length<128)a=a.replace(Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal,function(a){return Sys.Serialization.JavaScriptSerializer._escapeChars[a]});else for(var d=0;d<34;d++){var b=Sys.Serialization.JavaScriptSerializer._charsToEscape[d];if(a.indexOf(b)!==-1)if(Sys.Browser.agent===Sys.Browser.Opera||Sys.Browser.agent===Sys.Browser.FireFox)a=a.split(b).join(Sys.Serialization.JavaScriptSerializer._escapeChars[b]);else a=a.replace(Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[b],Sys.Serialization.JavaScriptSerializer._escapeChars[b])}}c.append(a);c.append('"')};Sys.Serialization.JavaScriptSerializer._serializeWithBuilder=function(b,a,i,g){var c;switch(typeof b){case "object":if(b)if(Number.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(b,a);else if(Boolean.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(b,a);else if(String.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(b,a);else if(Array.isInstanceOfType(b)){a.append("[");for(c=0;c<b.length;++c){if(c>0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a,false,g)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var d=[],f=0;for(var e in b){if(e.startsWith("$"))continue;if(e===Sys.Serialization.JavaScriptSerializer._serverTypeFieldName&&f!==0){d[f++]=d[0];d[0]=e}else d[f++]=e}if(i)d.sort();a.append("{");var j=false;for(c=0;c<f;c++){var h=b[d[c]];if(typeof h!=="undefined"&&typeof h!=="function"){if(j)a.append(",");else j=true;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(d[c],a,i,g);a.append(":");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(h,a,i,g)}}a.append("}")}else a.append("null");break;case "number":Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(b,a);break;case "string":Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(b,a);break;case "boolean":Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(b,a);break;default:a.append("null")}};Sys.Serialization.JavaScriptSerializer.serialize=function(b){var a=new Sys.StringBuilder;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b,a,false);return a.toString()};Sys.Serialization.JavaScriptSerializer.deserialize=function(data,secure){if(data.length===0)throw Error.argument("data",Sys.Res.cannotDeserializeEmptyString);try{var exp=data.replace(Sys.Serialization.JavaScriptSerializer._dateRegEx,"$1new Date($2)");if(secure&&Sys.Serialization.JavaScriptSerializer._jsonRegEx.test(exp.replace(Sys.Serialization.JavaScriptSerializer._jsonStringRegEx,"")))throw null;return eval("("+exp+")")}catch(a){throw Error.argument("data",Sys.Res.cannotDeserializeInvalidJson)}};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getMonthIndex:function(a){if(!this._upperMonths)this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);return Array.indexOf(this._upperMonths,this._toUpper(a))},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths)this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);return Array.indexOf(this._upperAbbrMonths,this._toUpper(a))},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a<d;a++)b[a]=this._toUpper(c[a]);return b},_toUpper:function(a){return a.split("\u00a0").join(" ").toUpperCase()}};Sys.CultureInfo._parse=function(b){var a=Sys.Serialization.JavaScriptSerializer.deserialize(b);return new Sys.CultureInfo(a.name,a.numberFormat,a.dateTimeFormat)};Sys.CultureInfo.registerClass("Sys.CultureInfo");Sys.CultureInfo.InvariantCulture=Sys.CultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00a4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}');if(typeof __cultureInfo==="undefined")var __cultureInfo='{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]}}';Sys.CultureInfo.CurrentCulture=Sys.CultureInfo._parse(__cultureInfo);delete __cultureInfo;Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!=-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");if(this._element){var a=this.get_name();if(a)this._element[a]=null;Array.remove(this._element._behaviors,this);delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b<f;b++)if(e.isInstanceOfType(a[b]))c[c.length]=a[b];return c};Sys.UI.VisibilityMode=function(){throw Error.notImplemented()};Sys.UI.VisibilityMode.prototype={hide:0,collapse:1};Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");Sys.UI.Control=function(a){Sys.UI.Control.initializeBase(this);this._element=a;a.control=this};Sys.UI.Control.prototype={_parent:null,_visibilityMode:Sys.UI.VisibilityMode.hide,get_element:function(){return this._element},get_id:function(){if(!this._element)return "";return this._element.id},set_id:function(){throw Error.invalidOperation(Sys.Res.cantSetId)},get_parent:function(){if(this._parent)return this._parent;if(!this._element)return null;var a=this._element.parentNode;while(a){if(a.control)return a.control;a=a.parentNode}return null},set_parent:function(a){this._parent=a},get_visibilityMode:function(){return Sys.UI.DomElement.getVisibilityMode(this._element)},set_visibilityMode:function(a){Sys.UI.DomElement.setVisibilityMode(this._element,a)},get_visible:function(){return Sys.UI.DomElement.getVisible(this._element)},set_visible:function(a){Sys.UI.DomElement.setVisible(this._element,a)},addCssClass:function(a){Sys.UI.DomElement.addCssClass(this._element,a)},dispose:function(){Sys.UI.Control.callBaseMethod(this,"dispose");if(this._element){this._element.control=undefined;delete this._element}if(this._parent)delete this._parent},onBubbleEvent:function(){return false},raiseBubbleEvent:function(b,c){var a=this.get_parent();while(a){if(a.onBubbleEvent(b,c))return;a=a.get_parent()}},removeCssClass:function(a){Sys.UI.DomElement.removeCssClass(this._element,a)},toggleCssClass:function(a){Sys.UI.DomElement.toggleCssClass(this._element,a)}};Sys.UI.Control.registerClass("Sys.UI.Control",Sys.Component);
Type.registerNamespace('Sys');Sys.Res={
"argumentInteger":"Value must be an integer.","scriptLoadMultipleCallbacks":"The script \u0027{0}\u0027 contains multiple calls to Sys.Application.notifyScriptLoaded(). Only one is allowed.","invokeCalledTwice":"Cannot call invoke more than once.","webServiceFailed":"The server method \u0027{0}\u0027 failed with the following error: {1}","webServiceInvalidJsonWrapper":"The server method \u0027{0}\u0027 returned invalid data. The \u0027d\u0027 property is missing from the JSON wrapper.","argumentType":"Object cannot be converted to the required type.","argumentNull":"Value cannot be null.","controlCantSetId":"The id property can\u0027t be set on a control.","formatBadFormatSpecifier":"Format specifier was invalid.","webServiceFailedNoMsg":"The server method \u0027{0}\u0027 failed.","argumentDomElement":"Value must be a DOM element.","invalidExecutorType":"Could not create a valid Sys.Net.WebRequestExecutor from: {0}.","cannotCallBeforeResponse":"Cannot call {0} when responseAvailable is false.","actualValue":"Actual value was {0}.","enumInvalidValue":"\u0027{0}\u0027 is not a valid value for enum {1}.","scriptLoadFailed":"The script \u0027{0}\u0027 could not be loaded.","parameterCount":"Parameter count mismatch.","cannotDeserializeEmptyString":"Cannot deserialize empty string.","formatInvalidString":"Input string was not in a correct format.","invalidTimeout":"Value must be greater than or equal to zero.","cannotAbortBeforeStart":"Cannot abort when executor has not started.","argument":"Value does not fall within the expected range.","cannotDeserializeInvalidJson":"Cannot deserialize. The data does not correspond to valid JSON.","invalidHttpVerb":"httpVerb cannot be set to an empty or null string.","nullWebRequest":"Cannot call executeRequest with a null webRequest.","eventHandlerInvalid":"Handler was not added through the Sys.UI.DomEvent.addHandler method.","cannotSerializeNonFiniteNumbers":"Cannot serialize non finite numbers.","argumentUndefined":"Value cannot be undefined.","webServiceInvalidReturnType":"The server method \u0027{0}\u0027 returned an invalid type. Expected type: {1}","servicePathNotSet":"The path to the web service has not been set.","argumentTypeWithTypes":"Object of type \u0027{0}\u0027 cannot be converted to type \u0027{1}\u0027.","cannotCallOnceStarted":"Cannot call {0} once started.","badBaseUrl1":"Base URL does not contain ://.","badBaseUrl2":"Base URL does not contain another /.","badBaseUrl3":"Cannot find last / in base URL.","setExecutorAfterActive":"Cannot set executor after it has become active.","paramName":"Parameter name: {0}","cannotCallOutsideHandler":"Cannot call {0} outside of a completed event handler.","cannotSerializeObjectWithCycle":"Cannot serialize object with cyclic reference within child properties.","format":"One of the identified items was in an invalid format.","assertFailedCaller":"Assertion Failed: {0}\r\nat {1}","argumentOutOfRange":"Specified argument was out of the range of valid values.","webServiceTimedOut":"The server method \u0027{0}\u0027 timed out.","notImplemented":"The method or operation is not implemented.","assertFailed":"Assertion Failed: {0}","invalidOperation":"Operation is not valid due to the current state of the object.","breakIntoDebugger":"{0}\r\n\r\nBreak into debugger?"};
/* END MicrosoftAjax.js */
/* START Telerik.Web.UI.Common.Core.js */
try{
document.execCommand("BackgroundImageCache",false,true);
}
catch(err){
}
Type.registerNamespace("Telerik.Web.UI");
window.$telerik=window.TelerikCommonScripts=Telerik.Web.CommonScripts={getOuterSize:function(_1){
var _2=$telerik.getBounds(_1);
var _3=$telerik.getMarginBox(_1);
return {width:_2.width+_3.left+_3.right,height:_2.height+_3.top+_3.bottom};
},getOuterBounds:function(_4){
var _5=$telerik.getBounds(_4);
var _6=$telerik.getMarginBox(_4);
return {x:_5.x-_6.left,y:_5.y-_6.top,width:_5.width+_6.left+_6.right,height:_5.height+_6.top+_6.bottom};
},getInvisibleParent:function(_7){
while(_7&&_7!=document){
if("none"==$telerik.getCurrentStyle(_7,"display","")){
return _7;
}
_7=_7.parentNode;
}
return null;
},addParentVisibilityChangeHandler:function(_8,_9){
if(_8){
if($telerik.isIE){
$addHandler(_8,"propertychange",_9);
}else{
_8.addEventListener("DOMAttrModified",_9,false);
}
}
},removeParentVisibilityChangeHandler:function(_a,_b){
if(_a&&_b){
if($telerik.isIE){
$removeHandler(_a,"propertychange",_b);
}else{
_a.removeEventListener("DOMAttrModified",_b,false);
}
}
},isRightToLeft:function(_c){
while(_c&&_c.nodeType!==9){
if(_c.dir=="rtl"||$telerik.getCurrentStyle(_c,"direction")=="rtl"){
return true;
}
_c=_c.parentNode;
}
return false;
},getCorrectScrollLeft:function(_d){
if($telerik.isRightToLeft(_d)){
return -(_d.scrollWidth-_d.offsetWidth-Math.abs(_d.scrollLeft));
}else{
return _d.scrollLeft;
}
},_borderStyleNames:["borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle"],_borderWidthNames:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],_paddingWidthNames:["paddingTop","paddingRight","paddingBottom","paddingLeft"],_marginWidthNames:["marginTop","marginRight","marginBottom","marginLeft"],radControls:[],registerControl:function(_e){
if(!Array.contains(this.radControls,_e)){
Array.add(this.radControls,_e);
}
},unregisterControl:function(_f){
Array.remove(this.radControls,_f);
},repaintChildren:function(_10){
var _11=_10.get_element();
for(var i=0,_13=this.radControls.length;i<_13;i++){
var _14=this.radControls[i];
if(_14.repaint&&this.isDescendant(_11,_14.get_element())){
_14.repaint();
}
}
},_borderThickness:function(){
$telerik._borderThicknesses={};
var _15=document.createElement("div");
var _16=document.createElement("div");
_15.style.visibility="hidden";
_15.style.position="absolute";
_15.style.fontSize="1px";
_16.style.height="0px";
_16.style.overflow="hidden";
document.body.appendChild(_15).appendChild(_16);
var _17=_15.offsetHeight;
_16.style.borderTop="solid black";
_16.style.borderTopWidth="thin";
$telerik._borderThicknesses["thin"]=_15.offsetHeight-_17;
_16.style.borderTopWidth="medium";
$telerik._borderThicknesses["medium"]=_15.offsetHeight-_17;
_16.style.borderTopWidth="thick";
$telerik._borderThicknesses["thick"]=_15.offsetHeight-_17;
if(typeof (_15.removeChild)!=="undefined"){
_15.removeChild(_16);
}
document.body.removeChild(_15);
if(!$telerik.isSafari){
_16.outerHTML=null;
}
if(!$telerik.isSafari){
_15.outerHTML=null;
}
_15=null;
_16=null;
},getCurrentStyle:function(_18,_19,_1a){
var _1b=null;
if(_18){
if(_18.currentStyle){
_1b=_18.currentStyle[_19];
}else{
if(document.defaultView&&document.defaultView.getComputedStyle){
var _1c=document.defaultView.getComputedStyle(_18,null);
if(_1c){
_1b=_1c[_19];
}
}
}
if(!_1b&&_18.style.getPropertyValue){
_1b=_18.style.getPropertyValue(_19);
}else{
if(!_1b&&_18.style.getAttribute){
_1b=_18.style.getAttribute(_19);
}
}
}
if((!_1b||_1b==""||typeof (_1b)==="undefined")){
if(typeof (_1a)!="undefined"){
_1b=_1a;
}else{
_1b=null;
}
}
return _1b;
},getInheritedBackgroundColor:function(_1d){
if(!_1d){
return "#FFFFFF";
}
var _1e=$telerik.getCurrentStyle(_1d,"backgroundColor");
try{
while(!_1e||_1e==""||_1e=="transparent"||_1e=="rgba(0, 0, 0, 0)"){
_1d=_1d.parentNode;
if(!_1d){
_1e="#FFFFFF";
}else{
_1e=$telerik.getCurrentStyle(_1d,"backgroundColor");
}
}
}
catch(ex){
_1e="#FFFFFF";
}
return _1e;
},getLocation:function(_1f){
if(_1f===document.documentElement){
return new Sys.UI.Point(0,0);
}
if(Sys.Browser.agent==Sys.Browser.InternetExplorer){
if(_1f.window===_1f||_1f.nodeType===9||!_1f.getClientRects||!_1f.getBoundingClientRect){
return new Sys.UI.Point(0,0);
}
var _20=_1f.getClientRects();
if(!_20||!_20.length){
return new Sys.UI.Point(0,0);
}
var _21=_20[0];
var _22=0;
var _23=0;
var _24=false;
try{
_24=_1f.ownerDocument.parentWindow.frameElement;
}
catch(ex){
_24=true;
}
if(_24){
var _25=_1f.getBoundingClientRect();
if(!_25){
return new Sys.UI.Point(0,0);
}
var _26=_21.left;
var _27=_21.top;
for(var i=1;i<_20.length;i++){
var r=_20[i];
if(r.left<_26){
_26=r.left;
}
if(r.top<_27){
_27=r.top;
}
}
_22=_26-_25.left;
_23=_27-_25.top;
}
var _2a=_1f.document.documentElement;
var _2b=new Sys.UI.Point(_21.left-2-_22+$telerik.getCorrectScrollLeft(_2a),_21.top-2-_23+_2a.scrollTop);
if($telerik.quirksMode){
_2b.x+=$telerik.getCorrectScrollLeft(document.body);
_2b.y+=document.body.scrollTop;
}
return _2b;
}
var _2b=Sys.UI.DomElement.getLocation(_1f);
if($telerik.isOpera){
var _2c=_1f.offsetParent;
while(_2c&&_2c.tagName.toUpperCase()!="BODY"&&_2c.tagName.toUpperCase()!="HTML"){
_2b.x-=$telerik.getCorrectScrollLeft(_2c);
_2b.y-=_2c.scrollTop;
_2c=_2c.offsetParent;
}
}
if($telerik.isSafari){
var _2c=_1f.parentNode;
var _2d=null;
var _2e=null;
while(_2c&&_2c.tagName.toUpperCase()!="BODY"&&_2c.tagName.toUpperCase()!="HTML"){
if($telerik.isSafari3||$telerik.isSafari2){
if(_2c.tagName.toUpperCase()=="TD"){
_2d=_2c;
}else{
if(_2c.tagName.toUpperCase()=="TABLE"){
_2e=_2c;
}else{
var _2f=$telerik.getCurrentStyle(_2c,"position");
if(_2f=="absolute"||_2f=="relative"){
var _30=$telerik.getCurrentStyle(_2c,"borderTopWidth",0);
var _31=$telerik.getCurrentStyle(_2c,"borderLeftWidth",0);
_2b.x+=parseInt(_30);
_2b.y+=parseInt(_31);
}
}
}
var _2f=$telerik.getCurrentStyle(_2c,"position");
if(_2f=="absolute"||_2f=="relative"){
_2b.x-=_2c.scrollLeft;
_2b.y-=_2c.scrollTop;
}
if(_2d&&_2e){
_2b.x+=parseInt($telerik.getCurrentStyle(_2e,"borderTopWidth"));
_2b.y+=parseInt($telerik.getCurrentStyle(_2e,"borderLeftWidth"));
if($telerik.getCurrentStyle(_2e,"borderCollapse")!="collapse"){
_2b.x+=parseInt($telerik.getCurrentStyle(_2d,"borderTopWidth"));
_2b.y+=parseInt($telerik.getCurrentStyle(_2d,"borderLeftWidth"));
}
_2d=null;
_2e=null;
}else{
if(_2e){
if($telerik.getCurrentStyle(_2e,"borderCollapse")!="collapse"){
_2b.x+=parseInt($telerik.getCurrentStyle(_2e,"borderTopWidth"));
_2b.y+=parseInt($telerik.getCurrentStyle(_2e,"borderLeftWidth"));
}
_2e=null;
}
}
}
_2c=_2c.parentNode;
}
}
if($telerik.isIE&&$telerik.quirksMode){
_2b.x+=$telerik.getCorrectScrollLeft(document.body);
_2b.y+=document.body.scrollTop;
}
return _2b;
},setLocation:function(_32,_33){
Sys.UI.DomElement.setLocation(_32,_33.x,_33.y);
},findControl:function(_34,id){
var _36=_34.getElementsByTagName("*");
for(var i=0,l=_36.length;i<l;i++){
var _39=_36[i].id;
if(_39&&_39.endsWith(id)){
return $find(_39);
}
}
return null;
},findElement:function(_3a,id){
var _3c=_3a.getElementsByTagName("*");
for(var i=0,l=_3c.length;i<l;i++){
var _3f=_3c[i].id;
if(_3f&&_3f.endsWith(id)){
return $get(_3f);
}
}
return null;
},getContentSize:function(_40){
if(!_40){
throw Error.argumentNull("element");
}
var _41=$telerik.getSize(_40);
var _42=$telerik.getBorderBox(_40);
var _43=$telerik.getPaddingBox(_40);
return {width:_41.width-_42.horizontal-_43.horizontal,height:_41.height-_42.vertical-_43.vertical};
},getSize:function(_44){
if(!_44){
throw Error.argumentNull("element");
}
return {width:_44.offsetWidth,height:_44.offsetHeight};
},setContentSize:function(_45,_46){
if(!_45){
throw Error.argumentNull("element");
}
if(!_46){
throw Error.argumentNull("size");
}
if($telerik.getCurrentStyle(_45,"MozBoxSizing")=="border-box"||$telerik.getCurrentStyle(_45,"BoxSizing")=="border-box"){
var _47=$telerik.getBorderBox(_45);
var _48=$telerik.getPaddingBox(_45);
_46={width:_46.width+_47.horizontal+_48.horizontal,height:_46.height+_47.vertical+_48.vertical};
}
_45.style.width=_46.width.toString()+"px";
_45.style.height=_46.height.toString()+"px";
},setSize:function(_49,_4a){
if(!_49){
throw Error.argumentNull("element");
}
if(!_4a){
throw Error.argumentNull("size");
}
var _4b=$telerik.getBorderBox(_49);
var _4c=$telerik.getPaddingBox(_49);
var _4d={width:_4a.width-_4b.horizontal-_4c.horizontal,height:_4a.height-_4b.vertical-_4c.vertical};
$telerik.setContentSize(_49,_4d);
},getBounds:function(_4e){
var _4f=$telerik.getLocation(_4e);
return new Sys.UI.Bounds(_4f.x,_4f.y,_4e.offsetWidth||0,_4e.offsetHeight||0);
},setBounds:function(_50,_51){
if(!_50){
throw Error.argumentNull("element");
}
if(!_51){
throw Error.argumentNull("bounds");
}
$telerik.setSize(_50,_51);
$telerik.setLocation(_50,_51);
},getClientBounds:function(){
var _52;
var _53;
switch(Sys.Browser.agent){
case Sys.Browser.InternetExplorer:
_52=document.documentElement.clientWidth;
_53=document.documentElement.clientHeight;
if(_52==0&&_53==0){
_52=document.body.clientWidth;
_53=document.body.clientHeight;
}
break;
case Sys.Browser.Safari:
_52=window.innerWidth;
_53=window.innerHeight;
break;
case Sys.Browser.Opera:
_52=Math.min(window.innerWidth,document.body.clientWidth);
_53=Math.min(window.innerHeight,document.body.clientHeight);
break;
default:
_52=Math.min(window.innerWidth,document.documentElement.clientWidth);
_53=Math.min(window.innerHeight,document.documentElement.clientHeight);
break;
}
return new Sys.UI.Bounds(0,0,_52,_53);
},getMarginBox:function(_54){
if(!_54){
throw Error.argumentNull("element");
}
var box={top:$telerik.getMargin(_54,Telerik.Web.BoxSide.Top),right:$telerik.getMargin(_54,Telerik.Web.BoxSide.Right),bottom:$telerik.getMargin(_54,Telerik.Web.BoxSide.Bottom),left:$telerik.getMargin(_54,Telerik.Web.BoxSide.Left)};
box.horizontal=box.left+box.right;
box.vertical=box.top+box.bottom;
return box;
},getPaddingBox:function(_56){
if(!_56){
throw Error.argumentNull("element");
}
var box={top:$telerik.getPadding(_56,Telerik.Web.BoxSide.Top),right:$telerik.getPadding(_56,Telerik.Web.BoxSide.Right),bottom:$telerik.getPadding(_56,Telerik.Web.BoxSide.Bottom),left:$telerik.getPadding(_56,Telerik.Web.BoxSide.Left)};
box.horizontal=box.left+box.right;
box.vertical=box.top+box.bottom;
return box;
},getBorderBox:function(_58){
if(!_58){
throw Error.argumentNull("element");
}
var box={top:$telerik.getBorderWidth(_58,Telerik.Web.BoxSide.Top),right:$telerik.getBorderWidth(_58,Telerik.Web.BoxSide.Right),bottom:$telerik.getBorderWidth(_58,Telerik.Web.BoxSide.Bottom),left:$telerik.getBorderWidth(_58,Telerik.Web.BoxSide.Left)};
box.horizontal=box.left+box.right;
box.vertical=box.top+box.bottom;
return box;
},isBorderVisible:function(_5a,_5b){
if(!_5a){
throw Error.argumentNull("element");
}
if(_5b<Telerik.Web.BoxSide.Top||_5b>Telerik.Web.BoxSide.Left){
throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue,_5b,"Telerik.Web.BoxSide"));
}
var _5c=$telerik._borderStyleNames[_5b];
var _5d=$telerik.getCurrentStyle(_5a,_5c);
return _5d!="none";
},getMargin:function(_5e,_5f){
if(!_5e){
throw Error.argumentNull("element");
}
if(_5f<Telerik.Web.BoxSide.Top||_5f>Telerik.Web.BoxSide.Left){
throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue,_5f,"Telerik.Web.BoxSide"));
}
var _60=$telerik._marginWidthNames[_5f];
var _61=$telerik.getCurrentStyle(_5e,_60);
try{
return $telerik.parsePadding(_61);
}
catch(ex){
return 0;
}
},getBorderWidth:function(_62,_63){
if(!_62){
throw Error.argumentNull("element");
}
if(_63<Telerik.Web.BoxSide.Top||_63>Telerik.Web.BoxSide.Left){
throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue,_63,"Telerik.Web.BoxSide"));
}
if(!$telerik.isBorderVisible(_62,_63)){
return 0;
}
var _64=$telerik._borderWidthNames[_63];
var _65=$telerik.getCurrentStyle(_62,_64);
return $telerik.parseBorderWidth(_65);
},getPadding:function(_66,_67){
if(!_66){
throw Error.argumentNull("element");
}
if(_67<Telerik.Web.BoxSide.Top||_67>Telerik.Web.BoxSide.Left){
throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue,_67,"Telerik.Web.BoxSide"));
}
var _68=$telerik._paddingWidthNames[_67];
var _69=$telerik.getCurrentStyle(_66,_68);
return $telerik.parsePadding(_69);
},parseBorderWidth:function(_6a){
if(_6a){
switch(_6a){
case "thin":
case "medium":
case "thick":
return $telerik._borderThicknesses[_6a];
case "inherit":
return 0;
}
var _6b=$telerik.parseUnit(_6a);
return _6b.size;
}
return 0;
},parsePadding:function(_6c){
if(_6c){
if(_6c=="auto"||_6c=="inherit"){
return 0;
}
var _6d=$telerik.parseUnit(_6c);
return _6d.size;
}
return 0;
},parseUnit:function(_6e){
if(!_6e){
throw Error.argumentNull("value");
}
_6e=_6e.trim().toLowerCase();
var l=_6e.length;
var s=-1;
for(var i=0;i<l;i++){
var ch=_6e.substr(i,1);
if((ch<"0"||ch>"9")&&ch!="-"&&ch!="."&&ch!=","){
break;
}
s=i;
}
if(s==-1){
throw Error.create("No digits");
}
var _73;
var _74;
if(s<(l-1)){
_73=_6e.substring(s+1).trim();
}else{
_73="px";
}
_74=parseFloat(_6e.substr(0,s+1));
if(_73=="px"){
_74=Math.floor(_74);
}
return {size:_74,type:_73};
},containsPoint:function(_75,x,y){
return x>=_75.x&&x<=(_75.x+_75.width)&&y>=_75.y&&y<=(_75.y+_75.height);
},isDescendant:function(_78,_79){
for(var n=_79.parentNode;n!=null;n=n.parentNode){
if(n==_78){
return true;
}
}
return false;
},isDescendantOrSelf:function(_7b,_7c){
if(_7b===_7c){
return true;
}
return $telerik.isDescendant(_7b,_7c);
},setOuterHeight:function(_7d,_7e){
if(_7e<=0||_7e==""){
_7d.style.height="";
}else{
_7d.style.height=_7e+"px";
var _7f=_7d.offsetHeight-_7e;
var _80=_7e-_7f;
if(_80>0){
_7d.style.height=_80+"px";
}else{
_7d.style.height="";
}
}
},setOpacity:function(_81,_82){
if(!_81){
throw Error.argumentNull("element");
}
try{
if(_81.filters){
var _83=_81.filters;
var _84=true;
if(_83.length!==0){
var _85=_83["DXImageTransform.Microsoft.Alpha"];
if(_85){
_84=false;
_85.opacity=_82*100;
}
}
if(_84){
_81.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+(_82*100)+")";
}
}else{
_81.style.opacity=_82;
}
}
catch(ex){
}
},getOpacity:function(_86){
if(!_86){
throw Error.argumentNull("element");
}
var _87=false;
var _88;
try{
if(_86.filters){
var _89=_86.filters;
if(_89.length!==0){
var _8a=_89["DXImageTransform.Microsoft.Alpha"];
if(_8a){
_88=_8a.opacity/100;
_87=true;
}
}
}else{
_88=$telerik.getCurrentStyle(_86,"opacity",1);
_87=true;
}
}
catch(ex){
}
if(_87===false){
return 1;
}
return parseFloat(_88);
},addCssClasses:function(_8b,_8c){
for(var i=0;i<_8c.length;i++){
Sys.UI.DomElement.addCssClass(_8b,_8c[i]);
}
},removeCssClasses:function(_8e,_8f){
for(var i=0;i<_8f.length;i++){
Sys.UI.DomElement.removeCssClass(_8e,_8f[i]);
}
},setOuterWidth:function(_91,_92){
if(_92<=0||_92==""){
_91.style.width="";
}else{
_91.style.width=_92+"px";
var _93=_91.offsetWidth-_92;
var _94=_92-_93;
if(_94>0){
_91.style.width=_94+"px";
}else{
_91.style.width="";
}
}
},getScrollOffset:function(_95,_96){
var _97=0;
var top=0;
var _99=_95;
while(_99!=null&&_99.scrollLeft!=null){
_97+=$telerik.getCorrectScrollLeft(_99);
top+=_99.scrollTop;
if(!_96||(_99==document.body&&(_99.scrollLeft!=0||_99.scrollTop!=0))){
break;
}
_99=_99.parentNode;
}
return {x:_97,y:top};
},getElementByClassName:function(_9a,_9b,_9c){
var _9d=null;
if(_9c){
_9d=_9a.getElementsByTagName(_9c);
}else{
_9d=_9a.getElementsByTagName("*");
}
for(var i=0,_9f=_9d.length;i<_9f;i++){
var _a0=_9d[i];
if(Sys.UI.DomElement.containsCssClass(_a0,_9b)){
return _a0;
}
}
return null;
},addExternalHandler:function(_a1,_a2,_a3){
if(_a1.addEventListener){
_a1.addEventListener(_a2,_a3,false);
}else{
if(_a1.attachEvent){
_a1.attachEvent("on"+_a2,_a3);
}
}
},removeExternalHandler:function(_a4,_a5,_a6){
if(_a4.addEventListener){
_a4.removeEventListener(_a5,_a6,false);
}else{
if(_a4.detachEvent){
_a4.detachEvent("on"+_a5,_a6);
}
}
},cancelRawEvent:function(e){
if(!e){
return false;
}
if(e.preventDefault){
e.preventDefault();
}
if(e.stopPropagation){
e.stopPropagation();
}
e.cancelBubble=true;
e.returnValue=false;
return false;
},getOuterHtml:function(_a8){
if(_a8.outerHTML){
return _a8.outerHTML;
}else{
var _a9=_a8.cloneNode(true);
var _aa=_a8.ownerDocument.createElement("DIV");
_aa.appendChild(_a9);
return _aa.innerHTML;
}
},setVisible:function(e,_ac){
if(!e){
return;
}
if(_ac!=$telerik.getVisible(e)){
if(_ac){
if(e.style.removeAttribute){
e.style.removeAttribute("display");
}else{
e.style.removeProperty("display");
}
}else{
e.style.display="none";
}
e.style.visibility=_ac?"visible":"hidden";
}
},getVisible:function(e){
if(!e){
return false;
}
return (("none"!=$telerik.getCurrentStyle(e,"display"))&&("hidden"!=$telerik.getCurrentStyle(e,"visibility")));
},getViewPortSize:function(){
var _ae=0;
var _af=0;
var _b0=document.body;
if(!$telerik.quirksMode&&!$telerik.isSafari){
_b0=document.documentElement;
}
if(window.innerWidth){
_ae=window.innerWidth;
_af=window.innerHeight;
}else{
_ae=_b0.clientWidth;
_af=_b0.clientHeight;
}
_ae+=_b0.scrollLeft;
_af+=_b0.scrollTop;
return {width:_ae-6,height:_af-6};
},elementOverflowsTop:function(_b1){
return $telerik.getLocation(_b1).y<0;
},elementOverflowsLeft:function(_b2){
return $telerik.getLocation(_b2).x<0;
},elementOverflowsBottom:function(_b3,_b4){
var _b5=$telerik.getLocation(_b4).y+_b4.offsetHeight;
return _b5>_b3.height;
},elementOverflowsRight:function(_b6,_b7){
var _b8=$telerik.getLocation(_b7).x+_b7.offsetWidth;
return _b8>_b6.width;
},getDocumentRelativeCursorPosition:function(e){
var _ba=document.documentElement.scrollLeft||document.body.scrollLeft;
var _bb=document.documentElement.scrollTop||document.body.scrollTop;
var _bc=e.clientX+_ba;
var top=e.clientY+_bb;
return {left:_bc,top:top};
},getFirstChildByTagName:function(_be,_bf,_c0){
if(!_be||!_be.childNodes){
return null;
}
var _c1=_be.childNodes[_c0]||_be.firstChild;
while(_c1){
if(_c1.nodeType==1&&_c1.tagName.toLowerCase()==_bf){
return _c1;
}
_c1=_c1.nextSibling;
}
return null;
},getChildByClassName:function(_c2,_c3,_c4){
var _c5=_c2.childNodes[_c4]||_c2.firstChild;
while(_c5){
if(_c5.nodeType==1&&_c5.className.indexOf(_c3)>-1){
return _c5;
}
_c5=_c5.nextSibling;
}
return null;
},getChildrenByTagName:function(_c6,_c7){
var _c8=new Array();
var _c9=_c6.childNodes;
if($telerik.isIE){
_c9=_c6.children;
}
for(var i=0,_cb=_c9.length;i<_cb;i++){
var _cc=_c9[i];
if(_cc.nodeType==1&&_cc.tagName.toLowerCase()==_c7){
Array.add(_c8,_cc);
}
}
return _c8;
},getChildrenByClassName:function(_cd,_ce){
var _cf=new Array();
var _d0=_cd.childNodes;
if($telerik.isIE){
_d0=_cd.children;
}
for(var i=0,_d2=_d0.length;i<_d2;i++){
var _d3=_d0[i];
if(_d3.nodeType==1&&_d3.className.indexOf(_ce)>-1){
Array.add(_cf,_d3);
}
}
return _cf;
},isMouseOverElement:function(_d4,e){
var _d6=$telerik.getBounds(_d4);
var _d7=$telerik.getDocumentRelativeCursorPosition(e);
return $telerik.containsPoint(_d6,_d7.left,_d7.top);
}};
if(typeof (Sys.Browser.WebKit)=="undefined"){
Sys.Browser.WebKit={};
}
if(typeof (Sys.Browser.Chrome)=="undefined"){
Sys.Browser.Chrome={};
}
if(navigator.userAgent.indexOf("Chrome")>-1){
Sys.Browser.version=parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
Sys.Browser.agent=Sys.Browser.Chrome;
Sys.Browser.name="Chrome";
}else{
if(navigator.userAgent.indexOf("WebKit/")>-1){
Sys.Browser.version=parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
if(Sys.Browser.version<500){
Sys.Browser.agent=Sys.Browser.Safari;
Sys.Browser.name="Safari";
}else{
Sys.Browser.agent=Sys.Browser.WebKit;
Sys.Browser.name="WebKit";
}
}
}
$telerik.isChrome=Sys.Browser.agent==Sys.Browser.Chrome;
$telerik.isSafari3=Sys.Browser.agent==Sys.Browser.WebKit||Sys.Browser.agent==Sys.Browser.Chrome;
$telerik.isSafari2=Sys.Browser.agent==Sys.Browser.Safari;
$telerik.isSafari=$telerik.isSafari2||$telerik.isSafari3;
$telerik.isIE=Sys.Browser.agent==Sys.Browser.InternetExplorer;
$telerik.isIE7=$telerik.isIE&&Sys.Browser.version==7;
$telerik.isIE6=$telerik.isIE&&Sys.Browser.version<7;
$telerik.isOpera=Sys.Browser.agent==Sys.Browser.Opera;
$telerik.isFirefox=Sys.Browser.agent==Sys.Browser.Firefox;
$telerik.quirksMode=$telerik.isIE&&document.compatMode!="CSS1Compat";
$telerik.standardsMode=!$telerik.quirksMode;
try{
$telerik._borderThickness();
}
catch(err){
}
Telerik.Web.UI.Orientation=function(){
throw Error.invalidOperation();
};
Telerik.Web.UI.Orientation.prototype={Horizontal:0,Vertical:1};
Telerik.Web.UI.Orientation.registerEnum("Telerik.Web.UI.Orientation",false);
Telerik.Web.UI.RadWebControl=function(_d8){
Telerik.Web.UI.RadWebControl.initializeBase(this,[_d8]);
this._clientStateFieldID=null;
};
Telerik.Web.UI.RadWebControl.prototype={initialize:function(){
Telerik.Web.UI.RadWebControl.callBaseMethod(this,"initialize");
$telerik.registerControl(this);
if(!this.get_clientStateFieldID()){
return;
}
var _d9=$get(this.get_clientStateFieldID());
if(!_d9){
return;
}
_d9.setAttribute("autocomplete","off");
},dispose:function(){
$telerik.unregisterControl(this);
var _da=this.get_element();
Telerik.Web.UI.RadWebControl.callBaseMethod(this,"dispose");
if(_da){
_da.control=null;
var _db=true;
if(_da._events){
for(var e in _da._events){
if(_da._events[e].length>0){
_db=false;
break;
}
}
if(_db){
_da._events=null;
}
}
}
},raiseEvent:function(_dd,_de){
var _df=this.get_events().getHandler(_dd);
if(_df){
if(!_de){
_de=Sys.EventArgs.Empty;
}
_df(this,_de);
}
},updateClientState:function(){
this.set_clientState(this.saveClientState());
},saveClientState:function(){
return null;
},get_clientStateFieldID:function(){
return this._clientStateFieldID;
},set_clientStateFieldID:function(_e0){
if(this._clientStateFieldID!=_e0){
this._clientStateFieldID=_e0;
this.raisePropertyChanged("ClientStateFieldID");
}
},get_clientState:function(){
if(this._clientStateFieldID){
var _e1=document.getElementById(this._clientStateFieldID);
if(_e1){
return _e1.value;
}
}
return null;
},set_clientState:function(_e2){
if(this._clientStateFieldID){
var _e3=document.getElementById(this._clientStateFieldID);
if(_e3){
_e3.value=_e2;
}
}
},_getChildElement:function(id){
return $get(this.get_id()+"_"+id);
},_findChildControl:function(id){
return $find(this.get_id()+"_"+id);
}};
Telerik.Web.UI.RadWebControl.registerClass("Telerik.Web.UI.RadWebControl",Sys.UI.Control);
Telerik.Web.Timer=function(){
Telerik.Web.Timer.initializeBase(this);
this._interval=1000;
this._enabled=false;
this._timer=null;
this._timerCallbackDelegate=Function.createDelegate(this,this._timerCallback);
};
Telerik.Web.Timer.prototype={get_interval:function(){
return this._interval;
},set_interval:function(_e6){
if(this._interval!==_e6){
this._interval=_e6;
this.raisePropertyChanged("interval");
if(!this.get_isUpdating()&&(this._timer!==null)){
this._stopTimer();
this._startTimer();
}
}
},get_enabled:function(){
return this._enabled;
},set_enabled:function(_e7){
if(_e7!==this.get_enabled()){
this._enabled=_e7;
this.raisePropertyChanged("enabled");
if(!this.get_isUpdating()){
if(_e7){
this._startTimer();
}else{
this._stopTimer();
}
}
}
},add_tick:function(_e8){
this.get_events().addHandler("tick",_e8);
},remove_tick:function(_e9){
this.get_events().removeHandler("tick",_e9);
},dispose:function(){
this.set_enabled(false);
this._stopTimer();
Telerik.Web.Timer.callBaseMethod(this,"dispose");
},updated:function(){
Telerik.Web.Timer.callBaseMethod(this,"updated");
if(this._enabled){
this._stopTimer();
this._startTimer();
}
},_timerCallback:function(){
var _ea=this.get_events().getHandler("tick");
if(_ea){
_ea(this,Sys.EventArgs.Empty);
}
},_startTimer:function(){
this._timer=window.setInterval(this._timerCallbackDelegate,this._interval);
},_stopTimer:function(){
window.clearInterval(this._timer);
this._timer=null;
}};
Telerik.Web.Timer.registerClass("Telerik.Web.Timer",Sys.Component);
Telerik.Web.BoxSide=function(){
};
Telerik.Web.BoxSide.prototype={Top:0,Right:1,Bottom:2,Left:3};
Telerik.Web.BoxSide.registerEnum("Telerik.Web.BoxSide",false);
if(Sys.CultureInfo.prototype._getAbbrMonthIndex){
try{
Sys.CultureInfo.prototype._getAbbrMonthIndex("");
}
catch(ex){
Sys.CultureInfo.prototype._getAbbrMonthIndex=function(_eb){
if(!this._upperAbbrMonths){
this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
}
return Array.indexOf(this._upperAbbrMonths,this._toUpper(_eb));
};
Sys.CultureInfo.CurrentCulture._getAbbrMonthIndex=Sys.CultureInfo.prototype._getAbbrMonthIndex;
Sys.CultureInfo.InvariantCulture._getAbbrMonthIndex=Sys.CultureInfo.prototype._getAbbrMonthIndex;
}
}
Type.registerNamespace("Telerik.Web.UI.Dialogs");
Telerik.Web.IParameterConsumer=function(){
};
Telerik.Web.IParameterConsumer.prototype={clientInit:function(_ec){
throw Error.notImplemented();
}};
Telerik.Web.IParameterConsumer.registerInterface("Telerik.Web.IParameterConsumer");
Telerik.Web.UI.Dialogs.CommonDialogScript=function(){
};
Telerik.Web.UI.Dialogs.CommonDialogScript.get_windowReference=function(){
if(window.radWindow){
return window.radWindow;
}
if(window.frameElement&&window.frameElement.radWindow){
return window.frameElement.radWindow;
}
if(!window.__localRadEditorRadWindowReference&&window.opener.__getCurrentRadEditorRadWindowReference){
window.__localRadEditorRadWindowReference=window.opener.__getCurrentRadEditorRadWindowReference();
}
return window.__localRadEditorRadWindowReference;
};
Telerik.Web.UI.Dialogs.CommonDialogScript.registerClass("Telerik.Web.UI.Dialogs.CommonDialogScript",null);
Telerik.Web.UI.WebServiceLoaderEventArgs=function(_ed){
Telerik.Web.UI.WebServiceLoaderEventArgs.initializeBase(this);
this._context=_ed;
};
Telerik.Web.UI.WebServiceLoaderEventArgs.prototype={get_context:function(){
return this._context;
}};
Telerik.Web.UI.WebServiceLoaderEventArgs.registerClass("Telerik.Web.UI.WebServiceLoaderEventArgs",Sys.EventArgs);
Telerik.Web.UI.WebServiceLoaderSuccessEventArgs=function(_ee,_ef){
Telerik.Web.UI.WebServiceLoaderSuccessEventArgs.initializeBase(this,[_ef]);
this._data=_ee;
};
Telerik.Web.UI.WebServiceLoaderSuccessEventArgs.prototype={get_data:function(){
return this._data;
}};
Telerik.Web.UI.WebServiceLoaderSuccessEventArgs.registerClass("Telerik.Web.UI.WebServiceLoaderSuccessEventArgs",Telerik.Web.UI.WebServiceLoaderEventArgs);
Telerik.Web.UI.WebServiceLoaderErrorEventArgs=function(_f0,_f1){
Telerik.Web.UI.WebServiceLoaderErrorEventArgs.initializeBase(this,[_f1]);
this._message=_f0;
};
Telerik.Web.UI.WebServiceLoaderErrorEventArgs.prototype={get_message:function(){
return this._message;
}};
Telerik.Web.UI.WebServiceLoaderErrorEventArgs.registerClass("Telerik.Web.UI.WebServiceLoaderErrorEventArgs",Telerik.Web.UI.WebServiceLoaderEventArgs);
Telerik.Web.UI.WebServiceLoader=function(_f2){
this._webServiceSettings=_f2;
this._events=null;
this._currentWebRequest=null;
this._onWebServiceSuccessDelegate=Function.createDelegate(this,this._onWebServiceSuccess);
this._onWebServiceErrorDelegate=Function.createDelegate(this,this._onWebServiceError);
};
Telerik.Web.UI.WebServiceLoader.prototype={get_webServiceSettings:function(){
return this._webServiceSettings;
},get_events:function(){
if(!this._events){
this._events=new Sys.EventHandlerList();
}
return this._events;
},loadData:function(_f3,_f4){
var _f5=this.get_webServiceSettings();
if(_f5.get_isEmpty()){
Error.invalidOperation("Please, specify valid web service and method.");
return;
}
var _f6=_f5.get_path();
var _f7=_f5.get_method();
this._raiseEvent("loadingStarted",new Telerik.Web.UI.WebServiceLoaderEventArgs(_f4));
this._currentWebRequest=Sys.Net.WebServiceProxy.invoke(_f6,_f7,false,_f3,this._onWebServiceSuccessDelegate,this._onWebServiceErrorDelegate,_f4);
},add_loadingStarted:function(_f8){
this.get_events().addHandler("loadingStarted",_f8);
},add_loadingError:function(_f9){
this.get_events().addHandler("loadingError",_f9);
},add_loadingSuccess:function(_fa){
this.get_events().addHandler("loadingSuccess",_fa);
},_onWebServiceSuccess:function(_fb,_fc){
var _fd=new Telerik.Web.UI.WebServiceLoaderSuccessEventArgs(_fb,_fc);
this._raiseEvent("loadingSuccess",_fd);
},_onWebServiceError:function(_fe,_ff){
var _100=new Telerik.Web.UI.WebServiceLoaderErrorEventArgs(_fe.get_message(),_ff);
this._raiseEvent("loadingError",_100);
},_raiseEvent:function(_101,_102){
var _103=this.get_events().getHandler(_101);
if(_103){
if(!_102){
_102=Sys.EventArgs.Empty;
}
_103(this,_102);
}
}};
Telerik.Web.UI.WebServiceLoader.registerClass("Telerik.Web.UI.WebServiceLoader");
Telerik.Web.UI.WebServiceSettings=function(_104){
this._path=null;
this._method=null;
if(!_104){
_104={};
}
if(typeof (_104.path)!="undefined"){
this._path=_104.path;
}
if(typeof (_104.method)!="undefined"){
this._method=_104.method;
}
};
Telerik.Web.UI.WebServiceSettings.prototype={get_path:function(){
return this._path;
},set_path:function(_105){
this._path=_105;
},get_method:function(){
return this._method;
},set_method:function(_106){
this._method=_106;
},get_isEmpty:function(){
var path=this.get_path();
var _108=this.get_method();
return (!(path&&_108));
}};
Telerik.Web.UI.WebServiceSettings.registerClass("Telerik.Web.UI.WebServiceSettings");


/* END Telerik.Web.UI.Common.Core.js */
/* START Telerik.Web.UI.Ajax.Ajax.js */
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.RadAjaxControl=function(_1){
Telerik.Web.UI.RadAjaxControl.initializeBase(this,[_1]);
this._clientEvents={};
this._uniqueID="";
this._enableHistory=false;
this._enableAJAX=true;
this._requestQueueSize=0;
this._requestQueue=[];
this._loadingPanelsToHide=[];
this._initializeRequestHandler=null;
this._endRequestHandler=null;
this._isRequestInProgress=false;
this._links=[];
this._styles=[];
this.Type="Telerik.Web.UI.RadAjaxControl";
this.UniqueID=this._uniqueID;
this.EnableHistory=this._enableHistory;
this.EnableAJAX=this._enableAJAX;
this.Links=this._links;
this.Styles=this._styles;
this._updatePanels="";
};
Telerik.Web.UI.RadAjaxControl.prototype={initialize:function(){
Telerik.Web.UI.RadAjaxControl.callBaseMethod(this,"initialize");
for(var _2 in this._clientEvents){
if(typeof (this._clientEvents[_2])!="string"){
continue;
}
if(this._clientEvents[_2]!=""){
var _3=this._clientEvents[_2];
if(_3.indexOf("(")!=-1){
this[_2]=_3;
}else{
this[_2]=eval(_3);
}
}else{
this[_2]=null;
}
}
var _4=Sys.WebForms.PageRequestManager.getInstance();
this._initializeRequestHandler=Function.createDelegate(this,this._initializeRequest);
_4.add_initializeRequest(this._initializeRequestHandler);
},_getResponseHeader:function(_5,_6){
try{
return _5.getResponseHeader(_6);
}
catch(e){
return null;
}
},_handleAsyncRedirect:function(_7){
var _8=this._getResponseHeader(_7,"Location");
if(_8&&_8!=""){
var _9=document.createElement("a");
_9.style.display="none";
_9.href=_8;
document.body.appendChild(_9);
if(_9.click){
try{
_9.click();
}
catch(e){
}
}else{
window.location.href=_8;
}
document.body.removeChild(_9);
return true;
}
return false;
},_onFormSubmitCompleted:function(_a,_b){
if(_a._xmlHttpRequest!=null){
if(this._handleAsyncRedirect(_a._xmlHttpRequest)){
try{
_a._aborted=true;
}
catch(e){
}
return;
}
}
if(_a._xmlHttpRequest!=null&&!_a.get_timedOut()){
var _c=this.getResponseItems(_a.get_responseData(),"scriptBlock");
for(var i=0,_e=_c.length;i<_e;i++){
var _f=_c[i].content;
if(_f.indexOf(Sys.WebForms.PageRequestManager.getInstance()._uniqueIDToClientID(this._uniqueID))!=-1){
var _10=_f.substr(_f.indexOf("\"links\":")+10,_f.indexOf("]",_f.indexOf("\"links\":"))-(_f.indexOf("\"links\":")+10)).replace(/\"/g,"");
if(_10!=""){
this._links=_10.split(",");
this.updateHeadLinks();
}
}
if(_f.indexOf(".axd")==-1&&_c[i].id=="ScriptPath"){
Telerik.Web.UI.RadAjaxControl.IncludeClientScript(_f);
}
}
var _11=this.getResponseItems(_a.get_responseData(),"updatePanel");
Telerik.Web.UI.RadAjaxControl.panelsToClear=[];
for(var i=0,_e=_11.length;i<_e;i++){
var _12=_11[i];
if(!$get(_12.id)){
var _13=document.createElement("div");
_13.id=_12.id;
var _14=$get(_12.id.replace("Panel",""));
if(!_14){
continue;
}
var _15=_14.parentNode;
var _16=_14.nextSibling||Telerik.Web.UI.RadAjaxControl.GetNodeNextSibling(_14);
if(_14.nodeType===1){
if(_14.dispose&&typeof (_14.dispose)==="function"){
_14.dispose();
}else{
if(_14.control&&typeof (_14.control.dispose)==="function"){
_14.control.dispose();
}
}
var _17=Sys.UI.Behavior.getBehaviors(_14);
for(var j=_17.length-1;j>=0;j--){
_17[j].dispose();
}
}
Sys.WebForms.PageRequestManager.getInstance()._destroyTree(_14);
_15.removeChild(_14);
Telerik.Web.UI.RadAjaxControl.InsertAtLocation(_13,_15,_16);
Telerik.Web.UI.RadAjaxControl.panelsToClear[Telerik.Web.UI.RadAjaxControl.panelsToClear.length]=_12;
}
}
}
_a.get_webRequest().remove_completed(this._onFormSubmitCompletedHandler);
},dispose:function(){
this.hideLoadingPanels();
var _19=Sys.WebForms.PageRequestManager.getInstance();
_19.remove_initializeRequest(this._initializeRequestHandler);
$clearHandlers(this.get_element());
this._element.control=null;
Telerik.Web.UI.RadAjaxControl.callBaseMethod(this,"dispose");
},get_enableAJAX:function(){
return this._enableAJAX;
},set_enableAJAX:function(_1a){
if(this._enableAJAX!=_1a){
this._enableAJAX=_1a;
}
},get_enableHistory:function(){
return this._enableHistory;
},set_enableHistory:function(_1b){
if(this._enableHistory!=_1b){
this._enableHistory=_1b;
}
},get_clientEvents:function(){
return this._clientEvents;
},set_clientEvents:function(_1c){
if(this._clientEvents!=_1c){
this._clientEvents=_1c;
}
},get_links:function(){
return this._links;
},set_links:function(_1d){
if(this._links!=_1d){
this._links=_1d;
if(this._links.length>0){
this.updateHeadLinks();
}
}
},get_styles:function(){
return this._styles;
},set_styles:function(_1e){
if(this._styles!=_1e){
this._styles=_1e;
if(this._styles.length>0){
this.updateHeadStyles();
}
}
},get_uniqueID:function(){
return this._uniqueID;
},set_uniqueID:function(_1f){
if(this._uniqueID!=_1f){
this._uniqueID=_1f;
window[Sys.WebForms.PageRequestManager.getInstance()._uniqueIDToClientID(this._uniqueID)]=this;
}
},get_requestQueueSize:function(){
return this._requestQueueSize;
},set_requestQueueSize:function(_20){
if(_20>0){
this._requestQueueSize=_20;
this.raisePropertyChanged("requestQueueSize");
}
},isChildOf:function(_21,_22){
while(_21!=null){
if(_21==_22){
return true;
}
_21=_21.parentNode;
}
return false;
},_initializeRequest:function(_23,_24){
var _25=Sys.WebForms.PageRequestManager.getInstance();
if(_25.get_isInAsyncPostBack()&&this._requestQueueSize>0){
this._queueRequest(_23,_24);
}
if(this.Type=="Telerik.Web.UI.RadAjaxManager"){
if(_24.get_postBackElement()!=this.get_element()){
var _26=this._updatePanels.split(",");
if(Array.contains(_26,_24.get_postBackElement().id)){
this._isRequestInProgress=true;
this._attachRequestHandlers(_23,_24,false);
return false;
}else{
var _27=_24.get_postBackElement().parentNode;
var _28=false;
while(_27!=null){
if(_27.id&&Array.contains(_26,_27.id)){
_28=true;
break;
}
_27=_27.parentNode;
}
if(_28){
this._isRequestInProgress=true;
this._attachRequestHandlers(_23,_24,false);
return false;
}
}
if(!this._initiators[_24.get_postBackElement().id]){
var _27=_24.get_postBackElement().parentNode;
var _28=false;
while(_27!=null){
if(_27.id&&this._initiators[_27.id]){
_28=true;
break;
}
_27=_27.parentNode;
}
if(!_28){
this._isRequestInProgress=true;
this._attachRequestHandlers(_23,_24,false);
return false;
}
}
}
}
if(this.Type=="Telerik.Web.UI.RadAjaxPanel"){
var _29=this._getParentAjaxPanel(_24.get_postBackElement());
if(_29&&_29.get_id()!=this.get_id()){
return false;
}
if(!this.isChildOf(_24.get_postBackElement(),this.get_element())){
return false;
}
}
if(this._enableHistory){
if(Telerik.Web.UI.RadAjaxControl.History[""]==null){
Telerik.Web.UI.RadAjaxControl.HandleHistory(_23._uniqueIDToClientID(this._uniqueID),"");
}
Telerik.Web.UI.RadAjaxControl.HandleHistory(_23._uniqueIDToClientID(this._uniqueID),_24.get_request().get_body());
}
if(_23._form["__EVENTTARGET"]&&_23._form["__EVENTTARGET"].value){
this.__EVENTTARGET=_23._form["__EVENTTARGET"].value;
}else{
this.__EVENTTARGET=_24.get_postBackElement().id;
}
if(_24.get_postBackElement().name){
this.__EVENTTARGET=_24.get_postBackElement().name;
}
this.__EVENTARGUMENT=_23._form["__EVENTARGUMENT"].value;
var evt=new Telerik.Web.UI.RadAjaxRequestEventArgs(this.__EVENTTARGET,_23._form["__EVENTARGUMENT"].value,this._enableAJAX);
var _2b=this.fireEvent(this,"OnRequestStart",[evt]);
if(evt.get_cancel()||(typeof (_2b)!="undefined"&&!_2b)){
_24.set_cancel(true);
return;
}
if(!evt._enableAjax||!evt.EnableAjax){
_24.set_cancel(true);
_23._form["__EVENTTARGET"].value=this.__EVENTTARGET;
_23._form["__EVENTARGUMENT"].value=this.__EVENTARGUMENT;
_23._form.submit();
return;
}
this._isRequestInProgress=true;
this._attachRequestHandlers(_23,_24,true);
},_endRequest:function(_2c,_2d){
_2c.remove_endRequest(this._endRequestHandler);
for(var i=0,_2f=Telerik.Web.UI.RadAjaxControl.panelsToClear.length;i<_2f;i++){
var _30=Telerik.Web.UI.RadAjaxControl.panelsToClear[i];
var _31=document.getElementById(_30.id);
var _32=$get(_30.id.replace("Panel",""));
if(!_32){
continue;
}
var _33=_31.parentNode;
var _34=_31.nextSibling||Telerik.Web.UI.RadAjaxControl.GetNodeNextSibling(_31);
Telerik.Web.UI.RadAjaxControl.InsertAtLocation(_32,_33,_34);
_31.parentNode.removeChild(_31);
}
this._isRequestInProgress=false;
this.hideLoadingPanels();
if(typeof (this.__EVENTTARGET)!="undefined"&&typeof (this.__EVENTARGUMENT)!="undefined"){
var evt=new Telerik.Web.UI.RadAjaxRequestEventArgs(this.__EVENTTARGET,this.__EVENTARGUMENT,this._enableAJAX);
this.fireEvent(this,"OnResponseEnd",[evt]);
}
if(this._requestQueue.length>0){
this._executePendingRequest();
}
},_queueRequest:function(_36,_37){
_37.set_cancel(true);
if(this._requestQueue.length>=this._requestQueueSize){
return;
}
var _38=_37.get_postBackElement();
var _39=_38.id;
if(_38.name){
_39=_38.name;
}
if(_36._form["__EVENTTARGET"]&&_36._form["__EVENTTARGET"].value){
_39=_36._form["__EVENTTARGET"].value;
}
var _3a=_36._form["__EVENTARGUMENT"].value;
Array.enqueue(this._requestQueue,[_39,_3a]);
},_executePendingRequest:function(){
var _3b=Array.dequeue(this._requestQueue);
var _3c=_3b[0];
var _3d=_3b[1];
var _3e=Sys.WebForms.PageRequestManager.getInstance();
_3e._doPostBack(_3c,_3d);
},_attachRequestHandlers:function(_3f,_40,_41){
this._endRequestHandler=Function.createDelegate(this,this._endRequest);
_3f.add_endRequest(this._endRequestHandler);
this._onFormSubmitCompletedHandler=Function.createDelegate(this,this._onFormSubmitCompleted);
_40.get_request().add_completed(this._onFormSubmitCompletedHandler);
_40.get_request()._get_eventHandlerList()._list.completed.reverse();
if(_41){
var _42=_40.get_request().get_body();
var _43=(_42.lastIndexOf("&")!=_42.length-1)?"&":"";
_42+=_43+"RadAJAXControlID="+_3f._uniqueIDToClientID(this._uniqueID);
_40.get_request().set_body(_42);
}
},_getParentAjaxPanel:function(_44){
var _45=null;
while(_44!=null){
if(typeof (_44.id)!="undefined"&&$find(_44.id)&&$find(_44.id).Type=="Telerik.Web.UI.RadAjaxPanel"){
_45=$find(_44.id);
break;
}
_44=_44.parentNode;
}
return _45;
},getResponseItems:function(_46,_47,_48){
var _49=Sys.WebForms.PageRequestManager.getInstance();
var _4a=_46;
var _4b,len,_4d,id,_4f;
var _50=0;
var _51=null;
var _52="|";
var _53=[];
while(_50<_4a.length){
_4b=_4a.indexOf(_52,_50);
if(_4b===-1){
_51=_49._findText(_4a,_50);
break;
}
len=parseInt(_4a.substring(_50,_4b),10);
if((len%1)!==0){
_51=_49._findText(_4a,_50);
break;
}
_50=_4b+1;
_4b=_4a.indexOf(_52,_50);
if(_4b===-1){
_51=_49._findText(_4a,_50);
break;
}
_4d=_4a.substring(_50,_4b);
_50=_4b+1;
_4b=_4a.indexOf(_52,_50);
if(_4b===-1){
_51=_49._findText(_4a,_50);
break;
}
id=_4a.substring(_50,_4b);
_50=_4b+1;
if((_50+len)>=_4a.length){
_51=_49._findText(_4a,_4a.length);
break;
}
if(typeof (_49._decodeString)!="undefined"){
_4f=_49._decodeString(_4a.substr(_50,len));
}else{
_4f=_4a.substr(_50,len);
}
_50+=len;
if(_4a.charAt(_50)!==_52){
_51=_49._findText(_4a,_50);
break;
}
_50++;
if(_47!=undefined&&_47!=_4d){
continue;
}
if(_48!=undefined&&_48!=id){
continue;
}
Array.add(_53,{type:_4d,id:id,content:_4f});
}
return _53;
},pageLoading:function(_54,_55){
},pageLoaded:function(_56,_57){
},hideLoadingPanels:function(){
for(var i=0;i<this._loadingPanelsToHide.length;i++){
var _59=this._loadingPanelsToHide[i].Panel;
var _5a=this._loadingPanelsToHide[i].ControlID;
if(_59!=null){
_59.hide(_5a);
Array.remove(this._loadingPanelsToHide,this._loadingPanelsToHide[i]);
i--;
}
}
},fireEvent:function(_5b,_5c,_5d){
var _5e=true;
if(typeof (_5b[_5c])=="string"){
_5e=eval(_5b[_5c]);
}else{
if(typeof (_5b[_5c])=="function"){
if(_5d){
if(typeof (_5d.unshift)!="undefined"){
_5d.unshift(_5b);
_5e=_5b[_5c].apply(_5b,_5d);
}else{
_5e=_5b[_5c].apply(_5b,[_5d]);
}
}else{
_5e=_5b[_5c]();
}
}
}
if(typeof (_5e)!="boolean"){
return true;
}else{
return _5e;
}
},updateHeadLinks:function(){
var _5f=this.getHeadElement();
var _60=_5f.getElementsByTagName("link");
var _61=[];
for(var j=0,_63=_60.length;j<_63;j++){
var _64=_60[j].getAttribute("href");
_61.push(_64);
}
for(var i=0,_66=this._links.length;i<_66;i++){
var _67=this._links[i];
_67=_67.replace(/&amp;amp;t/g,"&t");
_67=_67.replace(/&amp;t/g,"&t");
var _68=Array.contains(_61,_67);
if(!_68){
if(_67==""){
continue;
}
var _69=document.createElement("link");
_69.setAttribute("rel","stylesheet");
_69.setAttribute("href",_67);
_5f.appendChild(_69);
}
}
},updateHeadStyles:function(){
if(document.createStyleSheet!=null){
for(var i=0,_6b=this._styles.length;i<_6b;i++){
var _6c=this._styles[i];
var _6d=null;
try{
_6d=document.createStyleSheet();
}
catch(e){
}
if(_6d==null){
_6d=document.createElement("style");
}
_6d.cssText=_6c;
}
}else{
var _6e=null;
if(document.styleSheets.length==0){
css=document.createElement("style");
css.media="all";
css.type="text/css";
var _6f=this.getHeadElement();
_6f.appendChild(css);
_6e=css;
}
if(document.styleSheets[0]){
_6e=document.styleSheets[0];
}
for(var i=0;i<this._styles.length;i++){
var _6c=this._styles[i];
var _70=_6c.split("}");
for(var j=0;j<_70.length;j++){
if(_70[j].replace(/\s*/,"")==""){
continue;
}
_6e.insertRule(_70[j]+"}",j+1);
}
}
}
},getHeadElement:function(){
var _72=document.getElementsByTagName("head");
if(_72.length>0){
return _72[0];
}
var _73=document.createElement("head");
document.documentElement.appendChild(_73);
return _73;
},ajaxRequest:function(_74){
__doPostBack(this._uniqueID,_74);
},ajaxRequestWithTarget:function(_75,_76){
__doPostBack(_75,_76);
},__doPostBack:function(_77,_78){
var _79=Sys.WebForms.PageRequestManager.getInstance()._form;
if(_79!=null){
if(_79["__EVENTTARGET"]!=null){
_79["__EVENTTARGET"].value=_77;
}
if(_79["__EVENTARGUMENT"]!=null){
_79["__EVENTARGUMENT"].value=_78;
}
_79.submit();
}
}};
Telerik.Web.UI.RadAjaxControl.registerClass("Telerik.Web.UI.RadAjaxControl",Sys.UI.Control);
Telerik.Web.UI.RadAjaxRequestEventArgs=function(_7a,_7b,_7c){
Telerik.Web.UI.RadAjaxRequestEventArgs.initializeBase(this);
this._enableAjax=_7c;
this._eventTarget=_7a;
this._eventArgument=_7b;
this._postbackControlClientID=_7a.replace(/(\$|:)/g,"_");
this._eventTargetElement=$get(this._postbackControlClientID);
this.EnableAjax=this._enableAjax;
this.EventTarget=this._eventTarget;
this.EventArgument=this._eventArgument;
this.EventTargetElement=this._eventTargetElement;
};
Telerik.Web.UI.RadAjaxRequestEventArgs.prototype={get_enableAjax:function(){
return this._enableAjax;
},set_enableAjax:function(_7d){
if(this._enableAjax!=_7d){
this._enableAjax=_7d;
}
},get_eventTarget:function(){
return this._eventTarget;
},get_eventArgument:function(){
return this._eventArgument;
},get_eventTargetElement:function(){
return this._eventTargetElement;
}};
Telerik.Web.UI.RadAjaxRequestEventArgs.registerClass("Telerik.Web.UI.RadAjaxRequestEventArgs",Sys.CancelEventArgs);
Telerik.Web.UI.RadAjaxControl.History={};
Telerik.Web.UI.RadAjaxControl.HandleHistory=function(_7e,_7f){
if(window.netscape){
return;
}
var _80=$get(_7e+"_History");
if(_80==null){
_80=document.createElement("iframe");
_80.id=_7e+"_History";
_80.name=_7e+"_History";
_80.style.width="0px";
_80.style.height="0px";
_80.src="javascript:''";
_80.style.visibility="hidden";
var _81=function(e){
if(!Telerik.Web.UI.RadAjaxControl.ShouldLoadHistory){
Telerik.Web.UI.RadAjaxControl.ShouldLoadHistory=true;
return;
}
var _83="";
var _84="";
var _85=_80.contentWindow.document.getElementById("__DATA");
if(!_85){
return;
}
var _86=_85.value.split("&");
for(var i=0,_88=_86.length;i<_88;i++){
var _89=_86[i].split("=");
if(_89[0]=="__EVENTTARGET"){
_83=_89[1];
}
if(_89[0]=="__EVENTARGUMENT"){
_84=_89[1];
}
var _8a=document.getElementById(Sys.WebForms.PageRequestManager.getInstance()._uniqueIDToClientID(_89[0]));
if(_8a!=null){
Telerik.Web.UI.RadAjaxControl.RestorePostData(_8a,Telerik.Web.UI.RadAjaxControl.DecodePostData(_89[1]));
}
}
if(_83!=""){
__doPostBack(Telerik.Web.UI.RadAjaxControl.DecodePostData(_83),Telerik.Web.UI.RadAjaxControl.DecodePostData(_84),_7e);
}
};
$addHandler(_80,"load",_81);
document.body.appendChild(_80);
}
if(Telerik.Web.UI.RadAjaxControl.History[_7f]==null){
Telerik.Web.UI.RadAjaxControl.History[_7f]=true;
Telerik.Web.UI.RadAjaxControl.AddHistoryEntry(_80,_7f);
}
};
Telerik.Web.UI.RadAjaxControl.AddHistoryEntry=function(_8b,_8c){
Telerik.Web.UI.RadAjaxControl.ShouldLoadHistory=false;
_8b.contentWindow.document.open();
_8b.contentWindow.document.write("<input id='__DATA' name='__DATA' type='hidden' value='"+_8c+"' />");
_8b.contentWindow.document.close();
if(window.netscape){
_8b.contentWindow.document.location.hash="#'"+new Date()+"'";
}
};
Telerik.Web.UI.RadAjaxControl.DecodePostData=function(_8d){
if(decodeURIComponent){
return decodeURIComponent(_8d);
}else{
return unescape(_8d);
}
};
Telerik.Web.UI.RadAjaxControl.RestorePostData=function(_8e,_8f){
if(_8e.tagName.toLowerCase()=="select"){
for(var i=0,_91=_8e.options.length;i<_91;i++){
if(_8f.indexOf(_8e.options[i].value)!=-1){
_8e.options[i].selected=true;
}
}
}
if(_8e.tagName.toLowerCase()=="input"&&(_8e.type.toLowerCase()=="text"||_8e.type.toLowerCase()=="hidden")){
_8e.value=_8f;
}
if(_8e.tagName.toLowerCase()=="input"&&(_8e.type.toLowerCase()=="checkbox"||_8e.type.toLowerCase()=="radio")){
_8e.checked=_8f;
}
};
Telerik.Web.UI.RadAjaxControl.GetNodeNextSibling=function(_92){
if(_92!=null&&_92.nextSibling!=null){
return _92.nextSibling;
}
return null;
};
Telerik.Web.UI.RadAjaxControl.InsertAtLocation=function(_93,_94,_95){
if(_95!=null){
return _94.insertBefore(_93,_95);
}else{
return _94.appendChild(_93);
}
};
Telerik.Web.UI.RadAjaxControl.FocusElement=function(_96){
var _97=document.getElementById(_96);
if(_97){
var _98=_97.tagName;
var _99=_97.type;
if(_98.toLowerCase()=="input"&&(_99.toLowerCase()=="checkbox"||_99.toLowerCase()=="radio")){
window.setTimeout(function(){
try{
_97.focus();
}
catch(e){
}
},500);
}else{
try{
Telerik.Web.UI.RadAjaxControl.SetSelectionFocus(_97);
_97.focus();
}
catch(e){
}
}
}
};
Telerik.Web.UI.RadAjaxControl.SetSelectionFocus=function(_9a){
if(_9a.createTextRange==null){
return;
}
var _9b=null;
try{
_9b=_9a.createTextRange();
}
catch(e){
}
if(_9b!=null){
_9b.moveStart("textedit",_9b.text.length);
_9b.collapse(false);
_9b.select();
}
};
Telerik.Web.UI.RadAjaxControl.panelsToClear=[];
Telerik.Web.UI.RadAjaxControl.UpdateElement=function(id,_9d){
var _9e=$get(id);
if(_9e!=null){
_9e.innerHTML=_9d;
var _9f=Telerik.Web.UI.RadAjaxControl.GetScriptsSrc(_9d);
for(var i=0,_a1=_9f.length;i<_a1;i++){
Telerik.Web.UI.RadAjaxControl.IncludeClientScript(_9f[i]);
}
_9f=Telerik.Web.UI.RadAjaxControl.GetTags(_9d,"script");
for(var i=0,_a1=_9f.length;i<_a1;i++){
var _a2=_9f[i];
if(_a2.inner!=""){
Telerik.Web.UI.RadAjaxControl.EvalScriptCode(_a2.inner);
}
}
var _a3=document.getElementsByTagName("head")[0];
var _a4=Telerik.Web.UI.RadAjaxControl.GetLinkHrefs(_9d);
for(var i=0,_a1=_a4.length;i<_a1;i++){
var _a5=_a4[i];
var _a6=document.createElement("link");
_a6.setAttribute("rel","stylesheet");
_a6.setAttribute("href",_a5);
_a3.appendChild(_a6);
}
}
};
Telerik.Web.UI.RadAjaxControl.IncludeClientScript=function(src){
var _a8=(window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
_a8.open("GET",src,false);
_a8.send(null);
if(_a8.status==200){
var _a9=_a8.responseText;
Telerik.Web.UI.RadAjaxControl.EvalScriptCode(_a9);
}
};
Telerik.Web.UI.RadAjaxControl.EvalScriptCode=function(_aa){
if(Telerik.Web.UI.RadAjaxControl.IsSafari()){
_aa=_aa.replace(/^\s*<!--((.|\n)*)-->\s*$/mi,"$1");
}
var _ab=document.createElement("script");
_ab.setAttribute("type","text/javascript");
if(Telerik.Web.UI.RadAjaxControl.IsSafari()){
_ab.appendChild(document.createTextNode(_aa));
}else{
_ab.text=_aa;
}
var _ac=document.getElementsByTagName("head")[0];
_ac.appendChild(_ab);
if(Telerik.Web.UI.RadAjaxControl.IsSafari()){
_ab.innerHTML="";
}else{
_ab.parentNode.removeChild(_ab);
}
};
Telerik.Web.UI.RadAjaxControl.GetTags=function(_ad,_ae){
var _af=[];
var _b0=_ad;
while(1){
var _b1=Telerik.Web.UI.RadAjaxControl.GetTag(_b0,_ae);
if(_b1.index==-1){
break;
}
_af[_af.length]=_b1;
var _b2=_b1.index+_b1.outer.length;
_b0=_b0.substring(_b2,_b0.length);
}
return _af;
};
Telerik.Web.UI.RadAjaxControl.GetTag=function(_b3,_b4,_b5){
if(typeof (_b5)=="undefined"){
_b5="";
}
var _b6=new RegExp("<"+_b4+"[^>]*>((.|\n|\r)*?)</"+_b4+">","i");
var _b7=_b3.match(_b6);
if(_b7!=null&&_b7.length>=2){
return {outer:_b7[0],inner:_b7[1],index:_b7.index};
}else{
return {outer:_b5,inner:_b5,index:-1};
}
};
Telerik.Web.UI.RadAjaxControl.GetLinkHrefs=function(_b8){
var _b9=_b8;
var _ba=[];
while(1){
var _bb=_b9.match(/<link[^>]*href=('|")?([^'"]*)('|")?([^>]*)>.*?(<\/link>)?/i);
if(_bb==null||_bb.length<3){
break;
}
var _bc=_bb[2];
_ba[_ba.length]=_bc;
var _bd=_bb.index+_bc.length;
_b9=_b9.substring(_bd,_b9.length);
}
return _ba;
};
Telerik.Web.UI.RadAjaxControl.GetScriptsSrc=function(_be){
var _bf=_be;
var _c0=[];
while(1){
var _c1=_bf.match(/<script[^>]*src=('|")?([^'"]*)('|")?([^>]*)>.*?(<\/script>)?/i);
if(_c1==null||_c1.length<3){
break;
}
var _c2=_c1[2];
_c0[_c0.length]=_c2;
var _c3=_c1.index+_c2.length;
_bf=_bf.substring(_c3,_bf.length);
}
return _c0;
};
Telerik.Web.UI.RadAjaxControl.IsSafari=function(){
return (navigator.userAgent.match(/safari/i)!=null);
};
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.RadAjaxLoadingPanel=function(_c4){
Telerik.Web.UI.RadAjaxLoadingPanel.initializeBase(this,[_c4]);
this._uniqueID="";
this._minDisplayTime=0;
this._initialDelayTime=0;
this._isSticky=false;
this._transparency=0;
this._manager=null;
this._zIndex=90000;
this.UniqueID=this._uniqueID;
this.MinDisplayTime=this._minDisplayTime;
this.InitialDelayTime=this._initialDelayTime;
this.IsSticky=this._isSticky;
this.Transparency=this._transparency;
this.ZIndex=this._zIndex;
};
Telerik.Web.UI.RadAjaxLoadingPanel.prototype={initialize:function(){
Telerik.Web.UI.RadAjaxLoadingPanel.callBaseMethod(this,"initialize");
},dispose:function(){
Telerik.Web.UI.RadAjaxLoadingPanel.callBaseMethod(this,"dispose");
},get_zIndex:function(){
return this._zIndex;
},set_zIndex:function(_c5){
if(this._zIndex!=_c5){
this._zIndex=_c5;
}
},get_uniqueID:function(){
return this._uniqueID;
},set_uniqueID:function(_c6){
if(this._uniqueID!=_c6){
this._uniqueID=_c6;
window[Sys.WebForms.PageRequestManager.getInstance()._uniqueIDToClientID(this._uniqueID)]=this;
}
},get_initialDelayTime:function(){
return this._initialDelayTime;
},set_initialDelayTime:function(_c7){
if(this._initialDelayTime!=_c7){
this._initialDelayTime=_c7;
}
},get_isSticky:function(){
return this._isSticky;
},set_isSticky:function(_c8){
if(this._isSticky!=_c8){
this._isSticky=_c8;
}
},get_minDisplayTime:function(){
return this._minDisplayTime;
},set_minDisplayTime:function(_c9){
if(this._minDisplayTime!=_c9){
this._minDisplayTime=_c9;
}
},get_transparency:function(){
return this._transparency;
},set_transparency:function(_ca){
if(this._transparency!=_ca){
this._transparency=_ca;
}
},show:function(_cb){
var _cc=$get(_cb+"_wrapper");
if((typeof (_cc)=="undefined")||(!_cc)){
_cc=$get(_cb);
}
var _cd=this.get_element();
if(!(_cc&&_cd)){
return false;
}
var _ce=this._initialDelayTime;
var _cf=this;
var _d0=(!this._isSticky)?this.cloneLoadingPanel(_cd,_cb):_cd;
if(_ce){
window.setTimeout(function(){
try{
if(_cf._manager!=null&&_cf._manager._isRequestInProgress){
_cf.displayLoadingElement(_d0,_cc);
}
}
catch(e){
}
},_ce);
}else{
this.displayLoadingElement(_d0,_cc);
}
return true;
},hide:function(_d1){
var _d2=$get(_d1);
var _d3=String.format("{0}_wrapper",_d1);
var _d4=$get(_d3);
if(_d4){
_d2=_d4;
}
if(this.get_element()==null){
var el=$get(Sys.WebForms.PageRequestManager.getInstance()._uniqueIDToClientID(this._uniqueID));
if(el==null){
return;
}
this._element=el;
}
var _d6=(!this._isSticky)?$get(this.get_element().id+_d1):this.get_element();
var now=new Date();
if(_d6==null){
return;
}
var _d8=now-_d6._startDisplayTime;
var _d9=this._minDisplayTime;
if(this._isSticky){
if(_d9>_d8){
window.setTimeout(function(){
_d6.style.display="none";
},_d9);
}else{
_d6.style.display="none";
}
}else{
if(_d9>_d8){
window.setTimeout(function(){
_d6.parentNode.removeChild(_d6);
if(typeof (_d2)!="undefined"&&(_d2!=null)){
_d2.style.visibility="visible";
}
},_d9);
}else{
_d6.parentNode.removeChild(_d6);
if(typeof (_d2)!="undefined"&&(_d2!=null)){
_d2.style.visibility="visible";
}
}
}
},cloneLoadingPanel:function(_da,_db){
var _dc=_da.cloneNode(false);
_dc.innerHTML=_da.innerHTML;
_dc.id=_da.id+_db;
document.body.insertBefore(_dc,document.body.firstChild);
return _dc;
},displayLoadingElement:function(_dd,_de){
if(!this._isSticky){
if($telerik.isIE6){
this._setDropDownsVisibitily(_de,false);
}
var _df=this.getElementRectangle(_de);
_dd.style.position="absolute";
_dd.style.width=_df.width+"px";
_dd.style.height=_df.height+"px";
_dd.style.left=_df.left+"px";
_dd.style.top=_df.top+"px";
_dd.style.textAlign="center";
_dd.style.zIndex=this._zIndex;
}
_dd.style.display="";
_dd._startDisplayTime=new Date();
var _e0=100-parseInt(this._transparency);
if(parseInt(this._transparency)>0){
if(_dd.style&&_dd.style.MozOpacity!=null){
_dd.style.MozOpacity=_e0/100;
}else{
if(_dd.style&&_dd.style.opacity!=null){
_dd.style.opacity=_e0/100;
}else{
if(_dd.style&&_dd.style.filter!=null){
_dd.style.filter="alpha(opacity="+_e0+");";
_dd.style.zoom=1;
}
}
}
}else{
if(!this._isSticky){
_de.style.visibility="hidden";
}
}
},_setDropDownsVisibitily:function(_e1,_e2){
if(!_e1){
_e1=this;
}
var _e3=_e1.getElementsByTagName("select");
for(var i=0;i<_e3.length;i++){
_e3[i].style.display=(_e2)?"":"none";
}
},getElementRectangle:function(_e5){
if(!_e5){
_e5=this;
}
var _e6=$telerik.getLocation(_e5);
var _e7=_e6.x;
var top=_e6.y;
var _e9=_e5.offsetWidth;
var _ea=_e5.offsetHeight;
return {"left":_e7,"top":top,"width":_e9,"height":_ea};
}};
Telerik.Web.UI.RadAjaxLoadingPanel.registerClass("Telerik.Web.UI.RadAjaxLoadingPanel",Sys.UI.Control);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.RadAjaxManager=function(_eb){
Telerik.Web.UI.RadAjaxManager.initializeBase(this,[_eb]);
this._ajaxSettings=[];
this._defaultLoadingPanelID="";
this._initiators={};
this._loadingPanelsToHide=[];
this._isRequestInProgress=false;
this.Type="Telerik.Web.UI.RadAjaxManager";
this._updatePanelsRenderMode=null;
this.AjaxSettings=this._ajaxSettings;
this.DefaultLoadingPanelID=this._defaultLoadingPanelID;
};
Telerik.Web.UI.RadAjaxManager.prototype={initialize:function(){
Telerik.Web.UI.RadAjaxManager.callBaseMethod(this,"initialize");
var _ec=this.get_element();
if(_ec!=null&&_ec.parentNode!=null&&_ec.parentNode.id==_ec.id+"SU"){
_ec.parentNode.style.display="none";
}
var _ed=this.get_ajaxSettings();
for(var i=0,_ef=_ed.length;i<_ef;i++){
this._initiators[_ed[i].InitControlID]=_ed[i].UpdatedControls;
}
},dispose:function(){
Telerik.Web.UI.RadAjaxManager.callBaseMethod(this,"dispose");
},get_ajaxSettings:function(){
return this._ajaxSettings;
},set_ajaxSettings:function(_f0){
if(this._ajaxSettings!=_f0){
this._ajaxSettings=_f0;
}
},get_defaultLoadingPanelID:function(){
return this._defaultLoadingPanelID;
},set_defaultLoadingPanelID:function(_f1){
if(this._defaultLoadingPanelID!=_f1){
this._defaultLoadingPanelID=_f1;
}
},get_updatePanelsRenderMode:function(){
return this._updatePanelsRenderMode;
},set_updatePanelsRenderMode:function(_f2){
if(this._updatePanelsRenderMode!=_f2){
this._updatePanelsRenderMode=_f2;
this._applyUpdatePanelsRenderMode(_f2);
}
},_applyUpdatePanelsRenderMode:function(_f3){
var _f4=Sys.WebForms.PageRequestManager.getInstance();
var ids=_f4._updatePanelClientIDs;
for(var i=0;i<ids.length;i++){
var _f7=$get(ids[i]);
if(_f7){
if(_f7.tagName.toLowerCase()=="span"){
continue;
}
_f7.style.display=(_f3==0)?"block":"inline";
}
}
},showLoadingPanels:function(id,_f9){
for(var i=0,_fb=_f9.length;i<_fb;i++){
if(_f9[i].InitControlID==id){
var _fc=_f9[i];
for(var j=0,_fe=_fc.UpdatedControls.length;j<_fe;j++){
var _ff=_fc.UpdatedControls[j];
var _100=_ff.PanelID;
if(_100==""){
_100=this._defaultLoadingPanelID;
}
var _101=_ff.ControlID;
if(_101==this._uniqueID){
continue;
}
var _102=$find(_100);
if(_102!=null){
_102._manager=this;
if(_102.show(_101)){
var obj={"Panel":_102,"ControlID":_101};
if(!Array.contains(this._loadingPanelsToHide,obj)){
this._loadingPanelsToHide[this._loadingPanelsToHide.length]=obj;
}
}
}
}
}
}
},_initializeRequest:function(_104,args){
Telerik.Web.UI.RadAjaxManager.callBaseMethod(this,"_initializeRequest",[_104,args]);
if(!this._isRequestInProgress){
return;
}
var _106=args.get_postBackElement();
if(_106!=null){
if(this._initiators[_106.id]){
this.showLoadingPanels(_106.id,this.get_ajaxSettings());
}else{
var _107=_106.parentNode;
var _108=false;
while(_107!=null){
if(_107.id&&this._initiators[_107.id]){
_108=true;
break;
}
_107=_107.parentNode;
}
if(_108){
this.showLoadingPanels(_107.id,this.get_ajaxSettings());
}
}
}
},updateElement:function(id,html){
Telerik.Web.UI.RadAjaxControl.UpdateElement(id,html);
}};
Telerik.Web.UI.RadAjaxManager.registerClass("Telerik.Web.UI.RadAjaxManager",Telerik.Web.UI.RadAjaxControl);
Telerik.Web.UI.RadAjaxManager.UpdateElement=function(id,html){
Telerik.Web.UI.RadAjaxControl.UpdateElement(id,html);
};
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.RadAjaxPanel=function(_10d){
Telerik.Web.UI.RadAjaxPanel.initializeBase(this,[_10d]);
this._loadingPanelID="";
this._loadingPanelsToHide=[];
this.Type="Telerik.Web.UI.RadAjaxPanel";
this.LoadingPanelID=this._loadingPanelID;
};
Telerik.Web.UI.RadAjaxPanel.prototype={initialize:function(){
var _10e=this.get_element().parentNode;
if(this.get_element().style.height!=""){
_10e.style.height=this.get_element().style.height;
this.get_element().style.height="100%";
}
if(this.get_element().style.width!=""){
_10e.style.width=this.get_element().style.width;
this.get_element().style.width="";
}
Telerik.Web.UI.RadAjaxPanel.callBaseMethod(this,"initialize");
},dispose:function(){
Telerik.Web.UI.RadAjaxPanel.callBaseMethod(this,"dispose");
},_initializeRequest:function(_10f,args){
Telerik.Web.UI.RadAjaxPanel.callBaseMethod(this,"_initializeRequest",[_10f,args]);
if(!this._isRequestInProgress){
return;
}
var _111=args.get_postBackElement();
if(_111!=null&&(_111==this.get_element()||this.isChildOf(_111,this.get_element()))){
var _112=$find(this._loadingPanelID);
if(_112!=null){
_112._manager=this;
if(_112.show(this.get_element().id)){
var obj={"Panel":_112,"ControlID":this.get_element().id};
if(!Array.contains(this._loadingPanelsToHide,obj)){
this._loadingPanelsToHide[this._loadingPanelsToHide.length]=obj;
}
}
}
}
},get_loadingPanelID:function(){
return this._loadingPanelID;
},set_loadingPanelID:function(_114){
if(this._loadingPanelID!=_114){
this._loadingPanelID=_114;
}
}};
Telerik.Web.UI.RadAjaxPanel.registerClass("Telerik.Web.UI.RadAjaxPanel",Telerik.Web.UI.RadAjaxControl);


/* END Telerik.Web.UI.Ajax.Ajax.js */
/* START Telerik.Web.UI.Common.Animation.AnimationScripts.js */
Type.registerNamespace("Telerik.Web.Animation");
var $TWA=Telerik.Web.Animation;
$TWA.registerAnimation=function(_1,_2){
if(_2&&((_2===$TWA.Animation)||(_2.inheritsFrom&&_2.inheritsFrom($TWA.Animation)))){
if(!$TWA.__animations){
$TWA.__animations={};
}
$TWA.__animations[_1.toLowerCase()]=_2;
_2.play=function(){
var _3=new _2();
_2.apply(_3,arguments);
_3.initialize();
var _4=Function.createDelegate(_3,function(){
_3.remove_ended(_4);
_4=null;
_3.dispose();
});
_3.add_ended(_4);
_3.play();
};
}else{
throw Error.argumentType("type",_2,$TWA.Animation,"Telerik.Web.Animation.registerAnimation can only register types that inherit from Telerik.Web.Animation.Animation");
}
};
$TWA.Animation=function(_5,_6,_7){
$TWA.Animation.initializeBase(this);
this._duration=1;
this._fps=25;
this._target=null;
this._tickHandler=null;
this._timer=null;
this._percentComplete=0;
this._percentDelta=null;
this._owner=null;
this._parentAnimation=null;
this.DynamicProperties={};
if(_5){
this.set_target(_5);
}
if(_6){
this.set_duration(_6);
}
if(_7){
this.set_fps(_7);
}
};
$TWA.Animation.prototype={dispose:function(){
if(this._timer){
this._timer.dispose();
this._timer=null;
}
this._tickHandler=null;
this._target=null;
$TWA.Animation.callBaseMethod(this,"dispose");
},play:function(){
if(!this._owner){
var _8=true;
if(!this._timer){
_8=false;
if(!this._tickHandler){
this._tickHandler=Function.createDelegate(this,this._onTimerTick);
}
this._timer=new Telerik.Web.Timer();
this._timer.add_tick(this._tickHandler);
this.onStart();
this._timer.set_interval(1000/this._fps);
this._percentDelta=100/(this._duration*this._fps);
this._updatePercentComplete(0,true);
}
this._timer.set_enabled(true);
this.raisePropertyChanged("isPlaying");
if(!_8){
this.raisePropertyChanged("isActive");
}
}
},pause:function(){
if(!this._owner){
if(this._timer){
this._timer.set_enabled(false);
this.raisePropertyChanged("isPlaying");
}
}
},stop:function(_9){
if(!this._owner){
var t=this._timer;
this._timer=null;
if(t){
t.dispose();
if(this._percentComplete!==100){
this._percentComplete=100;
this.raisePropertyChanged("percentComplete");
if(_9||_9===undefined){
this.onStep(100);
}
}
this.onEnd();
this.raisePropertyChanged("isPlaying");
this.raisePropertyChanged("isActive");
}
}
},onStart:function(){
this.raiseStarted();
for(var _b in this.DynamicProperties){
try{
this[_b](eval(this.DynamicProperties[_b]));
}
catch(ex){
if(Sys.Debug.isDebug){
throw ex;
}
}
}
},onStep:function(_c){
this.setValue(this.getAnimatedValue(_c));
},onEnd:function(){
this.raiseEnded();
},getAnimatedValue:function(_d){
throw Error.notImplemented();
},setValue:function(_e){
throw Error.notImplemented();
},interpolate:function(_f,end,_11){
return _f+(end-_f)*(_11/100);
},_onTimerTick:function(){
this._updatePercentComplete(this._percentComplete+this._percentDelta,true);
this.raise_onTick();
},_updatePercentComplete:function(_12,_13){
if(_12>100){
_12=100;
}
this._percentComplete=_12;
this.raisePropertyChanged("percentComplete");
if(_13){
this.onStep(_12);
}
if(_12===100){
this.stop(false);
}
},setOwner:function(_14){
this._owner=_14;
},raiseStarted:function(){
var _15=this.get_events().getHandler("started");
if(_15){
_15(this,Sys.EventArgs.Empty);
}
},add_started:function(_16){
this.get_events().addHandler("started",_16);
},remove_started:function(_17){
this.get_events().removeHandler("started",_17);
},raiseEnded:function(){
var _18=this.get_events().getHandler("ended");
if(_18){
_18(this,Sys.EventArgs.Empty);
}
},add_ended:function(_19){
this.get_events().addHandler("ended",_19);
},remove_ended:function(_1a){
this.get_events().removeHandler("ended",_1a);
},raise_onTick:function(){
var _1b=this.get_events().getHandler("onTick");
if(_1b){
_1b(this,Sys.EventArgs.Empty);
}
},add_onTick:function(_1c){
this.get_events().addHandler("onTick",_1c);
},remove_onTick:function(_1d){
this.get_events().removeHandler("onTick",_1d);
},get_target:function(){
if(!this._target&&this._parentAnimation){
return this._parentAnimation.get_target();
}
return this._target;
},set_target:function(_1e){
if(this._target!=_1e){
this._target=_1e;
this.raisePropertyChanged("target");
}
},set_animationTarget:function(id){
var _20=null;
var _21=$get(id);
if(_21){
_20=_21;
}else{
var _22=$find(id);
if(_22){
_21=_22.get_element();
if(_21){
_20=_21;
}
}
}
if(_20){
this.set_target(_20);
}else{
throw Error.argument("id",String.format("Telerik.Web.Animation.Animation.set_animationTarget requires the ID of a Sys.UI.DomElement or Sys.UI.Control.  No element or control could be found corresponding to \"{0}\"",id));
}
},get_duration:function(){
return this._duration;
},set_duration:function(_23){
_23=this._getFloat(_23);
if(this._duration!=_23){
this._duration=_23;
this.raisePropertyChanged("duration");
}
},get_fps:function(){
return this._fps;
},set_fps:function(_24){
_24=this._getInteger(_24);
if(this.fps!=_24){
this._fps=_24;
this.raisePropertyChanged("fps");
}
},get_isActive:function(){
return (this._timer!==null);
},get_isPlaying:function(){
return (this._timer!==null)&&this._timer.get_enabled();
},get_percentComplete:function(){
return this._percentComplete;
},_getBoolean:function(_25){
if(String.isInstanceOfType(_25)){
return Boolean.parse(_25);
}
return _25;
},_getInteger:function(_26){
if(String.isInstanceOfType(_26)){
return parseInt(_26);
}
return _26;
},_getFloat:function(_27){
if(String.isInstanceOfType(_27)){
return parseFloat(_27);
}
return _27;
},_getEnum:function(_28,_29){
if(String.isInstanceOfType(_28)&&_29&&_29.parse){
return _29.parse(_28);
}
return _28;
}};
$TWA.Animation.registerClass("Telerik.Web.Animation.Animation",Sys.Component);
$TWA.registerAnimation("animation",$TWA.Animation);
$TWA.ParentAnimation=function(_2a,_2b,fps,_2d){
$TWA.ParentAnimation.initializeBase(this,[_2a,_2b,fps]);
this._animations=[];
if(_2d&&_2d.length){
for(var i=0;i<_2d.length;i++){
this.add(_2d[i]);
}
}
};
$TWA.ParentAnimation.prototype={initialize:function(){
$TWA.ParentAnimation.callBaseMethod(this,"initialize");
if(this._animations){
for(var i=0;i<this._animations.length;i++){
var _30=this._animations[i];
if(_30&&!_30.get_isInitialized){
_30.initialize();
}
}
}
},dispose:function(){
this.clear();
this._animations=null;
$TWA.ParentAnimation.callBaseMethod(this,"dispose");
},get_animations:function(){
return this._animations;
},add:function(_31){
if(this._animations){
if(_31){
_31._parentAnimation=this;
}
Array.add(this._animations,_31);
this.raisePropertyChanged("animations");
}
},remove:function(_32){
if(this._animations){
if(_32){
_32.dispose();
}
Array.remove(this._animations,_32);
this.raisePropertyChanged("animations");
}
},removeAt:function(_33){
if(this._animations){
var _34=this._animations[_33];
if(_34){
_34.dispose();
}
Array.removeAt(this._animations,_33);
this.raisePropertyChanged("animations");
}
},clear:function(){
if(this._animations){
for(var i=this._animations.length-1;i>=0;i--){
this._animations[i].dispose();
this._animations[i]=null;
}
Array.clear(this._animations);
this._animations=[];
this.raisePropertyChanged("animations");
}
}};
$TWA.ParentAnimation.registerClass("Telerik.Web.Animation.ParentAnimation",$TWA.Animation);
$TWA.registerAnimation("parent",$TWA.ParentAnimation);
$TWA.ParallelAnimation=function(_36,_37,fps,_39){
$TWA.ParallelAnimation.initializeBase(this,[_36,_37,fps,_39]);
};
$TWA.ParallelAnimation.prototype={add:function(_3a){
$TWA.ParallelAnimation.callBaseMethod(this,"add",[_3a]);
_3a.setOwner(this);
},onStart:function(){
$TWA.ParallelAnimation.callBaseMethod(this,"onStart");
var _3b=this.get_animations();
for(var i=0;i<_3b.length;i++){
_3b[i].onStart();
}
},onStep:function(_3d){
var _3e=this.get_animations();
for(var i=0;i<_3e.length;i++){
_3e[i].onStep(_3d);
}
},onEnd:function(){
var _40=this.get_animations();
for(var i=0;i<_40.length;i++){
_40[i].onEnd();
}
$TWA.ParallelAnimation.callBaseMethod(this,"onEnd");
}};
$TWA.ParallelAnimation.registerClass("Telerik.Web.Animation.ParallelAnimation",$TWA.ParentAnimation);
$TWA.registerAnimation("parallel",$TWA.ParallelAnimation);
$TWA.FadeEffect=function(){
throw Error.invalidOperation();
};
$TWA.FadeEffect.prototype={FadeIn:0,FadeOut:1};
$TWA.FadeEffect.registerEnum("Telerik.Web.Animation.FadeEffect",false);
$TWA.FadeAnimation=function(_42,_43,fps,_45,_46,_47,_48){
$TWA.FadeAnimation.initializeBase(this,[_42,_43,fps]);
this._effect=(_45!==undefined)?_45:$TWA.FadeEffect.FadeIn;
this._max=(_47!==undefined)?_47:1;
this._min=(_46!==undefined)?_46:0;
this._start=this._min;
this._end=this._max;
this._layoutCreated=false;
this._forceLayoutInIE=(_48===undefined||_48===null)?true:_48;
this._currentTarget=null;
this._resetOpacities();
};
$TWA.FadeAnimation.prototype={_resetOpacities:function(){
if(this._effect==$TWA.FadeEffect.FadeIn){
this._start=this._min;
this._end=this._max;
}else{
this._start=this._max;
this._end=this._min;
}
},_createLayout:function(){
var _49=this._currentTarget;
if(_49){
var _4a=$telerik.getCurrentStyle(_49,"width");
var _4b=$telerik.getCurrentStyle(_49,"height");
var _4c=$telerik.getCurrentStyle(_49,"backgroundColor");
if((!_4a||_4a==""||_4a=="auto")&&(!_4b||_4b==""||_4b=="auto")){
_49.style.width=_49.offsetWidth+"px";
}
if(!_4c||_4c==""||_4c=="transparent"||_4c=="rgba(0, 0, 0, 0)"){
_49.style.backgroundColor=$telerik.getInheritedBackgroundColor(_49);
}
this._layoutCreated=true;
}
},onStart:function(){
$TWA.FadeAnimation.callBaseMethod(this,"onStart");
this._currentTarget=this.get_target();
this.setValue(this._start);
if(this._forceLayoutInIE&&!this._layoutCreated&&Sys.Browser.agent==Sys.Browser.InternetExplorer){
this._createLayout();
}
},getAnimatedValue:function(_4d){
return this.interpolate(this._start,this._end,_4d);
},setValue:function(_4e){
if(this._currentTarget){
$telerik.setOpacity(this._currentTarget,_4e);
}
},get_effect:function(){
return this._effect;
},set_effect:function(_4f){
_4f=this._getEnum(_4f,$TWA.FadeEffect);
if(this._effect!=_4f){
this._effect=_4f;
this._resetOpacities();
this.raisePropertyChanged("effect");
}
},get_minimumOpacity:function(){
return this._min;
},set_minimumOpacity:function(_50){
_50=this._getFloat(_50);
if(this._min!=_50){
this._min=_50;
this._resetOpacities();
this.raisePropertyChanged("minimumOpacity");
}
},get_maximumOpacity:function(){
return this._max;
},set_maximumOpacity:function(_51){
_51=this._getFloat(_51);
if(this._max!=_51){
this._max=_51;
this._resetOpacities();
this.raisePropertyChanged("maximumOpacity");
}
},get_forceLayoutInIE:function(){
return this._forceLayoutInIE;
},set_forceLayoutInIE:function(_52){
_52=this._getBoolean(_52);
if(this._forceLayoutInIE!=_52){
this._forceLayoutInIE=_52;
this.raisePropertyChanged("forceLayoutInIE");
}
},set_startValue:function(_53){
_53=this._getFloat(_53);
this._start=_53;
}};
$TWA.FadeAnimation.registerClass("Telerik.Web.Animation.FadeAnimation",$TWA.Animation);
$TWA.registerAnimation("fade",$TWA.FadeAnimation);
$TWA.FadeInAnimation=function(_54,_55,fps,_57,_58,_59){
$TWA.FadeInAnimation.initializeBase(this,[_54,_55,fps,$TWA.FadeEffect.FadeIn,_57,_58,_59]);
};
$TWA.FadeInAnimation.prototype={onStart:function(){
$TWA.FadeInAnimation.callBaseMethod(this,"onStart");
if(this._currentTarget){
this.set_startValue($telerik.getOpacity(this._currentTarget));
}
}};
$TWA.FadeInAnimation.registerClass("Telerik.Web.Animation.FadeInAnimation",$TWA.FadeAnimation);
$TWA.registerAnimation("fadeIn",$TWA.FadeInAnimation);
$TWA.FadeOutAnimation=function(_5a,_5b,fps,_5d,_5e,_5f){
$TWA.FadeOutAnimation.initializeBase(this,[_5a,_5b,fps,$TWA.FadeEffect.FadeOut,_5d,_5e,_5f]);
};
$TWA.FadeOutAnimation.prototype={onStart:function(){
$TWA.FadeOutAnimation.callBaseMethod(this,"onStart");
if(this._currentTarget){
this.set_startValue($telerik.getOpacity(this._currentTarget));
}
}};
$TWA.FadeOutAnimation.registerClass("Telerik.Web.Animation.FadeOutAnimation",$TWA.FadeAnimation);
$TWA.registerAnimation("fadeOut",$TWA.FadeOutAnimation);
$TWA.PropertyAnimation=function(_60,_61,fps,_63,_64){
$TWA.PropertyAnimation.initializeBase(this,[_60,_61,fps]);
this._property=_63;
this._propertyKey=_64;
this._currentTarget=null;
};
$TWA.PropertyAnimation.prototype={onStart:function(){
$TWA.PropertyAnimation.callBaseMethod(this,"onStart");
this._currentTarget=this.get_target();
},setValue:function(_65){
var _66=this._currentTarget;
if(_66&&this._property&&this._property.length>0){
if(this._propertyKey&&this._propertyKey.length>0&&_66[this._property]){
_66[this._property][this._propertyKey]=_65;
}else{
_66[this._property]=_65;
}
}
},getValue:function(){
var _67=this.get_target();
if(_67&&this._property&&this._property.length>0){
var _68=_67[this._property];
if(_68){
if(this._propertyKey&&this._propertyKey.length>0){
return _68[this._propertyKey];
}
return _68;
}
}
return null;
},get_property:function(){
return this._property;
},set_property:function(_69){
if(this._property!=_69){
this._property=_69;
this.raisePropertyChanged("property");
}
},get_propertyKey:function(){
return this._propertyKey;
},set_propertyKey:function(_6a){
if(this._propertyKey!=_6a){
this._propertyKey=_6a;
this.raisePropertyChanged("propertyKey");
}
}};
$TWA.PropertyAnimation.registerClass("Telerik.Web.Animation.PropertyAnimation",$TWA.Animation);
$TWA.registerAnimation("property",$TWA.PropertyAnimation);
$TWA.DiscreteAnimation=function(_6b,_6c,fps,_6e,_6f,_70){
$TWA.DiscreteAnimation.initializeBase(this,[_6b,_6c,fps,_6e,_6f]);
this._values=(_70&&_70.length)?_70:[];
};
$TWA.DiscreteAnimation.prototype={getAnimatedValue:function(_71){
var _72=Math.floor(this.interpolate(0,this._values.length-1,_71));
return this._values[_72];
},get_values:function(){
return this._values;
},set_values:function(_73){
if(this._values!=_73){
this._values=_73;
this.raisePropertyChanged("values");
}
}};
$TWA.DiscreteAnimation.registerClass("Telerik.Web.Animation.DiscreteAnimation",$TWA.PropertyAnimation);
$TWA.registerAnimation("discrete",$TWA.DiscreteAnimation);
$TWA.InterpolatedAnimation=function(_74,_75,fps,_77,_78,_79,_7a){
$TWA.InterpolatedAnimation.initializeBase(this,[_74,_75,fps,((_77!==undefined)?_77:"style"),_78]);
this._startValue=_79;
this._endValue=_7a;
};
$TWA.InterpolatedAnimation.prototype={get_startValue:function(){
return this._startValue;
},set_startValue:function(_7b){
_7b=this._getFloat(_7b);
if(this._startValue!=_7b){
this._startValue=_7b;
this.raisePropertyChanged("startValue");
}
},get_endValue:function(){
return this._endValue;
},set_endValue:function(_7c){
_7c=this._getFloat(_7c);
if(this._endValue!=_7c){
this._endValue=_7c;
this.raisePropertyChanged("endValue");
}
}};
$TWA.InterpolatedAnimation.registerClass("Telerik.Web.Animation.InterpolatedAnimation",$TWA.PropertyAnimation);
$TWA.registerAnimation("interpolated",$TWA.InterpolatedAnimation);
$TWA.ColorAnimation=function(_7d,_7e,fps,_80,_81,_82,_83){
$TWA.ColorAnimation.initializeBase(this,[_7d,_7e,fps,_80,_81,_82,_83]);
this._start=null;
this._end=null;
this._interpolateRed=false;
this._interpolateGreen=false;
this._interpolateBlue=false;
};
$TWA.ColorAnimation.prototype={onStart:function(){
$TWA.ColorAnimation.callBaseMethod(this,"onStart");
this._start=$TWA.ColorAnimation.getRGB(this.get_startValue());
this._end=$TWA.ColorAnimation.getRGB(this.get_endValue());
this._interpolateRed=(this._start.Red!=this._end.Red);
this._interpolateGreen=(this._start.Green!=this._end.Green);
this._interpolateBlue=(this._start.Blue!=this._end.Blue);
},getAnimatedValue:function(_84){
var r=this._start.Red;
var g=this._start.Green;
var b=this._start.Blue;
if(this._interpolateRed){
r=Math.round(this.interpolate(r,this._end.Red,_84));
}
if(this._interpolateGreen){
g=Math.round(this.interpolate(g,this._end.Green,_84));
}
if(this._interpolateBlue){
b=Math.round(this.interpolate(b,this._end.Blue,_84));
}
return $TWA.ColorAnimation.toColor(r,g,b);
},set_startValue:function(_88){
if(this._startValue!=_88){
this._startValue=_88;
this.raisePropertyChanged("startValue");
}
},set_endValue:function(_89){
if(this._endValue!=_89){
this._endValue=_89;
this.raisePropertyChanged("endValue");
}
}};
$TWA.ColorAnimation.getRGB=function(_8a){
if(!_8a||_8a.length!=7){
throw String.format("Color must be a 7-character hex representation (e.g. #246ACF), not \"{0}\"",_8a);
}
return {"Red":parseInt(_8a.substr(1,2),16),"Green":parseInt(_8a.substr(3,2),16),"Blue":parseInt(_8a.substr(5,2),16)};
};
$TWA.ColorAnimation.toColor=function(red,_8c,_8d){
var r=red.toString(16);
var g=_8c.toString(16);
var b=_8d.toString(16);
if(r.length==1){
r="0"+r;
}
if(g.length==1){
g="0"+g;
}
if(b.length==1){
b="0"+b;
}
return "#"+r+g+b;
};
$TWA.ColorAnimation.registerClass("Telerik.Web.Animation.ColorAnimation",$TWA.InterpolatedAnimation);
$TWA.registerAnimation("color",$TWA.ColorAnimation);
$TWA.LengthAnimation=function(_91,_92,fps,_94,_95,_96,_97,_98){
$TWA.LengthAnimation.initializeBase(this,[_91,_92,fps,_94,_95,_96,_97]);
this._unit=(_98!=null)?_98:"px";
};
$TWA.LengthAnimation.prototype={getAnimatedValue:function(_99){
var _9a=this.interpolate(this.get_startValue(),this.get_endValue(),_99);
return Math.round(_9a)+this._unit;
},get_unit:function(){
return this._unit;
},set_unit:function(_9b){
if(this._unit!=_9b){
this._unit=_9b;
this.raisePropertyChanged("unit");
}
}};
$TWA.LengthAnimation.registerClass("Telerik.Web.Animation.LengthAnimation",$TWA.InterpolatedAnimation);
$TWA.registerAnimation("length",$TWA.LengthAnimation);
$TWA.MoveAnimation=function(_9c,_9d,fps,_9f,_a0,_a1,_a2){
$TWA.MoveAnimation.initializeBase(this,[_9c,_9d,fps,null]);
this._horizontal=_9f?_9f:0;
this._vertical=_a0?_a0:0;
this._relative=(_a1===undefined)?true:_a1;
this._horizontalAnimation=new $TWA.LengthAnimation(_9c,_9d,fps,"style","left",null,null,_a2);
this._verticalAnimation=new $TWA.LengthAnimation(_9c,_9d,fps,"style","top",null,null,_a2);
this.add(this._verticalAnimation);
this.add(this._horizontalAnimation);
};
$TWA.MoveAnimation.prototype={onStart:function(){
$TWA.MoveAnimation.callBaseMethod(this,"onStart");
var _a3=this.get_target();
this._horizontalAnimation.set_startValue(_a3.offsetLeft);
this._horizontalAnimation.set_endValue(this._relative?_a3.offsetLeft+this._horizontal:this._horizontal);
this._verticalAnimation.set_startValue(_a3.offsetTop);
this._verticalAnimation.set_endValue(this._relative?_a3.offsetTop+this._vertical:this._vertical);
},get_horizontal:function(){
return this._horizontal;
},set_horizontal:function(_a4){
_a4=this._getFloat(_a4);
if(this._horizontal!=_a4){
this._horizontal=_a4;
this.raisePropertyChanged("horizontal");
}
},get_vertical:function(){
return this._vertical;
},set_vertical:function(_a5){
_a5=this._getFloat(_a5);
if(this._vertical!=_a5){
this._vertical=_a5;
this.raisePropertyChanged("vertical");
}
},get_relative:function(){
return this._relative;
},set_relative:function(_a6){
_a6=this._getBoolean(_a6);
if(this._relative!=_a6){
this._relative=_a6;
this.raisePropertyChanged("relative");
}
},get_unit:function(){
this._horizontalAnimation.get_unit();
},set_unit:function(_a7){
var _a8=this._horizontalAnimation.get_unit();
if(_a8!=_a7){
this._horizontalAnimation.set_unit(_a7);
this._verticalAnimation.set_unit(_a7);
this.raisePropertyChanged("unit");
}
}};
$TWA.MoveAnimation.registerClass("Telerik.Web.Animation.MoveAnimation",$TWA.ParallelAnimation);
$TWA.registerAnimation("move",$TWA.MoveAnimation);
$TWA.ResizeAnimation=function(_a9,_aa,fps,_ac,_ad,_ae){
$TWA.ResizeAnimation.initializeBase(this,[_a9,_aa,fps,null]);
this._width=_ac;
this._height=_ad;
this._horizontalAnimation=new $TWA.LengthAnimation(_a9,_aa,fps,"style","width",null,null,_ae);
this._verticalAnimation=new $TWA.LengthAnimation(_a9,_aa,fps,"style","height",null,null,_ae);
this.add(this._horizontalAnimation);
this.add(this._verticalAnimation);
};
$TWA.ResizeAnimation.prototype={onStart:function(){
$TWA.ResizeAnimation.callBaseMethod(this,"onStart");
var _af=this.get_target();
this._horizontalAnimation.set_startValue(_af.offsetWidth);
this._verticalAnimation.set_startValue(_af.offsetHeight);
this._horizontalAnimation.set_endValue((this._width!==null&&this._width!==undefined)?this._width:_af.offsetWidth);
this._verticalAnimation.set_endValue((this._height!==null&&this._height!==undefined)?this._height:_af.offsetHeight);
},get_width:function(){
return this._width;
},set_width:function(_b0){
_b0=this._getFloat(_b0);
if(this._width!=_b0){
this._width=_b0;
this.raisePropertyChanged("width");
}
},get_height:function(){
return this._height;
},set_height:function(_b1){
_b1=this._getFloat(_b1);
if(this._height!=_b1){
this._height=_b1;
this.raisePropertyChanged("height");
}
},get_unit:function(){
this._horizontalAnimation.get_unit();
},set_unit:function(_b2){
var _b3=this._horizontalAnimation.get_unit();
if(_b3!=_b2){
this._horizontalAnimation.set_unit(_b2);
this._verticalAnimation.set_unit(_b2);
this.raisePropertyChanged("unit");
}
}};
$TWA.ResizeAnimation.registerClass("Telerik.Web.Animation.ResizeAnimation",$TWA.ParallelAnimation);
$TWA.registerAnimation("resize",$TWA.ResizeAnimation);
$TWA.SequenceAnimation=function(_b4,_b5,fps,_b7,_b8){
$TWA.SequenceAnimation.initializeBase(this,[_b4,_b5,fps,_b7]);
this._handler=null;
this._paused=false;
this._playing=false;
this._index=0;
this._remainingIterations=0;
this._iterations=(_b8!==undefined)?_b8:1;
};
$TWA.SequenceAnimation.prototype={dispose:function(){
this._handler=null;
$TWA.SequenceAnimation.callBaseMethod(this,"dispose");
},stop:function(){
if(this._playing){
var _b9=this.get_animations();
if(this._index<_b9.length){
_b9[this._index].remove_ended(this._handler);
for(var i=this._index;i<_b9.length;i++){
_b9[i].stop();
}
}
this._playing=false;
this._paused=false;
this.raisePropertyChanged("isPlaying");
this.onEnd();
}
},pause:function(){
if(this.get_isPlaying()){
var _bb=this.get_animations()[this._index];
if(_bb!=null){
_bb.pause();
}
this._paused=true;
this.raisePropertyChanged("isPlaying");
}
},play:function(){
var _bc=this.get_animations();
if(!this._playing){
this._playing=true;
if(this._paused){
this._paused=false;
var _bd=_bc[this._index];
if(_bd!=null){
_bd.play();
this.raisePropertyChanged("isPlaying");
}
}else{
this.onStart();
this._index=0;
var _be=_bc[this._index];
if(_be){
_be.add_ended(this._handler);
_be.play();
this.raisePropertyChanged("isPlaying");
}else{
this.stop();
}
}
}
},onStart:function(){
$TWA.SequenceAnimation.callBaseMethod(this,"onStart");
this._remainingIterations=this._iterations-1;
if(!this._handler){
this._handler=Function.createDelegate(this,this._onEndAnimation);
}
},_onEndAnimation:function(){
var _bf=this.get_animations();
var _c0=_bf[this._index++];
if(_c0){
_c0.remove_ended(this._handler);
}
if(this._index<_bf.length){
var _c1=_bf[this._index];
_c1.add_ended(this._handler);
_c1.play();
}else{
if(this._remainingIterations>=1||this._iterations<=0){
this._remainingIterations--;
this._index=0;
var _c2=_bf[0];
_c2.add_ended(this._handler);
_c2.play();
}else{
this.stop();
}
}
},onStep:function(_c3){
throw Error.invalidOperation("CANNOT NEST");
},onEnd:function(){
this._remainingIterations=0;
$TWA.SequenceAnimation.callBaseMethod(this,"onEnd");
},get_isActive:function(){
return true;
},get_isPlaying:function(){
return this._playing&&!this._paused;
},get_iterations:function(){
return this._iterations;
},set_iterations:function(_c4){
_c4=this._getInteger(_c4);
if(this._iterations!=_c4){
this._iterations=_c4;
this.raisePropertyChanged("iterations");
}
},get_isInfinite:function(){
return this._iterations<=0;
}};
$TWA.SequenceAnimation.registerClass("Telerik.Web.Animation.SequenceAnimation",$TWA.ParentAnimation);
$TWA.registerAnimation("sequence",$TWA.SequenceAnimation);
$TWA.PulseAnimation=function(_c5,_c6,fps,_c8,_c9,_ca,_cb){
$TWA.PulseAnimation.initializeBase(this,[_c5,_c6,fps,null,((_c8!==undefined)?_c8:3)]);
this._out=new $TWA.FadeOutAnimation(_c5,_c6,fps,_c9,_ca,_cb);
this.add(this._out);
this._in=new $TWA.FadeInAnimation(_c5,_c6,fps,_c9,_ca,_cb);
this.add(this._in);
};
$TWA.PulseAnimation.prototype={get_minimumOpacity:function(){
return this._out.get_minimumOpacity();
},set_minimumOpacity:function(_cc){
_cc=this._getFloat(_cc);
this._out.set_minimumOpacity(_cc);
this._in.set_minimumOpacity(_cc);
this.raisePropertyChanged("minimumOpacity");
},get_maximumOpacity:function(){
return this._out.get_maximumOpacity();
},set_maximumOpacity:function(_cd){
_cd=this._getFloat(_cd);
this._out.set_maximumOpacity(_cd);
this._in.set_maximumOpacity(_cd);
this.raisePropertyChanged("maximumOpacity");
},get_forceLayoutInIE:function(){
return this._out.get_forceLayoutInIE();
},set_forceLayoutInIE:function(_ce){
_ce=this._getBoolean(_ce);
this._out.set_forceLayoutInIE(_ce);
this._in.set_forceLayoutInIE(_ce);
this.raisePropertyChanged("forceLayoutInIE");
},set_duration:function(_cf){
_cf=this._getFloat(_cf);
$TWA.PulseAnimation.callBaseMethod(this,"set_duration",[_cf]);
this._in.set_duration(_cf);
this._out.set_duration(_cf);
},set_fps:function(_d0){
_d0=this._getInteger(_d0);
$TWA.PulseAnimation.callBaseMethod(this,"set_fps",[_d0]);
this._in.set_fps(_d0);
this._out.set_fps(_d0);
}};
$TWA.PulseAnimation.registerClass("Telerik.Web.Animation.PulseAnimation",$TWA.SequenceAnimation);
$TWA.registerAnimation("pulse",$TWA.PulseAnimation);
Type.registerNamespace("Telerik.Web.UI.Animations");
Telerik.Web.UI.Animations.ShowHideAnimation=function(_d1,_d2,fps,_d4,_d5,_d6){
this.controller=_d1;
this._duration=(_d2!=null)?_d2:0.3;
this._fps=(fps!=null)?fps:50;
this._frames=_d2*fps;
this._position=null!=_d5?_d5:32;
this._animatedElement=_d4;
this._sourceElement=_d6;
this._startBounds=null;
this._endBounds=null;
this._showAnimation=null;
this._hideAnimation=null;
};
Telerik.Web.UI.Animations.ShowHideAnimation.prototype={_getHorizontalPosition:function(){
return parseInt((this._position+"").charAt(1));
},_getVerticalPosition:function(){
return parseInt((this._position+"").charAt(0));
},_onBeforeShow:function(){
},_onBeforeHide:function(){
},_onAfterShow:function(){
},_onAfterHide:function(){
},onShowStart:function(){
},onHideStart:function(){
},onShowEnd:function(){
},onHideEnd:function(){
},play:function(_d7){
var _d8=(true==_d7)?this._hideAnimation:this._showAnimation;
if(_d8){
if(!_d8.__isTelerikModified){
_d8.__isTelerikModified=true;
var _d9=_d8.onStart;
_d8.add_started(Function.createDelegate(this,function(){
if(_d7){
this.onHideStart();
}else{
this.onShowStart();
}
if(true==_d7){
this._onBeforeHide();
}else{
this._onBeforeShow();
}
}));
var _da=_d8.onEnd;
_d8.add_ended(Function.createDelegate(this,function(){
if(this.onEnd){
this.onEnd(_d7);
}
if(true==_d7){
this._onAfterHide();
}else{
this._onAfterShow();
}
if(_d7){
this.onHideEnd();
}else{
this.onShowEnd();
}
}));
}
_d8.set_duration(this._duration);
_d8.play();
}
this._runningAnimation=_d8;
},set_startBounds:function(_db){
this._startBounds=_db;
},set_endBounds:function(_dc){
this._endBounds=_dc;
},dispose:function(){
this.stop();
if(this._showAnimation){
this._showAnimation.dispose();
}
if(this._hideAnimation){
this._hideAnimation.dispose();
}
},stop:function(){
if(this._runningAnimation){
this._runningAnimation.stop();
this._runningAnimation=null;
}
},pause:function(){
if(this._runningAnimation){
this._runningAnimation.pause();
}
},resume:function(){
if(this._runningAnimation){
this._runningAnimation.play();
}
},set_position:function(_dd){
this._position=_dd;
},set_duration:function(_de){
this._duration=_de;
if(this._showAnimation){
this._showAnimation.set_duration(this._duration);
}
if(this._hideAnimation){
this._hideAnimation.set_duration(this._duration);
}
},get_startBounds:function(){
return this._startBounds;
},get_endBounds:function(){
return this._endBounds;
}};
Telerik.Web.UI.Animations.ShowHideAnimation.registerClass("Telerik.Web.UI.Animations.ShowHideAnimation",null);
Telerik.Web.UI.Animations.ResizeAnimation=function(_df,_e0,fps,_e2,_e3,_e4){
Telerik.Web.UI.Animations.ResizeAnimation.initializeBase(this,[_df,_e0,fps,_e2,_e3,_e4]);
var _e0=this._duration;
var fps=this._fps;
var _e5=this._animatedElement;
var _e6,_e7,_e8,_e9,_ea,_eb;
var _ec=new Telerik.Web.Animation.ResizeAnimation(_e5,_e0,fps,_e6,_e7,"px");
var _ed=new Telerik.Web.Animation.LengthAnimation(_e5,_e0,fps,"style","left",_ea,_eb,"px");
var _ee=new Telerik.Web.Animation.LengthAnimation(_e5,_e0,fps,"style","top",_e8,_e9,"px");
var _ef=new Telerik.Web.Animation.FadeInAnimation(_e5,_e0,fps,0.3,1,false);
this._showAnimation=new Telerik.Web.Animation.ParallelAnimation(_e5,_e0,fps,[_ec,_ed,_ee,_ef]);
this._hideAnimation=new Telerik.Web.Animation.FadeInAnimation(this._animatedElement,this._duration,this._fps,1,0,false);
};
Telerik.Web.UI.Animations.ResizeAnimation.prototype={_configureAnimatedElement:function(){
var _f0=this._animatedElement;
_f0.style.overflow="hidden";
_f0.style.display="";
_f0.style.visibility="visible";
_f0.style.width="1px";
_f0.style.height="1px";
},_configureAnimation:function(_f1){
var _f2=this._showAnimation.get_animations();
var _f3=_f2[0];
_f3.set_width(_f1.width);
_f3.set_height(_f1.height);
var _f4=_f2[1];
_f4.set_startValue(_f1.startX);
_f4.set_endValue(_f1.endX);
var _f5=_f2[2];
_f5.set_startValue(_f1.startY);
_f5.set_endValue(_f1.endY);
},_getStartBounds:function(){
var _f6=null;
if(this._startBounds){
_f6=this._startBounds;
}else{
if(this._sourceElement){
_f6=$telerik.getBounds(this._sourceElement);
}else{
_f6=new Sys.UI.Bounds(1,1,1,1);
}
}
return _f6;
},_getEndBounds:function(){
return this._endBounds;
},_modifyAnimationValues:function(_f7){
var _f8=this._animatedElement;
var _f9=this._getStartBounds();
if(_f9.width<_f7.width){
_f7.startX=_f9.x;
_f8.style.width=_f9.width;
}
if(_f9.height<_f7.height){
_f7.startY=_f9.y;
_f8.style.height=_f9.height;
}
},_setHorizontalValues:function(_fa){
var _fb=this._getHorizontalPosition();
var _fc=this._getEndBounds();
switch(_fb){
case 2:
_fa.startX=_fc.x+Math.floor(_fc.width/2);
_fa.endX=_fc.x;
break;
case 3:
_fa.startX=_fc.x;
_fa.endX=_fc.x;
break;
case 1:
_fa.startX=_fc.x+_fc.width;
_fa.endX=_fc.x;
}
},_setVerticalValues:function(_fd){
var _fe=this._getVerticalPosition();
var _ff=this._getEndBounds();
switch(_fe){
case 2:
_fd.startY=_ff.y+Math.floor(_ff.height/2);
_fd.endY=_ff.y;
break;
case 1:
_fd.startY=_ff.y+_ff.height;
_fd.endY=_ff.y;
break;
case 3:
_fd.startY=_ff.y;
_fd.endY=_ff.y;
}
},_setSizeValues:function(_100){
var _101=this._endBounds;
_100["width"]=_101.width;
_100["height"]=_101.height;
},_onBeforeShow:function(){
var _102={};
this._setHorizontalValues(_102);
this._setVerticalValues(_102);
this._setSizeValues(_102);
this._configureAnimatedElement();
this._modifyAnimationValues(_102);
this._configureAnimation(_102);
},_onAfterShow:function(){
this._animatedElement.style.overflow="";
this._animatedElement.style.filter="";
}};
Telerik.Web.UI.Animations.ResizeAnimation.registerClass("Telerik.Web.UI.Animations.ResizeAnimation",Telerik.Web.UI.Animations.ShowHideAnimation);
Telerik.Web.UI.Animations.SlideAnimation=function(_103,_104,fps,_106,_107,_108){
Telerik.Web.UI.Animations.SlideAnimation.initializeBase(this,[_103,_104,fps,_106,_107,_108]);
};
Telerik.Web.UI.Animations.SlideAnimation.prototype={_modifyAnimationValues:function(_109){
},_configureAnimatedElement:function(){
var _10a=this._animatedElement;
_10a.style.overflow="hidden";
_10a.style.display="";
_10a.style.visibility="visible";
var _10b=this._getVerticalPosition();
if(_10b==2){
_10a.style.width="1px";
}else{
_10a.style.height="1px";
}
},_setHorizontalValues:function(_10c){
var _10d=this._getHorizontalPosition();
var _10e=this._getEndBounds();
switch(_10d){
case 2:
_10c.startX=_10e.x;
_10c.endX=_10e.x;
break;
case 3:
_10c.startX=_10e.x;
_10c.endX=_10e.x;
break;
case 1:
var _10f=_10e.x;
if(2==this._getVerticalPosition()){
_10f+=_10e.width;
}
_10c.startX=_10f;
_10c.endX=_10e.x;
}
},_setVerticalValues:function(_110){
var _111=this._getVerticalPosition();
var _112=this._getEndBounds();
switch(_111){
case 2:
_110.startY=_112.y;
_110.endY=_112.y;
break;
case 1:
_110.startY=_112.y+_112.height;
_110.endY=_112.y;
break;
case 3:
_110.startY=_112.y;
_110.endY=_112.y;
}
}};
Telerik.Web.UI.Animations.SlideAnimation.registerClass("Telerik.Web.UI.Animations.SlideAnimation",Telerik.Web.UI.Animations.ResizeAnimation);
Telerik.Web.UI.Animations.FlyInAnimation=function(_113,_114,fps,_116,_117,_118){
Telerik.Web.UI.Animations.FlyInAnimation.initializeBase(this,[_113,_114,fps,_116,_117,_118]);
};
Telerik.Web.UI.Animations.FlyInAnimation.prototype={_modifyAnimationValues:function(_119){
},_setHorizontalValues:function(_11a){
var _11b=this._getHorizontalPosition();
var _11c=this._getEndBounds();
var _11d=$telerik.getClientBounds();
switch(_11b){
case 2:
_11a.startX=_11c.x;
_11a.endX=_11c.x;
break;
case 3:
_11a.startX=_11d.width;
_11a.endX=_11c.x;
break;
case 1:
_11a.startX=_11d.x;
_11a.endX=_11c.x;
}
},_setVerticalValues:function(_11e){
var _11f=this._getVerticalPosition();
var _120=this._getEndBounds();
var _121=$telerik.getClientBounds();
switch(_11f){
case 2:
_11e.startY=_120.y;
_11e.endY=_120.y;
break;
case 1:
_11e.startY=_121.y-_120.height;
_11e.endY=_120.y;
break;
case 3:
_11e.startY=_121.height;
_11e.endY=_120.y;
}
}};
Telerik.Web.UI.Animations.FlyInAnimation.registerClass("Telerik.Web.UI.Animations.FlyInAnimation",Telerik.Web.UI.Animations.ResizeAnimation);
Telerik.Web.UI.Animations.FadeAnimation=function(_122,_123,fps,_125){
Telerik.Web.UI.Animations.FadeAnimation.initializeBase(this,[_122,_123,fps,_125]);
this._showAnimation=new Telerik.Web.Animation.FadeInAnimation(this._animatedElement,this._duration,this._fps,0.5,1,false);
this._hideAnimation=new Telerik.Web.Animation.FadeInAnimation(this._animatedElement,this._duration,this._fps,0.9,0,false);
};
Telerik.Web.UI.Animations.FadeAnimation.prototype={_onAfterShow:function(){
this._animatedElement.style.filter="";
}};
Telerik.Web.UI.Animations.FadeAnimation.registerClass("Telerik.Web.UI.Animations.FadeAnimation",Telerik.Web.UI.Animations.ShowHideAnimation);
Telerik.Web.UI.Animations.SimpleResizeAnimation=function(_126,_127,fps,_129,_12a,_12b){
Telerik.Web.UI.Animations.SimpleResizeAnimation.initializeBase(this,[_126,_127,fps,_129,_12a,_12b]);
};
Telerik.Web.UI.Animations.SimpleResizeAnimation.prototype={_modifyAnimationValues:function(_12c){
},_configureAnimation:function(_12d){
Telerik.Web.UI.Animations.SimpleResizeAnimation.callBaseMethod(this,"_configureAnimation",[_12d]);
var _12e=this._showAnimation.get_animations();
var _12f=_12e[0];
var _130=this._getStartBounds();
_12f.onStart=function(){
$TWA.ResizeAnimation.callBaseMethod(this,"onStart");
var _131=this.get_target();
this._horizontalAnimation.set_startValue(_130.width);
this._verticalAnimation.set_startValue(_130.height);
this._horizontalAnimation.set_endValue((this._width!==null&&this._width!==undefined)?this._width:_131.offsetWidth);
this._verticalAnimation.set_endValue((this._height!==null&&this._height!==undefined)?this._height:_131.offsetHeight);
};
},_configureAnimatedElement:function(){
var _132=this._animatedElement;
_132.style.overflow="hidden";
_132.style.display="";
_132.style.visibility="visible";
},_setHorizontalValues:function(_133){
var _134=this._getHorizontalPosition();
var _135=this._getStartBounds();
var _136=this._getEndBounds();
_133.startX=_135.x;
_133.endX=_136.x;
},_setVerticalValues:function(_137){
var _138=this._getVerticalPosition();
var _139=this._getStartBounds();
var _13a=this._getEndBounds();
_137.startY=_139.y;
_137.endY=_13a.y;
}};
Telerik.Web.UI.Animations.SimpleResizeAnimation.registerClass("Telerik.Web.UI.Animations.SimpleResizeAnimation",Telerik.Web.UI.Animations.ResizeAnimation);
Telerik.Web.UI.Animations.ScrollAnimation=function(_13b,_13c,fps,_13e,_13f,_140){
Telerik.Web.UI.Animations.ScrollAnimation.initializeBase(this,[_13b,_13c,fps,_13e,_13f,_140]);
var _141=this._showAnimation.get_animations();
if(_141[3]){
this._showAnimation.remove(_141[3]);
}
};
Telerik.Web.UI.Animations.ScrollAnimation.prototype={_modifyAnimationValues:function(_142){
},_configureAnimatedElement:function(){
},_setHorizontalValues:function(_143){
var _144=this._getStartBounds();
var _145=this._getEndBounds();
var _146=this._getHorizontalPosition();
switch(_146){
case 2:
_143.startX=_144.x;
_143.endX=_144.x;
break;
case 3:
_143.startX=_144.x;
_143.endX=_144.x+_145.x;
break;
case 1:
_143.startX=_144.x;
_143.endX=_144.x-_145.x;
}
},_setVerticalValues:function(_147){
var _148=this._getVerticalPosition();
var _149=this._getStartBounds();
var _14a=this._getEndBounds();
switch(_148){
case 2:
_147.startY=_14a.y;
_147.endY=_14a.y;
break;
case 1:
_147.startY=_149.y;
_147.endY=_149.y-_14a.y;
break;
case 3:
_147.startY=_149.y;
_147.endY=_149.y+_14a.y;
}
}};
Telerik.Web.UI.Animations.ScrollAnimation.registerClass("Telerik.Web.UI.Animations.ScrollAnimation",Telerik.Web.UI.Animations.ResizeAnimation);


/* END Telerik.Web.UI.Common.Animation.AnimationScripts.js */
/* START Telerik.Web.UI.Common.Navigation.NavigationScripts.js */
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.AnimationType=function(){
};
Telerik.Web.UI.AnimationType.toEasing=function(_1){
return "ease"+Telerik.Web.UI.AnimationType.toString(_1);
};
Telerik.Web.UI.AnimationType.prototype={None:0,Linear:1,InQuad:2,OutQuad:3,InOutQuad:4,InCubic:5,OutCubic:6,InOutCubic:7,InQuart:8,OutQuart:9,InOutQuart:10,InQuint:11,OutQuint:12,InOutQuint:13,InSine:14,OutSine:15,InOutSine:16,InExpo:17,OutExpo:18,InOutExpo:19,InBack:20,OutBack:21,InOutBack:22,InBounce:23,OutBounce:24,InOutBounce:25,InElastic:26,OutElastic:27,InOutElastic:28};
Telerik.Web.UI.AnimationType.registerEnum("Telerik.Web.UI.AnimationType");
Telerik.Web.UI.AnimationFunctions=function(){
};
Telerik.Web.UI.AnimationFunctions.CalculateAnimationPoints=function(_2,_3,_4,_5){
if(_3==_4){
return [_4+"px"];
}
var _6=_2.get_duration()/1000;
var _7=Math.round((_6)*_5);
var _8=Telerik.Web.UI.AnimationFunctions[_2.get_type()];
var _9=new Array();
var _a=Math.max(_3,_4)-Math.min(_3,_4);
var _b=_3<_4?1:-1;
var _c=0;
_9[0]=_3+"px";
for(var _d=0;_d<_7;_d++){
var _e=_8(_d/_5,0,_a,_6);
if(_d>0){
var _f=parseInt(_9[_d-1]);
var _10=_b*(Math.round(_e)-Math.round(_c));
_9[_d]=(_f+_10)+"px";
}
_c=_e;
}
_9[_7-1]=_4+"px";
return _9;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.Linear]=function(t,b,c,d){
return c*t/d+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InQuad]=function(t,b,c,d){
return c*(t/=d)*t+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutQuad]=function(t,b,c,d){
return -c*(t/=d)*(t-2)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InOutQuad]=function(t,b,c,d){
if((t/=d/2)<1){
return c/2*t*t+b;
}
return -c/2*((--t)*(t-2)-1)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InCubic]=function(t,b,c,d){
return c*(t/=d)*t*t+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutCubic]=function(t,b,c,d){
return c*((t=t/d-1)*t*t+1)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InOutCubic]=function(t,b,c,d){
if((t/=d/2)<1){
return c/2*t*t*t+b;
}
return c/2*((t-=2)*t*t+2)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InQuart]=function(t,b,c,d){
return c*(t/=d)*t*t*t+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutQuart]=function(t,b,c,d){
return -c*((t=t/d-1)*t*t*t-1)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InOutQuart]=function(t,b,c,d){
if((t/=d/2)<1){
return c/2*t*t*t*t+b;
}
return -c/2*((t-=2)*t*t*t-2)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InQuint]=function(t,b,c,d){
return c*(t/=d)*t*t*t*t+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutQuint]=function(t,b,c,d){
return c*((t=t/d-1)*t*t*t*t+1)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InOutQuint]=function(t,b,c,d){
if((t/=d/2)<1){
return c/2*t*t*t*t*t+b;
}
return c/2*((t-=2)*t*t*t*t+2)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InSine]=function(t,b,c,d){
return -c*Math.cos(t/d*(Math.PI/2))+c+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutSine]=function(t,b,c,d){
return c*Math.sin(t/d*(Math.PI/2))+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InOutSine]=function(t,b,c,d){
return -c/2*(Math.cos(Math.PI*t/d)-1)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InExpo]=function(t,b,c,d){
return (t==0)?b:c*Math.pow(2,10*(t/d-1))+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutExpo]=function(t,b,c,d){
return (t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InOutExpo]=function(t,b,c,d){
if(t==0){
return b;
}
if(t==d){
return b+c;
}
if((t/=d/2)<1){
return c/2*Math.pow(2,10*(t-1))+b;
}
return c/2*(-Math.pow(2,-10*--t)+2)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InCirc]=function(t,b,c,d){
return -c*(Math.sqrt(1-(t/=d)*t)-1)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutCirc]=function(t,b,c,d){
return c*Math.sqrt(1-(t=t/d-1)*t)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InOutCirc]=function(t,b,c,d){
if((t/=d/2)<1){
return -c/2*(Math.sqrt(1-t*t)-1)+b;
}
return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InElastic]=function(t,b,c,d,a,p){
if(t==0){
return b;
}
if((t/=d)==1){
return b+c;
}
if(!p){
p=d*0.3;
}
if((!a)||a<Math.abs(c)){
a=c;
var s=p/4;
}else{
var s=p/(2*Math.PI)*Math.asin(c/a);
}
return -(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutElastic]=function(t,b,c,d,a,p){
if(t==0){
return b;
}
if((t/=d)==1){
return b+c;
}
if(!p){
p=d*0.3;
}
if((!a)||a<Math.abs(c)){
a=c;
var s=p/4;
}else{
var s=p/(2*Math.PI)*Math.asin(c/a);
}
return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InOutElastic]=function(t,b,c,d,a,p){
if(t==0){
return b;
}
if((t/=d/2)==2){
return b+c;
}
if(!p){
p=d*(0.3*1.5);
}
if((!a)||a<Math.abs(c)){
a=c;
var s=p/4;
}else{
var s=p/(2*Math.PI)*Math.asin(c/a);
}
if(t<1){
return -0.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;
}
return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*0.5+c+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InBack]=function(t,b,c,d,s){
if(s==undefined){
s=1.70158;
}
return c*(t/=d)*t*((s+1)*t-s)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutBack]=function(t,b,c,d,s){
if(s==undefined){
s=1.70158;
}
return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InOutBack]=function(t,b,c,d,s){
if(s==undefined){
s=1.70158;
}
if((t/=d/2)<1){
return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;
}
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InBounce]=function(t,b,c,d){
return c-Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutBounce](d-t,0,c,d)+b;
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutBounce]=function(t,b,c,d){
if((t/=d)<(1/2.75)){
return c*(7.5625*t*t)+b;
}else{
if(t<(2/2.75)){
return c*(7.5625*(t-=(1.5/2.75))*t+0.75)+b;
}else{
if(t<(2.5/2.75)){
return c*(7.5625*(t-=(2.25/2.75))*t+0.9375)+b;
}else{
return c*(7.5625*(t-=(2.625/2.75))*t+0.984375)+b;
}
}
}
};
Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InOutBounce]=function(t,b,c,d){
if(t<d/2){
return Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.InBounce](t*2,0,c,d)*0.5+b;
}
return Telerik.Web.UI.AnimationFunctions[Telerik.Web.UI.AnimationType.OutBounce](t*2-d,0,c,d)*0.5+c*0.5+b;
};
Telerik.Web.UI.AnimationFunctions.registerClass("Telerik.Web.UI.AnimationFunctions");
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.AnimationSettings=function(_99){
this._type=Telerik.Web.UI.AnimationType.OutQuart;
this._duration=300;
if(typeof (_99.type)!="undefined"){
this._type=_99.type;
}
if(typeof (_99.duration)!="undefined"){
this._duration=_99.duration;
}
};
Telerik.Web.UI.AnimationSettings.prototype={get_type:function(){
return this._type;
},set_type:function(_9a){
this._type=_9a;
},get_duration:function(){
return this._duration;
},set_duration:function(_9b){
this._duration=_9b;
}};
Telerik.Web.UI.AnimationSettings.registerClass("Telerik.Web.UI.AnimationSettings");
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.AttributeCollection=function(_9c){
this._owner=_9c;
this._data={};
this._keys=[];
};
Telerik.Web.UI.AttributeCollection.prototype={getAttribute:function(key){
return this._data[key];
},setAttribute:function(key,_9f){
this._add(key,_9f);
var _a0={};
_a0[key]=_9f;
this._owner._notifyPropertyChanged("attributes",_a0);
},_add:function(key,_a2){
if(Array.indexOf(this._keys,key)<0){
Array.add(this._keys,key);
}
this._data[key]=_a2;
},removeAttribute:function(key){
Array.remove(this._keys,key);
delete this._data[key];
},_load:function(_a4){
for(var key in _a4){
this._add(key,_a4[key]);
}
},get_count:function(){
return this._keys.length;
}};
Telerik.Web.UI.AttributeCollection.registerClass("Telerik.Web.UI.AttributeCollection");
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.StringBuilder=function(){
this._buffer=[];
},Telerik.Web.StringBuilder.prototype={append:function(_a6){
this._buffer[this._buffer.length]=_a6;
},toString:function(){
return this._buffer.join("");
}};
Telerik.Web.JavaScriptSerializer={_stringRegEx:new RegExp("[\"\b\f\n\r\t\\\\\x00-\x1f]","i"),serialize:function(_a7){
var _a8=new Telerik.Web.StringBuilder();
Telerik.Web.JavaScriptSerializer._serializeWithBuilder(_a7,_a8);
return _a8.toString();
},_serializeWithBuilder:function(_a9,_aa){
var i;
switch(typeof _a9){
case "object":
if(_a9){
if(_a9.constructor==Array){
_aa.append("[");
for(i=0;i<_a9.length;++i){
if(i>0){
_aa.append(",");
}
this._serializeWithBuilder(_a9[i],_aa);
}
_aa.append("]");
}else{
if(_a9.constructor==Date){
_aa.append("\"\\/Date(");
_aa.append(_a9.getTime());
_aa.append(")\\/\"");
break;
}
var _ac=[];
var _ad=0;
for(var _ae in _a9){
if(_ae.startsWith("$")){
continue;
}
_ac[_ad++]=_ae;
}
_aa.append("{");
var _af=false;
for(i=0;i<_ad;i++){
var _b0=_a9[_ac[i]];
if(typeof _b0!=="undefined"&&typeof _b0!=="function"){
if(_af){
_aa.append(",");
}else{
_af=true;
}
this._serializeWithBuilder(_ac[i],_aa);
_aa.append(":");
this._serializeWithBuilder(_b0,_aa);
}
}
_aa.append("}");
}
}else{
_aa.append("null");
}
break;
case "number":
if(isFinite(_a9)){
_aa.append(String(_a9));
}else{
throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers);
}
break;
case "string":
_aa.append("\"");
if(Sys.Browser.agent===Sys.Browser.Safari||Telerik.Web.JavaScriptSerializer._stringRegEx.test(_a9)){
var _b1=_a9.length;
for(i=0;i<_b1;++i){
var _b2=_a9.charAt(i);
if(_b2>=" "){
if(_b2==="\\"||_b2==="\""){
_aa.append("\\");
}
_aa.append(_b2);
}else{
switch(_b2){
case "\b":
_aa.append("\\b");
break;
case "\f":
_aa.append("\\f");
break;
case "\n":
_aa.append("\\n");
break;
case "\r":
_aa.append("\\r");
break;
case "\t":
_aa.append("\\t");
break;
default:
_aa.append("\\u00");
if(_b2.charCodeAt()<16){
_aa.append("0");
}
_aa.append(_b2.charCodeAt().toString(16));
}
}
}
}else{
_aa.append(_a9);
}
_aa.append("\"");
break;
case "boolean":
_aa.append(_a9.toString());
break;
default:
_aa.append("null");
break;
}
}};
Telerik.Web.UI.ChangeLog=function(){
this._opCodeInsert=1;
this._opCodeDelete=2;
this._opCodeClear=3;
this._opCodePropertyChanged=4;
this._logEntries=null;
};
Telerik.Web.UI.ChangeLog.prototype={initialize:function(){
this._logEntries=[];
this._serializedEntries=null;
},logInsert:function(_b3){
var _b4={};
_b4.Type=this._opCodeInsert;
_b4.Index=_b3._getHierarchicalIndex();
_b4.Data=_b3._getData();
Array.add(this._logEntries,_b4);
},logDelete:function(_b5){
var _b6={};
_b6.Type=this._opCodeDelete;
_b6.Index=_b5._getHierarchicalIndex();
Array.add(this._logEntries,_b6);
},logClear:function(_b7){
var _b8={};
_b8.Type=this._opCodeClear;
if(_b7._getHierarchicalIndex){
_b8.Index=_b7._getHierarchicalIndex();
}
Array.add(this._logEntries,_b8);
},logPropertyChanged:function(_b9,_ba,_bb){
var _bc={};
_bc.Type=this._opCodePropertyChanged;
_bc.Index=_b9._getHierarchicalIndex();
_bc.Data={};
_bc.Data[_ba]=_bb;
Array.add(this._logEntries,_bc);
},serialize:function(){
if(this._logEntries.length==0){
if(this._serializedEntries==null){
return "[]";
}
return this._serializedEntries;
}
var _bd=Telerik.Web.JavaScriptSerializer.serialize(this._logEntries);
if(this._serializedEntries==null){
this._serializedEntries=_bd;
}else{
this._serializedEntries=this._serializedEntries.substring(0,this._serializedEntries.length-1)+","+_bd.substring(1);
}
this._logEntries=[];
return this._serializedEntries;
}};
Telerik.Web.UI.ChangeLog.registerClass("Telerik.Web.UI.ChangeLog");
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.PropertyBag=function(_be){
this._data={};
this._owner=_be;
};
Telerik.Web.UI.PropertyBag.prototype={getValue:function(_bf,_c0){
var _c1=this._data[_bf];
if(typeof (_c1)==="undefined"){
return _c0;
}
return _c1;
},setValue:function(_c2,_c3,_c4){
this._data[_c2]=_c3;
if(_c4){
this._owner._notifyPropertyChanged(_c2,_c3);
}
},load:function(_c5){
this._data=_c5;
}};
Telerik.Web.UI.ControlItem=function(){
this._element=null;
this._parent=null;
this._text=null;
this._children=null;
this._childControlsCreated=false;
this._itemData=null;
this._control=null;
this._properties=new Telerik.Web.UI.PropertyBag(this);
};
Telerik.Web.UI.ControlItem.prototype={_shouldNavigate:function(){
var _c6=this.get_navigateUrl();
if(!_c6){
return false;
}
return !_c6.endsWith("#");
},_getNavigateUrl:function(){
if(this.get_linkElement()){
return this._properties.getValue("navigateUrl",this.get_linkElement().getAttribute("href",2));
}
return this._properties.getValue("navigateUrl",null);
},_initialize:function(_c7,_c8){
this.set_element(_c8);
this._properties.load(_c7);
if(_c7["attributes"]){
this.get_attributes()._load(_c7["attributes"]);
}
this._itemData=_c7["items"];
},_dispose:function(){
if(this._children){
this._children.forEach(function(_c9){
_c9._dispose();
});
}
if(this._element){
this._element._item=null;
this._element=null;
}
if(this._control){
this._control=null;
}
},_initializeRenderedItem:function(){
var _ca=this._children;
if(!_ca||_ca.get_count()<1){
return;
}
var _cb=this._getChildElements();
for(var i=0,_cd=_ca.get_count();i<_cd;i++){
var _ce=_ca.getItem(i);
if(!_ce.get_element()){
_ce.set_element(_cb[i]);
if(this._shouldInitializeChild(_ce)){
_ce._initializeRenderedItem();
}
}
}
},findControl:function(id){
return $telerik.findControl(this.get_element(),id);
},get_attributes:function(){
if(!this._attributes){
this._attributes=new Telerik.Web.UI.AttributeCollection(this);
}
return this._attributes;
},get_element:function(){
return this._element;
},set_element:function(_d0){
this._element=_d0;
this._element._item=this;
this._element._itemTypeName=Object.getTypeName(this);
},get_parent:function(){
return this._parent;
},set_parent:function(_d1){
this._parent=_d1;
},get_text:function(){
if(this._text!==null){
return this._text;
}
if(this._text=this._properties.getValue("text","")){
return this._text;
}
if(!this.get_element()){
return "";
}
var _d2=this.get_textElement();
if(!_d2){
return "";
}
if(typeof (_d2.innerText)!="undefined"){
this._text=_d2.innerText;
}else{
this._text=_d2.textContent;
}
if($telerik.isSafari2){
this._text=_d2.innerHTML;
}
return this._text;
},set_text:function(_d3){
var _d4=this.get_textElement();
if(_d4){
_d4.innerHTML=_d3;
}
this._text=_d3;
this._properties.setValue("text",_d3,true);
},get_value:function(){
return this._properties.getValue("value",null);
},set_value:function(_d5){
this._properties.setValue("value",_d5,true);
},get_itemData:function(){
return this._itemData;
},get_index:function(){
if(!this.get_parent()){
return -1;
}
return this.get_parent()._getChildren().indexOf(this);
},set_enabled:function(_d6){
this._properties.setValue("enabled",_d6,true);
},get_enabled:function(){
return this._properties.getValue("enabled",true)==true;
},get_isEnabled:function(){
var _d7=this._getControl();
if(_d7){
return _d7.get_enabled()&&this.get_enabled();
}
return this.get_enabled();
},set_visible:function(_d8){
this._properties.setValue("visible",_d8);
},get_visible:function(){
return this._properties.getValue("visible",true);
},get_level:function(){
var _d9=this.get_parent();
var _da=0;
while(_d9){
if(Telerik.Web.UI.ControlItemContainer.isInstanceOfType(_d9)){
return _da;
}
_da++;
_d9=_d9.get_parent();
}
return _da;
},get_isLast:function(){
return this.get_index()==this.get_parent()._getChildren().get_count()-1;
},get_isFirst:function(){
return this.get_index()==0;
},get_nextSibling:function(){
if(!this.get_parent()){
return null;
}
return this.get_parent()._getChildren().getItem(this.get_index()+1);
},get_previousSibling:function(){
if(!this.get_parent()){
return null;
}
return this.get_parent()._getChildren().getItem(this.get_index()-1);
},toJsonString:function(){
return Sys.Serialization.JavaScriptSerializer.serialize(this._getData());
},_getHierarchicalIndex:function(){
var _db=[];
var _dc=this._getControl();
var _dd=this;
while(_dd!=_dc){
_db[_db.length]=_dd.get_index();
_dd=_dd.get_parent();
}
return _db.reverse().join(":");
},_getChildren:function(){
this._ensureChildControls();
return this._children;
},_ensureChildControls:function(){
if(!this._childControlsCreated){
this._createChildControls();
this._childControlsCreated=true;
}
},_setCssClass:function(_de,_df){
if(_de.className!=_df){
_de.className=_df;
}
},_createChildControls:function(){
this._children=this._createItemCollection();
},_createItemCollection:function(){
},_getControl:function(){
if(!this._control){
var _e0=this.get_parent();
if(_e0){
if(Telerik.Web.UI.ControlItemContainer.isInstanceOfType(_e0)){
this._control=_e0;
}else{
this._control=_e0._getControl();
}
}
}
return this._control;
},_getAllItems:function(){
var _e1=[];
this._getAllItemsRecursive(_e1,this);
return _e1;
},_getAllItemsRecursive:function(_e2,_e3){
var _e4=_e3._getChildren();
for(var i=0;i<_e4.get_count();i++){
var _e6=_e4.getItem(i);
Array.add(_e2,_e6);
this._getAllItemsRecursive(_e2,_e6);
}
},_getData:function(){
var _e7=this._properties._data;
delete _e7.items;
_e7["text"]=this.get_text();
if(this.get_attributes().get_count()>0){
_e7["attributes"]=this.get_attributes()._data;
}
return _e7;
},_notifyPropertyChanged:function(_e8,_e9){
var _ea=this._getControl();
if(_ea){
_ea._itemPropertyChanged(this,_e8,_e9);
}
},_loadFromDictionary:function(_eb){
if(typeof (_eb.Text)!="undefined"){
this.set_text(_eb.Text);
}
if(typeof (_eb.Value)!="undefined"&&_eb.Value!==""){
this.set_value(_eb.Value);
}
if(typeof (_eb.Enabled)!="undefined"&&_eb.Enabled!==true){
this.set_enabled(_eb.Enabled);
}
if(_eb.Attributes){
this.get_attributes()._load(_eb.Attributes);
}
},_createDomElement:function(){
var _ec=document.createElement("ul");
var _ed=[];
this._render(_ed);
_ec.innerHTML=_ed.join("");
return _ec.firstChild;
}};
Telerik.Web.UI.ControlItem.registerClass("Telerik.Web.UI.ControlItem");
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.ControlItemCollection=function(_ee){
this._array=new Array();
this._parent=_ee;
this._control=null;
};
Telerik.Web.UI.ControlItemCollection.prototype={add:function(_ef){
var _f0=this._array.length;
this.insert(_f0,_ef);
},insert:function(_f1,_f2){
var _f3=_f2.get_parent();
var _f4=this._parent._getControl();
if(_f3){
_f3._getChildren().remove(_f2);
}
if(_f4){
_f4._childInserting(_f1,_f2,this._parent);
}
Array.insert(this._array,_f1,_f2);
_f2.set_parent(this._parent);
if(_f4){
_f4._childInserted(_f1,_f2,this._parent);
_f4._logInserted(_f2);
}
},remove:function(_f5){
var _f6=this._parent._getControl();
if(_f6){
_f6._childRemoving(_f5);
}
Array.remove(this._array,_f5);
if(_f6){
_f6._childRemoved(_f5,this._parent);
}
_f5.set_parent(null);
_f5._control=null;
},removeAt:function(_f7){
var _f8=this.getItem(_f7);
if(_f8){
this.remove(_f8);
}
},clear:function(){
var _f9=this._parent._getControl();
if(_f9){
_f9._logClearing(this._parent);
_f9._childrenCleared(this._parent);
}
this._array=new Array();
},get_count:function(){
return this._array.length;
},getItem:function(_fa){
return this._array[_fa];
},indexOf:function(_fb){
for(var i=0,l=this._array.length;i<l;i++){
if(this._array[i]===_fb){
return i;
}
}
return -1;
},forEach:function(_fe){
for(var i=0,_100=this.get_count();i<_100;i++){
_fe(this._array[i]);
}
}};
Telerik.Web.UI.ControlItemCollection.registerClass("Telerik.Web.UI.ControlItemCollection");
function WebForm_CallbackComplete(){
for(var i=0;i<__pendingCallbacks.length;i++){
var _102=__pendingCallbacks[i];
if(_102&&_102.xmlRequest&&(_102.xmlRequest.readyState==4)){
__pendingCallbacks[i]=null;
WebForm_ExecuteCallback(_102);
if(!_102.async){
__synchronousCallBackIndex=-1;
}
var _103="__CALLBACKFRAME"+i;
var _104=document.getElementById(_103);
if(_104){
_104.parentNode.removeChild(_104);
}
}
}
}
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.ControlItemContainer=function(_105){
Telerik.Web.UI.ControlItemContainer.initializeBase(this,[_105]);
this._childControlsCreated=false;
this._enabled=true;
this._log=new Telerik.Web.UI.ChangeLog();
this._enableClientStatePersistence=false;
this._eventMap=new Telerik.Web.UI.EventMap();
this._attributes=new Telerik.Web.UI.AttributeCollection(this);
this._children=null;
};
Telerik.Web.UI.ControlItemContainer.prototype={initialize:function(){
Telerik.Web.UI.ControlItemContainer.callBaseMethod(this,"initialize");
this._ensureChildControls();
this._log.initialize();
this._initializeEventMap();
},dispose:function(){
this._eventMap.dispose();
if(this._childControlsCreated){
for(var i=0;i<this._getChildren().get_count();i++){
this._getChildren().getItem(i)._dispose();
}
}
Telerik.Web.UI.ControlItemContainer.callBaseMethod(this,"dispose");
},trackChanges:function(){
this._enableClientStatePersistence=true;
},set_enabled:function(_107){
this._enabled=_107;
},get_enabled:function(){
return this._enabled;
},commitChanges:function(){
this.updateClientState();
this._enableClientStatePersistence=false;
},get_attributes:function(){
return this._attributes;
},set_attributes:function(_108){
this._attributes._load(_108);
},_initializeEventMap:function(){
this._eventMap.initialize(this);
},_getChildren:function(){
this._ensureChildControls();
return this._children;
},_extractErrorMessage:function(_109){
if(_109.get_message){
return _109.get_message();
}else{
return _109.replace(/(\d*\|.*)/,"");
}
},_notifyPropertyChanged:function(_10a,_10b){
},_childInserting:function(_10c,item,_10e){
},_childInserted:function(_10f,item,_111){
if(!_111._childControlsCreated){
return;
}
if(!_111.get_element()){
return;
}
var _112=item._createDomElement();
var _113=_111.get_childListElement();
if(!_113){
_113=_111._createChildListElement();
}
var _114=item.get_nextSibling();
var _115=_114?_114.get_element():null;
_111.get_childListElement().insertBefore(_112,_115);
if(!item.get_element()){
item.set_element(_112);
item._initializeRenderedItem();
}else{
item.set_element(_112);
}
},_childrenCleared:function(_116){
for(var i=0;i<_116._getChildren().get_count();i++){
_116._getChildren().getItem(i)._dispose();
}
var _118=_116.get_childListElement();
if(_118){
_118.innerHTML="";
}
},_childRemoving:function(_119){
this._logRemoving(_119);
},_childRemoved:function(item,_11b){
item._dispose();
},_createChildListElement:function(){
throw Error.notImplemeneted();
},_createDomElement:function(){
throw Error.notImplemented();
},_getControl:function(){
return this;
},_logInserted:function(item){
if(!item.get_parent()._childControlsCreated||!this._enableClientStatePersistence){
return;
}
this._log.logInsert(item);
var _11d=item._getAllItems();
for(var i=0;i<_11d.length;i++){
this._log.logInsert(_11d[i]);
}
},_logRemoving:function(item){
if(this._enableClientStatePersistence){
this._log.logDelete(item);
}
},_logClearing:function(item){
if(this._enableClientStatePersistence){
this._log.logClear(item);
}
},_itemPropertyChanged:function(item,_122,_123){
if(this._enableClientStatePersistence){
this._log.logPropertyChanged(item,_122,_123);
}
},_ensureChildControls:function(){
if(!this._childControlsCreated){
this._createChildControls();
this._childControlsCreated=true;
}
},_extractItemFromDomElement:function(_124){
this._ensureChildControls();
while(_124&&_124.nodeType!==9){
if(_124._item&&this._verifyChildType(_124._itemTypeName)){
return _124._item;
}
_124=_124.parentNode;
}
return null;
},_verifyChildType:function(_125){
return _125===this._childTypeName;
},_getAllItems:function(){
var _126=[];
for(var i=0;i<this._getChildren().get_count();i++){
var item=this._getChildren().getItem(i);
Array.add(_126,item);
Array.addRange(_126,item._getAllItems());
}
return _126;
},_findItemByText:function(text){
var _12a=this._getAllItems();
for(var i=0;i<_12a.length;i++){
if(_12a[i].get_text()==text){
return _12a[i];
}
}
return null;
},_findItemByValue:function(_12c){
var _12d=this._getAllItems();
for(var i=0;i<_12d.length;i++){
if(_12d[i].get_value()==_12c){
return _12d[i];
}
}
return null;
},_findItemByAttribute:function(_12f,_130){
var _131=this._getAllItems();
for(var i=0;i<_131.length;i++){
if(_131[i].get_attributes().getAttribute(_12f)==_130){
return _131[i];
}
}
return null;
},_findItemByAbsoluteUrl:function(_133){
var _134=this._getAllItems();
for(var i=0;i<_134.length;i++){
if(_134[i].get_linkElement()&&_134[i].get_linkElement().href==_133){
return _134[i];
}
}
return null;
},_findItemByUrl:function(_136){
var _137=this._getAllItems();
for(var i=0;i<_137.length;i++){
if(_137[i].get_navigateUrl()==_136){
return _137[i];
}
}
return null;
},_findItemByHierarchicalIndex:function(_139){
var _13a=null;
var _13b=this;
var _13c=_139.split(":");
for(var i=0;i<_13c.length;i++){
var _13e=parseInt(_13c[i]);
if(_13b._getChildren().get_count()<=_13e){
return null;
}
_13a=_13b._getChildren().getItem(_13e);
_13b=_13a;
}
return _13a;
}};
Telerik.Web.UI.ControlItemContainer.registerClass("Telerik.Web.UI.ControlItemContainer",Telerik.Web.UI.RadWebControl);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.EventMap=function(){
this._owner=null;
this._element=null;
this._eventMap={};
this._onDomEventDelegate=null;
this._browserHandlers={};
};
Telerik.Web.UI.EventMap.prototype={initialize:function(_13f,_140){
this._owner=_13f;
if(!_140){
_140=this._owner.get_element();
}
this._element=_140;
},skipElement:function(e,_142){
var _143=e.target;
var _144=_143.tagName.toLowerCase();
var _145=_143.className;
if(_144=="select"){
return true;
}
if(_144=="option"){
return true;
}
if(_144=="a"&&(!_142||_145.indexOf(_142)<0)){
return true;
}
if(_144=="input"){
return true;
}
if(_144=="textarea"){
return true;
}
if(_144=="button"){
return true;
}
return false;
},dispose:function(){
if(this._onDomEventDelegate){
for(var _146 in this._eventMap){
if(this._shouldUseEventCapture(_146)){
var _147=this._browserHandlers[_146];
this._element.removeEventListener(_146,_147,true);
}else{
$removeHandler(this._element,_146,this._onDomEventDelegate);
}
}
this._onDomEventDelegate=null;
var _148=true;
if(this._element._events){
for(var e in this._element._events){
if(this._element._events[e].length>0){
_148=false;
break;
}
}
if(_148){
this._element._events=null;
}
}
}
},addHandlerForClassName:function(_14a,_14b,_14c){
if(typeof (this._eventMap[_14a])=="undefined"){
this._eventMap[_14a]={};
if(this._shouldUseEventCapture(_14a)){
var _14d=this._getDomEventDelegate();
var _14e=this._element;
var _14f=function(e){
return _14d.call(_14e,new Sys.UI.DomEvent(e));
};
this._browserHandlers[_14a]=_14f;
_14e.addEventListener(_14a,_14f,true);
}else{
$addHandler(this._element,_14a,this._getDomEventDelegate());
}
}
var _151=this._eventMap[_14a];
_151[_14b]=_14c;
},_onDomEvent:function(e){
var _153=this._eventMap[e.type];
if(!_153){
return;
}
var _154=e.target;
while(_154&&_154.nodeType!==9){
var _155=_154.className;
if(!_155){
_154=_154.parentNode;
continue;
}
var _156=_155.split(" ");
var _157=null;
for(var i=0;i<_156.length;i++){
_157=_153[_156[i]];
if(_157){
break;
}
}
if(_157){
this._fillEventFields(e,_154);
if(_157.call(this._owner,e)!=true){
if(!_154.parentNode){
e.stopPropagation();
}
return;
}
}
if(_154==this._element){
return;
}
_154=_154.parentNode;
}
},_fillEventFields:function(e,_15a){
e.eventMapTarget=_15a;
if(e.rawEvent.relatedTarget){
e.eventMapRelatedTarget=e.rawEvent.relatedTarget;
}else{
if(e.type=="mouseover"){
e.eventMapRelatedTarget=e.rawEvent.fromElement;
}else{
e.eventMapRelatedTarget=e.rawEvent.toElement;
}
}
if(!e.eventMapRelatedTarget){
return;
}
try{
var _15b=e.eventMapRelatedTarget.className;
}
catch(ex){
e.eventMapRelatedTarget=this._element;
}
},_shouldUseEventCapture:function(_15c){
return (_15c=="blur"||_15c=="focus")&&$telerik.isFirefox&&Sys.Browser.version>=3;
},_getDomEventDelegate:function(){
if(!this._onDomEventDelegate){
this._onDomEventDelegate=Function.createDelegate(this,this._onDomEvent);
}
return this._onDomEventDelegate;
}};
Telerik.Web.UI.EventMap.registerClass("Telerik.Web.UI.EventMap");
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.Overlay=function(_15d){
this._targetElement=_15d;
this._element=null;
};
Telerik.Web.UI.Overlay.IsSupported=function(){
return $telerik.isIE;
};
Telerik.Web.UI.Overlay.prototype={initialize:function(){
var _15e=document.createElement("div");
_15e.innerHTML="<iframe>Your browser does not support inline frames or is currently configured not to display inline frames.</iframe>";
this._element=_15e.firstChild;
this._element.src="javascript:'';";
this._targetElement.parentNode.insertBefore(this._element,this._targetElement);
if(this._targetElement.style.zIndex>0){
this._element.style.zIndex=this._targetElement.style.zIndex-1;
}
this._element.style.position="absolute";
this._element.style.border="0px";
this._element.frameBorder=0;
this._element.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
this._element.tabIndex=-1;
if(!$telerik.isSafari){
_15e.outerHTML=null;
}
this.updatePosition();
},dispose:function(){
if(this._element.parentNode){
this._element.parentNode.removeChild(this._element);
}
this._targetElement=null;
this._element=null;
},get_targetElement:function(){
return this._targetElement;
},set_targetElement:function(_15f){
this._targetElement=_15f;
},updatePosition:function(){
this._element.style.top=this._toUnit(this._targetElement.style.top);
this._element.style.left=this._toUnit(this._targetElement.style.left);
this._element.style.width=this._targetElement.offsetWidth+"px";
this._element.style.height=this._targetElement.offsetHeight+"px";
},_toUnit:function(_160){
if(!_160){
return "0px";
}
return parseInt(_160)+"px";
}};
Telerik.Web.UI.Overlay.registerClass("Telerik.Web.UI.Overlay",null,Sys.IDisposable);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI._PostbackWrapper=function(){
this._doPostbackReplaced=false;
this._events=new Sys.EventHandlerList();
this._originalDoPostBack=null;
this._onWindowUnloadHandler=null;
this._postbackEventRaised=false;
this._beginRequestHandler=null;
this._onsubmitHandler=null;
this._partialRenderingEnabledChecked=false;
this._partialRenderingEnabled=false;
};
Telerik.Web.UI._PostbackWrapper.prototype={initialize:function(){
this._onWindowUnloadHandler=Function.createDelegate(this,this._onWindowUnload);
Sys.UI.DomEvent.addHandler(window,"unload",this._onWindowUnloadHandler);
},_raiseBeforePostback:function(_161){
var _162=this._events.getHandler("beforePostback");
if(_162){
if(!_161){
_161=Sys.EventArgs.Empty;
}
_162(this,_161);
}
this._postbackEventRaised=true;
},_doPostback:function(_163,_164){
this._raiseBeforePostback(Sys.EventArgs.Empty);
this._originalDoPostBack(_163,_164);
},_onSubmit:function(e){
return this._handleNormalSubmit(e);
},_handleNormalSubmit:function(e){
if(!this._postbackEventRaised){
this._raiseBeforePostback(Sys.EventArgs.Empty);
}
return true;
},_endRequest:function(){
this._postbackEventRaised=false;
},_isPartialRenderingEnabled:function(){
if(!this._partialRenderingEnabledChecked){
this._partialRenderingEnabled=true;
if(typeof (Sys)=="undefined"){
this._partialRenderingEnabled=false;
}else{
if(typeof (Sys.WebForms)=="undefined"){
this._partialRenderingEnabled=false;
}else{
if(typeof (Sys.WebForms.PageRequestManager)=="undefined"){
this._partialRenderingEnabled=false;
}else{
if(!Sys.WebForms.PageRequestManager.getInstance()){
this._partialRenderingEnabled=false;
}
}
}
}
this._partialRenderingEnabledChecked=true;
}
return this._partialRenderingEnabled;
},add_beforePostback:function(_167){
if(!this._isPartialRenderingEnabled()){
return;
}
if(!this._onsubmitHandler){
this._onsubmitHandler=Function.createDelegate(this,this._onSubmit);
Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements,this._onsubmitHandler);
}
if(!this._endRequestHandler){
this._endRequestHandler=Function.createDelegate(this,this._endRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._endRequestHandler);
}
if(!this._doPostbackReplaced){
this._replaceDoPostback();
}
this._events.addHandler("beforePostback",_167);
},remove_beforePostback:function(_168){
this._events.removeHandler("beforePostback",_168);
},_replaceDoPostback:function(){
if(typeof (Page_IsValid)!="undefined"){
return;
}
this._originalDoPostBack=window.__doPostBack;
if(this._originalDoPostBack){
window.__doPostBack=Function.createDelegate(this,this._doPostback);
}
this._doPostbackReplaced=true;
},_onWindowUnload:function(_169){
this.dispose();
},dispose:function(){
Sys.UI.DomEvent.removeHandler(window,"unload",this._onWindowUnloadHandler);
if(this._endRequestHandler){
Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(this._endRequestHandler);
this._endRequestHandler=null;
}
if(this._originalDoPostBack){
window.__doPostBack=this._originalDoPostBack;
this._originalDoPostBack=null;
}
}};
Telerik.Web.UI._PostbackWrapper.registerClass("Telerik.Web.UI._PostbackWrapper");
Telerik.Web.UI.PostbackWrapper=new Telerik.Web.UI._PostbackWrapper();
Telerik.Web.UI.PostbackWrapper.initialize();
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.SlideDirection=function(){
};
Telerik.Web.UI.SlideDirection.prototype={Up:1,Down:2,Left:3,Right:4};
Telerik.Web.UI.SlideDirection.registerEnum("Telerik.Web.UI.SlideDirection");
Telerik.Web.UI.Slide=function(_16a,_16b,_16c,_16d){
this._fps=60;
this._animatedElement=_16a;
this._element=_16a.parentNode;
this._expandAnimation=_16b;
this._collapseAnimation=_16c;
this._direction=Telerik.Web.UI.SlideDirection.Down;
this._animation=null;
this._expanding=null;
if(_16d==null){
this._enableOverlay=true;
}else{
this._enableOverlay=_16d;
}
this._events=null;
this._overlay=null;
this._animationEndedDelegate=null;
this._expandAnimationStartedDelegate=null;
this._updateOverlayDelegate=null;
};
Telerik.Web.UI.Slide.prototype={initialize:function(){
if(Telerik.Web.UI.Overlay.IsSupported()&&this._enableOverlay){
var _16e=this.get_animatedElement();
this._overlay=new Telerik.Web.UI.Overlay(_16e);
this._overlay.initialize();
}
this._animationEndedDelegate=Function.createDelegate(this,this._animationEnded);
this._expandAnimationStartedDelegate=Function.createDelegate(this,this._expandAnimationStarted);
this._updateOverlayDelegate=Function.createDelegate(this,this._updateOverlay);
},dispose:function(){
this._animatedElement=null;
this._events=null;
this._disposeAnimation();
if(this._overlay){
this._overlay.dispose();
this._overlay=null;
}
this._animationEndedDelegate=null;
this._expandAnimationStartedDelegate=null;
this._updateOverlayDelegate=null;
},get_element:function(){
return this._element;
},get_animatedElement:function(){
return this._animatedElement;
},set_animatedElement:function(_16f){
this._animatedElement=_16f;
if(this._overlay){
this._overlay.set_targetElement(this._animatedElement);
}
},get_direction:function(){
return this._direction;
},set_direction:function(_170){
this._direction=_170;
},get_events:function(){
if(!this._events){
this._events=new Sys.EventHandlerList();
}
return this._events;
},updateSize:function(){
var _171=this.get_animatedElement();
var _172=this.get_element();
var top=0;
if(_171.style.top){
top=Math.max(parseInt(_171.style.top),0);
}
var left=0;
if(_171.style.left){
left=Math.max(parseInt(_171.style.left),0);
}
var _175=_171.offsetHeight+top;
if(_172.style.height!=_175+"px"){
_172.style.height=Math.max(_175,0)+"px";
}
var _176=_171.offsetWidth+left;
if(_172.style.width!=_176+"px"){
_172.style.width=Math.max(_176,0)+"px";
}
if(this._overlay){
this._updateOverlay();
}
},show:function(){
this._showElement();
},expand:function(){
this._expanding=true;
this.get_animatedElement().style.visibility="hidden";
this._resetState(true);
var _177=null;
var _178=null;
switch(this.get_direction()){
case Telerik.Web.UI.SlideDirection.Up:
case Telerik.Web.UI.SlideDirection.Left:
_177=parseInt(this._getSize());
_178=0;
break;
case Telerik.Web.UI.SlideDirection.Down:
case Telerik.Web.UI.SlideDirection.Right:
_177=parseInt(this._getPosition());
_178=0;
break;
}
if(this._animation){
this._animation.stop();
}
if((_177==_178)||(this._expandAnimation.get_type()==Telerik.Web.UI.AnimationType.None)){
this._expandAnimationStarted();
this._setPosition(_178);
this._animationEnded();
this.get_animatedElement().style.visibility="visible";
}else{
this._playAnimation(this._expandAnimation,_177,_178);
}
},collapse:function(){
this._resetState();
this._expanding=false;
var _179=null;
var _17a=null;
var size=parseInt(this._getSize());
var _17c=parseInt(this._getPosition());
switch(this.get_direction()){
case Telerik.Web.UI.SlideDirection.Up:
case Telerik.Web.UI.SlideDirection.Left:
_179=0;
_17a=size;
break;
case Telerik.Web.UI.SlideDirection.Down:
case Telerik.Web.UI.SlideDirection.Right:
_179=0;
_17a=_17c-size;
break;
}
if(this._animation){
this._animation.stop();
}
if((_179==_17a)||(this._collapseAnimation.get_type()==Telerik.Web.UI.AnimationType.None)){
this._setPosition(_17a);
this._animationEnded();
}else{
this._playAnimation(this._collapseAnimation,_179,_17a);
}
},add_collapseAnimationEnded:function(_17d){
this.get_events().addHandler("collapseAnimationEnded",_17d);
},remove_collapseAnimationEnded:function(_17e){
this.get_events().removeHandler("collapseAnimationEnded",_17e);
},add_expandAnimationEnded:function(_17f){
this.get_events().addHandler("expandAnimationEnded",_17f);
},remove_expandAnimationEnded:function(_180){
this.get_events().removeHandler("expandAnimationEnded",_180);
},add_expandAnimationStarted:function(_181){
this.get_events().addHandler("expandAnimationStarted",_181);
},remove_expandAnimationStarted:function(_182){
this.get_events().removeHandler("expandAnimationStarted",_182);
},_playAnimation:function(_183,_184,_185){
var _186=_183.get_duration();
var _187=this._getAnimatedStyleProperty();
var _188=Telerik.Web.UI.AnimationFunctions.CalculateAnimationPoints(_183,_184,_185,this._fps);
var _189=this.get_animatedElement();
_189.style.visibility="visible";
if(this._animation){
this._animation.set_target(_189);
this._animation.set_duration(_186/1000);
this._animation.set_propertyKey(_187);
this._animation.set_values(_188);
}else{
this._animation=new $TWA.DiscreteAnimation(_189,_186/1000,this._fps,"style",_187,_188);
this._animation.add_started(this._expandAnimationStartedDelegate);
this._animation.add_ended(this._animationEndedDelegate);
if(this._overlay){
this._animation.add_onTick(this._updateOverlayDelegate);
}
}
this._animation.play();
},_animationEnded:function(){
if(this._expanding){
this.get_element().style.overflow="visible";
this._raiseEvent("expandAnimationEnded",Sys.EventArgs.Empty);
}else{
this.get_element().style.display="none";
this._raiseEvent("collapseAnimationEnded",Sys.EventArgs.Empty);
}
if(this._overlay){
this._updateOverlay();
}
},_expandAnimationStarted:function(){
this._raiseEvent("expandAnimationStarted",Sys.EventArgs.Empty);
},_updateOverlay:function(){
this._overlay.updatePosition();
},_showElement:function(){
var _18a=this.get_animatedElement();
var _18b=this.get_element();
if(!_18b){
return;
}
if(!_18b.style){
return;
}
_18b.style.display=(_18b.tagName.toUpperCase()!="TABLE")?"block":"";
_18a.style.display=(_18a.tagName.toUpperCase()!="TABLE")?"block":"";
_18b.style.overflow="hidden";
},_resetState:function(_18c){
this._stopAnimation();
this._showElement();
if(_18c){
var _18d=this.get_animatedElement();
switch(this.get_direction()){
case Telerik.Web.UI.SlideDirection.Up:
_18d.style.top="0px";
break;
case Telerik.Web.UI.SlideDirection.Down:
_18d.style.top=-_18d.offsetHeight+"px";
break;
case Telerik.Web.UI.SlideDirection.Left:
_18d.style.left=_18d.offsetWidth+"px";
break;
case Telerik.Web.UI.SlideDirection.Right:
_18d.style.left=-_18d.offsetWidth+"px";
break;
default:
Error.argumentOutOfRange("direction",this.get_direction(),"Slide direction is invalid. Use one of the values in the Telerik.Web.UI.SlideDirection enumeration.");
break;
}
}
},_getSize:function(){
var _18e=this.get_animatedElement();
switch(this.get_direction()){
case Telerik.Web.UI.SlideDirection.Up:
case Telerik.Web.UI.SlideDirection.Down:
return _18e.offsetHeight;
break;
case Telerik.Web.UI.SlideDirection.Left:
case Telerik.Web.UI.SlideDirection.Right:
return _18e.offsetWidth;
break;
default:
return 0;
}
},_setPosition:function(_18f){
var _190=this.get_animatedElement();
var _191=this._getAnimatedStyleProperty();
_190.style[_191]=_18f;
},_getPosition:function(){
var _192=this.get_animatedElement();
var _193=this._getAnimatedStyleProperty();
return _192.style[_193];
},_getAnimatedStyleProperty:function(){
switch(this.get_direction()){
case Telerik.Web.UI.SlideDirection.Up:
case Telerik.Web.UI.SlideDirection.Down:
return "top";
case Telerik.Web.UI.SlideDirection.Left:
case Telerik.Web.UI.SlideDirection.Right:
return "left";
}
},_stopAnimation:function(){
if(this._animation){
this._animation.stop();
}
},_disposeAnimation:function(){
if(this._animation){
this._animation.dispose();
this._animation=null;
}
},_raiseEvent:function(_194,_195){
var _196=this.get_events().getHandler(_194);
if(_196){
if(!_195){
_195=Sys.EventArgs.Empty;
}
_196(this,_195);
}
}};
Telerik.Web.UI.Slide.registerClass("Telerik.Web.UI.Slide",null,Sys.IDisposable);


/* END Telerik.Web.UI.Common.Navigation.NavigationScripts.js */
/* START Telerik.Web.UI.ComboBox.RadComboBoxScripts.js */
Telerik.Web.UI.RadComboBoxEventArgs=function(e){
Telerik.Web.UI.RadComboBoxEventArgs.initializeBase(this);
this._domEvent=e;
};
Telerik.Web.UI.RadComboBoxEventArgs.prototype={get_domEvent:function(){
return this._domEvent;
}};
Telerik.Web.UI.RadComboBoxEventArgs.registerClass("Telerik.Web.UI.RadComboBoxEventArgs",Sys.EventArgs);
Telerik.Web.UI.RadComboBoxCancelEventArgs=function(e){
Telerik.Web.UI.RadComboBoxCancelEventArgs.initializeBase(this);
this._domEvent=e;
};
Telerik.Web.UI.RadComboBoxCancelEventArgs.prototype={get_domEvent:function(){
return this._domEvent;
}};
Telerik.Web.UI.RadComboBoxCancelEventArgs.registerClass("Telerik.Web.UI.RadComboBoxCancelEventArgs",Sys.CancelEventArgs);
Telerik.Web.UI.RadComboBoxItemEventArgs=function(_3,e){
Telerik.Web.UI.RadComboBoxItemEventArgs.initializeBase(this);
this._item=_3;
this._domEvent=e;
};
Telerik.Web.UI.RadComboBoxItemEventArgs.prototype={get_item:function(){
return this._item;
},get_domEvent:function(){
return this._domEvent;
}};
Telerik.Web.UI.RadComboBoxItemEventArgs.registerClass("Telerik.Web.UI.RadComboBoxItemEventArgs",Sys.EventArgs);
Telerik.Web.UI.RadComboBoxItemCancelEventArgs=function(_5,e){
Telerik.Web.UI.RadComboBoxItemCancelEventArgs.initializeBase(this);
this._item=_5;
this._domEvent=e;
};
Telerik.Web.UI.RadComboBoxItemCancelEventArgs.prototype={get_item:function(){
return this._item;
},get_domEvent:function(){
return this._domEvent;
}};
Telerik.Web.UI.RadComboBoxItemCancelEventArgs.registerClass("Telerik.Web.UI.RadComboBoxItemCancelEventArgs",Sys.CancelEventArgs);
Telerik.Web.UI.RadComboBoxRequestEventArgs=function(_7,e){
Telerik.Web.UI.RadComboBoxRequestEventArgs.initializeBase(this);
this._text=_7;
this._domEvent=e;
};
Telerik.Web.UI.RadComboBoxRequestEventArgs.prototype={get_text:function(){
return this._text;
},get_domEvent:function(){
return this._domEvent;
}};
Telerik.Web.UI.RadComboBoxRequestEventArgs.registerClass("Telerik.Web.UI.RadComboBoxRequestEventArgs",Sys.EventArgs);
Telerik.Web.UI.RadComboBoxRequestCancelEventArgs=function(_9,_a,e){
Telerik.Web.UI.RadComboBoxRequestCancelEventArgs.initializeBase(this);
this._text=_9;
this._context=_a;
this._domEvent=e;
};
Telerik.Web.UI.RadComboBoxRequestCancelEventArgs.prototype={get_text:function(){
return this._text;
},get_context:function(){
return this._context;
},get_domEvent:function(){
return this._domEvent;
}};
Telerik.Web.UI.RadComboBoxRequestCancelEventArgs.registerClass("Telerik.Web.UI.RadComboBoxRequestCancelEventArgs",Sys.CancelEventArgs);
Telerik.Web.UI.RadComboBoxItemsRequestFailedEventArgs=function(_c,_d,e){
Telerik.Web.UI.RadComboBoxItemsRequestFailedEventArgs.initializeBase(this);
this._text=_c;
this._errorMessage=_d;
this._domEvent=e;
};
Telerik.Web.UI.RadComboBoxItemsRequestFailedEventArgs.prototype={get_text:function(){
return this._text;
},get_errorMessage:function(){
return this._errorMessage;
},get_domEvent:function(){
return this._domEvent;
}};
Telerik.Web.UI.RadComboBoxItemsRequestFailedEventArgs.registerClass("Telerik.Web.UI.RadComboBoxItemsRequestFailedEventArgs",Telerik.Web.UI.RadComboBoxCancelEventArgs);
Telerik.Web.UI.RadComboBoxItemDataBoundEventArgs=function(_f,_10){
Telerik.Web.UI.RadComboBoxItemDataBoundEventArgs.initializeBase(this,[_f]);
this._dataItem=_10;
};
Telerik.Web.UI.RadComboBoxItemDataBoundEventArgs.prototype={get_dataItem:function(){
return this._dataItem;
}};
Telerik.Web.UI.RadComboBoxItemDataBoundEventArgs.registerClass("Telerik.Web.UI.RadComboBoxItemDataBoundEventArgs",Telerik.Web.UI.RadComboBoxItemEventArgs);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.Keys=function(){
};
Telerik.Web.UI.Keys.prototype={Shift:16,Escape:27,Up:38,Down:40,Left:37,Right:39,Enter:13,Tab:9,Space:32,PageUp:33,Del:46,F1:112,F12:123};
Telerik.Web.UI.Keys.registerEnum("Telerik.Web.UI.Keys");
Telerik.Web.UI.RadComboBoxFilter=function(){
};
Telerik.Web.UI.RadComboBoxFilter.prototype={None:0,Contains:1,StartsWith:2};
Telerik.Web.UI.RadComboBoxFilter.registerEnum("Telerik.Web.UI.RadComboBoxFilter");
Telerik.Web.UI.RadComboBox=function(_11){
Telerik.Web.UI.RadComboBox.initializeBase(this,[_11]);
this._callbacktext="";
this._changeText=true;
this._children=null;
this._virtualScroll=true;
this._itemData=null;
this._selectedItem=null;
this._selectedIndex=null;
this._highlightedItem=null;
this._dropDownVisible=false;
this._enableLoadOnDemand=false;
this._enableTextSelection=true;
this._setSelectedItem=false;
this._enableItemCaching=false;
this._openDropDownOnLoad=false;
this._appendItems=false;
this._allowCustomText=false;
this._markFirstMatch=false;
this._filter=0;
this._originalText=this.get_inputDomElement().value;
this._cachedText=this._originalText;
this._cachedOffsetHeight="";
this._text="";
this._value=null;
this._isCaseSensitive=false;
this._autoCompleteSeparator=null;
this._postBackReference=null;
this._dropDownElement=null;
this._inputDomElement=null;
this._imageDomElement=null;
this._tableElement=null;
this._itemRequestTimeout=300;
this._isTemplated=false;
this._requestTimeoutID=0;
this._highlightTemplatedItems=false;
this._clientState={value:"",text:"",enabled:true,logEntries:[]};
this._uniqueId=null;
this._rightToLeft=false;
this._isDetached=false;
this._offsetX=0;
this._offsetY=0;
this._overlay=null;
this._enableScreenBoundaryDetection=true;
this._suppressChange=false;
this._lastKeyCode=null;
this._loadingDiv=null;
this._loadingMessage="Loading...";
this._showMoreResultsBox=false;
this._closeDropDownOnBlur=true;
this._focused=false;
this._causesValidation=true;
this.get_inputDomElement().setAttribute("autocomplete","off");
this._errorMessage="CallBack Error!";
this._showMoreMessage="";
this._webServiceSettings=new Telerik.Web.UI.WebServiceSettings({});
this._webServiceLoader=null;
this._clientDataString=null;
this._enabled=true;
this._fireEvents=this._enabled;
this._slide=null;
this._expandAnimation=new Telerik.Web.UI.AnimationSettings({});
this._expandDelay=100;
this._collapseAnimation=new Telerik.Web.UI.AnimationSettings({});
this._collapseDelay=500;
this._slideDirection=Telerik.Web.UI.SlideDirection.Down;
this._expandAnimationEndedDelegate=null;
this._expandAnimationStartedDelegate=null;
this._showDropDownOnTextboxClick=true;
this._dropDownWidth="";
this._height="";
this._maxHeight="";
this._childListElementWrapper=null;
this._skin="";
this._skipLoadingItems=false;
this._ajaxRequest=false;
this._pendingAjaxRequestsCount=0;
this._endOfItems=false;
this._emptyMessage=null;
this._disposed=false;
this._disposeChildElements=true;
this._firstOpeningOfDropDown=true;
this.lodHashTable={};
};
Telerik.Web.UI.RadComboBox._getScrollBarWidth=function(){
if(Telerik.Web.UI.RadComboBox._scrollbarWidth){
return Telerik.Web.UI.RadComboBox._scrollbarWidth;
}
var _12,_13=0;
var _14=document.createElement("div");
_14.style.position="absolute";
_14.style.top="-1000px";
_14.style.left="-1000px";
_14.style.width="100px";
_14.style.height="50px";
_14.style.overflow="hidden";
var _15=document.createElement("div");
_15.style.width="100%";
_15.style.height="200px";
_14.appendChild(_15);
document.body.appendChild(_14);
var _16=_15.offsetWidth;
_14.style.overflow="auto";
var _17=_15.offsetWidth;
Telerik.Web.UI.RadComboBox._scrollbarWidth=_16-_17;
if(Telerik.Web.UI.RadComboBox._scrollbarWidth<=0){
_15.style.width="300px";
_12=_14.offsetWidth;
_13=_14.clientWidth;
Telerik.Web.UI.RadComboBox._scrollbarWidth=_12-_13;
}
if(Telerik.Web.UI.RadComboBox._scrollbarWidth<=0){
Telerik.Web.UI.RadComboBox._scrollbarWidth=16;
}
document.body.removeChild(document.body.lastChild);
return Telerik.Web.UI.RadComboBox._scrollbarWidth;
};
Telerik.Web.UI.RadComboBox.htmlEncode=function(_18){
var _19={"&":"&amp;","<":"&lt;",">":"&gt;"};
for(var _1a in _19){
_18=_18.replace(new RegExp(_1a,"g"),_19[_1a]);
}
return _18;
};
Telerik.Web.UI.RadComboBox.ComboBoxes=[];
Telerik.Web.UI.RadComboBox._createChildControls=function(_1b,_1c){
var _1d=_1b.get_itemData();
if(!_1d){
return;
}
var _1e=_1b.get_childListElement();
if(!_1e){
return;
}
var _1f=$telerik.getChildrenByTagName(_1b.get_childListElement(),"li");
var _20=_1f.length;
var _21=0;
if(_1f.length>0&&_1f[0].className=="rcbLoading"){
_20=_20-1;
_21=1;
}
for(var i=_21,_23=_1f.length;i<_23;i++){
var _24=new Telerik.Web.UI.RadComboBoxItem();
_1c.add(_24);
_24._initialize(_1d[i-_21],_1f[i]);
}
};
Telerik.Web.UI.RadComboBox.prototype={initialize:function(){
Telerik.Web.UI.ControlItemContainer.callBaseMethod(this,"initialize");
this._log.initialize();
this._initializeEventMap();
this._clientState.value=this._value;
this._clientState.text=this._text;
this.updateClientState();
if(this._requiresRightToLeft()){
this._initRightToLeft();
}
if(this.get_childListElement()){
this._onDropDownClickDelegate=Function.createDelegate(this,this._onDropDownClick);
$addHandler(this.get_childListElement(),"click",this._onDropDownClickDelegate);
this._onDropDownHoverDelegate=Function.createDelegate(this,this._onDropDownHover);
$addHandler(this.get_childListElement(),"mouseover",this._onDropDownHoverDelegate);
this._cancelDelegate=Function.createDelegate(this,this._cancelEvent);
$addHandler(this.get_childListElement(),"selectstart",this._cancelDelegate);
$addHandler(this.get_childListElement(),"dragstart",this._cancelDelegate);
this._onDropDownOutDelegate=Function.createDelegate(this,this._onDropDownOut);
$addHandler(this.get_childListElement(),"mouseout",this._onDropDownOutDelegate);
}
this._onTableHoverDelegate=Function.createDelegate(this,this._onTableHover);
$telerik.addExternalHandler(this.get_tableElement(),"mouseover",this._onTableHoverDelegate);
this._onTableOutDelegate=Function.createDelegate(this,this._onTableOut);
$telerik.addExternalHandler(this.get_tableElement(),"mouseout",this._onTableOutDelegate);
this._onPropertyChangeDelegate=Function.createDelegate(this,this._onInputPropertyChange);
$addHandler(this.get_inputDomElement(),"propertychange",this._onPropertyChangeDelegate);
this._onFocusDelegate=Function.createDelegate(this,this._onFocus);
$addHandler(this.get_inputDomElement(),"focus",this._onFocusDelegate);
this._onDocumentClickDelegate=Function.createDelegate(this,this._onDocumentClick);
if($telerik.isIE){
document.attachEvent("onmousedown",this._onDocumentClickDelegate);
document.attachEvent("oncontextmenu",this._onDocumentClickDelegate);
}else{
$addHandler(document,"mousedown",this._onDocumentClickDelegate);
$addHandler(document,"contextmenu",this._onDocumentClickDelegate);
}
this._onDropDownScrollDelegate=Function.createDelegate(this,this._onDropDownScroll);
$addHandler(this.get_childListElementWrapper(),"scroll",this._onDropDownScrollDelegate);
this._eventMap.addHandlerForClassName("click","rcbInput",this._onInputClick);
this._eventMap.addHandlerForClassName("keydown","rcbInput",this._onKeyDown);
this._eventMap.addHandlerForClassName("keypress","rcbInput",this._onKeyPress);
if(!$telerik.isIE){
this._eventMap.addHandlerForClassName("input","rcbInput",this._onInputChange);
}
if(this.get_imageDomElement()){
this._onImageClickDelegate=Function.createDelegate(this,this._onImageClick);
$addHandler(this.get_imageDomElement(),"click",this._onImageClickDelegate);
}
this._onWindowResizeDelegate=Function.createDelegate(this,this._onWindowResize);
$addHandler(window,"resize",this._onWindowResizeDelegate);
this._onWindowUnloadDelegate=Function.createDelegate(this,this._onWindowUnload);
$addHandler(window,"unload",this._onWindowUnloadDelegate);
if(this._openDropDownOnLoad){
this._onOpenOnLoad=Function.createDelegate(this,this.showDropDown);
$addHandler(window,"load",this._onOpenOnLoad);
}
if(this.get_moreResultsBoxElement()){
this._onMoreResultsBoxClickDelegate=Function.createDelegate(this,this._onMoreResultsBoxClick);
$addHandler(this.get_moreResultsBoxElement(),"click",this._onMoreResultsBoxClickDelegate);
this._onMoreResultsBoxOverDelegate=Function.createDelegate(this,this._onMoreResultsBoxOver);
$addHandler(this.get_moreResultsBoxElement(),"mouseover",this._onMoreResultsBoxOverDelegate);
this._onMoreResultsBoxOutDelegate=Function.createDelegate(this,this._onMoreResultsBoxOut);
$addHandler(this.get_moreResultsBoxElement(),"mouseout",this._onMoreResultsBoxOutDelegate);
}
if(this._openDropDownOnLoad&&!this.get_dropDownVisible()){
this.showDropDown();
}
var me=this;
Array.add(Telerik.Web.UI.RadComboBox.ComboBoxes,this);
if(this._fireEvents){
this.raiseEvent("load",null);
}
this.get_element().value=this._text;
},_applyZIndex:function(){
var _26=this.get_element().style.zIndex;
var _27=this.get_dropDownElement().parentNode.style.zIndex;
if(_26==0){
_26=_27;
}
this.get_dropDownElement().parentNode.style.zIndex=_26;
},_initializeAnimation:function(){
var _28=this._getAnimatedElement();
if(_28){
this._slide=new Telerik.Web.UI.Slide(_28,this.get_expandAnimation(),this.get_collapseAnimation());
this._slide.initialize();
this._slide.set_direction(this.get_slideDirection());
}
this._expandAnimationEndedDelegate=Function.createDelegate(this,this._onExpandAnimationEnded);
this._slide.add_expandAnimationEnded(this._expandAnimationEndedDelegate);
this._expandAnimationStartedDelegate=Function.createDelegate(this,this._onExpandAnimationStarted);
this._slide.add_expandAnimationStarted(this._expandAnimationStartedDelegate);
},_onExpandAnimationEnded:function(_29,e){
if(window.netscape&&!window.opera){
this.get_childListElementWrapper().style.overflow="auto";
if(this.get_selectedItem()){
this.get_selectedItem().scrollOnTop();
}
}
},_onExpandAnimationStarted:function(_2b,e){
if(window.netscape&&!window.opera){
this.get_childListElementWrapper().style.overflow="hidden";
}
},_requiresRightToLeft:function(){
var _2d=this.get_element();
while(_2d.nodeType!==9){
if(_2d.dir=="rtl"){
return true;
}
_2d=_2d.parentNode;
}
return false;
},_initRightToLeft:function(){
this._rightToLeft=true;
if(this._skin){
this.get_element().className=String.format("{0} RadComboBox_{1}_rtl",this.get_element().className,this._skin);
this.get_dropDownElement().className=String.format("{0} RadComboBoxDropDown_{1}_rtl",this.get_dropDownElement().className,this._skin);
}
if(this.get_imageDomElement()){
if(Sys.UI.DomElement.containsCssClass(this.get_imageDomElement().parentNode,"rcbArrowCellRight")){
this._replaceCssClass(this.get_imageDomElement().parentNode,"rcbArrowCellRight","rcbArrowCellLeft");
this.get_inputDomElement().parentNode.className="rcbInputCell rcbInputCellRight";
}else{
this._replaceCssClass(this.get_imageDomElement().parentNode,"rcbArrowCellLeft","rcbArrowCellRight");
this.get_inputDomElement().parentNode.className="rcbInputCell rcbInputCellLeft";
}
}
},_replaceCssClass:function(_2e,_2f,_30){
_2e.className=_2e.className.replace(_2f,_30);
},dispose:function(){
Array.remove(Telerik.Web.UI.RadComboBox.ComboBoxes,this);
if(this._expandAnimationEndedDelegate){
if(this._slide){
this._slide.remove_expandAnimationEnded(this._expandAnimationEndedDelegate);
}
this._expandAnimationEndedDelegate=null;
}
if(this._expandAnimationStartedDelegate){
if(this._slide){
this._slide.remove_expandAnimationStarted(this._expandAnimationStartedDelegate);
}
this._expandAnimationStartedDelegate=null;
}
$removeHandler(window,"unload",this._onWindowUnloadDelegate);
$removeHandler(window,"resize",this._onWindowResizeDelegate);
$removeHandler(this.get_inputDomElement(),"propertychange",this._onPropertyChangeDelegate);
$removeHandler(this.get_inputDomElement(),"focus",this._onFocusDelegate);
if($telerik.isIE){
document.detachEvent("onmousedown",this._onDocumentClickDelegate);
document.detachEvent("oncontextmenu",this._onDocumentClickDelegate);
}else{
$removeHandler(document,"mousedown",this._onDocumentClickDelegate);
$removeHandler(document,"contextmenu",this._onDocumentClickDelegate);
}
if(this.get_childListElement()){
$removeHandler(this.get_childListElement(),"click",this._onDropDownClickDelegate);
$removeHandler(this.get_childListElement(),"mouseover",this._onDropDownHoverDelegate);
$removeHandler(this.get_childListElement(),"mouseout",this._onDropDownOutDelegate);
$removeHandler(this.get_childListElement(),"selectstart",this._cancelDelegate);
$removeHandler(this.get_childListElement(),"dragstart",this._cancelDelegate);
}
if(this.get_tableElement()){
$telerik.removeExternalHandler(this.get_tableElement(),"mouseover",this._onTableHoverDelegate);
$telerik.removeExternalHandler(this.get_tableElement(),"mouseout",this._onTableOutDelegate);
}
if(this.get_imageDomElement()){
$removeHandler(this.get_imageDomElement(),"click",this._onImageClickDelegate);
}
if(this._openDropDownOnLoad){
$removeHandler(window,"load",this._onOpenOnLoad);
}
if(this.get_moreResultsBoxElement()){
$removeHandler(this.get_moreResultsBoxElement(),"click",this._onMoreResultsBoxClickDelegate);
$removeHandler(this.get_moreResultsBoxElement(),"mouseover",this._onMoreResultsBoxOverDelegate);
$removeHandler(this.get_moreResultsBoxElement(),"mouseout",this._onMoreResultsBoxOutDelegate);
}
$removeHandler(this.get_childListElementWrapper(),"scroll",this._onDropDownScrollDelegate);
if(this._slide){
this._slide.dispose();
this._slide=null;
}
this._removeDropDown();
this._disposed=true;
Telerik.Web.UI.RadComboBox.callBaseMethod(this,"dispose");
this._tableElement._events=null;
this._inputDomElement._events=null;
this._imageDomElement._events=null;
this._childListElementWrapper._events=null;
},_cancelEvent:function(e){
e.preventDefault();
return false;
},_onDropDownScroll:function(e){
if(!this._virtualScroll||this._ajaxRequest||this._endOfItems){
return;
}
var _33=this.get_items().get_count();
var _34=22;
var _35=0;
if(_33>0){
_34=this.get_items().getItem(0).get_element().offsetHeight;
_35=this.get_items().getItem(_33-1).get_element().offsetTop;
}
var _36=$telerik.getFirstChildByTagName(this.get_childListElement(),"div",0);
if(_36){
var _37=_36.offsetHeight;
if(this.get_childListElementWrapper().scrollTop+_37>=this.get_childListElement().offsetHeight-_37){
this.requestItems(this.get_text(),true);
}
}
},_detachDropDown:function(){
if((!document.readyState||document.readyState=="complete")&&(!this._isDetached)){
var _38=this._findParentForm()||document.body;
var _39=this.get_dropDownElement();
var _3a=this.get_dropDownElement().parentNode;
_3a.parentNode.removeChild(_3a);
_3a.style.marginLeft="0";
_38.insertBefore(_3a,_38.firstChild);
this._isDetached=true;
}
},_removeDropDown:function(){
var _3b=this.get_dropDownElement().parentNode;
_3b.parentNode.removeChild(_3b);
if(this._disposeChildElements){
Sys.WebForms.PageRequestManager.getInstance()._destroyTree(_3b);
}
if(!$telerik.isSafari){
_3b.outerHTML=null;
}
this._dropDownElement=null;
},attachDropDown:function(){
var _3c=this.get_dropDownElement().parentNode;
_3c.parentNode.removeChild(_3c);
this.get_tableElement().parentNode.appendChild(_3c);
},_findParentForm:function(){
var _3d=this.get_element();
while(_3d&&_3d.tagName&&_3d.tagName.toLowerCase()!="form"){
_3d=_3d.parentNode;
}
if(!_3d.tagName){
_3d=null;
}
return _3d;
},_findNearestItem:function(_3e){
while(_3e.nodeType!==9){
if(_3e._item&&Telerik.Web.UI.RadComboBoxItem.isInstanceOfType(_3e._item)){
return _3e._item;
}
_3e=_3e.parentNode;
}
return null;
},_positionDropDown:function(){
if(this._skipDropDownPositioning){
return;
}
this._detachDropDown();
var _3f=this.get_element();
var _40=this._getAnimationContainer();
_40.style.position="absolute";
var _41=$telerik.getLocation(_3f);
var _42=this.get_dropDownElement();
var _43=this.get_element().offsetWidth;
if(this._dropDownWidth){
_43=this._dropDownWidth;
}
var _44=this.get_childListElement();
var _45=this.get_childListElementWrapper();
var _46=_41.y+this.get_offsetY()+this.get_element().offsetHeight;
_40.style.top=_46+"px";
_40.style.left=_41.x+this.get_offsetX()+"px";
if(this._rightToLeft&&document.body.dir=="rtl"){
_40.style.left="";
_40.style.left=_41.x+this.get_offsetX()-Telerik.Web.UI.RadComboBox._getScrollBarWidth()+"px";
}
_42.style.display="block";
_42.style.width=_43+"px";
var _47=0;
if(!this._dropDownWidth){
_47=_42.offsetWidth-_43;
}
if(_47>0&&_47<_43){
_42.style.width=_43-_47+"px";
}
if(this._rightToLeft){
_42.dir="rtl";
}
this._determineScreenBoundaryDetection();
},_calculateItemsHeight:function(){
var _48=0;
var _49=this.get_items().get_count();
for(var i=0;i<_49;i++){
_48+=this.get_items().getItem(i).get_element().offsetHeight;
}
return _48;
},_calculateDropDownAutoHeight:function(){
var _4b=this.get_dropDownElement();
var _4c=this._getAnimationContainer();
var _4d=$telerik.getLocation(this.get_element());
var _4c=this._getAnimationContainer();
var _4e=$telerik.getLocation(_4c);
var _4f=$telerik.getViewPortSize();
var y=_4d.y-_4b.offsetHeight;
var _51=_4f.height-_4e.y;
var _52=_4e.y-this.get_element().offsetHeight;
var _53=_51;
var _54=false;
var _55=0;
if(this._getHeaderElement()){
_55=_55+this._getHeaderElement().offsetHeight;
_54=true;
}
if(this._getFooterElement()){
_55=_55+this._getFooterElement().offsetHeight;
_54=true;
}
if(this.get_moreResultsBoxElement()){
_55=_55+this.get_moreResultsBoxElement().offsetHeight;
_54=true;
}
if(this._enableScreenBoundaryDetection&&_51<_52){
_53=_52;
}
if(!(_53>=0&&(this.get_childListElement().offsetHeight+_55)>=_53)){
_53=this.get_childListElement().offsetHeight+_55;
}
if(_54&&_55<_53){
this.get_childListElementWrapper().style.height=_53-_55+"px";
}else{
this.get_childListElementWrapper().style.height=_53+"px";
}
return _53;
},_determineScreenBoundaryDetection:function(){
var _56=this.get_dropDownElement();
var _57=this._getAnimationContainer();
var _58=$telerik.getLocation(this.get_element());
var _57=this._getAnimationContainer();
var _59=$telerik.getLocation(_57);
var _5a=$telerik.getViewPortSize();
var _5b=_56.offsetHeight;
if(this._height==""&&this.get_childListElement()){
if(this._maxHeight==""||this._calculateItemsHeight()<this._maxHeight){
this._cachedOffsetHeight=_5b;
_5b=this._calculateDropDownAutoHeight();
}else{
if(this._maxHeight!=""){
if(this._cachedOffsetHeight!=""){
_5b=this._cachedOffsetHeight;
}
this.get_dropDownElement().style.height="";
this.get_childListElementWrapper().style.height=this._maxHeight;
}
}
}
if(this._enableScreenBoundaryDetection){
if(this._elementOverflowsBottom(_5a,_56,this.get_inputDomElement())){
var y=_58.y-_5b;
if(y>=0){
this.set_slideDirection(Telerik.Web.UI.SlideDirection.Up);
this._getAnimationContainer().style.height=this.get_dropDownElement().offsetHeight;
this._getAnimationContainer().style.top=_58.y-this.get_offsetY()-_56.offsetHeight+"px";
if(window.netscape&&!window.opera){
this._getAnimationContainer().style.top=_58.y-this.get_offsetY()-_56.offsetHeight+2+"px";
}
if(this._height==""&&(this._maxHeight==""||this._calculateItemsHeight()<this._maxHeight)&&_5b==_59.y-this.get_element().offsetHeight){
this._getAnimationContainer().style.top="0px";
}
}else{
this.set_slideDirection(Telerik.Web.UI.SlideDirection.Down);
}
}else{
this.set_slideDirection(Telerik.Web.UI.SlideDirection.Down);
}
}
this.set_dropDownVisible(true);
},_elementOverflowsBottom:function(_5d,_5e,_5f){
var _60=$telerik.getLocation(_5f).y+_5e.offsetHeight;
return _60>_5d.height;
},_selectFirstMatch:function(){
var _61=this._findItemToSelect();
if(_61&&_61.get_enabled()&&!_61.get_isSeparator()){
_61.highlight();
_61.scrollOnTop();
}
},_findItemToSelect:function(){
var _62=this.findItemByValue(this.get_value());
if(!_62){
_62=this.findItemByText(this.get_text());
}
return _62;
},clearItems:function(){
this.get_items().clear();
this._itemData=null;
},clearSelection:function(){
this.set_text("");
this.set_value("");
this.set_selectedItem(null);
this.set_highlightedItem(null);
},decodeText:function(_63){
var _64=_63;
var _65={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":"\""};
for(var _66 in _65){
_64=_64.replace(new RegExp(_66,"g"),_65[_66]);
}
return _64;
},_findNextAvailableIndex:function(_67,_68){
var _69=this.get_visibleItems();
for(var i=_67,_6b=_69.length;i<_6b;i++){
if(_69[i].get_enabled()&&!_69[i].get_isSeparator()){
if(_68==null){
return i;
}
if(_68&&_69[i].get_text().indexOf(_68)==0){
return i;
}
}
}
return _69.length;
},_findPrevAvailableIndex:function(_6c){
var _6d=this.get_visibleItems();
if(_6d.length<1){
return -1;
}
for(var i=_6c;i>=0;i--){
if(_6d[i].get_enabled()&&!_6d[i].get_isSeparator()){
return i;
}
}
return -1;
},_onDropDownClick:function(e){
if(this._eventMap.skipElement(e,null)){
return;
}
if(!this._enabled){
return;
}
var _70=this._findNearestItem(e.target);
if(!_70||!_70.get_enabled()||_70.get_isSeparator()){
return;
}
try{
this.get_inputDomElement().focus();
}
catch(e){
}
this._performSelect(_70,e);
this._hideDropDown(e);
if(!this.get_isTemplated()&&this.get_filter()!=Telerik.Web.UI.RadComboBoxFilter.None&&e.stopPropagation){
e.stopPropagation();
}
},_onDropDownHover:function(e){
if(!this._enabled||this._ajaxRequest){
return;
}
var _72=this._findNearestItem(e.target);
if(!_72||!_72.get_enabled()||_72.get_isSeparator()){
return;
}
_72.highlight();
},_onDropDownOut:function(e){
if(!this._enabled){
return;
}
if(!e){
e=event;
}
var _74=this._getRelatedTarget(e);
if(!_74){
return;
}
while(_74&&_74.nodeType!==9){
if(_74.parentNode==this.get_dropDownElement()){
return;
}
_74=_74.parentNode;
}
var _75=this.get_highlightedItem();
if(_75){
_75.unHighlight();
}
},_onTableHover:function(e){
if(!this._enabled){
return;
}
var _77=this.get_tableElement();
if(_77!=null&&_77.className!="rcbFocused"){
_77.className="rcbHovered";
}
},_onTableOut:function(e){
if(!this._enabled){
return;
}
if(!e){
e=event;
}
var _79=this.get_tableElement();
var _7a=e.target||e.srcElement;
var _7b=this._getRelatedTarget(e);
if(!_7b){
return;
}
while(_7b&&_7b.nodeType!==9){
if(_7b.parentNode&&_7b.parentNode==_79){
return;
}
_7b=_7b.parentNode;
}
if(_79!=null&&_79.className=="rcbHovered"){
_79.className="";
}
},_getRelatedTarget:function(e){
var _7d=e.toElement||e.relatedTarget||e.fromElement;
if(!_7d){
return null;
}
try{
var _7e=_7d.tagName;
}
catch(ex){
_7d=null;
}
return _7d;
},_onDocumentClick:function(e){
if(!e){
e=event;
}
var _80=e.target||e.srcElement;
while(_80.nodeType!==9){
if(_80.parentNode==null||_80==this.get_element()||_80==this.get_dropDownElement()){
return;
}
_80=_80.parentNode;
}
if(this._focused){
this._raiseClientBlur(e);
this._selectItemOnBlur(e);
this._focused=false;
}
if(this.get_dropDownVisible()&&this.get_closeDropDownOnBlur()){
this._hideDropDown(e);
}
},_selectItemOnBlur:function(e){
var _82=this._findItemToSelect();
if(!_82&&!this.get_allowCustomText()&&this.get_items().get_count()>0){
if(this.get_markFirstMatch()){
if(this.get_text()==""){
this.set_text(this._originalText);
}
this.highlightMatches();
this.selectText(0,0);
_82=this.get_highlightedItem();
}
}
if(!this.get_allowCustomText()&&!this.get_enableLoadOnDemand()&&this.get_filter()!=Telerik.Web.UI.RadComboBoxFilter.None){
_82=this.get_highlightedItem();
if(this.get_highlightedItem()==null&&this.get_selectedItem()){
_82=this.get_selectedItem();
}else{
if(!this.get_highlightedItem()&&this.get_visibleItems().length>0){
_82=this.get_visibleItems()[0];
}
}
}
if(this.get_filter()!=Telerik.Web.UI.RadComboBoxFilter.None){
this.setAllItemsVisible(true);
}
this._performSelect(_82,e);
},_onWindowResize:function(){
if(this.get_dropDownVisible()){
this._positionDropDown();
}
},_onWindowUnload:function(){
this._disposeChildElements=false;
},_onKeyDown:function(e){
if(!this._fireEvents||this._ajaxRequest){
return;
}
if(!e){
e=event;
}
this.raise_onClientKeyPressing(e);
var _84=e.keyCode||e.which;
this._lastKeyCode=_84;
var _85=String.fromCharCode(_84);
if(_84==Telerik.Web.UI.Keys.Escape&&this.get_dropDownVisible()){
if(this.get_dropDownVisible()){
this._hideDropDown(e);
}
return;
}else{
if(_84===Telerik.Web.UI.Keys.Enter){
if(this.get_dropDownVisible()){
this._hideDropDown(e);
}
this._performSelect(this.get_highlightedItem(),e);
if(this.get_markFirstMatch()){
var _86=this.get_text().length;
this.selectText(_86,_86);
}
e.returnValue=false;
if(e.preventDefault){
e.preventDefault();
}
return;
}else{
if(_84===Telerik.Web.UI.Keys.Down){
e.returnValue=false;
if(e.altKey){
this._toggleDropDown(e);
return;
}
this.highlightNextItem(null);
if(e.preventDefault){
e.preventDefault();
}
return;
}else{
if(_84===Telerik.Web.UI.Keys.Up){
e.returnValue=false;
if(e.altKey){
this._toggleDropDown(e);
return;
}
this.highlightPreviousItem();
if(e.preventDefault){
e.preventDefault();
}
return;
}else{
if(_84===Telerik.Web.UI.Keys.Tab){
if(this.get_dropDownVisible()){
this._hideDropDown(e);
}
this._raiseClientBlur(e);
this._selectItemOnBlur(e);
this._focused=false;
return;
}
}
}
}
}
if(_84==Telerik.Web.UI.Keys.Left||_84==Telerik.Web.UI.Keys.Right){
return;
}
if(_85&&(!e.altKey)&&!(this.get_enableLoadOnDemand()||!this.get_readOnly())){
this.highlightNextItem(_85);
return;
}
},_onKeyPress:function(e){
if(!this._fireEvents||this._ajaxRequest){
return;
}
var _88=e.charCode||e.keyCode;
if((this.get_markFirstMatch())&&(this.get_autoCompleteSeparator())&&(this.get_autoCompleteSeparator().charCodeAt(0)==_88)){
this._performSelect(this.get_highlightedItem(),e);
if(this.get_highlightedItem()){
this.get_highlightedItem().unHighlight();
}
var _89=this.get_text().length;
this.selectText(_89,_89);
}
},_onImageClick:function(e){
if(this._enabled){
if(!this.get_dropDownVisible()){
this._selectFirstMatch();
}
this._toggleDropDown(e);
}
},_onInputClick:function(e){
if(this._enabled){
this._selectFirstMatch();
this.selectText(0,this.get_text().length);
if(!this.get_dropDownVisible()&&this._showDropDownOnTextboxClick){
this._showDropDown(e);
}
return true;
}
},_onMoreResultsBoxClick:function(e){
this.requestItems(this.get_text(),true);
},_onMoreResultsBoxOver:function(e){
this.get_moreResultsBoxElement().style.cursor="pointer";
},_onMoreResultsBoxOut:function(e){
this.get_moreResultsBoxElement().style.cursor="default";
},_onFocus:function(e){
if(this._focused){
return;
}
if(this.get_emptyMessage()&&this.get_emptyMessage()==this.get_text()){
this._suppressChange=true;
this.get_inputDomElement().value=this._text;
(function(_90){
setTimeout(function(){
_90.get_inputDomElement().className="rcbInput";
},0);
})(this);
this._suppressChange=false;
}
var _91=this.get_tableElement();
if(_91!=null){
(function(){
setTimeout(function(){
_91.className="rcbFocused";
},0);
})();
}
if(!e&&typeof (event)!="undefined"){
e=event;
}
this._focused=true;
this.raise_onClientFocus(e);
return true;
},_raiseClientBlur:function(e){
if(this._focused){
var _93=this.get_tableElement();
if(_93!=null){
_93.className="";
}
this._applyEmptyMessage();
this.raise_onClientBlur(e);
}
},_applyEmptyMessage:function(){
if(this.get_emptyMessage()&&this.get_text()==""){
this._suppressChange=true;
this.get_inputDomElement().value=this.get_emptyMessage();
this.get_inputDomElement().className+=" rcbEmptyMessage";
this._suppressChange=false;
}
},_onInputChange:function(){
this.set_value("");
var _94=this.get_text();
if(this.get_emptyMessage()!=""&&_94!=this.get_emptyMessage()){
this._text=_94;
}
this.get_element().value=this._text;
this.updateClientState();
if(this.get_enableLoadOnDemand()&&!this._suppressChange){
var me=this;
if(this._requestTimeoutID>0){
window.clearTimeout(this._requestTimeoutID);
this._requestTimeoutID=0;
}
if(!this._showDropDownOnTextboxClick){
this._skipLoadingItems=true;
}
if(!this.get_dropDownVisible()){
this.showDropDown();
}
this._requestTimeoutID=window.setTimeout(function(){
if(me._disposed){
return;
}
me.requestItems(me.get_text(),false);
},me.get_itemRequestTimeout());
return;
}
if(!this._suppressChange){
if(this.get_filter()==Telerik.Web.UI.RadComboBoxFilter.None){
if(this._shouldHighlight()){
this.highlightMatches();
}
}else{
this.highlightAllMatches(this.get_text());
}
}
},_onInputPropertyChange:function(){
if(!event.propertyName){
event=event.rawEvent;
}
if(event.propertyName=="value"){
var _96=this.get_text();
if(this._cachedText!=_96){
this._cachedText=_96;
this._onInputChange(event);
}
}
},_shouldHighlight:function(){
if(this._lastKeyCode<Telerik.Web.UI.Keys.Space){
return false;
}
if(this._lastKeyCode>=Telerik.Web.UI.Keys.PageUp&&this._lastKeyCode<=Telerik.Web.UI.Keys.Del){
return false;
}
if(this._lastKeyCode>=Telerik.Web.UI.Keys.F1&&this._lastKeyCode<=Telerik.Web.UI.Keys.F12){
return false;
}
return true;
},_showDropDown:function(e){
if(this._firstOpeningOfDropDown){
this._initializeAnimation();
this._applyZIndex();
this._firstOpeningOfDropDown=false;
}
if(this.raise_dropDownOpening(e)==true){
return;
}
var _98=this._getAnimationContainer();
if(!_98){
return;
}
var _99=this.get_text();
if(this.get_emptyMessage()==this.get_text()){
_99="";
}
if(this.get_enableLoadOnDemand()&&this.get_items().get_count()==0&&!this._skipLoadingItems){
this.requestItems(_99,false);
}
_98.style.visibility="hidden";
this.get_dropDownElement().style.visibility="hidden";
this._slide.show();
this._resetAnimatedElementPosition();
this._slide.set_direction(this.get_slideDirection());
try{
this.get_inputDomElement().focus();
}
catch(e){
}
this._onFocus(e);
this.set_dropDownVisible(true);
this._positionDropDown();
var _9a=this.get_dropDownElement();
_9a.style.top=-_9a.offsetHeight+"px";
this._skipDropDownPositioning=true;
this._slide.updateSize();
this._skipDropDownPositioning=null;
_98.style.visibility="visible";
this._slide.expand();
this.raise_dropDownOpened(e);
},_toggleDropDown:function(e){
if(this.get_dropDownVisible()){
this._hideDropDown(e);
}else{
this._showDropDown(e);
if(this.get_highlightedItem()){
this.get_highlightedItem().scrollIntoView();
}
}
},_hideDropDown:function(e){
if(!this.get_dropDownVisible()){
return;
}
if(this.raise_dropDownClosing(e)==true){
return;
}
this.get_dropDownElement().style.display="none";
if(!this._getAnimationContainer()){
return;
}
if(window.netscape&&!window.opera){
this.get_childListElementWrapper().scrollTop=0;
}
this._slide.collapse();
this.set_dropDownVisible(false);
if(this.get_filter()!=Telerik.Web.UI.RadComboBoxFilter.None){
this._removeEmTagsFromAllItems();
}
this.raise_dropDownClosed(e);
},get_dropDownElement:function(){
if(!this._dropDownElement){
this._dropDownElement=this._getChildElement("DropDown");
}
return this._dropDownElement;
},get_inputDomElement:function(){
if(!this._inputDomElement){
this._inputDomElement=this._getChildElement("Input");
}
return this._inputDomElement;
},get_moreResultsBoxMessageElement:function(){
var box=this.get_moreResultsBoxElement();
var _9e=$telerik.getFirstChildByTagName(box,"span",0);
return _9e;
},get_moreResultsBoxElement:function(){
var box=this._getChildElement("MoreResultsBox");
return box;
},get_emptyMessage:function(){
return this._emptyMessage;
},set_emptyMessage:function(_a0){
if(this._emptyMessage!==_a0){
this._emptyMessage=_a0;
}
this._applyEmptyMessage();
},get_imageDomElement:function(){
if(!this._imageDomElement){
this._imageDomElement=this._getChildElement("Arrow");
}
return this._imageDomElement;
},get_slideDirection:function(){
return this._slideDirection;
},set_slideDirection:function(_a1){
this._slideDirection=_a1;
this._slide.set_direction(_a1);
},hideDropDown:function(){
this._hideDropDown(null);
},showDropDown:function(){
this._showDropDown(null);
},toggleDropDown:function(){
this._toggleDropDown(null);
},_resetAnimatedElementPosition:function(){
var _a2=this._getAnimatedElement();
_a2.style.top="0px";
_a2.style.left="0px";
},get_readOnly:function(){
return !(this.get_allowCustomText()||this.get_markFirstMatch())&&this.get_filter()==Telerik.Web.UI.RadComboBoxFilter.None;
},_performSelect:function(_a3,e){
if(_a3&&_a3!=this.get_selectedItem()&&!this.get_enableLoadOnDemand()){
_a3._select(e);
return;
}
if(_a3&&_a3==this.get_selectedItem()&&this.getLastWord(this.get_text())!=_a3.get_text()&&!this.get_readOnly()){
this.set_text(_a3.get_text());
return;
}
if(_a3&&_a3==this.get_selectedItem()){
return;
}
if(_a3&&this.get_originalText()!=_a3.get_text()){
_a3._select(e);
return;
}
if(_a3&&(!this.get_selectedItem()||this.get_selectedItem().get_value()!=_a3.get_value())){
_a3._select(e);
return;
}
if(this.get_originalText()!=this.get_text()){
if(this.get_highlightedItem()){
this.get_highlightedItem().unHighlight();
}
if(this.raise_textChange(this,e)==true){
return;
}
var _a5={Command:"TextChanged"};
this.postback(_a5);
}
},set_value:function(_a6){
this._value=_a6;
this.updateClientState();
},get_value:function(){
return this._value;
},set_text:function(_a7){
_a7=this.decodeText(_a7);
this.get_element().value=_a7;
this._suppressChange=true;
var _a8=this.get_inputDomElement();
_a8.value=_a7;
this.set_value("");
if(_a8.fireEvent&&document.createEventObject){
var _a9=document.createEventObject();
_a8.fireEvent("onchange",_a9);
}else{
if(_a8.dispatchEvent){
var _aa=true;
var _a9=document.createEvent("HTMLEvents");
_a9.initEvent("change",_aa,true);
_a8.dispatchEvent(_a9);
}
}
this._suppressChange=false;
this._text=_a7;
this.updateClientState();
},get_webServiceSettings:function(){
return this._webServiceSettings;
},set_webServiceSettings:function(_ab){
var _ac=Sys.Serialization.JavaScriptSerializer.deserialize(_ab);
this._webServiceSettings=new Telerik.Web.UI.WebServiceSettings(_ac);
},get_text:function(){
return this.get_inputDomElement().value;
},enable:function(){
this.get_inputDomElement().disabled=false;
var _ad=this.get_tableElement();
if(_ad!=null){
_ad.className="";
}
this.set_enabled(true);
this.enableEvents();
var _ae=this.get_items().get_count();
for(var i=0;i<_ae;i++){
this._children.getItem(i).enable();
}
},disable:function(){
var _b0=this.get_tableElement();
if(_b0!=null){
_b0.className="rcbDisabled";
}
this.set_enabled(false);
this.get_inputDomElement().disabled="disabled";
this.disableEvents();
var _b1=this.get_items().get_count();
for(var i=0;i<_b1;i++){
this._children.getItem(i).disable();
}
},set_enabled:function(_b3){
this._enabled=_b3;
this.updateClientState();
},get_enabled:function(){
return this._enabled;
},disableEvents:function(){
this._fireEvents=false;
},enableEvents:function(){
this._fireEvents=true;
},findItemByText:function(_b4){
var _b5=this.get_items();
var _b6=_b5.get_count();
for(var i=0;i<_b6;i++){
if(_b5.getItem(i).get_text()==_b4){
return _b5.getItem(i);
}
}
return null;
},findItemByValue:function(_b8){
if(!_b8){
return null;
}
var _b9=this.get_items();
var _ba=_b9.get_count();
for(var i=0;i<_ba;i++){
if(_b9.getItem(i).get_value()==_b8){
return _b9.getItem(i);
}
}
return null;
},_getAnimationContainer:function(){
if(!this._animationContainer){
if(this.get_dropDownElement()){
this._animationContainer=this.get_dropDownElement().parentNode;
}
}
return this._animationContainer;
},highlightPreviousItem:function(){
var _bc=this.get_visibleItems();
var _bd=this.get_highlightedItem();
if(!_bd){
_bd=this.get_selectedItem();
}
var _be=0;
if(_bd){
var _bf=_bc.length;
for(var i=0;i<_bf;i++){
if(_bc[i]==_bd){
_be=i-1;
}
}
}
_be=this._findPrevAvailableIndex(_be);
if(_be>=0){
_bc[_be].highlight();
_bc[_be].scrollIntoView();
var _c1=this._getLastSeparatorIndex(this.get_text());
var _c2=this.get_text().substring(0,_c1+1)+_bc[_be].get_text();
if(this.get_changeText()){
this.set_text(_c2);
this.set_value(_bc[_be].get_value());
}
}
},highlightNextItem:function(_c3){
var _c4=this.get_visibleItems();
var _c5=this.get_highlightedItem();
if(!_c5){
_c5=this.get_selectedItem();
}
var _c6=0;
if(_c5){
var _c7=_c4.length;
for(var i=0;i<_c7;i++){
if(_c4[i]==_c5){
_c6=i+1;
}
}
}
_c6=this._findNextAvailableIndex(_c6,_c3);
if(_c3&&_c6==_c4.length){
_c6=this._findNextAvailableIndex(0,_c3);
}
if(_c6<_c4.length){
_c4[_c6].highlight();
_c4[_c6].scrollIntoView();
var _c9=this._getLastSeparatorIndex(this.get_text());
var _ca=this.get_text().substring(0,_c9+1)+_c4[_c6].get_text();
if(this.get_changeText()){
this.set_text(_ca);
this.set_value(_c4[_c6].get_value());
}
}
},findFirstMatch:function(_cb){
if(!_cb){
return null;
}
var _cc=this.get_items();
var _cd=_cc.get_count();
for(var i=0;i<_cd;i++){
if(_cc.getItem(i).get_text().length<_cb.length){
continue;
}
if(_cc.getItem(i).get_enabled()==false||_cc.getItem(i).get_isSeparator()){
continue;
}
var _cf=_cc.getItem(i).get_text().substring(0,_cb.length);
if(!this.get_isCaseSensitive()){
if(_cf.toLowerCase()==_cb.toLowerCase()){
return _cc.getItem(i);
}
}else{
if(_cf==_cb){
return _cc.getItem(i);
}
}
}
return null;
},highlightAllMatches:function(_d0){
if(this.get_filter()==Telerik.Web.UI.RadComboBoxFilter.None){
return;
}
if(this.get_highlightedItem()){
this.get_highlightedItem().unHighlight();
}
var _d1=this.getLastWord(_d0);
if(this._getLastSeparator(_d0)==_d0.charAt(_d0.length-1)){
this._removeEmTagsFromAllItems();
this.setAllItemsVisible(true);
return;
}
this.get_items().forEach(function(_d2,_d3){
_d2._markText(_d1);
});
if(this.get_markFirstMatch()){
this.highlightFirstValidMatch();
}
},highlightFirstValidMatch:function(){
if(this.get_text().length>0){
var _d4=this.get_visibleItems();
var _d5=_d4.length;
for(var _d6=0;_d6<_d5;_d6++){
var _d7=_d4[_d6];
if(_d7.get_enabled()==true){
_d7.highlight();
return;
}
}
}
},setAllItemsVisible:function(_d8){
var _d8=_d8;
this.get_items().forEach(function(_d9){
_d9.set_visible(_d8);
});
},_removeEmTagsFromAllItems:function(){
if(this.get_isTemplated()||this.get_filter()==Telerik.Web.UI.RadComboBoxFilter.None){
return;
}
this.get_items().forEach(function(_da){
var _db=_da.get_text();
_da.set_text(_db);
_da.get_element().innerHTML=Telerik.Web.UI.RadComboBox.htmlEncode(_db);
});
},highlightMatches:function(){
if(!this.get_markFirstMatch()){
return;
}
var _dc=this.get_text();
var _dd=this.getLastWord(_dc);
if(this._getLastSeparator(_dc)==_dc.charAt(_dc.length-1)){
return;
}
var _de=this.findFirstMatch(_dd);
if(this.get_highlightedItem()){
this.get_highlightedItem().unHighlight();
}
if(!_de){
if(!this.get_allowCustomText()&&!this.get_enableLoadOnDemand()){
if(_dc){
var _df=this._getLastSeparatorIndex(_dc);
if(_df<_dc.length-1){
var _e0=_dc.substring(0,_dc.length-1);
if(_e0==""&&$telerik.isSafari){
var me=this;
window.setTimeout(function(){
me.set_text(_e0);
},0);
}else{
this.set_text(_e0);
this.highlightMatches();
}
}
}
}
return;
}
_de.highlight();
_de.scrollOnTop();
var _df=this._getLastSeparatorIndex(_dc);
var _e2=_dc.substring(0,_df+1)+_de.get_text();
if(_dc!=_e2){
this.set_text(_e2);
}
this.set_value(_de.get_value());
var _e3=_df+_dd.length+1;
var _e4=_e2.length-_e3;
this.selectText(_e3,_e4);
},postback:function(_e5){
if(!this._postBackReference){
return;
}
var _e6=this._postBackReference.replace("arguments",Sys.Serialization.JavaScriptSerializer.serialize(_e5));
eval(_e6);
},_getLastSeparator:function(_e7){
if(!this.get_autoCompleteSeparator()){
return null;
}
var _e8=this._getLastSeparatorIndex(_e7);
return _e7.charAt(_e8);
},getLastWord:function(_e9){
var _ea=-1;
if(this.get_autoCompleteSeparator()!=null){
_ea=this._getLastSeparatorIndex(_e9);
}
var _eb=_e9.substring(_ea+1,_e9.length);
return _eb;
},get_lastWord:function(){
var _ec=this.getLastWord(this.get_text());
return _ec;
},_getLastSeparatorIndex:function(_ed){
var _ee=-1;
if(!this.get_autoCompleteSeparator()){
return _ee;
}
for(var i=0,_f0=this.get_autoCompleteSeparator().length;i<_f0;i++){
var _f1=this.get_autoCompleteSeparator().charAt(i);
var _f2=_ed.lastIndexOf(_f1);
if(_f2>_ee&&!this._checkIsThisPartOfWord(_f2,_f1)){
_ee=_f2;
}
}
return _ee;
},_checkIsThisPartOfWord:function(_f3,_f4){
var _f5="";
if(this.get_selectedItem()){
_f5=this.get_selectedItem().get_text();
}
var _f6=_f5.lastIndexOf(_f4);
if(_f6>-1&&_f6==_f3){
return true;
}
return false;
},selectText:function(_f7,_f8){
if(!this.get_enableTextSelection()){
return;
}
if(this.get_inputDomElement().createTextRange){
var _f9=this.get_inputDomElement().createTextRange();
if(_f7==0&&_f8==0){
_f9.collapse(true);
return;
}
_f9.moveStart("character",_f7);
_f9.moveEnd("character",_f8);
_f9.select();
}else{
this.get_inputDomElement().setSelectionRange(_f7,_f7+_f8);
}
},_childRemoving:function(_fa){
var _fb=_fa.get_index();
if(this._itemData){
Array.remove(this._itemData,this._itemData[_fb]);
}
Telerik.Web.UI.RadComboBox.callBaseMethod(this,"_childRemoving",[_fa]);
},_childRemoved:function(_fc,_fd){
var _fe=_fc.get_element();
if(_fc==this.get_selectedItem()){
this.set_selectedItem(null);
this.set_highlightedItem(null);
this.set_text("");
}
if(_fd.get_items().get_count()==0&&!this._getHeaderElement()&&!this._getFooterElement()){
_fe=_fd._childListElement;
_fd._childListElement=null;
}
if(_fe){
_fe.innerHTML="";
if(_fe.parentNode){
_fe.parentNode.removeChild(_fe);
}
_fe=null;
}
Telerik.Web.UI.RadComboBox.callBaseMethod(this,"_childRemoved",[_fc,_fd]);
},_childrenCleared:function(_ff){
this.set_selectedItem(null);
this.set_highlightedItem(null);
var _100=_ff.get_childListElement();
var _101=_ff.get_items().get_count();
if(_100&&!this._getHeaderElement()&&!this._getFooterElement()){
for(var i=0;i<_101;i++){
_ff.get_items().getItem(i)._dispose();
}
_100.innerHTML="";
_100=null;
}else{
if(_100){
for(var i=0;i<_101;i++){
this._childRemoved(_ff.get_items().getItem(i),_ff);
}
}
}
},_createChildControls:function(){
this._children=new Telerik.Web.UI.RadComboBoxItemCollection(this);
Telerik.Web.UI.RadComboBox._createChildControls(this,this._children);
},_ensureChildControls:function(){
if(!this._childControlsCreated){
this._createChildControls();
this._childControlsCreated=true;
if(!this._setSelectedItem){
this._setSelectedItem=true;
this._setFirstSelectedItem();
}
}
},_createChildListElement:function(){
var _103=document.createElement("ul");
_103.className="rcbList";
this.get_childListElementWrapper().appendChild(_103);
this._onDropDownClickDelegate=Function.createDelegate(this,this._onDropDownClick);
$addHandler(this.get_childListElement(),"click",this._onDropDownClickDelegate);
this._onDropDownHoverDelegate=Function.createDelegate(this,this._onDropDownHover);
$addHandler(this.get_childListElement(),"mouseover",this._onDropDownHoverDelegate);
this._cancelDelegate=Function.createDelegate(this,this._cancelEvent);
$addHandler(this.get_childListElement(),"selectstart",this._cancelDelegate);
$addHandler(this.get_childListElement(),"dragstart",this._cancelDelegate);
this._onDropDownOutDelegate=Function.createDelegate(this,this._onDropDownOut);
$addHandler(this.get_childListElement(),"mouseout",this._onDropDownOutDelegate);
},_setFirstSelectedItem:function(){
var item=this.findItemByText(this._text);
if(item&&!item.get_isSeparator()){
this.set_selectedItem(item);
}
},get_childListElement:function(){
if(!this._childListElement){
var _105=this.get_childListElementWrapper();
this._childListElement=$telerik.getFirstChildByTagName(_105,"ul",0);
}
return this._childListElement;
},get_childListElementWrapper:function(){
if(!this._childListElementWrapper){
var _106=this.get_dropDownElement();
if(this._getHeaderElement()){
this._childListElementWrapper=$telerik.getFirstChildByTagName(_106,"div",1);
}else{
this._childListElementWrapper=$telerik.getFirstChildByTagName(_106,"div",0);
}
}
return this._childListElementWrapper;
},_getHeaderElement:function(){
if(this.get_dropDownElement()){
return $telerik.getChildByClassName(this.get_dropDownElement(),"rcbHeader",0);
}
return null;
},_getFooterElement:function(){
if(this.get_dropDownElement()){
return $telerik.getChildByClassName(this.get_dropDownElement(),"rcbFooter",0);
}
return null;
},get_tableElement:function(){
if(!this._tableElement){
this._tableElement=$telerik.getFirstChildByTagName(this.get_element(),"table",0);
}
return this._tableElement;
},get_expandAnimation:function(){
return this._expandAnimation;
},set_expandAnimation:function(_107){
var _108=Sys.Serialization.JavaScriptSerializer.deserialize(_107);
this._expandAnimation=new Telerik.Web.UI.AnimationSettings(_108);
},get_collapseAnimation:function(){
return this._collapseAnimation;
},set_collapseAnimation:function(_109){
var _10a=Sys.Serialization.JavaScriptSerializer.deserialize(_109);
this._collapseAnimation=new Telerik.Web.UI.AnimationSettings(_10a);
},_getAnimatedElement:function(){
if(!this._animatedElement){
this._animatedElement=this.get_dropDownElement();
}
return this._animatedElement;
},get_items:function(){
return this._getChildren();
},get_visibleItems:function(){
var _10b=[];
var _10c=this._getChildren().get_count();
for(var i=0;i<_10c;i++){
var item=this._getChildren().getItem(i);
if(item.get_visible()){
Array.add(_10b,item);
}
}
return _10b;
},set_items:function(_10f){
this._children=_10f;
},get_itemData:function(){
return this._itemData;
},set_itemData:function(_110){
this._itemData=_110;
},get_itemRequestTimeout:function(){
return this._itemRequestTimeout;
},set_itemRequestTimeout:function(_111){
this._itemRequestTimeout=_111;
},get_appendItems:function(){
return this._appendItems;
},set_appendItems:function(_112){
this._appendItems=_112;
},get_selectedItem:function(){
if(!this._setSelectedItem){
this._setSelectedItem=true;
this._setFirstSelectedItem();
}
return this._selectedItem;
},set_selectedItem:function(_113){
this._selectedItem=_113;
},get_selectedIndex:function(){
var _114=this.get_selectedItem();
if(_114){
return _114.get_index();
}
return this._selectedIndex;
},set_selectedIndex:function(_115){
this._selectedIndex=_115;
},get_causesValidation:function(){
return this._causesValidation;
},set_causesValidation:function(_116){
this._causesValidation=_116;
},get_closeDropDownOnBlur:function(){
return this._closeDropDownOnBlur;
},set_closeDropDownOnBlur:function(_117){
this._closeDropDownOnBlur=_117;
},get_isTemplated:function(){
return this._isTemplated;
},set_isTemplated:function(_118){
this._isTemplated=_118;
},get_highlightTemplatedItems:function(){
return this._highlightTemplatedItems;
},set_highlightTemplatedItems:function(_119){
this._highlightTemplatedItems=_119;
},get_enableLoadOnDemand:function(){
return this._enableLoadOnDemand;
},set_enableLoadOnDemand:function(_11a){
this._enableLoadOnDemand=_11a;
},get_enableItemCaching:function(){
return this._enableItemCaching;
},set_enableItemCaching:function(_11b){
this._enableItemCaching=_11b;
},get_allowCustomText:function(){
return this._allowCustomText;
},set_allowCustomText:function(_11c){
this._allowCustomText=_11c;
},get_changeText:function(){
return this._changeText;
},set_changeText:function(_11d){
this._changeText=_11d;
},get_markFirstMatch:function(){
return this._markFirstMatch;
},set_markFirstMatch:function(_11e){
this._markFirstMatch=_11e;
},get_filter:function(){
return this._filter;
},set_filter:function(_11f){
this._filter=_11f;
},get_enableTextSelection:function(){
return this._enableTextSelection;
},set_enableTextSelection:function(_120){
this._enableTextSelection=_120;
},get_originalText:function(){
return this._originalText;
},set_originalText:function(_121){
this._originalText=_121;
},get_highlightedItem:function(){
return this._highlightedItem;
},set_highlightedItem:function(_122){
this._highlightedItem=_122;
},get_isCaseSensitive:function(){
return this._isCaseSensitive;
},set_isCaseSensitive:function(_123){
this._isCaseSensitive=_123;
},get_dropDownVisible:function(){
return this._dropDownVisible;
},set_dropDownVisible:function(_124){
this._dropDownVisible=_124;
},get_autoCompleteSeparator:function(){
return this._autoCompleteSeparator;
},set_autoCompleteSeparator:function(_125){
this._autoCompleteSeparator=_125;
},get_showMoreMessage:function(){
return this._showMoreMessage;
},set_showMoreMessage:function(_126){
this._showMoreMessage=_126;
},get_loadingMessage:function(){
return this._loadingMessage;
},set_loadingMessage:function(_127){
this._loadingMessage=_127;
},get_errorMessage:function(){
return this._errorMessage;
},set_errorMessage:function(_128){
this._errorMessage=_128;
},set_endOfItems:function(_129){
this._endOfItems=_129;
},get_endOfItems:function(){
return this._endOfItems;
},get_clientDataString:function(){
return this._clientDataString;
},set_clientDataString:function(_12a){
this._clientDataString=_12a;
},get_offsetX:function(){
return this._offsetX;
},set_offsetX:function(_12b){
this._offsetX=_12b;
},get_offsetY:function(){
return this._offsetY;
},set_offsetY:function(_12c){
this._offsetY=_12c;
},add_keyPressing:function(_12d){
this.get_events().addHandler("keyPressing",_12d);
},remove_keyPressing:function(_12e){
this.get_events().removeHandler("keyPressing",_12e);
},raise_keyPressing:function(_12f){
this.raiseEvent("keyPressing",_12f);
},add_textChange:function(_130){
this.get_events().addHandler("textChange",_130);
},remove_textChange:function(_131){
this.get_events().removeHandler("textChange",_131);
},raise_textChange:function(_132,e){
var _132=new Telerik.Web.UI.RadComboBoxCancelEventArgs(e);
this.raiseEvent("textChange",_132);
return _132.get_cancel();
},add_selectedIndexChanging:function(_134){
this.get_events().addHandler("selectedIndexChanging",_134);
},remove_selectedIndexChanging:function(_135){
this.get_events().removeHandler("selectedIndexChanging",_135);
},raise_selectedIndexChanging:function(item,e){
var _138=new Telerik.Web.UI.RadComboBoxItemCancelEventArgs(item,e);
this.raiseEvent("selectedIndexChanging",_138);
return _138.get_cancel();
},add_selectedIndexChanged:function(_139){
this.get_events().addHandler("selectedIndexChanged",_139);
},remove_selectedIndexChanged:function(_13a){
this.get_events().removeHandler("selectedIndexChanged",_13a);
},raise_selectedIndexChanged:function(item,e){
var _13d=new Telerik.Web.UI.RadComboBoxItemEventArgs(item,e);
this.raiseEvent("selectedIndexChanged",_13d);
},add_itemsRequesting:function(_13e){
this.get_events().addHandler("itemsRequesting",_13e);
},remove_itemsRequesting:function(_13f){
this.get_events().removeHandler("itemsRequesting",_13f);
},add_itemsRequested:function(_140){
this.get_events().addHandler("itemsRequested",_140);
},remove_itemsRequested:function(_141){
this.get_events().removeHandler("itemsRequested",_141);
},raise_itemsRequested:function(text,e){
var _144=new Telerik.Web.UI.RadComboBoxRequestEventArgs(text,e);
this.raiseEvent("itemsRequested",_144);
},add_itemDataBound:function(_145){
this.get_events().addHandler("itemDataBound",_145);
},remove_itemDataBound:function(_146){
this.get_events().removeHandler("itemDataBound",_146);
},add_dropDownOpening:function(_147){
this.get_events().addHandler("dropDownOpening",_147);
},remove_dropDownOpening:function(_148){
this.get_events().removeHandler("dropDownOpening",_148);
},raise_dropDownOpening:function(e){
var _14a=new Telerik.Web.UI.RadComboBoxCancelEventArgs(e);
this.raiseEvent("dropDownOpening",_14a);
return _14a.get_cancel();
},add_dropDownClosing:function(_14b){
this.get_events().addHandler("dropDownClosing",_14b);
},remove_dropDownClosing:function(_14c){
this.get_events().removeHandler("dropDownClosing",_14c);
},add_dropDownOpened:function(_14d){
this.get_events().addHandler("dropDownOpened",_14d);
},remove_dropDownOpened:function(_14e){
this.get_events().removeHandler("dropDownOpened",_14e);
},raise_dropDownOpened:function(e){
var _150=new Telerik.Web.UI.RadComboBoxEventArgs(e);
this.raiseEvent("dropDownOpened",_150);
},add_dropDownClosed:function(_151){
this.get_events().addHandler("dropDownClosed",_151);
},remove_dropDownClosed:function(_152){
this.get_events().removeHandler("dropDownClosed",_152);
},raise_dropDownClosed:function(e){
var _154=new Telerik.Web.UI.RadComboBoxEventArgs(e);
this.raiseEvent("dropDownClosed",_154);
},add_itemsRequestFailed:function(_155){
this.get_events().addHandler("itemsRequestFailed",_155);
},remove_itemsRequestFailed:function(_156){
this.get_events().removeHandler("itemsRequestFailed",_156);
},raise_itemsRequestFailed:function(text,_158,e){
var _15a=new Telerik.Web.UI.RadComboBoxItemsRequestFailedEventArgs(text,_158,e);
this.raiseEvent("itemsRequestFailed",_15a);
return _15a.get_cancel();
},raise_dropDownClosing:function(e){
var _15c=new Telerik.Web.UI.RadComboBoxCancelEventArgs(e);
this.raiseEvent("dropDownClosing",_15c);
return _15c.get_cancel();
},add_onClientFocus:function(_15d){
this.get_events().addHandler("onClientFocus",_15d);
},remove_onClientFocus:function(_15e){
this.get_events().removeHandler("onClientFocus",_15e);
},raise_onClientFocus:function(e){
var _160=new Telerik.Web.UI.RadComboBoxEventArgs(e);
this.raiseEvent("onClientFocus",_160);
},add_onClientBlur:function(_161){
this.get_events().addHandler("onClientBlur",_161);
},remove_onClientBlur:function(_162){
this.get_events().removeHandler("onClientBlur",_162);
},raise_onClientBlur:function(e){
var _164=new Telerik.Web.UI.RadComboBoxEventArgs(e);
this.raiseEvent("onClientBlur",_164);
},add_onClientKeyPressing:function(_165){
this.get_events().addHandler("keyPressing",_165);
},remove_onClientKeyPressing:function(_166){
this.get_events().removeHandler("keyPressing",_166);
},raise_onClientKeyPressing:function(e){
var _168=new Telerik.Web.UI.RadComboBoxEventArgs(e);
this.raiseEvent("keyPressing",_168);
},add_load:function(_169){
this.get_events().addHandler("load",_169);
},remove_load:function(_16a){
this.get_events().removeHandler("load",_16a);
},_logInserted:function(item){
if(!item.get_parent()._childControlsCreated||!this._enableClientStatePersistence){
return;
}
this._log.logInsert(item);
},saveClientState:function(){
var _16c=this._log._logEntries;
var _16d={logEntries:_16c,value:this._value,text:this._text,enabled:this._enabled};
return Sys.Serialization.JavaScriptSerializer.serialize(_16d);
},requestItems:function(text,_16f){
if(this._disposed){
return;
}
if((_16f)&&(this._pendingAjaxRequestsCount>0)){
return;
}
this._ensureChildControls();
text=text.replace(/'/g,"&squote");
text=encodeURIComponent(text);
this._ajaxRequest=true;
var _170={};
this.set_appendItems(_16f);
_170.NumberOfItems=0;
if(this.get_appendItems()){
_170.NumberOfItems=this.get_items().get_count();
}
_170.Text=decodeURIComponent(text);
var _171=new Telerik.Web.UI.RadComboBoxRequestCancelEventArgs(text,_170);
this.raiseEvent("itemsRequesting",_171);
if(_171.get_cancel()){
this._ajaxRequest=false;
return;
}
if(this.get_highlightedItem()){
this.get_highlightedItem().unHighlight();
}
if(!this._loadingDiv){
this._loadingDiv=document.createElement("li");
this._loadingDiv.className="rcbLoading";
this._loadingDiv.id=this.get_id()+"_LoadingDiv";
this._loadingDiv.innerHTML=this.get_loadingMessage();
if(!this.get_childListElement()){
this._createChildListElement();
}
this.get_childListElement().insertBefore(this._loadingDiv,this.get_childListElement().firstChild);
}
this._callbacktext=text;
this._pendingAjaxRequestsCount++;
if(this.get_webServiceSettings().get_method()){
this._doLoadOnDemandFromWebService(text,_170);
}else{
this._doLoadOnDemand(text,_170);
}
},_doLoadOnDemand:function(text,_173){
var _174=0;
if(this.get_appendItems()){
_174=this.get_items().get_count();
}
var _175={Command:"LOD",Text:text,ClientState:this._clientState,Context:_173,NumberOfItems:_174};
var _176=Function.createDelegate(this,this._onCallbackResponse);
var _177=Function.createDelegate(this,this._onErrorReceived);
if(this.get_enableItemCaching()&&this.lodHashTable[text+"$"+_174]!=null){
this._onCallbackResponse(this.lodHashTable[text+"$"+_174]);
}else{
WebForm_DoCallback(this._uniqueId,Sys.Serialization.JavaScriptSerializer.serialize(_175),_176,text,_177,true);
}
},_onCallbackResponse:function(_178){
if(this._disposed){
return;
}
this._pendingAjaxRequestsCount--;
this.set_selectedItem(null);
this.set_highlightedItem(null);
var _179=this._children.get_count();
var text=this.get_text();
var _17b=0;
var _17c=_178.split("_$$_")[4];
if(this._pendingAjaxRequestsCount==0){
if(_17c!=this._callbacktext){
this.requestItems(this._callbacktext,this.get_appendItems());
return;
}
}
if(this.get_appendItems()){
_17b=this.get_items().get_count();
}
if(this.get_enableItemCaching()&&this.lodHashTable[_17c+"$"+_17b]==null){
this.lodHashTable[_17c+"$"+_17b]=_178;
}
var _17d=_178.split("_$$_");
var _17e;
if(_17d[0]=="[]"){
_17e=null;
}else{
_17e=eval(_17d[0]);
}
if(_17d[3]=="True"){
this._endOfItems=true;
}else{
this._endOfItems=false;
}
if(this.get_appendItems()&&this._itemData&&_17e){
Array.addRange(this._itemData,_17e);
}else{
this._itemData=_17e;
}
if(this._loadingDiv){
if(this._loadingDiv.parentNode){
this._loadingDiv.parentNode.removeChild(this._loadingDiv);
}
this._loadingDiv=null;
}
var _17f=this.get_childListElement();
if(!_17f){
_17f=this._createChildListElement();
}
this._childControlsCreated=true;
var _180=$telerik.getFirstChildByTagName(_17f,"div",0);
if(_180){
_180.parentNode.removeChild(_180);
}
if(this.get_appendItems()){
var _181=document.createElement("ul");
_181.innerHTML=_17d[1];
var _182=$telerik.getChildrenByTagName(_181,"li");
var _183=_182.length;
for(var i=0;i<_183;i++){
_17f.appendChild(_182[i]);
this._childControlsCreated=false;
var item=new Telerik.Web.UI.RadComboBoxItem();
this._children.add(item);
item._initialize(_17e[i],_182[i]);
}
}else{
this._children.clear();
_17f.innerHTML=_17d[1];
this._childControlsCreated=false;
this._createChildControls();
}
this._childControlsCreated=true;
this.set_showMoreMessage(_17d[2]);
this._setUpDropDownAfterRequest(this.get_text(),_17f,_179);
},clearCache:function(){
this.lodHashTable={};
},_setUpScroll:function(_186,_187){
var _188=22;
var _189=this.get_items().get_count();
if(_189>0){
_188=this.get_items().getItem(0).get_element().offsetHeight;
}
if(_186){
var _18a=$telerik.getFirstChildByTagName(_187,"div",0);
if(_18a){
_18a.parentNode.removeChild(_18a);
}
}else{
var _18a=document.createElement("div");
if(this._height==""&&this._maxHeight!=""){
_18a.style.height=this._maxHeight+"px";
}else{
_18a.style.height=this.get_childListElementWrapper().offsetHeight+"px";
}
_187.appendChild(_18a);
}
},_onErrorReceived:function(_18b,text){
if(this._requestTimeoutID>0){
window.clearTimeout(this._requestTimeoutID);
this._requestTimeoutID=0;
}
var _18d=this._extractErrorMessage(_18b);
if(this.raise_itemsRequestFailed(text,_18d,null)==true){
return;
}
alert(_18d);
},_initializeWebServiceLoader:function(){
this._webServiceLoader=new Telerik.Web.UI.WebServiceLoader(this.get_webServiceSettings());
this._webServiceLoader.add_loadingSuccess(Function.createDelegate(this,this._onWebServiceResponse));
this._webServiceLoader.add_loadingError(Function.createDelegate(this,this._onWebServiceError));
},_doLoadOnDemandFromWebService:function(text,_18f){
if(!this._webServiceLoader){
this._initializeWebServiceLoader();
}
var _190={context:_18f};
var _191=_18f.NumberOfItems;
if(this.get_enableItemCaching()&&this.lodHashTable[text+"$"+_191]!=null){
this._addNewItems(text,this.lodHashTable[text+"$"+_191]);
}else{
this._webServiceLoader.loadData(_190,text);
}
},_onWebServiceResponse:function(_192,_193){
this._pendingAjaxRequestsCount--;
var _194=_193.get_data();
var text=_193.get_context();
var _196=0;
if(this.get_appendItems()){
_196=this.get_items().get_count();
}
if(this._pendingAjaxRequestsCount==0){
if(text!=this._callbacktext){
this.requestItems(this._callbacktext,this.get_appendItems());
return;
}
}
if(this.get_enableItemCaching()){
this.lodHashTable[text+"$"+_196]=_194;
}
this._addNewItems(text,_194);
},_addNewItems:function(text,_198){
this.set_selectedItem(null);
this.set_highlightedItem(null);
this._childControlsCreated=true;
var _199=this.get_items().get_count();
if(this._loadingDiv){
if(this._loadingDiv.parentNode){
this._loadingDiv.parentNode.removeChild(this._loadingDiv);
}
this._loadingDiv=null;
}
if(!this.get_appendItems()){
this.clearItems();
}
var _19a=this.get_childListElement();
if(!_19a){
_19a=this._createChildListElement();
}
if(this._virtualScroll){
this._setUpScroll(true,_19a);
}
var _19b=null;
if(Array.prototype.isPrototypeOf(_198)){
_19b=_198;
}else{
_19b=_198.Items;
this._endOfItems=_198.EndOfItems;
this._showMoreMessage=_198.Message;
}
this._childControlsCreated=false;
var html=[];
for(var i=0,_19e=_19b.length;i<_19e;i++){
var item=new Telerik.Web.UI.RadComboBoxItem();
var data=_19b[i];
item._loadFromDictionary(data);
this._children.add(item);
item._render(html);
}
this._childControlsCreated=true;
if(this.get_appendItems()){
_19a.innerHTML=_19a.innerHTML+html.join("");
}else{
_19a.innerHTML=html.join("");
}
var _1a1=this.get_events().getHandler("itemDataBound");
var _1a2=$telerik.getChildrenByTagName(_19a,"li");
for(var i=0,_19e=this._children.get_count();i<_19e;i++){
var item=this._children.getItem(i);
item.set_element(_1a2[i]);
if(_1a1){
var _1a3=new Telerik.Web.UI.RadComboBoxItemDataBoundEventArgs(item,_19b[i]);
this.raiseEvent("itemDataBound",_1a3);
}
}
this._setUpDropDownAfterRequest(text,_19a,_199);
},_setUpDropDownAfterRequest:function(text,_1a5,_1a6){
if(this._virtualScroll){
this._setUpScroll(this._endOfItems,_1a5);
}
if(this.get_appendItems()){
if(this.get_items().getItem(_1a6+1)!=null){
this.get_items().getItem(_1a6+1).scrollIntoView();
}
}
if(this._showMoreResultsBox&&this.get_moreResultsBoxMessageElement()){
this.get_moreResultsBoxMessageElement().innerHTML=this.get_showMoreMessage();
}
this.raise_itemsRequested(text,null);
if(this.get_filter()==Telerik.Web.UI.RadComboBoxFilter.None){
this.highlightMatches();
}else{
this.highlightAllMatches(this.get_text());
}
if(this.get_dropDownVisible()){
this._skipDropDownPositioning=true;
if(this._slide){
this._slide.updateSize();
}
this._skipDropDownPositioning=null;
this._positionDropDown();
}
this._ajaxRequest=false;
},_onWebServiceError:function(_1a7,_1a8){
var _1a9=_1a8.get_message();
var text=_1a8.get_context();
this._onErrorReceived(_1a9,text);
}};
Telerik.Web.UI.RadComboBox._preInitialize=function(_1ab){
var _1ac=$get(_1ab);
if($telerik.isIE){
_1ac.style.display="inline";
}
if($telerik.isSafari||$telerik.isOpera){
_1ac.style.display="inline-block";
}
if($telerik.isFirefox){
_1ac.style.display="-moz-inline-stack";
}
};
Telerik.Web.UI.RadComboBox.registerClass("Telerik.Web.UI.RadComboBox",Telerik.Web.UI.ControlItemContainer);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.RadComboBoxItem=function(){
Telerik.Web.UI.RadComboBoxItem.initializeBase(this);
};
Telerik.Web.UI.RadComboBoxItem.prototype={_shouldInitializeChild:function(_1ad){
return false;
},get_text:function(){
if(this._text!==null){
return this._removeEmTags(this._text);
}
if((this._text=this._properties.getValue("text",null))!=null){
return this._removeEmTags(this._text);
}
if(!this.get_element()){
return "";
}
var _1ae=this.get_textElement();
if(!_1ae){
return "";
}
if(typeof (_1ae.innerText)!="undefined"){
this._text=_1ae.innerText;
}else{
this._text=_1ae.textContent;
}
if($telerik.isSafari2){
this._text=_1ae.innerHTML;
}
return this._removeEmTags(this._text);
},get_baseText:function(){
return Telerik.Web.UI.RadComboBoxItem.callBaseMethod(this,"get_text");
},_removeEmTags:function(text){
var _1b0=text.indexOf("<em>");
var _1b1=text.indexOf("</em>");
if(_1b0>=0&&_1b1>_1b0){
text=String.format("{0}{1}{2}",text.substr(0,_1b0),text.substr(_1b0+4,_1b1-_1b0-4),text.substr(_1b1+5));
}
return text;
},set_visible:function(_1b2){
var _1b3=this.get_visible()!=_1b2;
if(!_1b3){
return;
}
Telerik.Web.UI.RadComboBoxItem.callBaseMethod(this,"set_visible",[_1b2]);
if(_1b2){
this.get_element().style.display="";
}else{
this.get_element().style.display="none";
}
},_markText:function(text){
var _1b5=this.get_comboBox();
var _1b6=this.get_baseText();
var _1b7=this.get_text();
if(!_1b5.get_isTemplated()){
this.set_text(_1b7);
this.get_element().innerHTML=Telerik.Web.UI.RadComboBox.htmlEncode(_1b7);
}
_1b6=_1b7;
var _1b8=_1b6.toLowerCase().indexOf(text.toLowerCase());
var _1b9=_1b5.get_filter()==Telerik.Web.UI.RadComboBoxFilter.Contains&&_1b8>=0;
var _1ba=_1b5.get_filter()==Telerik.Web.UI.RadComboBoxFilter.StartsWith&&_1b8==0;
if(_1b9||_1ba){
if(text!=""&&!_1b5.get_isTemplated()){
var _1bb="{0}<em>{1}</em>{2}";
var _1bc=_1b6.substr(0,_1b8);
var _1bd=_1b6.substring(_1b8,_1b8+text.length);
var _1be=_1b6.substr(_1b8+text.length);
var _1bf=String.format(_1bb,_1bc,_1bd,_1be);
this.set_text(_1bf);
this.get_element().innerHTML=String.format(_1bb,Telerik.Web.UI.RadComboBox.htmlEncode(_1bc),Telerik.Web.UI.RadComboBox.htmlEncode(_1bd),Telerik.Web.UI.RadComboBox.htmlEncode(_1be));
}
this.set_visible(true);
}else{
this.set_visible(false);
}
},_render:function(html){
html[html.length]="<li class='";
if(this.get_enabled()){
if(this.get_isSeparator()){
html[html.length]="rcbItem rcbSeparator'>";
}else{
html[html.length]="rcbItem'>";
}
}else{
html[html.length]="rcbDisabled'>";
}
if(this.get_imageUrl()){
this._renderImage(html);
}
html[html.length]=this.get_text();
html[html.length]="</li>";
},_renderImage:function(html){
html[html.length]="<img alt='' src='"+this.get_imageUrl()+"' class='rcbImage'";
if(!this.get_enabled()){
html[html.length]=" disabled='disabled'";
}
html[html.length]="/>";
return html;
},_updateImageSrc:function(){
var _1c2=this.get_imageUrl();
if(!this.get_enabled()&&this.get_disabledImageUrl()){
_1c2=this.get_disabledImageUrl();
}
if(_1c2&&this.get_element()){
var _1c3=this.get_imageElement();
if(!_1c3){
_1c3=this._createImageElement();
}
_1c2=_1c2.replace(/&amp;/ig,"&");
if(_1c2!=_1c3.src){
_1c3.src=_1c2;
}
}
},_createImageElement:function(){
this._imageElement=document.createElement("img");
this._imageElement.className="rcbImage";
if(!this.get_enabled()){
this._imageElement.disabled="disabled";
}
var _1c4=this.get_element();
if(_1c4.firstChild){
_1c4.insertBefore(this._imageElement,_1c4.firstChild);
}else{
_1c4.appendChild(this._imageElement);
}
return this._imageElement;
},get_imageElement:function(){
if(!this._imageElement){
var _1c5=this.get_element();
this._imageElement=$telerik.getFirstChildByTagName(_1c5,"img",0);
}
return this._imageElement;
},get_disabledImageUrl:function(){
return this._properties.getValue("disabledImageUrl",null);
},set_disabledImageUrl:function(_1c6){
this._properties.setValue("disabledImageUrl",_1c6,true);
this._updateImageSrc();
},get_imageUrl:function(){
if(this._imageUrl=this._properties.getValue("imageUrl",null)){
return this._imageUrl;
}
if(!this._imageUrl){
var _1c7=this.get_imageElement();
if(_1c7){
this._imageUrl=_1c7.src;
}
}
return this._imageUrl;
},set_imageUrl:function(_1c8){
this._imageUrl=_1c8;
this._properties.setValue("imageUrl",_1c8,true);
this._updateImageSrc();
},get_value:function(){
return this._properties.getValue("value","");
},select:function(){
this._select(null);
},hide:function(){
this.set_visible(false);
},show:function(){
this.set_visible(true);
},_select:function(e){
if(!this.get_isEnabled()||this.get_isSeparator()){
return;
}
var _1ca=this.get_comboBox();
if(_1ca.raise_selectedIndexChanging(this,e)==true){
return;
}
var text=_1ca.get_text();
var _1cc=_1ca._getLastSeparatorIndex(text);
var _1cd=text.substring(0,_1cc+1)+this.get_text();
_1ca.set_text(_1cd);
_1ca.set_originalText(_1cd);
_1ca.set_value(this.get_value());
_1ca.set_selectedItem(this);
_1ca.set_selectedIndex(this.get_index());
this.set_selected(true);
this.highlight();
_1ca.raise_selectedIndexChanged(this,e);
var _1ce={Command:"Select",Index:this.get_index()};
_1ca.postback(_1ce);
},_createChildControls:function(){
},unHighlight:function(){
var _1cf=this.get_comboBox();
if(!_1cf.get_isTemplated()||_1cf.get_highlightTemplatedItems()){
this._replaceCssClass(this.get_element(),"rcbHovered","rcbItem");
}
_1cf.set_highlightedItem(null);
},highlight:function(){
if(!this.get_isEnabled()||this.get_isSeparator()){
return;
}
var _1d0=this.get_comboBox();
if(!_1d0.get_isTemplated()||_1d0.get_highlightTemplatedItems()){
var _1d1=_1d0.get_highlightedItem();
if(_1d1){
_1d1.unHighlight();
}
var _1d2=this.get_element();
if(_1d2){
this._replaceCssClass(_1d2,"rcbItem","rcbHovered");
}
}
_1d0.set_highlightedItem(this);
},scrollOnTop:function(){
var _1d3=this.get_element().offsetTop;
var _1d4=this.get_comboBox();
var _1d5=_1d4._getHeaderElement();
if(_1d5){
_1d3=_1d3-_1d5.offsetHeight;
}
_1d4.get_childListElementWrapper().scrollTop=_1d3;
},scrollIntoView:function(){
var _1d6=this.get_element().offsetTop;
var _1d7=this.get_element().offsetHeight;
var _1d8=this.get_comboBox().get_childListElementWrapper();
var _1d9=_1d8.scrollTop;
var _1da=_1d8.offsetHeight;
if(_1d6+_1d7>_1d9+_1da){
_1d8.scrollTop=_1d6+_1d7-_1da;
if(_1d8.clientWidth<_1d8.scrollWidth){
var _1db=Telerik.Web.UI.RadComboBox._getScrollBarWidth();
_1d8.scrollTop+=_1db;
}
}else{
if(_1d6+_1d7<=_1d9){
_1d8.scrollTop=_1d6;
}
}
},nextItem:function(){
return this.get_comboBox().get_items().getItem(this.get_index()+1);
},_replaceCssClass:function(_1dc,_1dd,_1de){
_1dc.className=_1dc.className.replace(_1dd,_1de);
},_createChildListElement:function(){
var _1df=document.createElement("ul");
this.get_combobox().get_dropDownElement().appendChild(_1df);
},set_selected:function(_1e0){
this._properties.setValue("selected",_1e0);
},get_selected:function(){
return this._properties.getValue("selected",false);
},get_highlighted:function(){
var _1e1=this.get_comboBox();
if(!_1e1){
return false;
}
return _1e1.get_highlightedItem()==this;
},disable:function(){
this.set_enabled(false);
this.get_element().className="rcbDisabled";
},enable:function(){
this.set_enabled(true);
this.get_element().className="rcbItem";
},set_enabled:function(_1e2){
this._properties.setValue("enabled",_1e2,true);
this._updateImageSrc();
},get_textElement:function(){
return this.get_element();
},get_comboBox:function(){
return this._parent;
},_getHierarchicalIndex:function(){
return this.get_index();
},get_isSeparator:function(){
return this._properties.getValue("isSeparator",false);
},set_isSeparator:function(_1e3){
this._properties.setValue("isSeparator",_1e3,true);
if(this.get_element()){
Sys.UI.DomElement.toggleCssClass(this.get_element(),"rcbSeparator");
}
}};
Telerik.Web.UI.RadComboBoxItem.registerClass("Telerik.Web.UI.RadComboBoxItem",Telerik.Web.UI.ControlItem);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.RadComboBoxItemCollection=function(_1e4){
Telerik.Web.UI.RadComboBoxItemCollection.initializeBase(this,[_1e4]);
};
Telerik.Web.UI.RadComboBoxItemCollection.registerClass("Telerik.Web.UI.RadComboBoxItemCollection",Telerik.Web.UI.ControlItemCollection);


/* END Telerik.Web.UI.ComboBox.RadComboBoxScripts.js */
/* START Telerik.Web.UI.Grid.RadGridScripts.js */
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.GridColumn=function(_1){
Telerik.Web.UI.GridColumn.initializeBase(this,[_1]);
this._owner={};
this._data={};
this._resizeTolerance=5;
this._onMouseUpDelegate=null;
this._columnResizer=null;
this._checkboxes=[];
this._onContextMenuItemClickingDelegate=null;
this._onContextMenuHiddenDelegate=null;
};
Telerik.Web.UI.GridColumn.prototype={initialize:function(){
Telerik.Web.UI.GridColumn.callBaseMethod(this,"initialize");
this._onMouseDownDelegate=Function.createDelegate(this,this._onMouseDownHandler);
$addHandler(this.get_element(),"mousedown",this._onMouseDownDelegate);
this.get_element().UniqueName=this.get_uniqueName();
this._onLocalMouseMoveDelegate=Function.createDelegate(this,this._onLocalMouseMoveHandler);
$addHandler(this.get_element(),"mousemove",this._onLocalMouseMoveDelegate);
$addHandlers(this.get_element(),{click:Function.createDelegate(this,this._onClick)});
$addHandlers(this.get_element(),{dblclick:Function.createDelegate(this,this._onDblClick)});
$addHandlers(this.get_element(),{mouseover:Function.createDelegate(this,this._onMouseOver)});
$addHandlers(this.get_element(),{mouseout:Function.createDelegate(this,this._onMouseOut)});
$addHandlers(this.get_element(),{contextmenu:Function.createDelegate(this,this._onContextMenu)});
},dispose:function(){
if(this._columnResizer){
this._columnResizer.dispose();
}
this._owner._owner.raise_columnDestroying(Sys.EventArgs.Empty);
$clearHandlers(this.get_element());
this._element.control=null;
this._element=null;
this._checkboxes=[];
Telerik.Web.UI.GridColumn.callBaseMethod(this,"dispose");
},get_owner:function(){
return this._owner;
},_onMouseDownHandler:function(e){
if(!this._onMouseUpDelegate){
this._onMouseUpDelegate=Function.createDelegate(this,this._onMouseUpHandler);
$telerik.addExternalHandler(document,"mouseup",this._onMouseUpDelegate);
}
if(this._owner._owner.ClientSettings.AllowDragToGroup||this._owner._owner.ClientSettings.AllowColumnsReorder){
this._onMouseMoveDelegate=Function.createDelegate(this,this._onMouseMoveHandler);
$telerik.addExternalHandler(document,"mousemove",this._onMouseMoveDelegate);
if(this._canDragDrop&&((this._data.Reorderable&&this._owner._owner.ClientSettings.AllowColumnsReorder)||(this._data.Groupable&&this._owner._owner.ClientSettings.AllowDragToGroup))){
Telerik.Web.UI.Grid.CreateDragDrop(e,this,true);
}
}
if(this._canResize&&(e.button==0)){
var _3=Telerik.Web.UI.Grid.GetEventPosX(e);
var _4=Telerik.Web.UI.Grid.FindPosX(this.get_element());
var _5=_4+this.get_element().offsetWidth;
if((_3>=_5-this._resizeTolerance)&&(_3<=_5+this._resizeTolerance)){
this._columnResizer=new Telerik.Web.UI.GridColumnResizer(this,this._owner._owner.ClientSettings.Resizing.EnableRealTimeResize);
this._columnResizer._position(e);
}
Telerik.Web.UI.Grid.ClearDocumentEvents();
}
},_onMouseUpHandler:function(e){
if(this._onMouseUpDelegate){
$telerik.removeExternalHandler(document,"mouseup",this._onMouseUpDelegate);
this._onMouseUpDelegate=null;
}
if(this._onMouseMoveDelegate){
$telerik.removeExternalHandler(document,"mouseup",this._onMouseUpDelegate);
this._onMouseMoveDelegate=null;
}
if(!Telerik.Web.UI.Grid){
return;
}
var _7=Telerik.Web.UI.Grid.GetCurrentElement(e);
if(_7!=null&&this._canDragDrop&&!this._isResize){
var _8=this._owner._owner.ClientSettings.PostBackFunction;
_8=_8.replace("{0}",this._owner._owner.UniqueID);
if(this._owner._owner.ClientSettings.AllowDragToGroup&&this._owner._owner._groupPanel&&Telerik.Web.UI.Grid.IsChildOf(_7,this._owner._owner._groupPanel.get_element())){
if(this._data.Groupable){
this._owner.groupColumn(this.get_element().UniqueName);
}
}
if(this._owner._owner.ClientSettings.AllowColumnsReorder&&Telerik.Web.UI.Grid.IsChildOf(_7,this.get_element().parentNode)&&_7!=this.get_element()){
if(typeof (_7.UniqueName)!="undefined"&&this._canDropOnThisColumn(_7.UniqueName)&&this.get_reorderable()){
if(!this._owner._owner.ClientSettings.ReorderColumnsOnClient){
var _9=this._owner.getColumnByUniqueName(this.get_element().UniqueName);
var _a=this._owner.getColumnByUniqueName(_7.UniqueName);
var _b=new Sys.CancelEventArgs();
_b.get_gridSourceColumn=function(){
return _9;
};
_b.get_gridTargetColumn=function(){
return _a;
};
this._owner._owner.raise_columnSwapping(_b);
if(_b.get_cancel()){
return false;
}
_8=_8.replace("{1}","ReorderColumns,"+this._owner._data.UniqueID+","+this.get_element().UniqueName+","+_7.UniqueName);
eval(_8);
}else{
if(this._owner._owner.ClientSettings.ColumnsReorderMethod==1){
this._owner.reorderColumns(this.get_element().UniqueName,_7.UniqueName);
}else{
this._owner.swapColumns(this.get_element().UniqueName,_7.UniqueName);
}
}
}
}
}
Telerik.Web.UI.Grid.DestroyDragDrop();
Telerik.Web.UI.Grid.RestoreDocumentEvents();
},_onMouseMoveHandler:function(e){
if(this._canDragDrop){
Telerik.Web.UI.Grid.MoveDragDrop(e,this,true);
}
},_onLocalMouseMoveHandler:function(e){
if(!Telerik.Web.UI.Grid){
return;
}
this._canDragDrop=true;
this._canResize=false;
var _e=Telerik.Web.UI.Grid.GetCurrentElement(e);
var th=Telerik.Web.UI.Grid.GetFirstParentByTagName(_e,"th");
var x=Telerik.Web.UI.Grid.FindPosX(_e);
if((this._owner._owner.ClientSettings.AllowDragToGroup||this._owner._owner.ClientSettings.AllowColumnsReorder)&&(this.get_reorderable()||this._data.Groupable)){
this.get_element().title=this._owner._owner.ClientSettings.ClientMessages.DragToGroupOrReorder;
this.get_element().style.cursor="move";
}
if(this._owner._owner.ClientSettings.Resizing.AllowColumnResize&&this.get_resizable()&&Telerik.Web.UI.Grid.GetEventPosX(e)>=(x+th.offsetWidth-5)){
this._canDragDrop=false;
}
if(this._owner._owner.ClientSettings&&this._owner._owner.ClientSettings.Resizing.AllowColumnResize&&this.get_resizable()&&this.get_element().tagName.toLowerCase()=="th"){
var _11=Telerik.Web.UI.Grid.GetEventPosX(e);
var _12=Telerik.Web.UI.Grid.FindPosX(this.get_element());
var _13=_12+this.get_element().offsetWidth;
var _e=Telerik.Web.UI.Grid.GetCurrentElement(e);
if(this._owner._owner.GridDataDiv&&!this._owner._owner.GridHeaderDiv&&!window.netscape){
var _14=0;
if(document.body.currentStyle&&document.body.currentStyle.margin&&document.body.currentStyle.marginLeft.indexOf("px")!=-1&&!window.opera){
_14=parseInt(document.body.currentStyle.marginLeft);
}
this._resizeTolerance=10;
}
if((_11>=_13-this._resizeTolerance)&&(_11<=_13+this._resizeTolerance)&&!this._owner._owner.MoveHeaderDiv){
this.get_element().style.cursor="e-resize";
this.get_element().title=this._owner._owner.ClientSettings.ClientMessages.DragToResize;
this._canResize=true;
_e.style.cursor="e-resize";
this._owner._owner._isResize=true;
}else{
this.get_element().style.cursor="";
this.get_element().title="";
this._canResize=false;
_e.style.cursor="";
this._owner._owner._isResize=false;
}
}
},_canDropOnThisColumn:function(_15){
if(typeof (this._owner._columns)=="undefined"){
this._owner._columns={};
for(var i=0;i<this._owner._data._columnsData.length;i++){
this._owner._columns[this._owner._data._columnsData[i].UniqueName]=this._owner._data._columnsData[i];
}
}
return this._owner._columns[_15].Reorderable;
},showHeaderMenu:function(e,_18,_19){
if(this._owner._data.enableHeaderContextMenu){
this._initHeaderContextMenu(e,true,_18,_19);
}
},_initHeaderContextMenu:function(e,_1b,_1c,_1d){
if(this._owner._owner._getHeaderContextMenu()){
var _1e=this._owner._owner._getHeaderContextMenu();
var _1f=this;
this._onContextMenuItemClickingDelegate=Function.createDelegate(_1e,this._onContextMenuItemClicking);
_1e.add_itemClicking(this._onContextMenuItemClickingDelegate);
this._onContextMenuHiddenDelegate=Function.createDelegate(_1e,this._onContextMenuHidden);
_1e.add_hidden(this._onContextMenuHiddenDelegate);
if(_1e.findItemByValue("SortAsc")){
_1e.findItemByValue("SortAsc")._column=_1f;
}
if(_1e.findItemByValue("SortDesc")){
_1e.findItemByValue("SortDesc")._column=_1f;
}
if(_1e.findItemByValue("SortNone")){
_1e.findItemByValue("SortNone")._column=_1f;
}
if(_1e.findItemByValue("GroupBy")){
var _20=_1e.findItemByValue("GroupBy");
if(_1f._data.Groupable){
_1e.findItemByValue("GroupBy")._column=_1f;
_20.set_visible(true);
}else{
_20.set_visible(false);
}
}
if(_1e.findItemByValue("UnGroupBy")){
var _20=_1e.findItemByValue("UnGroupBy");
if(_1f._data.Groupable){
_1e.findItemByValue("UnGroupBy")._column=_1f;
_20.set_visible(true);
}else{
_20.set_visible(false);
}
}
if(_1e.findItemByValue("topGroupSeperator")){
_1e.findItemByValue("topGroupSeperator").set_visible(_1f._data.Groupable);
}
if(_1e.findItemByValue("bottomGroupSeperator")){
_1e.findItemByValue("bottomGroupSeperator").set_visible(_1f._data.Groupable);
}
var _21=_1e.findItemByValue("ColumnsContainer").get_items();
for(var i=0,len=_21.get_count();i<len;i++){
var _20=_21.getItem(i);
_20.set_visible(false);
for(var j=0,_25=_1f.get_owner().get_columns().length;j<_25;j++){
var _26=_1f.get_owner().get_columns()[j];
if(_20.get_value()==String.format("{0}|{1}",_1f.get_owner()._data.ClientID,_26.get_uniqueName())){
_20.set_visible(true);
var _27=_20.get_element().getElementsByTagName("input");
if(_27&&_27.length&&_27[0].type=="checkbox"){
$addHandler(_27[0],"click",this._checkBoxClickHandler);
if(_26.get_visible()&&(_26._data.Display==null||_26._data.Display)&&(_26.Display==null||_26.Display)){
_27[0].checked=true;
}else{
_27[0].checked=false;
}
_27[0]._column=_26;
_27[0]._index=j;
Array.add(this._checkboxes,_27[0]);
break;
}
}
}
}
var _28=new Telerik.Web.UI.GridHeaderMenuCancelEventArgs(this,e,_1e);
this._owner._owner.raise_headerMenuShowing(_28);
if(_28.get_cancel()){
return;
}
if(_1b){
var _29=$telerik.getLocation(this.get_element());
if(_29){
var _2a=_29.x;
var top=_29.y;
if(_1c){
_2a=_2a+parseInt(_1c);
}
if(_1d){
top=top+parseInt(_1d);
}
_1e.showAt(_2a,top);
$telerik.cancelRawEvent(e);
}
}else{
_1e.show(e);
}
}
},_checkBoxClickHandler:function(_2c){
var _2d=$find(this._column.get_owner().get_id());
if(!_2d){
return;
}
if(!this.checked){
_2d.hideColumn(this._index);
}else{
_2d.showColumn(this._index);
}
},_onContextMenuItemClicking:function(_2e,_2f){
var _30=_2f.get_item();
if(_30.get_value()=="SortAsc"||_30.get_value()=="SortDesc"||_30.get_value()=="SortNone"){
_2e.trackChanges();
var _31=_30._column._data.DataField;
if(_30._column._data.DataTextField){
_31=_30._column._data.DataTextField;
}
_30.get_attributes().setAttribute("ColumnName",_31);
_30.get_attributes().setAttribute("TableID",_30._column.get_owner()._data.UniqueID);
_2e.commitChanges();
}else{
if(_30.get_value()=="GroupBy"){
_30._column.get_owner().groupColumn(_30._column.get_uniqueName());
_2f.set_cancel(true);
}else{
if(_30.get_value()=="UnGroupBy"){
_30._column.get_owner().ungroupColumn(_30._column.get_uniqueName());
_2f.set_cancel(true);
}
}
}
},_onContextMenuHidden:function(_32,_33){
var _34=_32;
if(this._checkboxes){
for(var i=0,len=this._checkboxes.length;i<len;i++){
$removeHandler(this._checkboxes[i],"click",this._checkBoxClickHandler);
this._checkboxes[i]._column=null;
this._checkboxes[i]._index=null;
}
}
if(this._onContextMenuItemClickingDelegate){
_32.remove_itemClicking(this._onContextMenuItemClickingDelegate);
this._onContextMenuItemClickingDelegate=null;
}
if(this._onContextMenuHiddenDelegate){
_32.remove_hidden(this._onContextMenuHiddenDelegate);
this._onContextMenuHiddenDelegate=null;
}
this._checkboxes=[];
},_onContextMenu:function(e){
this._owner._owner.raise_columnContextMenu(new Telerik.Web.UI.GridColumnEventArgs(this,e));
if(this._owner._owner.get_events().getHandler("columnContextMenu")||this._owner._data.enableHeaderContextMenu){
this._initHeaderContextMenu(e);
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue=false;
return false;
}
}
},_onClick:function(e){
this._owner._owner.raise_columnClick(new Telerik.Web.UI.GridColumnEventArgs(this,e));
},_onDblClick:function(e){
this._owner._owner.raise_columnDblClick(new Telerik.Web.UI.GridColumnEventArgs(this,e));
},_onMouseOver:function(e){
this._owner._owner.raise_columnMouseOver(new Telerik.Web.UI.GridColumnEventArgs(this,e));
if(this._owner._owner.Skin!=""){
Sys.UI.DomElement.addCssClass(this.get_element(),"GridHeaderOver_"+this._owner._owner.Skin);
}
},_onMouseOut:function(e){
this._owner._owner.raise_columnMouseOut(new Telerik.Web.UI.GridColumnEventArgs(this,e));
if(this._owner._owner.Skin!=""){
Sys.UI.DomElement.removeCssClass(this.get_element(),"GridHeaderOver_"+this._owner._owner.Skin);
}
},get_resizable:function(){
return this._data.Resizable;
},set_resizable:function(_3c){
if(this._data.Resizable!=_3c){
this._data.Resizable=_3c;
}
},get_reorderable:function(){
return this._data.Reorderable;
},set_reorderable:function(_3d){
if(this._data.Reorderable!=_3d){
this._data.Reorderable=_3d;
}
},get_uniqueName:function(){
return this._data.UniqueName;
},get_dataField:function(){
return this._data.DataField;
},get_readOnly:function(){
return (typeof (this._data.ReadOnly)!="undefined")?true:false;
},get_dataType:function(){
return this._data.DataTypeName;
},get_filterFunction:function(){
return this._data.CurrentFilterFunctionName;
},set_filterFunction:function(_3e){
if(this._data.CurrentFilterFunctionName!=_3e){
this._data.CurrentFilterFunctionName=_3e;
}
},get_filterDelay:function(){
return (typeof (this._data.FilterDelay)=="undefined")?null:this._data.FilterDelay;
},set_filterDelay:function(_3f){
if(this._data.FilterDelay!=_3f){
this._data.FilterDelay=_3f;
}
}};
Telerik.Web.UI.GridColumn.registerClass("Telerik.Web.UI.GridColumn",Sys.UI.Control);
Telerik.Web.UI.GridColumnEventArgs=function(_40,_41){
Telerik.Web.UI.GridColumnEventArgs.initializeBase(this);
this._gridColumn=_40;
this._domEvent=_41;
};
Telerik.Web.UI.GridColumnEventArgs.prototype={get_gridColumn:function(){
return this._gridColumn;
},get_domEvent:function(){
return this._domEvent;
}};
Telerik.Web.UI.GridColumnEventArgs.registerClass("Telerik.Web.UI.GridColumnEventArgs",Sys.EventArgs);
Telerik.Web.UI.GridColumnCancelEventArgs=function(_42,_43){
Telerik.Web.UI.GridColumnCancelEventArgs.initializeBase(this);
this._gridColumn=_42;
this._domEvent=_43;
};
Telerik.Web.UI.GridColumnCancelEventArgs.prototype={get_gridColumn:function(){
return this._gridColumn;
},get_domEvent:function(){
return this._domEvent;
}};
Telerik.Web.UI.GridColumnCancelEventArgs.registerClass("Telerik.Web.UI.GridColumnCancelEventArgs",Sys.CancelEventArgs);
Telerik.Web.UI.GridHeaderMenuCancelEventArgs=function(_44,_45,_46){
Telerik.Web.UI.GridHeaderMenuCancelEventArgs.initializeBase(this,[_44,_45]);
this._menu=_46;
};
Telerik.Web.UI.GridHeaderMenuCancelEventArgs.prototype={get_menu:function(){
return this._menu;
}};
Telerik.Web.UI.GridHeaderMenuCancelEventArgs.registerClass("Telerik.Web.UI.GridHeaderMenuCancelEventArgs",Telerik.Web.UI.GridColumnCancelEventArgs);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.GridColumnResizer=function(_47,_48){
Telerik.Web.UI.GridColumnResizer.initializeBase(this);
this._isRealTimeResize=_48;
this._column=_47;
this._isRealTimeResize=_48;
this._currentWidth=null;
this._leftResizer=document.createElement("span");
this._leftResizer.style.backgroundColor="navy";
this._leftResizer.style.width="1"+"px";
this._leftResizer.style.position="absolute";
this._leftResizer.style.cursor="e-resize";
this._rightResizer=document.createElement("span");
this._rightResizer.style.backgroundColor="navy";
this._rightResizer.style.width="1"+"px";
this._rightResizer.style.position="absolute";
this._rightResizer.style.cursor="e-resize";
this._resizerToolTip=document.createElement("span");
this._resizerToolTip.style.position="absolute";
this._resizerToolTip.style.zIndex=10000;
if(this._column._owner._owner.Skin!=""){
this._resizerToolTip.className=String.format("GridToolTip_{0}",this._column._owner._owner.Skin);
}
if(!this._column._owner._owner._embeddedSkin||this._column._owner._owner.Skin==""){
this._resizerToolTip.style.backgroundColor="#F5F5DC";
this._resizerToolTip.style.border="1px solid";
this._resizerToolTip.style.font="icon";
this._resizerToolTip.style.padding="2px";
}
this._resizerToolTip.innerHTML="Width: <b>"+this._column.get_element().offsetWidth+"</b> <em>pixels</em>";
document.body.appendChild(this._leftResizer);
document.body.appendChild(this._rightResizer);
document.body.appendChild(this._resizerToolTip);
this.CanDestroy=true;
this._onMouseUpDelegate=Function.createDelegate(this,this._onMouseUpHandler);
$telerik.addExternalHandler(document,"mouseup",this._onMouseUpDelegate);
this._onMouseMoveDelegate=Function.createDelegate(this,this._onMouseMoveHandler);
$addHandler(this._column._owner._owner.get_element(),"mousemove",this._onMouseMoveDelegate);
};
Telerik.Web.UI.GridColumnResizer.prototype={dispose:function(){
try{
this._destroy();
}
catch(error){
}
if(this._onMouseUpDelegate){
$telerik.removeExternalHandler(document,"mouseup",this._onMouseUpDelegate);
}
if(this._onMouseMoveDelegate){
$removeHandler(this._column._owner._owner.get_element(),"mousemove",this._onMouseMoveDelegate);
}
this._leftResizer=null;
this._rightResizer=null;
this._resizerToolTip=null;
},_position:function(e){
this._leftResizer.style.top=Telerik.Web.UI.Grid.FindPosY(this._column.get_element())-Telerik.Web.UI.Grid.FindScrollPosY(this._column.get_element())+document.documentElement.scrollTop+document.body.scrollTop+"px";
this._leftResizer.style.left=Telerik.Web.UI.Grid.FindPosX(this._column.get_element())-Telerik.Web.UI.Grid.FindScrollPosX(this._column.get_element())+document.documentElement.scrollLeft+document.body.scrollLeft+"px";
if($telerik.isIE||$telerik.isSafari2){
if(document.body.currentStyle&&document.body.currentStyle.marginLeft.indexOf("px")!=-1&&!window.opera){
this._leftResizer.style.left=parseInt(this._leftResizer.style.left)-parseInt(document.body.currentStyle.marginLeft);
}else{
if(document.defaultView&&document.defaultView.getComputedStyle&&document.defaultView.getComputedStyle(document.body,"").marginLeft.indexOf("px")!=-1&&!window.opera){
this._leftResizer.style.left=parseInt(this._leftResizer.style.left)-parseInt(document.defaultView.getComputedStyle(document.body,"").marginLeft);
}
}
if(document.body.currentStyle&&document.body.currentStyle.marginTop.indexOf("px")!=-1&&!window.opera){
this._leftResizer.style.top=parseInt(this._leftResizer.style.top)-parseInt(document.body.currentStyle.marginTop);
}else{
if(document.defaultView&&document.defaultView.getComputedStyle&&document.defaultView.getComputedStyle(document.body,"").marginTop.indexOf("px")!=-1&&!window.opera){
this._leftResizer.style.top=parseInt(this._leftResizer.style.top)-parseInt(document.defaultView.getComputedStyle(document.body,"").marginTop);
}
}
}
this._rightResizer.style.top=this._leftResizer.style.top;
this._rightResizer.style.left=parseInt(this._leftResizer.style.left)+this._column.get_element().offsetWidth+"px";
this._resizerToolTip.style.top=parseInt(this._rightResizer.style.top)-this._resizerToolTip.offsetHeight-2+"px";
this._resizerToolTip.style.left=parseInt(this._rightResizer.style.left)-5+"px";
if(parseInt(this._leftResizer.style.left)<Telerik.Web.UI.Grid.FindPosX(this._column._owner.get_element())){
this._leftResizer.style.display="none";
}
if(!this._column._owner._owner.ClientSettings.Scrolling.AllowScroll){
this._leftResizer.style.height=this._column._owner.get_element().tBodies[0].offsetHeight+this._column._owner.get_element().tHead.offsetHeight+"px";
}else{
if(this._column._owner._owner.ClientSettings.Scrolling.UseStaticHeaders){
this._leftResizer.style.height=this._column._owner._owner._gridDataDiv.clientHeight+this._column._owner.get_element().tHead.offsetHeight+"px";
}else{
this._leftResizer.style.height=this._column._owner._owner._gridDataDiv.clientHeight+"px";
}
}
this._rightResizer.style.height=this._leftResizer.style.height;
},_onMouseUpHandler:function(e){
this._destroy(e);
},_onMouseMoveHandler:function(e){
this._move(e);
},_destroy:function(e){
if(this.CanDestroy){
if(this._onMouseUpDelegate){
$telerik.removeExternalHandler(document,"mouseup",this._onMouseUpDelegate);
this._onMouseUpDelegate=null;
}
if(this._onMouseMoveDelegate){
$removeHandler(this._column._owner._owner.get_element(),"mousemove",this._onMouseMoveDelegate);
this._onMouseMoveDelegate=null;
}
if(this._currentWidth!=null){
if(this._currentWidth>0){
this._column._owner.resizeColumn(this._column.get_element().cellIndex,this._currentWidth);
this._currentWidth=null;
}
}
document.body.removeChild(this._leftResizer);
document.body.removeChild(this._rightResizer);
document.body.removeChild(this._resizerToolTip);
this.CanDestroy=false;
}
},_move:function(e){
this._leftResizer.style.left=Telerik.Web.UI.Grid.FindPosX(this._column.get_element())-Telerik.Web.UI.Grid.FindScrollPosX(this._column.get_element())+document.documentElement.scrollLeft+document.body.scrollLeft+"px";
if($telerik.isIE||$telerik.isSafari2){
if(document.body.currentStyle&&document.body.currentStyle.marginLeft.indexOf("px")!=-1&&!window.opera){
this._leftResizer.style.left=parseInt(this._leftResizer.style.left)-parseInt(document.body.currentStyle.marginLeft);
}else{
if(document.defaultView&&document.defaultView.getComputedStyle&&document.defaultView.getComputedStyle(document.body,"").marginLeft.indexOf("px")!=-1&&!window.opera){
this._leftResizer.style.left=parseInt(this._leftResizer.style.left)-parseInt(document.defaultView.getComputedStyle(document.body,"").marginLeft);
}
}
}
this._rightResizer.style.left=parseInt(this._leftResizer.style.left)+(Telerik.Web.UI.Grid.GetEventPosX(e)-Telerik.Web.UI.Grid.FindPosX(this._column.get_element()))+"px";
this._resizerToolTip.style.left=parseInt(this._rightResizer.style.left)-5+"px";
var _4e=parseInt(this._rightResizer.style.left)-parseInt(this._leftResizer.style.left);
var _4f=this._column.get_element().scrollWidth-_4e;
this._resizerToolTip.innerHTML="Width: <b>"+_4e+"</b> <em>pixels</em>";
if(!Telerik.Web.UI.Grid.FireEvent(this._column._owner,"OnColumnResizing",[this._column.Index,_4e])){
return;
}
if(_4e<=0){
this._rightResizer.style.left=this._rightResizer.style.left;
this._destroy(e);
return;
}
this._currentWidth=_4e;
if(this._isRealTimeResize){
var _50=(navigator.userAgent.indexOf("Safari")!=-1)?Telerik.Web.UI.Grid.GetRealCellIndex(this._column._owner,this._column.get_element()):this._column.get_element().cellIndex;
this._column._owner.resizeColumn(_50,_4e);
}else{
this._currentWidth=_4e;
return;
}
if(Telerik.Web.UI.Grid.FindPosX(this._leftResizer)!=Telerik.Web.UI.Grid.FindPosX(this._column.get_element())){
this._leftResizer.style.left=Telerik.Web.UI.Grid.FindPosX(this._column.get_element())+"px";
}
if(Telerik.Web.UI.Grid.FindPosX(this._rightResizer)!=(Telerik.Web.UI.Grid.FindPosX(this._column.get_element())+this._column.get_element().offsetWidth)){
this._rightResizer.style.left=Telerik.Web.UI.Grid.FindPosX(this._column.get_element())+this._column.get_element().offsetWidth+"px";
}
if(Telerik.Web.UI.Grid.FindPosY(this._leftResizer)!=Telerik.Web.UI.Grid.FindPosY(this._column.get_element())){
this._leftResizer.style.top=Telerik.Web.UI.Grid.FindPosY(this._column.get_element())+"px";
this._rightResizer.style.top=Telerik.Web.UI.Grid.FindPosY(this._column.get_element())+"px";
}
if(this._column._owner._owner._gridDataDiv){
this._leftResizer.style.left=parseInt(this._leftResizer.style.left.replace("px",""))-this._column._owner._owner._gridDataDiv.scrollLeft+"px";
this._rightResizer.style.left=parseInt(this._leftResizer.style.left.replace("px",""))+this._column.get_element().offsetWidth+"px";
this._resizerToolTip.style.left=parseInt(this._rightResizer.style.left)-5+"px";
}
if(!this._column._owner._owner.ClientSettings.Scrolling.AllowScroll){
this._leftResizer.style.height=this._column._owner.get_element().tBodies[0].offsetHeight+this._column._owner.get_element().tHead.offsetHeight+"px";
}else{
if(this._column._owner._owner.ClientSettings.Scrolling.UseStaticHeaders){
this._leftResizer.style.height=this._column._owner._owner._gridDataDiv.clientHeight+this._column._owner.get_element().tHead.offsetHeight+"px";
}else{
this._leftResizer.style.height=this._column._owner._owner._gridDataDiv.clientHeight+"px";
}
}
this._rightResizer.style.height=this._leftResizer.style.height;
}};
Telerik.Web.UI.GridColumnResizer.registerClass("Telerik.Web.UI.GridColumnResizer",null,Sys.IDisposable);
Type.registerNamespace("Telerik.Web.UI");
Type.registerNamespace("Telerik.Web.UI.Grid");
Telerik.Web.UI.Grid._uniqueIDToClientID=function(_51){
return _51.replace(/[$:]/g,"_");
};
Telerik.Web.UI.Grid.getTableHeaderRow=function(_52){
var _53=null;
if(_52.tHead){
for(var i=0;i<_52.tHead.rows.length;i++){
if(_52.tHead.rows[i]!=null){
if(_52.tHead.rows[i].cells[0]!=null){
if(_52.tHead.rows[i].cells[0].tagName!=null){
if(_52.tHead.rows[i].cells[0].tagName.toLowerCase()=="th"){
_53=_52.tHead.rows[i];
break;
}
}
}
}
}
}
return _53;
};
Telerik.Web.UI.Grid.GetRealCellIndex=function(_55,_56){
for(var i=0;i<_55.get_columns().length;i++){
if(_55.get_columns()[i].get_element()==_56){
return i;
}
}
};
Telerik.Web.UI.Grid.CopyAttributes=function(_58,_59){
for(var i=0;i<_59.attributes.length;i++){
try{
if(_59.attributes[i].name.toLowerCase()=="id"){
continue;
}
if(_59.attributes[i].value!=null&&_59.attributes[i].value!="null"&&_59.attributes[i].value!=""){
_58.setAttribute(_59.attributes[i].name,_59.attributes[i].value);
}
}
catch(e){
continue;
}
}
};
Telerik.Web.UI.Grid.PositionDragElement=function(_5b,_5c){
_5b.style.top=_5c.clientY+document.documentElement.scrollTop+document.body.scrollTop+1+"px";
_5b.style.left=_5c.clientX+document.documentElement.scrollLeft+document.body.scrollLeft+1+"px";
if($telerik.isOpera||($telerik.isSafari&&!$telerik.isSafari3)){
_5b.style.top=parseInt(_5b.style.top)-document.body.scrollTop+"px";
}
};
Telerik.Web.UI.Grid.ClearDocumentEvents=function(){
if(document.onmousedown!=this.mouseDownHandler){
this.documentOnMouseDown=document.onmousedown;
}
if(document.onselectstart!=this.selectStartHandler){
this.documentOnSelectStart=document.onselectstart;
}
if(document.ondragstart!=this.dragStartHandler){
this.documentOnDragStart=document.ondragstart;
}
this.mouseDownHandler=function(e){
return false;
};
this.selectStartHandler=function(){
return false;
};
this.dragStartHandler=function(){
return false;
};
document.onmousedown=this.mouseDownHandler;
document.onselectstart=this.selectStartHandler;
document.ondragstart=this.dragStartHandler;
};
Telerik.Web.UI.Grid.RestoreDocumentEvents=function(){
if((typeof (this.documentOnMouseDown)=="function")&&(document.onmousedown!=this.mouseDownHandler)){
document.onmousedown=this.documentOnMouseDown;
}else{
document.onmousedown="";
}
if((typeof (this.documentOnSelectStart)=="function")&&(document.onselectstart!=this.selectStartHandler)){
document.onselectstart=this.documentOnSelectStart;
}else{
document.onselectstart="";
}
if((typeof (this.documentOnDragStart)=="function")&&(document.ondragstart!=this.dragStartHandler)){
document.ondragstart=this.documentOnDragStart;
}else{
document.ondragstart="";
}
};
Telerik.Web.UI.Grid.IsChildOf=function(_5e,_5f){
if(!_5e){
return false;
}
while(_5e.parentNode){
if(_5e.parentNode==_5f){
return true;
}
_5e=_5e.parentNode;
}
return false;
};
Telerik.Web.UI.Grid.GetCurrentElement=function(e){
if(!e){
var e=window.event;
}
var _61;
if(e.srcElement){
_61=e.srcElement;
}else{
_61=e.target;
}
return _61;
};
Telerik.Web.UI.Grid.CreateReorderIndicators=function(_62,_63,_64,_65,_66){
if((this.ReorderIndicator1==null)&&(this.ReorderIndicator2==null)){
this.ReorderIndicator1=document.createElement("span");
this.ReorderIndicator2=document.createElement("span");
if(_64!=""){
var _67=new Image();
_67.src=_64+"MoveDown.gif";
var _68=new Image();
_68.src=_64+"MoveUp.gif";
this.ReorderIndicator1.innerHTML="<img src=\""+_64+"MoveDown.gif\" alt=\"reorder indicator\" />";
this.ReorderIndicator2.innerHTML="<img src=\""+_64+"MoveUp.gif\" alt=\"reorder indicator\" />";
this.ReorderIndicator1.className="TopReorderImage_"+_63;
this.ReorderIndicator2.className="BottomReorderImage_"+_63;
}else{
if(_63==""){
this.ReorderIndicator1.innerHTML="&darr;";
this.ReorderIndicator2.innerHTML="&uarr;";
}else{
this.ReorderIndicator1.className="TopReorderIndicator_"+_63;
this.ReorderIndicator2.className="BottomReorderIndicator_"+_63;
this.ReorderIndicator1.style.width=this.ReorderIndicator1.style.height=this.ReorderIndicator2.style.width=this.ReorderIndicator2.style.height="10px";
}
}
this.ReorderIndicator1.style.backgroundColor="transparent";
this.ReorderIndicator1.style.color="darkblue";
this.ReorderIndicator1.style.fontSize="1px";
this.ReorderIndicator2.style.backgroundColor=this.ReorderIndicator1.style.backgroundColor;
this.ReorderIndicator2.style.color=this.ReorderIndicator1.style.color;
this.ReorderIndicator2.style.fontSize=this.ReorderIndicator1.style.fontSize;
var _69=$find(_66);
var _6a=0;
var _6b=0;
if(_65&&_62.nodeName=="TH"&&_69&&_69.GridDataDiv){
var _6a=_69.GridDataDiv.scrollLeft;
if(!_69.ClientSettings.Scrolling.UseStaticHeaders){
var _6b=_69.GridDataDiv.scrollTop;
}
}
this.ReorderIndicator1.style.top=Telerik.Web.UI.Grid.FindPosY(_62)-_6b-this.ReorderIndicator1.offsetHeight+"px";
this.ReorderIndicator1.style.left=Telerik.Web.UI.Grid.FindPosX(_62)-_6a+"px";
this.ReorderIndicator2.style.top=Telerik.Web.UI.Grid.FindPosY(_62)-_6b+_62.offsetHeight+"px";
this.ReorderIndicator2.style.left=this.ReorderIndicator1.style.left;
this.ReorderIndicator1.style.visibility="hidden";
this.ReorderIndicator1.style.display="none";
this.ReorderIndicator1.style.position="absolute";
this.ReorderIndicator2.style.visibility=this.ReorderIndicator1.style.visibility;
this.ReorderIndicator2.style.display=this.ReorderIndicator1.style.display;
this.ReorderIndicator2.style.position=this.ReorderIndicator1.style.position;
document.body.appendChild(this.ReorderIndicator1);
document.body.appendChild(this.ReorderIndicator2);
if(_64!=""){
this.ReorderIndicator1.style.marginLeft=-parseInt(_67.width/2)+"px";
this.ReorderIndicator2.style.marginLeft=-parseInt(_68.width/2)+"px";
_67=null;
_68=null;
}
}
};
Telerik.Web.UI.Grid.NavigateToPage=function(_6c,_6d){
var _6e=$find(_6c);
if(_6e){
_6e.page(_6d);
}
};
Telerik.Web.UI.Grid.DestroyReorderIndicators=function(){
if((this.ReorderIndicator1!=null)&&(this.ReorderIndicator2!=null)){
document.body.removeChild(this.ReorderIndicator1);
document.body.removeChild(this.ReorderIndicator2);
this.ReorderIndicator1=null;
this.ReorderIndicator2=null;
}
};
Telerik.Web.UI.Grid.MoveReorderIndicators=function(e,_70,_71,_72){
if((this.ReorderIndicator1!=null)&&(this.ReorderIndicator2!=null)){
this.ReorderIndicator1.style.visibility="visible";
this.ReorderIndicator1.style.display="";
this.ReorderIndicator2.style.visibility="visible";
this.ReorderIndicator2.style.display="";
var _73=$find(_72);
var _74=0;
var _75=0;
if(_71&&_70.nodeName=="TH"&&_73&&_73.GridDataDiv){
var _74=_73.GridDataDiv.scrollLeft;
if(!_73.ClientSettings.Scrolling.UseStaticHeaders){
var _75=_73.GridDataDiv.scrollTop;
}
}
this.ReorderIndicator1.style.top=Telerik.Web.UI.Grid.FindPosY(_70)-_75-this.ReorderIndicator1.offsetHeight+"px";
this.ReorderIndicator1.style.left=Telerik.Web.UI.Grid.FindPosX(_70)-_74+"px";
this.ReorderIndicator2.style.top=Telerik.Web.UI.Grid.FindPosY(_70)-_75+_70.offsetHeight+"px";
this.ReorderIndicator2.style.left=this.ReorderIndicator1.style.left;
}
};
Telerik.Web.UI.Grid.getVisibleCols=function(_76){
var _77=0;
for(var i=0,l=_76.length;i<l;i++){
if(_76[i].style.display=="none"){
continue;
}
_77++;
}
return _77;
};
Telerik.Web.UI.Grid.hideShowCells=function(_7a,_7b,_7c,_7d){
var _7e=Telerik.Web.UI.Grid.getVisibleCols(_7d);
for(var i=0,l=_7a.rows.length;i<l;i++){
if(_7a.rows[i].cells.length!=_7e){
if(_7a.rows[i].cells.length==1){
_7a.rows[i].cells[0].colSpan=_7e;
}else{
for(var j=0;j<_7a.rows[i].cells.length;j++){
if(_7a.rows[i].cells[j].colSpan>1&&j>=_7b){
if(!_7c){
_7a.rows[i].cells[j].colSpan=_7a.rows[i].cells[j].colSpan-1;
}else{
_7a.rows[i].cells[j].colSpan=_7a.rows[i].cells[j].colSpan+1;
}
break;
}
}
}
}
var _82=_7a.rows[i].cells[_7b];
var _83=(navigator.userAgent.toLowerCase().indexOf("safari")!=-1&&navigator.userAgent.indexOf("Mac")!=-1)?0:1;
if(!_7c){
if(_82!=null&&_82.colSpan==_83&&_82.style.display!="none"){
_82.style.display="none";
if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1&&navigator.userAgent.toLowerCase().indexOf("6.0")!=-1){
Telerik.Web.UI.Grid._hideShowSelect(_82,_7c);
}
}
}else{
if(_82!=null&&_82.colSpan==_83&&_82.style.display=="none"){
_82.style.display=(window.netscape)?"table-cell":"";
}
if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1&&navigator.userAgent.toLowerCase().indexOf("6.0")!=-1){
Telerik.Web.UI.Grid._hideShowSelect(_82,_7c);
}
}
}
};
Telerik.Web.UI.Grid._hideShowSelect=function(_84,_85){
if(!_84){
return;
}
var _86=_84.getElementsByTagName("select");
for(var i=0;i<_86.length;i++){
_86[i].style.display=(_85)?"":"none";
}
};
Telerik.Web.UI.Grid.FindPosX=function(_88){
var x=0;
try{
var _8a=0;
if(_88.offsetParent){
while(_88.offsetParent){
x+=_88.offsetLeft;
if(_88.currentStyle&&_88.currentStyle.borderLeftWidth.indexOf("px")!=-1&&!window.opera){
_8a+=parseInt(_88.currentStyle.borderLeftWidth);
}
_88=_88.offsetParent;
}
}else{
if(_88.x){
x+=_88.x;
}
}
if((navigator.userAgent.indexOf("Gecko")==-1||navigator.userAgent.indexOf("WebKit/4")!=-1)&&((document.compatMode=="BackCompat"&&!$telerik.isIE)||(document.compatMode!="BackCompat"&&$telerik.isIE)||navigator.userAgent.indexOf("WebKit/4")!=-1)){
if(document.body.currentStyle&&document.body.currentStyle.marginLeft.indexOf("px")!=-1&&!window.opera){
x=parseInt(x)+parseInt(document.body.currentStyle.marginLeft);
}
if(document.defaultView&&document.defaultView.getComputedStyle&&document.defaultView.getComputedStyle(document.body,"").marginLeft.indexOf("px")!=-1&&!window.opera){
x=parseInt(x)+parseInt(document.defaultView.getComputedStyle(document.body,"").marginLeft);
}
}
return x+_8a;
}
catch(error){
return x;
}
};
Telerik.Web.UI.Grid.FindPosY=function(_8b){
var y=0;
try{
var _8d=0;
if(_8b.offsetParent){
while(_8b.offsetParent){
y+=_8b.offsetTop;
if(_8b.currentStyle&&_8b.currentStyle.borderTopWidth.indexOf("px")!=-1&&!window.opera){
_8d+=parseInt(_8b.currentStyle.borderTopWidth);
}
_8b=_8b.offsetParent;
}
}else{
if(_8b.y){
y+=_8b.y;
}
}
if((navigator.userAgent.indexOf("Gecko")==-1||navigator.userAgent.indexOf("WebKit/4")!=-1)&&((document.compatMode=="BackCompat"&&!$telerik.isIE)||(document.compatMode!="BackCompat"&&$telerik.isIE)||navigator.userAgent.indexOf("WebKit/4")!=-1)){
if(document.body.currentStyle&&document.body.currentStyle.marginTop.indexOf("px")!=-1&&!window.opera){
y=parseInt(y)+parseInt(document.body.currentStyle.marginTop);
}
if(document.defaultView&&document.defaultView.getComputedStyle&&document.defaultView.getComputedStyle(document.body,"").marginTop.indexOf("px")!=-1&&!window.opera){
y=parseInt(y)+parseInt(document.defaultView.getComputedStyle(document.body,"").marginTop);
}
}
return y+_8d;
}
catch(error){
return y;
}
};
Telerik.Web.UI.Grid.CreateDragDrop=function(e,_8f,_90){
Telerik.Web.UI.Grid.CreateReorderIndicators(_8f.get_element(),_8f._owner._owner.Skin,_8f._owner._owner._imagesPath,_90,_8f._owner._owner.get_id());
this._moveHeaderDiv=document.createElement("div");
var _91=document.createElement("table");
if(this._moveHeaderDiv.mergeAttributes){
this._moveHeaderDiv.mergeAttributes(_8f._owner._owner.get_element());
}else{
Telerik.Web.UI.Grid.CopyAttributes(this._moveHeaderDiv,_8f.get_element());
}
if(_91.mergeAttributes){
_91.mergeAttributes(_8f._owner.get_element());
}else{
Telerik.Web.UI.Grid.CopyAttributes(_91,_8f._owner.get_element());
}
_91.style.margin="0px";
_91.style.height=_8f.get_element().offsetHeight+"px";
_91.style.width=_8f.get_element().offsetWidth+"px";
_91.style.border="0px";
_91.style.borderCollapse="collapse";
_91.style.padding="0px";
var _92=document.createElement("thead");
var tr=document.createElement("tr");
_91.appendChild(_92);
_92.appendChild(tr);
tr.appendChild(_8f.get_element().cloneNode(true));
this._moveHeaderDiv.appendChild(_91);
if(window.netscape){
this._moveHeaderDiv.className+=" "+_8f._owner._owner.get_element().className;
}
document.body.appendChild(this._moveHeaderDiv);
this._moveHeaderDiv.style.height=_91.style.height;
this._moveHeaderDiv.style.width=_91.style.width;
this._moveHeaderDiv.style.position="absolute";
this._moveHeaderDiv.style.cursor="move";
this._moveHeaderDiv.style.display="none";
this._moveHeaderDiv.UniqueName=_8f.get_element().UniqueName;
Telerik.Web.UI.Grid.ClearDocumentEvents();
};
Telerik.Web.UI.Grid.MoveDragDrop=function(e,_95,_96){
if(this._moveHeaderDiv!=null){
if(typeof (this._moveHeaderDiv.style.filter)!="undefined"){
this._moveHeaderDiv.style.filter="alpha(opacity=25);";
}else{
if(typeof (this._moveHeaderDiv.style.MozOpacity)!="undefined"){
this._moveHeaderDiv.style.MozOpacity=1/4;
}else{
if(typeof (this._moveHeaderDiv.style.opacity)!="undefined"){
this._moveHeaderDiv.style.opacity=1/4;
}
}
}
this._moveHeaderDiv.style.visibility="";
this._moveHeaderDiv.style.display="";
Telerik.Web.UI.Grid.PositionDragElement(this._moveHeaderDiv,e);
var _97=Telerik.Web.UI.Grid.GetCurrentElement(e);
if(_97!=null){
if(Telerik.Web.UI.Grid.IsChildOf(_97,_95._owner.get_element())||(_95._owner._owner.ClientSettings.AllowDragToGroup&&_95._owner._owner._groupPanel&&Telerik.Web.UI.Grid.IsChildOf(_97,_95._owner._owner._groupPanel.get_element()))){
if((_97!=_95.get_element())&&((_97.parentNode==_95.get_element().parentNode))){
if(!_95._hierarchicalIndex){
var _95=_95._owner.getColumnByUniqueName(_97.UniqueName);
if(_95._data.Reorderable&&_95._owner._owner.ClientSettings.AllowColumnsReorder){
_97.title=_95._owner._owner.ClientSettings.ClientMessages.DropHereToReorder;
Telerik.Web.UI.Grid.MoveReorderIndicators(e,_97,_96,_95._owner._owner.get_id());
}
}else{
if(_97.parentNode.cells&&_97!=_97.parentNode.cells[_97.parentNode.cells.length-1]){
_97.title=_95._owner._owner.ClientSettings.ClientMessages.DropHereToReorder;
Telerik.Web.UI.Grid.MoveReorderIndicators(e,_97,_96,_95._owner._owner.get_id());
}
}
}else{
if(_95._owner._owner.ClientSettings.AllowDragToGroup&&_95._owner._owner._groupPanel&&Telerik.Web.UI.Grid.IsChildOf(_97,_95._owner._owner._groupPanel.get_element())){
Telerik.Web.UI.Grid.MoveReorderIndicators(e,_95._owner._owner._groupPanel.get_element(),_96,_95._owner._owner.get_id());
}else{
Telerik.Web.UI.Grid.ReorderIndicator1.style.visibility="hidden";
Telerik.Web.UI.Grid.ReorderIndicator1.style.display="none";
Telerik.Web.UI.Grid.ReorderIndicator1.style.position="absolute";
Telerik.Web.UI.Grid.ReorderIndicator2.style.visibility=Telerik.Web.UI.Grid.ReorderIndicator1.style.visibility;
Telerik.Web.UI.Grid.ReorderIndicator2.style.display=Telerik.Web.UI.Grid.ReorderIndicator1.style.display;
Telerik.Web.UI.Grid.ReorderIndicator2.style.position=Telerik.Web.UI.Grid.ReorderIndicator1.style.position;
}
}
var _98=_95._owner._owner;
if(_98&&_98.ClientSettings.Scrolling.AllowScroll&&_98._gridDataDiv){
Telerik.Web.UI.Grid.AutoScrollHorizontally(_98,_97);
}
}
}
}
};
Telerik.Web.UI.Grid.AutoScrollHorizontally=function(_99,_9a){
if(!_99||!this||_99.ClientSettings.Scrolling.FrozenColumnsCount>0){
return;
}
var _9b,_9c;
var _9d=_99._gridDataDiv;
if(!_9d||!this._moveHeaderDiv){
return;
}
var _9e=$telerik.getLocation(this._moveHeaderDiv);
_9b=$telerik.getLocation(_9d).x;
_9c=_9b+_9d.offsetWidth;
var _9f=_9d.scrollLeft<=0;
var _a0=_9d.scrollLeft>=(_9d.scrollWidth-_9d.offsetWidth+16);
var _a1=_9e.x-_9b;
var _a2=_9c-_9e.x;
if(_a1<(50+Telerik.Web.UI.Grid.GetScrollBarWidth())&&!_9f){
var _a3=(10-(_a1/5));
_9d.scrollLeft=_9d.scrollLeft-_a3;
window.setTimeout(function(){
Telerik.Web.UI.Grid.AutoScrollHorizontally(_99,_9a);
},100);
Telerik.Web.UI.Grid.HideReorderIndicators();
}else{
if(_a2<(50+Telerik.Web.UI.Grid.GetScrollBarWidth())&&!_a0){
var _a3=(10-(_a2/5));
_9d.scrollLeft=_9d.scrollLeft+_a3;
window.setTimeout(function(){
Telerik.Web.UI.Grid.AutoScrollHorizontally(_99,_9a);
},100);
Telerik.Web.UI.Grid.HideReorderIndicators();
}
}
};
Telerik.Web.UI.Grid.HideReorderIndicators=function(){
if(!Telerik.Web.UI.Grid.ReorderIndicator1||!Telerik.Web.UI.Grid.ReorderIndicator2){
return;
}
Telerik.Web.UI.Grid.ReorderIndicator1.style.visibility="hidden";
Telerik.Web.UI.Grid.ReorderIndicator1.style.display="none";
Telerik.Web.UI.Grid.ReorderIndicator1.style.position="absolute";
Telerik.Web.UI.Grid.ReorderIndicator2.style.visibility=Telerik.Web.UI.Grid.ReorderIndicator1.style.visibility;
Telerik.Web.UI.Grid.ReorderIndicator2.style.display=Telerik.Web.UI.Grid.ReorderIndicator1.style.display;
Telerik.Web.UI.Grid.ReorderIndicator2.style.position=Telerik.Web.UI.Grid.ReorderIndicator1.style.position;
};
Telerik.Web.UI.Grid.DestroyDragDrop=function(){
if(this._moveHeaderDiv!=null){
var _a4=this._moveHeaderDiv.parentNode;
_a4.removeChild(this._moveHeaderDiv);
this._moveHeaderDiv=null;
Telerik.Web.UI.Grid.RestoreDocumentEvents();
}
Telerik.Web.UI.Grid.DestroyReorderIndicators();
};
Telerik.Web.UI.Grid.GetFirstParentByTagName=function(_a5,_a6){
while(_a5&&_a5.parentNode){
if(_a5.tagName.toLowerCase()==_a6.toLowerCase()){
return _a5;
}
_a5=_a5.parentNode;
}
return null;
};
Telerik.Web.UI.Grid.CreateColumnResizers=function(_a7,e){
Telerik.Web.UI.Grid.ClearDocumentEvents();
this.LeftResizer=document.createElement("span");
this.LeftResizer.style.backgroundColor="navy";
this.LeftResizer.style.width="1"+"px";
this.LeftResizer.style.position="absolute";
this.LeftResizer.style.cursor="e-resize";
this.RightResizer=document.createElement("span");
this.RightResizer.style.backgroundColor="navy";
this.RightResizer.style.width="1"+"px";
this.RightResizer.style.position="absolute";
this.RightResizer.style.cursor="e-resize";
this.ResizerToolTip=document.createElement("span");
this.ResizerToolTip.style.backgroundColor="#F5F5DC";
this.ResizerToolTip.style.border="1px solid";
this.ResizerToolTip.style.position="absolute";
this.ResizerToolTip.style.font="icon";
this.ResizerToolTip.style.padding="2";
this.ResizerToolTip.innerHTML="Width: <b>"+_a7.get_element().offsetWidth+"</b> <em>pixels</em>";
this.LeftResizer.style.display=this.ResizerToolTip.style.display=this.ResizerToolTip.style.display="none";
document.body.appendChild(this.LeftResizer);
document.body.appendChild(this.RightResizer);
document.body.appendChild(this.ResizerToolTip);
Telerik.Web.UI.Grid.MoveColumnResizers(_a7,e);
};
Telerik.Web.UI.Grid.DestroyColumnResizers=function(){
Telerik.Web.UI.Grid.RestoreDocumentEvents();
if(this.LeftResizer&&this.LeftResizer.parentNode){
document.body.removeChild(this.LeftResizer);
this.LeftResizer=null;
}
if(this.RightResizer&&this.RightResizer.parentNode){
document.body.removeChild(this.RightResizer);
this.RightResizer=null;
}
if(this.ResizerToolTip&&this.ResizerToolTip.parentNode){
document.body.removeChild(this.ResizerToolTip);
this.ResizerToolTip=null;
}
};
Telerik.Web.UI.Grid.MoveColumnResizers=function(_a9,e){
if(!this.LeftResizer||!this.RightResizer||!this.RightResizer){
return;
}
this.LeftResizer.style.display=this.RightResizer.style.display=this.ResizerToolTip.style.display="";
this.LeftResizer.style.top=Telerik.Web.UI.Grid.FindPosY(_a9.get_element())-Telerik.Web.UI.Grid.FindScrollPosY(_a9.get_element())+document.documentElement.scrollTop+document.body.scrollTop+"px";
this.LeftResizer.style.left=Telerik.Web.UI.Grid.FindPosX(_a9.get_element())-Telerik.Web.UI.Grid.FindScrollPosX(_a9.get_element())+document.documentElement.scrollLeft+document.body.scrollLeft+"px";
this.RightResizer.style.top=this.LeftResizer.style.top;
this.RightResizer.style.left=Telerik.Web.UI.Grid.GetEventPosX(e)-5+"px";
this.ResizerToolTip.style.top=parseInt(this.RightResizer.style.top)-20+"px";
this.ResizerToolTip.style.left=parseInt(this.RightResizer.style.left)-5+"px";
if(parseInt(this.LeftResizer.style.left)<Telerik.Web.UI.Grid.FindPosX(_a9._owner.get_element())){
this.LeftResizer.style.display="none";
}
if(!_a9._owner._owner.ClientSettings.Scrolling.AllowScroll){
this.LeftResizer.style.height=_a9._owner.get_element().tBodies[0].offsetHeight+_a9._owner.get_element().tHead.offsetHeight+"px";
}else{
var _ab=$get(_a9._owner._owner.ClientID+"_GridData");
if(_a9._owner._owner.ClientSettings.Scrolling.UseStaticHeaders){
this.LeftResizer.style.height=_ab.clientHeight+_a9._owner.get_element().tHead.offsetHeight+"px";
}else{
this.LeftResizer.style.height=_ab.clientHeight+"px";
}
}
this.RightResizer.style.height=this.LeftResizer.style.height;
var _ac=parseInt(this.RightResizer.style.left)-parseInt(this.LeftResizer.style.left);
this.ResizerToolTip.innerHTML="Width: <b>"+_ac+"</b> <em>pixels</em>";
if(_a9._owner._owner.ClientSettings.Resizing.EnableRealTimeResize){
if(_ac>0){
_a9.get_element().style.width=_ac+"px";
this.RightResizer.style.left=parseInt(this.LeftResizer.style.left)+_a9.get_element().offsetWidth+"px";
}
}
if(parseInt(this.RightResizer.style.left)<=parseInt(this.LeftResizer.style.left)-1){
Telerik.Web.UI.Grid.DestroyColumnResizers();
}
};
Telerik.Web.UI.Grid.FindScrollPosX=function(_ad){
var x=0;
while(_ad.parentNode){
if(typeof (_ad.parentNode.scrollLeft)=="number"){
x+=_ad.parentNode.scrollLeft;
}
_ad=_ad.parentNode;
}
if(document.body.currentStyle&&document.body.currentStyle.marginLeft.indexOf("px")!=-1&&!window.opera){
x=parseInt(x)-parseInt(document.body.currentStyle.marginLeft);
}
return x;
};
Telerik.Web.UI.Grid.FindScrollPosY=function(_af){
var y=0;
while(_af.parentNode){
if(typeof (_af.parentNode.scrollTop)=="number"){
y+=_af.parentNode.scrollTop;
}
_af=_af.parentNode;
}
if(document.body.currentStyle&&document.body.currentStyle.marginTop.indexOf("px")!=-1&&!window.opera){
y=parseInt(y)-parseInt(document.body.currentStyle.marginTop);
}
return y;
};
Telerik.Web.UI.Grid.GetEventPosX=function(e){
var x=e.clientX;
var _b3=Telerik.Web.UI.Grid.GetCurrentElement(e);
while(_b3.parentNode){
if(typeof (_b3.parentNode.scrollLeft)=="number"){
x+=_b3.parentNode.scrollLeft;
}
_b3=_b3.parentNode;
}
if($telerik.isIE&&Telerik.Web.UI.Grid.IsRightToLeft(document.body)&&((document.documentElement.currentStyle["overflow"]!="hidden"&&document.documentElement.scrollHeight>document.documentElement.offsetHeight)||document.documentElement.currentStyle["overflow"]=="scroll")){
x=x-Telerik.Web.UI.Grid.getScrollBarHeight();
}
return x;
};
Telerik.Web.UI.Grid.GetEventPosY=function(e){
var y=e.clientY;
var _b6=Telerik.Web.UI.Grid.GetCurrentElement(e);
while(_b6.parentNode){
if(typeof (_b6.parentNode.scrollTop)=="number"){
y+=_b6.parentNode.scrollTop;
}
_b6=_b6.parentNode;
}
return y;
};
Telerik.Web.UI.Grid.getScrollBarHeight=function(){
try{
if(typeof (this.scrollbarHeight)=="undefined"){
var _b7,_b8=0;
var _b9=document.createElement("div");
_b9.style.position="absolute";
_b9.style.top="-1000px";
_b9.style.left="-1000px";
_b9.style.width="100px";
_b9.style.height="100px";
_b9.style.overflow="auto";
var _ba=document.createElement("div");
_ba.style.width="1000px";
_ba.style.height="1000px";
_b9.appendChild(_ba);
document.body.appendChild(_b9);
_b7=_b9.offsetHeight;
_b8=_b9.clientHeight;
document.body.removeChild(document.body.lastChild);
this.scrollbarHeight=_b7-_b8;
if(this.scrollbarHeight<=0||_b8==0){
this.scrollbarHeight=16;
}
_ba.outerHTML=null;
_b9.outerHTML=null;
_b9=null;
_ba=null;
}
return this.scrollbarHeight;
}
catch(error){
return false;
}
};
Telerik.Web.UI.Grid.GetScrollBarWidth=function(){
try{
if(typeof (this.scrollbarWidth)=="undefined"){
var _bb,_bc=0;
var _bd=document.createElement("div");
_bd.style.position="absolute";
_bd.style.top="-1000px";
_bd.style.left="-1000px";
_bd.style.width="100px";
_bd.style.overflow="auto";
var _be=document.createElement("div");
_be.style.width="1000px";
_bd.appendChild(_be);
document.body.appendChild(_bd);
_bb=_bd.offsetWidth;
_bc=_bd.clientWidth;
document.body.removeChild(document.body.lastChild);
this.scrollbarWidth=_bb-_bc;
if(this.scrollbarWidth<=0||_bc==0){
this.scrollbarWidth=16;
}
}
return this.scrollbarWidth;
}
catch(error){
return false;
}
};
Telerik.Web.UI.Grid.IsRightToLeft=function(_bf){
try{
while(_bf){
if(_bf.currentStyle&&_bf.currentStyle.direction.toLowerCase()=="rtl"){
return true;
}else{
if(getComputedStyle&&getComputedStyle(_bf,"").getPropertyValue("direction").toLowerCase()=="rtl"){
return true;
}else{
if(_bf.dir.toLowerCase()=="rtl"){
return true;
}
}
}
_bf=_bf.parentNode;
}
return false;
}
catch(error){
return false;
}
};
Telerik.Web.UI.Grid.FireEvent=function(_c0,_c1,_c2){
try{
var _c3=true;
if(typeof (_c0[_c1])=="string"){
eval(_c0[_c1]);
}else{
if(typeof (_c0[_c1])=="function"){
if(_c2){
switch(_c2.length){
case 1:
_c3=_c0[_c1](_c2[0]);
break;
case 2:
_c3=_c0[_c1](_c2[0],_c2[1]);
break;
}
}else{
_c3=_c0[_c1]();
}
}
}
if(typeof (_c3)!="boolean"){
return true;
}else{
return _c3;
}
}
catch(error){
throw error;
}
};
Telerik.Web.UI.Grid.GetTableColGroup=function(_c4){
try{
return _c4.getElementsByTagName("colgroup")[0];
}
catch(error){
return false;
}
};
Telerik.Web.UI.Grid.GetTableColGroupCols=function(_c5){
try{
var _c6=new Array();
var _c7=_c5.childNodes[0];
for(var i=0;i<_c5.childNodes.length;i++){
if((_c5.childNodes[i].tagName)&&(_c5.childNodes[i].tagName.toLowerCase()=="col")){
_c6[_c6.length]=_c5.childNodes[i];
}
}
return _c6;
}
catch(error){
return false;
}
};
Telerik.Web.UI.Grid.ClearItemStyle=function(row,_ca,_cb){
Sys.UI.DomElement.removeCssClass(row,_cb);
if(_ca){
var _cc=row.style.cssText.toLowerCase().replace(/ /g,"");
var _cd=_cc.split(";");
for(var j=0;j<_cd.length;j++){
if(_ca.indexOf(_cd[j])!=-1){
_cd[j]="";
}
}
row.style.cssText=_cd.join(";");
}
};
Telerik.Web.UI.Grid.SetItemStyle=function(row,_d0,_d1){
Sys.UI.DomElement.addCssClass(row,_d1);
if(_d0){
row.style.cssText=row.style.cssText+";"+_d0;
}
};
Telerik.Web.UI.Grid.ScrollIntoView=function(row){
if(row.focus){
row.scrollIntoView(false);
try{
row.focus();
}
catch(e){
}
}
};
Telerik.Web.UI.Grid.GetNestedTableView=function(row){
var _d4=null;
var _d5=Telerik.Web.UI.Grid.GetNestedTable(row);
if(_d5){
_d4=$find(_d5.id.split("__")[0]);
}
return _d4;
};
Telerik.Web.UI.Grid.GetLastNestedTableView=function(row){
var _d7=null;
var _d8=Telerik.Web.UI.Grid.GetLastNestedTable(row);
if(_d8){
_d7=$find(_d8.id.split("__")[0]);
}
return _d7;
};
Telerik.Web.UI.Grid.GetPreviousNestedTableView=function(row){
var _da=null;
if(row.previousSibling&&row.previousSibling.previousSibling){
_da=Telerik.Web.UI.Grid.GetNestedTableView(row.previousSibling);
}
return _da;
};
Telerik.Web.UI.Grid.GetNestedTable=function(row){
var _dc=null;
var _dd=Telerik.Web.UI.Grid.GetNodeNextSiblingByTagName(row,"tr");
if(_dd){
var _de=_dd.getElementsByTagName("table");
if(_de.length>0&&_de[0].id.indexOf("Detail")!=-1){
_dc=_de[0];
}
}
return _dc;
};
Telerik.Web.UI.Grid.GetLastNestedTable=function(row){
var _e0=null;
var _e1=Telerik.Web.UI.Grid.GetNodeNextSiblingByTagName(row,"tr");
if(_e1){
var _e2=_e1.getElementsByTagName("table");
for(var i=_e2.length-1;i>=0;i--){
var _e4=_e2[i];
if(_e4.id.indexOf("Detail")!=-1&&_e4.id.indexOf("_mainTable")==-1){
_e0=_e4;
break;
}
}
}
return _e0;
};
Telerik.Web.UI.Grid.GetNodeNextSiblingByTagName=function(_e5,_e6){
var _e5=_e5.nextSibling;
while(_e5!=null&&(_e5.nodeType==3||(_e5.tagName&&_e5.tagName.toLowerCase()!=_e6.toLowerCase()))){
_e5=_e5.nextSibling;
}
return _e5;
};
Telerik.Web.UI.Grid.GetNodePreviousSiblingByTagName=function(_e7,_e8){
var _e7=_e7.previousSibling;
while((_e7!=null)&&(_e7.nodeType==3||(_e7.tagName&&_e7.tagName.toLowerCase()!=_e8.toLowerCase()))){
_e7=_e7.previousSibling;
}
return _e7;
};
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.GridItemResizer=function(_e9){
Telerik.Web.UI.GridItemResizer.initializeBase(this);
this._owner=_e9;
this._onResizeMouseUpDelegate=null;
this._cellsWithEvents=[];
};
Telerik.Web.UI.GridItemResizer.prototype={dispose:function(){
for(var i=0;i<this._cellsWithEvents.length;i++){
$clearHandlers(this._cellsWithEvents[i]);
this._cellsWithEvents[i]._events=null;
this._cellsWithEvents[i]._onResizeMouseDownDelegate=null;
}
this._cellsWithEvents=null;
this._destroyRowResizer();
if(this._onResizeMouseUpDelegate){
$telerik.removeExternalHandler(document,"mouseup",this._onResizeMouseUpDelegate);
}
},_detectResizeCursorsOnItems:function(e,_ec){
var _ed=this;
if((_ec!=null)&&(_ec.tagName.toLowerCase()=="td")&&!this._owner.MoveHeaderDiv){
var el=Telerik.Web.UI.Grid.GetFirstParentByTagName(_ec,"tr");
var _ef=false;
while(el&&Telerik.Web.UI.Grid.IsChildOf(el,this._owner.get_element())){
if(el.id&&el.id.split("__").length==2){
_ef=true;
break;
}
el=Telerik.Web.UI.Grid.GetFirstParentByTagName(el.parentNode,"tr");
}
if(!_ef){
return;
}
var _f0=_ec.parentNode.parentNode.parentNode;
var _f1=$find(_f0.id);
if(_f1!=null){
if(!_f1.get_element()){
return;
}
if(!_f1.get_element().tBodies[0]){
return;
}
var _f2=Telerik.Web.UI.Grid.GetEventPosY(e);
var _f3=Telerik.Web.UI.Grid.FindPosY(_ec);
var _f4=_f3+_ec.offsetHeight;
this._resizeTolerance=5;
var _f5=_ec.title;
if((_f2>_f4-this._resizeTolerance)&&(_f2<_f4+this._resizeTolerance)){
_ec.style.cursor="n-resize";
_ec.title=this._owner.ClientSettings.ClientMessages.DragToResize;
if(!_ec._onResizeMouseDownDelegate){
_ec._onResizeMouseDownDelegate=Function.createDelegate(this,this._onResizeMouseDownHandler);
$addHandler(_ec,"mousedown",_ec._onResizeMouseDownDelegate);
this._cellsWithEvents[this._cellsWithEvents.length]=_ec;
}
}else{
_ec.style.cursor="default";
_ec.title="";
if(_ec._onResizeMouseDownDelegate){
if(_ec._events!=null){
$removeHandler(_ec,"mousedown",_ec._onResizeMouseDownDelegate);
}
_ec._onResizeMouseDownDelegate=null;
_ec._events=null;
}
}
}
}
},_moveItemResizer:function(e){
if((this._owner._rowResizer!="undefined")&&(this._owner._rowResizer!=null)&&(this._owner._rowResizer.parentNode!=null)){
this._owner._rowResizer.style.top=Telerik.Web.UI.Grid.GetEventPosY(e)-(Telerik.Web.UI.Grid.GetEventPosY(e)-e.clientY)+document.body.scrollTop+document.documentElement.scrollTop+"px";
if(this._owner.ClientSettings.Resizing.EnableRealTimeResize){
this._destroyRowResizerAndResizeRow(e,false);
this._updateRowResizerWidth(e);
}
}
},_destroyRowResizerAndResizeRow:function(e,_f8){
if((this._owner._cellToResize!="undefined")&&(this._owner._cellToResize!=null)&&(this._owner._cellToResize.tagName.toLowerCase()=="td")&&(this._owner._rowResizer!="undefined")&&(this._owner._rowResizer!=null)){
var _f9;
if(this._gridDataDiv){
_f9=parseInt(this._owner._rowResizer.style.top)+this._gridDataDiv.scrollTop-(Telerik.Web.UI.Grid.FindPosY(this._owner._cellToResize));
}else{
_f9=parseInt(this._owner._rowResizer.style.top)-(Telerik.Web.UI.Grid.FindPosY(this._owner._cellToResize));
}
if(_f9>0){
var _fa=this._owner._cellToResize.parentNode.parentNode.parentNode;
var _fb=$find(_fa.id);
if(_fb!=null){
_fb.resizeItem(this._owner._cellToResize.parentNode.rowIndex,_f9);
}
}
}
if(_f8){
this._destroyRowResizer();
}
},_updateRowResizerWidth:function(e){
var _fd=Telerik.Web.UI.Grid.GetCurrentElement(e);
if((_fd!=null)&&(_fd.tagName.toLowerCase()=="td")){
var _fe=this._owner._rowResizerRefTable;
if(_fe!=null){
if(this._gridDataDiv){
var _ff=(Telerik.Web.UI.Grid.FindPosX(this._gridDataDiv)+this._gridDataDiv.offsetWidth)-parseInt(this._owner._rowResizer.style.left);
if(_ff>_fe.get_element().offsetWidth){
this._owner._rowResizer.style.width=_fe.get_element().offsetWidth+"px";
}else{
this._owner._rowResizer.style.width=_ff+"px";
}
if(parseInt(this._owner._rowResizer.style.width)>this._gridDataDiv.offsetWidth){
this._owner._rowResizer.style.width=this._gridDataDiv.offsetWidth+"px";
}
}else{
this._owner._rowResizer.style.width=_fe.get_element().offsetWidth+"px";
}
}
}
},_createRowResizer:function(e){
this._destroyRowResizer();
var _101=Telerik.Web.UI.Grid.GetCurrentElement(e);
if((_101!=null)&&(_101.tagName.toLowerCase()=="td")){
if(_101.cellIndex>0){
var _102=_101.parentNode.rowIndex;
_101=_101.parentNode.parentNode.parentNode.rows[_102].cells[0];
}
this._owner._rowResizer=null;
this._owner._cellToResize=_101;
var _103=_101.parentNode.parentNode.parentNode;
var _104=$find(_103.id);
this._owner._rowResizer=document.createElement("div");
this._owner._rowResizer.style.backgroundColor="navy";
this._owner._rowResizer.style.height="1px";
this._owner._rowResizer.style.fontSize="1";
this._owner._rowResizer.style.position="absolute";
this._owner._rowResizer.style.cursor="n-resize";
if(_104!=null){
this._owner._rowResizerRefTable=_104;
if(this._gridDataDiv){
this._owner._rowResizer.style.left=Telerik.Web.UI.Grid.FindPosX(this._gridDataDiv)+"px";
var _105=(Telerik.Web.UI.Grid.FindPosX(this._gridDataDiv)+this._gridDataDiv.offsetWidth)-parseInt(this._owner._rowResizer.style.left);
if(_105>_104.get_element().offsetWidth){
this._owner._rowResizer.style.width=_104.Control.offsetWidth+"px";
}else{
this._owner._rowResizer.style.width=_105+"px";
}
if(parseInt(this._owner._rowResizer.style.width)>this._gridDataDiv.offsetWidth){
this._owner._rowResizer.style.width=this._gridDataDiv.offsetWidth+"px";
}
}else{
this._owner._rowResizer.style.width=_104.get_element().offsetWidth+"px";
this._owner._rowResizer.style.left=Telerik.Web.UI.Grid.FindPosX(_101)+"px";
}
}
this._owner._rowResizer.style.top=Telerik.Web.UI.Grid.GetEventPosY(e)-(Telerik.Web.UI.Grid.GetEventPosY(e)-e.clientY)+document.body.scrollTop+document.documentElement.scrollTop+"px";
var _106=document.body;
_106.appendChild(this._owner._rowResizer);
}
},_destroyRowResizer:function(){
if((this._owner._rowResizer!="undefined")&&(this._owner._rowResizer!=null)&&(this._owner._rowResizer.parentNode!=null)){
var _107=this._owner._rowResizer.parentNode;
_107.removeChild(this._owner._rowResizer);
this._owner._rowResizer=null;
this._owner._rowResizerRefTable=null;
}
},_onResizeMouseDownHandler:function(e){
var _109=Telerik.Web.UI.Grid.GetCurrentElement(e);
if(_109){
$clearHandlers(_109);
}
this._createRowResizer(e);
Telerik.Web.UI.Grid.ClearDocumentEvents();
this._onResizeMouseUpDelegate=Function.createDelegate(this,this._onResizeMouseUpHandler);
$telerik.addExternalHandler(document,"mouseup",this._onResizeMouseUpDelegate);
},_onResizeMouseUpHandler:function(e){
$telerik.removeExternalHandler(document,"mouseup",this._onResizeMouseUpDelegate);
this._destroyRowResizerAndResizeRow(e,true);
Telerik.Web.UI.Grid.RestoreDocumentEvents();
}};
Telerik.Web.UI.GridItemResizer.registerClass("Telerik.Web.UI.GridItemResizer",null,Sys.IDisposable);
Telerik.Web.UI.GridDataItem=function(_10b){
Telerik.Web.UI.GridDataItem.initializeBase(this,[_10b]);
this._owner={};
this._data={};
this._selected=false;
this._expanded=false;
this._display=false;
this._dataKeyValue=null;
this._dataItem=null;
this._itemIndexHierarchical="";
};
Telerik.Web.UI.GridDataItem.prototype={initialize:function(){
Telerik.Web.UI.GridDataItem.callBaseMethod(this,"initialize");
},dispose:function(){
this._owner._owner.raise_rowDestroying(new Telerik.Web.UI.GridDataItemEventArgs(this.get_element(),null));
if(this.get_element()){
$clearHandlers(this.get_element());
this._element.control=null;
}
Telerik.Web.UI.GridDataItem.callBaseMethod(this,"dispose");
},get_owner:function(){
return this._owner;
},get_cell:function(_10c){
return this._owner.getCellByColumnUniqueName(this,_10c);
},get_dataItem:function(){
return this._dataItem;
},findControl:function(id){
return $telerik.findControl(this.get_element(),id);
},findElement:function(id){
return $telerik.findElement(this.get_element(),id);
},getDataKeyValue:function(_10f){
var _110=this.get_element().id.split("__")[1];
var _111=null;
if(this._owner._owner._clientKeyValues&&this._owner._owner._clientKeyValues[_110]){
_111=this._owner._owner._clientKeyValues[_110];
}
return (_111)?_111[_10f]:null;
},get_selected:function(){
return this._selected;
},set_selected:function(_112){
if(this._selected!=_112){
var e={"ctrlKey":false};
if(!this._owner._owner._selection._selectRowInternal(this.get_element(),e,true,true,true)){
return;
}
this._selected=_112;
}
},get_expanded:function(){
return this._expanded;
},set_expanded:function(_114){
if(this._expanded!=_114){
if(_114&&!this._owner.expandItem(this.get_element())){
return;
}
if(!_114&&!this._owner.collapseItem(this.get_element())){
return;
}
this._expanded=_114;
}
},get_nestedViews:function(){
var _115=[];
var _116=Telerik.Web.UI.Grid.GetNodeNextSiblingByTagName(this.get_element(),"tr");
if(_116){
var _117=this.get_owner().get_element().id.split("Detail").length;
var _118=_116.getElementsByTagName("table");
for(var i=0,len=_118.length;i<len;i++){
var _11b=_118[i];
if(_11b.id.indexOf("Detail")!=-1&&_11b.id.indexOf("_mainTable")==-1&&_117+1==_11b.id.split("Detail").length){
var _11c=$find(_11b.id);
if(_11c){
Array.add(_115,_11c);
}
}
}
}
return _115;
},get_display:function(){
return this._display;
},set_display:function(_11d){
if(this._display!=_11d){
this._display=_11d;
}
}};
Telerik.Web.UI.GridDataItem.registerClass("Telerik.Web.UI.GridDataItem",Sys.UI.Control);
Telerik.Web.UI.GridScrolling=function(){
Telerik.Web.UI.GridScrolling.initializeBase(this);
this._owner={};
this._onGridScrollDelegate=null;
};
Telerik.Web.UI.GridScrolling.prototype={initialize:function(){
Telerik.Web.UI.GridScrolling.callBaseMethod(this,"initialize");
this.AllowScroll=this._owner.ClientSettings.Scrolling.AllowScroll;
this.UseStaticHeaders=this._owner.ClientSettings.Scrolling.UseStaticHeaders;
this._initializeDimensions();
this._initializeScroll();
},updated:function(){
Telerik.Web.UI.GridScrolling.callBaseMethod(this,"updated");
},dispose:function(){
if(this._onResizeDelegate){
try{
$removeHandler(window,"resize",this._onResizeDelegate);
this._onResizeDelegate=null;
}
catch(e){
}
}
if(this._onGridFrozenScrollDelegate){
$removeHandler(this._frozenScroll,"scroll",this._onGridFrozenScrollDelegate);
this._onGridFrozenScrollDelegate=null;
}
if(this._onGridScrollDelegate){
if(this._owner.GridDataDiv){
$removeHandler(this._owner.GridDataDiv,"scroll",this._onGridScrollDelegate);
}
if(this._owner.GridHeaderDiv){
$removeHandler(this._owner.GridHeaderDiv,"scroll",this._onGridScrollDelegate);
}
this._onGridScrollDelegate=null;
}
if(this._frozenScroll){
$clearHandlers(this._frozenScroll);
}
Telerik.Web.UI.GridScrolling.callBaseMethod(this,"dispose");
},_initializeDimensions:function(){
var _11e=this;
this.onWindowResize();
this.initializeAutoLayout();
this.applyFrozenScroll();
if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1){
this._onResizeDelegate=Function.createDelegate(this,this.onWindowResize);
setTimeout(function(){
$addHandler(window,"resize",_11e._onResizeDelegate);
},0);
}else{
this._onResizeDelegate=Function.createDelegate(this,this.onWindowResize);
$addHandler(window,"resize",this._onResizeDelegate);
}
if(this._owner.ClientSettings.Scrolling.FrozenColumnsCount>0){
if(this._owner.ClientSettings.Resizing.AllowRowResize){
this._owner.ClientSettings.Scrolling.FrozenColumnsCount++;
}
if(this._owner.MasterTableViewHeader&&this._owner.MasterTableViewHeader._data._columnsData){
for(var i=0,_120=this._owner.MasterTableViewHeader._data._columnsData.length;i<_120;i++){
if(this._owner.MasterTableViewHeader._data._columnsData[i].ColumnType=="GridExpandColumn"){
this._owner.ClientSettings.Scrolling.FrozenColumnsCount++;
}
}
}
}
},applyFrozenScroll:function(){
this.isFrozenScroll=false;
this._frozenScroll=$get(this._owner.ClientID+"_Frozen");
var _121=Telerik.Web.UI.Grid.getScrollBarHeight();
if(this._frozenScroll){
var _122=$get(this._owner.ClientID+"_FrozenScroll");
this._onGridFrozenScrollDelegate=Function.createDelegate(this,this.onGridFrozenScroll);
$addHandler(this._frozenScroll,"scroll",this._onGridFrozenScrollDelegate);
if(this._owner.get_masterTableView().get_element().offsetWidth>this._owner.GridDataDiv.clientWidth){
if($telerik.isIE){
_121=_121+1;
}
this._frozenScroll.style.height=_121+"px";
_122.style.width=this._owner.GridDataDiv.scrollWidth+"px";
_122.style.height=_121+"px";
if(this._owner.ClientSettings.Scrolling.SaveScrollPosition&&this._owner.ClientSettings.Scrolling.ScrollLeft!=""){
this._frozenScroll.scrollLeft=this._owner.ClientSettings.Scrolling.ScrollLeft;
}
if(this._owner.GridDataDiv.style.overflowX!=null){
this._owner.GridDataDiv.style.overflowX="hidden";
}else{
this._frozenScroll.style.marginTop="-"+_121+"px";
this._frozenScroll.style.zIndex=99999;
this._frozenScroll.style.position="relative";
}
if(window.netscape&&!window.opera){
this._frozenScroll.style.width=this._owner.GridDataDiv.offsetWidth-_121+"px";
}
if(this._owner.GridHeaderDiv&&this._owner.GridDataDiv){
if((this._owner.GridDataDiv.clientWidth==this._owner.GridDataDiv.offsetWidth)){
if(typeof (this._frozenScroll.style.overflowX)!="undefined"&&typeof (this._frozenScroll.style.overflowY)!="undefined"){
this._frozenScroll.style.overflowX="auto";
this._frozenScroll.style.overflowY="hidden";
if(window.netscape){
this._frozenScroll.style.width=parseInt(this._frozenScroll.style.width)+_121+"px";
}
}
}
}
this.isFrozenScroll=true;
}else{
this._frozenScroll.style.height="";
_122.style.width="";
this._owner.GridDataDiv.style.overflow="auto";
this.isFrozenScroll=false;
}
}
},onGridFrozenScroll:function(args){
if(!this._frozenScrollCounter){
this._frozenScrollCounter=0;
}
this._frozenScrollCounter++;
var _124=this;
_124._currentElement=Telerik.Web.UI.Grid.GetCurrentElement(args);
Telerik.Web.UI.Grid.frozenScrollHanlder=function(_125){
if(_124._frozenScrollCounter!=_125){
return;
}
if(!_124._lastScrollIndex){
_124._lastScrollIndex=0;
}
var _126=_124._currentElement;
if(_124._owner.ClientSettings.Scrolling.FrozenColumnsCount>_124._owner.get_masterTableViewHeader().get_columns().length){
_124.isFrozenScroll=false;
}
if(_124.isFrozenScroll){
var _127=_124._owner.get_masterTableView().get_columns()[_124._owner.ClientSettings.Scrolling.FrozenColumnsCount-1].get_element();
var _128=Telerik.Web.UI.Grid.FindPosX(_127)-Telerik.Web.UI.Grid.FindScrollPosX(_127)+document.documentElement.scrollLeft+document.body.scrollLeft+_127.offsetWidth;
var _129=_126.scrollWidth-_128;
_124._owner.notFrozenColumns=[];
var _12a=_124._owner.get_masterTableView()._getFirstDataRow();
for(var i=_124._owner.ClientSettings.Scrolling.FrozenColumnsCount;i<_124._owner.get_masterTableView().get_columns().length;i++){
var _12c=_124._owner.get_masterTableView().get_columns()[i];
var _12d=false;
if((window.netscape||$telerik.isSafari)&&_12c.get_element().style.display=="none"){
_12c.get_element().style.display="table-cell";
_12d=true;
}
var _12e=(_12c.get_element().offsetWidth>0)?_12c.get_element().offsetWidth:_12a.cells[i].offsetWidth;
_124._owner.notFrozenColumns[_124._owner.notFrozenColumns.length]={Index:i,Width:_12e};
if((window.netscape||$telerik.isSafari)&&_12d){
_12c.get_element().style.display="none";
_12d=false;
}
}
var _12f=Telerik.Web.UI.Grid.getScrollBarHeight();
if(window.netscape&&!window.opera){
_12f=0;
}
var _130=Math.ceil(_126.scrollLeft/(_126.scrollWidth-(1.5*_127.offsetWidth))*100);
var _131=0;
var i=0;
while(i<_124._owner.notFrozenColumns.length-1){
var _12c=_124._owner.notFrozenColumns[i];
var _132=Math.floor(_12c.Width/_129*100);
if(_132+_131<=_130){
if(!_124._owner.get_masterTableView().get_columns()[_12c.Index].FrozenDisplay){
_124._owner.get_masterTableView().get_columns()[_12c.Index].FrozenDisplay=true;
}
if(typeof (_124._owner.get_masterTableView().get_columns()[_12c.Index].FrozenDisplay)=="boolean"&&!_124._owner.get_masterTableView().get_columns()[_12c.Index].FrozenDisplay){
i++;
continue;
}
_124._owner.get_masterTableViewHeader()._hideNotFrozenColumn(_12c.Index);
_131+=_132;
}else{
if(!_124._owner.get_masterTableView().get_columns()[_12c.Index].FrozenDisplay){
_124._owner.get_masterTableView().get_columns()[_12c.Index].FrozenDisplay=false;
}
if(typeof (_124._owner.get_masterTableView().get_columns()[_12c.Index].FrozenDisplay)=="boolean"&&_124._owner.get_masterTableView().get_columns()[_12c.Index].FrozenDisplay){
i++;
continue;
}
_124._owner.get_masterTableViewHeader()._showNotFrozenColumn(_12c.Index);
}
i++;
}
_124._owner.get_masterTableView().get_element().style.width=_124._owner.get_masterTableViewHeader().get_element().offsetWidth+"px";
if(_124._owner.get_masterTableViewFooter()){
_124._owner.get_masterTableViewFooter().get_element().style.width=_124._owner.get_masterTableViewHeader().get_element().offsetWidth+"px";
}
}else{
_124._owner.GridDataDiv.scrollLeft=_126.scrollLeft;
}
_124._frozenScrollCounter=0;
};
setTimeout("Telerik.Web.UI.Grid.frozenScrollHanlder("+this._frozenScrollCounter+")",0);
},onWindowResize:function(){
this.setHeaderAndFooterDivsWidth();
this.setDataDivHeight();
if(this.isFrozenScroll){
this.applyFrozenScroll();
}
},setHeaderAndFooterDivsWidth:function(){
if(!this._owner.MasterTableView){
return;
}
if(this._owner.GridDataDiv&&this._owner.GridHeaderDiv){
if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1){
if(this._owner.GridDataDiv.offsetWidth>0&&(this._owner.MasterTableView.get_element().offsetWidth>=this._owner.get_element().offsetWidth-Telerik.Web.UI.Grid.getScrollBarHeight()||this._owner.MasterTableView.get_element().offsetHeight>this._owner.GridDataDiv.offsetHeight)&&(document.compatMode&&document.compatMode!="BackCompat")){
var _133=this._owner.GridDataDiv.offsetWidth-Telerik.Web.UI.Grid.getScrollBarHeight();
if(_133>0){
this._owner.GridHeaderDiv.style.width=_133+"px";
}
}else{
if(this._owner.GridDataDiv.offsetWidth>0){
this._owner.GridHeaderDiv.style.width=this._owner.GridDataDiv.offsetWidth+"px";
}
}
}
var _134=Telerik.Web.UI.Grid.IsRightToLeft(this._owner.GridHeaderDiv);
if(this._owner.MasterTableView.get_element().offsetWidth>=this._owner.get_element().offsetWidth-Telerik.Web.UI.Grid.getScrollBarHeight()||this._owner.MasterTableView.get_element().offsetHeight>this._owner.GridDataDiv.offsetHeight||navigator.userAgent.toLowerCase().indexOf("msie")==-1){
if((!_134&&this._owner.GridHeaderDiv&&parseInt(this._owner.GridHeaderDiv.style.paddingRight)!=Telerik.Web.UI.Grid.getScrollBarHeight())||(_134&&this._owner.GridHeaderDiv&&parseInt(this._owner.GridHeaderDiv.style.paddingLeft)!=Telerik.Web.UI.Grid.getScrollBarHeight())||(navigator.userAgent.toLowerCase().indexOf("firefox/3")!=-1)){
if(!_134){
if(navigator.userAgent.toLowerCase().indexOf("firefox/3")!=-1){
this._owner.GridHeaderDiv.style.marginRight=Telerik.Web.UI.Grid.getScrollBarHeight()+"px";
this._owner.GridHeaderDiv.style.marginLeft="";
this._owner.GridHeaderDiv.style.paddingRight="";
}else{
this._owner.GridHeaderDiv.style.paddingRight=Telerik.Web.UI.Grid.getScrollBarHeight()+"px";
this._owner.GridHeaderDiv.style.paddingLeft="";
}
}else{
if(navigator.userAgent.toLowerCase().indexOf("firefox/3")!=-1){
this._owner.GridHeaderDiv.style.marginLeft=Telerik.Web.UI.Grid.getScrollBarHeight()+"px";
this._owner.GridHeaderDiv.style.marginRight="";
this._owner.GridHeaderDiv.style.paddingLeft="";
}else{
this._owner.GridHeaderDiv.style.paddingLeft=Telerik.Web.UI.Grid.getScrollBarHeight()+"px";
this._owner.GridHeaderDiv.style.paddingRight="";
}
}
}
}else{
this._owner.GridHeaderDiv.style.paddingLeft="";
this._owner.GridHeaderDiv.style.paddingRight="";
}
if(this._owner.GridHeaderDiv&&this._owner.GridDataDiv){
var _135=this;
setTimeout(function(){
if(_135._owner.GridDataDiv.clientWidth==_135._owner.GridDataDiv.offsetWidth){
_135._owner.GridHeaderDiv.style.width="100%";
if(!_134){
_135._owner.GridHeaderDiv.style.paddingRight="";
}else{
_135._owner.GridHeaderDiv.style.paddingLeft="";
}
}
if(_135._owner.GridFooterDiv){
_135._owner.GridFooterDiv.style.paddingRight=_135._owner.GridHeaderDiv.style.paddingRight;
_135._owner.GridFooterDiv.style.paddingLeft=_135._owner.GridHeaderDiv.style.paddingLeft;
_135._owner.GridFooterDiv.style.width=_135._owner.GridHeaderDiv.style.width;
_135._owner.GridFooterDiv.style.marginRight=_135._owner.GridHeaderDiv.style.marginRight;
_135._owner.GridFooterDiv.style.marginLeft=_135._owner.GridHeaderDiv.style.marginLeft;
}
if(_135._owner._groupPanel&&_135._owner._groupPanel._items.length>0&&navigator.userAgent.toLowerCase().indexOf("msie")!=-1){
if(_135._owner.MasterTableView&&_135._owner.get_masterTableViewHeader()){
_135._owner.MasterTableView.get_element().style.width=_135._owner.get_masterTableViewHeader().get_element().offsetWidth+"px";
}
}
},0);
}
}
},setDataDivHeight:function(){
if(this._owner.GridDataDiv&&this._owner.get_element().style.height!=""){
this._owner.GridDataDiv.style.height="10px";
var _136=0;
var _137=$get(this._owner._groupPanelClientID);
if(_137){
_136+=_137.offsetHeight;
}
if(this._owner.GridHeaderDiv){
_136+=this._owner.GridHeaderDiv.offsetHeight;
}
if(this._owner.GridFooterDiv){
_136+=this._owner.GridFooterDiv.offsetHeight;
}
if(this._owner.PagerControl){
_136+=this._owner.PagerControl.offsetHeight;
}
if(this._owner.TopPagerControl){
_136+=this._owner.TopPagerControl.offsetHeight;
}
if(this._owner.ClientSettings.Scrolling.FrozenColumnsCount>0){
_136+=Telerik.Web.UI.Grid.getScrollBarHeight();
}
var _138=this._owner.get_element().clientHeight-_136;
if(_138>0){
var _139=this._owner.get_element().style.position;
if(window.netscape){
this._owner.get_element().style.position="absolute";
}
this._owner.GridDataDiv.style.height=_138+"px";
if(window.netscape){
this._owner.get_element().style.position=_139;
}
}
}
},initializeAutoLayout:function(){
if(this.AllowScroll&&this.UseStaticHeaders){
if(this._owner.MasterTableView&&this._owner.get_masterTableViewHeader()){
if(this._owner.MasterTableView.get_element().style.tableLayout!="auto"){
return;
}
var _13a=this._owner.MasterTableView._getFirstDataRow();
if(!_13a){
this._owner.MasterTableView.get_element().style.width=this._owner.get_masterTableViewHeader().get_element().offsetWidth+"px";
return;
}
this._owner.MasterTableView.get_element().style.tableLayout=this._owner.get_masterTableViewHeader().get_element().style.tableLayout="auto";
var _13b=this._owner.get_masterTableViewHeader().HeaderRow;
var _13c=0;
if(_13a){
_13c=Math.min(_13b.cells.length,_13a.cells.length);
}
var _13d=0;
for(var i=0;i<_13c;i++){
var col=this._owner.get_masterTableViewHeader().ColGroup.Cols[i];
if(!col){
continue;
}
if(col.width!=""&&!window.netscape){
continue;
}
var _140=_13b.cells[i].offsetWidth;
var _141=0;
if(_13a){
_141=_13a.cells[i].offsetWidth;
}
var _142=(_140>_141)?_140:_141;
if(this._owner.get_masterTableViewFooter()&&this._owner.get_masterTableViewFooter().get_element()){
if(this._owner.get_masterTableViewFooter().get_element().tBodies[0].rows[0]&&this._owner.get_masterTableViewFooter().get_element().tBodies[0].rows[0].cells[i]){
if(this._owner.get_masterTableViewFooter().get_element().tBodies[0].rows[0].cells[i].offsetWidth>_142){
_142=this._owner.get_masterTableViewFooter().get_element().tBodies[0].rows[0].cells[i].offsetWidth;
}
}
}
_13d=_13d+_142;
if(_142<=0){
continue;
}
_13b.cells[i].style.width=_142+"px";
this._owner.MasterTableView.ColGroup.Cols[i].width=_142+"px";
col.width=_142+"px";
if(_13a){
_13a.cells[i].style.width=_142+"px";
}
if(this._owner.get_masterTableViewFooter()&&this._owner.get_masterTableViewFooter().get_element()){
if(this._owner.get_masterTableViewFooter().get_element().tBodies[0].rows[0]&&this._owner.get_masterTableViewFooter().get_element().tBodies[0].rows[0].cells[i]){
this._owner.get_masterTableViewFooter().get_element().tBodies[0].rows[0].cells[i].style.width=_142;
}
}
}
this._owner.MasterTableView.get_element().style.tableLayout=this._owner.get_masterTableViewHeader().get_element().style.tableLayout="fixed";
if(this._owner.get_masterTableViewFooter()&&this._owner.get_masterTableViewFooter().get_element()){
this._owner.get_masterTableViewFooter().get_element().style.tableLayout="fixed";
}
if(window.netscape&&_13d>0){
var _143=_13d+"px";
this._owner.MasterTableView.get_element().style.width=_143;
this._owner.get_masterTableViewHeader().get_element().style.width=_143;
this.onWindowResize();
}
}
}
},initializeSaveScrollPosition:function(){
if(!this._owner.ClientSettings.Scrolling.SaveScrollPosition){
return;
}
if(this._owner.ClientSettings.Scrolling.ScrollTop!=""&&!this._owner.ClientSettings.Scrolling.EnableVirtualScrollPaging){
this._owner.GridDataDiv.scrollTop=this._owner.ClientSettings.Scrolling.ScrollTop;
}
var _144=$get(this._owner.ClientID+"_Frozen");
if(this._owner.ClientSettings.Scrolling.ScrollLeft&&this._owner.ClientSettings.Scrolling.ScrollLeft!=""){
if(this._owner.GridHeaderDiv&&!_144){
this._owner.GridHeaderDiv.scrollLeft=this._owner.ClientSettings.Scrolling.ScrollLeft;
}
if(this._owner.GridFooterDiv&&!_144){
this._owner.GridFooterDiv.scrollLeft=this._owner.ClientSettings.Scrolling.ScrollLeft;
}
if(_144){
_144.scrollLeft=this._owner.ClientSettings.Scrolling.ScrollLeft;
}else{
this._owner.GridDataDiv.scrollLeft=this._owner.ClientSettings.Scrolling.ScrollLeft;
}
}else{
if(!_144&&Telerik.Web.UI.Grid.IsRightToLeft(this._owner.get_masterTableView().get_element())){
if(navigator.userAgent.toLowerCase().indexOf("firefox/3")!=-1&&Telerik.Web.UI.Grid.IsRightToLeft(this._owner.get_element())){
this._owner.GridDataDiv.scrollLeft=0;
}else{
this._owner.GridDataDiv.scrollLeft=this._owner.GridDataDiv.scrollWidth;
}
}
}
},_initializeScroll:function(){
var _145=this;
var _146=function(){
_145.initializeSaveScrollPosition();
};
if(window.netscape&&!window.opera){
window.setTimeout(_146,0);
}else{
_146();
}
this._initializeVirtualScrollPaging();
if(this._owner.GridDataDiv||this._owner.GridHeaderDiv){
this._onGridScrollDelegate=Function.createDelegate(this,this._onGridScroll);
if(this._owner.GridDataDiv){
$addHandlers(this._owner.GridDataDiv,{scroll:this._onGridScrollDelegate});
}
if(this._owner.GridHeaderDiv){
$addHandlers(this._owner.GridHeaderDiv,{scroll:this._onGridScrollDelegate});
}
}
},_hideRadComboBoxes:function(){
if(Telerik.Web.UI.RadComboBox){
var _147=document.getElementsByTagName("div");
var _148=[];
for(var i=0,_14a=_147.length;i<_14a;i++){
var _14b=_147[i];
if(Sys.UI.DomElement.containsCssClass(_14b,"rcbSlide")){
Array.add(_148,_14b);
}
}
for(var i=0,_14a=_148.length;i<_14a;i++){
var _14c=_148[i].getElementsByTagName("div");
if(_14c){
for(var j=0,_14e=_14c.length;j<_14e;j++){
if(_14c[j].id.indexOf("_DropDown")>-1){
var _14f=_14c[j].id.substr(0,_14c[j].id.indexOf("_DropDown"));
var _150=$find(_14f);
if(_150&&_150.get_dropDownVisible()&&Telerik.Web.UI.Grid.IsChildOf(_150.get_element(),this._owner.get_element())){
_150.hideDropDown();
}
}
}
}
}
}
},_onGridScroll:function(e){
if(this._owner._getFilterMenu()){
this._owner._getFilterMenu().hide();
}
this._hideRadComboBoxes();
if(Telerik.Web.UI.RadDatePicker){
var _152=Telerik.Web.UI.RadDatePicker.PopupInstances;
for(var item in _152){
if($find(item)&&(($find(item).get_id().indexOf(this._owner.ClientID+"_"+"gdtcSharedCalendar")>-1)||($find(item).get_id().indexOf(this._owner.ClientID+"_"+"gdtcSharedTimeView")>-1))){
Telerik.Web.UI.RadDatePicker.PopupInstances[item].Hide();
}
}
}
var _154=(e.srcElement)?e.srcElement:e.target;
if(window.opera&&this.isFrozenScroll){
this._owner.GridDataDiv.scrollLeft=this._owner.GridHeaderDiv.scrollLeft=0;
return;
}
if(this.UseStaticHeaders){
this._updateDataDivScrollPos(_154);
}
if(!Telerik.Web.UI.GridSelection){
var _155=this._owner._selectedItemsInternal;
if(_155.length>0){
for(var i=0;i<_155.length;i++){
if(_155!=null){
Array.add(this._owner._selectedIndexes,_155[i].itemIndex);
}
}
}
}
this._owner.updateClientState();
this._owner.raise_scroll(new Telerik.Web.UI.GridScrollEventArgs(this._owner._gridDataDiv));
},_updateDataDivScrollPos:function(_157){
if(!_157){
return;
}
if(!this.isFrozenScroll){
if(this._owner.GridHeaderDiv){
if(_157==this._owner.GridHeaderDiv){
if($telerik.isSafari){
if(this._owner.GridHeaderDiv.scrollLeft&&this._owner.GridHeaderDiv.scrollLeft!=this._owner.GridDataDiv.scrollLeft){
this._owner.GridDataDiv.scrollLeft=this._owner.GridHeaderDiv.scrollLeft;
}
}else{
this._owner.GridDataDiv.scrollLeft=this._owner.GridHeaderDiv.scrollLeft;
}
}
if(_157==this._owner.GridDataDiv){
if($telerik.isSafari){
if(this._owner.GridHeaderDiv.scrollLeft!=this._owner.GridDataDiv.scrollLeft){
this._owner.GridHeaderDiv.scrollLeft=this._owner.GridDataDiv.scrollLeft;
}
}else{
this._owner.GridHeaderDiv.scrollLeft=this._owner.GridDataDiv.scrollLeft;
}
}
}
if(this._owner.GridFooterDiv){
this._owner.GridFooterDiv.scrollLeft=this._owner.GridDataDiv.scrollLeft;
}
}else{
if(this._owner.GridHeaderDiv){
if($telerik.isSafari){
if(this._owner.GridHeaderDiv.scrollLeft&&this._owner.GridHeaderDiv.scrollLeft!=this._owner.GridDataDiv.scrollLeft){
this._owner.GridHeaderDiv.scrollLeft=this._owner.GridDataDiv.scrollLeft;
}
}else{
this._owner.GridHeaderDiv.scrollLeft=this._owner.GridDataDiv.scrollLeft;
}
}
if(this._owner.GridFooterDiv){
this._owner.GridFooterDiv.scrollLeft=this._owner.GridDataDiv.scrollLeft;
}
}
},_initializeVirtualScrollPaging:function(_158){
if(!this._owner.ClientSettings.Scrolling.EnableVirtualScrollPaging){
return;
}
this._scrollCounter=0;
this._currentAJAXScrollTop=0;
if(this._owner.ClientSettings.Scrolling.AJAXScrollTop!=""&&typeof (this._owner.ClientSettings.Scrolling.AJAXScrollTop)!="undefined"){
this._currentAJAXScrollTop=this._owner.ClientSettings.Scrolling.AJAXScrollTop;
}
var _159=this._owner.get_masterTableView().get_currentPageIndex()*this._owner.get_masterTableView().get_pageSize()*20;
var _15a=this._owner.get_masterTableView().get_pageCount()*this._owner.get_masterTableView().get_pageSize()*20;
var _15b=_15a-_159;
var _15c=this._owner.get_masterTableView().get_element();
var _15d=_15c.offsetHeight;
if(!$telerik.isIE&&_158){
if(_15c.style.marginBottom!=""){
_15d=_15d-parseInt(_15c.style.marginBottom);
}
if(_15c.style.marginTop!=""){
_15d=_15d-parseInt(_15c.style.marginTop);
}
}
var _15e=this._owner._gridDataDiv.offsetHeight;
if(!window.opera){
_15c.style.marginTop=_159+"px";
if(_15b>=_15e){
_15c.style.marginBottom=_15b-_15d+"px";
}else{
_15c.style.marginBottom=_15e-_15d+"px";
}
}else{
_15c.style.position="relative";
_15c.style.top=_159+"px";
_15c.style.marginBottom=_15a-_15d+"px";
}
this._owner._gridDataDiv.scrollTop=_159;
this._currentAJAXScrollTop=_159;
this._createScrollerToolTip();
var _15f=Function.createDelegate(this,this._onAjaxScrollHandler);
$addHandler(this._owner._gridDataDiv,"scroll",_15f);
},_createScrollerToolTip:function(){
var _160=$get(this._owner.get_id()+"ScrollerToolTip");
if(!_160){
this._scrollerToolTip=document.createElement("span");
this._scrollerToolTip.id=this._owner.get_id()+"ScrollerToolTip";
this._scrollerToolTip.style.position="absolute";
this._scrollerToolTip.style.zIndex=10000;
this._scrollerToolTip.style.display="none";
if(this._owner.Skin!=""){
this._scrollerToolTip.className=String.format("GridToolTip_{0}",this._owner.Skin);
}
if(!this._owner._embeddedSkin||this._owner.Skin==""){
this._scrollerToolTip.style.border="1px solid";
this._scrollerToolTip.style.backgroundColor="#F5F5DC";
this._scrollerToolTip.style.font="icon";
this._scrollerToolTip.style.padding="2px";
}
document.body.appendChild(this._scrollerToolTip);
}
},_onAjaxScrollHandler:function(e){
var _162=this._owner._gridDataDiv;
if(_162){
this._currentScrollTop=_162.scrollTop;
}
this._scrollCounter++;
var _163=this;
Telerik.Web.UI.Grid.AjaxScrollInternal=function(_164){
if(_163._scrollCounter!=_164){
return;
}
var _165=_163._owner._gridDataDiv;
if(_163._currentAJAXScrollTop!=_165.scrollTop){
if(_163._owner.get_masterTableView().get_currentPageIndex()==_166){
return;
}
_163._owner.get_masterTableView().page(_166+1);
}
_163._scrollCounter=0;
_163._hideScrollerToolTip();
};
this._owner.raise_scroll(new Telerik.Web.UI.GridScrollEventArgs(_162));
var _167=Telerik.Web.UI.Grid.getScrollBarHeight();
var _168=_162.scrollTop/(_162.scrollHeight-_162.offsetHeight+_167);
var _166=Math.round((this._owner.get_masterTableView().get_pageCount()-1)*_168);
window.setTimeout("Telerik.Web.UI.Grid.AjaxScrollInternal("+this._scrollCounter+")",500);
this._showScrollerTooltip(_168,_166);
},_showScrollerTooltip:function(_169,_16a){
var _16b=$get(this._owner.get_id()+"ScrollerToolTip");
if(_16b){
var _16c=this._owner._gridDataDiv;
_16b.style.display="";
_16b.style.top=parseInt(Telerik.Web.UI.Grid.FindPosY(_16c))+Math.round(_16c.offsetHeight*_169)+"px";
_16b.style.left=parseInt(Telerik.Web.UI.Grid.FindPosX(_16c))+_16c.offsetWidth-(_16c.offsetWidth-_16c.clientWidth)-_16b.offsetWidth+"px";
var _16d=this._owner.get_masterTableView().get_pageCount();
this._applyPagerTooltipText(_16b,_16a,_16d);
}
},_applyPagerTooltipText:function(_16e,_16f,_170){
var _171=this._owner.ClientSettings.ClientMessages.PagerTooltipFormatString;
var _172=/\{0[^\}]*\}/g;
var _173=/\{1[^\}]*\}/g;
var _174=((_16f==0)?1:_16f+1);
var _175=_170;
_171=_171.replace(_172,_174).replace(_173,_175);
_16e.innerHTML=_171;
},_hideScrollerToolTip:function(){
var _176=this;
setTimeout(function(){
var _177=$get(_176._owner.get_id()+"ScrollerToolTip");
if(_177&&_177.parentNode){
_177.style.display="none";
}
},200);
}};
Telerik.Web.UI.GridScrolling.registerClass("Telerik.Web.UI.GridScrolling",Sys.Component);
Telerik.Web.UI.GridScrollEventArgs=function(_178){
Telerik.Web.UI.GridScrollEventArgs.initializeBase(this);
this.scrollTop=_178.scrollTop;
this.scrollLeft=_178.scrollLeft;
this.scrollControl=_178;
this.isOnTop=(_178.scrollTop==0)?true:false;
var _179=Telerik.Web.UI.Grid.getScrollBarHeight();
if(_178.clientWidth==_178.scrollWidth){
_179=0;
}
this.isOnBottom=((_178.scrollHeight-_178.offsetHeight+_179)==_178.scrollTop)?true:false;
};
Telerik.Web.UI.GridScrollEventArgs.prototype={get_scrollTop:function(){
return this.scrollTop;
},get_scrollLeft:function(){
return this.scrollLeft;
},get_scrollControl:function(){
return this.scrollControl;
},get_isOnTop:function(){
return this.isOnTop;
},get_isOnBottom:function(){
return this.isOnBottom;
}};
Telerik.Web.UI.GridScrollEventArgs.registerClass("Telerik.Web.UI.GridScrollEventArgs",Sys.EventArgs);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.GridSelection=function(){
Telerik.Web.UI.GridSelection.initializeBase(this);
this._owner={};
this._masterTable=null;
};
Telerik.Web.UI.GridSelection.prototype={initialize:function(){
Telerik.Web.UI.GridSelection.callBaseMethod(this,"initialize");
if(this._owner._masterClientID==null){
return;
}
$addHandlers(this._owner.get_element(),{click:Function.createDelegate(this,this._click)});
this._masterTable=$get(this._owner._masterClientID).tBodies[0];
$addHandlers(this._masterTable,{mousedown:Function.createDelegate(this,this._mousedown)});
$addHandlers(this._masterTable,{mousemove:Function.createDelegate(this,this._mousemove)});
$addHandlers(this._masterTable,{mouseup:Function.createDelegate(this,this._mouseup)});
$telerik.addExternalHandler(document,"mouseup",Function.createDelegate(this,this._mouseup));
if(this._owner._selectedItemsInternal.length>0){
for(var i=0;i<this._owner._selectedItemsInternal.length;i++){
Array.add(this._owner._selectedIndexes,this._owner._selectedItemsInternal[i].itemIndex);
}
}
},updated:function(){
Telerik.Web.UI.GridSelection.callBaseMethod(this,"updated");
},dispose:function(){
if(this._masterTable){
this._masterTable._events=null;
}
this._masterTable=null;
this._owner=null;
Telerik.Web.UI.GridSelection.callBaseMethod(this,"dispose");
},get_owner:function(){
return this._owner;
},set_owner:function(_17b){
this._owner=_17b;
},_mousedown:function(e){
if(this._owner.ClientSettings.Selecting.EnableDragToSelectRows&&this._owner.AllowMultiRowSelection){
this._createRowSelectorArea(e);
}
},_mousemove:function(e){
if(this._owner._isRowDragged()){
this._destroyRowSelectorArea(e);
return;
}
this._resizeRowSelectorArea(e);
},_mouseup:function(e){
this._destroyRowSelectorArea(e);
},_createRowSelectorArea:function(e){
if(e.ctrlKey){
return;
}
var _180=null;
if(e.srcElement){
_180=e.srcElement;
}else{
if(e.target){
_180=e.target;
}
}
if(!_180.tagName){
return;
}
if(_180.tagName.toLowerCase()=="input"||_180.tagName.toLowerCase()=="textarea"||_180.tagName.toLowerCase()=="select"||_180.tagName.toLowerCase()=="option"){
return;
}
if((!this._owner.ClientSettings.Selecting.AllowRowSelect)||(!this._owner.AllowMultiRowSelection)){
return;
}
var _181=Telerik.Web.UI.Grid.GetCurrentElement(e);
if((!_181)||(!Telerik.Web.UI.Grid.IsChildOf(_181,this._owner.get_element()))){
return;
}
this._firstRow=Telerik.Web.UI.Grid.GetFirstParentByTagName(_181,"tr");
if(this._firstRow.id==""){
return;
}
if(!this._rowSelectorArea){
this._rowSelectorArea=document.createElement("span");
this._rowSelectorArea.style.position="absolute";
this._rowSelectorArea.style.zIndex=1000100;
if(this._owner.Skin!=""){
this._rowSelectorArea.className=String.format("GridRowSelector_{0}",this._owner.Skin);
}
if(!this._owner._embeddedSkin||this._owner.Skin==""){
this._rowSelectorArea.style.backgroundColor="navy";
}
if(window.netscape&&!window.opera){
this._rowSelectorArea.style.MozOpacity=1/10;
}else{
if(window.opera||navigator.userAgent.indexOf("Safari")>-1){
this._rowSelectorArea.style.opacity=0.1;
}else{
this._rowSelectorArea.style.filter="alpha(opacity=10);";
}
}
if(this._owner._gridDataDiv){
this._rowSelectorArea.style.top=Telerik.Web.UI.Grid.FindPosY(this._firstRow)-this._owner._gridDataDiv.scrollTop+"px";
this._rowSelectorArea.style.left=Telerik.Web.UI.Grid.FindPosX(this._firstRow)-this._owner._gridDataDiv.scrollLeft+"px";
if(parseInt(this._rowSelectorArea.style.left)<Telerik.Web.UI.Grid.FindPosX(this._owner.get_element())){
this._rowSelectorArea.style.left=Telerik.Web.UI.Grid.FindPosX(this._owner.get_element())+"px";
}
}else{
this._rowSelectorArea.style.top=Telerik.Web.UI.Grid.FindPosY(this._firstRow)+"px";
this._rowSelectorArea.style.left=Telerik.Web.UI.Grid.FindPosX(this._firstRow)+"px";
}
document.body.appendChild(this._rowSelectorArea);
Telerik.Web.UI.Grid.ClearDocumentEvents();
}
},_destroyRowSelectorArea:function(e){
if(this._rowSelectorArea){
var _183=this._rowSelectorArea.style.height;
document.body.removeChild(this._rowSelectorArea);
this._rowSelectorArea=null;
Telerik.Web.UI.Grid.RestoreDocumentEvents();
var _184=Telerik.Web.UI.Grid.GetCurrentElement(e);
var _185;
if((!_184)||(!Telerik.Web.UI.Grid.IsChildOf(_184,this._owner.get_element()))){
return;
}
var _186=Telerik.Web.UI.Grid.GetFirstParentByTagName(_184,"td");
if((_184.tagName.toLowerCase()=="td")||(_184.tagName.toLowerCase()=="tr")||(_186&&_186.tagName.toLowerCase()=="td")){
if(_184.tagName.toLowerCase()=="td"){
_185=_184.parentNode;
}else{
if(_186.tagName.toLowerCase()=="td"){
_185=_186.parentNode;
}else{
if(_184.tagName.toLowerCase()=="tr"){
_185=_184;
}
}
}
if(this._firstRow.parentNode.parentNode.id==_185.parentNode.parentNode.id){
var _187=(this._firstRow.rowIndex<_185.rowIndex)?this._firstRow.rowIndex:_185.rowIndex;
var _188=(_187==this._firstRow.rowIndex)?_185.rowIndex:this._firstRow.rowIndex;
for(var i=_187;i<_188+1;i++){
var _18a=this._firstRow.parentNode.parentNode.rows[i];
if(_18a.id==""){
continue;
}
if(_18a){
if(_183!=""){
var item=$find(_18a.id);
if(item){
item.set_selected(true);
}else{
var _18c=$find(_18a.id.split("__")[0]);
_18c.selectItem(_18a);
}
}
}
}
}else{
}
}
}
},_resizeRowSelectorArea:function(e){
if((this._rowSelectorArea)&&(this._rowSelectorArea.parentNode)){
var _18e=Telerik.Web.UI.Grid.GetCurrentElement(e);
if((!_18e)||(!Telerik.Web.UI.Grid.IsChildOf(_18e,this._owner.get_element()))){
return;
}
var _18f=parseInt(this._rowSelectorArea.style.left);
if(this._owner._gridDataDiv){
var _190=Telerik.Web.UI.Grid.GetEventPosX(e)-this._owner._gridDataDiv.scrollLeft;
}else{
var _190=Telerik.Web.UI.Grid.GetEventPosX(e);
}
var _191=parseInt(this._rowSelectorArea.style.top);
if(this._owner._gridDataDiv){
var _192=Telerik.Web.UI.Grid.GetEventPosY(e)-this._owner._gridDataDiv.scrollTop;
}else{
var _192=Telerik.Web.UI.Grid.GetEventPosY(e);
}
if((_190-_18f-5)>0){
this._rowSelectorArea.style.width=_190-_18f-5+"px";
}
if(this._rowSelectorArea.offsetWidth>this._owner.get_element().offsetWidth){
this._rowSelectorArea.style.width=this._owner.get_element().offsetWidth+"px";
}
if(_192>_191){
if((_192-_191-5)>0){
this._rowSelectorArea.style.height=_192-_191-5+"px";
}
}else{
if((_191-_192-5)>0){
this._rowSelectorArea.style.top=_192-5+"px";
var _193=Telerik.Web.UI.Grid.FindPosY(this._firstRow)-parseInt(this._rowSelectorArea.style.top)-5;
if(_193>0){
if(this._owner._gridDataDiv){
if((this._owner._gridDataDiv.offsetHeight+this._owner._gridDataDiv.offsetTop)>parseInt(this._rowSelectorArea.style.top)+_193){
this._rowSelectorArea.style.height=_193+"px";
}else{
var _194=(this._owner._gridDataDiv.offsetHeight+this._owner._gridDataDiv.offsetTop)-parseInt(this._rowSelectorArea.style.top)-5;
this._rowSelectorArea.style.height=(_194>=0)?_194+"px":0+"px";
}
}else{
this._rowSelectorArea.style.height=_193+"px";
}
}
}
}
}
},_click:function(e){
var el=(e.target)?e.target:e.srcElement;
if(!el.tagName){
return;
}
if(el.tagName.toLowerCase()=="label"&&el.htmlFor){
return;
}
if(this._owner.ClientSettings.Selecting&&this._owner.ClientSettings.Selecting.AllowRowSelect){
var _197=(el.tagName.toLowerCase()=="input"&&el.type.toLowerCase()=="checkbox"&&(el.id&&el.id.indexOf("SelectCheckBox")!=-1));
if((el.tagName.toLowerCase()=="input"&&!_197)||el.tagName.toLowerCase()=="select"||el.tagName.toLowerCase()=="option"||el.tagName.toLowerCase()=="button"||el.tagName.toLowerCase()=="a"||el.tagName.toLowerCase()=="textarea"||el.tagName.toLowerCase()=="img"){
return;
}
if(el.tagName.toLowerCase()!="tr"){
el=Telerik.Web.UI.Grid.GetFirstParentByTagName(el,"tr");
}
var _198=el;
var _199=false;
while(el&&Telerik.Web.UI.Grid.IsChildOf(el,this._owner.get_element())){
if(el.id&&el.id.split("__").length==2){
_199=true;
break;
}
el=Telerik.Web.UI.Grid.GetFirstParentByTagName(el.parentNode,"tr");
}
if(!_199){
el=_198;
}
if(el&&(el.parentNode.parentNode.parentNode==this._owner.get_element()||el.parentNode.parentNode.parentNode==this._owner._gridDataDiv||Array.contains(this._owner.get_detailTables(),$find(el.parentNode.parentNode.id)))&&el.id&&el.id.split("__").length==2){
if(this._owner.get_allowMultiRowSelection()){
if(e.shiftKey&&this._owner._selectedItemsInternal[0]){
var _19a=$get(this._owner._selectedItemsInternal[0].id);
if(_19a.rowIndex>el.rowIndex){
for(var i=el.rowIndex;i<_19a.rowIndex+1;i++){
var tr=_19a.parentNode.parentNode.rows[i];
if(tr.id){
this._selectRowInternal(tr,e,true,false,true);
}
}
}
if(_19a.rowIndex<el.rowIndex){
for(var i=_19a.rowIndex;i<el.rowIndex+1;i++){
var tr=_19a.parentNode.parentNode.rows[i];
if(tr.id){
this._selectRowInternal(tr,e,true,false,true);
}
}
}
return;
}
this._selectRowInternal(el,e,_197,true,true);
}else{
this._selectRowInternal(el,e,false,false,true);
}
}
}
if(this._owner.ClientSettings&&this._owner.ClientSettings.EnablePostBackOnRowClick&&el){
if(el&&el.tagName.toLowerCase()!="tr"){
el=Telerik.Web.UI.Grid.GetFirstParentByTagName(el,"tr");
}
if(el&&el.id!=""&&el.id.split("__").length==2){
var _19d=el.id.split("__")[1];
var _19e=this._owner.ClientSettings.PostBackFunction;
_19e=_19e.replace("{0}",this._owner.UniqueID);
_19e=_19e.replace("{1}","RowClick;"+_19d);
setTimeout(function(){
eval(_19e);
},100);
}
}
},_selectRowInternal:function(_19f,e,_1a1,_1a2,_1a3,_1a4){
if(typeof (_1a4)=="undefined"){
_1a4=true;
}
var _1a5=_19f.id.split("__")[1];
var _1a6=$find(_19f.id.split("__")[0]);
if(!_1a1){
if(!this._owner.AllowMultiRowSelection||(this._owner.AllowMultiRowSelection&&!e.ctrlKey)){
if(this._owner._selectedItemsInternal.length>0){
var i=this._owner._selectedItemsInternal.length-1;
while(i>=0){
var _1a8=$get(this._owner._selectedItemsInternal[i].id);
if(_1a8==null){
i--;
continue;
}
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(_1a8,e);
this._owner.raise_rowDeselecting(args);
if(args.get_cancel()){
i--;
continue;
}
Sys.UI.DomElement.removeCssClass(_1a8,_1a6._data._selectedItemStyleClass);
if(_1a6._data._selectedItemStyle){
var _1aa=_1a8.style.cssText.toLowerCase().replace(/ /g,"");
var _1ab=_1aa.split(";");
for(var j=0;j<_1ab.length;j++){
if(_1a6._data._selectedItemStyle.toLowerCase().indexOf(_1ab[j])!=-1){
_1ab[j]="";
}
}
_1a8.style.cssText=_1ab.join(";");
}
this._checkClientSelectColumn(_1a8,false);
var item=$find(this._owner._selectedItemsInternal[i].id);
if(item){
item._selected=false;
}
Array.remove(this._owner._selectedItemsInternal,this._owner._selectedItemsInternal[i]);
Array.remove(this._owner._selectedIndexes,this._owner._selectedIndexes[i]);
this._owner.raise_rowDeselected(new Telerik.Web.UI.GridDataItemEventArgs(_1a8,e));
i--;
}
}
var _1ae=Telerik.Web.UI.Grid.getTableHeaderRow(_19f.parentNode.parentNode);
if(_1ae){
this._checkClientSelectColumn(_1ae,false);
}
}
}
if(!Array.contains(this._owner._selectedIndexes,_1a5)){
if(!_1a1||_1a4){
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(_19f,e);
this._owner.raise_rowSelecting(args);
if(args.get_cancel()){
if(_1a1){
this._checkClientSelectColumn(_19f,false);
var _1ae=Telerik.Web.UI.Grid.getTableHeaderRow(_19f.parentNode.parentNode);
if(_1ae){
this._checkClientSelectColumn(_1ae,false);
}
}
return false;
}
Sys.UI.DomElement.addCssClass(_19f,_1a6._data._selectedItemStyleClass);
if(_1a6._data._selectedItemStyle!=""){
_19f.style.cssText=_19f.style.cssText+";"+_1a6._data._selectedItemStyle;
}
Array.add(this._owner._selectedItemsInternal,{"itemIndex":_1a5,"id":_19f.id});
Array.add(this._owner._selectedIndexes,_1a5);
this._checkClientSelectColumn(_19f,true);
var item=$find(_19f.id);
if(item){
item._selected=true;
}
this._owner.raise_rowSelected(new Telerik.Web.UI.GridDataItemEventArgs(_19f,e));
}
}else{
if(_1a2||(_1a1&&!_1a4)){
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(_19f,e);
this._owner.raise_rowDeselecting(args);
if(!args.get_cancel()){
Sys.UI.DomElement.removeCssClass(_19f,_1a6._data._selectedItemStyleClass);
if(_1a6._data._selectedItemStyle){
var _1aa=_19f.style.cssText.toLowerCase().replace(/ /g,"");
var _1ab=_1aa.split(";");
for(var j=0;j<_1ab.length;j++){
if(_1a6._data._selectedItemStyle.toLowerCase().indexOf(_1ab[j])!=-1){
_1ab[j]="";
}
}
_19f.style.cssText=_1ab.join(";");
}
for(var i=0;i<this._owner._selectedItemsInternal.length;i++){
if(this._owner._selectedItemsInternal[i].itemIndex==_1a5){
var item=$find(this._owner._selectedItemsInternal[i].id);
if(item){
item._selected=false;
}
Array.remove(this._owner._selectedItemsInternal,this._owner._selectedItemsInternal[i]);
break;
}
}
for(var i=0;i<this._owner._selectedIndexes.length;i++){
if(this._owner._selectedIndexes[i]==_1a5){
Array.remove(this._owner._selectedIndexes,this._owner._selectedIndexes[i]);
break;
}
}
this._checkClientSelectColumn(_19f,false);
this._owner.raise_rowDeselected(new Telerik.Web.UI.GridDataItemEventArgs(_19f,e));
}
}
}
if(_1a3){
this._owner.updateClientState();
}
return true;
},_checkClientSelectColumn:function(_1af,_1b0){
var _1b1=_1af.getElementsByTagName("input");
for(var i=0;i<_1b1.length;i++){
var _1b3=_1b1[i];
if(_1b3.type.toLowerCase()!="checkbox"){
continue;
}
if(_1b3.id&&_1b3.id.indexOf("SelectCheckBox")!=-1){
_1b3.checked=_1b0;
if($telerik.isSafari){
_1b3.safarichecked=_1b0;
}
}
}
}};
Telerik.Web.UI.GridSelection.registerClass("Telerik.Web.UI.GridSelection",Sys.Component);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.GridTableView=function(_1b4){
Telerik.Web.UI.GridTableView.initializeBase(this,[_1b4]);
this._owner={};
this._data={};
this._dataItems=[];
this._columnsInternal=[];
this._sortExpressions=new Telerik.Web.UI.GridSortExpressions();
this._filterExpressions=new Telerik.Web.UI.GridFilterExpressions();
this._firstDataRow=null;
this._dataSource=null;
this._virtualItemCount=0;
};
Telerik.Web.UI.GridTableView.prototype={initialize:function(){
Telerik.Web.UI.GridTableView.callBaseMethod(this,"initialize");
if(this._data._selectedItemStyleClass==""&&this._data._selectedItemStyle==""){
this._data._selectedItemStyle="background-color:navy;color:white;";
}
if(this._data._renderActiveItemStyleClass==""&&this._data._renderActiveItemStyle==""){
this._data._renderActiveItemStyle="background-color:navy;color:white;";
}
this.ColGroup=Telerik.Web.UI.Grid.GetTableColGroup(this.get_element());
if(this.ColGroup){
this.ColGroup.Cols=Telerik.Web.UI.Grid.GetTableColGroupCols(this.ColGroup);
}
this.PageSize=this._data.PageSize;
this.PageCount=this._data.PageCount;
this.CurrentPageIndex=this._data.CurrentPageIndex;
this._virtualItemCount=this._data.VirtualItemCount;
var _1b5=(this._owner.ClientSettings.Scrolling&&this._owner.ClientSettings.Scrolling.AllowScroll&&this._owner.ClientSettings.Scrolling.UseStaticHeaders);
if((this.get_element().id.indexOf("_Header")!=-1&&_1b5)||(!_1b5&&this.get_element().id.indexOf("_Header")==-1)||(this.get_element().id.indexOf("_Detail")!=-1)){
var _1b6=Telerik.Web.UI.Grid.getTableHeaderRow(this.get_element());
if(!_1b6){
var _1b7=$get(this.get_element().id+"_Header");
if(_1b7){
_1b6=Telerik.Web.UI.Grid.getTableHeaderRow(_1b7);
}
}
this.HeaderRow=_1b6;
var _1b8=this._data._columnsData;
for(var i=0;i<_1b8.length&&_1b6;i++){
if(!_1b6){
continue;
}
var data=_1b8[i];
var cell=_1b6.cells[i];
if(!cell){
continue;
}
this._owner.raise_columnCreating(new Sys.EventArgs());
var _1bc=$create(Telerik.Web.UI.GridColumn,{_owner:this,_data:data},null,null,_1b6.cells[i]);
var args=new Sys.EventArgs();
args.get_column=function(){
return _1bc;
};
Array.add(this._columnsInternal,_1bc);
this._owner.raise_columnCreated(args);
}
}
if(this._owner.get_events().getHandler("rowCreating")||this._owner.get_events().getHandler("rowCreated")){
this.get_dataItems();
}
},dispose:function(){
this._owner.raise_tableDestroying(Sys.EventArgs.Empty);
$clearHandlers(this.get_element());
if(this.get_element().tBodies[0]){
$clearHandlers(this.get_element().tBodies[0]);
}
for(var i=0;i<this._dataItems.length;i++){
if(this._dataItems[i]){
this._dataItems[i].dispose();
this._dataItems[i]=null;
}
}
this._dataItems=[];
if(this.ColGroup!=null&&this.ColGroup.Cols!=null){
this.ColGroup.Cols=null;
}
if(this.ColGroup!=null){
this.ColGroup=null;
}
this._element.control=null;
Telerik.Web.UI.GridTableView.callBaseMethod(this,"dispose");
},get_columns:function(){
return this._columnsInternal;
},showFilterItem:function(){
this._toggleFilterItemVisibility(true);
},hideFilterItem:function(){
this._toggleFilterItemVisibility(false);
},get_isFilterItemVisible:function(){
return this._data.isFilterItemExpanded;
},_toggleFilterItemVisibility:function(_1bf){
var _1c0=this._getTableFilterRow();
if(_1c0&&_1bf!=this._data.isFilterItemExpanded){
if(_1bf){
_1c0.style["display"]="";
}else{
_1c0.style["display"]="none";
}
this._data.isFilterItemExpanded=_1bf;
Array.add(this._owner._expandedFilterItems,this._data.UniqueID+"!");
this._owner.updateClientState();
}
},get_tableFilterRow:function(){
return this._getTableFilterRow();
},_getTableFilterRow:function(){
filterRow=null;
var _1c1=this.get_element();
if(_1c1.tHead){
if(!this.HeaderRow){
return null;
}
var _1c2=(this.HeaderRow)?this.HeaderRow.rowIndex:1;
for(var i=_1c2;i<_1c1.tHead.rows.length;i++){
if(_1c1.tHead.rows[i]!=null){
if(_1c1.tHead.rows[i].cells[0]!=null){
if(_1c1.tHead.rows[i].cells[0].tagName!=null){
if(_1c1.tHead.rows[i].cells[0].tagName.toLowerCase()!="th"){
filterRow=_1c1.tHead.rows[i];
break;
}
}
}
}
}
}else{
if(this._owner.get_masterTableViewHeader()&&this._owner.get_masterTableViewHeader().get_element()){
_1c1=this._owner.get_masterTableViewHeader().get_element();
for(var i=1;i<_1c1.rows.length;i++){
if(_1c1.tHead.rows[i]!=null){
if(_1c1.tHead.rows[i].cells[0]!=null){
if(_1c1.tHead.rows[i].cells[0].tagName!=null){
filterRow=_1c1.tHead.rows[i];
break;
}
}
}
}
}
}
return filterRow;
},get_clientDataKeyNames:function(){
var _1c4=[];
if(this._data.clientDataKeyNames){
_1c4=this._data.clientDataKeyNames;
}
return _1c4;
},get_dataItems:function(){
if(this._dataItems.length>0){
return this._dataItems;
}
var rows=this.get_element().tBodies[0].rows;
for(var i=0,l=rows.length;i<l;i++){
var row=rows[i];
if(!row.id){
continue;
}
var _1c9=$find(row.id);
var data={};
this._owner.raise_rowCreating(new Sys.EventArgs());
var _1cb=false;
for(var j=0;j<this._owner._selectedItemsInternal.length;j++){
if(this._owner._selectedItemsInternal[j].id==row.id){
_1cb=true;
break;
}
}
var _1cd=false;
for(var j=0;j<this._owner._expandedItems.length;j++){
if(this._owner._expandedItems[j]==row.id.split("__")[1]){
_1cd=!_1cd;
break;
}
}
if(!_1c9){
_1c9=$create(Telerik.Web.UI.GridDataItem,{_owner:this,_data:data},null,null,row);
}
_1c9._selected=_1cb;
_1c9._expanded=_1cd;
_1c9._itemIndexHierarchical=row.id.split("__")[1];
this._owner.raise_rowCreated(new Telerik.Web.UI.GridDataItemEventArgs(row,null));
this._dataItems[this._dataItems.length]=_1c9;
}
return this._dataItems;
},get_owner:function(){
return this._owner;
},get_name:function(){
return this._data.Name;
},get_isItemInserted:function(){
return this._data.IsItemInserted;
},_showNotFrozenColumn:function(_1ce){
this._hideShowNotFrozenColumn(_1ce,true);
},_hideNotFrozenColumn:function(_1cf){
this._hideShowNotFrozenColumn(_1cf,false);
},showColumn:function(_1d0){
var args=new Telerik.Web.UI.GridColumnCancelEventArgs(this.get_columns()[_1d0],null);
this._owner.raise_columnShowing(args);
if(args.get_cancel()){
return false;
}
this._hideShowColumn(_1d0,true);
var _1d2=this._data.UniqueID+","+this.get_columns()[_1d0].get_uniqueName();
if(!Array.contains(this._owner._showedColumns,_1d2)){
Array.add(this._owner._showedColumns,_1d2);
}
if(Array.contains(this._owner._hidedColumns,_1d2)){
Array.remove(this._owner._hidedColumns,_1d2);
}
this._owner.updateClientState();
var args=new Telerik.Web.UI.GridColumnEventArgs(this.get_columns()[_1d0],null);
this._owner.raise_columnShown(args);
},hideColumn:function(_1d3){
var args=new Telerik.Web.UI.GridColumnCancelEventArgs(this.get_columns()[_1d3],null);
this._owner.raise_columnHiding(args);
if(args.get_cancel()){
return false;
}
this._hideShowColumn(_1d3,false);
var _1d5=this._data.UniqueID+","+this.get_columns()[_1d3].get_uniqueName();
if(!Array.contains(this._owner._hidedColumns,_1d5)){
Array.add(this._owner._hidedColumns,_1d5);
}
if(Array.contains(this._owner._showedColumns,_1d5)){
Array.remove(this._owner._showedColumns,_1d5);
}
this._owner.updateClientState();
var args=new Telerik.Web.UI.GridColumnEventArgs(this.get_columns()[_1d3],null);
this._owner.raise_columnHidden(args);
},_hideShowColumn:function(_1d6,_1d7){
var _1d7=this.get_columns()[_1d6].Display=_1d7;
if(this.get_columns()[_1d6]._data){
this.get_columns()[_1d6]._data.Display=_1d7;
}
if(this!=this._owner.get_masterTableViewHeader()&&this!=this._owner.get_masterTableViewFooter()&&this!=this._owner.get_masterTableView()){
if(window.netscape){
this._hideShowCol(this,_1d6,_1d7);
}
Telerik.Web.UI.Grid.hideShowCells(this.get_element(),_1d6,_1d7,this.ColGroup.Cols);
this._setHeaderFooterSpan();
return;
}
if(this._owner.get_masterTableViewHeader()){
if(window.netscape){
this._hideShowCol(this._owner.get_masterTableViewHeader(),_1d6,_1d7);
}
Telerik.Web.UI.Grid.hideShowCells(this._owner.get_masterTableViewHeader().get_element(),_1d6,_1d7,this._owner.get_masterTableView().ColGroup.Cols);
}
if(this._owner.get_masterTableView()){
if(window.netscape){
this._hideShowCol(this._owner.get_masterTableView(),_1d6,_1d7);
}
Telerik.Web.UI.Grid.hideShowCells(this._owner.get_masterTableView().get_element(),_1d6,_1d7,this._owner.get_masterTableView().ColGroup.Cols);
}
if(this._owner.get_masterTableViewFooter()){
if(window.netscape){
this._hideShowCol(this._owner.get_masterTableViewFooter(),_1d6,_1d7);
}
Telerik.Web.UI.Grid.hideShowCells(this._owner.get_masterTableViewFooter().get_element(),_1d6,_1d7,this._owner.get_masterTableViewFooter().ColGroup.Cols);
}
this._setHeaderFooterSpan();
},_setHeaderFooterSpan:function(){
var _1d8=this.get_element().tFoot;
var _1d9=this.get_element().tHead;
var span=Math.max(this._getVisibleColumns().length,1);
if(_1d8&&_1d8.rows){
for(var i=0,len=_1d8.rows.length;i<len;i++){
if(_1d8.rows[i].cells&&_1d8.rows[i].cells[0]){
_1d8.rows[i].cells[0].colSpan=span;
}
}
}
if(_1d9&&_1d9.rows){
for(var i=0,len=_1d9.rows.length;i<len;i++){
if(_1d9.rows[i]&&(_1d9.rows[i]==this.get_element().HeaderRow||_1d9.rows[i].cells[0].tagName.toLowerCase()=="th")){
break;
}
if(_1d9.rows[i]&&_1d9.rows[i].cells&&_1d9.rows[i].cells.length>0&&_1d9.rows[i].cells[0]){
_1d9.rows[i].cells[0].colSpan=span;
}
}
}
},_getVisibleColumns:function(){
var _1dd=[];
if(this.get_columns()){
var _1de=this.get_columns();
for(var i=0,len=_1de.length;i<len;i++){
var _1e1=_1de[i];
if(_1e1.get_visible()&&(_1e1.Display==null||_1e1.Display)){
Array.add(_1dd,_1e1);
}
}
}
return _1dd;
},_hideShowCol:function(_1e2,_1e3,_1e4){
if(_1e2&&_1e2.ColGroup&&_1e2.ColGroup.Cols&&_1e2.ColGroup.Cols[_1e3]){
var _1e5=(_1e2.ColGroup.Cols[_1e3].style.display=="")?true:false;
if(_1e5!=_1e4){
_1e2.ColGroup.Cols[_1e3].style.display=(_1e4)?"":"none";
}
}
},_hideShowNotFrozenColumn:function(_1e6,_1e7){
if(this._owner.get_masterTableViewHeader()){
this._owner.get_masterTableViewHeader().get_columns()[_1e6].FrozenDisplay=_1e7;
if(!window.netscape&&navigator.userAgent.toLowerCase().indexOf("safari")==-1){
this._hideShowCol(this._owner.get_masterTableViewHeader(),_1e6,_1e7);
if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1&&navigator.userAgent.toLowerCase().indexOf("6.0")!=-1){
var _1e8=this._owner.get_masterTableViewHeader().get_element().getElementsByTagName("select");
if(_1e8.length>0){
var _1e9=this._owner.get_masterTableViewHeader().get_element();
setTimeout(function(){
for(var i=0,l=_1e9.rows.length;i<l;i++){
var cell=_1e9.rows[i].cells[_1e6];
Telerik.Web.UI.Grid._hideShowSelect(cell,_1e7);
}
},0);
}
}
}else{
Telerik.Web.UI.Grid.hideShowCells(this._owner.get_masterTableViewHeader().get_element(),_1e6,_1e7,this._owner.get_masterTableViewHeader().ColGroup.Cols);
}
}
if(this._owner.get_masterTableView()){
this._owner.get_masterTableView().get_columns()[_1e6].FrozenDisplay=_1e7;
if(!window.netscape&&navigator.userAgent.toLowerCase().indexOf("safari")==-1){
this._hideShowCol(this._owner.get_masterTableView(),_1e6,_1e7);
if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1&&navigator.userAgent.toLowerCase().indexOf("6.0")!=-1){
var _1e8=this._owner.get_masterTableView().get_element().getElementsByTagName("select");
if(_1e8.length>0){
var _1e9=this._owner.get_masterTableView().get_element();
setTimeout(function(){
for(var i=0,l=_1e9.rows.length;i<l;i++){
var cell=_1e9.rows[i].cells[_1e6];
Telerik.Web.UI.Grid._hideShowSelect(cell,_1e7);
}
},0);
}
}
}else{
Telerik.Web.UI.Grid.hideShowCells(this._owner.get_masterTableView().get_element(),_1e6,_1e7,this._owner.get_masterTableView().ColGroup.Cols);
}
}
if(this._owner.get_masterTableViewFooter()){
if(!window.netscape&&navigator.userAgent.toLowerCase().indexOf("safari")==-1){
this._hideShowCol(this._owner.get_masterTableViewFooter(),_1e6,_1e7);
if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1&&navigator.userAgent.toLowerCase().indexOf("6.0")!=-1){
var _1e8=this._owner.get_masterTableViewFooter().get_element().getElementsByTagName("select");
if(_1e8.length>0){
var _1e9=this._owner.get_masterTableViewFooter().get_element();
setTimeout(function(){
for(var i=0,l=_1e9.rows.length;i<l;i++){
var cell=_1e9.rows[i].cells[_1e6];
Telerik.Web.UI.Grid._hideShowSelect(cell,_1e7);
}
},0);
}
}
}else{
Telerik.Web.UI.Grid.hideShowCells(this._owner.get_masterTableViewFooter().get_element(),_1e6,_1e7,this._owner.get_masterTableViewFooter().ColGroup.Cols);
}
}
},hideItem:function(_1f3){
if(!this._canShowHideItem(_1f3)){
return false;
}
var item=null;
if(this.get_element()&&this.get_element().tBodies[0]&&this.get_element().tBodies[0].rows[_1f3]){
item=this.get_element().tBodies[0].rows[_1f3];
}
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(item,null);
this._owner.raise_rowHiding(args);
if(args.get_cancel()){
return false;
}
if(item){
item.style.display="none";
}
if(item&&item.id!=""&&item.id.split("__").length==2){
var _1f6=item.id.split("__")[1];
this._owner._hidedItems+=this.get_id()+","+_1f6+";";
this._owner.updateClientState();
}
var args=new Telerik.Web.UI.GridDataItemEventArgs(item,null);
this._owner.raise_rowHidden(args);
},showItem:function(_1f7){
if(!this._canShowHideItem(_1f7)){
return false;
}
var item=null;
if(this.get_element()&&this.get_element().tBodies[0]&&this.get_element().tBodies[0].rows[_1f7]){
item=this.get_element().tBodies[0].rows[_1f7];
}
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(item,null);
this._owner.raise_rowShowing(args);
if(args.get_cancel()){
return false;
}
if(item){
if(window.netscape){
item.style.display="table-row";
}else{
item.style.display="";
}
}
if(item&&item.id!=""&&item.id.split("__").length==2){
var _1fa=item.id.split("__")[1];
this._owner._showedItems+=this.get_id()+","+_1fa+";";
this._owner.updateClientState();
}
var args=new Telerik.Web.UI.GridDataItemEventArgs(item,null);
this._owner.raise_rowShown(args);
},_canShowHideItem:function(_1fb){
if(isNaN(parseInt(_1fb))){
var _1fc="Row index must be of type \"Number\"!";
alert(_1fc);
return false;
}
if(_1fb<0){
var _1fc="Row index must be non-negative!";
alert(_1fc);
return false;
}
if(this.get_element()&&this.get_element().tBodies[0]&&this.get_element().tBodies[0].rows[_1fb]&&(_1fb>(this.get_element().tBodies[0].rows[_1fb].length-1))){
var _1fc="Row index must be less than rows count!";
alert(_1fc);
return false;
}
return true;
},_getFirstDataRow:function(){
if(this._firstDataRow!=null){
return this._firstDataRow;
}
if(this._dataItems.length>0){
return this._dataItems[0].get_element();
}
var rows=this.get_element().tBodies[0].rows;
for(var i=0,l=rows.length;i<l;i++){
var row=rows[i];
if(row.id!=""&&row.id.split("__").length==2){
this._firstRow=row;
break;
}
}
return this._firstRow;
},_getLastDataRow:function(){
var _201=null;
var rows=this.get_element().tBodies[0].rows;
for(var i=rows.length-1;i>=0;i--){
var row=rows[i];
if(row.id!=""&&row.id.split("__").length==2){
_201=row;
break;
}
}
return _201;
},_getNextDataRow:function(row){
var _206=null;
var rows=this.get_element().tBodies[0].rows;
for(var i=row.sectionRowIndex+1,l=rows.length;i<l;i++){
var row=rows[i];
if(row.id!=""&&row.id.split("__").length==2){
_206=row;
break;
}
}
return _206;
},_getNextNestedDataRow:function(row){
var _20b=null;
var _20c=Telerik.Web.UI.Grid.GetNestedTable(row);
if(_20c){
var rows=_20c.tBodies[0].rows;
for(var i=0;i<rows.length;i++){
var row=rows[i];
if(row.id!=""&&row.id.split("__").length==2){
_20b=row;
break;
}
}
}
return _20b;
},_getPreviousDataRow:function(row){
var _210=null;
var rows=this.get_element().tBodies[0].rows;
for(var i=row.sectionRowIndex-1;i>=0;i--){
var row=rows[i];
if(row.id!=""&&row.id.split("__").length==2){
_210=row;
break;
}
}
return _210;
},_getPreviousNestedDataRow:function(row){
var _214=null;
var _215=Telerik.Web.UI.Grid.GetNestedTable(row);
if(_215){
var rows=_215.tBodies[0].rows;
for(var i=row.sectionRowIndex-1;i>=0;i--){
var row=rows[i];
if(row.id!=""&&row.id.split("__").length==2){
_214=row;
break;
}
}
}
return _214;
},get_parentView:function(){
var _218=null;
if(this.get_id()!=this._owner.get_masterTableView().get_id()){
_218=$find(this.get_parentRow().id.split("__")[0]);
}
return _218;
},get_parentRow:function(){
var _219=null;
if(this.get_id()!=this._owner.get_masterTableView().get_id()){
_219=this.get_element().parentNode.parentNode.previousSibling;
}
return _219;
},get_selectedItems:function(){
var _21a=[];
for(var i=0;i<this._owner._selectedItemsInternal.length;i++){
var _21c=this._owner._selectedItemsInternal[i].id.split("__")[0];
if(_21c==this.get_id()){
var item=$find(this._owner._selectedItemsInternal[i].id);
if(item==null){
if($get(this._owner._selectedItemsInternal[i].id)){
item=$create(Telerik.Web.UI.GridDataItem,{_owner:this,_data:this._data,_selected:true},null,null,$get(this._owner._selectedItemsInternal[i].id));
Array.add(_21a,item);
}
}else{
if(item&&item._owner.get_element().id==this.get_element().id){
Array.add(_21a,item);
}
}
}
}
return _21a;
},selectAllItems:function(){
if(!this._owner.AllowMultiRowSelection){
return;
}
var rows=this.get_element().tBodies[0].rows;
if(!rows){
return;
}
for(var i=0,l=rows.length;i<l;i++){
var row=rows[i];
if(!row.id){
continue;
}
var item=$find(row.id);
if(item){
item.set_selected(true);
}else{
this.selectItem(row);
}
}
},clearSelectedItems:function(){
if(this._owner._selectedItemsInternal.length>0){
var i=this._owner._selectedItemsInternal.length-1;
while(i>=0){
var item=$find(this._owner._selectedItemsInternal[i].id);
if(item){
if(item._owner.get_element().id==this.get_element().id){
item.set_selected(false);
}
}else{
if($get(this._owner._selectedItemsInternal[i].id).parentNode.parentNode.id==this.get_element().id){
this.deselectItem($get(this._owner._selectedItemsInternal[i].id));
}
}
i--;
}
}
},selectItem:function(_225){
_225=this._getRowByIndexOrItemIndexHierarchical(_225);
if(this._owner._selection&&_225&&_225.id){
if(!this._owner.AllowMultiRowSelection){
this.clearSelectedItems();
}
this._owner._selection._selectRowInternal(_225,{"ctrlKey":false},true,false,true);
}
},deselectItem:function(_226){
_226=this._getRowByIndexOrItemIndexHierarchical(_226);
if(this._owner._selection&&_226&&_226.id){
this._owner._selection._selectRowInternal(_226,{"ctrlKey":false},true,true,true);
}
},_getRowByIndexOrItemIndexHierarchical:function(_227){
if(typeof (_227)=="number"){
var row=null;
if(this.get_element().tBodies.length>0){
if(this.get_element().tBodies[0].rows[_227]){
row=this.get_element().tBodies[0].rows[_227];
}
if(row&&(row.id==""||!row.id.endsWith(_227.toString()))){
while(row&&!row.id.endsWith(_227.toString())){
row=this._getNextDataRow(row);
}
}
}
_227=row;
}
if(typeof (_227)=="string"){
_227=$get(this.get_element().id+"__"+_227);
}
return _227;
},reorderColumns:function(_229,_22a){
if(!this._owner.ClientSettings.AllowColumnsReorder){
return;
}
if(this._owner.ClientSettings.ColumnsReorderMethod!=1){
return;
}
var _22b=this.getColumnByUniqueName(_229);
var _22c=this.getColumnByUniqueName(_22a);
if(!_22b||!_22c){
return;
}
var row=_22b.get_element().parentNode;
var _22e=this._getCellIndexByColumnUniqueNameFromTableRowElement(row,_229);
var _22f=this._getCellIndexByColumnUniqueNameFromTableRowElement(row,_22a);
var _230=this._owner.ClientSettings.ReorderColumnsOnClient;
this._owner.ClientSettings.ReorderColumnsOnClient=true;
var _231=this._owner.ClientSettings.ColumnsReorderMethod;
this._owner.ClientSettings.ColumnsReorderMethod=0;
if(_22f>_22e){
var args=new Telerik.Web.UI.GridColumnCancelEventArgs(_22b,null);
this._owner.raise_columnMovingToLeft(args);
if(args.get_cancel()){
return false;
}
while(_22e<_22f){
var col1=this.getColumnUniqueNameByCellIndex(row,_22e+1);
var col2=this.getColumnUniqueNameByCellIndex(row,_22e);
this.swapColumns(col1,col2);
_22e++;
}
var args=new Telerik.Web.UI.GridColumnEventArgs(_22b,null);
this._owner.raise_columnMovedToLeft(args);
}else{
var args=new Telerik.Web.UI.GridColumnCancelEventArgs(_22b,null);
this._owner.raise_columnMovingToRight(args);
if(args.get_cancel()){
return false;
}
while(_22f<_22e){
var col1=this.getColumnUniqueNameByCellIndex(row,_22e-1);
var col2=this.getColumnUniqueNameByCellIndex(row,_22e);
this.swapColumns(col1,col2);
_22e--;
}
var args=new Telerik.Web.UI.GridColumnEventArgs(_22b,null);
this._owner.raise_columnMovedToRight(args);
}
this._owner.ClientSettings.ColumnsReorderMethod=_231;
this._owner.ClientSettings.ReorderColumnsOnClient=_230;
if(!this._owner.ClientSettings.ReorderColumnsOnClient){
var _235=this._owner.ClientSettings.PostBackFunction;
_235=_235.replace("{0}",this._owner.UniqueID);
eval(_235);
return;
}
},swapColumns:function(_236,_237){
var _238=this.getColumnByUniqueName(_236);
var _239=this.getColumnByUniqueName(_237);
if(!_238||!_239){
return;
}
if(!this._owner.ClientSettings.AllowColumnsReorder){
return;
}
if(!_238.get_reorderable()||!_239.get_reorderable()){
return;
}
if(!this._owner.ClientSettings.ReorderColumnsOnClient){
var _23a=this._owner.ClientSettings.PostBackFunction;
_23a=_23a.replace("{0}",this._owner.UniqueID);
_23a=_23a.replace("{1}","ReorderColumns,"+this._data.UniqueID+","+_238.get_uniqueName()+","+_239.get_uniqueName());
eval(_23a);
return;
}
if(this._owner.ClientSettings.ColumnsReorderMethod!=0){
return;
}
var _23b=this._getCellIndexByColumnUniqueNameFromTableRowElement(_238.get_element().parentNode,_236);
var _23c=this._getCellIndexByColumnUniqueNameFromTableRowElement(_239.get_element().parentNode,_237);
var args=new Sys.CancelEventArgs();
args.get_gridSourceColumn=function(){
return _238;
};
args.get_gridTargetColumn=function(){
return _239;
};
this._owner.raise_columnSwapping(args);
if(args.get_cancel()){
return false;
}
if(this.get_id()&&this.get_id().indexOf("Detail")!=-1){
this._reorderColumnsInternal(_236,_237);
}
if(this._owner.get_masterTableViewHeader()){
this._owner.get_masterTableViewHeader()._reorderColumnsInternal(_236,_237);
}
if(this._owner.get_masterTableView()){
this._owner.get_masterTableView()._reorderColumnsInternal(_236,_237);
}
if(this._owner.get_masterTableViewFooter()){
var _23e=(this._owner.ClientSettings.Scrolling&&this._owner.ClientSettings.Scrolling.AllowScroll&&this._owner.ClientSettings.Scrolling.UseStaticHeaders);
if((this.get_id()&&this.get_id().indexOf("Detail")==-1)&&_23e){
this._owner.get_masterTableViewFooter()._reorderFooterInStaticHeaders(_236,_237);
}else{
this._owner.get_masterTableViewFooter()._reorderColumnsInternal(_236,_237);
}
}
var _23f=_239.get_element().UniqueName;
var _240=_238.get_element().UniqueName;
_238.get_element().UniqueName=_23f;
_239.get_element().UniqueName=_240;
_238._data.UniqueName=_23f;
_239._data.UniqueName=_240;
this.get_columns()[_23c]=_239;
this.get_columns()[_23b]=_238;
var args=new Sys.EventArgs();
args.get_gridSourceColumn=function(){
return _238;
};
args.get_gridTargetColumn=function(){
return _239;
};
this._owner.raise_columnSwapped(args);
var _241=this._data.UniqueID+","+_236+","+_237;
Array.add(this._owner._reorderedColumns,_241);
this._owner.updateClientState();
},_reorderFooterInStaticHeaders:function(_242,_243){
for(var i=0;i<this.get_element().rows.length;i++){
var row=this.get_element().rows[i];
var _246=this._getCellByFooterColumnUniqueNameFromTableRowElement(row,_242);
var _247=this._getCellByFooterColumnUniqueNameFromTableRowElement(row,_243);
if(!_246||!_247){
continue;
}
this._reorderControls(_246,_247);
}
},_getCellByFooterColumnUniqueNameFromTableRowElement:function(_248,_249){
for(var i=0,j=this.get_owner().get_masterTableView().get_columns().length;i<j;i++){
if(this.get_owner().get_masterTableView().get_columns()[i].get_element().UniqueName.toUpperCase()==_249.toUpperCase()){
return _248.cells[i];
}
}
return null;
},_reorderColumnsInternal:function(_24c,_24d){
for(var i=0;i<this.get_element().rows.length;i++){
var row=this.get_element().rows[i];
if(!row.id&&row.parentNode.tagName.toLowerCase()=="tbody"){
continue;
}
var _250=this._getCellByColumnUniqueNameFromTableRowElement(row,_24c);
var _251=this._getCellByColumnUniqueNameFromTableRowElement(row,_24d);
if(!_250||!_251){
continue;
}
this._reorderControls(_250,_251);
}
},_reorderControls:function(_252,_253){
var _254=document.createElement("div");
var _255=document.createElement("div");
document.body.appendChild(_254);
document.body.appendChild(_255);
this._moveNodes(_252,_255);
this._moveNodes(_253,_254);
var _256=_252.style.cssText;
var _257=_253.style.cssText;
var css1=_252.className;
var css2=_253.className;
_252.innerHTML=_253.innerHTML="";
this._moveNodes(_255,_253);
this._moveNodes(_254,_252);
this._recreateControls(_252);
this._recreateControls(_253);
_252.style.cssText=_257;
_253.style.cssText=_256;
_252.className=css2;
_253.className=css1;
_254.parentNode.removeChild(_254);
_255.parentNode.removeChild(_255);
},_moveNodes:function(_25a,_25b){
var _25c=_25a.childNodes;
while(_25c.length>0){
_25b.appendChild(_25c[0]);
}
},_recreateControls:function(_25d){
var _25e=_25d.getElementsByTagName("*");
for(var i=0,l=_25e.length;i<l;i++){
var node=_25e[i];
if(typeof (node.id)!="undefined"&&node.id!=""){
var _262=$find(node.id);
if(!_262){
continue;
}
_262._element=$get(node.id);
}
}
},getColumnByUniqueName:function(_263){
for(var i=0;i<this.get_columns().length;i++){
if(this.get_columns()[i].get_element().UniqueName==_263){
return this.get_columns()[i];
}
}
return null;
},getCellByColumnUniqueName:function(_265,_266){
for(var i=0;i<this.get_columns().length;i++){
if(this.get_columns()[i].get_element().UniqueName.toUpperCase()==_266.toUpperCase()){
return _265.get_element().cells[i];
}
}
return null;
},_getCellByColumnUniqueNameFromTableRowElement:function(_268,_269){
for(var i=0;i<this.get_columns().length;i++){
if(this.get_columns()[i].get_element().UniqueName.toUpperCase()==_269.toUpperCase()){
return _268.cells[i];
}
}
return null;
},_getCellIndexByColumnUniqueNameFromTableRowElement:function(_26b,_26c){
for(var i=0;i<this.get_columns().length;i++){
if(this.get_columns()[i].get_element().UniqueName.toUpperCase()==_26c.toUpperCase()){
return i;
}
}
return null;
},getColumnUniqueNameByCellIndex:function(_26e,_26f){
for(var i=0;i<_26e.cells.length;i++){
if(_26e.cells[i].UniqueName&&i==_26f){
return _26e.cells[i].UniqueName;
}
}
return null;
},_sliderClientValueChanged:function(_271,_272){
var _273=$get(_271);
var _274=$find(_272);
if(_273&&_274){
var _275=_274.get_value();
this._applyPagerLabelText(_273,_275,this.get_pageCount());
}
},_applyPagerLabelText:function(_276,_277,_278){
var _279=this._owner.ClientSettings.ClientMessages.PagerTooltipFormatString;
var _27a=/\{0[^\}]*\}/g;
var _27b=/\{1[^\}]*\}/g;
var _27c=((_277==0)?1:_277+1);
var _27d=_278;
_279=_279.replace(_27a,_27c).replace(_27b,_27d);
_276.innerHTML=_279;
},resizeItem:function(_27e,_27f,_280){
if(!this._owner.ClientSettings.Resizing.AllowRowResize){
return;
}
var _281=this.get_element().rows[_27e];
if(_281&&_281.id!=""&&_281.id.split("__").length==2){
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(_281,null);
this._owner.raise_rowResizing(args);
if(args.get_cancel()){
return false;
}
}
var _283=this.get_element().style.tableLayout;
this.get_element().style.tableLayout="";
var _284=this.get_element().parentNode.parentNode.parentNode.parentNode;
var _285=$find(_284.id);
var _286;
if(_285!=null){
_286=_285.get_element().style.tableLayout;
_285.get_element().style.tableLayout="";
}
if(!_280){
if(this.get_element()){
if(this.get_element().rows[_27e]){
if(this.get_element().rows[_27e].cells[0]){
this.get_element().rows[_27e].cells[0].style.height=_27f+"px";
this.get_element().rows[_27e].style.height=_27f+"px";
}
}
}
}else{
if(this.get_element()){
if(this.get_element().tBodies[0]){
if(this.get_element().tBodies[0].rows[_27e]){
if(this.get_element().tBodies[0].rows[_27e].cells[0]){
this.get_element().tBodies[0].rows[_27e].cells[0].style.height=_27f+"px";
this.get_element().tBodies[0].rows[_27e].style.height=_27f+"px";
}
}
}
}
}
this.get_element().style.tableLayout=_283;
if(_285!=null){
_285.get_element().style.tableLayout=_286;
}
if(_281&&_281.id!=""&&_281.id.split("__").length==2){
var _287=_281.id.split("__")[1];
this._owner._resizedItems+=this.get_id()+","+_287+","+_27f+"px"+";";
this._owner.raise_rowResized(new Telerik.Web.UI.GridDataItemEventArgs(_281,null));
}
this._owner.updateClientState();
},resizeColumn:function(_288,_289){
if(!this._validateResizeColumnParams(_288,_289)){
return;
}
if(typeof (_288)=="string"){
_288=parseInt(_288);
}
var args=new Telerik.Web.UI.GridColumnCancelEventArgs(this.get_columns()[_288],null);
this._owner.raise_columnResizing(args);
if(args.get_cancel()){
return false;
}
if(this==this._owner.get_masterTableView()&&this._owner.get_masterTableViewHeader()){
this._owner.get_masterTableViewHeader().resizeColumn(_288,_289);
}
var _28b=this.get_element().clientWidth;
var _28c=this._owner.get_element().clientWidth;
if(this.HeaderRow){
var _28d=this.HeaderRow.cells[_288].scrollWidth-_289;
}
if(window.netscape||$telerik.isOpera||$telerik.isSafari){
if(this.HeaderRow){
if(this.HeaderRow.cells[_288]){
this.HeaderRow.cells[_288].style.width=_289+"px";
}
}
if(this._owner.get_masterTableViewHeader()&&(this.get_id()==this._owner.get_masterTableViewHeader().get_id())){
var _28e=this._owner.get_masterTableView().get_element().tBodies[0].rows[this._owner.ClientSettings.FirstDataRowClientRowIndex];
if(_28e){
if(_28e.cells[_288]){
_28e.cells[_288].style.width=_289+"px";
}
}
if(this._owner.get_masterTableViewFooter()&&this._owner.get_masterTableViewFooter().get_element()){
if(this._owner.get_masterTableViewFooter().get_element().tBodies[0].rows[0]&&this._owner.get_masterTableViewFooter().get_element().tBodies[0].rows[0].cells[_288]){
if(_289>0){
this._owner.get_masterTableViewFooter().get_element().tBodies[0].rows[0].cells[_288].style.width=_289+"px";
}
}
}
}
}
if(this.ColGroup){
if(this.ColGroup.Cols[_288]){
if(_289>0){
this.ColGroup.Cols[_288].width=_289+"px";
}
}
}
if(this._owner.get_masterTableViewHeader()&&(this.get_id()==this._owner.get_masterTableViewHeader().get_id())){
if(this._owner.get_masterTableView().ColGroup){
if(this._owner.get_masterTableView().ColGroup.Cols[_288]){
if(_289>0){
this._owner.get_masterTableView().ColGroup.Cols[_288].width=_289+"px";
}
}
}
if(this._owner.get_masterTableViewFooter()&&this._owner.get_masterTableViewFooter().ColGroup){
if(this._owner.get_masterTableViewFooter().ColGroup.Cols[_288]){
if(_289>0){
this._owner.get_masterTableViewFooter().ColGroup.Cols[_288].width=_289+"px";
}
}
}
}
if(_289.toString().indexOf("px")!=-1){
_289=_289.replace("px","");
}
if(_289.toString().indexOf("%")==-1){
_289=_289+"px";
}
this._owner._resizedColumns+=this._data.UniqueID+","+this.get_columns()[_288].get_uniqueName()+","+_289+";";
this._owner.updateClientState();
if(this._owner.get_masterTableViewHeader()){
this._owner.ClientSettings.Resizing.ResizeGridOnColumnResize=true;
}
if(this._owner.ClientSettings.Resizing.ResizeGridOnColumnResize){
this._resizeGridOnColumnResize(_288,_28d);
}else{
this._noResizeGridOnColumnResize(_28b,_288,_28c);
}
if(this._owner.GroupPanelObject&&this._owner.GroupPanelObject.Items.length>0&&navigator.userAgent.toLowerCase().indexOf("msie")!=-1){
if(this._owner.get_masterTableView()&&this._owner.get_masterTableViewHeader()){
this._owner.get_masterTableView().get_element().style.width=this._owner.get_masterTableViewHeader().get_element().offsetWidth+"px";
}
}
var args=new Telerik.Web.UI.GridColumnEventArgs(this.get_columns()[_288],null);
this._owner.raise_columnResized(args);
if(window.netscape){
this.get_element().style.cssText=this.get_element().style.cssText;
}
},_resizeGridOnColumnResize:function(_28f,_290){
var _291;
var _292;
var _293;
if(this._owner.get_masterTableViewHeader()&&(this.get_id()==this._owner.get_masterTableViewHeader().get_id())){
for(var i=0;i<this.ColGroup.Cols.length;i++){
if(i!=_28f&&this.ColGroup.Cols[i].width==""){
this.ColGroup.Cols[i].width=this.HeaderRow.cells[i].scrollWidth+"px";
this._owner.get_masterTableView().ColGroup.Cols[i].width=this.ColGroup.Cols[i].width;
if(this._owner.get_masterTableViewFooter()&&this._owner.get_masterTableViewFooter().ColGroup){
this._owner.get_masterTableViewFooter().ColGroup.Cols[i].width=this.ColGroup.Cols[i].width;
}
}
}
this.get_element().style.width=(this.get_element().offsetWidth-_290)+"px";
this._owner.get_masterTableView().get_element().style.width=this.get_element().style.width;
if(this._owner.get_masterTableViewFooter()&&this._owner.get_masterTableViewFooter().get_element()){
this._owner.get_masterTableViewFooter().get_element().style.width=this.get_element().style.width;
}
var _295=(this.get_element().scrollWidth>this.get_element().offsetWidth)?this.get_element().scrollWidth:this.get_element().offsetWidth;
var _296=this._owner._gridDataDiv.offsetWidth;
_291=_295+"px";
_292=_296+"px";
_293=this._owner.get_element().offsetHeight+"px";
}else{
if(window.netscape||$telerik.isOpera){
this.get_element().style.width=(this.get_element().offsetWidth-_290)+"px";
this._owner.get_element().style.width=this.get_element().style.width;
}
var _295=(this.get_element().scrollWidth>this.get_element().offsetWidth)?this.get_element().scrollWidth:this.get_element().offsetWidth;
_291=_295+"px";
_292=this._owner.get_element().offsetWidth+"px";
_293=this._owner.get_element().offsetHeight+"px";
}
this._owner._resizedControl+=this._data.UniqueID+","+_291+","+_292+","+_293+";";
this._owner.updateClientState();
},_noResizeGridOnColumnResize:function(_297,_298,_299){
var _29a=(this.get_element().offsetWidth-_299)/this.ColGroup.Cols.length;
var _29b="";
for(var i=_298+1;i<this.ColGroup.Cols.length;i++){
var _29d=0;
if(this.ColGroup.Cols[i].width!=""){
_29d=parseInt(this.ColGroup.Cols[i].width)-_29a;
}
if(this.HeaderRow){
_29d=this.HeaderRow.cells[i].scrollWidth-_29a;
}
this.ColGroup.Cols[i].width="";
if(this._owner.get_masterTableViewHeader()&&this.get_id()==this._owner.get_masterTableViewHeader().get_id()){
this._owner.get_masterTableView().ColGroup.Cols[i].width="";
}
if(this._owner.get_masterTableViewFooter()){
this._owner.get_masterTableViewFooter().ColGroup.Cols[i].width="";
}
}
if(_299>0){
this._owner.get_element().style.width=_299+"px";
}
this.get_element().style.width=_297+"px";
if(this._owner.get_masterTableViewHeader()&&this.get_id()==this._owner.get_masterTableViewHeader().get_id()){
this._owner.get_masterTableView().get_element().style.width=this.get_element().style.width;
}
if(this._owner.get_masterTableViewFooter()){
this._owner.get_masterTableViewFooter().get_element().style.width=this.get_element().style.width;
}
},_validateResizeColumnParams:function(_29e,_29f){
if(isNaN(parseInt(_29e))){
var _2a0="Column index must be of type \"Number\"!";
alert(_2a0);
return false;
}
if(isNaN(parseInt(_29f))){
var _2a0="Column width must be of type \"Number\"!";
alert(_2a0);
return false;
}
if(_29e<0){
var _2a0="Column index must be non-negative!";
alert(_2a0);
return false;
}
if(_29f<0){
var _2a0="Column width must be non-negative!";
alert(_2a0);
return false;
}
if(_29e>(this.get_columns().length-1)){
var _2a0="Column index must be less than columns count!";
alert(_2a0);
return false;
}
if(!this._owner.ClientSettings.Resizing.AllowColumnResize){
return false;
}
if(!this.get_columns()){
return false;
}
if(!this.get_columns()[_29e].get_resizable()){
return false;
}
return true;
},get_pageCount:function(){
return this.PageCount;
},get_pageSize:function(){
return this.PageSize;
},set_pageSize:function(_2a1){
if(this.PageSize!=_2a1){
this.PageSize=_2a1;
this.fireCommand("PageSize",_2a1);
this._updatePager();
}
},get_virtualItemCount:function(){
return this._virtualItemCount;
},set_virtualItemCount:function(_2a2){
if(this._virtualItemCount!=_2a2){
this._virtualItemCount=_2a2;
this.set_currentPageIndex(0);
this._updatePager();
}
},_updatePager:function(){
var _2a3=Math.ceil(this.get_virtualItemCount()/this.get_pageSize());
this.PageCount=_2a3;
var id2=String.format("{0}PCN",this.get_id());
var id3=String.format("{0}FIP",this.get_id());
var id5=String.format("{0}DSC",this.get_id());
var id4=String.format("{0}LIP",this.get_id());
this._populatePagerStatsElements(id2,id3,id4,id5);
id2=String.format("{0}PCNTop",this.get_id());
id3=String.format("{0}FIPTop",this.get_id());
id5=String.format("{0}DSCTop",this.get_id());
id4=String.format("{0}LIPTop",this.get_id());
this._populatePagerStatsElements(id2,id3,id4,id5);
if(this._data.sliderClientID&&this._data.sliderClientID!=""){
var _2a8=$find(this._data.sliderClientID);
if(_2a8!=null){
_2a8.set_maximumValue(this.PageCount-1);
this._applyPagerLabelText($get(this._data.sliderLabelClientID),0,this.get_pageCount());
}
}
if(this._data.sliderTopClientID&&this._data.sliderTopClientID!=""){
var _2a8=$find(this._data.sliderTopClientID);
if(_2a8!=null){
_2a8.set_maximumValue(this.PageCount-1);
this._applyPagerLabelText($get(this._data.sliderTopLabelClientID),0,this.get_pageCount());
}
}
if(this._data.goToPageTextBoxClientID&&this._data.goToPageTextBoxClientID!=""){
var _2a9=$find(this._data.goToPageTextBoxClientID);
if(_2a9!=null){
_2a9.set_maxValue(this.PageCount);
}
}
if(this._data.goToPageTextBoxTopClientID&&this._data.goToPageTextBoxTopClientID!=""){
var _2a9=$find(this._data.goToPageTextBoxTopClientID);
if(_2a9!=null){
_2a9.set_maxValue(this.PageCount);
}
}
if(this._data.changePageSizeTextBoxClientID&&this._data.changePageSizeTextBoxClientID!=""){
var _2a9=$find(this._data.changePageSizeTextBoxClientID);
if(_2a9!=null){
_2a9.set_maxValue(this.get_virtualItemCount());
_2a9.set_value(this.PageSize);
}
}
if(this._data.changePageSizeTextBoxTopClientID&&this._data.changePageSizeTextBoxTopClientID!=""){
var _2a9=$find(this._data.changePageSizeTextBoxTopClientID);
if(_2a9!=null){
_2a9.set_maxValue(this.get_virtualItemCount());
_2a9.set_value(this.PageSize);
}
}
this._generateNumericPager();
},_populatePagerStatsElements:function(id2,id3,id4,id5){
if($get(id2)){
$get(id2).innerHTML=this.PageCount;
}
if($get(id3)){
$get(id3).innerHTML=(this.get_currentPageIndex()+1)*this.get_pageSize()-this.get_pageSize()+1;
}
if($get(id5)){
$get(id5).innerHTML=this.get_virtualItemCount();
}
if($get(id4)){
var _2ae=this.get_virtualItemCount();
var _2af=(this.get_currentPageIndex()+1)*this.get_pageSize();
if(_2af>_2ae){
_2af=_2ae;
}
$get(id4).innerHTML=_2af;
}
if($get(id4)&&$get(id5)){
var _2b0=parseInt($get(id4).innerHTML);
var _2b1=parseInt($get(id5).innerHTML);
if(_2b0>_2b1){
$get(id4).innerHTML=_2b1;
}
}
},_generateNumericPager:function(){
this._populateNumericPagerDiv($get(String.format("{0}NPPHTop",this.get_id())));
this._populateNumericPagerDiv($get(String.format("{0}NPPH",this.get_id())));
},_populateNumericPagerDiv:function(_2b2){
if(_2b2){
_2b2.innerHTML="";
var sb=new Sys.StringBuilder();
var _2b4=1;
var _2b5=10;
if(this.get_currentPageIndex()+1>_2b5){
_2b4=(Math.floor(this.get_currentPageIndex()/_2b5)*_2b5)+1;
}
var end=Math.min(this.PageCount,(_2b4+_2b5)-1);
if(_2b4>_2b5){
sb.append("<a href=\"#\"");
sb.append(String.format(" onclick=\"Telerik.Web.UI.Grid.NavigateToPage('{0}',{1}); return false;\"",this.get_id(),Math.max(_2b4-_2b5,0)));
sb.append(">...</a>&nbsp;");
}
for(var i=_2b4,len=end;i<=len;i++){
if(i==(this.get_currentPageIndex()+1)){
sb.append(String.format("{0}&nbsp;",i));
}else{
sb.append("<a href=\"#\"");
sb.append(String.format(" onclick=\"Telerik.Web.UI.Grid.NavigateToPage('{0}',{1}); return false;\"",this.get_id(),i));
sb.append(String.format(">{0}</a>&nbsp;",i));
}
}
if(end<this.PageCount){
sb.append("<a href=\"#\"");
sb.append(String.format(" onclick=\"Telerik.Web.UI.Grid.NavigateToPage('{0}',{1}); return false;\"",this.get_id(),end+1));
sb.append(">...</a>&nbsp;");
}
_2b2.innerHTML=sb.toString();
}
},get_currentPageIndex:function(){
return this.CurrentPageIndex;
},set_currentPageIndex:function(_2b9,_2ba){
if(this.CurrentPageIndex!=_2b9){
this.CurrentPageIndex=_2b9;
var id1=String.format("{0}CPI",this.get_id());
var id2=String.format("{0}PCN",this.get_id());
var id3=String.format("{0}FIP",this.get_id());
var id4=String.format("{0}LIP",this.get_id());
var id5=String.format("{0}DSC",this.get_id());
var _2c0=String.format("{0}CPITop",this.get_id());
var _2c1=String.format("{0}PCNTop",this.get_id());
var _2c2=String.format("{0}FIPTop",this.get_id());
var _2c3=String.format("{0}LIPTop",this.get_id());
var _2c4=String.format("{0}DSCTop",this.get_id());
if($get(id1)){
$get(id1).innerHTML=_2b9+1;
}
if($get(id3)){
$get(id3).innerHTML=(_2b9+1)*this.get_pageSize()-this.get_pageSize()+1;
}
var _2c5=0;
if($get(id5)){
_2c5=parseInt($get(id5).innerHTML);
}
if($get(id4)){
var _2c6=(_2b9+1)*this.get_pageSize();
if(_2c6>_2c5){
_2c6=_2c5;
}
$get(id4).innerHTML=_2c6;
}
if($get(_2c0)){
$get(_2c0).innerHTML=_2b9+1;
}
if($get(_2c2)){
$get(_2c2).innerHTML=(_2b9+1)*this.get_pageSize()-this.get_pageSize()+1;
}
var _2c5=0;
if($get(_2c4)){
_2c5=parseInt($get(_2c4).innerHTML);
}
if($get(_2c3)){
var _2c6=(_2b9+1)*this.get_pageSize();
if(_2c6>_2c5){
_2c6=_2c5;
}
$get(_2c3).innerHTML=_2c6;
}
this._generateNumericPager();
if(this._data.sliderClientID&&this._data.sliderClientID!=""&&this._data.sliderTopClientID&&this._data.sliderTopClientID!=""){
var _2c7=$find(this._data.sliderClientID);
if(_2c7){
_2c7.set_value(_2b9);
}
_2c7=$find(this._data.sliderTopClientID);
if(_2c7){
_2c7.set_value(_2b9);
}
}
if(this._data.goToPageTextBoxClientID&&this._data.goToPageTextBoxClientID!=""&&this._data.goToPageTextBoxTopClientID&&this._data.goToPageTextBoxTopClientID!=""){
var _2c8=$find(this._data.goToPageTextBoxClientID);
if(_2c8!=null){
_2c8.set_value(_2b9+1);
}
_2c8=$find(this._data.goToPageTextBoxTopClientID);
if(_2c8!=null){
_2c8.set_value(_2b9+1);
}
}
if(!_2ba){
this.fireCommand("Page",_2b9);
}
}
},get_dataSource:function(){
return this._dataSource;
},set_dataSource:function(_2c9){
if(this._dataSource!=_2c9){
this._dataSource=_2c9;
}
},get_allowMultiColumnSorting:function(){
return this._data.AllowMultiColumnSorting;
},set_allowMultiColumnSorting:function(_2ca){
if(this._data.AllowMultiColumnSorting!=_2ca){
this._data.AllowMultiColumnSorting=_2ca;
}
},dataBind:function(){
if(this._dataSource.length>0){
if($telerik.$&&$telerik.$(".rgNoRecords",this.get_element())){
$telerik.$(".rgNoRecords",this.get_element()).css("display","none");
}
if(!this._data.PagerAlwaysVisible){
if(this.get_element().tFoot){
this.get_element().tFoot.style.display="";
}else{
if($get(String.format("{0}_Pager",this.get_id()))){
$get(String.format("{0}_Pager",this.get_id())).style.display="";
}
}
}
}else{
if($telerik.$&&$telerik.$(".rgNoRecords",this.get_element())){
$telerik.$(".rgNoRecords",this.get_element()).css("display","");
}
if(!this._data.PagerAlwaysVisible){
if(this.get_element().tFoot){
this.get_element().tFoot.style.display="none";
}else{
if($get(String.format("{0}_Pager",this.get_id()))){
$get(String.format("{0}_Pager",this.get_id())).style.display="none";
}
}
}
}
var _2cb=this.get_dataItems();
var _2cc=this.get_columns();
var _2cd=($telerik.isOpera)?this.get_element():this.get_element().tBodies[0];
if(this._dataSource.length<_2cb.length||_2cd.rows.length==1){
for(var i=0,l1=_2cb.length;i<l1;i++){
_2cb[i].get_element().style.display="none";
}
}
for(var i=0,l1=this._dataSource.length;i<l1;i++){
var _2d0=_2cb[i];
if(_2d0==null){
var _2d1=_2cd.insertRow(-1);
for(var j=0,l2=_2cc.length;j<l2;j++){
_2d1.insertCell(-1);
}
var _2d4;
if(_2cb.length>0){
var _2d5=_2cb[_2cb.length-1];
_2d4=_2d5.get_id();
}else{
_2d4=String.format("{0}__{1}",this.get_id(),0);
_2d1.className=String.format("GridRow_{0}",this._owner.Skin);
}
if(i==1){
if(this._owner.ClientSettings.EnableAlternatingItems){
_2d1.className=String.format("GridAltRow_{0}",this._owner.Skin);
}else{
_2d1.className=String.format("GridRow_{0}",this._owner.Skin);
}
}
var _2d6=parseInt(_2d4.split("__")[1])+1;
_2d1.id=String.format("{0}__{1}",_2d4.split("__")[0],_2d6);
if(_2cb[_2cb.length-2]){
_2d1.className=_2cb[_2cb.length-2].get_element().className;
}
_2d0=$create(Telerik.Web.UI.GridDataItem,{_owner:this,_data:{},_itemIndexHierarchical:_2d6},null,null,_2d1);
Array.add(this._dataItems,_2d0);
}
if(_2d0.get_element().style.display=="none"){
_2d0.get_element().style.display=($telerik.isIE)?"":"table-row";
}
var _2d7=Array.contains(this._owner._editIndexes,_2d0._itemIndexHierarchical)&&this._data.EditMode=="InPlace";
if(this.get_owner()._clientKeyValues&&this._data&&this._data.clientDataKeyNames){
for(var k=0,len=this._data.clientDataKeyNames.length;k<len;k++){
var _2da=this._data.clientDataKeyNames[k];
var _2db=(this._dataSource[i])?this._dataSource[i][_2da]:null;
if(_2db){
if(this.get_owner()._clientKeyValues[_2d0._itemIndexHierarchical]){
this.get_owner()._clientKeyValues[_2d0._itemIndexHierarchical][_2da]=_2db;
}else{
if(this.get_owner()._clientKeyValues[_2d0._itemIndexHierarchical]!=null){
var obj=this.get_owner()._clientKeyValues[_2d0._itemIndexHierarchical];
obj[_2da]=_2db;
this.get_owner()._clientKeyValues[_2d0._itemIndexHierarchical]=obj;
}else{
var obj=new Object();
obj[_2da]=_2db;
this.get_owner()._clientKeyValues[_2d0._itemIndexHierarchical]=obj;
}
}
}
}
}
if(this._data._dataBindTemplates){
this._fillTemplateEditorsData(_2d0,this._dataSource[i]);
}
for(var j=0,l2=_2cc.length;j<l2;j++){
var _2dd=_2cc[j].get_uniqueName();
var cell=this.getCellByColumnUniqueName(_2d0,_2dd);
if(!cell){
continue;
}
var _2df=_2cc[j]._data.DataField;
if(typeof (_2df)=="undefined"){
_2df=_2dd;
}
var _2e0=this._dataSource[i][_2df];
if(_2e0==null){
_2e0="";
}
if(typeof (_2e0)!="undefined"){
if(_2cc[j]._data.ColumnType=="GridCheckBoxColumn"){
var _2e1=cell.getElementsByTagName("input");
if(_2e1.length>0&&_2e1[0].type=="checkbox"){
_2e1[0].checked=_2e0;
}
this._fillEditorsData(_2d0,_2cc[j],_2e0);
}else{
if(_2cc[j]._data.ColumnType=="GridTemplateColumn"||_2cc[j]._data.ColumnType=="GridButtonColumn"||_2cc[j]._data.ColumnType=="GridEditCommandColumn"||_2cc[j]._data.ColumnType=="GridExpandColumn"||_2cc[j]._data.ColumnType=="GridClientDeleteColumn"||_2cc[j]._data.ColumnType=="GridClientSelectColumn"||_2cc[j]._data.ColumnType=="GridGroupSplitterColumn"){
if(_2cc[j]._data.ColumnType=="GridTemplateColumn"){
if(this._owner._editIndexes.length>0&&Array.contains(this._owner._editIndexes,_2d0._itemIndexHierarchical)){
if(this._data.EditMode!="InPlace"){
cell=this._getEditFormCellByUniqueName(_2d0,_2cc[j]);
}
}
this._fillTemplateEditorsData(_2d0,this._dataSource[i],cell);
}
}else{
if(_2cc[j]._data.ColumnType=="GridHyperLinkColumn"){
var _2e2=cell.getElementsByTagName("a");
if(_2e2.length>0){
var link=_2e2[0];
var _2e4=_2cc[j]._data.DataTextFormatString;
var text=String.format((_2e4=="")?"{0}":_2e4,this._dataSource[i][_2cc[j]._data.DataTextField]);
var _2e6=[];
for(var k=0;k<_2cc[j]._data.DataNavigateUrlFields.length;k++){
var _2df=_2cc[j]._data.DataNavigateUrlFields[k];
if(typeof (this._dataSource[i][_2df])!="number"){
Array.add(_2e6,String.format("'{0}'",this._dataSource[i][_2df]));
}else{
Array.add(_2e6,this._dataSource[i][_2df]);
}
}
var url=eval("String.format('"+_2cc[j]._data.DataNavigateUrlFormatString+"',"+_2e6.join(",")+")");
link.href=url;
link.innerHTML=text;
}
}else{
if(_2cc[j]._data.ColumnType=="GridCalculatedColumn"){
var _2e8="";
if(typeof (_2cc[j]._data.Expression)!="undefined"&&_2cc[j]._data.Expression!=""){
var _2e9=[];
for(var k=0;k<_2cc[j]._data.DataFields.length;k++){
var _2df=_2cc[j]._data.DataFields[k];
Array.add(_2e9,this._dataSource[i][_2df]);
}
var _2ea=eval("String.format('"+_2cc[j]._data.Expression+"',"+_2e9.join(",")+")");
var _2e4=_2cc[j]._data.DataFormatString;
if(_2e4==""){
_2e4="{0}";
}
var _2eb="";
try{
_2eb=eval(_2ea);
}
catch(ex){
}
_2e8=String.localeFormat(_2e4,_2eb);
}
cell.innerHTML=(_2e8!="")?_2e8:"&nbsp;";
}else{
if(!_2d7){
if(typeof (_2cc[j]._data.DataFormatString)!="undefined"&&_2cc[j]._data.DataFormatString!=""){
if(_2e0.toString().indexOf("/Date(")!=-1){
_2e0=new Date(parseInt(_2e0.replace("/Date(","").replace(")/","")));
}
var _2e8=String.localeFormat(_2cc[j]._data.DataFormatString,_2e0);
cell.innerHTML=(_2e8!="")?_2e8:"&nbsp;";
}else{
cell.innerHTML=(_2e0!="")?_2e0:"&nbsp;";
}
}else{
if(this._data.EditMode=="InPlace"){
this._fillEditorsData(_2d0,_2cc[j],_2e0);
}
}
if(this._data.EditMode!="InPlace"){
this._fillEditorsData(_2d0,_2cc[j],_2e0);
}
}
}
}
}
}else{
}
}
var args=new Object();
var _2ed=this._dataSource[i];
args.get_dataItem=function(){
return _2ed;
};
args.get_item=function(){
return _2d0;
};
_2d0._dataItem=_2ed;
this._owner.raise_rowDataBound(args);
}
this._owner.raise_dataBound(Sys.EventArgs.Empty);
for(var i=0,l2=_2cc.length;i<l2;i++){
var _2ee=false;
if(_2cc[i].get_visible()&&_2cc[i].Display==null&&(_2cc[i]._data.Display==null||_2cc[i]._data.Display)){
_2ee=true;
}
if(!_2ee){
this._hideShowColumn(i,_2ee);
}
}
if(this.get_id()==this.get_owner()._masterClientID){
var grid=$find(this.get_owner().get_id());
if(grid._scrolling){
grid._scrolling._initializeVirtualScrollPaging(true);
}
}
},_fillTemplateEditorsData:function(_2f0,_2f1,cell){
var row=null;
if(this._owner._editIndexes.length>0&&Array.contains(this._owner._editIndexes,_2f1._itemIndexHierarchical)){
if(cell==null){
if(_2f0._owner._data.EditMode=="InPlace"){
row=_2f0.get_element();
}else{
row=_2f0.get_element().nextSibling;
}
}
}else{
row=_2f0.get_element();
}
if(!row&&!cell){
return;
}
if(!cell){
if(!row.tagName){
return;
}
if(row.tagName.toLowerCase()!="tr"){
return;
}
}
for(var _2f4 in _2f1){
var _2f5=$telerik.findControl((cell!=null)?cell:row,_2f4);
if(_2f5!=null){
var _2f6=Object.getType(_2f5).getName();
if(_2f6=="Telerik.Web.UI.RadTextBox"||_2f6=="Telerik.Web.UI.RadNumericTextBox"||_2f6=="Telerik.Web.UI.RadMaskedTextBox"){
_2f5.set_value(_2f1[_2f4]);
continue;
}
if(_2f6=="Telerik.Web.UI.RadDateInput"){
_2f5.set_selectedDate(_2f1[_2f4]);
continue;
}
if(_2f6=="Telerik.Web.UI.RadDatePicker"){
_2f5.set_selectedDate(_2f1[_2f4]);
continue;
}
if(_2f6=="Telerik.Web.UI.RadEditor"){
_2f5.set_html(_2f1[_2f4]);
continue;
}
if(_2f6=="Telerik.Web.UI.RadComboBox"){
var item=_2f5.findItemByValue(_2f1[_2f4]);
if(item){
item.select();
}else{
_2f5.set_value(_2f1[_2f4]);
}
continue;
}
}
var _2f8=$telerik.findElement((cell!=null)?cell:row,_2f4);
if(_2f8!=null){
if(_2f8.tagName.toLowerCase()=="input"){
if(_2f8.type!="checkbox"&&_2f8.type!="radio"){
_2f8.value=_2f1[_2f4];
continue;
}else{
_2f8.checked=_2f1[_2f4];
continue;
}
}else{
if(_2f8.tagName.toLowerCase()=="span"){
_2f8.innerHTML=_2f1[_2f4];
continue;
}else{
if(_2f8.tagName.toLowerCase()=="textarea"){
_2f8.innerHTML=_2f1[_2f4];
continue;
}else{
if(_2f8.tagName.toLowerCase()=="select"){
var _2f9=_2f8.options;
for(var k=0;k<_2f9.length;k++){
if(_2f9[k].value==_2f1[_2f4]){
_2f9[k].selected=true;
}
}
}
}
}
}
}
}
},_getEditFormCellByUniqueName:function(_2fb,_2fc){
var cell=null;
var _2fe=_2fb.get_element().nextSibling;
if(_2fe==null){
return;
}
if(!_2fe.tagName){
return;
}
if(_2fe.tagName.toLowerCase()!="tr"){
return;
}
var _2ff=_2fe.getElementsByTagName("td");
for(var i=0,l=_2ff.length;i<l;i++){
if(!_2ff[i].id||_2ff[i].id==""){
continue;
}
var data=_2ff[i].id.split("__");
if(data[data.length-1]&&data[data.length-1]==_2fc.get_uniqueName()){
cell=_2ff[i];
break;
}
}
return cell;
},_fillEditorsData:function(_303,_304,_305){
var type=_304._data.ColumnType;
var cell=null;
if(_304._owner._data.EditMode=="InPlace"){
cell=this.getCellByColumnUniqueName(_303,_304.get_uniqueName());
}else{
cell=this._getEditFormCellByUniqueName(_303,_304);
}
if(cell==null){
return;
}
if(type=="GridBoundColumn"){
var _308=cell.getElementsByTagName("input");
if(_308.length>0){
_308[0].value=_305;
}
}
if(type=="GridDateTimeColumn"){
var _308=cell.getElementsByTagName("input");
for(var k=0;k<_308.length;k++){
var _30a=$find(_308[k].id);
if(_30a!=null){
_30a.set_selectedDate(_305);
}
}
}
if(type=="GridNumericColumn"){
var _308=cell.getElementsByTagName("input");
for(var k=0;k<_308.length;k++){
var _30b=$find(_308[k].id);
if(_30b!=null){
_30b.set_value(_305);
}
}
}
if(type=="GridHTMLEditorColumn"){
var _308=cell.getElementsByTagName("textarea");
for(var k=0;k<_308.length;k++){
var _30b=$find(_308[k].id);
if(_30b!=null){
_30b.set_html(_305);
}
}
}
if(type=="GridDropDownColumn"){
var _308=cell.getElementsByTagName("input");
for(var k=0;k<_308.length;k++){
var _30b=$find(_308[k].id.replace("_Input",""));
if(_30b!=null){
var item=_30b.findItemByValue(_305);
if(item){
item.select();
}
}
}
var _30d=cell.getElementsByTagName("option");
for(var k=0;k<_30d.length;k++){
if(_30d[k].value==_305){
_30d[k].selected=true;
}
}
}
if(type=="GridCheckBoxColumn"){
var _308=cell.getElementsByTagName("input");
if(_308.length==1&&_308[0].type=="checkbox"){
_308[0].checked=_305;
}
}
},extractValuesFromItem:function(_30e){
_30e=this._getRowByIndexOrItemIndexHierarchical(_30e);
var _30f=$find(_30e.id);
var _310=this.get_columns();
var obj={};
for(var i=0,l=_310.length;i<l;i++){
var _314=_310[i];
var _315=_314.get_uniqueName();
var type=_314._data.ColumnType;
var _317=_314._data.DataField;
var cell=this.getCellByColumnUniqueName(_30f,_315);
if(this._data.EditMode!="InPlace"){
var _319=_30e.nextSibling.getElementsByTagName("td");
for(var j=0,k=_319.length;j<k;j++){
if(!_319[j].id||_319[j].id==""){
continue;
}
var data=_319[j].id.split("__");
if(data[data.length-1]&&data[data.length-1]==_314.get_uniqueName()){
cell=_319[j];
break;
}
}
}
if(type=="GridBoundColumn"){
var _31d=cell.getElementsByTagName("input");
if(_31d.length==1){
obj[_317]=_31d[0].value;
}
}
if(type=="GridDateTimeColumn"){
var _31d=cell.getElementsByTagName("input");
for(var k=0;k<_31d.length;k++){
var _31e=$find(_31d[k].id);
if(_31e!=null){
obj[_317]=_31e.get_selectedDate();
}
}
}
if(type=="GridNumericColumn"){
var _31d=cell.getElementsByTagName("input");
for(var k=0;k<_31d.length;k++){
var _31f=$find(_31d[k].id);
if(_31f!=null){
obj[_317]=_31f.get_value();
}
}
}
if(type=="GridHTMLEditorColumn"){
var _31d=cell.getElementsByTagName("textarea");
for(var k=0;k<_31d.length;k++){
var _31f=$find(_31d[k].id);
if(_31f!=null){
obj[_317]=_31f.get_html();
}
}
}
if(type=="GridDropDownColumn"){
var _31d=cell.getElementsByTagName("input");
for(var k=0;k<_31d.length;k++){
var _31f=$find(_31d[k].id.replace("_Input",""));
if(_31f!=null){
obj[_317]=_31f.get_value();
}
}
var _320=cell.getElementsByTagName("select");
if(_320.length>0){
var _321=_320[0];
obj[_317]=_321.options[_321.selectedIndex].value;
}
}
if(type=="GridCheckBoxColumn"){
var _31d=cell.getElementsByTagName("input");
if(_31d.length==1&&_31d[0].type=="checkbox"){
obj[_317]=_31d[0].checked;
}
}
}
return obj;
},extractOldValuesFromItem:function(_322){
_322=this._getRowByIndexOrItemIndexHierarchical(_322);
var _323=$find(_322.id);
var obj={};
if(_323!=null){
obj=_323.get_dataItem();
}
return obj;
},extractKeysFromItem:function(_325){
_325=this._getRowByIndexOrItemIndexHierarchical(_325);
var _326=$find(_325.id);
var obj={};
if(_326!=null){
var _328=_326.get_id().split("__")[1];
if(this._owner._clientKeyValues&&this._owner._clientKeyValues[_328]){
obj=this._owner._clientKeyValues[_328];
}
}
return obj;
},expandItem:function(_329){
_329=this._getRowByIndexOrItemIndexHierarchical(_329);
var _32a=_329.cells[0].getElementsByTagName("input")[0];
if(_32a==undefined){
_32a=_329.cells[0].getElementsByTagName("img")[0];
}
this._ensureExpandCollapseButtons(_32a,false);
return this._expandRow(_329);
},_expandRow:function(_32b){
if(!this._owner.ClientSettings.AllowExpandCollapse){
return false;
}
var _32c=_32b;
var _32d=_32c.id.split("__")[1];
var _32e=_32c.parentNode.rows[_32c.sectionRowIndex+1];
if(_32e&&_32e.style.display=="none"){
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(_32c,null);
args.get_nestedViewItem=function(){
return _32e;
};
this._owner.raise_hierarchyExpanding(args);
if(args.get_cancel()){
return false;
}
var item=$find(_32c.id);
if(item){
item._expanded=true;
}
_32e.style.display=(window.netscape)?"table-row":"";
var args=new Telerik.Web.UI.GridDataItemEventArgs(_32c,null);
args.get_nestedViewItem=function(){
return _32e;
};
this._owner.raise_hierarchyExpanded(args);
Array.add(this._owner._expandedItems,_32d);
this._owner.updateClientState();
}
if(this.get_element().parentNode.parentNode.tagName.toLowerCase()=="tr"){
if(this.get_id()!=this._owner._masterClientID){
var _331=this.get_element().parentNode.parentNode.parentNode.parentNode;
var _332=$find(_331.id);
var _333=_331.rows[this.get_element().parentNode.parentNode.rowIndex-1];
if(_333){
_332._expandRow(_333);
}
}
}
return true;
},collapseItem:function(_334){
_334=this._getRowByIndexOrItemIndexHierarchical(_334);
var _335=_334.cells[0].getElementsByTagName("input")[0];
if(_335==undefined){
_335=_334.cells[0].getElementsByTagName("img")[0];
}
this._ensureExpandCollapseButtons(_335,true);
return this._collapseRow(_334);
},_collapseRow:function(_336){
if(!this._owner.ClientSettings.AllowExpandCollapse){
return false;
}
var _337=_336;
var _338=_337.id.split("__")[1];
var _339=_337.parentNode.rows[_337.sectionRowIndex+1];
if(_339&&_339.style.display!="none"){
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(_337,null);
args.get_nestedViewItem=function(){
return _339;
};
this._owner.raise_hierarchyCollapsing(args);
if(args.get_cancel()){
return false;
}
var item=$find(_337.id);
if(item){
item._expanded=false;
}
_339.style.display="none";
var args=new Telerik.Web.UI.GridDataItemEventArgs(_337,null);
args.get_nestedViewItem=function(){
return _339;
};
this._owner.raise_hierarchyCollapsed(args);
Array.add(this._owner._expandedItems,_338);
this._owner.updateClientState();
}
return true;
},_ensureExpandCollapseButtons:function(_33c,_33d){
if(_33d){
if(_33c.title==this._owner._hierarchySettings.CollapseTooltip){
_33c.title=this._owner._hierarchySettings.ExpandTooltip;
}
if(_33c.src){
var _33e=this.get_columns()[_33c.parentNode.cellIndex];
if(_33e){
_33c.src=_33e._data.ExpandImageUrl;
}
}else{
var _33e=this.get_columns()[_33c.parentNode.cellIndex];
if(_33e){
_33c.className="rgExpand";
}
}
}else{
if(_33c.title==this._owner._hierarchySettings.ExpandTooltip){
_33c.title=this._owner._hierarchySettings.CollapseTooltip;
}
if(_33c.src){
var _33e=this.get_columns()[_33c.parentNode.cellIndex];
if(_33e){
_33c.src=_33e._data.CollapseImageUrl;
}
}else{
var _33e=this.get_columns()[_33c.parentNode.cellIndex];
if(_33e){
_33c.className="rgCollapse";
}
}
}
},_toggleExpand:function(_33f,e){
if(!this._owner.ClientSettings.AllowExpandCollapse){
return;
}
var _341=_33f.parentNode.parentNode;
var _342=_341.parentNode.rows[_341.sectionRowIndex+1];
if(_342.style.display!="none"){
if(!this._collapseRow(_341)){
return false;
}
this._ensureExpandCollapseButtons(_33f,true);
}else{
if(!this._expandRow(_341)){
return false;
}
this._ensureExpandCollapseButtons(_33f,false);
}
},_toggleGroupsExpand:function(_343,e){
var _345=_343;
if(!this._owner.ClientSettings.AllowGroupExpandCollapse){
return;
}
var _346=_345.id.split("__")[0];
var _347=$find(_346);
var _348=_345.id.split("__")[1];
var _349=_345.id.split("__")[2];
var _34a=_345.parentNode.cellIndex;
var _34b=_345.parentNode.parentNode.sectionRowIndex;
var _34c=_347.get_element().tBodies[0];
var _34d=(window.netscape)?"table-row":"";
var _34e="";
var _34f=this.get_columns()[_34a];
var args=new Sys.CancelEventArgs();
if(_345.src){
if(_345.src.indexOf(_34f._data.ExpandImageUrl)==-1){
this._owner.raise_groupCollapsing(args);
}else{
this._owner.raise_groupExpanding(args);
}
}else{
if(_345.className.indexOf("rgExpand")==-1){
this._owner.raise_groupCollapsing(args);
}else{
this._owner.raise_groupExpanding(args);
}
}
if(args.get_cancel()){
return false;
}
if(_34f){
if(_345.src){
if(_345.src.indexOf(_34f._data.ExpandImageUrl)!=-1){
_345.src=_34f._data.CollapseImageUrl;
_345.title=_347._owner._groupingSettings.CollapseTooltip;
_34e=_34d;
}else{
_345.src=_34f._data.ExpandImageUrl;
_345.title=_347._owner._groupingSettings.ExpandTooltip;
_34e="none";
}
}else{
if(_345.className.indexOf("rgExpand")!=-1){
_345.className="rgCollapse";
_345.title=_347._owner._groupingSettings.CollapseTooltip;
_34e=_34d;
}else{
_345.className="rgExpand";
_345.title=_347._owner._groupingSettings.ExpandTooltip;
_34e="none";
}
}
}
var _351=_349;
for(var i=_34b+1;i<_34c.rows.length;i++){
var row=_34c.rows[i];
var btn=this._getGroupExpandButton(row);
if(!btn){
if(_351==_349){
row.style.display=_34e;
}
}else{
_351=btn.id.split("__")[2];
if(_351==_349||(parseInt(_351)<parseInt(_349))){
break;
}else{
if(parseInt(_351)-parseInt(_349)==1){
if(btn.src==_345.src||(_345.className==btn.className)){
if(_34e=="none"){
if(_345.src){
btn.src=_34f._data.CollapseImageUrl;
}else{
btn.className="rgCollapse";
}
}
this._toggleGroupsExpand(btn,e);
}
row.style.display=_34e;
}
}
}
}
Array.add(this._owner._expandedGroupItems,_347._data.UniqueID+"!"+_348);
this._owner.updateClientState();
var args=new Sys.EventArgs();
if(_345.src){
if(_345.src.indexOf(_34f._data.ExpandImageUrl)==-1){
this._owner.raise_groupExpanded(args);
}else{
this._owner.raise_groupCollapsed(args);
}
}else{
if(_345.className.indexOf("rgExpand")==-1){
this._owner.raise_groupExpanded(args);
}else{
this._owner.raise_groupCollapsed(args);
}
}
},_getGroupExpandButton:function(row){
var _356=null;
var _357=row.getElementsByTagName("img");
for(var i=0,l=_357.length;i<l;i++){
var img=_357[i];
if(img.onclick!=null&&img.onclick.toString().indexOf("_toggleGroupsExpand")!=-1){
_356=img;
break;
}
}
var _35b=row.getElementsByTagName("input");
for(var i=0,l=_35b.length;i<l;i++){
var _35c=_35b[i];
if(_35c.onclick!=null&&_35c.onclick.toString().indexOf("_toggleGroupsExpand")!=-1){
_356=_35c;
break;
}
}
return _356;
},editItem:function(_35d){
_35d=this._getRowByIndexOrItemIndexHierarchical(_35d);
var _35e=_35d.id.split("__")[1];
if(!this.fireCommand("Edit",_35e)){
return false;
}
},updateItem:function(_35f){
_35f=this._getRowByIndexOrItemIndexHierarchical(_35f);
var _360=_35f.id.split("__")[1];
if(!this.fireCommand("Update",_360)){
return false;
}
},deleteItem:function(_361){
_361=this._getRowByIndexOrItemIndexHierarchical(_361);
var _362=_361.id.split("__")[1];
if(!this.fireCommand("Delete",_362)){
return false;
}
},rebind:function(){
if(!this.fireCommand("RebindGrid","")){
return false;
}
},insertItem:function(){
if(!this.fireCommand("PerformInsert","")){
return false;
}
},showInsertItem:function(){
if(!this.fireCommand("InitInsert","")){
return false;
}
},cancelInsert:function(){
if(!this.fireCommand("CancelInsert","")){
return false;
}
},sort:function(_363){
var _364=new Telerik.Web.UI.GridSortExpression();
var _365=_363.split(" ")[0];
if(_363.toUpperCase().indexOf(" ASC")!=-1){
_364.set_sortOrder(Telerik.Web.UI.GridSortOrder.Ascending);
}else{
if(_363.toUpperCase().indexOf(" DESC")!=-1){
_364.set_sortOrder(Telerik.Web.UI.GridSortOrder.Descending);
}else{
_364.set_sortOrder(Telerik.Web.UI.GridSortOrder.Ascending);
var id1=String.format("{0}__{1}__SortAsc",this.get_id(),_365);
var id2=String.format("{0}__{1}__SortDesc",this.get_id(),_365);
if($get(id1)){
$get(id1).style.display="";
}
if($get(id2)){
$get(id2).style.display="none";
}
}
}
_364.set_fieldName(_365);
var _368=this._sortExpressions.find(_364.get_fieldName());
if(_368!=null){
var _369=Telerik.Web.UI.GridSortOrder.None;
if(_368.get_sortOrder()==0){
_369=Telerik.Web.UI.GridSortOrder.Ascending;
}else{
if(_368.get_sortOrder()==1){
_369=Telerik.Web.UI.GridSortOrder.Descending;
var id1=String.format("{0}__{1}__SortAsc",this.get_id(),_368.get_fieldName());
var id2=String.format("{0}__{1}__SortDesc",this.get_id(),_368.get_fieldName());
if($get(id1)){
$get(id1).style.display="none";
}
if($get(id2)){
$get(id2).style.display="";
}
}else{
if(_368.get_sortOrder()==2){
this._sortExpressions.remove(_368);
var id1=String.format("{0}__{1}__SortAsc",this.get_id(),_368.get_fieldName());
var id2=String.format("{0}__{1}__SortDesc",this.get_id(),_368.get_fieldName());
if($get(id1)){
$get(id1).style.display="none";
}
if($get(id2)){
$get(id2).style.display="none";
}
}
}
}
_368.set_sortOrder(_369);
}
if(_368==null){
if(!this.get_allowMultiColumnSorting()){
for(var i=0;i<this._sortExpressions._array.length;i++){
var id1=String.format("{0}__{1}__SortAsc",this.get_id(),this._sortExpressions._array[i].get_fieldName());
var id2=String.format("{0}__{1}__SortDesc",this.get_id(),this._sortExpressions._array[i].get_fieldName());
if($get(id1)){
$get(id1).style.display="none";
}
if($get(id2)){
$get(id2).style.display="none";
}
}
this._sortExpressions.clear();
}
this._sortExpressions.add(_364);
}
if(!this.fireCommand("Sort",_363)){
return false;
}
},get_sortExpressions:function(){
return this._sortExpressions;
},filter:function(_36b,_36c,_36d){
var _36e=new Telerik.Web.UI.GridFilterExpression();
var _36f=this.getColumnByUniqueName(_36b);
if(!_36f){
return;
}
var _370=false;
if(typeof (_36d)=="undefined"){
_36d=_36f.get_filterFunction();
_370=true;
}else{
if(typeof (_36d)=="string"){
_36f.set_filterFunction(_36d);
}
}
if(((typeof (_36d)=="Number"&&Telerik.Web.UI.GridFilterFunction.NoFilter==_36d)||(typeof (_36d)=="string"&&Telerik.Web.UI.GridFilterFunction.parse(_36d)==Telerik.Web.UI.GridFilterFunction.NoFilter))&&(_36f.get_filterDelay()!=null||(_36c!=null&&_36c!==""&&_370))){
_36d=(_36f.get_dataType()=="System.String")?"Contains":"EqualTo";
}
var _371=_36f._data.DataField;
_36e.set_fieldName(_371);
_36e.set_columnUniqueName(_36b);
_36e.set_dataTypeName(_36f._data.DataTypeName);
var _372=this._filterExpressions.find(_36e.get_columnUniqueName());
if(_372!=null){
if(Telerik.Web.UI.GridFilterFunction.parse(_36d)==Telerik.Web.UI.GridFilterFunction.NoFilter){
this._filterExpressions.remove(_372);
}
_372.set_filterFunction(_36d);
_372.set_fieldValue(_36c);
}
if(_372==null){
_36e.set_filterFunction(_36d);
_36e.set_fieldValue(_36c);
this._filterExpressions.add(_36e);
}
if(!this.fireCommand("Filter",_36b+"|"+_36c+"|"+_36d)){
return false;
}
},get_filterExpressions:function(){
return this._filterExpressions;
},page:function(_373){
var _374=this.get_currentPageIndex();
if(_373=="Next"){
_374++;
}else{
if(_373=="Prev"){
_374--;
}else{
if(_373=="First"){
_374=0;
}else{
if(_373=="Last"){
_374=this.get_pageCount()-1;
}else{
_374=parseInt(_373)-1;
}
}
}
}
if(_374<0||_374>(this.get_pageCount()-1)){
return false;
}
this.set_currentPageIndex(_374,true);
if(!this.fireCommand("Page",_373)){
return false;
}
},exportToExcel:function(){
if(!this.fireCommand("ExportToExcel","")){
return false;
}
},exportToWord:function(){
if(!this.fireCommand("ExportToWord","")){
return false;
}
},exportToCsv:function(){
if(!this.fireCommand("ExportToCsv","")){
return false;
}
},exportToPdf:function(){
if(!this.fireCommand("ExportToPdf","")){
return false;
}
},editSelectedItems:function(){
if(!this.fireCommand("EditSelected","")){
return false;
}
},updateEditedItems:function(){
if(!this.fireCommand("UpdateEdited","")){
return false;
}
},deleteSelectedItems:function(){
if(!this.fireCommand("DeleteSelected","")){
return false;
}
},editAllItems:function(){
if(!this.fireCommand("EditAll","")){
return false;
}
},cancelAll:function(){
if(!this.fireCommand("CancelAll","")){
return false;
}
},cancelUpdate:function(_375){
_375=this._getRowByIndexOrItemIndexHierarchical(_375);
var _376=_375.id.split("__")[1];
if(!this.fireCommand("CancelUpdate",_376)){
return false;
}
},groupColumn:function(_377){
if(!this.fireCommand("GroupByColumn",_377)){
return false;
}
},ungroupColumn:function(_378){
if(!this.fireCommand("UnGroupByColumn",_378)){
return false;
}
},_clientDelete:function(e){
var btn=Telerik.Web.UI.Grid.GetCurrentElement(e);
var row=btn.parentNode.parentNode;
var _37c=row.parentNode.parentNode;
var _37d=row.id.split("__")[1];
var _37e=row.cells.length;
var _37f=row.rowIndex;
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(row,e);
this._owner.raise_rowDeleting(args);
if(args.get_cancel()){
return false;
}
_37c.deleteRow(row.rowIndex);
for(var i=_37f;i<_37c.rows.length;i++){
if(_37c.rows[i].cells.length!=_37e&&_37c.rows[i].style.display!="none"){
_37c.deleteRow(i);
i--;
}else{
break;
}
}
if(_37c.tBodies[0].rows.length==1&&_37c.tBodies[0].rows[0].style.display=="none"){
_37c.tBodies[0].rows[0].style.display="";
}
this._owner.raise_rowDeleted(new Telerik.Web.UI.GridDataItemEventArgs(row,e));
Array.add(this._owner._deletedItems,_37d);
this.deselectItem(row);
var _382=$find(row.id);
if(_382){
_382.dispose();
Array.remove(this._dataItems,_382);
}
this._owner.updateClientState();
},fireCommand:function(_383,_384){
var args=new Sys.CancelEventArgs();
args.get_commandName=function(){
return _383;
};
args.get_commandArgument=function(){
return _384;
};
var _386=this;
args.get_tableView=function(){
return _386;
};
this._owner.raise_command(args);
if(args.get_cancel()){
return false;
}
this._executePostBackEvent("FireCommand:"+this._data.UniqueID+";"+_383+";"+_384);
},_executePostBackEvent:function(data){
var _388=this._owner.ClientSettings.PostBackFunction;
_388=_388.replace("{0}",this._owner.UniqueID);
_388=_388.replace("{1}",data);
eval(_388);
},getDataServiceQuery:function(_389){
var _38a=this.get_sortExpressions().toString().replace(" ASC"," asc").replace(" DESC"," desc");
var _38b=this.get_filterExpressions().toDataService();
var _38c=this.get_currentPageIndex();
var _38d=this.get_pageSize();
var sb=new Sys.StringBuilder();
sb.append(String.format("{0}?",_389));
if(_38a!=""){
sb.append(String.format("&$orderby={0}",_38a));
}
if(_38b!=""){
sb.append(String.format("&$filter={0}",_38b));
}
sb.append(String.format("&$top={0}&$skip={1}",_38d,_38c*_38d));
return sb.toString();
}};
Telerik.Web.UI.GridTableView.registerClass("Telerik.Web.UI.GridTableView",Sys.UI.Control);
Telerik.Web.UI.GridFilterFunction=function(){
};
Telerik.Web.UI.GridFilterFunction.prototype={NoFilter:0,Contains:1,DoesNotContain:2,StartsWith:3,EndsWith:4,EqualTo:5,NotEqualTo:6,GreaterThan:7,LessThan:8,GreaterThanOrEqualTo:9,LessThanOrEqualTo:10,Between:11,NotBetween:12,IsEmpty:13,NotIsEmpty:14,IsNull:15,NotIsNull:16,Custom:17};
Telerik.Web.UI.GridFilterFunction.registerEnum("Telerik.Web.UI.GridFilterFunction",false);
Telerik.Web.UI.GridSortOrder=function(){
};
Telerik.Web.UI.GridSortOrder.prototype={None:0,Ascending:1,Descending:2};
Telerik.Web.UI.GridSortOrder.registerEnum("Telerik.Web.UI.GridSortOrder",false);
Telerik.Web.UI.GridSortExpression=function(){
this._fieldName="";
this._sortOrder=null;
};
Telerik.Web.UI.GridSortExpression.prototype={get_fieldName:function(){
return this._fieldName;
},set_fieldName:function(_38f){
if(this._fieldName!=_38f){
this._fieldName=_38f;
this.FieldName=_38f;
}
},get_sortOrder:function(){
return this._sortOrder;
},set_sortOrder:function(_390){
if(this._sortOrder!=_390){
this._sortOrder=_390;
this.SortOrder=_390;
}
},dispose:function(){
this._fieldName=null;
this._sortOrder=null;
}};
Telerik.Web.UI.GridSortExpression.registerClass("Telerik.Web.UI.GridSortExpression",null,Sys.IDisposable);
Telerik.Web.UI.GridFilterFunctionsOqlFormat=function(){
var _391={};
_391[Telerik.Web.UI.GridFilterFunction.Contains]="{0} LIKE '*{1}*'";
_391[Telerik.Web.UI.GridFilterFunction.DoesNotContain]="NOT ({0} LIKE '*{1}*'";
_391[Telerik.Web.UI.GridFilterFunction.StartsWith]="{0} LIKE '{1}*'";
_391[Telerik.Web.UI.GridFilterFunction.EndsWith]="{0} LIKE '*{1}";
_391[Telerik.Web.UI.GridFilterFunction.EqualTo]="{0} = {1}";
_391[Telerik.Web.UI.GridFilterFunction.NotEqualTo]="{0} <> {1}";
_391[Telerik.Web.UI.GridFilterFunction.GreaterThan]="{0} > {1}";
_391[Telerik.Web.UI.GridFilterFunction.LessThan]="{0} < {1}";
_391[Telerik.Web.UI.GridFilterFunction.GreaterThanOrEqualTo]="{0} >= {1}";
_391[Telerik.Web.UI.GridFilterFunction.LessThanOrEqualTo]="{0} <= {1}";
_391[Telerik.Web.UI.GridFilterFunction.Between]="({0} >= {1}) AND ({0} <= {2})";
_391[Telerik.Web.UI.GridFilterFunction.NotBetween]="({0} < {1}) OR ({0} > {2})";
_391[Telerik.Web.UI.GridFilterFunction.IsEmpty]="{0} = ''";
_391[Telerik.Web.UI.GridFilterFunction.NotIsEmpty]="{0} <> ''";
_391[Telerik.Web.UI.GridFilterFunction.IsNull]="{0} == nil";
_391[Telerik.Web.UI.GridFilterFunction.NotIsNull]="({0} != nil)";
return _391;
};
Telerik.Web.UI.GridFilterFunctionsSqlFormat=function(){
var _392={};
_392[Telerik.Web.UI.GridFilterFunction.Contains]="[{0}] LIKE '%{1}%'";
_392[Telerik.Web.UI.GridFilterFunction.DoesNotContain]="[{0}] NOT LIKE '%{1}%'";
_392[Telerik.Web.UI.GridFilterFunction.StartsWith]="[{0}] LIKE '{1}%'";
_392[Telerik.Web.UI.GridFilterFunction.EndsWith]="[{0}] LIKE '%{1}'";
_392[Telerik.Web.UI.GridFilterFunction.EqualTo]="[{0}] = {1}";
_392[Telerik.Web.UI.GridFilterFunction.NotEqualTo]="[{0}] <> {1}";
_392[Telerik.Web.UI.GridFilterFunction.GreaterThan]="[{0}] > {1}";
_392[Telerik.Web.UI.GridFilterFunction.LessThan]="[{0}] < {1}";
_392[Telerik.Web.UI.GridFilterFunction.GreaterThanOrEqualTo]="[{0}] >= {1}";
_392[Telerik.Web.UI.GridFilterFunction.LessThanOrEqualTo]="[{0}] <= {1}";
_392[Telerik.Web.UI.GridFilterFunction.Between]="([{0}] >= {1}) AND ([{0}] <= {2})";
_392[Telerik.Web.UI.GridFilterFunction.NotBetween]="([{0}] < {1}) OR ([{0}] > {2})";
_392[Telerik.Web.UI.GridFilterFunction.IsEmpty]="[{0}] = ''";
_392[Telerik.Web.UI.GridFilterFunction.NotIsEmpty]="[{0}] <> ''";
_392[Telerik.Web.UI.GridFilterFunction.IsNull]="[{0}] IS NULL";
_392[Telerik.Web.UI.GridFilterFunction.NotIsNull]="NOT ([{0}] IS NULL)";
return _392;
};
Telerik.Web.UI.GridFilterFunctionsDynamicLinqFormat=function(){
var _393={};
_393[Telerik.Web.UI.GridFilterFunction.Contains]="{0}.Contains({1}){2}";
_393[Telerik.Web.UI.GridFilterFunction.DoesNotContain]="!{0}.Contains({1}){2}";
_393[Telerik.Web.UI.GridFilterFunction.StartsWith]="{0}.StartsWith({1}){2}";
_393[Telerik.Web.UI.GridFilterFunction.EndsWith]="{0}.EndsWith({1}){2}";
_393[Telerik.Web.UI.GridFilterFunction.EqualTo]="{0} = {1}{2}";
_393[Telerik.Web.UI.GridFilterFunction.NotEqualTo]="{0} <> {1}{2}";
_393[Telerik.Web.UI.GridFilterFunction.GreaterThan]="{0} > {1}{2}";
_393[Telerik.Web.UI.GridFilterFunction.LessThan]="{0} < {1}{2}";
_393[Telerik.Web.UI.GridFilterFunction.GreaterThanOrEqualTo]="{0} >= {1}{2}";
_393[Telerik.Web.UI.GridFilterFunction.LessThanOrEqualTo]="{0} <= {1}{2}";
_393[Telerik.Web.UI.GridFilterFunction.Between]="({0} >= {1}) AND ({0} <= {2})";
_393[Telerik.Web.UI.GridFilterFunction.NotBetween]="({0} < {1}) OR ({0} > {2})";
_393[Telerik.Web.UI.GridFilterFunction.IsEmpty]="{0} = \"\"{1}{2}";
_393[Telerik.Web.UI.GridFilterFunction.NotIsEmpty]="{0} <> \"\"{1}{2}";
_393[Telerik.Web.UI.GridFilterFunction.IsNull]="{0} == null{1}{2}";
_393[Telerik.Web.UI.GridFilterFunction.NotIsNull]="({0} != null){1}{2}";
return _393;
};
Telerik.Web.UI.GridFilterFunctionsADONetDataServices=function(){
var _394={};
_394[Telerik.Web.UI.GridFilterFunction.Contains]="substringof({1},{0}){2}";
_394[Telerik.Web.UI.GridFilterFunction.DoesNotContain]="not substringof({1},{0}){2}";
_394[Telerik.Web.UI.GridFilterFunction.StartsWith]="startswith({0},{1}){2}";
_394[Telerik.Web.UI.GridFilterFunction.EndsWith]="endswith({0},{1}){2}";
_394[Telerik.Web.UI.GridFilterFunction.EqualTo]="{0} eq {1}{2}";
_394[Telerik.Web.UI.GridFilterFunction.NotEqualTo]="{0} ne {1}{2}";
_394[Telerik.Web.UI.GridFilterFunction.GreaterThan]="{0} gt {1}{2}";
_394[Telerik.Web.UI.GridFilterFunction.LessThan]="{0} lt {1}{2}";
_394[Telerik.Web.UI.GridFilterFunction.GreaterThanOrEqualTo]="{0} ge {1}{2}";
_394[Telerik.Web.UI.GridFilterFunction.LessThanOrEqualTo]="{0} le {1}{2}";
_394[Telerik.Web.UI.GridFilterFunction.Between]="({0} ge {1} and {0} le {2})";
_394[Telerik.Web.UI.GridFilterFunction.NotBetween]="({0} le {1} or {0} ge {2})";
_394[Telerik.Web.UI.GridFilterFunction.IsEmpty]="{0} eq ''{2}";
_394[Telerik.Web.UI.GridFilterFunction.NotIsEmpty]="{0} ne ''{2}";
_394[Telerik.Web.UI.GridFilterFunction.IsNull]="{0} eq null{2}";
_394[Telerik.Web.UI.GridFilterFunction.NotIsNull]="{0} ne null{2}";
return _394;
};
Telerik.Web.UI.GridFilterExpression=function(){
this._fieldName="";
this._fieldValue=null;
this._filterFunction=null;
this._columnUniqueName=null;
this._dataTypeName=null;
};
Telerik.Web.UI.GridFilterExpression.prototype={get_columnUniqueName:function(){
return this._columnUniqueName;
},set_columnUniqueName:function(_395){
if(this._columnUniqueName!=_395){
this._columnUniqueName=_395;
this.ColumnUniqueName=_395;
}
},get_fieldName:function(){
return this._fieldName;
},set_fieldName:function(_396){
if(this._fieldName!=_396){
this._fieldName=_396;
this.FieldName=_396;
}
},get_fieldValue:function(){
return this._fieldValue;
},set_fieldValue:function(_397){
if(this._fieldValue!=_397){
this._fieldValue=_397;
this.FieldValue=_397;
}
},get_filterFunction:function(){
return this._filterFunction;
},set_filterFunction:function(_398){
if(this._filterFunction!=_398){
this._filterFunction=_398;
this.FilterFunction=_398;
}
},get_dataTypeName:function(){
return this._dataTypeName;
},set_dataTypeName:function(_399){
if(this._dataTypeName!=_399){
this._dataTypeName=_399;
this.DataTypeName=_399;
}
},toString:function(_39a){
var _39b="";
if(typeof (_39a)!="undefined"){
_39b=_39a;
}
var _39c=this._fieldName;
if(_39b!=""){
_39c=String.format("{0}.{1}",_39b,_39c);
}
var _39d="";
if(this._filterFunction!=null){
var _39e=Telerik.Web.UI.GridFilterFunctionsSqlFormat();
var _39f=_39e[Telerik.Web.UI.GridFilterFunction.parse(this._filterFunction)];
if(_39f!=null){
var _3a0=Telerik.Web.UI.GridFilterFunction.parse(this._filterFunction);
if(_3a0!=Telerik.Web.UI.GridFilterFunction.Between&&_3a0!=Telerik.Web.UI.GridFilterFunction.NotBetween){
if((this.get_dataTypeName()=="System.String"||this.get_dataTypeName()=="System.Char")&&_3a0==Telerik.Web.UI.GridFilterFunction.Contains||_3a0==Telerik.Web.UI.GridFilterFunction.DoesNotContain||_3a0==Telerik.Web.UI.GridFilterFunction.StartsWith||_3a0==Telerik.Web.UI.GridFilterFunction.EndsWith){
_39d=String.format(_39f,_39c,this._fieldValue);
}else{
_39d=String.format(_39f,_39c,this.getQuotedValue(this._fieldValue));
}
}else{
var _3a1=this._fieldValue.split(" ")[0];
var _3a2=(this._fieldValue.split(" ").length>0)?this._fieldValue.split(" ")[1]:"";
_39d=String.format(_39f,_39c,this.getQuotedValue(_3a1),this.getQuotedValue(_3a2));
}
}
}
return _39d;
},toOql:function(_3a3){
var _3a4="";
if(typeof (_3a3)!="undefined"){
_3a4=_3a3;
}
var _3a5=this._fieldName;
if(_3a4!=""){
_3a5=String.format("{0}.{1}",_3a4,_3a5);
}
var _3a6="";
if(this._filterFunction!=null){
var _3a7=Telerik.Web.UI.GridFilterFunctionsOqlFormat();
var _3a8=_3a7[Telerik.Web.UI.GridFilterFunction.parse(this._filterFunction)];
if(_3a8!=null){
var _3a9=Telerik.Web.UI.GridFilterFunction.parse(this._filterFunction);
if(_3a9!=Telerik.Web.UI.GridFilterFunction.Between&&_3a9!=Telerik.Web.UI.GridFilterFunction.NotBetween){
if((this.get_dataTypeName()=="System.String"||this.get_dataTypeName()=="System.Char")&&_3a9==Telerik.Web.UI.GridFilterFunction.Contains||_3a9==Telerik.Web.UI.GridFilterFunction.DoesNotContain||_3a9==Telerik.Web.UI.GridFilterFunction.StartsWith||_3a9==Telerik.Web.UI.GridFilterFunction.EndsWith){
_3a6=String.format(_3a8,_3a5,this._fieldValue);
}else{
_3a6=String.format(_3a8,_3a5,this.getQuotedValue(this._fieldValue));
}
}else{
var _3aa=this._fieldValue.split(" ")[0];
var _3ab=(this._fieldValue.split(" ").length>0)?this._fieldValue.split(" ")[1]:"";
_3a6=String.format(_3a8,_3a5,this.getQuotedValue(_3aa),this.getQuotedValue(_3ab));
}
}
}
return _3a6;
},getQuotedValue:function(_3ac){
if(this.get_dataTypeName()=="System.String"||this.get_dataTypeName()=="System.Char"||this.get_dataTypeName()=="System.DateTime"||this.get_dataTypeName()=="System.TimeSpan"||this.get_dataTypeName()=="System.Guid"){
return String.format("'{0}'",_3ac);
}
return _3ac;
},getDataServiceValue:function(_3ad){
if(this.get_dataTypeName()=="System.String"||this.get_dataTypeName()=="System.Char"){
return String.format("'{0}'",_3ad);
}else{
if(this.get_dataTypeName()=="System.DateTime"){
return String.format("datetime'{0}'",new Date(_3ad).format("yyyy-MM-ddThh:mm:ss"));
}else{
if(this.get_dataTypeName()=="System.TimeSpan"){
return String.format("time'{0}'",_3ad);
}else{
if(this.get_dataTypeName()=="System.Guid"){
return String.format("guid'{0}'",_3ad);
}
}
}
}
return _3ad;
},getDynamicLinqValue:function(_3ae){
if(this.get_dataTypeName()=="System.String"){
return String.format("\"{0}\"",_3ae);
}else{
if(this.get_dataTypeName().indexOf("DateTime")!=-1){
return String.format("DateTime.Parse(\"{0}\")",_3ae);
}else{
if(this.get_dataTypeName().indexOf("TimeSpan")!=-1){
return String.format("TimeSpan.Parse(\"{0}\")",_3ae);
}else{
if(this.get_dataTypeName().indexOf("Guid")!=-1){
return String.format("Guid({0}\")",_3ae);
}
}
}
}
return _3ae;
},toDynamicLinq:function(_3af){
var _3b0="";
if(typeof (_3af)!="undefined"){
_3b0=_3af;
}
var _3b1="";
if(this._filterFunction!=null){
var _3b2=Telerik.Web.UI.GridFilterFunctionsDynamicLinqFormat();
var _3b3=_3b2[Telerik.Web.UI.GridFilterFunction.parse(this._filterFunction)];
if(_3b3!=null){
var _3b4=Telerik.Web.UI.GridFilterFunction.parse(this._filterFunction);
var _3b5="";
var _3b6="";
if(_3b4==Telerik.Web.UI.GridFilterFunction.IsNull||_3b4==Telerik.Web.UI.GridFilterFunction.NotIsNull){
_3b5="";
}else{
if(_3b4==Telerik.Web.UI.GridFilterFunction.Between||_3b4==Telerik.Web.UI.GridFilterFunction.NotBetween){
_3b6=this.getDynamicLinqValue(this._fieldValue.split(" ")[1]);
_3b5=this.getDynamicLinqValue(this._fieldValue.split(" ")[0]);
}else{
_3b5=this.getDynamicLinqValue(this._fieldValue);
}
}
var _3b7=this._fieldName;
if(_3b0!=""){
_3b7=String.format("{0}.{1}",_3b0,_3b7);
}
_3b1=String.format(_3b3,_3b7,_3b5,_3b6);
}
}
return _3b1;
},toDataService:function(){
var _3b8="";
if(this._filterFunction!=null){
var _3b9=Telerik.Web.UI.GridFilterFunctionsADONetDataServices();
var _3ba=_3b9[Telerik.Web.UI.GridFilterFunction.parse(this._filterFunction)];
if(_3ba!=null){
var _3bb=Telerik.Web.UI.GridFilterFunction.parse(this._filterFunction);
var _3bc="";
var _3bd="";
if(_3bb==Telerik.Web.UI.GridFilterFunction.IsNull||_3bb==Telerik.Web.UI.GridFilterFunction.NotIsNull){
_3bc="";
}else{
if(_3bb==Telerik.Web.UI.GridFilterFunction.Between||_3bb==Telerik.Web.UI.GridFilterFunction.NotBetween){
_3bd=this._fieldValue.split(" ")[1];
_3bc=this._fieldValue.split(" ")[0];
}else{
_3bc=this._fieldValue;
}
}
_3b8=String.format(_3ba,this._fieldName,this.getDataServiceValue(_3bc),(_3bd!="")?this.getDataServiceValue(_3bd):_3bd);
}
}
return _3b8;
},dispose:function(){
this._fieldName=null;
this._fieldValue=null;
this._filterFunction=null;
this._columnUniqueName=null;
this._dataTypeName=null;
}};
Telerik.Web.UI.GridFilterExpression.registerClass("Telerik.Web.UI.GridFilterExpression",null,Sys.IDisposable);
Telerik.Web.UI.Collection=function(){
this._array=new Array();
};
Telerik.Web.UI.Collection.prototype={add:function(item){
var _3bf=this._array.length;
this.insert(_3bf,item);
},insert:function(_3c0,item){
Array.insert(this._array,_3c0,item);
},remove:function(item){
Array.remove(this._array,item);
},removeAt:function(_3c3){
var item=this.getItem(_3c3);
if(item){
this.remove(item);
}
},clear:function(){
this._array=new Array();
},toList:function(){
return this._array;
},get_count:function(){
return this._array.length;
},getItem:function(_3c5){
return this._array[_3c5];
},indexOf:function(item){
return Array.indexOf(this._array,item);
},forEach:function(_3c7){
for(var i=0,_3c9=this.get_count();i<_3c9;i++){
_3c7(this._array[i]);
}
},dispose:function(){
this._array=null;
}};
Telerik.Web.UI.Collection.registerClass("Telerik.Web.UI.Collection",null,Sys.IDisposable);
Telerik.Web.UI.GridSortExpressions=function(){
Telerik.Web.UI.GridSortExpressions.initializeBase(this);
};
Telerik.Web.UI.GridSortExpressions.prototype={find:function(_3ca){
for(var i=0,_3cc=this.get_count();i<_3cc;i++){
var item=this.getItem(i);
if(item.get_fieldName()==_3ca){
return item;
}
}
return null;
},sortOrderAsString:function(_3ce){
if(_3ce==0){
return "";
}else{
if(_3ce==1){
return "ASC";
}else{
if(_3ce==2){
return "DESC";
}
}
}
},toString:function(){
var _3cf=[];
for(var i=0,_3d1=this.get_count();i<_3d1;i++){
var item=this.getItem(i);
_3cf[_3cf.length]=String.format("{0} {1}",item.get_fieldName(),this.sortOrderAsString(item.get_sortOrder()));
}
return _3cf.join(",");
}};
Telerik.Web.UI.GridSortExpressions.registerClass("Telerik.Web.UI.GridSortExpressions",Telerik.Web.UI.Collection);
Telerik.Web.UI.GridFilterExpressions=function(){
Telerik.Web.UI.GridFilterExpressions.initializeBase(this);
};
Telerik.Web.UI.GridFilterExpressions.prototype={find:function(_3d3){
for(var i=0,_3d5=this.get_count();i<_3d5;i++){
var item=this.getItem(i);
if(item.get_columnUniqueName()==_3d3){
return item;
}
}
return null;
},toString:function(_3d7){
var _3d8="";
if(typeof (_3d7)!="undefined"){
_3d8=_3d7;
}
var _3d9=[];
for(var i=0,_3db=this.get_count();i<_3db;i++){
var item=this.getItem(i);
_3d9[_3d9.length]=item.toString(_3d8);
}
return _3d9.join(" AND ");
},toOql:function(_3dd){
var _3de="";
if(typeof (_3dd)!="undefined"){
_3de=_3dd;
}
var _3df=[];
for(var i=0,_3e1=this.get_count();i<_3e1;i++){
var item=this.getItem(i);
_3df[_3df.length]=item.toOql(_3de);
}
return _3df.join(" AND ");
},toDynamicLinq:function(_3e3){
var _3e4="";
if(typeof (_3e3)!="undefined"){
_3e4=_3e3;
}
var _3e5=[];
for(var i=0,_3e7=this.get_count();i<_3e7;i++){
var item=this.getItem(i);
_3e5[_3e5.length]=item.toDynamicLinq(_3e4);
}
return _3e5.join(" AND ");
},toDataService:function(){
var _3e9=[];
for(var i=0,_3eb=this.get_count();i<_3eb;i++){
var item=this.getItem(i);
_3e9[_3e9.length]=item.toDataService();
}
return _3e9.join(" and ");
}};
Telerik.Web.UI.GridFilterExpressions.registerClass("Telerik.Web.UI.GridFilterExpressions",Telerik.Web.UI.Collection);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.GridGroupPanel=function(_3ed){
Telerik.Web.UI.GridGroupPanel.initializeBase(this,[_3ed]);
this._owner={};
};
Telerik.Web.UI.GridGroupPanel.prototype={initialize:function(){
Telerik.Web.UI.GridGroupPanel.callBaseMethod(this,"initialize");
this.groupPanelItemCounter=0;
this._createGroupPanelItems(this.get_element(),0);
},dispose:function(){
$clearHandlers(this.get_element());
this._element.control=null;
Telerik.Web.UI.GridGroupPanel.callBaseMethod(this,"dispose");
},_createGroupPanelItems:function(_3ee){
this._itemsInternal=eval(this._owner._groupPanelItems);
this._items=[];
for(var i=0;i<_3ee.rows.length;i++){
var _3f0=false;
var row=_3ee.rows[i];
for(var j=0;j<row.cells.length;j++){
var cell=row.cells[j];
if(cell.tagName.toLowerCase()=="th"){
var _3f4;
if(this._itemsInternal[this.groupPanelItemCounter]){
_3f4=this._itemsInternal[this.groupPanelItemCounter].HierarchicalIndex;
}
if(_3f4){
this._items[this._items.length]=$create(Telerik.Web.UI.GridGroupPanelItem,{_hierarchicalIndex:_3f4,_owner:this},null,null,cell);
_3f0=true;
this.groupPanelItemCounter++;
}
}
if((cell.firstChild)&&(cell.firstChild.tagName)){
if(cell.firstChild.tagName.toLowerCase()=="table"){
this._createGroupPanelItems(cell.firstChild);
}
}
}
}
},_isItem:function(_3f5){
for(var i=0;i<this._items.length;i++){
if(this._items[i].get_element()==_3f5){
return this._items[i];
}
}
return null;
}};
Telerik.Web.UI.GridGroupPanel.registerClass("Telerik.Web.UI.GridGroupPanel",Sys.UI.Control);
Telerik.Web.UI.GridGroupPanelItem=function(_3f7){
Telerik.Web.UI.GridGroupPanelItem.initializeBase(this,[_3f7]);
this._hierarchicalIndex=null;
this._owner={};
};
Telerik.Web.UI.GridGroupPanelItem.prototype={initialize:function(){
Telerik.Web.UI.GridGroupPanelItem.callBaseMethod(this,"initialize");
this.get_element().style.cursor="move";
this._onMouseDownDelegate=Function.createDelegate(this,this._onMouseDownHandler);
$addHandler(this.get_element(),"mousedown",this._onMouseDownDelegate);
},dispose:function(){
$clearHandlers(this.get_element());
this._element.control=null;
Telerik.Web.UI.GridGroupPanelItem.callBaseMethod(this,"dispose");
},_onMouseDownHandler:function(e){
this._onMouseUpDelegate=Function.createDelegate(this,this._onMouseUpHandler);
$telerik.addExternalHandler(document,"mouseup",this._onMouseUpDelegate);
this._onMouseMoveDelegate=Function.createDelegate(this,this._onMouseMoveHandler);
$telerik.addExternalHandler(document,"mousemove",this._onMouseMoveDelegate);
Telerik.Web.UI.Grid.CreateDragDrop(e,this,false);
Telerik.Web.UI.Grid.CreateReorderIndicators(this.get_element(),this._owner._owner.Skin,this._owner._owner.ImagesPath,false,this._owner._owner.get_id());
},_onMouseUpHandler:function(e){
$telerik.removeExternalHandler(document,"mouseup",this._onMouseUpDelegate);
$telerik.removeExternalHandler(document,"mousemove",this._onMouseMoveDelegate);
this._fireDropAction(e);
Telerik.Web.UI.Grid.DestroyDragDrop();
},_onMouseMoveHandler:function(e){
Telerik.Web.UI.Grid.MoveDragDrop(e,this,false);
},_fireDropAction:function(e){
var _3fc=Telerik.Web.UI.Grid.GetCurrentElement(e);
if(_3fc!=null){
var _3fd=this._owner._owner.ClientSettings.PostBackFunction;
_3fd=_3fd.replace("{0}",this._owner._owner.UniqueID);
if(!Telerik.Web.UI.Grid.IsChildOf(_3fc,this._owner.get_element())){
var _3fe="UnGroupByExpression";
var _3ff=this._hierarchicalIndex;
var args=new Sys.CancelEventArgs();
args.get_commandName=function(){
return _3fe;
};
args.get_commandArgument=function(){
return _3ff;
};
this._owner._owner.raise_command(args);
if(args.get_cancel()){
return false;
}
_3fd=_3fd.replace("{1}","UnGroupByExpression,"+this._hierarchicalIndex);
eval(_3fd);
}else{
var item=this._owner._isItem(_3fc);
if((_3fc!=this.get_element())&&(item!=null)&&(_3fc.parentNode==this.get_element().parentNode)){
var _3fe="ReorderGroupByExpression";
var _3ff=this._hierarchicalIndex+","+item._hierarchicalIndex;
var args=new Sys.CancelEventArgs();
args.get_commandName=function(){
return _3fe;
};
args.get_commandArgument=function(){
return _3ff;
};
this._owner._owner.raise_command(args);
if(args.get_cancel()){
return false;
}
_3fd=_3fd.replace("{1}","ReorderGroupByExpression,"+this._hierarchicalIndex+","+item._hierarchicalIndex);
eval(_3fd);
}
}
}
}};
Telerik.Web.UI.GridGroupPanelItem.registerClass("Telerik.Web.UI.GridGroupPanelItem",Sys.UI.Control);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.GridMenu=function(){
Telerik.Web.UI.GridMenu.initializeBase(this);
this._owner={};
this._items=[];
this._onMenuElementClickDelegate=null;
this._onMenuElementMouseoverDelegate=null;
this._onMenuElementMouseoutDelegate=null;
this._element=null;
this._overRow=null;
};
Telerik.Web.UI.GridMenu.prototype={initialize:function(){
Telerik.Web.UI.GridMenu.callBaseMethod(this,"initialize");
this._element=document.createElement("table");
this.get_element().style.backgroundColor=this.SelectColumnBackColor;
this.get_element().style.border="outset 1px";
this.get_element().style.fontSize="small";
this.get_element().style.textAlign="left";
this.get_element().cellPadding="0";
this.get_element().style.borderCollapse="collapse";
this.get_element().style.zIndex=998;
this.Skin=(this._owner&&this._owner._owner&&this._owner._owner.Skin)||"";
var _402=Telerik.Web.UI.Grid.IsRightToLeft(this._owner.get_element());
if(_402){
this.get_element().style.direction="rtl";
Sys.UI.DomElement.addCssClass(this.get_element(),"RadGridRTL_"+this._owner.Skin);
}
Sys.UI.DomElement.addCssClass(this.get_element(),"GridFilterMenu_"+this._owner.Skin);
Sys.UI.DomElement.addCssClass(this.get_element(),this._owner._filterMenuData.CssClass);
this.createItems(this._owner._filterMenuData.Items);
this.get_element().style.position="absolute";
this.get_element().style.display="none";
document.body.appendChild(this.get_element());
var _403=document.createElement("img");
_403.src=this._owner._filterMenuData.SelectedImageUrl;
_403.src=this._owner._filterMenuData.NotSelectedImageUrl;
this.get_element().style.zIndex=100000;
},dispose:function(){
if(this._items){
this._items=null;
}
if(this._owner){
this._owner=null;
}
if(this._onMenuElementClickDelegate){
$removeHandler(this.get_element(),"click",this._onMenuElementClickDelegate);
this._onMenuElementClickDelegate=null;
}
if(this._onMenuElementMouseoverDelegate){
$removeHandler(this.get_element(),"mouseover",this._onMenuElementMouseoverDelegate);
this._onMenuElementMouseoverDelegate=null;
}
if(this._onMenuElementMouseoutDelegate){
$removeHandler(this.get_element(),"mouseout",this._onMenuElementMouseoutDelegate);
this._onMenuElementMouseoutDelegate=null;
}
if(this.get_element()&&this.get_element().parentNode){
this.get_element().parentNode.removeChild(this.get_element());
}
this._element=null;
Telerik.Web.UI.GridMenu.callBaseMethod(this,"dispose");
},get_element:function(){
return this._element;
},click:function(e){
if(!e.cancelBubble){
this.hide();
}
},keyPress:function(e){
if(e.charCode==27){
this.hide();
}
},createItems:function(_406){
this._onMenuElementClickDelegate=Function.createDelegate(this,this._menuElementClick);
this._onMenuElementMouseoverDelegate=Function.createDelegate(this,this._menuElementMouseover);
this._onMenuElementMouseoutDelegate=Function.createDelegate(this,this._menuElementMouseout);
$addHandler(this.get_element(),"click",this._onMenuElementClickDelegate);
$addHandler(this.get_element(),"mouseover",this._onMenuElementMouseoverDelegate);
$addHandler(this.get_element(),"mouseout",this._onMenuElementMouseoutDelegate);
for(var i=0;i<_406.length;i++){
var tr=this.get_element().insertRow(-1);
tr.insertCell(-1);
var _409=document.createElement("table");
_409.style.width="100%";
_409.cellPadding="0";
_409.cellSpacing="0";
_409.insertRow(-1);
var td1=_409.rows[0].insertCell(-1);
var td2=_409.rows[0].insertCell(-1);
if(this._owner.Skin==""){
td1.style.borderTop="solid 1px "+this._owner._filterMenuData.SelectColumnBackColor;
td1.style.borderLeft="solid 1px "+this._owner._filterMenuData.SelectColumnBackColor;
td1.style.borderRight="none 0px";
td1.style.borderBottom="solid 1px "+this._owner._filterMenuData.SelectColumnBackColor;
td1.style.padding="2px";
td1.style.textAlign="center";
}else{
Sys.UI.DomElement.addCssClass(td1,"GridFilterMenuSelectColumn_"+this._owner.Skin);
}
td1.style.width="16px";
td1.appendChild(document.createElement("img"));
td1.childNodes[0].src=this._owner._filterMenuData.NotSelectedImageUrl;
if(this._owner.Skin==""){
td2.style.borderTop="solid 1px "+this._owner._filterMenuData.TextColumnBackColor;
td2.style.borderLeft="none 0px";
td2.style.borderRight="solid 1px "+this._owner._filterMenuData.TextColumnBackColor;
td2.style.borderBottom="solid 1px "+this._owner._filterMenuData.TextColumnBackColor;
td2.style.padding="2px";
td2.style.backgroundColor=this._owner._filterMenuData.TextColumnBackColor;
td2.style.cursor="pointer";
}else{
Sys.UI.DomElement.addCssClass(td2,"GridFilterMenuTextColumn_"+this._owner.Skin);
}
td2.innerHTML=_406[i].Text;
tr.cells[0].appendChild(_409);
tr.id=_406[i].UID;
var obj={};
obj.id=tr.id;
obj.Value=_406[i].Value;
obj.Image=td1.childNodes[0];
this._items[this._items.length]=obj;
}
},_menuElementClick:function(e){
var _40e=this._owner.ClientSettings.PostBackFunction;
var _40f=this.get_element().column._owner._data.UniqueID;
var row=Telerik.Web.UI.Grid.GetFirstParentByTagName(Telerik.Web.UI.Grid.GetCurrentElement(e),"tr");
if(row){
var _411=Telerik.Web.UI.Grid.GetFirstParentByTagName(row.parentNode,"tr");
if(_411){
_40e=_40e.replace("{0}",_411.id).replace("{1}",_40f+"!"+this.get_element().column.get_element().UniqueName);
eval(_40e);
}
}
},_menuElementMouseover:function(e){
this._removeFilterRowStyles();
var row=Telerik.Web.UI.Grid.GetFirstParentByTagName(Telerik.Web.UI.Grid.GetCurrentElement(e),"tr");
if(row){
var _414=Telerik.Web.UI.Grid.GetFirstParentByTagName(row.parentNode,"tr");
if(_414){
var _415=_414.cells[0].childNodes[0].rows[0].cells[0];
var _416=_414.cells[0].childNodes[0].rows[0].cells[1];
if(this._owner.Skin!=""){
Sys.UI.DomElement.addCssClass(_415,"GridFilterMenuHover_"+this._owner.Skin);
Sys.UI.DomElement.addCssClass(_416,"GridFilterMenuHover_"+this._owner.Skin);
}else{
var data=this._owner._filterMenuData;
_415.style.backgroundColor=data.HoverBackColor;
_415.style.borderTop="solid 1px "+data.HoverBorderColor;
_415.style.borderLeft="solid 1px "+data.HoverBorderColor;
_415.style.borderBottom="solid 1px "+data.HoverBorderColor;
_416.style.backgroundColor=data.HoverBackColor;
_416.style.borderTop="solid 1px "+data.HoverBorderColor;
_416.style.borderRight="solid 1px "+data.HoverBorderColor;
_416.style.borderBottom="solid 1px "+data.HoverBorderColor;
}
this._overRow=_414;
}
}
},_removeFilterRowStyles:function(){
if(this._overRow){
var _418=this._overRow.cells[0].childNodes[0].rows[0].cells[0];
var _419=this._overRow.cells[0].childNodes[0].rows[0].cells[1];
if(this._owner.Skin!=""){
Sys.UI.DomElement.removeCssClass(_418,"GridFilterMenuHover_"+this._owner.Skin);
Sys.UI.DomElement.removeCssClass(_419,"GridFilterMenuHover_"+this._owner.Skin);
}else{
var data=this._owner._filterMenuData;
_418.style.borderTop="solid 1px "+data.SelectColumnBackColor;
_418.style.borderLeft="solid 1px "+data.SelectColumnBackColor;
_418.style.borderBottom="solid 1px "+data.SelectColumnBackColor;
_418.style.backgroundColor="";
_419.style.borderTop="solid 1px "+data.TextColumnBackColor;
_419.style.borderRight="solid 1px "+data.TextColumnBackColor;
_419.style.borderBottom="solid 1px "+data.TextColumnBackColor;
_419.style.backgroundColor=data.TextColumnBackColor;
}
}
},_menuElementMouseout:function(e){
this._removeFilterRowStyles();
this._overRow=null;
},show:function(_41c,e){
this.hide();
this.showItems(_41c._data.FilterListOptions,_41c._data.DataTypeName,_41c._data.CurrentFilterFunction,_41c);
e.cancelBubble=true;
this._onClickDelegate=Function.createDelegate(this,this.click);
$addHandler(document,"click",this._onClickDelegate);
this._onKeyPressDelegate=Function.createDelegate(this,this.keyPress);
$addHandler(document,"keypress",this._onKeyPressDelegate);
var _41e=this;
var args=new Sys.CancelEventArgs();
args.get_menu=function(){
return _41e;
};
args.get_tableView=function(){
return _41e._owner;
};
args.get_column=function(){
return _41c;
};
args.get_domEvent=function(){
return e;
};
this._owner.raise_filterMenuShowing(args);
if(args.get_cancel()){
return;
}
this.get_element().style.display="";
this.get_element().style.top=e.clientY+document.documentElement.scrollTop+document.body.scrollTop+5+"px";
this.get_element().style.left=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft+5+"px";
this.get_element().column=_41c;
},hide:function(){
if(this._onClickDelegate){
$removeHandler(document,"click",this._onClickDelegate);
this._onClickDelegate=null;
}
if(this._onKeyPressDelegate){
$removeHandler(document,"keypress",this._onKeyPressDelegate);
this._onKeyPressDelegate=null;
}
if(this.get_element()&&this.get_element().style.display==""){
this.get_element().style.display="none";
}
},showItems:function(_420,_421,_422,_423){
for(var i=0;i<this._items.length;i++){
var tr=$get(this._items[i].id);
if(_421=="System.Boolean"){
if((this._items[i].Value=="GreaterThan")||(this._items[i].Value=="LessThan")||(this._items[i].Value=="GreaterThanOrEqualTo")||(this._items[i].Value=="LessThanOrEqualTo")||(this._items[i].Value=="Between")||(this._items[i].Value=="NotBetween")){
tr.style.display="none";
continue;
}
}
if(_421!="System.String"){
if((this._items[i].Value=="StartsWith")||(this._items[i].Value=="EndsWith")||(this._items[i].Value=="Contains")||(this._items[i].Value=="DoesNotContain")||(this._items[i].Value=="IsEmpty")||(this._items[i].Value=="NotIsEmpty")){
tr.style.display="none";
continue;
}
}
if(_420==0){
if(this._items[i].Value=="Custom"){
tr.style.display="none";
continue;
}
}
if((_423._data.ColumnType=="GridDateTimeColumn"||_423._data.ColumnType=="GridMaskedColumn"||_423._data.ColumnType=="GridNumericColumn")&&((this._items[i].Value=="Between")||(this._items[i].Value=="NotBetween"))){
tr.style.display="none";
continue;
}
if(_422==i){
this._items[i].Image.src=this._owner._filterMenuData.SelectedImageUrl;
}else{
this._items[i].Image.src=this._owner._filterMenuData.NotSelectedImageUrl;
}
tr.style.display="";
}
}};
Telerik.Web.UI.GridMenu.registerClass("Telerik.Web.UI.GridMenu",Sys.Component);
Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.RadGrid=function(_426){
var _427=["gridCreating","gridCreated","gridDestroying","masterTableViewCreating","masterTableViewCreated","tableCreating","tableCreated","tableDestroying","columnCreating","columnCreated","columnDestroying","columnResizing","columnResized","columnSwapping","columnSwapped","columnMovingToLeft","columnMovedToLeft","columnMovingToRight","columnMovedToRight","columnHiding","columnHidden","columnShowing","columnShown","rowCreating","rowCreated","rowDestroying","rowResizing","rowResized","rowHiding","rowHidden","rowShowing","rowShown","rowClick","rowDblClick","columnClick","columnDblClick","rowSelecting","rowSelected","rowDeselecting","rowDeselected","rowMouseOver","rowMouseOut","columnMouseOver","columnMouseOut","columnContextMenu","rowContextMenu","scroll","keyPress","hierarchyExpanding","hierarchyExpanded","hierarchyCollapsing","hierarchyCollapsed","groupExpanding","groupExpanded","groupCollapsing","groupCollapsed","activeRowChanging","activeRowChanged","rowDeleting","rowDeleted","filterMenuShowing","rowDropping","rowDropped","rowDragStarted","popUpShowing","command","rowDataBound","dataBinding","dataBound","headerMenuShowing"];
this._initializeEvents(_427);
Telerik.Web.UI.RadGrid.initializeBase(this,[_426]);
this.Skin="Default";
this._imagesPath="";
this._embeddedSkin=true;
this.ClientID=null;
this.UniqueID=null;
this._activeRowIndex="";
this._activeRow=null;
this.ShowGroupPanel=false;
this._groupPanel=null;
this._groupPanelClientID="";
this._groupPanelItems="";
this._gridTableViewsData="";
this._popUpIds="";
this._popUpSettings={};
this.ClientSettings={};
this._selection=null;
this._selectedIndexes=[];
this._selectedItemsInternal=[];
this._masterClientID="";
this._scrolling=null;
this._gridItemResizer=null;
this._resizedItems="";
this._resizedColumns="";
this._resizedControl="";
this._hidedItems="";
this._showedItems="";
this._hidedColumns=[];
this._showedColumns=[];
this._reorderedColumns=[];
this._filterMenuData={};
this._filterMenu=null;
this._headerContextMenu=null;
this._detailTables=[];
this._clientKeyValues={};
this._onKeyDownDelegate=null;
this._onMouseMoveDelegate=null;
this._hierarchySettings={};
this._groupingSettings={};
this._currentPageIndex=null;
this._expandedItems=[];
this._expandedGroupItems=[];
this._deletedItems=[];
this._expandedFilterItems=[];
this._initializeRequestHandler=null;
this._endRequestHandler=null;
this._statusLabelID=null;
this._loadingText=null;
this._readyText=null;
this._onFilterMenuClick=null;
this._popUpLocations={};
window[this.ClientID]=this;
this._canMoveRow=false;
this._originalDragItem=null;
this._dropClue=null;
this._draggedItems=[];
this._draggedItemsIndexes=[];
this._draggingPosition="above";
this._editIndexes=null;
this._controlToFocus=null;
};
Telerik.Web.UI.RadGrid.prototype={initialize:function(){
Telerik.Web.UI.RadGrid.callBaseMethod(this,"initialize");
if((!this._masterClientID)||(!$get(this._masterClientID))){
return;
}
if(this.ClientSettings){
if(!this.ClientSettings.PostBackFunction){
this.ClientSettings.PostBackFunction="__doPostBack('{0}','{1}')";
}
if(!this.ClientSettings.AllowExpandCollapse){
this.ClientSettings.AllowExpandCollapse=true;
}
if(!this.ClientSettings.AllowGroupExpandCollapse){
this.ClientSettings.AllowGroupExpandCollapse=true;
}
if(typeof (this.ClientSettings.EnableAlternatingItems)=="undefined"){
this.ClientSettings.EnableAlternatingItems=true;
}
if(!this.ClientSettings.ColumnsReorderMethod){
this.ClientSettings.ColumnsReorderMethod=0;
}
if(this.ClientSettings.ClientMessages){
if(!this.ClientSettings.ClientMessages.DragToGroupOrReorder){
this.ClientSettings.ClientMessages.DragToGroupOrReorder="Drag to group or reorder";
}
if(!this.ClientSettings.ClientMessages.DragToResize){
this.ClientSettings.ClientMessages.DragToResize="Drag to resize";
}
if(!this.ClientSettings.ClientMessages.DropHereToReorder){
this.ClientSettings.ClientMessages.DropHereToReorder="Drop here to reorder";
}
if(!this.ClientSettings.ClientMessages.PagerTooltipFormatString){
this.ClientSettings.ClientMessages.PagerTooltipFormatString="Page: <b>{0}</b> out of <b>{1}</b> pages";
}
}
if(this.ClientSettings.DataBinding){
if(!this.ClientSettings.DataBinding.MaximumRowsParameterName){
this.ClientSettings.DataBinding.MaximumRowsParameterName="maximumRows";
}
if(!this.ClientSettings.DataBinding.StartRowIndexParameterName){
this.ClientSettings.DataBinding.StartRowIndexParameterName="startRowIndex";
}
if(!this.ClientSettings.DataBinding.SortParameterName){
this.ClientSettings.DataBinding.SortParameterName="sortExpression";
}
if(!this.ClientSettings.DataBinding.FilterParameterName){
this.ClientSettings.DataBinding.FilterParameterName="filterExpression";
}
}
}
if(this._editIndexes!=null){
this._editIndexes=eval(this._editIndexes);
}
if(this._popUpIds&&this._popUpIds!=""){
var _428=eval(this._popUpIds);
var left,top=20;
for(var i=0;i<_428.length;i++){
var _42c=_428[i];
var _42d=$get(_42c);
if(_42d){
var args=new Sys.CancelEventArgs();
args.get_popUp=function(){
return _42d;
};
this.raise_popUpShowing(args);
if(args.get_cancel()){
continue;
}
if(this._popUpSettings.Modal){
var _42f=String.format("modalDivId_{0}",this.get_id());
if(!$get(_42f)){
var _430=document.createElement("div");
_430.id=_42f;
_430.style.width=document.documentElement.scrollWidth+"px";
_430.style.height=document.documentElement.scrollHeight+"px";
this._onResizeDelegate=Function.createDelegate(this,this.onWindowResize);
var _431=this;
if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1){
setTimeout(function(){
$addHandler(window,"resize",_431._onResizeDelegate);
},0);
}else{
$addHandler(window,"resize",this._onResizeDelegate);
}
_430.style.top=_430.style.left=0;
_430.style.position="absolute";
_430.style.backgroundColor="threedshadow";
_430.style.zIndex=this._popUpSettings.ZIndex-10;
try{
_430.style.opacity="0.5";
}
catch(e){
}
if(typeof (_430.style.filter)!="undefined"){
_430.style.filter="alpha(opacity=50);";
}else{
if(typeof (_430.style.MozOpacity)!="undefined"){
_430.style.MozOpacity=1/2;
}
}
var form=document.getElementsByTagName("form")[0];
form.appendChild(_430);
}
}
_42d.style.zIndex=this._popUpSettings.ZIndex;
left=top+=20;
if(_42d.style.left==""){
_42d.style.left=Telerik.Web.UI.Grid.FindPosX(this.get_element())+left+"px";
}
if(_42d.style.top==""){
_42d.style.top=Telerik.Web.UI.Grid.FindPosY(this.get_element())+top+"px";
}
_42d.style.display="";
_42d.tabIndex=0;
var _433=_42d.getElementsByTagName("div")[0];
if($telerik.isIE6){
_433.style.width=_42d.offsetWidth+"px";
}
this.resizeModalBackground();
_42d.getElementsByTagName("div")[4].style.height=_42d.offsetHeight-_433.offsetHeight+"px";
this._popUpLocations[_433.id]=_42d.style.left+","+_42d.style.top;
this.updateClientState();
$addHandlers(_433,{mousedown:Function.createDelegate(_42d,this._popUpMouseDown)});
$addHandlers(document,{mouseup:Function.createDelegate(_42d,this._popUpMouseUp)});
$addHandlers(document,{mouseout:Function.createDelegate(_42d,this._popUpMouseOut)});
$telerik.addExternalHandler(document,"mousemove",Function.createDelegate(_42d,this._popUpMouseMove));
}
}
}
if(this.ClientSettings.AllowRowsDragDrop){
$addHandlers(this.get_element(),{mousedown:Function.createDelegate(this,this._mouseDown)});
$telerik.addExternalHandler(document,"mouseup",Function.createDelegate(this,this._mouseUp));
$telerik.addExternalHandler(document,"mousemove",Function.createDelegate(this,this._mouseMove));
}
$addHandlers(this.get_element(),{click:Function.createDelegate(this,this._click)});
$addHandlers(this.get_element(),{dblclick:Function.createDelegate(this,this._dblclick)});
$addHandlers(this.get_element(),{contextmenu:Function.createDelegate(this,this._contextmenu)});
$addHandlers(this.get_element(),{mouseover:Function.createDelegate(this,this._mouseover)});
$addHandlers(this.get_element(),{mouseout:Function.createDelegate(this,this._mouseout)});
this.raise_gridCreating(new Sys.EventArgs());
this.Control=this.get_element();
this.get_element().tabIndex=0;
if(this.ShowGroupPanel){
var _434=$get(this._groupPanelClientID);
if(_434){
this._groupPanel=$create(Telerik.Web.UI.GridGroupPanel,{_owner:this},null,null,$get(this._groupPanelClientID));
}
}
this._gridDataDiv=$get(this.get_id()+"_GridData");
if(this.ClientSettings&&(this.ClientSettings.Selecting&&this.ClientSettings.Selecting.AllowRowSelect)||this.ClientSettings.EnablePostBackOnRowClick){
this._selection=$create(Telerik.Web.UI.GridSelection,{_owner:this},null,{owner:this.ClientID});
}
this._initializeTableViews();
this.GridDataDiv=$get(this.ClientID+"_GridData");
this.GridHeaderDiv=$get(this.ClientID+"_GridHeader");
this.GridFooterDiv=$get(this.ClientID+"_GridFooter");
this.PagerControl=$get(this._masterClientID+"_Pager");
this.TopPagerControl=$get(this._masterClientID+"_TopPager");
var _435=Telerik.Web.UI.Grid.IsRightToLeft(this.get_masterTableView().get_element());
if(_435){
this.get_element().className=String.format("{0} RadGridRTL_{1}",this.get_element().className,this.Skin);
}
if(this.ClientSettings&&this.ClientSettings.Scrolling&&(this.ClientSettings.Scrolling.AllowScroll||(this.ClientSettings.Scrolling.AllowScroll&&(this.ClientSettings.Scrolling.UseStaticHeaders||this.ClientSettings.Scrolling.EnableVirtualScrollPaging)))){
this._scrolling=$create(Telerik.Web.UI.GridScrolling,{_owner:this},null,null);
}
if(this._activeRowIndex){
var row=$get(this._activeRowIndex);
if(row){
this.set_activeRow(row);
}
}
this._attachDomEvents();
if(Sys.WebForms&&Sys.WebForms.PageRequestManager){
var _437=Sys.WebForms.PageRequestManager.getInstance();
if(_437){
this._initializeRequestHandler=Function.createDelegate(this,this._initializeRequest);
_437.add_initializeRequest(this._initializeRequestHandler);
}
}
this.raise_gridCreated(new Sys.EventArgs());
if(typeof (this.ClientSettings.DataBinding.Location)!="undefined"&&this.ClientSettings.DataBinding.Location!=""){
this._onCommandDelegate=Function.createDelegate(this,this._onCommand);
this.add_command(this._onCommandDelegate);
this._onSuccessDelegate=Function.createDelegate(this,this._onSuccess);
this._onFailDelegate=Function.createDelegate(this,this._onFail);
if(typeof (this.ClientSettings.DataBinding.SelectMethod)!="undefined"&&this.ClientSettings.DataBinding.SelectMethod!=""){
this._getData(this.ClientSettings.DataBinding.Location,this.ClientSettings.DataBinding.SelectMethod,this._getRequestData(),this._onSuccessDelegate,this._onFailDelegate);
}else{
if(typeof (this.ClientSettings.DataBinding.DataService)!="undefined"&&typeof (this.ClientSettings.DataBinding.DataService.TableName)!="undefined"&&this.ClientSettings.DataBinding.DataService.TableName!=""){
this._getDataServiceData(this._onSuccessDelegate,this._onFailDelegate);
}
}
}
var _438=this._controlToFocus;
if(this.ClientSettings.AllowKeyboardNavigation&&_438!=null&&_438!=""){
setTimeout(function(){
var _439=false;
var _43a=$find(_438);
if(_43a==null){
_43a=$get(_438);
}else{
_439=true;
}
if(_43a==null){
_43a=document.getElementsByName(_438.replace(/_/ig,"$"))[0];
}
if(_43a!=null){
if(_43a.focus){
_43a.focus();
}else{
if(_439){
if(_43a._focused!=undefined){
_43a._focused=true;
}
if(_43a.setFocus){
_43a.setFocus();
}
}
}
if(_43a.select){
_43a.select();
}
}
},0);
}
},_getDataServiceData:function(_43b,_43c,uri){
var args=new Sys.CancelEventArgs();
var _43f=this.ClientSettings.DataBinding.Location;
args.get_location=function(){
return _43f;
};
args.set_location=function(_440){
_43f=_440;
};
var _441=this.ClientSettings.DataBinding.DataService.TableName;
args.get_tableName=function(){
return _441;
};
args.set_tableName=function(_442){
_441=_442;
};
var _443=this.get_masterTableView().getDataServiceQuery(args.get_tableName());
args.get_query=function(){
return _443;
};
args.set_query=function(_444){
_443=_444;
};
this.raise_dataBinding(args);
if(args.get_cancel()){
return false;
}
var url=(typeof (uri)!="undefined")?uri:String.format("{0}/{1}",args.get_location(),args.get_query());
try{
$telerik.$.ajax({type:"GET",url:url,contentType:"application/json; charset=utf-8",dataType:"json",success:_43b,fail:_43c});
}
catch(e){
throw new Error(e);
}
},_getData:function(_446,_447,_448,_449,_44a){
var _44b=Sys.Serialization.JavaScriptSerializer.deserialize(_448);
var args=new Sys.CancelEventArgs();
args.get_location=function(){
return _446;
};
args.set_location=function(_44d){
_446=_44d;
};
args.get_methodName=function(){
return _447;
};
args.set_methodName=function(_44e){
_447=_44e;
};
args.get_methodArguments=function(){
return _44b;
};
args.set_methodArguments=function(_44f){
_44b=_44f;
};
this.raise_dataBinding(args);
if(args.get_cancel()){
return false;
}
try{
$telerik.$.ajax({type:"POST",url:args.get_location()+"/"+args.get_methodName(),data:Sys.Serialization.JavaScriptSerializer.serialize(_44b),contentType:"application/json; charset=utf-8",dataType:"json",success:_449,fail:_44a});
}
catch(e){
throw new Error(e);
}
},_getCacheKey:function(_450){
return String.format("{0}{1}{2}{3}",_450.get_currentPageIndex(),_450.get_pageSize(),_450.get_sortExpressions().toString(),_450.get_filterExpressions().toString());
},_getRequestData:function(){
var _451=this.get_masterTableView();
var obj={};
obj[this.ClientSettings.DataBinding.StartRowIndexParameterName]=_451.get_currentPageIndex()*_451.get_pageSize();
obj[this.ClientSettings.DataBinding.MaximumRowsParameterName]=_451.get_pageSize();
var _453=null;
if(typeof (this.ClientSettings.DataBinding.SortParameterType)=="undefined"){
_453=_451.get_sortExpressions().toList();
}else{
if(this.ClientSettings.DataBinding.SortParameterType==Telerik.Web.UI.GridClientDataBindingParameterType.String){
_453=_451.get_sortExpressions().toString();
}else{
if(this.ClientSettings.DataBinding.SortParameterType==Telerik.Web.UI.GridClientDataBindingParameterType.Linq){
_453=_451.get_sortExpressions().toString();
}else{
if(this.ClientSettings.DataBinding.SortParameterType==Telerik.Web.UI.GridClientDataBindingParameterType.Oql){
_453=_451.get_sortExpressions().toString();
}
}
}
}
obj[this.ClientSettings.DataBinding.SortParameterName]=_453;
var _454=null;
if(typeof (this.ClientSettings.DataBinding.FilterParameterType)=="undefined"){
_454=_451.get_filterExpressions().toList();
}else{
if(this.ClientSettings.DataBinding.FilterParameterType==Telerik.Web.UI.GridClientDataBindingParameterType.String){
_454=_451.get_filterExpressions().toString();
}else{
if(this.ClientSettings.DataBinding.FilterParameterType==Telerik.Web.UI.GridClientDataBindingParameterType.Linq){
_454=_451.get_filterExpressions().toDynamicLinq();
}else{
if(this.ClientSettings.DataBinding.FilterParameterType==Telerik.Web.UI.GridClientDataBindingParameterType.Oql){
_454=_451.get_filterExpressions().toOql();
}
}
}
}
obj[this.ClientSettings.DataBinding.FilterParameterName]=_454;
return Sys.Serialization.JavaScriptSerializer.serialize(obj);
},_onSuccess:function(_455){
if(typeof (_455)!="object"||_455==null){
return;
}
if(typeof (_455.d)!="undefined"){
_455=_455.d;
}
var _456=this.get_masterTableView();
if(this.ClientSettings.DataBinding.EnableCaching){
var _457=this._getCacheKey(_456);
if(!this._cache){
this._cache={};
}
if(!this._cache[_457]){
this._cache[_457]=_455;
}
}
var _458=true;
var data=_455;
var _45a;
var _45b;
if(typeof (this.ClientSettings.DataBinding.DataPropertyName)=="undefined"){
_45a="Data";
}else{
_45a=this.ClientSettings.DataBinding.DataPropertyName;
}
if(typeof (this.ClientSettings.DataBinding.CountPropertyName)=="undefined"){
_45b="Count";
}else{
_45b=this.ClientSettings.DataBinding.CountPropertyName;
}
if(typeof (_455[_45a])!="undefined"&&typeof (_455[_45b])!="undefined"){
_458=false;
data=_455[_45a];
}
if(_458){
if(typeof (this.ClientSettings.DataBinding.SelectCountMethod)!="undefined"&&this.ClientSettings.DataBinding.SelectCountMethod!=""){
this._onSelectCountSuccessDelegate=Function.createDelegate(this,this._onSelectCountSuccess);
if(typeof (this.ClientSettings.DataBinding.DataService)!="undefined"&&typeof (this.ClientSettings.DataBinding.DataService.TableName)!="undefined"&&this.ClientSettings.DataBinding.DataService.TableName!=""){
var _45c=_456.get_filterExpressions().toString("it").replace(/'/g,"\"").replace("[","").replace("]","");
var uri=String.format("{0}/{1}?where='{2}'",this.ClientSettings.DataBinding.Location,this.ClientSettings.DataBinding.SelectCountMethod,_45c);
this._getDataServiceData(this._onSelectCountSuccessDelegate,null,uri);
}else{
this._getData(this.ClientSettings.DataBinding.Location,this.ClientSettings.DataBinding.SelectCountMethod,"{}",this._onSelectCountSuccessDelegate);
}
}
}else{
_456.set_virtualItemCount(_455[_45b]);
}
_456.set_dataSource(data);
_456.dataBind();
},_onFail:function(_45e){
throw new Error(_45e);
},_onSelectCountSuccess:function(_45f){
if(typeof (_45f.d)!="undefined"){
_45f=_45f.d;
}
if(typeof (_45f[this.ClientSettings.DataBinding.SelectCountMethod])!="undefined"){
_45f=_45f[this.ClientSettings.DataBinding.SelectCountMethod];
}
var _460=this.get_masterTableView();
_460.set_virtualItemCount(_45f);
},_onCommand:function(_461,args){
args.set_cancel(true);
var _463=this.get_masterTableView();
if(this.ClientSettings.DataBinding.EnableCaching){
var _464=this._getCacheKey(_463);
if(!this._cache){
this._cache={};
}
if(this._cache[_464]){
this._onSuccess(this._cache[_464]);
return;
}
}
if(typeof (this.ClientSettings.DataBinding.SelectMethod)!="undefined"&&this.ClientSettings.DataBinding.SelectMethod!=""){
this._getData(this.ClientSettings.DataBinding.Location,this.ClientSettings.DataBinding.SelectMethod,this._getRequestData(),this._onSuccessDelegate);
}else{
if(typeof (this.ClientSettings.DataBinding.DataService)!="undefined"&&typeof (this.ClientSettings.DataBinding.DataService.TableName)!="undefined"&&this.ClientSettings.DataBinding.DataService.TableName!=""){
var _465=_463.getDataServiceQuery(this.ClientSettings.DataBinding.DataService.TableName);
var uri=String.format("{0}/{1}",this.ClientSettings.DataBinding.Location,_465);
this._getDataServiceData(this._onSuccessDelegate,this._onFailDelegate);
}
}
},repaint:function(){
if(Telerik.Web.UI.GridScrolling&&this._scrolling){
this._scrolling.onWindowResize();
}
},onWindowResize:function(){
this.resizeModalBackground();
},resizeModalBackground:function(){
var _467=String.format("modalDivId_{0}",this.get_id());
var _468=$get(_467);
if(_468){
_468.style.width="1px";
_468.style.height="1px";
_468.style.width=document.documentElement.scrollWidth+"px";
_468.style.height=document.documentElement.scrollHeight+"px";
}
},_popUpMouseDown:function(e){
this.canMove=true;
this.originalLeft=this.offsetLeft-e.clientX;
this.originalTop=this.offsetTop-e.clientY;
if(!($telerik.isFirefox&&e.button==2&&navigator.userAgent.indexOf("Mac"))){
Telerik.Web.UI.Grid.ClearDocumentEvents();
}
return false;
},_popUpMouseOut:function(e){
if(!this.canMove){
return;
}
var _46b;
if(e.rawEvent.relatedTarget){
_46b=e.rawEvent.relatedTarget;
}else{
_46b=e.rawEvent.toElement;
}
if(!_46b){
this.canMove=false;
Telerik.Web.UI.Grid.RestoreDocumentEvents();
}
return false;
},_popUpMouseUp:function(e){
if(!this.canMove){
return;
}
this.canMove=false;
var _46d=this.getElementsByTagName("div")[0];
var _46e=_46d.id;
var _46f=_46e.split("__")[0];
var _470=$find(_46f);
if(_470){
var grid=_470._owner;
grid._popUpLocations[_46e]=this.style.left+","+this.style.top;
grid.updateClientState();
grid.resizeModalBackground();
}
Telerik.Web.UI.Grid.RestoreDocumentEvents();
},_popUpMouseMove:function(e){
if(this.canMove){
this.style.left=e.clientX+this.originalLeft+"px";
this.style.top=e.clientY+this.originalTop+"px";
return false;
}
},_isRowDragged:function(e){
return $get(String.format("{0}_DraggedRows",this.get_id()))!=null;
},_mouseOut:function(e){
},_mouseDown:function(e){
if(!this._canRiseRowEvent(e)){
return;
}
if(this._selectedIndexes.length==0&&this.get_allowMultiRowSelection()){
return;
}
if(this._draggedItems){
this._draggedItems=[];
}
var row=Telerik.Web.UI.Grid.GetFirstParentByTagName(Telerik.Web.UI.Grid.GetCurrentElement(e),"tr");
if(row.id==""){
return;
}
var item=this.get_masterTableView()._getRowByIndexOrItemIndexHierarchical(row);
var _478=item.id.split("__")[0];
var _479=$find(_478);
if(!_479){
return;
}
var _47a=false;
for(var i=0;i<this._selectedItemsInternal.length;i++){
if(this._selectedItemsInternal[i].id==row.id){
_47a=true;
break;
}
}
if(!_47a){
if(Telerik.Web.UI.GridSelection&&this._selection&&!this.get_allowMultiRowSelection()){
var _47c=this.ClientSettings.EnablePostBackOnRowClick;
this.ClientSettings.EnablePostBackOnRowClick=false;
this._selection._click(e);
this.ClientSettings.EnablePostBackOnRowClick=_47c;
}else{
return;
}
}
this._canMoveRow=true;
this._originalDragItem=row;
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(row,e);
this.raise_rowDragStarted(args);
if(args.get_cancel()){
return;
}
this._draggedRow=document.createElement("div");
this._draggedRow.id=String.format("{0}_DraggedRows",this.get_id());
this._draggedRow.style.position="absolute";
this._draggedRow.className=this.get_element().className;
var _47e=[];
var _47f=_479.get_selectedItems();
for(var i=0;i<_47f.length;i++){
if(Array.contains(_479.get_dataItems(),_47f[i])){
var _480=_47f[i].get_element();
_47e[_47e.length]=String.format("<tr class='{0}'>",_480.className);
_47e[_47e.length]=_480.innerHTML;
_47e[_47e.length]="</tr>";
Array.add(this._draggedItems,_47f[i]);
}
}
this._draggedRow.innerHTML=String.format("<table class='{0}'><tbody>{1}</tbody></table>",row.parentNode.parentNode.className,_47e.join(""));
var _481=this._draggedRow.getElementsByTagName("table")[0];
if(this._draggedRow.mergeAttributes){
this._draggedRow.mergeAttributes(this.get_element());
}else{
Telerik.Web.UI.Grid.CopyAttributes(this._draggedRow,this.get_element());
}
this._draggedRow.style.height="";
if(_481.mergeAttributes){
_481.mergeAttributes(row.parentNode.parentNode);
}else{
Telerik.Web.UI.Grid.CopyAttributes(_481,row.parentNode.parentNode);
}
this._draggedRow.style.zIndex=99999;
this._draggedRow.style.display="none";
this._draggedRow.style.width=this.get_element().offsetWidth+"px";
document.body.insertBefore(this._draggedRow,document.body.firstChild);
this._createDropClue();
if(!($telerik.isFirefox&&e.button==2&&navigator.userAgent.indexOf("Mac"))){
Telerik.Web.UI.Grid.ClearDocumentEvents();
}
return false;
},_createDropClue:function(){
this._dropClue=document.createElement("div");
document.body.appendChild(this._dropClue);
this._dropClue.style.position="absolute";
this._dropClue.style.height="5px";
},_positionDropClue:function(e){
if(this._dropClue==e.target){
return;
}
if(!this.get_masterTableView()){
return;
}
var _483=Telerik.Web.UI.Grid.GetCurrentElement(e);
var _484=null;
if(_483){
var row=Telerik.Web.UI.Grid.GetFirstParentByTagName(_483,"tr");
if(row&&row.id!=""){
var _486=this._getParentRadGridControl(_483);
if(Telerik.Web.UI.Grid.IsChildOf(_483,this.get_element())){
if(row!=this._originalDragItem){
_484=this.get_masterTableView()._getRowByIndexOrItemIndexHierarchical(row);
}
}else{
if(_486){
if(!_486.get_masterTableView()){
return;
}
var row=Telerik.Web.UI.Grid.GetFirstParentByTagName(_483,"tr");
_484=_486.get_masterTableView()._getRowByIndexOrItemIndexHierarchical(row);
}
}
}
}
if(!_484){
this._dropClue.style.visibility="hidden";
return;
}
this._dropClue.row=_484;
this._dropClue.style.width=_484.offsetWidth+"px";
var _487=_484;
var _488=$telerik.getLocation(_487);
this._dropClue.style.left=_488.x+"px";
var _489=this._getMousePosition(e);
this._dropClue.style.display="";
this._dropClue.style.visibility="visible";
if(_489.y<(_488.y+(_487.offsetHeight/2))){
this._dropClue.style.top=(_488.y)+"px";
if(this.Skin!=""){
this._dropClue.className=String.format("GridItemDropIndicator_{0}",this.Skin);
}else{
this._dropClue.style.borderTop="1px dotted black";
this._dropClue.style["font-size"]="3px";
this._dropClue.style["line-height"]="3px";
this._dropClue.style.height="1px";
}
this._draggingPosition="above";
}else{
this._dropClue.style.top=(_488.y+_487.offsetHeight)+"px";
if(this.Skin!=""){
this._dropClue.className=String.format("GridItemDropIndicator_{0}",this.Skin);
}else{
this._dropClue.style.borderTop="1px dotted black";
this._dropClue.style["font-size"]="3px";
this._dropClue.style["line-height"]="3px";
this._dropClue.style.height="1px";
}
this._draggingPosition="below";
}
},_getMousePosition:function(e){
var _48b=$telerik.getScrollOffset(document.body,true);
var _48c=e.clientX;
var _48d=e.clientY;
_48c+=_48b.x;
_48d+=_48b.y;
return {x:_48c,y:_48d};
},_mouseUp:function(e){
this._canMoveRow=false;
if(this._draggedRow){
if(!this.get_masterTableView()){
this._clearDrag();
return;
}
this._draggedRow.parentNode.removeChild(this._draggedRow);
this._draggedRow=null;
var _48f=Telerik.Web.UI.Grid.GetCurrentElement(e);
if(_48f){
if(_48f==this._dropClue){
_48f=this._dropClue.row;
}
var r=Telerik.Web.UI.Grid.GetFirstParentByTagName(_48f,"tr");
if(r==this._originalDragItem){
this._clearDrag();
return;
}
var _491=this._draggingPosition;
if(r&&r.id==""){
r=null;
_491=null;
}
var _492=this._draggedItems;
var _493=new Telerik.Web.UI.GridDragDropCancelEventArgs(r,e,_492,_48f,null,_491);
this.raise_rowDropping(_493);
if(!_493.get_cancel()){
var _494=this._getParentRadGridControl(_48f);
if(_494){
var row=Telerik.Web.UI.Grid.GetFirstParentByTagName(_48f,"tr");
if(!row||row==this._originalDragItem||!_494.get_masterTableView()){
this._clearDrag();
return;
}
var _496=row;
var _497=_494.get_masterTableView()._data.UniqueID;
if(row.id!=""){
_496=_494.get_masterTableView()._getRowByIndexOrItemIndexHierarchical(row);
}else{
var _498=false;
if(_494.get_masterTableView().get_element().tBodies.length>0){
for(var j=0,_49a=_494.get_masterTableView().get_element().tBodies[0].rows.length;j<_49a;j++){
if(row==_494.get_masterTableView().get_element().tBodies[0].rows[j]){
_498=true;
break;
}
var _49b=_494.get_masterTableView().get_element().tBodies[0].rows[j].getElementsByTagName("table");
for(var k=0,len2=_49b.length;k<len2;k++){
if(_49b[k]&&this._isChildRowElement(row,_49b[k])){
var _49e=$find(_49b[k].id);
if(_49e){
_497=_49e._data.UniqueID;
}
_498=true;
break;
}
}
if(_498){
break;
}
}
}
if(!_498){
return;
}
}
var _492=this._draggedItems;
var args=null;
if(_496.id!=""){
args=new Telerik.Web.UI.GridDragDropCancelEventArgs(_496,e,_492,null,_494,this._draggingPosition);
}else{
args=new Telerik.Web.UI.GridDragDropCancelEventArgs(null,e,_492,null,_494,this._draggingPosition);
}
this.raise_rowDropped(args);
this._draggedItemsIndexes=[];
for(var i=0,_4a1=_492.length;i<_4a1;i++){
Array.add(this._draggedItemsIndexes,_492[i]._itemIndexHierarchical);
}
this.updateClientState();
var _4a2=_496.id.split("__")[1];
var _4a3=String.format("{0},{1},{2},{3}",_4a2,_494.UniqueID,this._draggingPosition,_497);
this.get_masterTableView().fireCommand("RowDropped",_4a3);
}else{
var _4a4=_493.get_destinationHtmlElement();
var _492=this._draggedItems;
var args=new Telerik.Web.UI.GridDragDropCancelEventArgs(null,e,_492,_4a4,null,null);
this.raise_rowDropped(args);
this._draggedItemsIndexes=[];
for(var i=0,_4a1=_492.length;i<_4a1;i++){
Array.add(this._draggedItemsIndexes,_492[i]._itemIndexHierarchical);
}
this.updateClientState();
if(_4a4.id){
var _4a3=String.format("{0},{1},{2},{3}",_4a4.id,"","","");
}
this.get_masterTableView().fireCommand("RowDroppedHtml",_4a3);
}
}
}
Telerik.Web.UI.Grid.RestoreDocumentEvents();
}
this._clearDrag();
},_clearDrag:function(){
if(this._dropClue){
document.body.removeChild(this._dropClue);
this._dropClue=null;
}
if(this._draggedItems){
this._draggedItems=[];
}
this._draggingPosition="above";
Telerik.Web.UI.Grid.RestoreDocumentEvents();
},_isChildRowElement:function(row,_4a6){
for(var j=0,_4a8=_4a6.tBodies[0].rows.length;j<_4a8;j++){
if(row==_4a6.tBodies[0].rows[j]){
return true;
}
}
return false;
},_getParentRadGridControl:function(node){
while(node.parentNode){
if(node.parentNode.id&&node.parentNode.id!=""){
try{
var _4aa=$find(node.parentNode.id);
if(_4aa&&Object.getType(_4aa).getName()=="Telerik.Web.UI.RadGrid"){
return _4aa;
}
}
catch(e){
}
}
node=node.parentNode;
}
return null;
},_cancelEvent:function(e){
return false;
},_mouseMove:function(e){
if(this._canMoveRow&&this._draggedRow){
this._draggedRow.style.display="";
this._draggedRow.style.position="absolute";
Telerik.Web.UI.Grid.PositionDragElement(this._draggedRow,e);
this._positionDropClue(e);
if(this.ClientSettings.Scrolling.AllowScroll&&this.GridDataDiv){
this._autoScroll();
}
return false;
}
},_autoScroll:function(){
var topY,_4ae;
var _4af=this.GridDataDiv;
if(!this._draggedRow||!this.GridDataDiv){
return;
}
var _4b0=$telerik.getLocation(this._draggedRow);
topY=$telerik.getLocation(_4af).y;
_4ae=topY+_4af.offsetHeight;
var _4b1=_4af.scrollTop<=0;
var _4b2=_4af.scrollTop>=(_4af.scrollHeight-_4af.offsetHeight+16);
var _4b3=_4b0.y-topY;
var _4b4=_4ae-_4b0.y;
var grid=this;
if(_4b3<50&&!_4b1){
var _4b6=(10-(_4b3/5));
_4af.scrollTop=_4af.scrollTop-_4b6;
window.setTimeout(function(){
grid._autoScroll();
},100);
}else{
if(_4b4<50&&!_4b2){
var _4b6=(10-(_4b4/5));
_4af.scrollTop=_4af.scrollTop+_4b6;
window.setTimeout(function(){
grid._autoScroll(this._mousePos);
},100);
}
}
},dispose:function(){
var _4b7=$get(String.format("modalDivId_{0}",this.get_id()));
if(_4b7){
_4b7.parentNode.removeChild(_4b7);
}
if(this._onResizeDelegate){
try{
$removeHandler(window,"resize",this._onResizeDelegate);
this._onResizeDelegate=null;
}
catch(e){
}
}
if(this._gridItemResizer){
this._gridItemResizer.dispose();
}
if(this._popUpIds&&this._popUpIds!=""){
var _4b8=eval(this._popUpIds);
for(var i=0;i<_4b8.length;i++){
var el=$get(_4b8[i]);
if(el){
var divs=el.getElementsByTagName("div");
if(divs.length>0){
$clearHandlers(divs[0]);
}
}
}
}
if(this._isAjaxRequest){
}
this.raise_gridDestroying(new Sys.EventArgs());
$clearHandlers(this.get_element());
if(this._selection){
this._selection.dispose();
}
if(this._scrolling){
this._scrolling.dispose();
}
if(this._filterMenu){
if(this._onFilterMenuClick){
this._filterMenu.remove_itemClicked(this._onFilterMenuClicking);
this._filterMenu.remove_itemClicked(this._onFilterMenuClick);
}
this._filterMenu=null;
}
if(this._headerContextMenu){
this._headerContextMenu=null;
}
if(Sys.WebForms&&Sys.WebForms.PageRequestManager){
var _4bc=Sys.WebForms.PageRequestManager.getInstance();
if(_4bc&&this._initializeRequestHandler){
_4bc.remove_initializeRequest(this._initializeRequestHandler);
}
}
if(this.GridDataDiv){
$clearHandlers(this.GridDataDiv);
}
if(this.GridHeaderDiv){
$clearHandlers(this.GridHeaderDiv);
}
if(this.GridFooterDiv){
$clearHandlers(this.GridFooterDiv);
}
if(this._groupPanel&&this._groupPanel.get_element()){
$clearHandlers(this._groupPanel.get_element());
}
this._draggedItems=null;
this.Control=null;
this.GridDataDiv=null;
this.GridHeaderDiv=null;
this.GridFooterDiv=null;
this.PagerControl=null;
this.TopPagerControl=null;
this.MasterTableView=null;
this.MasterTableViewHeader=null;
this.MasterTableViewFooter=null;
this._hidedColumns=[];
this._showedColumns=[];
Telerik.Web.UI.RadGrid.callBaseMethod(this,"dispose");
},_destroyTree:function(_4bd){
if(_4bd.nodeType===1){
var _4be=_4bd.childNodes;
for(var i=_4be.length-1;i>=0;i--){
var node=_4be[i];
if(node.nodeType===1){
if(node.dispose&&typeof (node.dispose)==="function"){
node.dispose();
}else{
if(node.control&&typeof (node.control.dispose)==="function"){
node.control.dispose();
}
}
var _4c1=Sys.UI.Behavior.getBehaviors(node);
for(var j=_4c1.length-1;j>=0;j--){
_4c1[j].dispose();
}
this._destroyTree(node);
}
}
}
},_initializeRequest:function(_4c3,args){
if(Telerik.Web.UI.Grid.IsChildOf(args.get_postBackElement(),this.get_element())||args.get_postBackElement()==this.get_element()){
if(this._statusLabelID&&this._statusLabelID!=""){
var _4c5=$get(this._statusLabelID);
if(_4c5){
_4c5.innerHTML=this._loadingText;
}
}
this._isAjaxRequest=true;
}
},get_selectedItemsInternal:function(){
return this._selectedItemsInternal;
},set_selectedItemsInternal:function(_4c6){
if(this._selectedItemsInternal!=_4c6){
this._selectedItemsInternal=_4c6;
}
},get_allowMultiRowSelection:function(){
return this.AllowMultiRowSelection;
},set_allowMultiRowSelection:function(_4c7){
if(this.AllowMultiRowSelection!=_4c7){
this.AllowMultiRowSelection=_4c7;
}
},get_masterTableView:function(){
return $find(this._masterClientID);
},get_masterTableViewHeader:function(){
return $find(this._masterClientID+"_Header");
},get_masterTableViewFooter:function(){
return $find(this._masterClientID+"_Footer");
},get_selectedItems:function(){
var _4c8=[];
for(var i=0;i<this._selectedItemsInternal.length;i++){
Array.add(_4c8,$find(this._selectedItemsInternal[i].id));
}
return _4c8;
},clearSelectedItems:function(){
if(this._selectedItemsInternal.length>0){
var i=this._selectedItemsInternal.length-1;
while(i>=0){
var item=$find(this._selectedItemsInternal[i].id);
if(item){
item.set_selected(false);
}else{
this._owner._selection._selectRowInternal($get(this._selectedItemsInternal[i].id),{"ctrlKey":false},true,true,true);
}
i--;
}
}
},_initializeTableViews:function(){
var _4cc=eval(this._gridTableViewsData);
for(var i=0;i<_4cc.length;i++){
var data=_4cc[i];
if(!data.ClientID){
continue;
}
if($find(data.ClientID)!=null){
continue;
}
if($get(data.ClientID)==null){
continue;
}
if(this._masterClientID!=data.ClientID){
this.raise_tableCreating(new Sys.EventArgs());
}
var _4cf=$create(Telerik.Web.UI.GridTableView,{_owner:this,_data:data},null,null,$get(data.ClientID));
if(this._masterClientID!=data.ClientID){
var args=new Sys.EventArgs();
args.get_tableView=function(){
return _4cf;
};
Array.add(this._detailTables,_4cf);
this.raise_tableCreated(args);
}
if(this._masterClientID==data.ClientID){
this.raise_masterTableViewCreating(new Sys.EventArgs());
this.MasterTableView=_4cf;
this.raise_masterTableViewCreated(new Sys.EventArgs());
if($get(data.ClientID+"_Header")){
this.MasterTableViewHeader=$create(Telerik.Web.UI.GridTableView,{_owner:this,_data:data},null,null,$get(data.ClientID+"_Header"));
this.MasterTableView._columnsInternal=this.MasterTableViewHeader._columnsInternal;
}
if($get(data.ClientID+"_Footer")){
this.MasterTableViewFooter=$create(Telerik.Web.UI.GridTableView,{_owner:this,_data:data},null,null,$get(data.ClientID+"_Footer"));
}
}
}
},get_detailTables:function(){
return this._detailTables;
},_initializeEvents:function(_4d1){
if(_4d1){
var _4d2=this;
for(var i=0,l=_4d1.length;i<l;i++){
var name=_4d1[i];
this["add_"+name]=function(_4d6){
return function(_4d7){
this.get_events().addHandler(_4d6,_4d7);
};
}(name);
this["remove_"+name]=function(_4d8){
return function(_4d9){
this.get_events().removeHandler(_4d8,_4d9);
};
}(name);
this["raise_"+name]=function(_4da){
return function(args){
this.raiseEvent(_4da,args);
};
}(name);
}
}
},_selectAllRows:function(_4dc,_4dd,e){
var el=(e.srcElement)?e.srcElement:e.target;
var _4e0=$find(_4dc);
var _4e1=_4e0.get_element();
var _4e2=(el.checked)?true:false;
for(var i=0,_4e4=_4e1.rows.length;i<_4e4;i++){
var row=_4e1.rows[i];
if(!row.id){
continue;
}
this._selection._selectRowInternal(row,e,true,false,false,_4e2);
}
if(_4e1.rows.length>0){
this.updateClientState();
}
},_showFilterMenu:function(_4e6,_4e7,e){
var _4e9=$find(_4e6);
var _4ea=_4e9.getColumnByUniqueName(_4e7);
var _4eb=this._getFilterMenu();
if(this._filterMenu){
var menu=this._filterMenu;
var args=new Sys.CancelEventArgs();
args.get_menu=function(){
return menu;
};
args.get_tableView=function(){
return _4e9;
};
args.get_column=function(){
return _4ea;
};
args.get_domEvent=function(){
return e;
};
this.raise_filterMenuShowing(args);
if(args.get_cancel()){
return;
}
this._buildFilterMenuItemList(this._filterMenu,_4ea._data.FilterListOptions,_4ea._data.DataTypeName,_4ea._data.CurrentFilterFunction,_4ea);
this._onFilterMenuClicking=Function.createDelegate(this,this._filterMenuClickingHandler);
this._filterMenu.add_itemClicking(this._onFilterMenuClicking);
this._filterMenu.show(e);
}
},_getFilterMenu:function(){
if(Telerik.Web.UI.RadContextMenu&&!this._filterMenu){
this._filterMenu=$find(this.ClientID+"_rfltMenu");
}
return this._filterMenu;
},get_headerMenu:function(){
return this._getHeaderContextMenu();
},_getHeaderContextMenu:function(){
if(Telerik.Web.UI.RadContextMenu&&!this._headerContextMenu){
this._headerContextMenu=$find(this.ClientID+"_rghcMenu");
}
return this._headerContextMenu;
},_filterMenuClickingHandler:function(_4ee,_4ef){
var _4f0=_4ef.get_item()._filterMenu_tableID;
var _4f1=$find(_4f0);
if(_4f1!=null){
var _4f2=_4ef.get_item().get_value();
var _4f3=_4ef.get_item()._filterMenu_column_uniqueName;
var _4f4=_4f1._getTableFilterRow();
var _4f5=_4f1._getCellIndexByColumnUniqueNameFromTableRowElement(_4f4,_4f3);
var _4f6=_4f4.cells[_4f5].getElementsByTagName("input")[0];
var _4f7=_4f6.value;
var _4f8=_4f1.getColumnByUniqueName(_4f3);
if(_4f8&&_4f8._data.ColumnType=="GridDateTimeColumn"){
var _4f9=$find(_4f6.id);
if(_4f9&&(Object.getType(_4f9).getName()=="Telerik.Web.UI.RadDateTimePicker"||Object.getType(_4f9).getName()=="Telerik.Web.UI.RadDatePicker")){
_4f7=_4f9.get_dateInput().get_value();
}
}
if(_4f8&&_4f8._data.ColumnType=="GridNumericColumn"){
var _4fa=$find(_4f6.id.replace("_text",""));
if(_4fa&&Object.getType(_4fa).getName()=="Telerik.Web.UI.RadNumericTextBox"){
_4f7=_4fa.get_value();
}
}
if(_4f6.type=="checkbox"){
_4f7=_4f6.checked;
}
if(_4f2=="NoFilter"){
if(_4f6.type=="checkbox"){
_4f6.checked=false;
}else{
_4f6.value="";
}
}else{
if(_4f7===""&&_4f6.type!="checkbox"&&(_4f2!="IsEmpty"&&_4f2!="NotIsEmpty"&&_4f2!="IsNull"&&_4f2!="NotIsNull")){
_4ee.hide();
return;
}
}
if(_4f7.replace){
_4f7=_4f7.replace(/'/g,"\\'");
}
if(!_4f1.filter(_4f3,_4f7,_4f2)){
_4ef.set_cancel(true);
this._filterMenu.remove_itemClicking(this._onFilterMenuClicking);
}
_4ee.hide();
}
},_buildFilterMenuItemList:function(menu,_4fc,_4fd,_4fe,_4ff){
for(var i=0;i<menu.get_items().get_count();i++){
var item=menu.get_items().getItem(i);
item._filterMenu_column_uniqueName=_4ff.get_uniqueName();
item._filterMenu_tableID=_4ff._owner._data.ClientID;
if(_4fd=="System.Boolean"){
if((item.get_value()=="GreaterThan")||(item.get_value()=="LessThan")||(item.get_value()=="GreaterThanOrEqualTo")||(item.get_value()=="LessThanOrEqualTo")||(item.get_value()=="Between")||(item.get_value()=="NotBetween")){
item.set_visible(false);
continue;
}
}
if(_4fd!="System.String"){
if((item.get_value()=="StartsWith")||(item.get_value()=="EndsWith")||(item.get_value()=="Contains")||(item.get_value()=="DoesNotContain")||(item.get_value()=="IsEmpty")||(item.get_value()=="NotIsEmpty")){
item.set_visible(false);
continue;
}
}
if(_4fc==0){
if(item.get_value()=="Custom"){
item.set_visible(false);
continue;
}
}
if((_4ff._data.ColumnType=="GridDateTimeColumn"||_4ff._data.ColumnType=="GridMaskedColumn"||_4ff._data.ColumnType=="GridNumericColumn")&&((item.get_value()=="Between")||(item.get_value()=="NotBetween"))){
item.set_visible(false);
continue;
}
if(item.get_value()==_4ff._data.CurrentFilterFunctionName){
item._focused=true;
item._updateLinkClass();
}else{
item._focused=false;
item._updateLinkClass();
}
item.set_visible(true);
}
},saveClientState:function(){
var _502={};
_502["selectedIndexes"]=this._selectedIndexes;
_502["reorderedColumns"]=this._reorderedColumns;
_502["expandedItems"]=this._expandedItems;
_502["expandedGroupItems"]=this._expandedGroupItems;
if(this._expandedFilterItems){
_502["expandedFilterItems"]=this._expandedFilterItems;
}
_502["deletedItems"]=this._deletedItems;
if(this._resizedColumns!=""){
_502["resizedColumns"]=this._resizedColumns;
}
if(this._resizedControl!=""){
_502["resizedControl"]=this._resizedControl;
}
if(this._resizedItems!=""){
_502["resizedItems"]=this._resizedItems;
}
if(this._hidedItems!=""){
_502["hidedItems"]=this._hidedItems;
}
if(this._showedItems!=""){
_502["showedItems"]=this._showedItems;
}
if(this._hidedColumns){
_502["hidedColumns"]=this._hidedColumns;
}
if(this._showedColumns){
_502["showedColumns"]=this._showedColumns;
}
if(this._activeRow){
_502["activeRowIndex"]=this._activeRow.id;
}
if(this._gridDataDiv){
if($get(this.ClientID+"_Frozen")){
_502["scrolledPosition"]=this._gridDataDiv.scrollTop+","+$get(this.ClientID+"_Frozen").scrollLeft;
}else{
_502["scrolledPosition"]=this._gridDataDiv.scrollTop+","+this._gridDataDiv.scrollLeft;
}
}
if(this._popUpLocations){
_502["popUpLocations"]=this._popUpLocations;
}
if(this._draggedItemsIndexes){
_502["draggedItemsIndexes"]=this._draggedItemsIndexes;
}
return Sys.Serialization.JavaScriptSerializer.serialize(_502);
},_attachDomEvents:function(){
this._onKeyDownDelegate=Function.createDelegate(this,this._onKeyDownHandler);
this._onKeyPressDelegate=Function.createDelegate(this,this._onKeyPressHandler);
this._onMouseMoveDelegate=Function.createDelegate(this,this._onMouseMoveHandler);
$addHandler(this.get_element(),"keydown",this._onKeyDownDelegate);
$addHandler(this.get_element(),"keypress",this._onKeyPressDelegate);
$addHandler(this.get_element(),"mousemove",this._onMouseMoveDelegate);
},_onMouseMoveHandler:function(e){
var _504=Telerik.Web.UI.Grid.GetCurrentElement(e);
if(this.ClientSettings&&this.ClientSettings.Resizing.AllowRowResize){
if(this._gridItemResizer==null){
this._gridItemResizer=new Telerik.Web.UI.GridItemResizer(this);
}
this._gridItemResizer._detectResizeCursorsOnItems(e,_504);
this._gridItemResizer._moveItemResizer(e);
}
},_onKeyDownHandler:function(e){
var _506=(e.keyCode>=37&&e.keyCode<=40);
if((Sys.Browser.agent==Sys.Browser.InternetExplorer||$telerik.isChrome)&&_506){
this._raiseKeyPressInternal(e);
}
},_onKeyPressHandler:function(e){
this._raiseKeyPressInternal(e);
},_raiseKeyPressInternal:function(e){
var args=new Telerik.Web.UI.GridKeyPressEventArgs(e);
this.raise_keyPress(args);
if(args.get_cancel()){
return;
}
this._handleGridKeyboardAction(e);
},_handleGridKeyboardAction:function(e){
var _50b=e.keyCode||e.charCode;
if(this.ClientSettings&&this.ClientSettings.AllowKeyboardNavigation){
var _50c=(_50b==38||_50b==40);
var _50d=(_50b==32&&this.ClientSettings.Selecting&&this.ClientSettings.Selecting.AllowRowSelect);
var _50e=(_50b==13);
var _50f=(_50b==37||_50b==39);
if(_50c){
this._handleActiveRowNavigation(e);
}else{
if(_50f){
this._handleActiveRowExpandCollapse(e);
}else{
if(_50d){
this._handleActiveRowSelection(e);
}else{
if(_50e){
this._handleActiveRowEdit(e);
}
}
}
}
}
},_handleActiveRowNavigation:function(e){
var _511=e.keyCode||e.charCode;
var _512=Telerik.Web.UI.Grid.GetCurrentElement(e);
if(_512!=null&&_512.tagName&&(_512.tagName.toLowerCase()=="input"||_512.tagName.toLowerCase()=="textarea")){
return;
}
var _513=null;
if(this._activeRow){
_513=this._getNextActiveRow(this._activeRow,_511);
}else{
_513=this.get_masterTableView()._getFirstDataRow();
}
if(!_513){
return;
}
this._setActiveRow(_513,e);
e.preventDefault();
},_setActiveRow:function(row,_515){
if(row&&this.ClientSettings&&this.ClientSettings.AllowKeyboardNavigation){
var args=new Telerik.Web.UI.GridDataItemCancelEventArgs(this._activeRow,_515);
this.raise_activeRowChanging(args);
if(args.get_cancel()){
return;
}
if(this._activeRow){
var _517=$find(this._activeRow.id.split("__")[0]);
Telerik.Web.UI.Grid.ClearItemStyle(this._activeRow,_517._data._renderActiveItemStyle,_517._data._renderActiveItemStyleClass);
}
this._activeRow=row;
var _518=$find(row.id.split("__")[0]);
Telerik.Web.UI.Grid.SetItemStyle(row,_518._data._renderActiveItemStyle,_518._data._renderActiveItemStyleClass);
Telerik.Web.UI.Grid.ScrollIntoView(row);
this.updateClientState();
this.raise_activeRowChanged(new Telerik.Web.UI.GridDataItemEventArgs(this._activeRow,_515));
}
},set_activeRow:function(row){
this._setActiveRow(row,null);
},_handleActiveRowExpandCollapse:function(e){
var _51b=e.keyCode||e.charCode;
if(!this._activeRow){
return;
}
var _51c=$find(this._activeRow.id.split("__")[0]);
if(_51b==37){
var _51d=_51c._getNextNestedDataRow(this._activeRow);
if(_51d&&_51d.parentNode.style.display!="none"){
_51c.collapseItem(this._activeRow);
}
}else{
if(_51b==39){
var _51e=Telerik.Web.UI.Grid.GetNodeNextSiblingByTagName(this._activeRow,"tr");
if(_51e&&_51e.style.display=="none"){
_51c.expandItem(this._activeRow);
}
}
}
},_handleActiveRowSelection:function(e){
if(this._activeRow){
this._selection._selectRowInternal(this._activeRow,{"ctrlKey":this.get_allowMultiRowSelection()},false,true,true);
e.preventDefault();
}
},_handleActiveRowEdit:function(e){
if(this._activeRow){
e.preventDefault();
var _521=$find(this._activeRow.id.split("__")[0]);
if(_521){
_521.editItem(this._activeRow);
}
}
},_getNextActiveRow:function(_522,_523){
var _524=null;
var _525=null;
var _526=$find(_522.id.split("__")[0]);
var _527=(this.get_masterTableView().get_id()==_526.get_id());
if(_523==38){
var _528=_526._getPreviousDataRow(_522);
if(_528){
var _529=Telerik.Web.UI.Grid.GetNodePreviousSiblingByTagName(_522,"tr");
if(_529&&_529.style.display!="none"){
_525=Telerik.Web.UI.Grid.GetLastNestedTableView(_528);
if(_525){
_524=_525._getLastDataRow();
}
}
}
if(!_524){
_524=_526._getPreviousDataRow(_522);
if(!_524&&!_527){
var _52a=Telerik.Web.UI.Grid.GetNodePreviousSiblingByTagName(_526.get_element(),"table");
if(_52a){
siblingTableView=$find(_52a.id.split("__")[0]);
if(siblingTableView){
_524=siblingTableView._getLastDataRow();
}
}
}
if(!_524&&!_527){
_524=_526.get_parentRow();
}
}
}else{
if(_523==40){
var _52b=Telerik.Web.UI.Grid.GetNodeNextSiblingByTagName(_522,"tr");
if(_52b&&_52b.style.display!="none"){
_525=Telerik.Web.UI.Grid.GetNestedTableView(_522);
if(_525){
_524=_525._getNextNestedDataRow(_522);
}
}
if(!_524){
_524=_526._getNextDataRow(_522);
if(!_524&&!_527){
var _52a=Telerik.Web.UI.Grid.GetNodeNextSiblingByTagName(_526.get_element(),"table");
if(_52a){
siblingTableView=$find(_52a.id.split("__")[0]);
if(siblingTableView){
_524=siblingTableView._getFirstDataRow();
}
}
}
if(!_524&&!_527){
var _52c=_526.get_parentView();
if(_52c){
var _52d=_526.get_parentRow();
_524=_52c._getNextDataRow(_52d);
}
}
}
}
}
return _524;
},_click:function(e){
if(!this._canRiseRowEvent(e)){
return;
}
var row=Telerik.Web.UI.Grid.GetFirstParentByTagName(Telerik.Web.UI.Grid.GetCurrentElement(e),"tr");
if(row&&row.id!=""&&row.id.split("__").length==2){
this.raise_rowClick(new Telerik.Web.UI.GridDataItemEventArgs(row,e));
}
},_dblclick:function(e){
if(!this._canRiseRowEvent(e)){
return;
}
var row=Telerik.Web.UI.Grid.GetFirstParentByTagName(Telerik.Web.UI.Grid.GetCurrentElement(e),"tr");
if(row&&row.id!=""){
this.raise_rowDblClick(new Telerik.Web.UI.GridDataItemEventArgs(row,e));
}
},_contextmenu:function(e){
var row=Telerik.Web.UI.Grid.GetFirstParentByTagName(Telerik.Web.UI.Grid.GetCurrentElement(e),"tr");
var args=null;
if(row&&row.id!=""&&row.id.split("__").length==2){
args=new Telerik.Web.UI.GridDataItemCancelEventArgs(row,e);
this.raise_rowContextMenu(args);
}
if((args&&!args.get_cancel())&&this.get_events().getHandler("rowContextMenu")){
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue=false;
return false;
}
}
},_mouseover:function(e){
if(this._overRow){
this.raise_rowMouseOut(new Telerik.Web.UI.GridDataItemEventArgs(this._overRow,e));
if(this.Skin!=""&&this.ClientSettings.EnableRowHoverStyle){
Sys.UI.DomElement.removeCssClass(this._overRow,"GridRowOver_"+this.Skin);
}
}
var row=Telerik.Web.UI.Grid.GetFirstParentByTagName(Telerik.Web.UI.Grid.GetCurrentElement(e),"tr");
if(row&&row.id!=""&&row.id.split("__").length==2){
this.raise_rowMouseOver(new Telerik.Web.UI.GridDataItemEventArgs(row,e));
if(this.Skin!=""&&this.ClientSettings.EnableRowHoverStyle){
Sys.UI.DomElement.addCssClass(row,"GridRowOver_"+this.Skin);
}
this._overRow=row;
}
},_mouseout:function(e){
if(this._overRow){
this.raise_rowMouseOut(new Telerik.Web.UI.GridDataItemEventArgs(this._overRow,e));
if(this.Skin!=""&&this.ClientSettings.EnableRowHoverStyle){
Sys.UI.DomElement.removeCssClass(this._overRow,"GridRowOver_"+this.Skin);
}
}
this._overRow=null;
},_canRiseRowEvent:function(e){
var el=Telerik.Web.UI.Grid.GetCurrentElement(e);
if(!el||!el.tagName||el.tagName.toLowerCase()=="input"||el.tagName.toLowerCase()=="select"||el.tagName.toLowerCase()=="option"||el.tagName.toLowerCase()=="button"||el.tagName.toLowerCase()=="a"||el.tagName.toLowerCase()=="textarea"||el.tagName.toLowerCase()=="img"){
return false;
}
if(this.get_masterTableView()&&!Telerik.Web.UI.Grid.IsChildOf(el,this.get_masterTableView().get_element())){
return false;
}
return true;
},confirm:function(text,e,_53c,_53d,_53e){
if(window.confirmResult){
window.confirmResult=false;
return true;
}
if(typeof (GetRadWindowManager)=="undefined"){
return confirm(text);
}
var _53f=GetRadWindowManager();
if(!_53f){
return confirm(text);
}
var el=e.srcElement?e.srcElement:e.target;
var _541=_53f._getStandardPopup("confirm",text);
if(typeof (_53c)=="undefined"){
_53c="Confirm";
}
if(typeof (_53d)=="undefined"){
_53d=280;
}
if(typeof (_53e)=="undefined"){
_53e=200;
}
_541.set_title(_53c);
_541.setSize(_53d,_53e);
_541.show();
_541.center();
_541.set_clientCallBackFunction(function(_542,_543){
_541.close();
_541.callBack=null;
if(_543){
window.confirmResult=true;
if(window.netscape&&el.href){
eval(el.href);
window.confirmResult=false;
return;
}
if(window.netscape&&el.type&&(el.type.toLowerCase()=="image"||el.type.toLowerCase()=="submit"||el.type.toLowerCase()=="button")){
__doPostBack(el.name,"");
window.confirmResult=false;
return;
}
if(el.click){
el.click(e);
}
}
return false;
});
return false;
}};
Telerik.Web.UI.RadGrid.registerClass("Telerik.Web.UI.RadGrid",Telerik.Web.UI.RadWebControl);
Telerik.Web.UI.GridKeyPressEventArgs=function(_544){
Telerik.Web.UI.GridKeyPressEventArgs.initializeBase(this);
this._keyCode=_544.keyCode||_544.charCode;
this._isShiftPressed=_544.shiftKey;
this._isCtrlPressed=_544.ctrlKey;
this._isAltPressed=_544.altKey;
this._domEvent=_544;
};
Telerik.Web.UI.GridKeyPressEventArgs.prototype={get_keyCode:function(){
return this._keyCode;
},get_isShiftPressed:function(){
return this._isShiftPressed;
},get_isCtrlPressed:function(){
return this._isCtrlPressed;
},get_isAltPressed:function(){
return this._isAltPressed;
},get_domEvent:function(){
return this._domEvent;
}};
Telerik.Web.UI.GridKeyPressEventArgs.registerClass("Telerik.Web.UI.GridKeyPressEventArgs",Sys.CancelEventArgs);
Telerik.Web.UI.GridDragDropCancelEventArgs=function(_545,_546,_547,_548,_549,_54a){
Telerik.Web.UI.GridDragDropCancelEventArgs.initializeBase(this);
this._targetItemId="";
this._targetItemIndexHierarchical="";
this._targetGridDataItem=null;
this._targetItemTableView=null;
this._targetItemDataKeyValues=null;
if(_545){
this._targetItemId=_545.id;
this._targetItemIndexHierarchical=this._targetItemId.split("__")[1];
this._targetGridDataItem=$find(this._targetItemId);
this._targetItemTableView=$find(this._targetItemId.split("__")[0]);
if(this._targetItemTableView&&this._targetItemTableView._owner._clientKeyValues&&this._targetItemTableView._owner._clientKeyValues[this._targetItemIndexHierarchical]){
this._targetItemDataKeyValues=this._targetItemTableView._owner._clientKeyValues[this._targetItemIndexHierarchical];
}
}
this._domEvent=_546;
this._dragedItems=_547;
this._htmlElement=_548;
this._targetRadGrid=_549;
this._dropPosition=_54a;
};
Telerik.Web.UI.GridDragDropCancelEventArgs.prototype={get_targetGridDataItem:function(){
return this._targetGridDataItem;
},get_targetItemIndexHierarchical:function(){
return this._targetItemIndexHierarchical;
},get_targetItemId:function(){
return this._targetItemId;
},get_targetItemTableView:function(){
return this._targetItemTableView;
},get_domEvent:function(){
return this._domEvent;
},get_TargetDataKeyValue:function(_54b){
return (this._targetItemDataKeyValues)?this._targetItemDataKeyValues[_54b]:null;
},get_draggedItems:function(){
return this._dragedItems;
},get_destinationHtmlElement:function(){
return this._htmlElement;
},set_destinationHtmlElement:function(_54c){
this._htmlElement=_54c;
},get_targetRadGrid:function(){
return this._targetRadGrid;
},get_dropPosition:function(){
return this._dropPosition;
}};
Telerik.Web.UI.GridDragDropCancelEventArgs.registerClass("Telerik.Web.UI.GridDragDropCancelEventArgs",Sys.CancelEventArgs);
Telerik.Web.UI.GridDataItemEventArgs=function(_54d,_54e){
Telerik.Web.UI.GridDataItemEventArgs.initializeBase(this);
this._id="";
this._itemIndexHierarchical="";
this._gridDataItem=null;
this._tableView=null;
this._dataKeyValues=null;
if(_54d){
this._id=_54d.id;
this._itemIndexHierarchical=this._id.split("__")[1];
this._gridDataItem=$find(this._id);
this._tableView=$find(this._id.split("__")[0]);
if(this._tableView&&this._tableView._owner._clientKeyValues&&this._tableView._owner._clientKeyValues[this._itemIndexHierarchical]){
this._dataKeyValues=this._tableView._owner._clientKeyValues[this._itemIndexHierarchical];
}
}
this._domEvent=_54e;
};
Telerik.Web.UI.GridDataItemEventArgs.prototype={get_item:function(){
return this._gridDataItem;
},get_gridDataItem:function(){
return this._gridDataItem;
},get_itemIndexHierarchical:function(){
return this._itemIndexHierarchical;
},get_id:function(){
return this._id;
},get_tableView:function(){
return this._tableView;
},get_domEvent:function(){
return this._domEvent;
},getDataKeyValue:function(_54f){
return (this._dataKeyValues)?this._dataKeyValues[_54f]:null;
}};
Telerik.Web.UI.GridDataItemEventArgs.registerClass("Telerik.Web.UI.GridDataItemEventArgs",Sys.EventArgs);
Telerik.Web.UI.GridDataItemCancelEventArgs=function(_550,_551){
Telerik.Web.UI.GridDataItemCancelEventArgs.initializeBase(this);
this._id="";
this._itemIndexHierarchical="";
this._gridDataItem=null;
this._tableView=null;
this._dataKeyValues=null;
if(_550){
this._id=_550.id;
this._itemIndexHierarchical=this._id.split("__")[1];
this._gridDataItem=$find(this._id);
this._tableView=$find(this._id.split("__")[0]);
if(this._tableView&&this._tableView._owner._clientKeyValues&&this._tableView._owner._clientKeyValues[this._itemIndexHierarchical]){
this._dataKeyValues=this._tableView._owner._clientKeyValues[this._itemIndexHierarchical];
}
}
this._domEvent=_551;
};
Telerik.Web.UI.GridDataItemCancelEventArgs.prototype={get_gridDataItem:function(){
return this._gridDataItem;
},get_itemIndexHierarchical:function(){
return this._itemIndexHierarchical;
},get_id:function(){
return this._id;
},get_tableView:function(){
return this._tableView;
},get_domEvent:function(){
return this._domEvent;
},getDataKeyValue:function(_552){
return (this._dataKeyValues)?this._dataKeyValues[_552]:null;
}};
Telerik.Web.UI.GridDataItemCancelEventArgs.registerClass("Telerik.Web.UI.GridDataItemCancelEventArgs",Sys.CancelEventArgs);
Telerik.Web.UI.GridClientDataBindingParameterType=function(){
};
Telerik.Web.UI.GridClientDataBindingParameterType.prototype={String:0,List:1,Linq:2,Oql:3};
Telerik.Web.UI.GridClientDataBindingParameterType.registerEnum("Telerik.Web.UI.GridClientDataBindingParameterType",false);


/* END Telerik.Web.UI.Grid.RadGridScripts.js */
/* START AjaxControlToolkit.Compat.Timer.Timer.js */
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />


///////////////////////////////////////////////////////////////////////////////
// Sys.Timer

Sys.Timer = function() {
    Sys.Timer.initializeBase(this);
    
    this._interval = 1000;
    this._enabled = false;
    this._timer = null;
}

Sys.Timer.prototype = {
    get_interval: function() {
        
        return this._interval;
    },
    set_interval: function(value) {
        
        if (this._interval !== value) {
            this._interval = value;
            this.raisePropertyChanged('interval');
            
            if (!this.get_isUpdating() && (this._timer !== null)) {
                this._stopTimer();
                this._startTimer();
            }
        }
    },
    
    get_enabled: function() {
        
        return this._enabled;
    },
    set_enabled: function(value) {
        
        if (value !== this.get_enabled()) {
            this._enabled = value;
            this.raisePropertyChanged('enabled');
            if (!this.get_isUpdating()) {
                if (value) {
                    this._startTimer();
                }
                else {
                    this._stopTimer();
                }
            }
        }
    },

    
    add_tick: function(handler) {
        
        
        this.get_events().addHandler("tick", handler);
    },

    remove_tick: function(handler) {
        
        
        this.get_events().removeHandler("tick", handler);
    },

    dispose: function() {
        this.set_enabled(false);
        this._stopTimer();
        
        Sys.Timer.callBaseMethod(this, 'dispose');
    },
    
    updated: function() {
        Sys.Timer.callBaseMethod(this, 'updated');

        if (this._enabled) {
            this._stopTimer();
            this._startTimer();
        }
    },

    _timerCallback: function() {
        var handler = this.get_events().getHandler("tick");
        if (handler) {
            handler(this, Sys.EventArgs.Empty);
        }
    },

    _startTimer: function() {
        this._timer = window.setInterval(Function.createDelegate(this, this._timerCallback), this._interval);
    },

    _stopTimer: function() {
        window.clearInterval(this._timer);
        this._timer = null;
    }
}

Sys.Timer.descriptor = {
    properties: [   {name: 'interval', type: Number},
                    {name: 'enabled', type: Boolean} ],
    events: [ {name: 'tick'} ]
}

Sys.Timer.registerClass('Sys.Timer', Sys.Component);

/* END AjaxControlToolkit.Compat.Timer.Timer.js */
/* START AjaxControlToolkit.Common.Common.js */
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />


// Add common toolkit scripts here.  To consume the scripts on a control add
// 
//      [RequiredScript(typeof(CommonToolkitScripts))] 
//      public class SomeExtender : ...
// 
// to the controls extender class declaration.


Type.registerNamespace('AjaxControlToolkit');


AjaxControlToolkit.BoxSide = function() {
    /// <summary>
    /// The BoxSide enumeration describes the sides of a DOM element
    /// </summary>
    /// <field name="Top" type="Number" integer="true" static="true" />
    /// <field name="Right" type="Number" integer="true" static="true" />
    /// <field name="Bottom" type="Number" integer="true" static="true" />
    /// <field name="Left" type="Number" integer="true" static="true" />
}
AjaxControlToolkit.BoxSide.prototype = {
    Top : 0,
    Right : 1,
    Bottom : 2,
    Left : 3
}
AjaxControlToolkit.BoxSide.registerEnum("AjaxControlToolkit.BoxSide", false);


AjaxControlToolkit._CommonToolkitScripts = function() {
    /// <summary>
    /// The _CommonToolkitScripts class contains functionality utilized across a number
    /// of controls (but not universally)
    /// </summary>
    /// <remarks>
    /// You should not create new instances of _CommonToolkitScripts.  Instead you should use the shared instance CommonToolkitScripts (or AjaxControlToolkit.CommonToolkitScripts).
    /// </remarks>
}
AjaxControlToolkit._CommonToolkitScripts.prototype = {
    // The order of these lookup tables is directly linked to the BoxSide enum defined above
    _borderStyleNames : ["borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle"],
    _borderWidthNames : ["borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth"],
    _paddingWidthNames : ["paddingTop", "paddingRight", "paddingBottom", "paddingLeft"],
    _marginWidthNames : ["marginTop", "marginRight", "marginBottom", "marginLeft"],

    getCurrentStyle : function(element, attribute, defaultValue) {
        /// <summary>
        /// CommonToolkitScripts.getCurrentStyle is used to compute the value of a style attribute on an
        /// element that is currently being displayed.  This is especially useful for scenarios where
        /// several CSS classes and style attributes are merged, or when you need information about the
        /// size of an element (such as its padding or margins) that is not exposed in any other fashion.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Live DOM element to check style of
        /// </param>
        /// <param name="attribute" type="String">
        /// The style attribute's name is expected to be in a camel-cased form that you would use when
        /// accessing a JavaScript property instead of the hyphenated form you would use in a CSS
        /// stylesheet (i.e. it should be "backgroundColor" and not "background-color").
        /// </param>
        /// <param name="defaultValue" type="Object" mayBeNull="true" optional="true">
        /// In the event of a problem (i.e. a null element or an attribute that cannot be found) we
        /// return this object (or null if none if not specified).
        /// </param>
        /// <returns type="Object">
        /// Current style of the element's attribute
        /// </returns>

        var currentValue = null;
        if (element) {
            if (element.currentStyle) {
                currentValue = element.currentStyle[attribute];
            } else if (document.defaultView && document.defaultView.getComputedStyle) {
                var style = document.defaultView.getComputedStyle(element, null);
                if (style) {
                    currentValue = style[attribute];
                }
            }
            
            if (!currentValue && element.style.getPropertyValue) {
                currentValue = element.style.getPropertyValue(attribute);
            }
            else if (!currentValue && element.style.getAttribute) {
                currentValue = element.style.getAttribute(attribute);
            }       
        }
        
        if ((!currentValue || currentValue == "" || typeof(currentValue) === 'undefined')) {
            if (typeof(defaultValue) != 'undefined') {
                currentValue = defaultValue;
            }
            else {
                currentValue = null;
            }
        }   
        return currentValue;  
    },

    getInheritedBackgroundColor : function(element) {
        /// <summary>
        /// CommonToolkitScripts.getInheritedBackgroundColor provides the ability to get the displayed
        /// background-color of an element.  In most cases calling CommonToolkitScripts.getCurrentStyle
        /// won't do the job because it will return "transparent" unless the element has been given a
        /// specific background color.  This function will walk up the element's parents until it finds
        /// a non-transparent color.  If we get all the way to the top of the document or have any other
        /// problem finding a color, we will return the default value '#FFFFFF'.  This function is
        /// especially important when we're using opacity in IE (because ClearType will make text look
        /// horrendous if you fade it with a transparent background color).
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Live DOM element to get the background color of
        /// </param>
        /// <returns type="String">
        /// Background color of the element
        /// </returns>
        
        if (!element) return '#FFFFFF';
        var background = this.getCurrentStyle(element, 'backgroundColor');
        try {
            while (!background || background == '' || background == 'transparent' || background == 'rgba(0, 0, 0, 0)') {
                element = element.parentNode;
                if (!element) {
                    background = '#FFFFFF';
                } else {
                    background = this.getCurrentStyle(element, 'backgroundColor');
                }
            }
        } catch(ex) {
            background = '#FFFFFF';
        }
        return background;
    },

    getLocation : function(element) {
    /// <summary>Gets the coordinates of a DOM element.</summary>
    /// <param name="element" domElement="true"/>
    /// <returns type="Sys.UI.Point">
    ///   A Point object with two fields, x and y, which contain the pixel coordinates of the element.
    /// </returns>

    // workaround for an issue in getLocation where it will compute the location of the document element.
    // this will return an offset if scrolled.
    //
    if (element === document.documentElement) {
        return new Sys.UI.Point(0,0);
    }

    // Workaround for IE6 bug in getLocation (also required patching getBounds - remove that fix when this is removed)
    if (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7) {
        if (element.window === element || element.nodeType === 9 || !element.getClientRects || !element.getBoundingClientRect) return new Sys.UI.Point(0,0);

        // Get the first bounding rectangle in screen coordinates
        var screenRects = element.getClientRects();
        if (!screenRects || !screenRects.length) {
            return new Sys.UI.Point(0,0);
        }
        var first = screenRects[0];

        // Delta between client coords and screen coords
        var dLeft = 0;
        var dTop = 0;

        var inFrame = false;
        try {
            inFrame = element.ownerDocument.parentWindow.frameElement;
        } catch(ex) {
            // If accessing the frameElement fails, a frame is probably in a different
            // domain than its parent - and we still want to do the calculation below
            inFrame = true;
        }

        // If we're in a frame, get client coordinates too so we can compute the delta
        if (inFrame) {
            // Get the bounding rectangle in client coords
            var clientRect = element.getBoundingClientRect();
            if (!clientRect) {
                return new Sys.UI.Point(0,0);
            }

            // Find the minima in screen coords
            var minLeft = first.left;
            var minTop = first.top;
            for (var i = 1; i < screenRects.length; i++) {
                var r = screenRects[i];
                if (r.left < minLeft) {
                    minLeft = r.left;
                }
                if (r.top < minTop) {
                    minTop = r.top;
                }
            }

            // Compute the delta between screen and client coords
            dLeft = minLeft - clientRect.left;
            dTop = minTop - clientRect.top;
        }

        // Subtract 2px, the border of the viewport (It can be changed in IE6 by applying a border style to the HTML element,
        // but this is not supported by ASP.NET AJAX, and it cannot be changed in IE7.), and also subtract the delta between
        // screen coords and client coords
        var ownerDocument = element.document.documentElement;
        return new Sys.UI.Point(first.left - 2 - dLeft + ownerDocument.scrollLeft, first.top - 2 - dTop + ownerDocument.scrollTop);
    }

    return Sys.UI.DomElement.getLocation(element);
},

    setLocation : function(element, point) {
        /// <summary>
        /// Sets the current location for an element.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="point" type="Object">
        /// Point object (of the form {x,y})
        /// </param>
        /// <remarks>
        /// This method does not attempt to set the positioning mode of an element.
        /// The position is relative from the elements nearest position:relative or
        /// position:absolute element.
        /// </remarks>
        Sys.UI.DomElement.setLocation(element, point.x, point.y);
    },
    
    getContentSize : function(element) {
        /// <summary>
        /// Gets the "content-box" size of an element.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <returns type="Object">
        /// Size of the element (in the form {width,height})
        /// </returns>
        /// <remarks>
        /// The "content-box" is the size of the content area *inside* of the borders and
        /// padding of an element. The "content-box" size does not include the margins around
        /// the element.
        /// </remarks>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        var size = this.getSize(element);
        var borderBox = this.getBorderBox(element);
        var paddingBox = this.getPaddingBox(element);
        return {
            width :  size.width - borderBox.horizontal - paddingBox.horizontal,
            height : size.height - borderBox.vertical - paddingBox.vertical
        }
    },

    getSize : function(element) {
        /// <summary>
        /// Gets the "border-box" size of an element.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <returns type="Object">
        /// Size of the element (in the form {width,height})
        /// </returns>
        /// <remarks>
        /// The "border-box" is the size of the content area *outside* of the borders and
        /// padding of an element.  The "border-box" size does not include the margins around
        /// the element.
        /// </remarks>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        return {
            width:  element.offsetWidth,
            height: element.offsetHeight
        };
    },
    
    setContentSize : function(element, size) {
        /// <summary>
        /// Sets the "content-box" size of an element.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="size" type="Object">
        /// Size of the element (in the form {width,height})
        /// </param>
        /// <remarks>
        /// The "content-box" is the size of the content area *inside* of the borders and
        /// padding of an element. The "content-box" size does not include the margins around
        /// the element.
        /// </remarks>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        if (!size) {
            throw Error.argumentNull('size');
        }
        // FF respects -moz-box-sizing css extension, so adjust the box size for the border-box
        if(this.getCurrentStyle(element, 'MozBoxSizing') == 'border-box' || this.getCurrentStyle(element, 'BoxSizing') == 'border-box') {
            var borderBox = this.getBorderBox(element);
            var paddingBox = this.getPaddingBox(element);
            size = {
                width: size.width + borderBox.horizontal + paddingBox.horizontal,
                height: size.height + borderBox.vertical + paddingBox.vertical
            };
        }
        element.style.width = size.width.toString() + 'px';
        element.style.height = size.height.toString() + 'px';
    },
    
    setSize : function(element, size) {
        /// <summary>
        /// Sets the "border-box" size of an element.
        /// </summary>
        /// <remarks>
        /// The "border-box" is the size of the content area *outside* of the borders and 
        /// padding of an element.  The "border-box" size does not include the margins around
        /// the element.
        /// </remarks>
        /// <param name="element" type="Sys.UI.DomElement">DOM element</param>
        /// <param name="size" type="Object">Size of the element (in the form {width,height})</param>
        /// <returns />
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        if (!size) {
            throw Error.argumentNull('size');
        }
        var borderBox = this.getBorderBox(element);
        var paddingBox = this.getPaddingBox(element);
        var contentSize = {
            width:  size.width - borderBox.horizontal - paddingBox.horizontal,
            height: size.height - borderBox.vertical - paddingBox.vertical
        };
        this.setContentSize(element, contentSize);
    },
    
    getBounds : function(element) {
        /// <summary>Gets the coordinates, width and height of an element.</summary>
        /// <param name="element" domElement="true"/>
        /// <returns type="Sys.UI.Bounds">
        ///   A Bounds object with four fields, x, y, width and height, which contain the pixel coordinates,
        ///   width and height of the element.
        /// </returns>
        /// <remarks>
        ///   Use the CommonToolkitScripts version of getLocation to handle the workaround for IE6.  We can
        ///   remove the below implementation and just call Sys.UI.DomElement.getBounds when the other bug
        ///   is fixed.
        /// </remarks>
        
        var offset = $common.getLocation(element);
        return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0);
    }, 
    
    setBounds : function(element, bounds) {
        /// <summary>
        /// Sets the "border-box" bounds of an element
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="bounds" type="Object">
        /// Bounds of the element (of the form {x,y,width,height})
        /// </param>
        /// <remarks>
        /// The "border-box" is the size of the content area *outside* of the borders and
        /// padding of an element.  The "border-box" size does not include the margins around
        /// the element.
        /// </remarks>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        if (!bounds) {
            throw Error.argumentNull('bounds');
        }
        this.setSize(element, bounds);
        $common.setLocation(element, bounds);
    },
    
    getClientBounds : function() {
        /// <summary>
        /// Gets the width and height of the browser client window (excluding scrollbars)
        /// </summary>
        /// <returns type="Sys.UI.Bounds">
        /// Browser's client width and height
        /// </returns>

        var clientWidth;
        var clientHeight;
        switch(Sys.Browser.agent) {
            case Sys.Browser.InternetExplorer:
                clientWidth = document.documentElement.clientWidth;
                clientHeight = document.documentElement.clientHeight;
                break;
            case Sys.Browser.Safari:
                clientWidth = window.innerWidth;
                clientHeight = window.innerHeight;
                break;
            case Sys.Browser.Opera:
                clientWidth = Math.min(window.innerWidth, document.body.clientWidth);
                clientHeight = Math.min(window.innerHeight, document.body.clientHeight);
                break;
            default:  // Sys.Browser.Firefox, etc.
                clientWidth = Math.min(window.innerWidth, document.documentElement.clientWidth);
                clientHeight = Math.min(window.innerHeight, document.documentElement.clientHeight);
                break;
        }
        return new Sys.UI.Bounds(0, 0, clientWidth, clientHeight);
    },
   
    getMarginBox : function(element) {
        /// <summary>
        /// Gets the entire margin box sizes.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <returns type="Object">
        /// Element's margin box sizes (of the form {top,left,bottom,right,horizontal,vertical})
        /// </returns>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        var box = {
            top: this.getMargin(element, AjaxControlToolkit.BoxSide.Top),
            right: this.getMargin(element, AjaxControlToolkit.BoxSide.Right),
            bottom: this.getMargin(element, AjaxControlToolkit.BoxSide.Bottom),
            left: this.getMargin(element, AjaxControlToolkit.BoxSide.Left)
        };
        box.horizontal = box.left + box.right;
        box.vertical = box.top + box.bottom;
        return box;
    },
    
    getBorderBox : function(element) {
        /// <summary>
        /// Gets the entire border box sizes.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <returns type="Object">
        /// Element's border box sizes (of the form {top,left,bottom,right,horizontal,vertical})
        /// </returns>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        var box = {
            top: this.getBorderWidth(element, AjaxControlToolkit.BoxSide.Top),
            right: this.getBorderWidth(element, AjaxControlToolkit.BoxSide.Right),
            bottom: this.getBorderWidth(element, AjaxControlToolkit.BoxSide.Bottom),
            left: this.getBorderWidth(element, AjaxControlToolkit.BoxSide.Left)
        };
        box.horizontal = box.left + box.right;
        box.vertical = box.top + box.bottom;
        return box;
    },
    
    getPaddingBox : function(element) {
        /// <summary>
        /// Gets the entire padding box sizes.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <returns type="Object">
        /// Element's padding box sizes (of the form {top,left,bottom,right,horizontal,vertical})
        /// </returns>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        var box = {
            top: this.getPadding(element, AjaxControlToolkit.BoxSide.Top),
            right: this.getPadding(element, AjaxControlToolkit.BoxSide.Right),
            bottom: this.getPadding(element, AjaxControlToolkit.BoxSide.Bottom),
            left: this.getPadding(element, AjaxControlToolkit.BoxSide.Left)
        };
        box.horizontal = box.left + box.right;
        box.vertical = box.top + box.bottom;
        return box;
    },
    
    isBorderVisible : function(element, boxSide) {
        /// <summary>
        /// Gets whether the current border style for an element on a specific boxSide is not 'none'.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="boxSide" type="AjaxControlToolkit.BoxSide">
        /// Side of the element
        /// </param>
        /// <returns type="Boolean">
        /// Whether the current border style for an element on a specific boxSide is not 'none'.
        /// </returns>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        if(boxSide < AjaxControlToolkit.BoxSide.Top || boxSide > AjaxControlToolkit.BoxSide.Left) {
            throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, 'AjaxControlToolkit.BoxSide'));
        }
        var styleName = this._borderStyleNames[boxSide];
        var styleValue = this.getCurrentStyle(element, styleName);
        return styleValue != "none";
    },
    
    getMargin : function(element, boxSide) {
        /// <summary>
        /// Gets the margin thickness of an element on a specific boxSide.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="boxSide" type="AjaxControlToolkit.BoxSide">
        /// Side of the element
        /// </param>
        /// <returns type="Number" integer="true">
        /// Margin thickness on the element's specified side
        /// </returns>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        if(boxSide < AjaxControlToolkit.BoxSide.Top || boxSide > AjaxControlToolkit.BoxSide.Left) {
            throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, 'AjaxControlToolkit.BoxSide'));
        }
        var styleName = this._marginWidthNames[boxSide];
        var styleValue = this.getCurrentStyle(element, styleName);
        try { return this.parsePadding(styleValue); } catch(ex) { return 0; }
    },

    getBorderWidth : function(element, boxSide) {
        /// <summary>
        /// Gets the border thickness of an element on a specific boxSide.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="boxSide" type="AjaxControlToolkit.BoxSide">
        /// Side of the element
        /// </param>
        /// <returns type="Number" integer="true">
        /// Border thickness on the element's specified side
        /// </returns>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        if(boxSide < AjaxControlToolkit.BoxSide.Top || boxSide > AjaxControlToolkit.BoxSide.Left) {
            throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, 'AjaxControlToolkit.BoxSide'));
        }
        if(!this.isBorderVisible(element, boxSide)) {
            return 0;
        }        
        var styleName = this._borderWidthNames[boxSide];    
        var styleValue = this.getCurrentStyle(element, styleName);
        return this.parseBorderWidth(styleValue);
    },
    
    getPadding : function(element, boxSide) {
        /// <summary>
        /// Gets the padding thickness of an element on a specific boxSide.
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// DOM element
        /// </param>
        /// <param name="boxSide" type="AjaxControlToolkit.BoxSide">
        /// Side of the element
        /// </param>
        /// <returns type="Number" integer="true">
        /// Padding on the element's specified side
        /// </returns>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        if(boxSide < AjaxControlToolkit.BoxSide.Top || boxSide > AjaxControlToolkit.BoxSide.Left) {
            throw Error.argumentOutOfRange(String.format(Sys.Res.enumInvalidValue, boxSide, 'AjaxControlToolkit.BoxSide'));
        }
        var styleName = this._paddingWidthNames[boxSide];
        var styleValue = this.getCurrentStyle(element, styleName);
        return this.parsePadding(styleValue);
    },
    
    parseBorderWidth : function(borderWidth) {
        /// <summary>
        /// Parses a border-width string into a pixel size
        /// </summary>
        /// <param name="borderWidth" type="String" mayBeNull="true">
        /// Type of border ('thin','medium','thick','inherit',px unit,null,'')
        /// </param>
        /// <returns type="Number" integer="true">
        /// Number of pixels in the border-width
        /// </returns>
        if (!this._borderThicknesses) {
            
            // Populate the borderThicknesses lookup table
            var borderThicknesses = { };
            var div0 = document.createElement('div');
            div0.style.visibility = 'hidden';
            div0.style.position = 'absolute';
            div0.style.fontSize = '1px';
            document.body.appendChild(div0)
            var div1 = document.createElement('div');
            div1.style.height = '0px';
            div1.style.overflow = 'hidden';
            div0.appendChild(div1);
            var base = div0.offsetHeight;
            div1.style.borderTop = 'solid black';
            div1.style.borderTopWidth = 'thin';
            borderThicknesses['thin'] = div0.offsetHeight - base;
            div1.style.borderTopWidth = 'medium';
            borderThicknesses['medium'] = div0.offsetHeight - base;
            div1.style.borderTopWidth = 'thick';
            borderThicknesses['thick'] = div0.offsetHeight - base;
            div0.removeChild(div1);
            document.body.removeChild(div0);
            this._borderThicknesses = borderThicknesses;
        }
        
        if (borderWidth) {
            switch(borderWidth) {
                case 'thin':
                case 'medium':
                case 'thick':
                    return this._borderThicknesses[borderWidth];
                case 'inherit':
                    return 0;
            }
            var unit = this.parseUnit(borderWidth);
            Sys.Debug.assert(unit.type == 'px', String.format(AjaxControlToolkit.Resources.Common_InvalidBorderWidthUnit, unit.type));
            return unit.size;
        }
        return 0;
    },
    
    parsePadding : function(padding) {
        /// <summary>
        /// Parses a padding string into a pixel size
        /// </summary>
        /// <param name="padding" type="String" mayBeNull="true">
        /// Padding to parse ('inherit',px unit,null,'')
        /// </param>
        /// <returns type="Number" integer="true">
        /// Number of pixels in the padding
        /// </returns>
        
        if(padding) {
            if(padding == 'inherit') {
                return 0;
            }
            var unit = this.parseUnit(padding);
            Sys.Debug.assert(unit.type == 'px', String.format(AjaxControlToolkit.Resources.Common_InvalidPaddingUnit, unit.type));
            return unit.size;
        }
        return 0;
    },
    
    parseUnit : function(value) {
        /// <summary>
        /// Parses a unit string into a unit object
        /// </summary>
        /// <param name="value" type="String" mayBeNull="true">
        /// Value to parse (of the form px unit,% unit,em unit,...)
        /// </param>
        /// <returns type="Object">
        /// Parsed unit (of the form {size,type})
        /// </returns>
        
        if (!value) {
            throw Error.argumentNull('value');
        }
        
        value = value.trim().toLowerCase();
        var l = value.length;
        var s = -1;
        for(var i = 0; i < l; i++) {
            var ch = value.substr(i, 1);
            if((ch < '0' || ch > '9') && ch != '-' && ch != '.' && ch != ',') {
                break;
            }
            s = i;
        }
        if(s == -1) {
            throw Error.create(AjaxControlToolkit.Resources.Common_UnitHasNoDigits);
        }
        var type;
        var size;
        if(s < (l - 1)) {
            type = value.substring(s + 1).trim();
        } else {
            type = 'px';
        }
        size = parseFloat(value.substr(0, s + 1));
        if(type == 'px') {
            size = Math.floor(size);
        }
        return { 
            size: size,
            type: type
        };
    },
    
    getElementOpacity : function(element) {
        /// <summary>
        /// Get the element's opacity
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Element
        /// </param>
        /// <returns type="Number">
        /// Opacity of the element
        /// </returns>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        
        var hasOpacity = false;
        var opacity;
        
        if (element.filters) {
            var filters = element.filters;
            if (filters.length !== 0) {
                var alphaFilter = filters['DXImageTransform.Microsoft.Alpha'];
                if (alphaFilter) {
                    opacity = alphaFilter.opacity / 100.0;
                    hasOpacity = true;
                }
            }
        }
        else {
            opacity = this.getCurrentStyle(element, 'opacity', 1);
            hasOpacity = true;
        }
        
        if (hasOpacity === false) {
            return 1.0;
        }
        return parseFloat(opacity);
    },

    setElementOpacity : function(element, value) {
        /// <summary>
        /// Set the element's opacity
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Element
        /// </param>
        /// <param name="value" type="Number">
        /// Opacity of the element
        /// </param>
        
        if (!element) {
            throw Error.argumentNull('element');
        }
        
        if (element.filters) {
            var filters = element.filters;
            var createFilter = true;
            if (filters.length !== 0) {
                var alphaFilter = filters['DXImageTransform.Microsoft.Alpha'];
                if (alphaFilter) {
                    createFilter = false;
                    alphaFilter.opacity = value * 100;
                }
            }
            if (createFilter) {
                element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + (value * 100) + ')';
            }
        }
        else {
            element.style.opacity = value;
        }
    },
    
    getVisible : function(element) {
        /// <summary>
        /// Check if an element is visible
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Element
        /// </param>
        /// <returns type="Boolean" mayBeNull="false">
        /// True if the element is visible, false otherwise
        /// </returns>
        
        // Note: reference to CommonToolkitScripts must be left intact (i.e. don't
        // replace with 'this') because this function will be aliased
        
        return (element &&
                ("none" != $common.getCurrentStyle(element, "display")) &&
                ("hidden" != $common.getCurrentStyle(element, "visibility")));
    },
    
    setVisible : function(element, value) {
        /// <summary>
        /// Check if an element is visible
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement" domElement="true">
        /// Element
        /// </param>
        /// <param name="value" type="Boolean" mayBeNull="false">
        /// True to make the element visible, false to hide it
        /// </param>
        
        // Note: reference to CommonToolkitScripts must be left intact (i.e. don't
        // replace with 'this') because this function will be aliased
        
        if (element && value != $common.getVisible(element)) {
            if (value) {
                if (element.style.removeAttribute) {
                    element.style.removeAttribute("display");
                } else {
                   element.style.removeProperty("display");
                }
            } else {
                element.style.display = 'none';
            }
            element.style.visibility = value ? 'visible' : 'hidden';
        }
    },
    
    resolveFunction : function(value) {
        /// <summary>
        /// Returns a function reference that corresponds to the provided value
        /// </summary>
        /// <param name="value" type="Object">
        /// The value can either be a Function, the name of a function (that can be found using window['name']),
        /// or an expression that evaluates to a function.
        /// </param>
        /// <returns type="Function">
        /// Reference to the function, or null if not found
        /// </returns>
        
        if (value) {
            if (value instanceof Function) {
                return value;
            } else if (String.isInstanceOfType(value) && value.length > 0) {
                var func;
                if ((func = window[value]) instanceof Function) {
                    return func;
                } else if ((func = eval(value)) instanceof Function) {
                    return func;
                }
            }
        }
        return null;
    },

    addCssClasses : function(element, classNames) {
        /// <summary>
        /// Adds multiple css classes to a DomElement
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to modify</param>
        /// <param name="classNames" type="Array">The class names to add</param>
        
        for(var i = 0; i < classNames.length; i++) {
            Sys.UI.DomElement.addCssClass(element, classNames[i]);
        }
    },
    removeCssClasses : function(element, classNames) {
        /// <summary>
        /// Removes multiple css classes to a DomElement
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to modify</param>
        /// <param name="classNames" type="Array">The class names to remove</param>
        
        for(var i = 0; i < classNames.length; i++) {
            Sys.UI.DomElement.removeCssClass(element, classNames[i]);
        }
    },
    setStyle : function(element, style) {
        /// <summary>
        /// Sets the style of the element using the supplied style template object
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to modify</param>
        /// <param name="style" type="Object">The template</param>

        $common.applyProperties(element.style, style);
    },
    removeHandlers : function(element, events) {
        /// <summary>
        /// Removes a set of event handlers from an element
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to modify</param>
        /// <param name="events" type="Object">The template object that contains event names and delegates</param>
        /// <remarks>
        /// This is NOT the same as $clearHandlers which removes all delegates from a DomElement.  This rather removes select delegates 
        /// from a specified element and has a matching signature as $addHandlers
        /// </remarks>
        for (var name in events) {
            $removeHandler(element, name, events[name]);
        }
    },
    
    overlaps : function(r1, r2) {
        /// <summary>
        /// Determine if two rectangles overlap
        /// </summary>
        /// <param name="r1" type="Object">
        /// Rectangle
        /// </param>
        /// <param name="r2" type="Object">
        /// Rectangle
        /// </param>
        /// <returns type="Boolean">
        /// True if the rectangles overlap, false otherwise
        /// </returns>
        
         return r1.x < (r2.x + r2.width)
                && r2.x < (r1.x + r1.width)
                && r1.y < (r2.y + r2.height)
                && r2.y < (r1.y + r1.height);
    },
    
    containsPoint : function(rect, x, y) {
        /// <summary>
        /// Tests whether a point (x,y) is contained within a rectangle
        /// </summary>
        /// <param name="rect" type="Object">The rectangle</param>
        /// <param name="x" type="Number">The x coordinate of the point</param>
        /// <param name="y" type="Number">The y coordinate of the point</param>
        
        return x >= rect.x && x < (rect.x + rect.width) && y >= rect.y && y < (rect.y + rect.height);
    },

    isKeyDigit : function(keyCode) { 
        /// <summary>
        /// Gets whether the supplied key-code is a digit
        /// </summary>
        /// <param name="keyCode" type="Number" integer="true">The key code of the event (from Sys.UI.DomEvent)</param>
        /// <returns type="Boolean" />

        return (0x30 <= keyCode && keyCode <= 0x39); 
    },
    
    isKeyNavigation : function(keyCode) { 
        /// <summary>
        /// Gets whether the supplied key-code is a navigation key
        /// </summary>
        /// <param name="keyCode" type="Number" integer="true">The key code of the event (from Sys.UI.DomEvent)</param>
        /// <returns type="Boolean" />

        return (Sys.UI.Key.left <= keyCode && keyCode <= Sys.UI.Key.down); 
    },
    
    padLeft : function(text, size, ch, truncate) { 
        /// <summary>
        /// Pads the left hand side of the supplied text with the specified pad character up to the requested size
        /// </summary>
        /// <param name="text" type="String">The text to pad</param>
        /// <param name="size" type="Number" integer="true" optional="true">The size to pad the text (default is 2)</param>
        /// <param name="ch" type="String" optional="true">The single character to use as the pad character (default is ' ')</param>
        /// <param name="truncate" type="Boolean" optional="true">Whether to truncate the text to size (default is false)</param>
        
        return $common._pad(text, size || 2, ch || ' ', 'l', truncate || false); 
    },
    
    padRight : function(text, size, ch, truncate) { 
        /// <summary>
        /// Pads the right hand side of the supplied text with the specified pad character up to the requested size
        /// </summary>
        /// <param name="text" type="String">The text to pad</param>
        /// <param name="size" type="Number" integer="true" optional="true">The size to pad the text (default is 2)</param>
        /// <param name="ch" type="String" optional="true">The single character to use as the pad character (default is ' ')</param>
        /// <param name="truncate" type="Boolean" optional="true">Whether to truncate the text to size (default is false)</param>

        return $common._pad(text, size || 2, ch || ' ', 'r', truncate || false); 
    },
    
    _pad : function(text, size, ch, side, truncate) {
        /// <summary>
        /// Pads supplied text with the specified pad character up to the requested size
        /// </summary>
        /// <param name="text" type="String">The text to pad</param>
        /// <param name="size" type="Number" integer="true">The size to pad the text</param>
        /// <param name="ch" type="String">The single character to use as the pad character</param>
        /// <param name="side" type="String">Either 'l' or 'r' to siginfy whether to pad the Left or Right side respectively</param>
        /// <param name="truncate" type="Boolean">Whether to truncate the text to size</param>

        text = text.toString();
        var length = text.length;
        var builder = new Sys.StringBuilder();
        if (side == 'r') {
            builder.append(text);
        } 
        while (length < size) {
            builder.append(ch);
            length++;
        }
        if (side == 'l') {
            builder.append(text);
        }
        var result = builder.toString();
        if (truncate && result.length > size) {
            if (side == 'l') {
                result = result.substr(result.length - size, size);
            } else {
                result = result.substr(0, size);
            }
        }
        return result;
    },
    
    __DOMEvents : {
        focusin : { eventGroup : "UIEvents", init : function(e, p) { e.initUIEvent("focusin", true, false, window, 1); } },
        focusout : { eventGroup : "UIEvents", init : function(e, p) { e.initUIEvent("focusout", true, false, window, 1); } },
        activate : { eventGroup : "UIEvents", init : function(e, p) { e.initUIEvent("activate", true, true, window, 1); } },
        focus : { eventGroup : "UIEvents", init : function(e, p) { e.initUIEvent("focus", false, false, window, 1); } },
        blur : { eventGroup : "UIEvents", init : function(e, p) { e.initUIEvent("blur", false, false, window, 1); } },
        click : { eventGroup : "MouseEvents", init : function(e, p) { e.initMouseEvent("click", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        dblclick : { eventGroup : "MouseEvents", init : function(e, p) { e.initMouseEvent("click", true, true, window, 2, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        mousedown : { eventGroup : "MouseEvents", init : function(e, p) { e.initMouseEvent("mousedown", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        mouseup : { eventGroup : "MouseEvents", init : function(e, p) { e.initMouseEvent("mouseup", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        mouseover : { eventGroup : "MouseEvents", init : function(e, p) { e.initMouseEvent("mouseover", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        mousemove : { eventGroup : "MouseEvents", init : function(e, p) { e.initMouseEvent("mousemove", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        mouseout : { eventGroup : "MouseEvents", init : function(e, p) { e.initMouseEvent("mousemove", true, true, window, 1, p.screenX || 0, p.screenY || 0, p.clientX || 0, p.clientY || 0, p.ctrlKey || false, p.altKey || false, p.shiftKey || false, p.metaKey || false, p.button || 0, p.relatedTarget || null); } },
        load : { eventGroup : "HTMLEvents", init : function(e, p) { e.initEvent("load", false, false); } },
        unload : { eventGroup : "HTMLEvents", init : function(e, p) { e.initEvent("unload", false, false); } },
        select : { eventGroup : "HTMLEvents", init : function(e, p) { e.initEvent("select", true, false); } },
        change : { eventGroup : "HTMLEvents", init : function(e, p) { e.initEvent("change", true, false); } },
        submit : { eventGroup : "HTMLEvents", init : function(e, p) { e.initEvent("submit", true, true); } },
        reset : { eventGroup : "HTMLEvents", init : function(e, p) { e.initEvent("reset", true, false); } },
        resize : { eventGroup : "HTMLEvents", init : function(e, p) { e.initEvent("resize", true, false); } },
        scroll : { eventGroup : "HTMLEvents", init : function(e, p) { e.initEvent("scroll", true, false); } }
    },
    
    tryFireRawEvent : function(element, rawEvent) {
        /// <summary>
        /// Attempts to fire a raw DOM event on an element
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to fire the event</param>
        /// <param name="rawEvent" type="Object">The raw DOM event object to fire. Must not be Sys.UI.DomEvent</param>
        /// <returns type="Boolean">True if the event was successfully fired, otherwise false</returns>
        
        try {
            if (element.fireEvent) {
                element.fireEvent("on" + rawEvent.type, rawEvent);
                return true;
            } else if (element.dispatchEvent) {
                element.dispatchEvent(rawEvent);
                return true;
            }
        } catch (e) {
        }
        return false;
    },    

    tryFireEvent : function(element, eventName, properties) {
        /// <summary>
        /// Attempts to fire a DOM event on an element
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to fire the event</param>
        /// <param name="eventName" type="String">The name of the event to fire (without an 'on' prefix)</param>
        /// <param name="properties" type="Object">Properties to add to the event</param>
        /// <returns type="Boolean">True if the event was successfully fired, otherwise false</returns>
        
        try {
            if (document.createEventObject) {
                var e = document.createEventObject();
                $common.applyProperties(e, properties || {});
                element.fireEvent("on" + eventName, e);
                return true;
            } else if (document.createEvent) {
                var def = $common.__DOMEvents[eventName];
                if (def) {
                    var e = document.createEvent(def.eventGroup);
                    def.init(e, properties || {});
                    element.dispatchEvent(e);
                    return true;
                }
            }
        } catch (e) {
        }
        return false;
    },

    wrapElement : function(innerElement, newOuterElement, newInnerParentElement) {
        /// <summary>
        /// Wraps an inner element with a new outer element at the same DOM location as the inner element
        /// </summary>
        /// <param name="innerElement" type="Sys.UI.DomElement">The element to be wrapped</param>
        /// <param name="newOuterElement" type="Sys.UI.DomElement">The new parent for the element</param>
        /// <returns />
        
        var parent = innerElement.parentNode;
        parent.replaceChild(newOuterElement, innerElement);        
        (newInnerParentElement || newOuterElement).appendChild(innerElement);
    },

    unwrapElement : function(innerElement, oldOuterElement) {
        /// <summary>
        /// Unwraps an inner element from an outer element at the same DOM location as the outer element
        /// </summary>
        /// <param name="innerElement" type="Sys.UI.DomElement">The element to be wrapped</param>
        /// <param name="newOuterElement" type="Sys.UI.DomElement">The new parent for the element</param>
        /// <returns />

        var parent = oldOuterElement.parentNode;
        if (parent != null) {
            $common.removeElement(innerElement);
            parent.replaceChild(innerElement, oldOuterElement);
        }
    },
    
    removeElement : function(element) {
        /// <summary>
        /// Removes an element from the DOM tree
        /// </summary>
        /// <param name="element" type="Sys.UI.DomElement">The element to be removed</param>
        /// <returns />

        var parent = element.parentNode;
        if (parent != null) {
            parent.removeChild(element);
        }
    },
 
    applyProperties : function(target, properties) {
        /// <summary>
        /// Quick utility method to copy properties from a template object to a target object
        /// </summary>
        /// <param name="target" type="Object">The object to apply to</param>
        /// <param name="properties" type="Object">The template to copy values from</param>
        
        for (var p in properties) {
            var pv = properties[p];
            if (pv != null && Object.getType(pv)===Object) {
                var tv = target[p];
                $common.applyProperties(tv, pv);
            } else {
                target[p] = pv;
            }
        }
    },
        
    createElementFromTemplate : function(template, appendToParent, nameTable) {
        /// <summary>
        /// Creates an element for the current document based on a template object
        /// </summary>
        /// <param name="template" type="Object">The template from which to create the element</param>
        /// <param name="appendToParent" type="Sys.UI.DomElement" optional="true" mayBeNull="true">A DomElement under which to append this element</param>
        /// <param name="nameTable" type="Object" optional="true" mayBeNull="true">An object to use as the storage for the element using template.name as the key</param>
        /// <returns type="Sys.UI.DomElement" />
        /// <remarks>
        /// This method is useful if you find yourself using the same or similar DomElement constructions throughout a class.  You can even set the templates
        /// as static properties for a type to cut down on overhead.  This method is often called with a JSON style template:
        /// <code>
        /// var elt = $common.createElementFromTemplate({
        ///     nodeName : "div",
        ///     properties : {
        ///         style : {
        ///             height : "100px",
        ///             width : "100px",
        ///             backgroundColor : "white"
        ///         },
        ///         expandoAttribute : "foo"
        ///     },
        ///     events : {
        ///         click : function() { alert("foo"); },
        ///         mouseover : function() { elt.backgroundColor = "silver"; },
        ///         mouseout : function() { elt.backgroundColor = "white"; }
        ///     },
        ///     cssClasses : [ "class0", "class1" ],
        ///     visible : true,
        ///     opacity : .5
        /// }, someParent);
        /// </code>
        /// </remarks>
        
        // if we wish to override the name table we do so here
        if (typeof(template.nameTable)!='undefined') {
            var newNameTable = template.nameTable;
            if (String.isInstanceOfType(newNameTable)) {
                newNameTable = nameTable[newNameTable];
            }
            if (newNameTable != null) {
                nameTable = newNameTable;
            }
        }
        
        // get a name for the element in the nameTable
        var elementName = null;
        if (typeof(template.name)!=='undefined') {
            elementName = template.name;
        }
        
        // create or acquire the element
        var elt = document.createElement(template.nodeName);
        
        // if our element is named, add it to the name table
        if (typeof(template.name)!=='undefined' && nameTable) {
            nameTable[template.name] = elt;
        }
        
        // if we wish to supply a default parent we do so here
        if (typeof(template.parent)!=='undefined' && appendToParent == null) {
            var newParent = template.parent;
            if (String.isInstanceOfType(newParent)) {
                newParent = nameTable[newParent];
            }
            if (newParent != null) {
                appendToParent = newParent;
            }
        }
        
        // properties are applied as expando values to the element
        if (typeof(template.properties)!=='undefined' && template.properties != null) {
            $common.applyProperties(elt, template.properties);
        }
        
        // css classes are added to the element's className property
        if (typeof(template.cssClasses)!=='undefined' && template.cssClasses != null) {
            $common.addCssClasses(elt, template.cssClasses);
        }
        
        // events are added to the dom element using $addHandlers
        if (typeof(template.events)!=='undefined' && template.events != null) {
            $addHandlers(elt, template.events);
        }
        
        // if the element is visible or not its visibility is set
        if (typeof(template.visible)!=='undefined' && template.visible != null) {
            this.setVisible(elt, template.visible);
        }
        
        // if we have an appendToParent we will now append to it
        if (appendToParent) {
            appendToParent.appendChild(elt);
        }

        // if we have opacity, apply it
        if (typeof(template.opacity)!=='undefined' && template.opacity != null) {
            $common.setElementOpacity(elt, template.opacity);
        }
        
        // if we have child templates, process them
        if (typeof(template.children)!=='undefined' && template.children != null) {
            for (var i = 0; i < template.children.length; i++) {
                var subtemplate = template.children[i];
                $common.createElementFromTemplate(subtemplate, elt, nameTable);
            }
        }
        
        // if we have a content presenter for the element get it (the element itself is the default presenter for content)
        var contentPresenter = elt;
        if (typeof(template.contentPresenter)!=='undefined' && template.contentPresenter != null) {
            contentPresenter = nameTable[contentPresenter];
        }
        
        // if we have content, add it
        if (typeof(template.content)!=='undefined' && template.content != null) {
            var content = template.content;
            if (String.isInstanceOfType(content)) {
                content = nameTable[content];
            }
            if (content.parentNode) {
                $common.wrapElement(content, elt, contentPresenter);
            } else {
                contentPresenter.appendChild(content);
            }
        }
        
        // return the created element
        return elt;
    },
    
    prepareHiddenElementForATDeviceUpdate : function () {
        /// <summary>
        /// JAWS, an Assistive Technology device responds to updates to form elements 
        /// and refreshes its document buffer to what is showing live
        /// in the browser. To ensure that Toolkit controls that make XmlHttpRequests to
        /// retrieve content are useful to users with visual disabilities, we update a
        /// hidden form element to ensure that JAWS conveys what is in
        /// the browser. See this article for more details: 
        /// http://juicystudio.com/article/improving-ajax-applications-for-jaws-users.php
        /// This method creates a hidden input on the screen for any page that uses a Toolkit
        /// control that will perform an XmlHttpRequest.
        /// </summary>   
        var objHidden = document.getElementById('hiddenInputToUpdateATBuffer_CommonToolkitScripts');
        if (!objHidden) {
            var objHidden = document.createElement('input');
            objHidden.setAttribute('type', 'hidden');
            objHidden.setAttribute('value', '1');
            objHidden.setAttribute('id', 'hiddenInputToUpdateATBuffer_CommonToolkitScripts');
            objHidden.setAttribute('name', 'hiddenInputToUpdateATBuffer_CommonToolkitScripts');
            if ( document.forms[0] ) {
                document.forms[0].appendChild(objHidden);
            }
        }
    },
    
    updateFormToRefreshATDeviceBuffer : function () {
        /// <summary>
        /// Updates the hidden buffer to ensure that the latest document stream is picked up
        /// by the screen reader.
        /// </summary>
        var objHidden = document.getElementById('hiddenInputToUpdateATBuffer_CommonToolkitScripts');

        if (objHidden) {
            if (objHidden.getAttribute('value') == '1') {
                objHidden.setAttribute('value', '0');
            } else {
                objHidden.setAttribute('value', '1');
            }
        }
    }
}

// Create the singleton instance of the CommonToolkitScripts
var CommonToolkitScripts = AjaxControlToolkit.CommonToolkitScripts = new AjaxControlToolkit._CommonToolkitScripts();
var $common = CommonToolkitScripts;

// Alias functions that were moved from BlockingScripts into Common
Sys.UI.DomElement.getVisible = $common.getVisible;
Sys.UI.DomElement.setVisible = $common.setVisible;
Sys.UI.Control.overlaps = $common.overlaps;

AjaxControlToolkit._DomUtility = function() {
    /// <summary>
    /// Utility functions for manipulating the DOM
    /// </summary>
}
AjaxControlToolkit._DomUtility.prototype = {
    isDescendant : function(ancestor, descendant) {
        /// <summary>
        /// Whether the specified element is a descendant of the ancestor
        /// </summary>
        /// <param name="ancestor" type="Sys.UI.DomElement">Ancestor node</param>
        /// <param name="descendant" type="Sys.UI.DomElement">Possible descendant node</param>
        /// <returns type="Boolean" />
        
        for (var n = descendant.parentNode; n != null; n = n.parentNode) {
            if (n == ancestor) return true;
        }
        return false;
    },
    isDescendantOrSelf : function(ancestor, descendant) {
        /// <summary>
        /// Whether the specified element is a descendant of the ancestor or the same as the ancestor
        /// </summary>
        /// <param name="ancestor" type="Sys.UI.DomElement">Ancestor node</param>
        /// <param name="descendant" type="Sys.UI.DomElement">Possible descendant node</param>
        /// <returns type="Boolean" />

        if (ancestor === descendant) 
            return true;
        return AjaxControlToolkit.DomUtility.isDescendant(ancestor, descendant);
    },
    isAncestor : function(descendant, ancestor) {
        /// <summary>
        /// Whether the specified element is an ancestor of the descendant
        /// </summary>
        /// <param name="descendant" type="Sys.UI.DomElement">Descendant node</param>
        /// <param name="ancestor" type="Sys.UI.DomElement">Possible ancestor node</param>
        /// <returns type="Boolean" />

        return AjaxControlToolkit.DomUtility.isDescendant(ancestor, descendant);
    },
    isAncestorOrSelf : function(descendant, ancestor) {
        /// <summary>
        /// Whether the specified element is an ancestor of the descendant or the same as the descendant
        /// </summary>
        /// <param name="descendant" type="Sys.UI.DomElement">Descendant node</param>
        /// <param name="ancestor" type="Sys.UI.DomElement">Possible ancestor node</param>
        /// <returns type="Boolean" />
        
        if (descendant === ancestor)
            return true;
            
        return AjaxControlToolkit.DomUtility.isDescendant(ancestor, descendant);
    },
    isSibling : function(self, sibling) {
        /// <summary>
        /// Whether the specified element is a sibling of the self element
        /// </summary>
        /// <param name="self" type="Sys.UI.DomElement">Self node</param>
        /// <param name="sibling" type="Sys.UI.DomElement">Possible sibling node</param>
        /// <returns type="Boolean" />
        
        var parent = self.parentNode;
        for (var i = 0; i < parent.childNodes.length; i++) {
            if (parent.childNodes[i] == sibling) return true;
        }
        return false;
    }
}
AjaxControlToolkit._DomUtility.registerClass("AjaxControlToolkit._DomUtility");
AjaxControlToolkit.DomUtility = new AjaxControlToolkit._DomUtility();


AjaxControlToolkit.TextBoxWrapper = function(element) {
    /// <summary>
    /// Class that wraps a TextBox (INPUT type="text") to abstract-out the
    /// presence of a watermark (which may be visible to the user but which
    /// should never be read by script.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// The DOM element the behavior is associated with
    /// </param>
    AjaxControlToolkit.TextBoxWrapper.initializeBase(this, [element]);
    this._current = element.value;
    this._watermark = null;
    this._isWatermarked = false;
}

AjaxControlToolkit.TextBoxWrapper.prototype = {

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        this.get_element().AjaxControlToolkitTextBoxWrapper = null;
        AjaxControlToolkit.TextBoxWrapper.callBaseMethod(this, 'dispose');
    },

    get_Current : function() {
        /// <value type="String">
        /// Current value actually in the TextBox (i.e., TextBox.value)
        /// </value>
        this._current = this.get_element().value;
        return this._current;
    },
    set_Current : function(value) {
        this._current = value;
        this._updateElement();
    },

    get_Value : function() {
        /// <value type="String">
        /// Conceptual "value" of the TextBox - its contents if no watermark is present
        /// or "" if one is
        /// </value>
        if (this.get_IsWatermarked()) {
            return "";
        } else {
            return this.get_Current();
        }
    },
    set_Value : function(text) {
        this.set_Current(text);
        if (!text || (0 == text.length)) {
            if (null != this._watermark) {
                this.set_IsWatermarked(true);
            }
        } else {
            this.set_IsWatermarked(false);
        }
    },

    get_Watermark : function() {
        /// <value type="String">
        /// Text of the watermark for the TextBox
        /// </value>
        return this._watermark;
    },
    set_Watermark : function(value) {
        this._watermark = value;
        this._updateElement();
    },

    get_IsWatermarked : function() {
        /// <value type="Boolean">
        /// true iff the TextBox is watermarked
        /// </value>
        return this._isWatermarked;
    },
    set_IsWatermarked : function(isWatermarked) {
        if (this._isWatermarked != isWatermarked) {
            this._isWatermarked = isWatermarked;
            this._updateElement();
            this._raiseWatermarkChanged();
        }
    },

    _updateElement : function() {
        /// <summary>
        /// Updates the actual contents of the TextBox according to what should be there
        /// </summary>
        var element = this.get_element();
        if (this._isWatermarked) {
            if (element.value != this._watermark) {
                element.value = this._watermark;
            }
        } else {
            if (element.value != this._current) {
                element.value = this._current;
            }
        }
    },

    add_WatermarkChanged : function(handler) {
        /// <summary>
        /// Adds a handler for the WatermarkChanged event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("WatermarkChanged", handler);
    },
    remove_WatermarkChanged : function(handler) {
        /// <summary>
        /// Removes a handler for the WatermarkChanged event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("WatermarkChanged", handler);
    },
    _raiseWatermarkChanged : function() {
        /// <summary>
        /// Raises the WatermarkChanged event
        /// </summary>
        var onWatermarkChangedHandler = this.get_events().getHandler("WatermarkChanged");
        if (onWatermarkChangedHandler) {
            onWatermarkChangedHandler(this, Sys.EventArgs.Empty);
        }
    }
}
AjaxControlToolkit.TextBoxWrapper.get_Wrapper = function(element) {
    /// <summary>
    /// Gets (creating one if necessary) the TextBoxWrapper for the specified TextBox
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// TextBox for which to get the wrapper
    /// </param>
    /// <returns type="AjaxControlToolkit.TextBoxWrapper">
    /// TextBoxWrapper instance
    /// </returns>
    if (null == element.AjaxControlToolkitTextBoxWrapper) {
        element.AjaxControlToolkitTextBoxWrapper = new AjaxControlToolkit.TextBoxWrapper(element);
    }
    return element.AjaxControlToolkitTextBoxWrapper;
}
AjaxControlToolkit.TextBoxWrapper.registerClass('AjaxControlToolkit.TextBoxWrapper', Sys.UI.Behavior);

AjaxControlToolkit.TextBoxWrapper.validatorGetValue = function(id) {
    /// <summary>
    /// Wrapper for ASP.NET's validatorGetValue to return the value from the wrapper if present
    /// </summary>
    /// <param name="id" type="String">
    /// id of the element
    /// </param>
    /// <returns type="Object">
    /// Value from the wrapper or result of original ValidatorGetValue
    /// </returns>
    var control = $get(id);
    if (control && control.AjaxControlToolkitTextBoxWrapper) {
        return control.AjaxControlToolkitTextBoxWrapper.get_Value();
    }
    return AjaxControlToolkit.TextBoxWrapper._originalValidatorGetValue(id);
}

// Wrap ASP.NET's ValidatorGetValue with AjaxControlToolkit.TextBoxWrapper.validatorGetValue
// to make validators work properly with watermarked TextBoxes
if (typeof(ValidatorGetValue) == 'function') {
    AjaxControlToolkit.TextBoxWrapper._originalValidatorGetValue = ValidatorGetValue;
    ValidatorGetValue = AjaxControlToolkit.TextBoxWrapper.validatorGetValue;
}


// Temporary fix null reference bug in Sys.CultureInfo._getAbbrMonthIndex
if (Sys.CultureInfo.prototype._getAbbrMonthIndex) {
    try {
        Sys.CultureInfo.prototype._getAbbrMonthIndex('');
    } catch(ex) {
        Sys.CultureInfo.prototype._getAbbrMonthIndex = function(value) {
            if (!this._upperAbbrMonths) {
                this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);
            }
            return Array.indexOf(this._upperAbbrMonths, this._toUpper(value));
        }
        Sys.CultureInfo.CurrentCulture._getAbbrMonthIndex = Sys.CultureInfo.prototype._getAbbrMonthIndex;
        Sys.CultureInfo.InvariantCulture._getAbbrMonthIndex = Sys.CultureInfo.prototype._getAbbrMonthIndex;
    }
}

/* END AjaxControlToolkit.Common.Common.js */
/* START AjaxControlToolkit.Animation.Animations.js */
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Common/Common.js" />


Type.registerNamespace('AjaxControlToolkit.Animation');

// Create an alias for the namespace to save 25 chars each time it's used since
// this is a very long script and will take awhile to download
var $AA = AjaxControlToolkit.Animation;

$AA.registerAnimation = function(name, type) {
    /// <summary>
    /// Register an animation with the AJAX Control Toolkit animation framework. This serves a dual purpose:
    /// 1) to add standard utility methods to the animation type (such as a <code>play</code> method that creates
    /// an animation, plays it, and disposes it when the animation is over), and 2) to associate a name with the
    /// type that will be used when creating animations from a JSON description.  This method can also be called
    /// by other animation libraries to seamlessly interoperate with the AJAX Control Toolkit's animation
    /// framework.
    /// </summary>
    /// <param name="name" type="String">
    /// Name of the animation that will be used as the XML tag name in the XML animation description.  It
    /// should be a valid XML tag (i.e. an alpha-numeric sequence with no spaces, special characters, etc.).
    /// </param>
    /// <param name="type" type="Type">
    /// The type of the new animation must inherit from <see cref="AjaxControlToolkit.Animation.Animation" />.
    /// </param>
    /// <returns />

    // Make sure the type inherits from AjaxControlToolkit.Animation.Animation
    if (type && ((type === $AA.Animation) || (type.inheritsFrom && type.inheritsFrom($AA.Animation)))) {
        // We'll store the animation name/type mapping in a "static" object off of
        // AjaxControlToolkit.Animation.  If this __animations object hasn't been
        // created yet, demand create it on the first registration.
        if (!$AA.__animations) {
            $AA.__animations = { };
        }
        
        // Add the current type to the collection of animations
        $AA.__animations[name.toLowerCase()] = type;
        
        // Add a play function that will make it very easy to create, play, and
        // dispose of an animation.  This is effectively a "static" function on
        // each animation and will take the same parameters as that animation's
        // constructor.
        type.play = function() {
            /// <summary>
            /// Create an animation, play it immediately, and dispose it when finished.
            /// </summary>
            /// <param parameterArray="true" elementType="Object">
            /// The play function takes the same parameters as the type's constructor
            /// </param>
            /// <returns />
        
            // Create and initialize a new animation of the right type and pass in
            // any arguments given to the play function
            var animation = new type();
            type.apply(animation, arguments);
            animation.initialize();
            
            // Add an event handler to dispose the animation when it's finished
            var handler = Function.createDelegate(animation,
                function() {
                    /// <summary>
                    /// Dispose the animation after playing
                    /// </summary>
                    /// <returns />
                    animation.remove_ended(handler);
                    handler = null;
                    animation.dispose();
                });
            animation.add_ended(handler);
            
            // Once the animation has been created and initialized, play it and
            // dispose it as soon as it's finished
            animation.play();            
        }
    } else {
        // Raise an error if someone registers an animation that doesn't inherit
        // from our base Animation class
        throw Error.argumentType('type', type, $AA.Animation, AjaxControlToolkit.Resources.Animation_InvalidBaseType);
    }
}

$AA.buildAnimation = function(json, defaultTarget) {
    /// <summary>
    /// The <code>buildAnimation</code> function is used to turn a JSON animation description
    /// into an actual animation object that can be played.
    /// </summary>
    /// <param name="json" type="String" mayBeNull="true">
    /// JSON description of the animation in the format expected by createAnimation
    /// </param>
    /// <param name="defaultTarget" type="Sys.UI.DomElement" mayBeNull="true" domElement="true">
    /// Target of the animation if none is specified in the JSON description.  The semantics of
    /// target assignment are provided in more detail in createAnimation.
    /// </param>
    /// <returns type="AjaxControlToolkit.Animation.Animation" mayBeNull="true">
    /// Animation created from the JSON description
    /// </returns>
    
    // Ensure we have a description to create an animation with
    if (!json || json === '') {
        return null;
    }

    // "Parse" the JSON so we can easily manipulate it
    // (we don't wrap it in a try/catch when debugging to raise any errors)
    var obj;
    json = '(' + json + ')';
    if (! Sys.Debug.isDebug) {
        try { obj = Sys.Serialization.JavaScriptSerializer.deserialize(json); } catch (ex) { } 
    } else {
        obj = Sys.Serialization.JavaScriptSerializer.deserialize(json);
    }
    
    // Create a new instance of the animation
    return $AA.createAnimation(obj, defaultTarget);    
}

$AA.createAnimation = function(obj, defaultTarget) {
    /// <summary>
    /// The <code>createAnimation</code> function builds a new
    /// <see cref="AjaxControlToolkit.Animation.Animation" /> instance from an object
    /// that describes it.
    /// </summary>
    /// <param name="obj" type="Object">
    /// The object provides a description of the animation to be be generated in
    /// a very specific format. It has two special properties: <code>AnimationName</code>
    /// and <code>AnimationChildren</code>.  The <code>AnimationName</code> is required
    /// and used to find the type of animation to create (this name should map to
    /// one of the animation names supplied to <code>registerAnimation</code>).  The
    /// <code>AnimationChildren</code> property supplies an optional array for
    /// animations that use child animations (such as
    /// <see cref="AjaxControlToolkit.Animation.ParallelAnimation" /> and
    /// <see cref="AjaxControlToolkit.Animation.SequenceAnimation" />). The elements of
    /// the <code>AnimationChildren</code> array are valid
    /// <see cref="AjaxControlToolkit.Animation.Animation" /> objects that meet these same
    /// requirements.  In order for an animation to support child animations, it must
    /// derive from the <see cref="AjaxControlToolkit.Animation.ParentAnimation" /> class
    /// which provides common methods like <code>add</code>, <code>clear</code>, etc. The
    /// remaining properties of the object are used to set parameters specific to the type
    /// of animation being created (e.g. <code>duration</code>, <code>minimumOpacity</code>,
    /// <code>startValue</code>, etc.) and should have a corresponding property on the
    /// animation.  You can also assign an arbitrary JavaScript expression to any property
    /// by adding 'Script' to the end of its name (i.e., Height="70" can be replaced by
    /// HeightScript="$get('myElement').offsetHeight") and have the property set to the
    /// result of evaluating the expression before the animation is played each time.
    /// </param>
    /// <param name="defaultTarget" type="Sys.UI.DomElement" mayBeNull="true" domElement="true">
    /// The function also takes a <code>defaultTarget</code> parameter that is used as the
    /// target of the animation if the object does not specify one.  This parameter should be
    /// an instance of <see cref="Sys.UI.DomElement" /> and not just the name of an element.
    /// </param>
    /// <returns type="AjaxControlToolkit.Animation.Animation">
    /// <see cref="AjaxControlToolkit.Animation.Animation" /> created from the description
    /// </returns>
    /// <remarks>
    /// Exceptions are thrown when the <code>AnimationName</code> cannot be found.  Also,
    /// any exceptions raised by setting properties or providing properties with invalid
    /// names will only be raised when debugging.
    /// </remarks>

    // Create a default instance of the animation by looking up the AnimationName
    // in the global __animations object.
    if (!obj || !obj.AnimationName) {
        throw Error.argument('obj', AjaxControlToolkit.Resources.Animation_MissingAnimationName);
    }
    var type = $AA.__animations[obj.AnimationName.toLowerCase()];
    if (!type) {
        throw Error.argument('type', String.format(AjaxControlToolkit.Resources.Animation_UknownAnimationName, obj.AnimationName));
    }
    var animation = new type();
    
    // Set the animation's target if provided via defaultTarget (note that setting
    // it via AnimationTarget will happen during the regular property setting phase)
    if (defaultTarget) {
        animation.set_target(defaultTarget);
    }
    
    // If there is an AnimationChildren array and the animation inherits from
    // ParentAnimation, then we will recusively build the child animations.  It is
    // important that we create the child animations before setting the animation's
    // properties or initializing (because some properties and initialization may be
    // propogated down from parent to child).
    if (obj.AnimationChildren && obj.AnimationChildren.length) {
        if ($AA.ParentAnimation.isInstanceOfType(animation)) {
            for (var i = 0; i < obj.AnimationChildren.length; i++) {
                var child = $AA.createAnimation(obj.AnimationChildren[i]);
                if (child) {
                    animation.add(child);
                }
            }
        } else {
            throw Error.argument('obj', String.format(AjaxControlToolkit.Resources.Animation_ChildrenNotAllowed, type.getName()));
        }
    }
    
    // Get the list of all properties available to set on the current animation's
    // type.  We create a mapping from the property's lowercase friendly name
    // (i.e., "duration") to the name of its setter (i.e., "set_duration").  This is
    // essentialy in setting properties so we only copy over valid values.
    var properties = type.__animationProperties;
    if (!properties) {
        // Get the properties for this type by walking its prototype - by doing
        // this we'll effectively ignore anything not defined in the prototype
        type.__animationProperties = { };
        type.resolveInheritance();
        for (var name in type.prototype) {
            if (name.startsWith('set_')) {
                type.__animationProperties[name.substr(4).toLowerCase()] = name;
            }
        }
        
        // Remove the 'id' property as it shouldn't be set by the animation
        // (NOTE: the 'target' proeprty shouldn't be set to a string value, but it
        // isn't removed because it can be used as a valid dynamic property - i.e.
        // Target="myElement" *DOES NOT WORK*, but it's OKAY to use
        // TargetScript="$get('myElement')".  Validation for this scenario will be
        // handled automatically by _validateParams when debugging as Target is required
        // to be a dom element.)
        delete type.__animationProperties['id'];
        properties = type.__animationProperties;
    }
    
    // Loop through each of the properties in the object and check if it's in the list
    // of valid property names.  We will check the type of the propertyName to make sure
    // it's a String (as other types can be added by the ASP.NET AJAX compatability
    // layers to all objects and cause errors if you don't exclude them).  We will first
    // try to set a property with the same name if it exists.  If we can't find one but
    // the name of the property ends in 'script', then we will try to set a corresponding
    // dynamic property.  If no matches can be found at all, we'll raise an error when
    // debugging.
    for (var property in obj) {
        // Ignore the special properties in the object that don't correspond
        // to any actual properties on the animation
        var prop = property.toLowerCase();
        if (prop == 'animationname' || prop == 'animationchildren') {
            continue;
        }
        
        var value = obj[property];
        
        // Try to directly set the value of this property
        var setter = properties[prop];
        if (setter && String.isInstanceOfType(setter) && animation[setter]) {
            // Ignore any exceptions raised by setting the property
            // unless we're debugging
            if (! Sys.Debug.isDebug) {
                try { animation[setter](value); } catch (ex) { }
            } else {
                animation[setter](value);
            }
        } else {
            // Try to set the value of a dynamic property
            if (prop.endsWith('script')) {
                setter = properties[prop.substr(0, property.length - 6)];
                if (setter && String.isInstanceOfType(setter) && animation[setter]) {
                    animation.DynamicProperties[setter] = value;
                } else if ( Sys.Debug.isDebug) {
                    // Raise an error when debugging if we could not find a matching property
                    throw Error.argument('obj', String.format(AjaxControlToolkit.Resources.Animation_NoDynamicPropertyFound, property, property.substr(0, property.length - 5)));
                }
            } else if ( Sys.Debug.isDebug) {
                // Raise an error when debugging if we could not find a matching property
                throw Error.argument('obj', String.format(AjaxControlToolkit.Resources.Animation_NoPropertyFound, property));
            }
        }
    }
    
    return animation;
}


// In the Xml comments for each of the animations below, there is a special <animation /> tag
// that describes how the animation is referenced from a generic XML animation description


$AA.Animation = function(target, duration, fps) {
    /// <summary>
    /// <code>Animation</code> is an abstract base class used as a starting point for all the other animations.
    /// It provides the basic mechanics for the animation (playing, pausing, stopping, timing, etc.)
    /// and leaves the actual animation to be done in the abstract methods <code>getAnimatedValue</code>
    /// and <code>setValue</code>.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <field name="DynamicProperties" type="Object">
    /// The DynamicProperties collection is used to associate JavaScript expressions with
    /// properties.  The expressions are evaluated just before the animation is played
    /// everytime (in the base onStart method).  The object itself maps strings with the
    /// names of property setters (like "set_verticalOffset") to JavaScript expressions
    /// (like "$find('MyBehavior').get_element().offsetHeight").  Note specifically that
    /// the dynamic properties are JavaScript expressions and not abitrary statements (i.e.
    /// you can't include things like "return foo;"), although you can include anything
    /// inside an anonymous function definition that you immediately invoke (i.e.,
    /// "(function() { return foo; })()").  A dynamic property can be set in the generic
    /// XML animation description by appending Script onto any legitimate property name
    /// (for example, instead of Height="70" we could use
    /// HeightScript="$find('MyBehavior').get_element().offsetHeight").  Any exceptions
    /// raised when setting dynamic properties (including both JavaScript evaluation errors
    /// and other exceptions raised by property setters) will only be propogated when
    /// debugging.
    /// </field>
    /// <remarks>
    /// Animations need to be as fast as possible - even in debug mode.  Don't add validation code to
    /// methods involved in every step of the animation.
    /// </remarks>
    /// <animation>Animation</animation>
    $AA.Animation.initializeBase(this);
    
    // Length of the animation in seconds
    this._duration = 1;
    
    // Number of steps per second
    this._fps = 25;
    
    // Target Sys.UI.DomElement of the animation
    this._target = null;
    
    // Tick event handler
    this._tickHandler = null;
    
    // Animation timer
    this._timer = null;
    
    // Percentage of the animation already played
    this._percentComplete = 0;
    
    // Percentage of the animation to play on each step
    this._percentDelta = null;
    
    // Reference to the animation that owns this animation (currently only set in 
    // ParallelAnimation.add).  This concept of ownership allows an entire animation
    // subtree to be driven off a single timer so all the operations are properly
    // synchronized.
    this._owner = null;
    
    // Reference to the animation that contains this as a child (this is set
    // in ParentAnimation.add).  The primary use of the parent animation is in
    // resolving the animation target when one isn't specified.
    this._parentAnimation = null;
    
    // The DynamicProperties collection is used to associate JavaScript expressions with
    // properties.  The expressions are evaluated just before the animation is played
    // everytime (in the base onStart method).  See the additional information in the
    // XML <field> comment above.
    this.DynamicProperties = { };
    
    // Set the target, duration, and fps if they were provided in the constructor
    if (target) {
        this.set_target(target);
    }
    if (duration) {
        this.set_duration(duration);
    }
    if (fps) { 
        this.set_fps(fps);
    }
}
$AA.Animation.prototype = {
    dispose: function() {
        /// <summary>
        /// Dispose the animation
        /// </summary>
        /// <returns />

        if (this._timer) {
            this._timer.dispose();
            this._timer = null;
        }

        this._tickHandler = null;
        this._target = null;

        $AA.Animation.callBaseMethod(this, 'dispose');
    },

    play: function() {
        /// <summary>
        /// Play the animation from the beginning or where it was left off when paused.
        /// </summary>
        /// <returns />
        /// <remarks>
        /// If this animation is the child of another, you must call <code>play</code> on its parent instead.
        /// </remarks>

        // If ownership of this animation has been claimed, then we'll require the parent to
        // handle playing the animation (this is very important because then the entire animation
        // tree runs on the same timer and updates consistently)
        if (!this._owner) {
            var resume = true;
            if (!this._timer) {
                resume = false;

                if (!this._tickHandler) {
                    this._tickHandler = Function.createDelegate(this, this._onTimerTick);
                }

                this._timer = new Sys.Timer();
                this._timer.add_tick(this._tickHandler);

                this.onStart();

                this._timer.set_interval(1000 / this._fps);
                this._percentDelta = 100 / (this._duration * this._fps);
                this._updatePercentComplete(0, true);
            }

            this._timer.set_enabled(true);

            this.raisePropertyChanged('isPlaying');
            if (!resume) {
                this.raisePropertyChanged('isActive');
            }
        }
    },

    pause: function() {
        /// <summary>
        /// Pause the animation if it is playing.  Calling <code>play</code> will resume where
        /// the animation left off.
        /// </summary>
        /// <returns />
        /// <remarks>
        /// If this animation is the child of another, you must call <code>pause</code> on its parent instead.
        /// </remarks>

        if (!this._owner) {
            if (this._timer) {
                this._timer.set_enabled(false);

                this.raisePropertyChanged('isPlaying');
            }
        }
    },

    stop: function(finish) {
        /// <summary>
        /// Stop playing the animation.
        /// </summary>
        /// <param name="finish" type="Boolean" mayBeNull="true" optional="true">
        /// Whether or not stopping the animation should leave the target element in a state
        /// consistent with the animation playing completely by performing the last step.
        /// The default value is true.
        /// </param>
        /// <returns />
        /// <remarks>
        /// If this animation is the child of another, you must call <code>stop</code> on
        /// its parent instead.
        /// </remarks>

        if (!this._owner) {
            var t = this._timer;
            this._timer = null;
            if (t) {
                t.dispose();

                if (this._percentComplete !== 100) {
                    this._percentComplete = 100;
                    this.raisePropertyChanged('percentComplete');
                    if (finish || finish === undefined) {
                        this.onStep(100);
                    }
                }
                this.onEnd();

                this.raisePropertyChanged('isPlaying');
                this.raisePropertyChanged('isActive');
            }
        }
    },

    onStart: function() {
        /// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />

        this.raiseStarted();

        // Initialize any dynamic properties
        for (var property in this.DynamicProperties) {
            try {
                // Invoke the property's setter on the evaluated expression
                this[property](eval(this.DynamicProperties[property]));
            } catch (ex) {
                // Propogate any exceptions if we're debugging, otherwise eat them
                if (Sys.Debug.isDebug) {
                    throw ex;
                }
            }
        }
    },

    onStep: function(percentage) {
        /// <summary>
        /// The <code>onStep</code> method is called repeatedly to progress the animation through each frame
        /// </summary>
        /// <param name="percentage" type="Number">Percentage of the animation already complete</param>
        /// <returns />

        this.setValue(this.getAnimatedValue(percentage));
        this.raiseStep();
    },

    onEnd: function() {
        /// <summary>
        /// The <code>onEnd</code> method is called just after the animation is played each time.
        /// </summary>
        /// <returns />

        this.raiseEnded();
    },

    getAnimatedValue: function(percentage) {
        /// <summary>
        /// Determine the state of the animation after the given percentage of its duration has elapsed
        /// </summary>
        /// <param name="percentage" type="Number">Percentage of the animation already complete</param>
        /// <returns type="Object">
        /// State of the animation after the given percentage of its duration has elapsed that will
        /// be passed to <code>setValue</code>
        /// </returns>
        throw Error.notImplemented();
    },

    setValue: function(value) {
        /// <summary>
        /// Set the current state of the animation
        /// </summary>
        /// <param name="value" type="Object">Current state of the animation (as retreived from <code>getAnimatedValue</code>)</param>
        /// <returns />
        throw Error.notImplemented();
    },

    interpolate: function(start, end, percentage) {
        /// <summary>
        /// The <code>interpolate</code> function is used to find the appropriate value between starting and
        /// ending values given the current percentage.
        /// </summary>
        /// <param name="start" type="Number">
        /// Start of the range to interpolate
        /// </param>
        /// <param name="end" type="Number">
        /// End of the range to interpolate
        /// </param>
        /// <param name="percentage" type="Number">
        /// Percentage completed in the range to interpolate
        /// </param>
        /// <returns type="Number">
        /// Value the desired percentage between the start and end values
        /// </returns>
        /// <remarks>
        /// In the future, we hope to make several implementations of this available so we can dynamically
        /// change the apparent speed of the animations, although it may make more sense to modify the
        /// <code>_updatePercentComplete</code> function instead.
        /// </remarks>
        return start + (end - start) * (percentage / 100);
    },

    _onTimerTick: function() {
        /// <summary>
        /// Handler for the tick event to move the animation along through its duration
        /// </summary>
        /// <returns />
        this._updatePercentComplete(this._percentComplete + this._percentDelta, true);
    },

    _updatePercentComplete: function(percentComplete, animate) {
        /// <summary>
        /// Update the animation and its target given the current percentage of its duration that
        /// has already elapsed
        /// </summary>
        /// <param name="percentComplete" type="Number">
        /// Percentage of the animation duration that has already elapsed
        /// </param>
        /// <param name="animate" type="Boolean" mayBeNull="true" optional="true">
        /// Whether or not updating the animation should visually modify the animation's target
        /// </param>
        /// <returns />

        if (percentComplete > 100) {
            percentComplete = 100;
        }

        this._percentComplete = percentComplete;
        this.raisePropertyChanged('percentComplete');

        if (animate) {
            this.onStep(percentComplete);
        }

        if (percentComplete === 100) {
            this.stop(false);
        }
    },

    setOwner: function(owner) {
        /// <summary>
        /// Make this animation the child of another animation
        /// </summary>
        /// <param name="owner" type="AjaxControlToolkit.Animation.Animation">
        /// Parent animation
        /// </param>
        /// <returns />
        this._owner = owner;
    },

    raiseStarted: function() {
        /// <summary>
        /// Raise the <code>started</code> event
        /// </summary>
        /// <returns />
        var handlers = this.get_events().getHandler('started');
        if (handlers) {
            handlers(this, Sys.EventArgs.Empty);
        }
    },

    add_started: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>started</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />
        this.get_events().addHandler("started", handler);
    },

    remove_started: function(handler) {
        /// <summary>
        /// Removes an event handler for the <code>started</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to remove from the event.
        /// </param>
        /// <returns />
        this.get_events().removeHandler("started", handler);
    },

    raiseEnded: function() {
        /// <summary>
        /// Raise the <code>ended</code> event
        /// </summary>
        /// <returns />
        var handlers = this.get_events().getHandler('ended');
        if (handlers) {
            handlers(this, Sys.EventArgs.Empty);
        }
    },

    add_ended: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>ended</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />
        this.get_events().addHandler("ended", handler);
    },

    remove_ended: function(handler) {
        /// <summary>
        /// Removes an event handler for the <code>ended</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to remove from the event.
        /// </param>
        /// <returns />
        this.get_events().removeHandler("ended", handler);
    },

    raiseStep: function() {
        /// <summary>
        /// Raise the <code>step</code> event
        /// </summary>
        /// <returns />
        var handlers = this.get_events().getHandler('step');
        if (handlers) {
            handlers(this, Sys.EventArgs.Empty);
        }
    },

    add_step: function(handler) {
        /// <summary>
        /// Adds an event handler for the <code>step</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to add to the event.
        /// </param>
        /// <returns />
        this.get_events().addHandler("step", handler);
    },

    remove_step: function(handler) {
        /// <summary>
        /// Removes an event handler for the <code>step</code> event.
        /// </summary>
        /// <param name="handler" type="Function">
        /// The handler to remove from the event.
        /// </param>
        /// <returns />
        this.get_events().removeHandler("step", handler);
    },

    get_target: function() {
        /// <value type="Sys.UI.DomElement" domElement="true" mayBeNull="true">
        /// Target of the animation.  If the target of this animation is null and
        /// the animation has a parent, then it will recursively use the target of
        /// the parent animation instead.
        /// </value>
        /// <remarks>
        /// Do not set this property in a generic Xml animation description. It should be set
        /// using either the extender's TargetControlID or the AnimationTarget property (the latter
        /// maps to AjaxControlToolkit.Animation.set_animationTarget).  The only valid way to
        /// set this property in the generic Xml animation description is to use the dynamic
        /// property TargetScript="$get('myElement')".
        /// <remarks>
        if (!this._target && this._parentAnimation) {
            return this._parentAnimation.get_target();
        }
        return this._target;
    },
    set_target: function(value) {
        if (this._target != value) {
            this._target = value;
            this.raisePropertyChanged('target');
        }
    },

    set_animationTarget: function(id) {
        /// <value type="string" mayBeNull="false">
        /// ID of a Sys.UI.DomElement or Sys.UI.Control to use as the target of the animation
        /// </value>
        /// <remarks>
        /// If no Sys.UI.DomElement or Sys.UI.Control can be found for the given ID, an
        /// argument exception will be thrown.
        /// <remarks>

        // Try to find a Sys.UI.DomElement
        var target = null;
        var element = $get(id);
        if (element) {
            target = element;
        } else {
            // Try to find the control in the AJAX controls collection
            var ctrl = $find(id);
            if (ctrl) {
                element = ctrl.get_element();
                if (element) {
                    target = element;
                }
            }
        }

        // Use the new target if we have one, or raise an error if not
        if (target) {
            this.set_target(target);
        } else {
            throw Error.argument('id', String.format(AjaxControlToolkit.Resources.Animation_TargetNotFound, id));
        }
    },

    get_duration: function() {
        /// <value type="Number">
        /// Length of the animation in seconds.  The default is 1.
        /// </value>
        return this._duration;
    },
    set_duration: function(value) {
        value = this._getFloat(value);
        if (this._duration != value) {
            this._duration = value;
            this.raisePropertyChanged('duration');
        }
    },

    get_fps: function() {
        /// <value type="Number" integer="true">
        /// Number of steps per second.  The default is 25.
        /// </value>
        return this._fps;
    },
    set_fps: function(value) {
        value = this._getInteger(value);
        if (this.fps != value) {
            this._fps = value;
            this.raisePropertyChanged('fps');
        }
    },

    get_isActive: function() {
        /// <value type="Boolean">
        /// <code>true</code> if animation is active, <code>false</code> if not.
        /// </value>
        return (this._timer !== null);
    },

    get_isPlaying: function() {
        /// <value type="Boolean">
        /// <code>true</code> if animation is playing, <code>false</code> if not.
        /// </value>
        return (this._timer !== null) && this._timer.get_enabled();
    },

    get_percentComplete: function() {
        /// <value type="Number">
        /// Percentage of the animation already played.
        /// </value>
        return this._percentComplete;
    },

    _getBoolean: function(value) {
        /// <summary>
        /// Helper to convert strings to booleans for property setters
        /// </summary>
        /// <param name="value" type="Object">
        /// Value to convert if it's a string
        /// </param>
        /// <returns type="Object">
        /// Value that has been converted if it was a string
        /// </returns>
        if (String.isInstanceOfType(value)) {
            return Boolean.parse(value);
        }
        return value;
    },

    _getInteger: function(value) {
        /// <summary>
        /// Helper to convert strings to integers for property setters
        /// </summary>
        /// <param name="value" type="Object">Value to convert if it's a string</param>
        /// <returns type="Object">Value that has been converted if it was a string</returns>
        if (String.isInstanceOfType(value)) {
            return parseInt(value);
        }
        return value;
    },

    _getFloat: function(value) {
        /// <summary>
        /// Helper to convert strings to floats for property setters
        /// </summary>
        /// <param name="value" type="Object">Value to convert if it's a string</param>
        /// <returns type="Object">Value that has been converted if it was a string</returns>
        if (String.isInstanceOfType(value)) {
            return parseFloat(value);
        }
        return value;
    },

    _getEnum: function(value, type) {
        /// <summary>
        /// Helper to convert strings to enum values for property setters
        /// </summary>
        /// <param name="value" type="Object">Value to convert if it's a string</param>
        /// <param name="type" type="Type">Type of the enum to convert to</param>
        /// <returns type="Object">Value that has been converted if it was a string</returns>
        if (String.isInstanceOfType(value) && type && type.parse) {
            return type.parse(value);
        }
        return value;
    }
}
$AA.Animation.registerClass('AjaxControlToolkit.Animation.Animation', Sys.Component);
$AA.registerAnimation('animation', $AA.Animation);


$AA.ParentAnimation = function(target, duration, fps, animations) {
    /// <summary>
    /// The <code>ParentAnimation</code> serves as a base class for all animations that contain children (such as
    /// <see cref="AjaxControlToolkit.Animation.ParallelAnimation" />, <see cref="AjaxControlToolkit.SequenceAnimation" />,
    /// etc.).  It does not actually play the animations, so any classes that inherit from it must do so.  Any animation
    /// that requires nested child animations must inherit from this class, although it will likely want to inherit off of
    /// <see cref="AjaxControlToolkit.Animation.ParallelAnimation" /> or <see cref="AjaxControlToolkit.SequenceAnimation" />
    /// which will actually play their child animations.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="AjaxControlToolkit.Animation.Animation">
    /// Array of child animations to be played
    /// </param>
    /// <animation>Parent</animation>
    $AA.ParentAnimation.initializeBase(this, [target, duration, fps]);
    
    // Array of child animations (there are no assumptions placed on order because
    // it will matter for some derived animations like SequenceAnimation, but not
    // for others like ParallelAnimation) that is demand created in add
    this._animations = [];
    
    // Add any child animations passed into the constructor
    if (animations && animations.length) {
        for (var i = 0; i < animations.length; i++) {
            this.add(animations[i]);
        }
    }
}
$AA.ParentAnimation.prototype = {
    initialize : function() {
    	/// <summary>
        /// Initialize the parent along with any child animations that have not yet been initialized themselves
    	/// </summary>
    	/// <returns />
        $AA.ParentAnimation.callBaseMethod(this, 'initialize');
        
        // Initialize all the uninitialized child animations
        if (this._animations) {
            for (var i = 0; i < this._animations.length; i++) {
                var animation = this._animations[i];
                if (animation && !animation.get_isInitialized) {
                    animation.initialize();
                }
            }
        }
    },
    
    dispose : function() {
    	/// <summary>
        /// Dispose of the child animations
    	/// </summary>
    	/// <returns />

        this.clear();
        this._animations = null;
        $AA.ParentAnimation.callBaseMethod(this, 'dispose');
    },
    
    get_animations : function() {
    	/// <value elementType="AjaxControlToolkit.Animation.Animation">
        /// Array of child animations to be played (there are no assumptions placed on order because it will matter for some
        /// derived animations like <see cref="AjaxControlToolkit.Animation.SequenceAnimation" />, but not for
        /// others like <see cref="AjaxControlToolkit.Animation.ParallelAnimation" />).  To manipulate the child
        /// animations, use the functions <code>add</code>, <code>clear</code>, <code>remove</code>, and <code>removeAt</code>.
    	/// </value>
        return this._animations;
    },
    
    add : function(animation) {
    	/// <summary>
        /// Add an animation as a child of this animation.
    	/// </summary>
    	/// <param name="animation" type="AjaxControlToolkit.Animation.Animation">Child animation to add</param>
    	/// <returns />

        if (this._animations) {
            if (animation) {
                animation._parentAnimation = this;
            }
            Array.add(this._animations, animation);
            this.raisePropertyChanged('animations');
        }
    },
    
    remove : function(animation) {
        /// <summary>
        /// Remove the animation from the array of child animations.
        /// </summary>
        /// <param name="animation" type="AjaxControlToolkit.Animation.Animation">
        /// Child animation to remove
        /// </param>
        /// <returns />
        /// <remarks>
        /// This will dispose the removed animation.
        /// </remarks>

        if (this._animations) {
            if (animation) {
                animation.dispose();
            }
            Array.remove(this._animations, animation);
            this.raisePropertyChanged('animations');
        }
    },
    
    removeAt : function(index) {
        /// <summary>
        /// Remove the animation at a given index from the array of child animations.
        /// </summary>
        /// <param name="index" type="Number" integer="true">
        /// Index of the child animation to remove
        /// </param>
        /// <returns />
        
        if (this._animations) {
            var animation = this._animations[index];
            if (animation) {
                animation.dispose();
            }
            Array.removeAt(this._animations, index);
            this.raisePropertyChanged('animations');
        }
    },
    
    clear : function() {
    	/// <summary>
        /// Clear the array of child animations.
    	/// </summary>
    	/// <remarks>
    	/// This will dispose the cleared child animations.
    	/// </remarks>
    	/// <returns />

        if (this._animations) {
            for (var i = this._animations.length - 1; i >= 0; i--) {
                this._animations[i].dispose();
                this._animations[i] = null;
            }
            Array.clear(this._animations);
            this._animations = [];
            this.raisePropertyChanged('animations');
        }
    }
}
$AA.ParentAnimation.registerClass('AjaxControlToolkit.Animation.ParentAnimation', $AA.Animation);
$AA.registerAnimation('parent', $AA.ParentAnimation);


$AA.ParallelAnimation = function(target, duration, fps, animations) {
    /// <summary>
    /// The <code>ParallelAnimation</code> plays several animations simultaneously.  It inherits from
    /// <see cref="AjaxControlToolkit.Animation.ParentAnimation" />, but makes itself the owner of all
    /// its child animations to allow the use a single timer and syncrhonization mechanisms shared with
    /// all the children (in other words, the <code>duration</code> properties of any child animations
    /// are ignored in favor of the parent's <code>duration</code>).  It is very useful in creating
    /// sophisticated effects through combination of simpler animations.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="AjaxControlToolkit.Animation.Animation">
    /// Array of child animations
    /// </param>
    /// <animation>Parallel</animation>
    $AA.ParallelAnimation.initializeBase(this, [target, duration, fps, animations]);
}
$AA.ParallelAnimation.prototype = {
    add : function(animation) {
    	/// <summary>
        /// Add an animation as a child of this animation and make ourselves its owner.
    	/// </summary>
    	/// <param name="animation" type="AjaxControlToolkit.Animation.Animation">Child animation to add</param>
    	/// <returns />
        $AA.ParallelAnimation.callBaseMethod(this, 'add', [animation]);
        animation.setOwner(this);
    },
    
    onStart : function() {
        /// <summary>
        /// Get the child animations ready to play
        /// </summary>
        /// <returns />

        $AA.ParallelAnimation.callBaseMethod(this, 'onStart');
        var animations = this.get_animations();
        for (var i = 0; i < animations.length; i++) {
            animations[i].onStart();
        }
    },
    
    onStep : function(percentage) {
        /// <summary>
        /// Progress the child animations through each frame
        /// </summary>
        /// <param name="percentage" type="Number">
        /// Percentage of the animation already complete
        /// </param>
        /// <returns />

        var animations = this.get_animations();
        for (var i = 0; i < animations.length; i++) {
            animations[i].onStep(percentage);
        }
    },
    
    onEnd : function() {
        /// <summary>
        /// Finish playing all of the child animations
        /// </summary>
        /// <returns />

        var animations = this.get_animations();
        for (var i = 0; i < animations.length; i++) {
            animations[i].onEnd();
        }
        $AA.ParallelAnimation.callBaseMethod(this, 'onEnd');
    }
}
$AA.ParallelAnimation.registerClass('AjaxControlToolkit.Animation.ParallelAnimation', $AA.ParentAnimation);
$AA.registerAnimation('parallel', $AA.ParallelAnimation);


$AA.SequenceAnimation = function(target, duration, fps, animations, iterations) {
    /// <summary>
    /// The <code>SequenceAnimation</code> runs several animations one after the other.  It can also
    /// repeat the sequence of animations for a specified number of iterations (which defaults to a
    /// single iteration, but will repeat forever if you specify zero or less iterations).  Also, the
    /// <code>SequenceAnimation</code> cannot be a child of a <see cref="AjaxControlToolkit.Animation.ParallelAnimation" />
    /// (or any animation inheriting from it).
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="AjaxControlToolkit.Animation.Animation">
    /// Array of child animations
    /// </param>
    /// <param name="iterations" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of times to repeatedly play the sequence.  If zero or less iterations are specified, the sequence
    /// will repeat forever.  The default value is 1 iteration.
    /// </param>
    /// <remarks>
    /// The <code>SequenceAnimation</code> ignores the <code>duration</code> and <code>fps</code>
    /// properties, and will let each of its child animations use any settings they please.
    /// </remarks>
    /// <animation>Sequence</animation>
    $AA.SequenceAnimation.initializeBase(this, [target, duration, fps, animations]);

    // Handler used to determine when an animation has finished
    this._handler = null;
    
    // Flags to note whether we're playing, paused, or stopped
    this._paused = false;
    this._playing = false;
    
    // Index of the currently executing animation in the sequence
    this._index = 0;
    
    // Counter used when playing the animation to determine the remaining number of times to play the entire sequence
    this._remainingIterations = 0;
    
    // Number of iterations
    this._iterations = (iterations !== undefined) ? iterations : 1;
}
$AA.SequenceAnimation.prototype = {
    dispose : function() {
    	/// <summary>
        /// Dispose the animation
        /// </summary>
        /// <returns />
        this._handler = null;
        $AA.SequenceAnimation.callBaseMethod(this, 'dispose');
    },
    
    stop : function() {
        /// <summary>
        /// Stop playing the entire sequence of animations
        /// </summary>
        /// <returns />
        /// <remarks>
        /// Stopping this animation will perform the last step of each child animation, thereby leaving their
        /// target elements in a state consistent with the animation playing completely. If this animation is
        /// the child of another, you must call <code>stop</code> on its parent instead.
        /// </remarks>

        if (this._playing) {
            var animations = this.get_animations();
            if (this._index < animations.length) {
                // Remove the handler from the currently running animation
                animations[this._index].remove_ended(this._handler);
                // Call stop on all remaining animations to ensure their
                // effects will be seen
                for (var i = this._index; i < animations.length; i++) {
                    animations[i].stop();
                }
            }
            this._playing = false;
            this._paused = false;
            this.raisePropertyChanged('isPlaying');
            this.onEnd();
        }
    },
    
    pause : function() {
        /// <summary>
        /// Pause the animation if it is playing.  Calling <code>play</code> will resume where
        /// the animation left off.
        /// </summary>
        /// <returns />
        /// <remarks>
        /// If this animation is the child of another, you must call <code>pause</code> on its parent instead.
        /// </remarks>

        if (this.get_isPlaying()) {
            var current = this.get_animations()[this._index];
            if (current != null) {
                current.pause();
            }
            this._paused = true;
            this.raisePropertyChanged('isPlaying');
        }
    },
    
    play : function() {
        /// <summary>
        /// Play the sequence of animations from the beginning or where it was left off when paused
        /// </summary>
        /// <returns />
        /// <remarks>
        /// If this animation is the child of another, you must call <code>play</code> on its parent instead
        /// </remarks>

        var animations = this.get_animations();
        if (!this._playing) {
            this._playing = true;
            if (this._paused) {
                this._paused = false;
                var current = animations[this._index];
                if (current != null) {
                    current.play();
                    this.raisePropertyChanged('isPlaying');
                }
            } else {
                this.onStart();
                // Reset the index and attach the handler to the first
                this._index = 0;
                var first = animations[this._index];
                if (first) {
                    first.add_ended(this._handler);
                    first.play();
                    this.raisePropertyChanged('isPlaying');
                } else {
                    this.stop();
                }
            }
        }
    },
    
    onStart : function() {
        /// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time
        /// </summary>
        /// <returns />
        $AA.SequenceAnimation.callBaseMethod(this, 'onStart');
        this._remainingIterations = this._iterations - 1;
        
        // Create the handler we attach to each animation as it plays to determine when we've finished with it
        if (!this._handler) {
            this._handler = Function.createDelegate(this, this._onEndAnimation);
        }
    },
    
    _onEndAnimation : function() {
    	/// <summary>
        /// Wait for the end of each animation, and then continue by playing the other animations remaining
        /// in the sequence.  Stop when it reaches the last animation and there are no remaining iterations.
    	/// </summary>
    	/// <returns />

        // Remove the handler from the current animation
        var animations = this.get_animations();
        var current = animations[this._index++];
        if (current) {
            current.remove_ended(this._handler);
        }
        
        // Keep running animations and stop when we're out
        if (this._index < animations.length) {
            var next = animations[this._index];
            next.add_ended(this._handler);
            next.play();
        } else if (this._remainingIterations >= 1 || this._iterations <= 0) {
            this._remainingIterations--;
            this._index = 0;
            var first = animations[0];
            first.add_ended(this._handler);
            first.play();
        } else {
            this.stop();
        }
    },
    
    onStep : function(percentage) {
        /// <summary>
        /// Raises an invalid operation exception because this will only be called if a <code>SequenceAnimation</code>
        /// has been nested inside an <see cref="AjaxControlToolkit.Animation.ParallelAnimation" /> (or a derived type).
        /// </summary>
        /// <param name="percentage" type="Number">Percentage of the animation already complete</param>
        /// <returns />
        throw Error.invalidOperation(AjaxControlToolkit.Resources.Animation_CannotNestSequence);
    },
    
    onEnd : function() {
        /// <summary>
        /// The <code>onEnd</code> method is called just after the animation is played each time.
        /// </summary>
        /// <returns />
        this._remainingIterations = 0;
        $AA.SequenceAnimation.callBaseMethod(this, 'onEnd');
    },
    
    get_isActive : function() {
    	/// <value type="Boolean">
        /// <code>true</code> if animation is active, <code>false</code> if not.
        /// </value>
        return true;
    },
    
    get_isPlaying : function() {
    	/// <value type="Boolean">
        /// <code>true</code> if animation is playing, <code>false</code> if not.
        /// </value>
        return this._playing && !this._paused;
    },
    
    get_iterations : function() {
        /// <value type="Number" integer="true">
        /// Number of times to repeatedly play the sequence.  If zero or less iterations are specified, the sequence
        /// will repeat forever.  The default value is 1 iteration.
        /// </value>
        return this._iterations;
    },
    set_iterations : function(value) {
        value = this._getInteger(value);
        if (this._iterations != value) {
            this._iterations = value;
            this.raisePropertyChanged('iterations');
        }
    },
    
    get_isInfinite : function() {
    	/// <value type="Boolean">
        /// <code>true</code> if this animation will repeat forever, <code>false</code> otherwise.
    	/// </value>
        return this._iterations <= 0;
    }
}
$AA.SequenceAnimation.registerClass('AjaxControlToolkit.Animation.SequenceAnimation', $AA.ParentAnimation);
$AA.registerAnimation('sequence', $AA.SequenceAnimation);


$AA.SelectionAnimation = function(target, duration, fps, animations) {
    /// <summary>
    /// The <code>SelectionAnimation</code> will run a single animation chosen from of its child animations. It is
    /// important to note that the <code>SelectionAnimation</code> ignores the <code>duration</code> and <code>fps</code>
    /// properties, and will let each of its child animations use any settings they please.  This is a base class with no
    /// functional implementation, so consider using <see cref="AjaxControlToolkit.Animation.ConditionAnimation" /> or
    /// <see cref="AjaxControlToolkit.Animation.CaseAnimation" /> instead.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="AjaxControlToolkit.Animation.Animation">
    /// Array of child animations
    /// </param>
    /// <animation>Selection</animation>
    $AA.SelectionAnimation.initializeBase(this, [target, duration, fps, animations]);
    
    // Index of the animation selected to play
    this._selectedIndex = -1;
    
    // Reference to the animation selected to play
    this._selected = null;
}
$AA.SelectionAnimation.prototype = {    
    getSelectedIndex : function() {
        /// <summary>
        /// Get the index of the animation that is selected to be played.  If this returns an index outside the bounds of
        /// the child animations array, then nothing is played.
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Index of the selected child animation to play
        /// </returns>
        throw Error.notImplemented();
    },
    
    onStart : function() {
    	/// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />
	    $AA.SelectionAnimation.callBaseMethod(this, 'onStart');
	    
	    var animations = this.get_animations();
	    this._selectedIndex = this.getSelectedIndex();
	    if (this._selectedIndex >= 0 && this._selectedIndex < animations.length) {
	        this._selected = animations[this._selectedIndex];
	        if (this._selected) {
	            this._selected.setOwner(this);
	            this._selected.onStart();
	        }
	    }
    },
    
    onStep : function(percentage) {
    	/// <summary>
        /// The <code>onStep</code> method is called repeatedly to progress the animation through each frame
        /// </summary>
        /// <param name="percentage" type="Number">Percentage of the animation already complete</param>
        /// <returns />

        if (this._selected) {
    	    this._selected.onStep(percentage);
    	}
    },
    
    onEnd : function() {
    	/// <summary>
        /// The <code>onEnd</code> method is called just after the animation is played each time.
        /// </summary>
        /// <returns />

        if (this._selected) {
    	    this._selected.onEnd();
    	    this._selected.setOwner(null);
    	}
    	this._selected = null;
    	this._selectedIndex = null;
	    $AA.SelectionAnimation.callBaseMethod(this, 'onEnd');
    }
}
$AA.SelectionAnimation.registerClass('AjaxControlToolkit.Animation.SelectionAnimation', $AA.ParentAnimation);
$AA.registerAnimation('selection', $AA.SelectionAnimation);


$AA.ConditionAnimation = function(target, duration, fps, animations, conditionScript) {
    /// <summary>
    /// The <code>ConditionAnimation</code> is used as a control structure to play a specific child animation
    /// depending on the result of executing the <code>conditionScript</code>.  If the <code>conditionScript</code>
    /// evaluates to <code>true</code>, the first child animation is played.  If it evaluates to <code>false</code>,
    /// the second child animation is played (although nothing is played if a second animation is not present).
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="AjaxControlToolkit.Animation.Animation">
    /// Array of child animations
    /// </param>
    /// <param name="conditionScript" type="String" mayBeNull="true" optional="true">
    /// JavaScript that should evaluate to <code>true</code> or <code>false</code> to determine which child
    /// animation to play.
    /// </param>
    /// <animation>Condition</animation>
    $AA.ConditionAnimation.initializeBase(this, [target, duration, fps, animations]);
    
    // Condition to determine which index we will play
    this._conditionScript = conditionScript;   
}
$AA.ConditionAnimation.prototype = {    
   getSelectedIndex : function() {
       /// <summary>
       /// Get the index of the animation that is selected to be played.  If this returns an index outside the bounds of
       /// the child animations array, then nothing is played.
       /// </summary>
       /// <returns type="Number" integer="true">
       /// Index of the selected child animation to play
       /// </returns>

        var selected = -1;
        if (this._conditionScript && this._conditionScript.length > 0) {
            try {
                selected = eval(this._conditionScript) ? 0 : 1;
            } catch(ex) {
            }
        }
        return selected;
    },
    
    get_conditionScript : function() {
    	/// <value type="String">
        /// JavaScript that should evaluate to <code>true</code> or <code>false</code> to determine which
        /// child animation to play.
    	/// </value>
        return this._conditionScript;
    },
    set_conditionScript : function(value) {
        if (this._conditionScript != value) {
            this._conditionScript = value;
            this.raisePropertyChanged('conditionScript');
        }
    }
}
$AA.ConditionAnimation.registerClass('AjaxControlToolkit.Animation.ConditionAnimation', $AA.SelectionAnimation);
$AA.registerAnimation('condition', $AA.ConditionAnimation);


$AA.CaseAnimation = function(target, duration, fps, animations, selectScript) {
    /// <summary>
    /// The <code>CaseAnimation</code> is used as a control structure to play a specific child animation depending on
    /// the result of executing the <code>selectScript</code>, which should return the index of the child animation to
    /// play (this is similar to the <code>case</code> or <code>select</code> statements in C#/VB, etc.).  If the provided
    /// index is outside the bounds of the child animations array (or if nothing was returned) then we will not play anything.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="animations" mayBeNull="true" optional="true" parameterArray="true" elementType="AjaxControlToolkit.Animation.Animation">
    /// Array of child animations
    /// </param>
    /// <param name="selectScript" type="String" mayBeNull="true" optional="true">
    /// JavaScript that should evaluate to the index of the appropriate child animation to play.  If this returns an index outside the bounds of the child animations array, then nothing is played.
    /// </param>
    /// <animation>Case</animation>
    $AA.CaseAnimation.initializeBase(this, [target, duration, fps, animations]);

    // Condition to determine which index we will play
    this._selectScript = selectScript;
}
$AA.CaseAnimation.prototype = {
    getSelectedIndex : function() {
        /// <summary>
        /// Get the index of the animation that is selected to be played.  If this returns an index outside the bounds of
        /// the child animations array, then nothing is played.
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Index of the selected child animation to play
        /// </returns>

        var selected = -1;
        if (this._selectScript && this._selectScript.length > 0) {
            try {
                var result = eval(this._selectScript)
                if (result !== undefined)
                    selected = result;
            } catch (ex) {
            }
        }
        return selected;
    },
    
    get_selectScript : function() {
        /// <value type="String">
        /// JavaScript that should evaluate to the index of the appropriate child animation to play.  If this returns an index outside the bounds of the child animations array, then nothing is played.
        /// </value>
        return this._selectScript;
    },
    set_selectScript : function(value) {
        if (this._selectScript != value) {
            this._selectScript = value;
            this.raisePropertyChanged('selectScript');
        }
    }
}
$AA.CaseAnimation.registerClass('AjaxControlToolkit.Animation.CaseAnimation', $AA.SelectionAnimation);
$AA.registerAnimation('case', $AA.CaseAnimation);


$AA.FadeEffect = function() {
    /// <summary>
    /// The FadeEffect enumeration determines whether a fade animation is used to fade in or fade out.
    /// </summary>
    /// <field name="FadeIn" type="Number" integer="true" />
    /// <field name="FadeOut" type="Number" integer="true" />
    throw Error.invalidOperation();
}
$AA.FadeEffect.prototype = {
    FadeIn : 0,
    FadeOut : 1
}
$AA.FadeEffect.registerEnum("AjaxControlToolkit.Animation.FadeEffect", false);


$AA.FadeAnimation = function(target, duration, fps, effect, minimumOpacity, maximumOpacity, forceLayoutInIE) {
    /// <summary>
    /// The <code>FadeAnimation</code> is used to fade an element in or out of view, depending on the
    /// provided <see cref="AjaxControlToolkit.Animation.FadeEffect" />, by settings its opacity.
    /// The minimum and maximum opacity values can be specified to precisely control the fade.
    /// You may also consider using <see cref="AjaxControlToolkit.Animation.FadeInAnimation" /> or
    /// <see cref="AjaxControlToolkit.Animation.FadeOutAnimation" /> if you know the only direction you
    /// are fading.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="effect" type="AjaxControlToolkit.Animation.FadeEffect" mayBeNull="true" optional="true">
    /// Determine whether to fade the element in or fade the element out.  The possible values are <code>FadeIn</code>
    /// and <code>FadeOut</code>.  The default value is <code>FadeOut</code>.
    /// </param>
    /// <param name="minimumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 0.
    /// </param>
    /// <param name="maximumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 1.
    /// </param>
    /// <param name="forceLayoutInIE" type="Boolean" mayBeNull="true" optional="true">
    /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
    /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
    /// This is obviously ignored when working in other browsers.
    /// </param>
    /// <animation>Fade</animation>
    $AA.FadeAnimation.initializeBase(this, [target, duration, fps]);

    // The effect determines whether or not we fade in or out
    this._effect = (effect !== undefined) ? effect : $AA.FadeEffect.FadeIn;
    
    // Maximum and minimum opacities default to 100% and 0%
    this._max = (maximumOpacity !== undefined) ? maximumOpacity : 1;
    this._min = (minimumOpacity !== undefined) ? minimumOpacity : 0;
    
    // Starting and ending opacities
    this._start = this._min;
    this._end = this._max;
    
    // Whether the a layout has already been created (to work around IE
    // problems).
    this._layoutCreated = false;

    // Whether or not we should force a layout to be created for IE by giving it a width
    // and setting its background color (the latter is required in case the user has ClearType enabled).
    // http://msdn.microsoft.com/library/default.asp?url=/workshop/author/filter/reference/filters/alpha.asp
    this._forceLayoutInIE = (forceLayoutInIE === undefined || forceLayoutInIE === null) ? true : forceLayoutInIE;
    
    // Current target of the animation that is cached before the animation plays (since looking up
    // the target could mean walking all the way up to the root of the animation's tree, which we don't
    // want to do for every step of the animation)
    this._currentTarget = null;

    // Properly set up the min/max values provided by the constructor
    this._resetOpacities();  
}
$AA.FadeAnimation.prototype = {
    _resetOpacities : function() {
    	/// <summary>
        /// Set the starting and ending opacity values based on the effect (i.e. when we're fading
        /// in we go from <code>_min</code> to <code>_max</code>, but we go <code>_max</code> to
        /// <code>_min</code> when fading out)
    	/// </summary>
    	/// <returns />

        if (this._effect == $AA.FadeEffect.FadeIn) {
            this._start = this._min;
            this._end = this._max;
        } else {
            this._start = this._max;
            this._end = this._min;
        }
    },
    
    _createLayout : function() {
    	/// <summary>
        /// Create a layout when using Internet Explorer (which entails setting a width and also
        /// a background color if it currently has neither)
    	/// </summary>
    	/// <returns />

        var element = this._currentTarget;
        if (element) {
            // Get the original width/height/back color
            this._originalWidth = $common.getCurrentStyle(element, 'width');
            var originalHeight = $common.getCurrentStyle(element, 'height');
            this._originalBackColor = $common.getCurrentStyle(element, 'backgroundColor');

            // Set the width which will force the creation of a layout
            if ((!this._originalWidth || this._originalWidth == '' || this._originalWidth == 'auto') &&
                (!originalHeight || originalHeight == '' || originalHeight == 'auto')) {
                element.style.width = element.offsetWidth + 'px';
            }
            
            // Set the back color to avoid ClearType problems
            if (!this._originalBackColor || this._originalBackColor == '' || this._originalBackColor == 'transparent' || this._originalBackColor == 'rgba(0, 0, 0, 0)') {
                element.style.backgroundColor = $common.getInheritedBackgroundColor(element);
            }
            
            // Mark that we've created the layout so we only do it once
            this._layoutCreated = true;
        }
    },
    
    onStart : function() {
    	/// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />       
        $AA.FadeAnimation.callBaseMethod(this, 'onStart');
        
        this._currentTarget = this.get_target();
        this.setValue(this._start);
        
        // Force the creation of a layout in IE if we're supposed to and the current browser is Internet Explorer
        if (this._forceLayoutInIE && !this._layoutCreated && Sys.Browser.agent == Sys.Browser.InternetExplorer) {
            this._createLayout();
        }
    },
    
    getAnimatedValue : function(percentage) {
    	/// <summary>
        /// Determine the current opacity after the given percentage of its duration has elapsed
        /// </summary>
        /// <param name="percentage" type="Number">Percentage of the animation already complete</param>
        /// <returns type="Number">
        /// Current opacity after the given percentage of its duration has elapsed that will
        /// be passed to <code>setValue</code>
        /// </returns>
        return this.interpolate(this._start, this._end, percentage);
    },
    
    setValue : function(value) {
        /// <summary>
        /// Set the current opacity of the element.
        /// </summary>
        /// <param name="value" type="Number">
        /// Current opacity (as retreived from <code>getAnimatedValue</code>)
        /// </param>
        /// <returns />
        /// <remarks>
        /// This method will be replaced by a dynamically generated function that requires no logic
        /// to determine whether it should use filters or the style's opacity.
        /// </remarks>
        if (this._currentTarget) {
            $common.setElementOpacity(this._currentTarget, value);
        }
    },
    
//    set_target : function(value) {
//        /// <value type="Sys.UI.DomElement">
//        /// Override the <code>target</code> property to dynamically create the setValue function.
//        /// </value>
//        /// <remarks>
//        /// Do not set this property in a generic Xml animation description. It will be set automatically
//        /// using either the extender's TargetControlID or the AnimationTarget property.
//        /// <remarks>
//        $AA.FadeAnimation.callBaseMethod(this, 'set_target', [value]);
//        
//        var element = value;
//        if (element) {
//            var filters = element.filters;
//            if (filters) {
//                var alphaFilter = null;
//                if (filters.length !== 0) {
//                    alphaFilter = filters['DXImageTransform.Microsoft.Alpha'];
//                }
//                if (!alphaFilter) {
//                    element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + (this._start * 100) + ')';
//                    alphaFilter = filters['DXImageTransform.Microsoft.Alpha'];
//                }
//                if (alphaFilter) {
//                    this.setValue = function(val) { alphaFilter.opacity = val * 100; }
//                } else {
//                    this.setValue = function(val) {
//                        element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + (val * 100) + ')';
//                    };
//                }
//            }
//            else {
//                this.setValue = function(val) { element.style.opacity = val; };
//            }
//        }
//    },
    
    get_effect : function() {
    	/// <value type="AjaxControlToolkit.Animation.FadeEffect">
        /// Determine whether to fade the element in or fade the element out.  The possible values are
        /// <code>FadeIn</code> and <code>FadeOut</code>.  The default value is <code>FadeOut</code>.
    	/// </value>
        return this._effect;
    },
    set_effect : function(value) {
        value = this._getEnum(value, $AA.FadeEffect);
        if (this._effect != value) {
            this._effect = value;
            this._resetOpacities();
            this.raisePropertyChanged('effect');
        }
    },
    
    get_minimumOpacity : function() {
        /// <value type="Number">
        /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1.
        /// The default value is 0.
        /// </value>
	    return this._min;
    },
    set_minimumOpacity : function(value) {
        value = this._getFloat(value);
        if (this._min != value) {
            this._min = value;
            this._resetOpacities();
            this.raisePropertyChanged('minimumOpacity');
        }
    },
    
    get_maximumOpacity : function() {
        /// <value type="Number">
        /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1.
        /// The default value is 1.
        /// </value>
        return this._max;
    },
    set_maximumOpacity : function(value) {
        value = this._getFloat(value);
        if (this._max != value) {
            this._max = value;
            this._resetOpacities();
            this.raisePropertyChanged('maximumOpacity');
        }
    },
    
    get_forceLayoutInIE : function() {
        /// <value type="Boolean">
        /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
        /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
        /// This is obviously ignored when working in other browsers.
        /// </value>
        return this._forceLayoutInIE;
    },
    set_forceLayoutInIE : function(value) {
        value = this._getBoolean(value);
        if (this._forceLayoutInIE != value) {
            this._forceLayoutInIE = value;
            this.raisePropertyChanged('forceLayoutInIE');
        }
    },
    
    set_startValue : function(value) {
        /// <value type="Number">
        /// Set the start value (so that child animations can set the current opacity as the start value when fading in or out)
        /// </value>
        value = this._getFloat(value);
        this._start = value;
    }
}
$AA.FadeAnimation.registerClass('AjaxControlToolkit.Animation.FadeAnimation', $AA.Animation);
$AA.registerAnimation('fade', $AA.FadeAnimation);


$AA.FadeInAnimation = function(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE) {
    /// <summary>
    /// The <code>FadeInAnimation</code> will fade the target in by moving from hidden to visible.
    /// It starts the animation the target's current opacity.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="minimumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 0.
    /// </param>
    /// <param name="maximumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 1.
    /// </param>
    /// <param name="forceLayoutInIE" type="Boolean" mayBeNull="true" optional="true">
    /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
    /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
    /// This is obviously ignored when working in other browsers.
    /// </param>
    /// <animation>FadeIn</animation>
    $AA.FadeInAnimation.initializeBase(this, [target, duration, fps, $AA.FadeEffect.FadeIn, minimumOpacity, maximumOpacity, forceLayoutInIE]);
}
$AA.FadeInAnimation.prototype = {
    onStart : function() {
    	/// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />
        $AA.FadeInAnimation.callBaseMethod(this, 'onStart');
        
        if (this._currentTarget) {
            this.set_startValue($common.getElementOpacity(this._currentTarget));
        }
    }
}
$AA.FadeInAnimation.registerClass('AjaxControlToolkit.Animation.FadeInAnimation', $AA.FadeAnimation);
$AA.registerAnimation('fadeIn', $AA.FadeInAnimation);


$AA.FadeOutAnimation = function(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE) {
    /// <summary>
    /// The FadeInAnimation will fade the element out by moving from visible to hidden. It starts the animation
    /// at the element's current opacity.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="minimumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 0.
    /// </param>
    /// <param name="maximumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 1.
    /// </param>
    /// <param name="forceLayoutInIE" type="Boolean" mayBeNull="true" optional="true">
    /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
    /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
    /// This is obviously ignored when working in other browsers.
    /// </param>
    /// <animation>FadeOut</animation>
    $AA.FadeOutAnimation.initializeBase(this, [target, duration, fps, $AA.FadeEffect.FadeOut, minimumOpacity, maximumOpacity, forceLayoutInIE]);
}
$AA.FadeOutAnimation.prototype = {
    onStart : function() {
    	/// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />
        $AA.FadeOutAnimation.callBaseMethod(this, 'onStart');

        if (this._currentTarget) {
            this.set_startValue($common.getElementOpacity(this._currentTarget));
        }
    }
}
$AA.FadeOutAnimation.registerClass('AjaxControlToolkit.Animation.FadeOutAnimation', $AA.FadeAnimation);
$AA.registerAnimation('fadeOut', $AA.FadeOutAnimation);


$AA.PulseAnimation = function(target, duration, fps, iterations, minimumOpacity, maximumOpacity, forceLayoutInIE) {
    /// <summary>
    /// The PulseAnimation fades an element in and our repeatedly to create a pulsating
    /// effect.  The iterations determines how many pulses there will be (which defaults
    /// to three, but it will repeat infinitely if given zero or less).  The duration
    /// property defines the duration of each fade in or fade out, not the duration of
    /// the animation as a whole.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="iterations" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of times to repeatedly play the sequence.  If zero or less iterations are specified, the sequence
    /// will repeat forever.  The default value is 1 iteration.
    /// </param>
    /// <param name="minimumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 0.
    /// </param>
    /// <param name="maximumOpacity" type="Number" mayBeNull="true" optional="true">
    /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 1.
    /// </param>
    /// <param name="forceLayoutInIE" type="Boolean" mayBeNull="true" optional="true">
    /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
    /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
    /// This is obviously ignored when working in other browsers.
    /// </param>
    /// <animation>Pulse</animation>
    $AA.PulseAnimation.initializeBase(this, [target, duration, fps, null, ((iterations !== undefined) ? iterations : 3)]);

    // Create the FadeOutAnimation
    this._out = new $AA.FadeOutAnimation(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE);
    this.add(this._out);
    
    // Create the FadeInAnimation
    this._in = new $AA.FadeInAnimation(target, duration, fps, minimumOpacity, maximumOpacity, forceLayoutInIE);
    this.add(this._in);
}
$AA.PulseAnimation.prototype = {
   
    get_minimumOpacity : function() {
        /// <value type="Number">
        /// Minimum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 0.
        /// </value>
        return this._out.get_minimumOpacity();
    },
    set_minimumOpacity : function(value) {
        value = this._getFloat(value);
        this._out.set_minimumOpacity(value);
        this._in.set_minimumOpacity(value);
        this.raisePropertyChanged('minimumOpacity');
    },
    
    get_maximumOpacity : function() {
        /// <value type="Number">
        /// Maximum opacity to use when fading in or out. Its value can range from between 0 to 1. The default value is 1.
        /// </value>
        return this._out.get_maximumOpacity();
    },
    set_maximumOpacity : function(value) {
        value = this._getFloat(value);
        this._out.set_maximumOpacity(value);
        this._in.set_maximumOpacity(value);
        this.raisePropertyChanged('maximumOpacity');
    },
    
    get_forceLayoutInIE : function() {
        /// <value type="Boolean">
        /// Whether or not we should force a layout to be created for Internet Explorer by giving it a width and setting its
        /// background color (the latter is required in case the user has ClearType enabled). The default value is <code>true</code>.
        /// This is obviously ignored when working in other browsers.
        /// </value>
        return this._out.get_forceLayoutInIE();
    },
    set_forceLayoutInIE : function(value) {
        value = this._getBoolean(value);
        this._out.set_forceLayoutInIE(value);
        this._in.set_forceLayoutInIE(value);
        this.raisePropertyChanged('forceLayoutInIE');
    },
    
    set_duration : function(value) {
        /// <value type="Number">
        /// Override the <code>duration</code> property
        /// </value>
        value = this._getFloat(value);
        $AA.PulseAnimation.callBaseMethod(this, 'set_duration', [value]);
        this._in.set_duration(value);
        this._out.set_duration(value);
    },
    
    set_fps : function(value) {
        /// <value type="Number" integer="true">
        /// Override the <code>fps</code> property
        /// </value>
        value = this._getInteger(value);
        $AA.PulseAnimation.callBaseMethod(this, 'set_fps', [value]);
        this._in.set_fps(value);
        this._out.set_fps(value);
    }
    
}
$AA.PulseAnimation.registerClass('AjaxControlToolkit.Animation.PulseAnimation', $AA.SequenceAnimation);
$AA.registerAnimation('pulse', $AA.PulseAnimation);


$AA.PropertyAnimation = function(target, duration, fps, property, propertyKey) {
    /// <summary>
    /// The <code>PropertyAnimation</code> is a useful base animation that will assign the value from
    /// <code>getAnimatedValue</code> to a specified <code>property</code>. You can provide the name of
    /// a <code>property</code> alongside an optional <code>propertyKey</code> (which indicates the value
    /// <code>property[propertyKey]</code>, like <code>style['backgroundColor']</code>).
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="property" type="String" mayBeNull="true" optional="true">
    /// Property of the <code>target</code> element to set when animating
    /// </param>
    /// <param name="propertyKey" type="String" mayBeNull="true" optional="true">
    /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
    /// </param>
    /// <animation>Property</animation>
    $AA.PropertyAnimation.initializeBase(this, [target, duration, fps]);

    // Name of the property to set
    this._property = property;
    
    // Optional Key of the property to set (i.e., if the property were "style" then
    // this might be "backgroundColor")
    this._propertyKey = propertyKey;
    
    // Current target of the animation that is cached before the animation plays (since looking up
    // the target could mean walking all the way up to the root of the animation's tree, which we don't
    // want to do for every step of the animation)
    this._currentTarget = null;
}
$AA.PropertyAnimation.prototype = {
    onStart : function() {
    	/// <summary>
        /// The <code>onStart</code> method is called just before the animation is played each time.
        /// </summary>
        /// <returns />
        $AA.PropertyAnimation.callBaseMethod(this, 'onStart');

        this._currentTarget = this.get_target();
    },

    setValue : function(value) {
        /// <summary>
        /// Set the current value of the property
        /// </summary>
        /// <param name="value" type="Object" mayBeNull="true">
        /// Value to assign
        /// </param>
        /// <returns />

        var element = this._currentTarget;
        if (element && this._property && this._property.length > 0) { 
            if (this._propertyKey && this._propertyKey.length > 0 && element[this._property]) {
                element[this._property][this._propertyKey] = value;
            } else {
                element[this._property] = value;
            }
        }
        // Sys.TypeDescriptor.setProperty(this.get_target(), this._property, value, this._propertyKey);
    },
    
    getValue : function() {
        /// <summary>
        /// Get the current value from the property
        /// </summary>
        /// <returns type="Object" mayBeNull="true">
        /// Current value of the property
        /// </returns>

        var element = this.get_target();
        if (element && this._property && this._property.length > 0) { 
            var property = element[this._property];
            if (property) {
                if (this._propertyKey && this._propertyKey.length > 0) {
                    return property[this._propertyKey];
                }
                return property;
            }
        }
        return null;
        // return Sys.TypeDescriptor.getProperty(this.get_target(), this._property, this._propertyKey);
    },
    
    get_property : function() {
        /// <value type="String">
        /// Property of the <code>target</code> element to set when animating
        /// </value>
        return this._property;
    },
    set_property : function(value) {
        if (this._property != value) {
            this._property = value;
            this.raisePropertyChanged('property');
        }
    },
    
    get_propertyKey : function() {
        /// <value type="String" mayBeNull="true" optional="true">
        /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
        /// </value>
        return this._propertyKey;
    },
    set_propertyKey : function(value) {
        if (this._propertyKey != value) {
            this._propertyKey = value;
            this.raisePropertyChanged('propertyKey');
        }
    }
}
$AA.PropertyAnimation.registerClass('AjaxControlToolkit.Animation.PropertyAnimation', $AA.Animation);
$AA.registerAnimation('property', $AA.PropertyAnimation);


$AA.DiscreteAnimation = function(target, duration, fps, property, propertyKey, values) {
    /// <summary>
    /// The <code>DiscreteAnimation</code> inherits from <see cref="AjaxControlToolkit.Animation.PropertyAnimation" />
    /// and sets the value of the <code>property</code> to the elements in a provided array of <code>values</code>.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="property" type="String" mayBeNull="true" optional="true">
    /// Property of the <code>target</code> element to set when animating
    /// </param>
    /// <param name="propertyKey" type="String" mayBeNull="true" optional="true">
    /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
    /// </param>
    /// <param name="values" mayBeNull="true" optional="true" parameterArray="true" elementType="Object">
    /// Array of possible values of the property that will be iterated over as the animation is played
    /// </param>
    /// <animation>Discrete</animation>
    $AA.DiscreteAnimation.initializeBase(this, [target, duration, fps, property, propertyKey]);

    // Values to assign to the property
    this._values = (values && values.length) ? values : [];
}
$AA.DiscreteAnimation.prototype = {
    getAnimatedValue : function(percentage) {
        /// <summary>
        /// Assign the value whose index corresponds to the current percentage
        /// </summary>
        /// <param name="percentage" type="Number">
        /// Percentage of the animation already complete
        /// </param>
        /// <returns type="Object">
        /// State of the animation after the given percentage of its duration has elapsed that will
        /// be passed to <code>setValue</code>
        /// </returns>
        var index = Math.floor(this.interpolate(0, this._values.length - 1, percentage));
        return this._values[index];
    },
    
    get_values : function() {
        /// <value parameterArray="true" elementType="Object">
        /// Array of possible values of the property that will be iterated over as the animation is played
        /// </value>
        return this._values;
    },
    set_values : function(value) {
        if (this._values != value) {
            this._values = value;
            this.raisePropertyChanged('values');
        }
    }
}
$AA.DiscreteAnimation.registerClass('AjaxControlToolkit.Animation.DiscreteAnimation', $AA.PropertyAnimation);
$AA.registerAnimation('discrete', $AA.DiscreteAnimation);


$AA.InterpolatedAnimation = function(target, duration, fps, property, propertyKey, startValue, endValue) {
    /// <summary>
    /// The <code>InterpolatedAnimation</code> assigns a range of values between <code>startValue</code>
    /// and <code>endValue</code> to the designated property.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="property" type="String" mayBeNull="true" optional="true">
    /// Property of the <code>target</code> element to set when animating.  The default value is 'style'.
    /// </param>
    /// <param name="propertyKey" type="String" mayBeNull="true" optional="true">
    /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
    /// </param>
    /// <param name="startValue" type="Number" mayBeNull="true" optional="true">
    /// Start of the range of values
    /// </param>
    /// <param name="endValue" type="Number" mayBeNull="true" optional="true">
    /// End of the range of values
    /// </param>
    /// <animation>Interpolated</animation>
    $AA.InterpolatedAnimation.initializeBase(this, [target, duration, fps, ((property !== undefined) ? property : 'style'), propertyKey]);

    // Start and end values
    this._startValue = startValue;
    this._endValue = endValue;
}
$AA.InterpolatedAnimation.prototype = {
    get_startValue : function() {
        /// <value type="Number">
        /// Start of the range of values
        /// </value>
        return this._startValue;
    },
    set_startValue : function(value) {
        value = this._getFloat(value);
        if (this._startValue != value) {
            this._startValue = value;
            this.raisePropertyChanged('startValue');
        }
    },
    
    get_endValue : function() {
        /// <value type="Number">
        /// End of the range of values
        /// </value>
        return this._endValue;
    },
    set_endValue : function(value) {
        value = this._getFloat(value);
        if (this._endValue != value) {
            this._endValue = value;
            this.raisePropertyChanged('endValue');
        }
    }   
}
$AA.InterpolatedAnimation.registerClass('AjaxControlToolkit.Animation.InterpolatedAnimation', $AA.PropertyAnimation);
$AA.registerAnimation('interpolated', $AA.InterpolatedAnimation);


$AA.ColorAnimation = function(target, duration, fps, property, propertyKey, startValue, endValue) {
    /// <summary>
    /// The <code>ColorAnimation</code> transitions the value of the <code>property</code> between
    /// two colors (although it does ignore the alpha channel). The colors must be 7-character hex strings
    /// (like <code>#246ACF</code>).
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="property" type="String" mayBeNull="true" optional="true">
    /// Property of the <code>target</code> element to set when animating.  The default value is 'style'.
    /// </param>
    /// <param name="propertyKey" type="String" mayBeNull="true" optional="true">
    /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
    /// </param>
    /// <param name="startValue" type="String" mayBeNull="true" optional="true">
    /// Start of the range of colors
    /// </param>
    /// <param name="endValue" type="String" mayBeNull="true" optional="true">
    /// End of the range of colors
    /// </param>
    /// <animation>Color</animation>
    $AA.ColorAnimation.initializeBase(this, [target, duration, fps, property, propertyKey, startValue, endValue]);
    
    // Cached start/end RBG triplets
    this._start = null;
    this._end = null;
    
    // Flags indicating whether each dimension of color will be interpolated
    this._interpolateRed = false;
    this._interpolateGreen = false;
    this._interpolateBlue = false;
}
$AA.ColorAnimation.prototype = {
    onStart : function() {
        /// <summary>
        /// Determine which dimensions of color will be animated
        /// </summary>
        /// <returns />
        $AA.ColorAnimation.callBaseMethod(this, 'onStart');
       
        this._start = $AA.ColorAnimation.getRGB(this.get_startValue());
        this._end = $AA.ColorAnimation.getRGB(this.get_endValue());
        
        this._interpolateRed = (this._start.Red != this._end.Red);
        this._interpolateGreen = (this._start.Green != this._end.Green);
        this._interpolateBlue = (this._start.Blue != this._end.Blue);
    },
    
    getAnimatedValue : function(percentage) {
        /// <summary>
        /// Get the interpolated color values
        /// </summary>
        /// <param name="percentage" type="Number">
        /// Percentage of the animation already complete
        /// </param>
        /// <returns type="String">
        /// Current color formatted as a 7-character hex string (like <code>#246ACF</code>).
        /// </returns>

        var r = this._start.Red;
        var g = this._start.Green;
        var b = this._start.Blue;
        
        if (this._interpolateRed)
            r = Math.round(this.interpolate(r, this._end.Red, percentage));
        
        if (this._interpolateGreen)
            g = Math.round(this.interpolate(g, this._end.Green, percentage));
        
        if (this._interpolateBlue)
            b = Math.round(this.interpolate(b, this._end.Blue, percentage));
        
        return $AA.ColorAnimation.toColor(r, g, b);
    },
    
    set_startValue : function(value) {
        /// <value type="String">
        /// Starting color of the transition formatted as a 7-character hex string (like <code>#246ACF</code>).
        /// </value>

        if (this._startValue != value) {
            this._startValue = value;
            this.raisePropertyChanged('startValue');
        }
    },
    
    set_endValue : function(value) {
        /// <value type="String">
        /// Ending color of the transition formatted as a 7-character hex string (like <code>#246ACF</code>).
        /// </value>

        if (this._endValue != value) {
            this._endValue = value;
            this.raisePropertyChanged('endValue');
        }
    }   
}
$AA.ColorAnimation.getRGB = function(color) {
    /// <summary>
    /// Convert the color to an RGB triplet
    /// </summary>
    /// <param name="color" type="String">
    /// Color formatted as a 7-character hex string (like <code>#246ACF</code>)
    /// </param>
    /// <returns type="Object">
    /// Object representing the color with <code>Red</code>, <code>Green</code>, and <code>Blue</code> properties.
    /// </returns>

    if (!color || color.length != 7) {
        throw String.format(AjaxControlToolkit.Resources.Animation_InvalidColor, color);
    }
    return { 'Red': parseInt(color.substr(1,2), 16),
             'Green': parseInt(color.substr(3,2), 16),
             'Blue': parseInt(color.substr(5,2), 16) };
}
$AA.ColorAnimation.toColor = function(red, green, blue) {
    /// <summary>
    /// Convert an RBG triplet into a 7-character hex string (like <code>#246ACF</code>)
    /// </summary>
    /// <param name="red" type="Number" integer="true">
    /// Value of the color's red dimension
    /// </param>
    /// <param name="green" type="Number" integer="true">
    /// Value of the color's green dimension
    /// </param>
    /// <param name="blue" type="Number" integer="true">
    /// Value of the color's blue dimension
    /// </param>
    /// <returns type="String">
    /// Color as a 7-character hex string (like <code>#246ACF</code>)
    /// </returns>

    var r = red.toString(16);
    var g = green.toString(16);
    var b = blue.toString(16);
    if (r.length == 1) r = '0' + r;
    if (g.length == 1) g = '0' + g;
    if (b.length == 1) b = '0' + b;
    return '#' + r + g + b;
}
$AA.ColorAnimation.registerClass('AjaxControlToolkit.Animation.ColorAnimation', $AA.InterpolatedAnimation);
$AA.registerAnimation('color', $AA.ColorAnimation);


$AA.LengthAnimation = function(target, duration, fps, property, propertyKey, startValue, endValue, unit) {
    /// <summary>
    /// The <code>LengthAnimation</code> is identical to <see cref="AjaxControlToolkit.Animation.InterpolatedAnimation" />
    /// except it adds a <code>unit</code> to the value before assigning it to the <code>property</code>.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="property" type="String" mayBeNull="true" optional="true">
    /// Property of the <code>target</code> element to set when animating.  The default value is 'style'.
    /// </param>
    /// <param name="propertyKey" type="String" mayBeNull="true" optional="true">
    /// Optional key of the property to be set (which indicates the value property[propertyKey], like style['backgroundColor']). Note that for the style property, the key must be in a JavaScript friendly format (i.e. backgroundColor instead of background-color).
    /// </param>
    /// <param name="startValue" type="Number" mayBeNull="true" optional="true">
    /// Start of the range of values
    /// </param>
    /// <param name="endValue" type="Number" mayBeNull="true" optional="true">
    /// End of the range of values
    /// </param>
    /// <param name="unit" type="String" mayBeNull="true" optional="true">
    /// Unit of the interpolated values.  The default value is <code>'px'</code>.
    /// </param>
    /// <animation>Length</animation>
    $AA.LengthAnimation.initializeBase(this, [target, duration, fps, property, propertyKey, startValue, endValue]);
    
    // Unit of length (which defaults to px)
    this._unit = (unit != null) ? unit : 'px';
}
$AA.LengthAnimation.prototype = {

    getAnimatedValue : function(percentage) {
        /// <summary>
        /// Get the interpolated length value
        /// </summary>
        /// <param name="percentage" type="Number">
        /// Percentage of the animation already complete
        /// </param>
        /// <returns type="String">
        /// Interpolated length
        /// </returns>

        var value = this.interpolate(this.get_startValue(), this.get_endValue(), percentage);
        return Math.round(value) + this._unit;
    },
    
    get_unit : function() {
        /// <value type="String">
        /// Unit of the interpolated values.  The default value is <code>'px'</code>.
        /// </value>
        return this._unit;
    },
    set_unit : function(value) {
        if (this._unit != value) {
            this._unit = value;
            this.raisePropertyChanged('unit');
        }
    }
}
$AA.LengthAnimation.registerClass('AjaxControlToolkit.Animation.LengthAnimation', $AA.InterpolatedAnimation);
$AA.registerAnimation('length', $AA.LengthAnimation);


$AA.MoveAnimation = function(target, duration, fps, horizontal, vertical, relative, unit) {
    /// <summary>
    /// The <code>MoveAnimation</code> is used to move the <code>target</code> element. If the
    /// <code>relative</code> flag is set to <code>true</code>, then it treats the <code>horizontal</code>
    /// and <code>vertical</code> properties as offsets to move the element. If the <code>relative</code>
    /// flag is <code>false</code>, then it will treat the <code>horizontal</code> and <code>vertical</code>
    /// properties as coordinates on the page where the <code>target</code> element should be moved. It is
    /// important to note that the <code>target</code> must be positioned (i.e. <code>absolutely</code>) so
    /// that settings its <code>top</code>/<code>left<code> style attributes will change its location.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="horizontal" type="Number" mayBeNull="true" optional="true">
    /// If <code>relative</code>  is <code>true</code>, this is the offset to move horizontally. Otherwise this is the x
    /// coordinate on the page where the <code>target</code> should be moved.
    /// </param>
    /// <param name="vertical" type="Number" mayBeNull="true" optional="true">
    /// If <code>relative</code> is <code>true</code>, this is the offset to move vertically. Otherwise this is the y
    /// coordinate on the page where the <code>target</code> should be moved.
    /// </param>
    /// <param name="relative" type="Boolean" mayBeNull="true" optional="true">
    /// <code>true</code> if we are moving relative to the current position, <code>false</code> if we are moving absolutely
    /// </param>
    /// <param name="unit" type="String" mayBeNull="true" optional="true">
    /// Length unit for the size of the <code>target</code>. The default value is <code>'px'</code>.
    /// </param>
    /// <animation>Move</animation>
    $AA.MoveAnimation.initializeBase(this, [target, duration, fps, null]);

    // Distance to move horizontally and vertically
    this._horizontal = horizontal ? horizontal : 0;
    this._vertical = vertical ? vertical : 0;
    this._relative = (relative === undefined) ? true : relative;
    
    // Length animations representing the movememnts
    this._horizontalAnimation = new $AA.LengthAnimation(target, duration, fps, 'style', 'left', null, null, unit);
    this._verticalAnimation = new $AA.LengthAnimation(target, duration, fps, 'style', 'top', null, null, unit);
    this.add(this._verticalAnimation);
    this.add(this._horizontalAnimation);
}
$AA.MoveAnimation.prototype = {
    
    onStart : function() {
        /// <summary>
        /// Use the <code>target</code>'s current position as the starting point for the animation
        /// </summary>
        /// <returns />
        $AA.MoveAnimation.callBaseMethod(this, 'onStart');
        
        // Set the start and end values of the animations by getting
        // the element's current position and applying the offsets
        var element = this.get_target();
        this._horizontalAnimation.set_startValue(element.offsetLeft);
        this._horizontalAnimation.set_endValue(this._relative ? element.offsetLeft + this._horizontal : this._horizontal);
        this._verticalAnimation.set_startValue(element.offsetTop); 
        this._verticalAnimation.set_endValue(this._relative ? element.offsetTop + this._vertical : this._vertical);
    },
    
    get_horizontal : function() {
        /// <value type="Number">
        /// If <code>relative</code>  is <code>true</code>, this is the offset to move horizontally. Otherwise this is the x
        /// coordinate on the page where the <code>target</code> should be moved.
        /// </value>
        return this._horizontal;
    },
    set_horizontal : function(value) {
        value = this._getFloat(value);
        if (this._horizontal != value) {
            this._horizontal = value;
            this.raisePropertyChanged('horizontal');
        }
    },
    
    get_vertical : function() {
        /// <value type="Number">
        /// If <code>relative</code> is <code>true</code>, this is the offset to move vertically. Otherwise this is the y
        /// coordinate on the page where the <code>target</code> should be moved.
        /// </value>
        return this._vertical;
    },
    set_vertical : function(value) {
        value = this._getFloat(value);
        if (this._vertical != value) {
            this._vertical = value;
            this.raisePropertyChanged('vertical');
        }
    },
    
    get_relative : function() {
        /// <value type="Boolean">
        /// <code>true</code> if we are moving relative to the current position, <code>false</code> if we are moving absolutely
        /// </value>
        return this._relative;
    },
    set_relative : function(value) {
        value = this._getBoolean(value);
        if (this._relative != value) {
            this._relative = value;
            this.raisePropertyChanged('relative');
        }
    },
    
    get_unit : function() {
        /// <value type="String" mayBeNull="true">
        /// Length unit for the size of the <code>target</code>. The default value is <code>'px'</code>.
        /// </value>
        this._horizontalAnimation.get_unit();
    },
    set_unit : function(value) {
        var unit = this._horizontalAnimation.get_unit();
        if (unit != value) {
            this._horizontalAnimation.set_unit(value);
            this._verticalAnimation.set_unit(value);
            this.raisePropertyChanged('unit');
        }
    }
}
$AA.MoveAnimation.registerClass('AjaxControlToolkit.Animation.MoveAnimation', $AA.ParallelAnimation);
$AA.registerAnimation('move', $AA.MoveAnimation);


$AA.ResizeAnimation = function(target, duration, fps, width, height, unit) {
    /// <summary>
    /// The <code>ResizeAnimation</code> changes the size of the <code>target</code> from its
    /// current value to the specified <code>width</code> and <code>height</code>.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="width" type="Number" mayBeNull="true" optional="true">
    /// New width of the <code>target</code>
    /// </param>
    /// <param name="height" type="Number" mayBeNull="true" optional="true">
    /// New height of the <code>target</code>
    /// </param>
    /// <param name="unit" type="String" mayBeNull="true" optional="true">
    /// Length unit for the size of the <code>target</code>. The default value is <code>'px'</code>.
    /// </param>
    /// <animation>Resize</animation>
    $AA.ResizeAnimation.initializeBase(this, [target, duration, fps, null]);

    // New size of the element
    this._width = width;
    this._height = height;
    
    // Animations to set the size across both dimensions
    this._horizontalAnimation = new $AA.LengthAnimation(target, duration, fps, 'style', 'width', null, null, unit);
    this._verticalAnimation = new $AA.LengthAnimation(target, duration, fps, 'style', 'height', null, null, unit);
    this.add(this._horizontalAnimation);
    this.add(this._verticalAnimation);
}
$AA.ResizeAnimation.prototype = {
    
    onStart : function() {
        /// <summary>
        /// Use the <code>target</code>'s current size as the starting point for the animation
        /// </summary>
        /// <returns />

        $AA.ResizeAnimation.callBaseMethod(this, 'onStart');
        
        // Set the start and end values of the animations by getting
        // the element's current width and height
        var element = this.get_target();
        this._horizontalAnimation.set_startValue(element.offsetWidth);
        this._verticalAnimation.set_startValue(element.offsetHeight);
        this._horizontalAnimation.set_endValue((this._width !== null && this._width !== undefined) ?
            this._width : element.offsetWidth);
        this._verticalAnimation.set_endValue((this._height !== null && this._height !== undefined) ?
            this._height : element.offsetHeight);
    },
    
    get_width : function() {
        /// <value type="Number">
        /// New width of the <code>target</code>
        /// </value>

        return this._width;
    },
    set_width : function(value) {
        value = this._getFloat(value);
        if (this._width != value) {
            this._width = value;
            this.raisePropertyChanged('width');
        }
    },
    
    get_height : function() {
        /// <value type="Number">
        /// New height of the <code>target</code>
        /// </value>

        return this._height;
    },
    set_height : function(value) {
        value = this._getFloat(value);
        if (this._height != value) {
            this._height = value;   
            this.raisePropertyChanged('height');
        }
    },
    
    get_unit : function() {
        /// <value type="String">
        /// Length unit for the size of the <code>target</code>. The default value is <code>'px'</code>.
        /// </value>

        this._horizontalAnimation.get_unit();
    },
    set_unit : function(value) {
        var unit = this._horizontalAnimation.get_unit();
        if (unit != value) {
            this._horizontalAnimation.set_unit(value);
            this._verticalAnimation.set_unit(value);
            this.raisePropertyChanged('unit');
        }
    }
}
$AA.ResizeAnimation.registerClass('AjaxControlToolkit.Animation.ResizeAnimation', $AA.ParallelAnimation);
$AA.registerAnimation('resize', $AA.ResizeAnimation);









$AA.ScaleAnimation = function(target, duration, fps, scaleFactor, unit, center, scaleFont, fontUnit) {
    /// <summary>
    /// The <code>ScaleAnimation</code> scales the size of the <code>target</code> element by the given <code>scaleFactor</code>
    /// (i.e. a <code>scaleFactor</code> of <code>.5</code> will shrink it in half and a <code>scaleFactor</code> of <code>2.0</code>
    /// will double it).  If <code>scaleFont</code> is <code>true</code>, the size of the font will also scale with the element.  If
    /// <code>center</code> is <code>true</code>, then the element's center will not move as it is scaled.  It is important to note that
    /// the target must be positioned (i.e. absolutely) so that setting its <code>top</code>/<code>left</code> properties will change
    /// its location in order for <code>center</code> to have an effect.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 1.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="scaleFactor" type="Number" mayBeNull="true" optional="true">
    /// The amount to scale the <code>target</code> (a <code>scaleFactor</code> of <code>.5</code> will
    /// shrink it in half and a <code>scaleFactor</code> of <code>2.0</code> will double it). The default value is
    /// <code>1</code>, which does no scaling.
    /// </param>
    /// <param name="unit" type="String" mayBeNull="true" optional="true">
    /// Length unit for the size of the <code>target</code>.  The default value is <code>'px'</code>.
    /// </param>
    /// <param name="center" type="Boolean" mayBeNull="true" optional="true">
    /// Whether the <code>target</code> should stay centered while scaling
    /// </param>
    /// <param name="scaleFont" type="Boolean" mayBeNull="true" optional="true">
    /// Whether the font should be scaled along with the size
    /// </param>
    /// <param name="fontUnit" type="String" mayBeNull="true" optional="true">
    /// Unit of the font, which is only used if <code>scaleFont</code> is <code>true</code>.
    /// The default value is <code>'pt'</code>.
    /// </param>
    /// <animation>Scale</animation>
    $AA.ScaleAnimation.initializeBase(this, [target, duration, fps]);

    // Percentage to scale
    this._scaleFactor = (scaleFactor !== undefined) ? scaleFactor : 1;
    this._unit = (unit !== undefined) ? unit : 'px';
    
    // Center the content while scaling
    this._center = center;
    
    // Scale the font size as well
    this._scaleFont = scaleFont;
    this._fontUnit = (fontUnit !== undefined) ? fontUnit : 'pt';
    
    // Initial values
    this._element = null;
    this._initialHeight = null;
    this._initialWidth = null;
    this._initialTop = null;
    this._initialLeft = null;
    this._initialFontSize = null;
}
$AA.ScaleAnimation.prototype = {    
    getAnimatedValue : function(percentage) {
        /// <summary>
        /// Get the amount to scale the <code>target</code>
        /// </summary>
        /// <param name="percentage" type="Number">
        /// Percentage of the animation already complete
        /// </param>
        /// <returns type="Number">
        /// Percentage to scale the <code>target</code>
        /// </returns>
        return this.interpolate(1.0, this._scaleFactor, percentage);
    },
    
    onStart : function() {
        /// <summary>
        /// Cache the initial size because it will be used to determine how much to scale the element at each step of the animation
        /// </summary>
        /// <returns />
        $AA.ScaleAnimation.callBaseMethod(this, 'onStart');
        
        this._element = this.get_target();
        if (this._element) {
            this._initialHeight = this._element.offsetHeight;
            this._initialWidth = this._element.offsetWidth;
            if (this._center) {
                this._initialTop = this._element.offsetTop;
                this._initialLeft = this._element.offsetLeft;
            }
            if (this._scaleFont) {
                // Note: we're assuming this is in the same units as fontUnit
                this._initialFontSize = parseFloat(
                    $common.getCurrentStyle(this._element, 'fontSize'));
            }
        }
    },
    
    setValue : function(scale) {
        /// <summary>
        /// Scale the <code>target</code> by the given percentage
        /// </summary>
        /// <param name="scale" type="Number">
        /// Percentage to scale the <code>target</code>
        /// </param>
        /// <returns />

        if (this._element) {
            var width = Math.round(this._initialWidth * scale);
            var height = Math.round(this._initialHeight * scale);
            this._element.style.width = width + this._unit; 
            this._element.style.height = height + this._unit;
            
            if (this._center) {
                this._element.style.top = (this._initialTop +
                    Math.round((this._initialHeight - height) / 2)) + this._unit;
                this._element.style.left = (this._initialLeft +
                    Math.round((this._initialWidth - width) / 2)) + this._unit;
            }
            
            if (this._scaleFont) {
                var size = this._initialFontSize * scale;
                if (this._fontUnit == 'px' || this._fontUnit == 'pt') {
                    size = Math.round(size);
                }
                this._element.style.fontSize = size + this._fontUnit;
            }
        }
    },
    
    onEnd : function() {
        /// <summary>
        /// Wipe the cached values after the animation completes
        /// </summary>
        /// <returns />

        this._element = null;
        this._initialHeight = null;
        this._initialWidth = null;
        this._initialTop = null;
        this._initialLeft = null;
        this._initialFontSize = null;
        $AA.ScaleAnimation.callBaseMethod(this, 'onEnd');
    },
    
    get_scaleFactor : function() {
        /// <value type="Number">
        /// The amount to scale the <code>target</code> (a <code>scaleFactor</code> of <code>.5</code> will
        /// shrink it in half and a <code>scaleFactor</code> of <code>2.0</code> will double it). The default value is
        /// <code>1</code>, which does no scaling.
        /// </value>

        return this._scaleFactor;
    },
    set_scaleFactor : function(value) {
        value = this._getFloat(value);
        if (this._scaleFactor != value) {
            this._scaleFactor = value;
            this.raisePropertyChanged('scaleFactor');
        }
    },
    
    get_unit : function() {
        /// <value type="String">
        /// Length unit for the size of the <code>target</code>.  The default value is <code>'px'</code>.
        /// </value>
        return this._unit;
    },
    set_unit : function(value) {
        if (this._unit != value) {
            this._unit = value;
            this.raisePropertyChanged('unit');
        }
    },
    
    get_center : function() {
        /// <value type="Boolean">
        /// Whether the <code>target</code> should stay centered while scaling
        /// </value>
        return this._center;
    },
    set_center : function(value) {
        value = this._getBoolean(value);
        if (this._center != value) {
            this._center = value;
            this.raisePropertyChanged('center');
        }
    },
    
    get_scaleFont : function() {
        /// <value type="Boolean">
        /// Whether the font should be scaled along with the size
        /// </value>
        return this._scaleFont;
    },
    set_scaleFont : function(value) {
        value = this._getBoolean(value);
        if (this._scaleFont != value) {
            this._scaleFont = value;
            this.raisePropertyChanged('scaleFont');
        }
    },
    
    get_fontUnit : function() {
        /// <value type="String">
        /// Unit of the font, which is only used if <code>scaleFont</code> is <code>true</code>.
        /// The default value is <code>'pt'</code>.
        /// </value>
        return this._fontUnit;
    },
    set_fontUnit : function(value) {
        if (this._fontUnit != value) { 
            this._fontUnit = value; 
            this.raisePropertyChanged('fontUnit');
        }
    }
}
$AA.ScaleAnimation.registerClass('AjaxControlToolkit.Animation.ScaleAnimation', $AA.Animation);
$AA.registerAnimation('scale', $AA.ScaleAnimation);


$AA.Action = function(target, duration, fps) {
    /// <summary>
    /// <code>Action</code> is a base class for all "non-animating" animations that provides empty implementations
    /// for abstract methods and adds a <code>doAction</code> method that will be called to perform the action's
    /// operation.  While regular animations perform an operation in a sequence of small steps spread over an interval,
    /// the actions perform a single operation instantaneously.  By default, all actions have a <code>duration</code>
    /// of zero.  The actions are very useful for defining complex animations.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <animation>Action</animation>
    $AA.Action.initializeBase(this, [target, duration, fps]);

    // Set the duration to 0 if it wasn't specified
    if (duration === undefined) {
        this.set_duration(0);
    }
}
$AA.Action.prototype = {
    
    onEnd : function() {
        /// <summary>
        /// Call the <code>doAction</code> method when the animation completes
        /// </summary>
        /// <returns />
        this.doAction();
        $AA.Action.callBaseMethod(this, 'onEnd');
    },
    
    doAction : function() {
        /// <summary>
        /// The <code>doAction</code> method must be implemented by all actions
        /// </summary>
        /// <returns />
        throw Error.notImplemented();
    },
    
    getAnimatedValue : function() {
        /// <summary>
        /// Empty implementation of required abstract method
        /// </summary>
    },
    setValue : function() {
        /// <summary>
        /// Empty implementation of required abstract method
        /// </summary>
    }
}
$AA.Action.registerClass('AjaxControlToolkit.Animation.Action', $AA.Animation);
$AA.registerAnimation('action', $AA.Action);


$AA.EnableAction = function(target, duration, fps, enabled) {
    /// <summary>
    /// The <code>EnableAction</code> changes whether or not the <code>target</code> is disabled.
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="enabled" type="Boolean" mayBeNull="true" optional="true">
    /// Whether or not the <code>target</code> is disabled. The default value is <code>true</code>.
    /// </param>
    /// <animation>EnableAction</animation>
    $AA.EnableAction.initializeBase(this, [target, duration, fps]);

    // Whether to enable or disable
    this._enabled = (enabled !== undefined) ? enabled : true;
}
$AA.EnableAction.prototype = {
    doAction : function() {
    	/// <summary>
        /// Set the enabled property of the <code>target</code>
    	/// </summary>
    	/// <returns />
    	
        var element = this.get_target();
        if (element) {
            element.disabled = !this._enabled;
        }
    },
    
    get_enabled : function() {
        /// <value type="Boolean">
        /// Whether or not the <code>target</code> is disabled. The default value is <code>true</code>.
        /// </value>
        return this._enabled;
    },
    set_enabled : function(value) {
        value = this._getBoolean(value);
        if (this._enabled != value) {
            this._enabled = value;
            this.raisePropertyChanged('enabled');
        }
    }
}
$AA.EnableAction.registerClass('AjaxControlToolkit.Animation.EnableAction', $AA.Action);
$AA.registerAnimation('enableAction', $AA.EnableAction);


$AA.HideAction = function(target, duration, fps, visible) {
    /// <summary>
    /// The <code>HideAction</code> simply hides the <code>target</code> from view
    /// (by setting its style's <code>display</code> attribute to <code>'none'</code>)
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="visible" type="Boolean" mayBeNull="False">
    /// True to show the target, false to hide it.  The default value is false.
    /// </param>
    /// <animation>HideAction</animation>
    $AA.HideAction.initializeBase(this, [target, duration, fps]);

    this._visible = visible;
}
$AA.HideAction.prototype = {
    doAction : function() {
        /// <summary>
        /// Hide the <code>target</code>
        /// </summary>
        /// <returns />
        var element = this.get_target();
        if (element) {
            $common.setVisible(element, this._visible);
        }
    },
    
    get_visible : function() {
        /// <value type="Boolean" mayBeNull="False">
        /// True to show the target, false to hide it.  The default value is false.
        /// </value>
        return this._visible;
    },
    set_visible : function(value) {
        if (this._visible != value) {
            this._visible = value;
            this.raisePropertyChanged('visible');
        }
    }
}
$AA.HideAction.registerClass('AjaxControlToolkit.Animation.HideAction', $AA.Action);
$AA.registerAnimation('hideAction', $AA.HideAction);


$AA.StyleAction = function(target, duration, fps, attribute, value) {
    /// <summary>
    /// The <code>StyleAction<code> is used to set a particular <code>attribute</code> of the <code>target</code>'s style
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="attribute" type="String" mayBeNull="true" optional="true">
    /// Style attribute to set (this must be in a JavaScript friendly format, i.e. <code>backgroundColor</code>
    /// instead of <code>background-color</code>)
    /// </param>
    /// <param name="value" type="String" mayBeNull="true" optional="true">
    /// Value to set the <code>attribute</code>
    /// </param>
    /// <animation>StyleAction</animation>
    $AA.StyleAction.initializeBase(this, [target, duration, fps]);

    // Style attribute (like "backgroundColor" or "borderWidth"
    this._attribute = attribute;
    
    // Value to assign to the style attribute
    this._value = value;
    
}
$AA.StyleAction.prototype = {
    doAction : function() {
    	/// <summary>
        /// Assign the <code>value</code> to the style's <code>attribute</code>
    	/// </summary>
    	/// <returns />
        var element = this.get_target();
        if (element) {
            element.style[this._attribute] = this._value;
        }
    },
    
    get_attribute : function() {
        /// <value type="String">
        /// Style attribute to set (this must be in a JavaScript friendly format, i.e. <code>backgroundColor</code>
        /// instead of <code>background-color</code>)
        /// </value>
        return this._attribute;
    },
    set_attribute : function(value) {
        if (this._attribute != value) {
            this._attribute = value;
            this.raisePropertyChanged('attribute');
        }
    },
    
    get_value : function() {
        /// <value type="String">
        /// Value to set the <code>attribute</code>
        /// </value>
        return this._value;
    },
    set_value : function(value) {
        if (this._value != value) {
            this._value = value;
            this.raisePropertyChanged('value');
        }
    }
}
$AA.StyleAction.registerClass('AjaxControlToolkit.Animation.StyleAction', $AA.Action);
$AA.registerAnimation('styleAction', $AA.StyleAction);


$AA.OpacityAction = function(target, duration, fps, opacity) {
    /// <summary>
    /// <code>OpacityAction</code> allows you to set the <code>opacity</code> of the <code>target</code>
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="opacity" type="Number" mayBeNull="true" optional="true">
    /// Opacity to set the <code>target</code>
    /// </param>
    /// <animation>OpacityAction</animation>
    $AA.OpacityAction.initializeBase(this, [target, duration, fps]);
    
    // Opacity
    this._opacity = opacity;
}
$AA.OpacityAction.prototype = {
    doAction : function() {
    	/// <summary>
        /// Set the opacity
    	/// </summary>
    	/// <returns />
        var element = this.get_target();
        if (element) {
            $common.setElementOpacity(element, this._opacity);
        }
    },
    
    get_opacity : function() {
        /// <value type="Number">
        /// Opacity to set the <code>target</code>
        /// </value>
        return this._opacity;
    },
    set_opacity : function(value) {
        value = this._getFloat(value);
        if (this._opacity != value) {
            this._opacity = value;
            this.raisePropertyChanged('opacity');
        }
    }
}
$AA.OpacityAction.registerClass('AjaxControlToolkit.Animation.OpacityAction', $AA.Action);
$AA.registerAnimation('opacityAction', $AA.OpacityAction);


$AA.ScriptAction = function(target, duration, fps, script) {
    /// <summary>
    /// The <code>ScriptAction</code> is used to execute arbitrary JavaScript
    /// </summary>
    /// <param name="target" type="Sys.UI.DomElement" mayBeNull="true" optional="true" domElement="true">
    /// Target of the animation
    /// </param>
    /// <param name="duration" type="Number" mayBeNull="true" optional="true">
    /// Length of the animation in seconds.  The default is 0.
    /// </param>
    /// <param name="fps" type="Number" mayBeNull="true" optional="true" integer="true">
    /// Number of steps per second.  The default is 25.
    /// </param>
    /// <param name="script" type="String" mayBeNull="true" optional="true">
    /// JavaScript to execute
    /// </param>
    /// <animation>ScriptAction</animation>
    $AA.ScriptAction.initializeBase(this, [target, duration, fps]);

    // Script to execute
    this._script = script;
}
$AA.ScriptAction.prototype = {
    doAction : function() {
    	/// <summary>
        /// Execute the script
    	/// </summary>
    	/// <returns />
        try {
            eval(this._script);
        } catch (ex) {
        }
    },
    
    get_script : function() {
        /// <value type="String">
        /// JavaScript to execute
        /// </value>
        return this._script;
    },
    set_script : function(value) {
        if (this._script != value) {
            this._script = value;
            this.raisePropertyChanged('script');
        }
    }
}
$AA.ScriptAction.registerClass('AjaxControlToolkit.Animation.ScriptAction', $AA.Action);
$AA.registerAnimation('scriptAction', $AA.ScriptAction);

/* END AjaxControlToolkit.Animation.Animations.js */
/* START AjaxControlToolkit.ExtenderBase.BaseScripts.js */
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />


Type.registerNamespace('AjaxControlToolkit');

// This is the base behavior for all extender behaviors
AjaxControlToolkit.BehaviorBase = function(element) {
    /// <summary>
    /// Base behavior for all extender behaviors
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// Element the behavior is associated with
    /// </param>
    AjaxControlToolkit.BehaviorBase.initializeBase(this,[element]);
    
    this._clientStateFieldID = null;
    this._pageRequestManager = null;
    this._partialUpdateBeginRequestHandler = null;
    this._partialUpdateEndRequestHandler = null;
}
AjaxControlToolkit.BehaviorBase.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>

        // TODO: Evaluate necessity
        AjaxControlToolkit.BehaviorBase.callBaseMethod(this, 'initialize');
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        AjaxControlToolkit.BehaviorBase.callBaseMethod(this, 'dispose');

        if (this._pageRequestManager) {
            if (this._partialUpdateBeginRequestHandler) {
                this._pageRequestManager.remove_beginRequest(this._partialUpdateBeginRequestHandler);
                this._partialUpdateBeginRequestHandler = null;
            }
            if (this._partialUpdateEndRequestHandler) {
                this._pageRequestManager.remove_endRequest(this._partialUpdateEndRequestHandler);
                this._partialUpdateEndRequestHandler = null;
            }
            this._pageRequestManager = null;
        }
    },

    get_ClientStateFieldID : function() {
        /// <value type="String">
        /// ID of the hidden field used to store client state
        /// </value>
        return this._clientStateFieldID;
    },
    set_ClientStateFieldID : function(value) {
        if (this._clientStateFieldID != value) {
            this._clientStateFieldID = value;
            this.raisePropertyChanged('ClientStateFieldID');
        }
    },

    get_ClientState : function() {
        /// <value type="String">
        /// Client state
        /// </value>
        if (this._clientStateFieldID) {
            var input = document.getElementById(this._clientStateFieldID);
            if (input) {
                return input.value;
            }
        }
        return null;
    },
    set_ClientState : function(value) {
        if (this._clientStateFieldID) {
            var input = document.getElementById(this._clientStateFieldID);
            if (input) {
                input.value = value;
            }
        }
    },

    registerPartialUpdateEvents : function() {
        /// <summary>
        /// Register for beginRequest and endRequest events on the PageRequestManager,
        /// (which cause _partialUpdateBeginRequest and _partialUpdateEndRequest to be
        /// called when an UpdatePanel refreshes)
        /// </summary>

        if (Sys && Sys.WebForms && Sys.WebForms.PageRequestManager){
            this._pageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
            if (this._pageRequestManager) {
                this._partialUpdateBeginRequestHandler = Function.createDelegate(this, this._partialUpdateBeginRequest);
                this._pageRequestManager.add_beginRequest(this._partialUpdateBeginRequestHandler);
                this._partialUpdateEndRequestHandler = Function.createDelegate(this, this._partialUpdateEndRequest);
                this._pageRequestManager.add_endRequest(this._partialUpdateEndRequestHandler);
            }
        }
    },

    _partialUpdateBeginRequest : function(sender, beginRequestEventArgs) {
        /// <summary>
        /// Method that will be called when a partial update (via an UpdatePanel) begins,
        /// if registerPartialUpdateEvents() has been called.
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="beginRequestEventArgs" type="Sys.WebForms.BeginRequestEventArgs">
        /// Event arguments
        /// </param>

        // Nothing done here; override this method in a child class
    },
    
    _partialUpdateEndRequest : function(sender, endRequestEventArgs) {
        /// <summary>
        /// Method that will be called when a partial update (via an UpdatePanel) finishes,
        /// if registerPartialUpdateEvents() has been called.
        /// </summary>
        /// <param name="sender" type="Object">
        /// Sender
        /// </param>
        /// <param name="endRequestEventArgs" type="Sys.WebForms.EndRequestEventArgs">
        /// Event arguments
        /// </param>

        // Nothing done here; override this method in a child class
    }
}
AjaxControlToolkit.BehaviorBase.registerClass('AjaxControlToolkit.BehaviorBase', Sys.UI.Behavior);


// Dynamically populates content when the populate method is called
AjaxControlToolkit.DynamicPopulateBehaviorBase = function(element) {
    /// <summary>
    /// DynamicPopulateBehaviorBase is used to add DynamicPopulateBehavior funcitonality
    /// to other extenders.  It will dynamically populate the contents of the target element
    /// when its populate method is called.
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM Element the behavior is associated with
    /// </param>
    AjaxControlToolkit.DynamicPopulateBehaviorBase.initializeBase(this, [element]);
    
    this._DynamicControlID = null;
    this._DynamicContextKey = null;
    this._DynamicServicePath = null;
    this._DynamicServiceMethod = null;
    this._cacheDynamicResults = false;
    this._dynamicPopulateBehavior = null;
    this._populatingHandler = null;
    this._populatedHandler = null;
}
AjaxControlToolkit.DynamicPopulateBehaviorBase.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>

        AjaxControlToolkit.DynamicPopulateBehaviorBase.callBaseMethod(this, 'initialize');

        // Create event handlers
        this._populatingHandler = Function.createDelegate(this, this._onPopulating);
        this._populatedHandler = Function.createDelegate(this, this._onPopulated);
    },

    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        // Dispose of event handlers
        if (this._populatedHandler) {
            if (this._dynamicPopulateBehavior) {
                this._dynamicPopulateBehavior.remove_populated(this._populatedHandler);
            }
            this._populatedHandler = null;
        }
        if (this._populatingHandler) {
            if (this._dynamicPopulateBehavior) {
                this._dynamicPopulateBehavior.remove_populating(this._populatingHandler);
            }
            this._populatingHandler = null;
        }

        // Dispose of the placeholder control and behavior
        if (this._dynamicPopulateBehavior) {
            this._dynamicPopulateBehavior.dispose();
            this._dynamicPopulateBehavior = null;
        }
        AjaxControlToolkit.DynamicPopulateBehaviorBase.callBaseMethod(this, 'dispose');
    },

    populate : function(contextKeyOverride) {
        /// <summary>
        /// Demand-create the DynamicPopulateBehavior and use it to populate the target element
        /// </summary>
        /// <param name="contextKeyOverride" type="String" mayBeNull="true" optional="true">
        /// An arbitrary string value to be passed to the web method. For example, if the element to be populated is within a data-bound repeater, this could be the ID of the current row.
        /// </param>

        // If the DynamicPopulateBehavior's element is out of date, dispose of it
        if (this._dynamicPopulateBehavior && (this._dynamicPopulateBehavior.get_element() != $get(this._DynamicControlID))) {
            this._dynamicPopulateBehavior.dispose();
            this._dynamicPopulateBehavior = null;
        }
        
        // If a DynamicPopulateBehavior is not available and the necessary information is, create one
        if (!this._dynamicPopulateBehavior && this._DynamicControlID && this._DynamicServiceMethod) {
            this._dynamicPopulateBehavior = $create(AjaxControlToolkit.DynamicPopulateBehavior,
                {
                    "id" : this.get_id() + "_DynamicPopulateBehavior",
                    "ContextKey" : this._DynamicContextKey,
                    "ServicePath" : this._DynamicServicePath,
                    "ServiceMethod" : this._DynamicServiceMethod,
                    "cacheDynamicResults" : this._cacheDynamicResults
                }, null, null, $get(this._DynamicControlID));

            // Attach event handlers
            this._dynamicPopulateBehavior.add_populating(this._populatingHandler);
            this._dynamicPopulateBehavior.add_populated(this._populatedHandler);
        }
        
        // If a DynamicPopulateBehavior is available, use it to populate the dynamic content
        if (this._dynamicPopulateBehavior) {
            this._dynamicPopulateBehavior.populate(contextKeyOverride ? contextKeyOverride : this._DynamicContextKey);
        }
    },

    _onPopulating : function(sender, eventArgs) {
        /// <summary>
        /// Handler for DynamicPopulate behavior's Populating event
        /// </summary>
        /// <param name="sender" type="Object">
        /// DynamicPopulate behavior
        /// </param>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event args
        /// </param>
        this.raisePopulating(eventArgs);
    },

    _onPopulated : function(sender, eventArgs) {
        /// <summary>
        /// Handler for DynamicPopulate behavior's Populated event
        /// </summary>
        /// <param name="sender" type="Object">
        /// DynamicPopulate behavior
        /// </param>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event args
        /// </param>
        this.raisePopulated(eventArgs);
    },

    get_dynamicControlID : function() {
        /// <value type="String">
        /// ID of the element to populate with dynamic content
        /// </value>
        return this._DynamicControlID;
    },
    get_DynamicControlID : this.get_dynamicControlID,
    set_dynamicControlID : function(value) {
        if (this._DynamicControlID != value) {
            this._DynamicControlID = value;
            this.raisePropertyChanged('dynamicControlID');
            this.raisePropertyChanged('DynamicControlID');
        }
    },
    set_DynamicControlID : this.set_dynamicControlID,

    get_dynamicContextKey : function() {
        /// <value type="String">
        /// An arbitrary string value to be passed to the web method.
        /// For example, if the element to be populated is within a
        /// data-bound repeater, this could be the ID of the current row.
        /// </value>
        return this._DynamicContextKey;
    },
    get_DynamicContextKey : this.get_dynamicContextKey,
    set_dynamicContextKey : function(value) {
        if (this._DynamicContextKey != value) {
            this._DynamicContextKey = value;
            this.raisePropertyChanged('dynamicContextKey');
            this.raisePropertyChanged('DynamicContextKey');
        }
    },
    set_DynamicContextKey : this.set_dynamicContextKey,

    get_dynamicServicePath : function() {
        /// <value type="String" mayBeNull="true" optional="true">
        /// The URL of the web service to call.  If the ServicePath is not defined, then we will invoke a PageMethod instead of a web service.
        /// </value>
        return this._DynamicServicePath;
    },
    get_DynamicServicePath : this.get_dynamicServicePath,
    set_dynamicServicePath : function(value) {
        if (this._DynamicServicePath != value) {
            this._DynamicServicePath = value;
            this.raisePropertyChanged('dynamicServicePath');
            this.raisePropertyChanged('DynamicServicePath');
        }
    },
    set_DynamicServicePath : this.set_dynamicServicePath,

    get_dynamicServiceMethod : function() {
        /// <value type="String">
        /// The name of the method to call on the page or web service
        /// </value>
        /// <remarks>
        /// The signature of the method must exactly match the following:
        ///     [WebMethod]
        ///     string DynamicPopulateMethod(string contextKey)
        ///     {
        ///         ...
        ///     }
        /// </remarks>
        return this._DynamicServiceMethod;
    },
    get_DynamicServiceMethod : this.get_dynamicServiceMethod,
    set_dynamicServiceMethod : function(value) {
        if (this._DynamicServiceMethod != value) {
            this._DynamicServiceMethod = value;
            this.raisePropertyChanged('dynamicServiceMethod');
            this.raisePropertyChanged('DynamicServiceMethod');
        }
    },
    set_DynamicServiceMethod : this.set_dynamicServiceMethod,
    
    get_cacheDynamicResults : function() {
        /// <value type="Boolean" mayBeNull="false">
        /// Whether the results of the dynamic population should be cached and
        /// not fetched again after the first load
        /// </value>
        return this._cacheDynamicResults;
    },
    set_cacheDynamicResults : function(value) {
        if (this._cacheDynamicResults != value) {
            this._cacheDynamicResults = value;
            this.raisePropertyChanged('cacheDynamicResults');
        }
    },
    
    add_populated : function(handler) {
        /// <summary>
        /// Add a handler on the populated event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler("populated", handler);
    },
    remove_populated : function(handler) {
        /// <summary>
        /// Remove a handler from the populated event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler("populated", handler);
    },
    raisePopulated : function(arg) {
        /// <summary>
        /// Raise the populated event
        /// </summary>
        /// <param name="arg" type="Sys.EventArgs">
        /// Event arguments
        /// </param>
        var handler = this.get_events().getHandler("populated");  
        if (handler) handler(this, arg);
    },
    
    add_populating : function(handler) {
        /// <summary>
        /// Add an event handler for the populating event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('populating', handler);
    },
    remove_populating : function(handler) {
        /// <summary>
        /// Remove an event handler from the populating event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('populating', handler);
    },
    raisePopulating : function(eventArgs) {
        /// <summary>
        /// Raise the populating event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the populating event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('populating');
        if (handler) {
            handler(this, eventArgs);
        }
    }
}
AjaxControlToolkit.DynamicPopulateBehaviorBase.registerClass('AjaxControlToolkit.DynamicPopulateBehaviorBase', AjaxControlToolkit.BehaviorBase);


AjaxControlToolkit.ControlBase = function(element) {
    AjaxControlToolkit.ControlBase.initializeBase(this, [element]);
    this._clientStateField = null;
    this._callbackTarget = null;
    this._onsubmit$delegate = Function.createDelegate(this, this._onsubmit);
    this._oncomplete$delegate = Function.createDelegate(this, this._oncomplete);
    this._onerror$delegate = Function.createDelegate(this, this._onerror);
}
AjaxControlToolkit.ControlBase.prototype = {
    initialize : function() {
        AjaxControlToolkit.ControlBase.callBaseMethod(this, "initialize");
        // load the client state if possible
        if (this._clientStateField) {
            this.loadClientState(this._clientStateField.value);
        }
        // attach an event to save the client state before a postback or updatepanel partial postback
        if (typeof(Sys.WebForms)!=="undefined" && typeof(Sys.WebForms.PageRequestManager)!=="undefined") {
            Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, this._onsubmit$delegate);
        } else {
            $addHandler(document.forms[0], "submit", this._onsubmit$delegate);
        }
    },
    dispose : function() {
        if (typeof(Sys.WebForms)!=="undefined" && typeof(Sys.WebForms.PageRequestManager)!=="undefined") {
            Array.remove(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, this._onsubmit$delegate);
        } else {
            $removeHandler(document.forms[0], "submit", this._onsubmit$delegate);
        }
        AjaxControlToolkit.ControlBase.callBaseMethod(this, "dispose");
    },
    findElement : function(id) {
        // <summary>Finds an element within this control (ScriptControl/ScriptUserControl are NamingContainers);
        return $get(this.get_id() + '_' + id.split(':').join('_'));
    },
    get_clientStateField : function() {
        return this._clientStateField;
    },
    set_clientStateField : function(value) {
        if (this.get_isInitialized()) throw Error.invalidOperation(AjaxControlToolkit.Resources.ExtenderBase_CannotSetClientStateField);
        if (this._clientStateField != value) {
            this._clientStateField = value;
            this.raisePropertyChanged('clientStateField');
        }
    },
    loadClientState : function(value) {
        /// <remarks>override this method to intercept client state loading after a callback</remarks>
    },
    saveClientState : function() {
        /// <remarks>override this method to intercept client state acquisition before a callback</remarks>
        return null;
    },
    _invoke : function(name, args, cb) {
        /// <summary>invokes a callback method on the server control</summary>        
        if (!this._callbackTarget) {
            throw Error.invalidOperation(AjaxControlToolkit.Resources.ExtenderBase_ControlNotRegisteredForCallbacks);
        }
        if (typeof(WebForm_DoCallback)==="undefined") {
            throw Error.invalidOperation(AjaxControlToolkit.Resources.ExtenderBase_PageNotRegisteredForCallbacks);
        }
        var ar = [];
        for (var i = 0; i < args.length; i++) 
            ar[i] = args[i];
        var clientState = this.saveClientState();
        if (clientState != null && !String.isInstanceOfType(clientState)) {
            throw Error.invalidOperation(AjaxControlToolkit.Resources.ExtenderBase_InvalidClientStateType);
        }
        var payload = Sys.Serialization.JavaScriptSerializer.serialize({name:name,args:ar,state:this.saveClientState()});
        WebForm_DoCallback(this._callbackTarget, payload, this._oncomplete$delegate, cb, this._onerror$delegate, true);
    },
    _oncomplete : function(result, context) {
        result = Sys.Serialization.JavaScriptSerializer.deserialize(result);
        if (result.error) {
            throw Error.create(result.error);
        }
        this.loadClientState(result.state);
        context(result.result);
    },
    _onerror : function(message, context) {
        throw Error.create(message);
    },
    _onsubmit : function() {
        if (this._clientStateField) {
            this._clientStateField.value = this.saveClientState();
        }
        return true;
    }    
   
}
AjaxControlToolkit.ControlBase.registerClass("AjaxControlToolkit.ControlBase", Sys.UI.Control);

Type.registerNamespace('AjaxControlToolkit');AjaxControlToolkit.Resources={
"PasswordStrength_InvalidWeightingRatios":"Strength Weighting ratios must have 4 elements","Animation_ChildrenNotAllowed":"AjaxControlToolkit.Animation.createAnimation cannot add child animations to type \"{0}\" that does not derive from AjaxControlToolkit.Animation.ParentAnimation","PasswordStrength_RemainingSymbols":"{0} symbol characters","ExtenderBase_CannotSetClientStateField":"clientStateField can only be set before initialization","RTE_PreviewHTML":"Preview HTML","RTE_JustifyCenter":"Justify Center","PasswordStrength_RemainingUpperCase":"{0} more upper case characters","Animation_TargetNotFound":"AjaxControlToolkit.Animation.Animation.set_animationTarget requires the ID of a Sys.UI.DomElement or Sys.UI.Control.  No element or control could be found corresponding to \"{0}\"","RTE_FontColor":"Font Color","RTE_LabelColor":"Label Color","Common_InvalidBorderWidthUnit":"A unit type of \"{0}\"\u0027 is invalid for parseBorderWidth","RTE_Heading":"Heading","Tabs_PropertySetBeforeInitialization":"{0} cannot be changed before initialization","RTE_OrderedList":"Ordered List","ReorderList_DropWatcherBehavior_NoChild":"Could not find child of list with id \"{0}\"","CascadingDropDown_MethodTimeout":"[Method timeout]","RTE_Columns":"Columns","RTE_InsertImage":"Insert Image","RTE_InsertTable":"Insert Table","RTE_Values":"Values","RTE_OK":"OK","ExtenderBase_PageNotRegisteredForCallbacks":"This Page has not been registered for callbacks","Animation_NoDynamicPropertyFound":"AjaxControlToolkit.Animation.createAnimation found no property corresponding to \"{0}\" or \"{1}\"","Animation_InvalidBaseType":"AjaxControlToolkit.Animation.registerAnimation can only register types that inherit from AjaxControlToolkit.Animation.Animation","RTE_UnorderedList":"Unordered List","ResizableControlBehavior_InvalidHandler":"{0} handler not a function, function name, or function text","Animation_InvalidColor":"Color must be a 7-character hex representation (e.g. #246ACF), not \"{0}\"","RTE_CellColor":"Cell Color","PasswordStrength_RemainingMixedCase":"Mixed case characters","RTE_Italic":"Italic","CascadingDropDown_NoParentElement":"Failed to find parent element \"{0}\"","ValidatorCallout_DefaultErrorMessage":"This control is invalid","RTE_Indent":"Indent","ReorderList_DropWatcherBehavior_CallbackError":"Reorder failed, see details below.\\r\\n\\r\\n{0}","PopupControl_NoDefaultProperty":"No default property supported for control \"{0}\" of type \"{1}\"","RTE_Normal":"Normal","PopupExtender_NoParentElement":"Couldn\u0027t find parent element \"{0}\"","RTE_ViewValues":"View Values","RTE_Legend":"Legend","RTE_Labels":"Labels","RTE_CellSpacing":"Cell Spacing","PasswordStrength_RemainingNumbers":"{0} more numbers","RTE_Border":"Border","RTE_Create":"Create","RTE_BackgroundColor":"Background Color","RTE_Cancel":"Cancel","RTE_JustifyFull":"Justify Full","RTE_JustifyLeft":"Justify Left","RTE_Cut":"Cut","ResizableControlBehavior_CannotChangeProperty":"Changes to {0} not supported","RTE_ViewSource":"View Source","Common_InvalidPaddingUnit":"A unit type of \"{0}\" is invalid for parsePadding","RTE_Paste":"Paste","ExtenderBase_ControlNotRegisteredForCallbacks":"This Control has not been registered for callbacks","Calendar_Today":"Today: {0}","MultiHandleSlider_CssHeightWidthRequired":"You must specify a CSS width and height for all handle styles as well as the rail.","Common_DateTime_InvalidFormat":"Invalid format","ListSearch_DefaultPrompt":"Type to search","CollapsiblePanel_NoControlID":"Failed to find element \"{0}\"","RTE_ViewEditor":"View Editor","RTE_BarColor":"Bar Color","PasswordStrength_DefaultStrengthDescriptions":"NonExistent;Very Weak;Weak;Poor;Almost OK;Barely Acceptable;Average;Good;Strong;Excellent;Unbreakable!","RTE_Inserttexthere":"Insert text here","Animation_UknownAnimationName":"AjaxControlToolkit.Animation.createAnimation could not find an Animation corresponding to the name \"{0}\"","ExtenderBase_InvalidClientStateType":"saveClientState must return a value of type String","Rating_CallbackError":"An unhandled exception has occurred:\\r\\n{0}","Tabs_OwnerExpected":"owner must be set before initialize","DynamicPopulate_WebServiceTimeout":"Web service call timed out","PasswordStrength_RemainingLowerCase":"{0} more lower case characters","Animation_MissingAnimationName":"AjaxControlToolkit.Animation.createAnimation requires an object with an AnimationName property","RTE_JustifyRight":"Justify Right","Tabs_ActiveTabArgumentOutOfRange":"Argument is not a member of the tabs collection","RTE_CellPadding":"Cell Padding","RTE_ClearFormatting":"Clear Formatting","AlwaysVisible_ElementRequired":"AjaxControlToolkit.AlwaysVisibleControlBehavior must have an element","Slider_NoSizeProvided":"Please set valid values for the height and width attributes in the slider\u0027s CSS classes","DynamicPopulate_WebServiceError":"Web Service call failed: {0}","PasswordStrength_StrengthPrompt":"Strength: ","PasswordStrength_RemainingCharacters":"{0} more characters","PasswordStrength_Satisfied":"Nothing more required","RTE_Hyperlink":"Hyperlink","Animation_NoPropertyFound":"AjaxControlToolkit.Animation.createAnimation found no property corresponding to \"{0}\"","PasswordStrength_InvalidStrengthDescriptionStyles":"Text Strength description style classes must match the number of text descriptions.","PasswordStrength_GetHelpRequirements":"Get help on password requirements","PasswordStrength_InvalidStrengthDescriptions":"Invalid number of text strength descriptions specified","RTE_Underline":"Underline","Tabs_PropertySetAfterInitialization":"{0} cannot be changed after initialization","RTE_Rows":"Rows","RTE_Redo":"Redo","RTE_Size":"Size","RTE_Undo":"Undo","RTE_Bold":"Bold","RTE_Copy":"Copy","RTE_Font":"Font","CascadingDropDown_MethodError":"[Method error {0}]","RTE_BorderColor":"Border Color","RTE_Paragraph":"Paragraph","RTE_InsertHorizontalRule":"Insert Horizontal Rule","Common_UnitHasNoDigits":"No digits","RTE_Outdent":"Outdent","Common_DateTime_InvalidTimeSpan":"\"{0}\" is not a valid TimeSpan format","Animation_CannotNestSequence":"AjaxControlToolkit.Animation.SequenceAnimation cannot be nested inside AjaxControlToolkit.Animation.ParallelAnimation","Shared_BrowserSecurityPreventsPaste":"Your browser security settings don\u0027t permit the automatic execution of paste operations. Please use the keyboard shortcut Ctrl+V instead."};
/* END AjaxControlToolkit.ExtenderBase.BaseScripts.js */
/* START AjaxControlToolkit.CollapsiblePanel.CollapsiblePanelBehavior.js */
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Animation/Animations.js" />


Type.registerNamespace('AjaxControlToolkit');

AjaxControlToolkit.CollapsiblePanelExpandDirection = function() {
    /// <summary>
    /// The CollapsiblePanelExpandDirection enumeration describes whether the panel is opened vertically or horizontally
    /// </summary>
    /// <field name="Horizontal" type="Number" integer="true" />
    /// <field name="Vertical" type="Number" integer="true" />
    throw Error.invalidOperation();
}
AjaxControlToolkit.CollapsiblePanelExpandDirection.prototype = {
    Horizontal : 0,
    Vertical: 1
}
AjaxControlToolkit.CollapsiblePanelExpandDirection.registerEnum("AjaxControlToolkit.CollapsiblePanelExpandDirection", false);


AjaxControlToolkit.CollapsiblePanelBehavior = function(element) {
    /// <summary>
    /// The CollapsiblePanelBehavior allows you to add collapsible sections to your page
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// Element to associate the behavior with
    /// </param>
    AjaxControlToolkit.CollapsiblePanelBehavior.initializeBase(this, [element]);
    
    // property values
    this._collapsedSize = 0;
    this._expandedSize = 0;
    this._scrollContents = null;    
    this._collapsed = false;    
    this._expandControlID = null;
    this._collapseControlID = null;
    this._textLabelID = null;    
    this._collapsedText = null;
    this._expandedText = null;
    this._imageControlID = null;
    this._expandedImage = null;
    this._collapsedImage = null;
    this._suppressPostBack = null;
    this._autoExpand = null;
    this._autoCollapse = null;
    this._expandDirection = AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical;
    
    // handler delegates
    this._collapseClickHandler = null;
    this._expandClickHandler = null;    
    this._panelMouseEnterHandler = null;    
    this._panelMouseLeaveHandler = null;
    
    // the div we wrap around the panel contents
    this._childDiv = null;
    
    // Animation used to open/close the panel
    this._animation = null;
}
AjaxControlToolkit.CollapsiblePanelBehavior.prototype = {    
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        AjaxControlToolkit.CollapsiblePanelBehavior.callBaseMethod(this, 'initialize');
        
        var element = this.get_element();
        this._animation = new AjaxControlToolkit.Animation.LengthAnimation(element, .25, 10, 'style', null, 0, 0, 'px');
        if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical) {
            this._animation.set_propertyKey('height');
        } else if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Horizontal) {
           this._animation.set_propertyKey('width');
        }
        this._animation.add_ended(Function.createDelegate(this, this._onAnimateComplete));
        
        // for checkboxes, we don't want to suppress the posback (e.g. return false)
        // because that stops them from toggling their state.
        //           
        if (this._suppressPostBack == null) {
            if (element.tagName == "INPUT" && element.type == "checkbox") {
                this._suppressPostBack = false;
                this.raisePropertyChanged('SuppressPostBack');
            }                    
            else if (element.tagName == "A") {
                this._suppressPostBack = true;
                this.raisePropertyChanged('SuppressPostBack');
            }
        }
        
        
        // Check our client state.  If it's present,
        // that means this is a postback, so we restore the state.
        //
        var lastState = AjaxControlToolkit.CollapsiblePanelBehavior.callBaseMethod(this, 'get_ClientState');                
        if (lastState && lastState != "") {
            var wasCollapsed = Boolean.parse(lastState);  
            if (this._collapsed != wasCollapsed) {
                this._collapsed = wasCollapsed;
                this.raisePropertyChanged('Collapsed');       
            }
        }
        
        this._setupChildDiv();        
        
        // setup the initial size and state
        //
        if (this._collapsed) {
            this._setTargetSize(this._getCollapsedSize());            
        } else {            
            this._setTargetSize(this._getExpandedSize());
        } 
        
        this._setupState(this._collapsed);
        
        // setup all of our handlers.
        if (this._collapseControlID == this._expandControlID) {
            this._collapseClickHandler = Function.createDelegate(this, this.togglePanel);
            this._expandClickHandler = null; // we don't need both if we're toggling.
        } else {
            this._collapseClickHandler = Function.createDelegate(this, this.collapsePanel);
            this._expandClickHandler = Function.createDelegate(this, this.expandPanel);       
        }
        
        if (this._autoExpand) {
            this._panelMouseEnterHandler = Function.createDelegate(this, this._onMouseEnter);
            $addHandler(element, 'mouseover', this._panelMouseEnterHandler);
        }       
        if (this._autoCollapse) {
            this._panelMouseLeaveHandler = Function.createDelegate(this, this._onMouseLeave);
            $addHandler(element, 'mouseout', this._panelMouseLeaveHandler);
        }
        
        // attach the click handlers
        //
        if (this._collapseControlID) {
            var collapseElement = $get(this._collapseControlID);
            if (!collapseElement) {
                throw Error.argument('CollapseControlID', String.format(AjaxControlToolkit.Resources.CollapsiblePanel_NoControlID, this._collapseControlID));
            } else {
                $addHandler(collapseElement, 'click', this._collapseClickHandler);
            }
        }
        
        if (this._expandControlID) {
            if (this._expandClickHandler) { // if it's a toggle don't set up again
                var expandElement = $get(this._expandControlID);
                if (!expandElement) {
                    throw Error.argument('ExpandControlID', String.format(AjaxControlToolkit.Resources.CollapsiblePanel_NoControlID, this._expandControlID));
                } else {
                    $addHandler(expandElement, 'click', this._expandClickHandler);
                }
               
            }
        }
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>
        
        var element = this.get_element();
        
        if (this._collapseClickHandler) {
            var collapseElement = (this._collapseControlID ? $get(this._collapseControlID) : null);
            if (collapseElement) {
                $removeHandler(collapseElement, 'click', this._collapseClickHandler);
            }
            this._collapseClickHandler = null;
        }
        
        if (this._expandClickHandler) {
            var expandElement = (this._expandControlID ? $get(this._expandControlID) : null);
            if (expandElement) {
                $removeHandler(expandElement, 'click', this._expandClickHandler);
            }
            this._expandClickHandler = null;
        }
        
        if (this._panelMouseEnterHandler) {
            $removeHandler(element, 'mouseover', this._panelMouseEnterHandler);
        }
                
        if (this._panelMouseLeaveHandler) {
            $removeHandler(element, 'mouseout', this._panelMouseLeaveHandler);
        }
                
        if (this._animation) {
            this._animation.dispose();
            this._animation = null;
        }
        
        AjaxControlToolkit.CollapsiblePanelBehavior.callBaseMethod(this, 'dispose');
    },

    togglePanel : function(eventObj) {
        /// <summary>
        /// Event handler to epxand or collapse the panel (based on its current state)
        /// This is the public function that should be called instead of _toggle if
        /// you wish to programmatically open and close the collapsible panel.
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>

        this._toggle(eventObj);
    },    
    
    expandPanel : function(eventObj) {
        /// <summary>
        /// Open the panel. Public function that users should call if they
        /// wish to operate the collapsible panel programmatically.
        /// _doOpen should be treated as private since it has an underscore 
        /// to begin the function name.
        /// </summary>    
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>
        
        this._doOpen(eventObj);    
    },
    
    collapsePanel : function(eventObj) {
        /// <summary>
        /// Collapse the panel. Public function that users should call if they
        /// wish to operate the collapsible panel programmatically.
        /// _doClose should be treated as private since it has an underscore 
        /// to begin the function name.
        /// </summary>    
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>
        
        this._doClose(eventObj);
    },
    
    _checkCollapseHide : function() {
        /// <summary>
        /// Check if a control is collapsed and hidden
        /// (and set its display to none if it is supposed to be hidden)
        /// </summary>
        /// <returns type="Boolean">
        /// Whether the control is collapsed and hidden
        /// </returns>

        if (this._collapsed && this._getTargetSize() == 0) {
            var e = this.get_element();
            var display = $common.getCurrentStyle(e, 'display');
            if (!e.oldDisplay && display != "none") {
                e.oldDisplay = display;
                e.style.display = "none";
            }
            return true;
        }
        return false;
    },
    
    _doClose : function(eventObj) {
        /// <summary>
        /// Collapse the panel. Internal function, to close call "collapsePanel".
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>
        
        var eventArgs = new Sys.CancelEventArgs();
        this.raiseCollapsing(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }
    
        if (this._animation) {
            // stop any running animation.
            this._animation.stop();        
            
            // setup the animation state
            this._animation.set_startValue(this._getTargetSize());
            this._animation.set_endValue(this._getCollapsedSize());
            
            // do it!
            this._animation.play();
        }
        
        this._setupState(true);
                
        // stop postback if necessary.
        if (this._suppressPostBack) {
            if (eventObj && eventObj.preventDefault) {
                eventObj.preventDefault();
            } else {
                if (event) {
                    event.returnValue = false;
                }
                return false;
            }
        }
    },
    
    _doOpen : function(eventObj) {
        /// <summary>
        /// Expand the Panel. Internal function, to close call "expandPanel".
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>
    
        var eventArgs = new Sys.CancelEventArgs();
        this.raiseExpanding(eventArgs);
        if (eventArgs.get_cancel()) {
            return;
        }
        
        // stop any existing animation
        if (this._animation) {
            this._animation.stop();
            var e = this.get_element();
            
            if (this._checkCollapseHide() && $common.getCurrentStyle(e, 'display', e.style.display)) {
                if (e.oldDisplay) {
                    e.style.display = e.oldDisplay;
                } else {
                    // IE isn't compliant on this one
                    if (e.style.removeAttribute) {
                        e.style.removeAttribute("display");
                    } else {
                       e.style.removeProperty("display");
                    }
                }
                e.oldDisplay = null;
            }
            
            // setup the animation state
            this._animation.set_startValue(this._getTargetSize());
            this._animation.set_endValue(this._getExpandedSize());
            
            // do it!
            this._animation.play();
        }
        
        // relect our state changes
        this._setupState(false);
        
        // stop the postback if necessary.
        //
        if (this._suppressPostBack) {
            if (eventObj && eventObj.preventDefault) {
                eventObj.preventDefault();
            } else {
                if (event) {
                    event.returnValue = false;
                }
                return false;
            }
        }
    },
    
    _onAnimateComplete : function() {
        /// <summary>
        /// Handler to listen for the end of the expand/collapse animation
        /// </summary>
    
        var e = this.get_element();
    
        // if we're fully expanded and the inner pannel is still smaller
        // than the size we've expanded to, fall back to auto
        //    
        if (!this._collapsed && !this._expandedSize)
        {
            if(this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical) {
                if(this._childDiv.offsetHeight <= e.offsetHeight) {
                   e.style.height = "auto";
                   this.raisePropertyChanged('TargetHeight');
                } 
                else {
                    this._checkCollapseHide();
                }
            }
            else // horizontal
            {
                if( this._childDiv.offsetWidth <= e.offsetWidth) {
                   e.style.width = "auto";
                   this.raisePropertyChanged('TargetWidth');
                }
                else {
                    this._checkCollapseHide();
                }
            }
        }
        else {
            this._checkCollapseHide();
        }
        
        if (this._collapsed) {
            this.raiseCollapseComplete();
            this.raiseCollapsed(Sys.EventArgs.Empty);
        } else {
            this.raiseExpandComplete()
            this.raiseExpanded(new Sys.EventArgs());
        }
    },
    
    _onMouseEnter : function(eventObj) {
        /// <summary>
        /// OnMouseOver Handler
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true">
        /// Event Info
        /// </param>       
        if (this._autoExpand) {
            this.expandPanel(eventObj);
        }
    },
    
    _onMouseLeave : function(eventObj) {
        /// <summary>
        /// OnMouseOut Handler
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true">
        /// Event Info
        /// </param>      
        if (this._autoCollapse) {
           this.collapsePanel(eventObj);
        }
    },
    
    _getExpandedSize : function() {
        /// <summary>
        /// Get the size of the panel when fully expanded
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Size of the panel when fully expanded
        /// </returns>
    
        if (this._expandedSize) {
            return this._expandedSize;
        }                
        
        if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical) {
            return this._childDiv.offsetHeight;
        } else if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Horizontal) {
            return this._childDiv.offsetWidth;
        }
    },
    
    _getCollapsedSize : function() {
        /// <summary>
        /// Get the size of the panel when fully collapsed
        /// </summary>
        /// <returns type="Number" integer="true">
        /// Size of the panel when fully collapsed
        /// </returns>

        if (this._collapsedSize) {
            return this._collapsedSize;
        }
        
        return 0;
    },
    
     _getTargetSize : function() {
         /// <summary>
         /// Get the target size of the Panel
         /// </summary>
         /// <returns type="Number" integer="true">
         /// Target size of the Panel
         /// </returns>

        var value;
        if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical) {
           value = this.get_TargetHeight();
        } else if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Horizontal) {
           value = this.get_TargetWidth();
        }       
        
        // Safari returns undefined if display is 'none'
        //
        if (value === undefined) {
            value = 0;
        }
        return value;
    },
    
    _setTargetSize : function(value) {
        /// <summary>
        /// Set the target size of the panel
        /// </summary>
        /// <param name="value" type="Number" integer="true">
        /// Target size of the panel
        /// </param>

        // we don't always want to set the target size here.
        // if we don't have an expanded size, and we're not collapsed,
        // and we're at (or past) our "maximum" size
        //
        var useSize = this._collapsed || this._expandedSize;
        var e = this.get_element();
        if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical) {
            if (useSize || value < e.offsetHeight) {
                this.set_TargetHeight(value);
            } else {
                // if we're at our maximum size, flip to auto 
                // so that nested collapsible panels will
                // work properly.
                //
                e.style.height = "auto";
                this.raisePropertyChanged('TargetHeight');
            }
        } else if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Horizontal) {
            if (useSize || value < e.offsetWidth) {
                this.set_TargetWidth(value);
            }
            else {
                e.style.width = "auto";
                this.raisePropertyChanged('TargetWidth');
            }            
        }
        this._checkCollapseHide();
    },
    
    _setupChildDiv : function() {
        /// <summary>
        /// Set up a child div to host our panel contents
        /// and then push the panel's children into it.
        /// </summary>

        
        var startSize = this._getTargetSize();
        
        var e = this.get_element();
                
        this._childDiv = e.cloneNode(false);
        this._childDiv.id = '';
        
        // move all children into the div.
        //
        while (e.hasChildNodes()) {            
            var child = e.childNodes[0];
            child = e.removeChild(child);
            this._childDiv.appendChild(child);                
        }

        //On Parent
        e.style.padding = "";
        e.style.border = "";

        // Setup scrolling on the child div and parent by only altering the scrolling 
        // for the expand direction letting the other fall into place naturally.
        if (this._scrollContents) {
            if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical) {
                e.style.overflowY = "scroll";
                this._childDiv.style.overflowY = ""; 
            } else {
                e.style.overflowX = "scroll";
                this._childDiv.style.overflowX = ""; 
            }
            // safari and opera do not recognize overflowX and overflowY
            if (Sys.Browser.agent == Sys.Browser.Safari || Sys.Browser.agent == Sys.Browser.Opera) {
                e.style.overflow = "scroll";
                this._childDiv.style.overflow = "";
            }
            
         }
         else {
            if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical) {
                e.style.overflowY = "hidden";
                this._childDiv.style.overflowY = ""; 
            } else {
                e.style.overflowX = "hidden";
                this._childDiv.style.overflowX = ""; 
            }
            // safari and opera do not recognize overflowX and overflowY
            if (Sys.Browser.Agent == Sys.Browser.Safari || Sys.Browser.Agent == Sys.Browser.Opera) {
                e.style.overflow = "hidden";
                this._childDiv.style.overflow = "";
            }            
         }

        //Delete some style after cloneNode
        //On Clone
        this._childDiv.style.position = ""; 
        this._childDiv.style.margin   = ""; 
        
        // we optimize for the case where the original size is the collapsed size.
        // if that's the case, we go ahead and set the inner panel to auto so you 
        // can still expand it but not see it expanded by default when the page loads.
        //
        if (startSize == this._collapsedSize) {
            if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical) {
                this._childDiv.style.height = "auto"; 
            } else if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Horizontal) {
                this._childDiv.style.width = "auto"; 
            }
        }
        
        e.appendChild(this._childDiv);
        
        if (this._collapsed) {
            startSize = this._getCollapsedSize();
        }
        else {
            startSize = this._getExpandedSize();
        }
            
        // set up our initial size
        //    
        if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical) {
            e.style.height = startSize + "px";
            
            if (!this._expandedSize) {
                e.style.height = "auto";
            }
            else {
               e.style.height = this._expandedSize + "px";
            }
            this._childDiv.style.height = "auto";

        } else if (this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Horizontal) {
            e.style.width = startSize + "px";
            
            if (!this._expandedSize) {
                e.style.width = "auto";
            }
            else {
               e.style.width = this._expandedSize + "px";
            }
            this._childDiv.style.width = "auto";
        }    
    },
    
    _setupState : function(isCollapsed) {
        /// <summary>
        /// Get all the state set consistently when we change modes
        /// </summary>
        /// <param name="isCollapsed" type="Boolean">
        /// True to setup the state as if we're collapsed, false to setup the state as if we're expanded
        /// </param>

    
        if (isCollapsed) {           
        
            // change the text label ID if we have one.
            //
            if (this._textLabelID && this._collapsedText) {
                var e = $get(this._textLabelID);
                
                if (e) {
                    e.innerHTML = this._collapsedText;
                }
            }
            
            // Change the image if we have one
            if (this._imageControlID && this._collapsedImage) {
                var i = $get(this._imageControlID);
                if (i && i.src) {
                    i.src = this._collapsedImage;
                    if (this._expandedText || this._collapsedText) {
                        i.title = this._collapsedText;
                    }
                }
            }            
        }
        else {  
            if (this._textLabelID && this._expandedText) {
                var e = $get(this._textLabelID);
                
                if (e) {
                    e.innerHTML = this._expandedText;
                }
            }
            
            // Change the image if we have one
            if (this._imageControlID && this._expandedImage) {
                var i = $get(this._imageControlID);
                if (i && i.src) {
                    i.src = this._expandedImage;
                    if (this._expandedText || this._collapsedText) {
                            i.title = this._expandedText;
                    }
                }
            }        
        } 
        
        // set our member variable and set the client state to reflect it
        // 
        if (this._collapsed != isCollapsed) {
            this._collapsed = isCollapsed;        
            this.raisePropertyChanged('Collapsed');
        }
        AjaxControlToolkit.CollapsiblePanelBehavior.callBaseMethod(this, 'set_ClientState', [this._collapsed.toString()]);                        
    },
    
    _toggle : function(eventObj) {
        /// <summary>
        /// Event handler to epxand or collapse the panel (based on its current state)
        /// Internal function. Please use "togglePanel(eventObj)" to get same functionality.
        /// </summary>
        /// <param name="eventObj" type="Sys.UI.DomEvent" mayBeNull="true" optional="true">
        /// Event Info
        /// </param>

        if (this.get_Collapsed()) {
            return this.expandPanel(eventObj);
        } else {
            return this.collapsePanel(eventObj);
        }
    },
    
    add_collapsing : function(handler) {
        /// <summary>
        /// Add an event handler for the collapsing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('collapsing', handler);
    },
    remove_collapsing : function(handler) {
        /// <summary>
        /// Remove an event handler from the collapsing event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('collapsing', handler);
    },
    raiseCollapsing : function(eventArgs) {
        /// <summary>
        /// Raise the collapsing event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the collapsing event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('collapsing');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_collapsed : function(handler) {
        /// <summary>
        /// Add an event handler for the collapsed event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('collapsed', handler);
    },
    remove_collapsed : function(handler) {
        /// <summary>
        /// Remove an event handler from the collapsed event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('collapsed', handler);
    },
    raiseCollapsed : function(eventArgs) {
        /// <summary>
        /// Raise the collapsed event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the collapsed event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('collapsed');
        if (handler) {
            handler(this, eventArgs);
        }
    },

    add_collapseComplete : function(handler) {
        /// <summary>
        /// Add a handler to the collapseComplete event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        /// <obsolete>Use the collapsed event instead</obsolete>
    	this.get_events().addHandler('collapseComplete', handler);
    },
    remove_collapseComplete : function(handler) {
        /// <summary>
        /// Remove a handler from the collapseComplete event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        /// <obsolete>Use the collapsed event instead</obsolete>
    	this.get_events().removeHandler('collapseComplete', handler);
    },
    raiseCollapseComplete : function() {
        /// <summary>
        /// Raise the collapseComplete event
        /// </summary>
        /// <obsolete>Use the collapsed event instead</obsolete>
    	var handlers = this.get_events().getHandler('collapseComplete');
    	if (handlers) {
    		handlers(this, Sys.EventArgs.Empty);
    	}
    },
    
    add_expanding : function(handler) {
        /// <summary>
        /// Add an event handler for the expanding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('expanding', handler);
    },
    remove_expanding : function(handler) {
        /// <summary>
        /// Remove an event handler from the expanding event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('expanding', handler);
    },
    raiseExpanding : function(eventArgs) {
        /// <summary>
        /// Raise the expanding event
        /// </summary>
        /// <param name="eventArgs" type="Sys.CancelEventArgs" mayBeNull="false">
        /// Event arguments for the expanding event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('expanding');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_expanded : function(handler) {
        /// <summary>
        /// Add an event handler for the expanded event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().addHandler('expanded', handler);
    },
    remove_expanded : function(handler) {
        /// <summary>
        /// Remove an event handler from the expanded event
        /// </summary>
        /// <param name="handler" type="Function" mayBeNull="false">
        /// Event handler
        /// </param>
        /// <returns />
        this.get_events().removeHandler('expanded', handler);
    },
    raiseExpanded : function(eventArgs) {
        /// <summary>
        /// Raise the expanded event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs" mayBeNull="false">
        /// Event arguments for the expanded event
        /// </param>
        /// <returns />
        
        var handler = this.get_events().getHandler('expanded');
        if (handler) {
            handler(this, eventArgs);
        }
    },
    
    add_expandComplete : function(handler) {
        /// <summary>
        /// Add a handler to the expandComplete event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        /// <obsolete>Use the expanded event instead</obsolete>
    	this.get_events().addHandler('expandComplete', handler);
    },
    remove_expandComplete : function(handler) {
        /// <summary>
        /// Remove a handler from the expandComplete event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        /// <obsolete>Use the expanded event instead</obsolete>
    	this.get_events().removeHandler('expandComplete', handler);
    },
    raiseExpandComplete : function() {
        /// <summary>
        /// Raise the expandComplete event
        /// </summary>
        /// <obsolete>Use the expanded event instead</obsolete>
    	var handlers = this.get_events().getHandler('expandComplete');
    	if (handlers) {
    		handlers(this, Sys.EventArgs.Empty);
    	}
    },

    get_TargetHeight : function() {
        /// <value type="Number" integer="true">
        /// Wrap the height of the panel
        /// </value>
        return this.get_element().offsetHeight;        
    },
    set_TargetHeight : function(value) {        
        this.get_element().style.height = value + "px";        
        this.raisePropertyChanged('TargetHeight');
    },
    
    get_TargetWidth : function() {
        /// <value type="Number" integer="true">
        /// Wrap the width of the panel
        /// </value>
        return this.get_element().offsetWidth;        
    },
    set_TargetWidth : function(value) {
        this.get_element().style.width = value + "px"        
        this.raisePropertyChanged('TargetWidth');
    },
        
    get_Collapsed : function() {
        /// <value type="Boolean">
        /// Whether or not the panel is collapsed
        /// </value>
        return this._collapsed;        
    },    
    set_Collapsed : function(value) {
        // if we're changing values, and we're live, togglePanel.
        if (this.get_isInitialized() && this.get_element() && value != this.get_Collapsed()) {
            this.togglePanel();
        }
        else {
            this._collapsed = value;
            this.raisePropertyChanged('Collapsed');
        }
    },
    
    get_CollapsedSize : function() {
        /// <value type="Number" integer="true">
        /// The size of the target, in pixels, when it is in the collapsed state
        /// </value>
        return this._collapsedSize;
    },
    set_CollapsedSize : function(value) {
        if (this._collapsedSize != value) {
            this._collapsedSize = value;
            this.raisePropertyChanged('CollapsedSize');
        }
    },
    
    get_ExpandedSize : function() {
        /// <value type="Number" integer="true">
        /// The size of the target, in pixels, when it is in the expanded state
        /// </value>
        return this._expandedSize;
    },
    set_ExpandedSize : function(value) {
        if (this._expandedSize != value) {
            this._expandedSize = value;
            this.raisePropertyChanged('ExpandedSize');
        }
    },
    
    get_CollapseControlID : function() {
        /// <value type="String">
        /// ID of the control used to collapse the target when clicked
        /// </value>
        return this._collapseControlID;
    },
    set_CollapseControlID : function(value) {
        if (this._collapseControlID != value) {
            this._collapseControlID = value;
            this.raisePropertyChanged('CollapseControlID');
        }
    },
    
    get_ExpandControlID : function() {
        /// <value type="String">
        /// ID of the control used to expand the target when clicked
        /// </value>
        return this._expandControlID;
    },    
    set_ExpandControlID : function(value) {
        if (this._expandControlID != value) {
            this._expandControlID = value;
            this.raisePropertyChanged('ExpandControlID');
        }
    },
    
    get_ScrollContents : function() {
        /// <value type="Boolean">
        /// Whether to add a scrollbar when the contents are larger than the target (the contents will be clipped if false)
        /// </value>
        return this._scrollContents;
    },
    set_ScrollContents : function(value) {
        if (this._scrollContents != value) {
            this._scrollContents = value;
            this.raisePropertyChanged('ScrollContents');
        }
    },
    
    get_SuppressPostBack : function() {
        /// <value type="Boolean">
        /// Whether or not to suppress postbacks generated when the CollapseControlID or ExpandControlID elements are clicked
        /// </value>
        return this._suppressPostBack;
    },
    set_SuppressPostBack : function(value) {
        if (this._suppressPostBack != value) {
            this._suppressPostBack = value;
            this.raisePropertyChanged('SuppressPostBack');
        }
    },
    
    get_TextLabelID : function() {
        /// <value type="String">
        /// ID of the element where the "status text" for the target will be placed
        /// </value>
        return this._textLabelID;
    },
    set_TextLabelID : function(value) {
        if (this._textLabelID != value) {
            this._textLabelID = value;
            this.raisePropertyChanged('TextLabelID');
        }
    },
    
    get_ExpandedText : function() {
        /// <value type="String">
        /// Text to show in the element specified by TextLabelID when the target is expanded.  This text is also used as the alternate text of the image if ImageControlID has been provided.
        /// </value>
        return this._expandedText;
    },
    set_ExpandedText : function(value) {
        if (this._expandedText != value) {
            this._expandedText = value;
            this.raisePropertyChanged('ExpandedText');
        }
    },
    
    get_CollapsedText : function() {
        /// <value type="String">
        /// Text to show in the element specified by TextLabelID when the target is collapsed.  This text is also used as the alternate text of the image if ImageControlID has been provided.
        /// </value>
        return this._collapsedText;
    },
    set_CollapsedText : function(value) {
        if (this._collapsedText != value) {
            this._collapsedText = value;
            this.raisePropertyChanged('CollapsedText');
        }
    },
    
    get_ImageControlID : function() {
        /// <value type="String">
        /// ID of the <img> element where an icon indicating the collapsed status of the target will be placed
        /// </value>
        return this._imageControlID;
    },
    set_ImageControlID : function(value) {
        if (this._imageControlID != value) {
            this._imageControlID = value;
            this.raisePropertyChanged('ImageControlID');
        }
    },
    
    get_ExpandedImage : function() {
        /// <value type="String">
        /// Path to an image to show in the element specified by ImageControlID when the target is expanded
        /// </value>
        return this._expandedImage;
    },
    set_ExpandedImage : function(value) {
        if (this._expandedImage != value) {
            this._expandedImage = value;
            this.raisePropertyChanged('ExpandedImage');
        }
    },
    
    get_CollapsedImage : function() {
        /// <value type="String">
        /// Path to an image to show in the element specified by ImageControlID when the target is collapsed
        /// </value>
        return this._collapsedImage;
    },
    set_CollapsedImage : function(value) {
        if (this._collapsedImage != value) {
            this._collapsedImage = value;
            this.raisePropertyChanged('CollapsedImage');
        }
    },
    
    get_AutoExpand : function() {
        /// <value type="Boolean">
        /// Whether to automatically expand the target when the mouse is moved over it
        /// </value>
        return this._autoExpand;
    },
    set_AutoExpand : function(value) {
        if (this._autoExpand != value) {
            this._autoExpand = value;
            this.raisePropertyChanged('AutoExpand');
        }
    },
    
    get_AutoCollapse : function() {
        /// <value type="Boolean">
        /// Whether to automatically collapse the target when the mouse is moved off of it
        /// </value>
        return this._autoCollapse;
    },
    set_AutoCollapse : function(value) {
        if (this._autoCollapse != value) {
            this._autoCollapse = value;
            this.raisePropertyChanged('AutoCollapse');
        }
    },    
    
    get_ExpandDirection : function() {
        /// <value type="AjaxControlToolkit.CollapsiblePanelExpandDirection">
        /// Direction the panel will expand and collapse (can be either "Vertical" or "Horizontal")
        /// </value>
        return this._expandDirection == AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical;
    },      
    set_ExpandDirection : function(value) {
        if (this._expandDirection != value) {
            this._expandDirection = value;
            this.raisePropertyChanged('ExpandDirection');
        }
    }
}
AjaxControlToolkit.CollapsiblePanelBehavior.registerClass('AjaxControlToolkit.CollapsiblePanelBehavior', AjaxControlToolkit.BehaviorBase);
//    getDescriptor : function() {
//        var td = AjaxControlToolkit.CollapsiblePanelBehavior.callBaseMethod(this, 'getDescriptor');
//        
//        // lots of properties to add here
//        //
//        td.addProperty('CollapsedSize', Number);        
//        td.addProperty('ExpandedSize', Number);        
//        td.addProperty('CollapseControlID', String);        
//        td.addProperty('ExpandControlID', String);        
//        td.addProperty('Collapsed', Boolean);
//        td.addProperty('ScrollContents', Boolean);
//        td.addProperty('SuppressPostBack', Boolean);
//        td.addProperty('AutoExpand', Boolean);        
//        td.addProperty('AutoCollapse', Boolean);        
//        td.addProperty('CollapsedText', String);
//        td.addProperty('ExpandedText', String);
//        td.addProperty('TextLabelID', String);
//        td.addProperty('CollapsedImage', String);
//        td.addProperty('ExpandedImage', String);
//        td.addProperty('ImageControlID', String);
//        td.addProperty('ExpandDirection', AjaxControlToolkit.CollapsiblePanelExpandDirection);
//        
//        // these are for internal use
//        //
//        td.addProperty('TargetHeight', Number);
//        td.addProperty('TargetWidth', Number);
//        
//        // events
//        //
//        td.addEvent('collapseComplete', true);
//        td.addEvent('expandComplete', true);
//        
//        return td;
//    },

/* END AjaxControlToolkit.CollapsiblePanel.CollapsiblePanelBehavior.js */
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
(function() {var fn = function() {if(!$get('rsm_HiddenField')) return; $get('rsm_HiddenField').value += ';;System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35:en-US:0d787d5c-3903-4814-ad72-296cea810318:ea597d4b;Telerik.Web.UI, Version=2008.3.1504.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4:en-US:70b1ab81-54a9-49c9-aae9-e9bd7e6ab03d:16e4e7cd:ed16cbdc:19620875:1e771326:aa288e2d:58366029;AjaxControlToolkit, Version=3.0.20820.15883, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e:en-US:71a0714a-9820-45d0-9bc0-255d66b5a7ef:dc2d6e36:b14bb7d5:5acd2e8e:13f47f54:f8a45328';Sys.Application.remove_load(fn);};Sys.Application.add_load(fn);})();
