﻿//----------------------------------------------------------
// 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?"};
//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// MicrosoftAjaxWebForms.js
Type.registerNamespace("Sys.WebForms");Sys.WebForms.BeginRequestEventArgs=function(b,a){Sys.WebForms.BeginRequestEventArgs.initializeBase(this);this._request=b;this._postBackElement=a};Sys.WebForms.BeginRequestEventArgs.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request}};Sys.WebForms.BeginRequestEventArgs.registerClass("Sys.WebForms.BeginRequestEventArgs",Sys.EventArgs);Sys.WebForms.EndRequestEventArgs=function(c,a,b){Sys.WebForms.EndRequestEventArgs.initializeBase(this);this._errorHandled=false;this._error=c;this._dataItems=a||{};this._response=b};Sys.WebForms.EndRequestEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_error:function(){return this._error},get_errorHandled:function(){return this._errorHandled},set_errorHandled:function(a){this._errorHandled=a},get_response:function(){return this._response}};Sys.WebForms.EndRequestEventArgs.registerClass("Sys.WebForms.EndRequestEventArgs",Sys.EventArgs);Sys.WebForms.InitializeRequestEventArgs=function(b,a){Sys.WebForms.InitializeRequestEventArgs.initializeBase(this);this._request=b;this._postBackElement=a};Sys.WebForms.InitializeRequestEventArgs.prototype={get_postBackElement:function(){return this._postBackElement},get_request:function(){return this._request}};Sys.WebForms.InitializeRequestEventArgs.registerClass("Sys.WebForms.InitializeRequestEventArgs",Sys.CancelEventArgs);Sys.WebForms.PageLoadedEventArgs=function(b,a,c){Sys.WebForms.PageLoadedEventArgs.initializeBase(this);this._panelsUpdated=b;this._panelsCreated=a;this._dataItems=c||{}};Sys.WebForms.PageLoadedEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_panelsCreated:function(){return this._panelsCreated},get_panelsUpdated:function(){return this._panelsUpdated}};Sys.WebForms.PageLoadedEventArgs.registerClass("Sys.WebForms.PageLoadedEventArgs",Sys.EventArgs);Sys.WebForms.PageLoadingEventArgs=function(b,a,c){Sys.WebForms.PageLoadingEventArgs.initializeBase(this);this._panelsUpdating=b;this._panelsDeleting=a;this._dataItems=c||{}};Sys.WebForms.PageLoadingEventArgs.prototype={get_dataItems:function(){return this._dataItems},get_panelsDeleting:function(){return this._panelsDeleting},get_panelsUpdating:function(){return this._panelsUpdating}};Sys.WebForms.PageLoadingEventArgs.registerClass("Sys.WebForms.PageLoadingEventArgs",Sys.EventArgs);Sys.WebForms.PageRequestManager=function(){this._form=null;this._activeDefaultButton=null;this._activeDefaultButtonClicked=false;this._updatePanelIDs=null;this._updatePanelClientIDs=null;this._updatePanelHasChildrenAsTriggers=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._scriptManagerID=null;this._pageLoadedHandler=null;this._additionalInput=null;this._onsubmit=null;this._onSubmitStatements=[];this._originalDoPostBack=null;this._originalDoPostBackWithOptions=null;this._originalFireDefaultButton=null;this._originalDoCallback=null;this._isCrossPost=false;this._postBackSettings=null;this._request=null;this._onFormSubmitHandler=null;this._onFormElementClickHandler=null;this._onWindowUnloadHandler=null;this._asyncPostBackTimeout=null;this._controlIDToFocus=null;this._scrollPosition=null;this._processingRequest=false;this._scriptDisposes={};this._transientFields=["__VIEWSTATEENCRYPTED","__VIEWSTATEFIELDCOUNT"]};Sys.WebForms.PageRequestManager.prototype={_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_isInAsyncPostBack:function(){return this._request!==null},add_beginRequest:function(a){this._get_eventHandlerList().addHandler("beginRequest",a)},remove_beginRequest:function(a){this._get_eventHandlerList().removeHandler("beginRequest",a)},add_endRequest:function(a){this._get_eventHandlerList().addHandler("endRequest",a)},remove_endRequest:function(a){this._get_eventHandlerList().removeHandler("endRequest",a)},add_initializeRequest:function(a){this._get_eventHandlerList().addHandler("initializeRequest",a)},remove_initializeRequest:function(a){this._get_eventHandlerList().removeHandler("initializeRequest",a)},add_pageLoaded:function(a){this._get_eventHandlerList().addHandler("pageLoaded",a)},remove_pageLoaded:function(a){this._get_eventHandlerList().removeHandler("pageLoaded",a)},add_pageLoading:function(a){this._get_eventHandlerList().addHandler("pageLoading",a)},remove_pageLoading:function(a){this._get_eventHandlerList().removeHandler("pageLoading",a)},abortPostBack:function(){if(!this._processingRequest&&this._request){this._request.get_executor().abort();this._request=null}},_cancelPendingCallbacks:function(){for(var a=0,e=window.__pendingCallbacks.length;a<e;a++){var c=window.__pendingCallbacks[a];if(c){if(!c.async)window.__synchronousCallBackIndex=-1;window.__pendingCallbacks[a]=null;var d="__CALLBACKFRAME"+a,b=document.getElementById(d);if(b)b.parentNode.removeChild(b)}}},_commitControls:function(a,b){if(a){this._updatePanelIDs=a.updatePanelIDs;this._updatePanelClientIDs=a.updatePanelClientIDs;this._updatePanelHasChildrenAsTriggers=a.updatePanelHasChildrenAsTriggers;this._asyncPostBackControlIDs=a.asyncPostBackControlIDs;this._asyncPostBackControlClientIDs=a.asyncPostBackControlClientIDs;this._postBackControlIDs=a.postBackControlIDs;this._postBackControlClientIDs=a.postBackControlClientIDs}if(typeof b!=="undefined"&&b!==null)this._asyncPostBackTimeout=b*1000},_createHiddenField:function(c,d){var b,a=document.getElementById(c);if(a)if(!a._isContained)a.parentNode.removeChild(a);else b=a.parentNode;if(!b){b=document.createElement("span");b.style.cssText="display:none !important";this._form.appendChild(b)}b.innerHTML="<input type='hidden' />";a=b.childNodes[0];a._isContained=true;a.id=a.name=c;a.value=d},_createPageRequestManagerTimeoutError:function(){var b="Sys.WebForms.PageRequestManagerTimeoutException: "+Sys.WebForms.Res.PRM_TimeoutError,a=Error.create(b,{name:"Sys.WebForms.PageRequestManagerTimeoutException"});a.popStackFrame();return a},_createPageRequestManagerServerError:function(a,d){var c="Sys.WebForms.PageRequestManagerServerErrorException: "+(d||String.format(Sys.WebForms.Res.PRM_ServerError,a)),b=Error.create(c,{name:"Sys.WebForms.PageRequestManagerServerErrorException",httpStatusCode:a});b.popStackFrame();return b},_createPageRequestManagerParserError:function(b){var c="Sys.WebForms.PageRequestManagerParserErrorException: "+String.format(Sys.WebForms.Res.PRM_ParserError,b),a=Error.create(c,{name:"Sys.WebForms.PageRequestManagerParserErrorException"});a.popStackFrame();return a},_createPostBackSettings:function(c,b,a){return {async:c,panelID:b,sourceElement:a}},_convertToClientIDs:function(a,d,c){if(a)for(var b=0,e=a.length;b<e;b++){Array.add(d,a[b]);Array.add(c,this._uniqueIDToClientID(a[b]))}},_destroyTree:function(f){if(f.nodeType===1){var d=f.childNodes;for(var b=d.length-1;b>=0;b--){var a=d[b];if(a.nodeType===1){if(a.dispose&&typeof a.dispose==="function")a.dispose();else if(a.control&&typeof a.control.dispose==="function")a.control.dispose();var e=Sys.UI.Behavior.getBehaviors(a);for(var c=e.length-1;c>=0;c--)e[c].dispose();this._destroyTree(a)}}}},dispose:function(){if(this._form){Sys.UI.DomEvent.removeHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.removeHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.removeHandler(window,"unload",this._onWindowUnloadHandler);Sys.UI.DomEvent.removeHandler(window,"load",this._pageLoadedHandler)}if(this._originalDoPostBack){window.__doPostBack=this._originalDoPostBack;this._originalDoPostBack=null}if(this._originalDoPostBackWithOptions){window.WebForm_DoPostBackWithOptions=this._originalDoPostBackWithOptions;this._originalDoPostBackWithOptions=null}if(this._originalFireDefaultButton){window.WebForm_FireDefaultButton=this._originalFireDefaultButton;this._originalFireDefaultButton=null}if(this._originalDoCallback){window.WebForm_DoCallback=this._originalDoCallback;this._originalDoCallback=null}this._form=null;this._updatePanelIDs=null;this._updatePanelClientIDs=null;this._asyncPostBackControlIDs=null;this._asyncPostBackControlClientIDs=null;this._postBackControlIDs=null;this._postBackControlClientIDs=null;this._asyncPostBackTimeout=null;this._scrollPosition=null},_doCallback:function(d,b,c,f,a,e){if(!this.get_isInAsyncPostBack())this._originalDoCallback(d,b,c,f,a,e)},_doPostBack:function(a,e){this._additionalInput=null;var b=this._form;if(a===null||typeof a==="undefined"||this._isCrossPost){this._postBackSettings=this._createPostBackSettings(false,null,null);this._isCrossPost=false}else{var f=this._uniqueIDToClientID(a),d=document.getElementById(f);if(!d)if(Array.contains(this._asyncPostBackControlIDs,a))this._postBackSettings=this._createPostBackSettings(true,this._scriptManagerID+"|"+a,null);else if(Array.contains(this._postBackControlIDs,a))this._postBackSettings=this._createPostBackSettings(false,null,null);else{var c=this._findNearestElement(a);if(c)this._postBackSettings=this._getPostBackSettings(c,a);else this._postBackSettings=this._createPostBackSettings(false,null,null)}else this._postBackSettings=this._getPostBackSettings(d,a)}if(!this._postBackSettings.async){b.onsubmit=this._onsubmit;this._originalDoPostBack(a,e);b.onsubmit=null;return}b.__EVENTTARGET.value=a;b.__EVENTARGUMENT.value=e;this._onFormSubmit()},_doPostBackWithOptions:function(a){this._isCrossPost=a&&a.actionUrl;this._originalDoPostBackWithOptions(a)},_elementContains:function(b,a){while(a){if(a===b)return true;a=a.parentNode}return false},_endPostBack:function(a,d,f){if(this._request===d.get_webRequest()){this._processingRequest=false;this._additionalInput=null;this._request=null}var e=this._get_eventHandlerList().getHandler("endRequest"),b=false;if(e){var c=new Sys.WebForms.EndRequestEventArgs(a,f?f.dataItems:{},d);e(this,c);b=c.get_errorHandled()}if(a&&!b)throw a},_findNearestElement:function(a){while(a.length>0){var d=this._uniqueIDToClientID(a),c=document.getElementById(d);if(c)return c;var b=a.lastIndexOf("$");if(b===-1)return null;a=a.substring(0,b)}return null},_findText:function(b,a){var c=Math.max(0,a-20),d=Math.min(b.length,a+20);return b.substring(c,d)},_fireDefaultButton:function(a,d){if(a.keyCode===13){var c=a.srcElement||a.target;if(!c||c.tagName.toLowerCase()!=="textarea"){var b=document.getElementById(d);if(b&&typeof b.click!=="undefined"){this._activeDefaultButton=b;this._activeDefaultButtonClicked=false;try{b.click()}finally{this._activeDefaultButton=null}a.cancelBubble=true;if(typeof a.stopPropagation==="function")a.stopPropagation();return false}}}return true},_getPageLoadedEventArgs:function(j,e){var i=[],h=[],d=e?e.updatePanelData:null,c,g,b;if(!d){c=this._updatePanelIDs;g=null;b=null}else{c=d.updatePanelIDs;g=d.childUpdatePanelIDs;b=d.panelsToRefreshIDs}var a,f;if(b)for(a=0,f=b.length;a<f;a++)Array.add(i,document.getElementById(this._uniqueIDToClientID(b[a])));for(a=0,f=c.length;a<f;a++)if(j||Array.indexOf(g,c[a])!==-1)Array.add(h,document.getElementById(this._uniqueIDToClientID(c[a])));return new Sys.WebForms.PageLoadedEventArgs(i,h,e?e.dataItems:{})},_getPageLoadingEventArgs:function(h){var g=[],f=[],c=h.updatePanelData,b=c.oldUpdatePanelIDs,j=c.updatePanelIDs,i=c.childUpdatePanelIDs,e=c.panelsToRefreshIDs,a,d;for(a=0,d=e.length;a<d;a++)Array.add(g,document.getElementById(this._uniqueIDToClientID(e[a])));for(a=0,d=b.length;a<d;a++)if(Array.indexOf(e,b[a])===-1&&(Array.indexOf(j,b[a])===-1||Array.indexOf(i,b[a])>-1))Array.add(f,document.getElementById(this._uniqueIDToClientID(b[a])));return new Sys.WebForms.PageLoadingEventArgs(g,f,h.dataItems)},_getPostBackSettings:function(a,c){var d=a,b=null;while(a){if(a.id){if(!b&&Array.contains(this._asyncPostBackControlClientIDs,a.id))b=this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else if(!b&&Array.contains(this._postBackControlClientIDs,a.id))return this._createPostBackSettings(false,null,null);else{var e=Array.indexOf(this._updatePanelClientIDs,a.id);if(e!==-1)if(this._updatePanelHasChildrenAsTriggers[e])return this._createPostBackSettings(true,this._updatePanelIDs[e]+"|"+c,d);else return this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d)}if(!b&&this._matchesParentIDInList(a.id,this._asyncPostBackControlClientIDs))b=this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else if(!b&&this._matchesParentIDInList(a.id,this._postBackControlClientIDs))return this._createPostBackSettings(false,null,null)}a=a.parentNode}if(!b)return this._createPostBackSettings(false,null,null);else return b},_getScrollPosition:function(){var a=document.documentElement;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else{a=document.body;if(a&&(this._validPosition(a.scrollLeft)||this._validPosition(a.scrollTop)))return {x:a.scrollLeft,y:a.scrollTop};else if(this._validPosition(window.pageXOffset)||this._validPosition(window.pageYOffset))return {x:window.pageXOffset,y:window.pageYOffset};else return {x:0,y:0}}},_initializeInternal:function(a,b){if(this._prmInitialized)throw Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);this._prmInitialized=true;this._scriptManagerID=a;this._form=b;this._onsubmit=this._form.onsubmit;this._form.onsubmit=null;this._onFormSubmitHandler=Function.createDelegate(this,this._onFormSubmit);this._onFormElementClickHandler=Function.createDelegate(this,this._onFormElementClick);this._onWindowUnloadHandler=Function.createDelegate(this,this._onWindowUnload);Sys.UI.DomEvent.addHandler(this._form,"submit",this._onFormSubmitHandler);Sys.UI.DomEvent.addHandler(this._form,"click",this._onFormElementClickHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._onWindowUnloadHandler);this._originalDoPostBack=window.__doPostBack;if(this._originalDoPostBack)window.__doPostBack=Function.createDelegate(this,this._doPostBack);this._originalDoPostBackWithOptions=window.WebForm_DoPostBackWithOptions;if(this._originalDoPostBackWithOptions)window.WebForm_DoPostBackWithOptions=Function.createDelegate(this,this._doPostBackWithOptions);this._originalFireDefaultButton=window.WebForm_FireDefaultButton;if(this._originalFireDefaultButton)window.WebForm_FireDefaultButton=Function.createDelegate(this,this._fireDefaultButton);this._originalDoCallback=window.WebForm_DoCallback;if(this._originalDoCallback)window.WebForm_DoCallback=Function.createDelegate(this,this._doCallback);this._pageLoadedHandler=Function.createDelegate(this,this._pageLoadedInitialLoad);Sys.UI.DomEvent.addHandler(window,"load",this._pageLoadedHandler)},_matchesParentIDInList:function(c,b){for(var a=0,d=b.length;a<d;a++)if(c.startsWith(b[a]+"_"))return true;return false},_onFormElementActive:function(a,d,e){if(a.disabled)return;this._postBackSettings=this._getPostBackSettings(a,a.name);if(a.name){var b=a.tagName.toUpperCase();if(b==="INPUT"){var c=a.type;if(c==="submit")this._additionalInput=encodeURIComponent(a.name)+"="+encodeURIComponent(a.value);else if(c==="image")this._additionalInput=encodeURIComponent(a.name)+".x="+d+"&"+encodeURIComponent(a.name)+".y="+e}else if(b==="BUTTON"&&a.name.length!==0&&a.type==="submit")this._additionalInput=encodeURIComponent(a.name)+"="+encodeURIComponent(a.value)}},_onFormElementClick:function(a){this._activeDefaultButtonClicked=a.target===this._activeDefaultButton;this._onFormElementActive(a.target,a.offsetX,a.offsetY)},_onFormSubmit:function(h){var g=true,t=this._isCrossPost;this._isCrossPost=false;var e,s;if(this._onsubmit)g=this._onsubmit();if(g)for(e=0,s=this._onSubmitStatements.length;e<s;e++)if(!this._onSubmitStatements[e]()){g=false;break}if(!g){if(h)h.preventDefault();return}var n=this._form;if(t)return;if(this._activeDefaultButton&&!this._activeDefaultButtonClicked)this._onFormElementActive(this._activeDefaultButton,0,0);if(!this._postBackSettings.async)return;var a=new Sys.StringBuilder;a.append(encodeURIComponent(this._scriptManagerID)+"="+encodeURIComponent(this._postBackSettings.panelID)+"&");var v=n.elements.length;for(e=0;e<v;e++){var d=n.elements[e],f=d.name;if(typeof f==="undefined"||f===null||f.length===0||f===this._scriptManagerID)continue;var m=d.tagName.toUpperCase();if(m==="INPUT"){var k=d.type;if(k==="text"||k==="password"||k==="hidden"||(k==="checkbox"||k==="radio")&&d.checked){a.append(encodeURIComponent(f));a.append("=");a.append(encodeURIComponent(d.value));a.append("&")}}else if(m==="SELECT"){var u=d.options.length;for(var o=0;o<u;o++){var q=d.options[o];if(q.selected){a.append(encodeURIComponent(f));a.append("=");a.append(encodeURIComponent(q.value));a.append("&")}}}else if(m==="TEXTAREA"){a.append(encodeURIComponent(f));a.append("=");a.append(encodeURIComponent(d.value));a.append("&")}}a.append("__ASYNCPOST=true&");if(this._additionalInput){a.append(this._additionalInput);this._additionalInput=null}var c=new Sys.Net.WebRequest,b=n.action;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var p=b.indexOf("#");if(p!==-1)b=b.substr(0,p);var l=b.indexOf("?");if(l!==-1){var r=b.substr(0,l);if(r.indexOf("%")===-1)b=encodeURI(r)+b.substr(l)}else if(b.indexOf("%")===-1)b=encodeURI(b)}c.set_url(b);c.get_headers()["X-MicrosoftAjax"]="Delta=true";c.get_headers()["Cache-Control"]="no-cache";c.set_timeout(this._asyncPostBackTimeout);c.add_completed(Function.createDelegate(this,this._onFormSubmitCompleted));c.set_body(a.toString());var i,j=this._get_eventHandlerList().getHandler("initializeRequest");if(j){i=new Sys.WebForms.InitializeRequestEventArgs(c,this._postBackSettings.sourceElement);j(this,i);g=!i.get_cancel()}if(!g){if(h)h.preventDefault();return}this._scrollPosition=this._getScrollPosition();this.abortPostBack();j=this._get_eventHandlerList().getHandler("beginRequest");if(j){i=new Sys.WebForms.BeginRequestEventArgs(c,this._postBackSettings.sourceElement);j(this,i)}if(this._originalDoCallback)this._cancelPendingCallbacks();this._request=c;this._processingRequest=false;c.invoke();if(h)h.preventDefault()},_onFormSubmitCompleted:function(c){this._processingRequest=true;if(c.get_timedOut()){this._endPostBack(this._createPageRequestManagerTimeoutError(),c,null);return}if(c.get_aborted()){this._endPostBack(null,c,null);return}if(!this._request||c.get_webRequest()!==this._request)return;if(c.get_statusCode()!==200){this._endPostBack(this._createPageRequestManagerServerError(c.get_statusCode()),c,null);return}var a=this._parseDelta(c);if(!a)return;var b,e;if(a.asyncPostBackControlIDsNode&&a.postBackControlIDsNode&&a.updatePanelIDsNode&&a.panelsToRefreshNode&&a.childUpdatePanelIDsNode){var p=this._updatePanelIDs,h=a.childUpdatePanelIDsNode.content,n=h.length?h.split(","):[],l=this._splitNodeIntoArray(a.asyncPostBackControlIDsNode),m=this._splitNodeIntoArray(a.postBackControlIDsNode),o=this._splitNodeIntoArray(a.updatePanelIDsNode),g=this._splitNodeIntoArray(a.panelsToRefreshNode);for(b=0,e=g.length;b<e;b++){var i=this._uniqueIDToClientID(g[b]);if(!document.getElementById(i)){this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,i)),c,a);return}}var f=this._processUpdatePanelArrays(o,l,m);f.oldUpdatePanelIDs=p;f.childUpdatePanelIDs=n;f.panelsToRefreshIDs=g;a.updatePanelData=f}a.dataItems={};var d;for(b=0,e=a.dataItemNodes.length;b<e;b++){d=a.dataItemNodes[b];a.dataItems[d.id]=d.content}for(b=0,e=a.dataItemJsonNodes.length;b<e;b++){d=a.dataItemJsonNodes[b];a.dataItems[d.id]=Sys.Serialization.JavaScriptSerializer.deserialize(d.content)}var k=this._get_eventHandlerList().getHandler("pageLoading");if(k)k(this,this._getPageLoadingEventArgs(a));Sys._ScriptLoader.readLoadedScripts();Sys.Application.beginCreateComponents();var j=Sys._ScriptLoader.getInstance();this._queueScripts(j,a.scriptBlockNodes,true,false);this._processingRequest=true;j.loadScripts(0,Function.createDelegate(this,Function.createCallback(this._scriptIncludesLoadComplete,a)),Function.createDelegate(this,Function.createCallback(this._scriptIncludesLoadFailed,a)),null)},_onWindowUnload:function(){this.dispose()},_pageLoaded:function(a,c){var b=this._get_eventHandlerList().getHandler("pageLoaded");if(b)b(this,this._getPageLoadedEventArgs(a,c));if(!a)Sys.Application.raiseLoad()},_pageLoadedInitialLoad:function(){this._pageLoaded(true,null)},_parseDelta:function(g){var c=g.get_responseData(),d,h,D,E,C,b=0,e=null,i=[];while(b<c.length){d=c.indexOf("|",b);if(d===-1){e=this._findText(c,b);break}h=parseInt(c.substring(b,d),10);if(h%1!==0){e=this._findText(c,b);break}b=d+1;d=c.indexOf("|",b);if(d===-1){e=this._findText(c,b);break}D=c.substring(b,d);b=d+1;d=c.indexOf("|",b);if(d===-1){e=this._findText(c,b);break}E=c.substring(b,d);b=d+1;if(b+h>=c.length){e=this._findText(c,c.length);break}C=c.substr(b,h);b+=h;if(c.charAt(b)!=="|"){e=this._findText(c,b);break}b++;Array.add(i,{type:D,id:E,content:C})}if(e){this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails,e)),g,null);return null}var w=[],u=[],o=[],v=[],r=[],B=[],z=[],y=[],t=[],q=[],k,n,s,l,m,p,x;for(var j=0,F=i.length;j<F;j++){var a=i[j];switch(a.type){case "updatePanel":Array.add(w,a);break;case "hiddenField":Array.add(u,a);break;case "arrayDeclaration":Array.add(o,a);break;case "scriptBlock":Array.add(v,a);break;case "scriptStartupBlock":Array.add(r,a);break;case "expando":Array.add(B,a);break;case "onSubmit":Array.add(z,a);break;case "asyncPostBackControlIDs":k=a;break;case "postBackControlIDs":n=a;break;case "updatePanelIDs":s=a;break;case "asyncPostBackTimeout":l=a;break;case "childUpdatePanelIDs":m=a;break;case "panelsToRefreshIDs":p=a;break;case "formAction":x=a;break;case "dataItem":Array.add(y,a);break;case "dataItemJson":Array.add(t,a);break;case "scriptDispose":Array.add(q,a);break;case "pageRedirect":if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var f=document.createElement("a");f.style.display="none";f.attachEvent("onclick",A);f.href=a.content;this._form.parentNode.insertBefore(f,this._form);f.click();f.detachEvent("onclick",A);this._form.parentNode.removeChild(f);function A(a){a.cancelBubble=true}}else window.location.href=a.content;return;case "error":this._endPostBack(this._createPageRequestManagerServerError(Number.parseInvariant(a.id),a.content),g,null);return null;case "pageTitle":document.title=a.content;break;case "focus":this._controlIDToFocus=a.content;break;default:this._endPostBack(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Res.PRM_UnknownToken,a.type)),g,null);return null}}return {executor:g,updatePanelNodes:w,hiddenFieldNodes:u,arrayDeclarationNodes:o,scriptBlockNodes:v,scriptStartupNodes:r,expandoNodes:B,onSubmitNodes:z,dataItemNodes:y,dataItemJsonNodes:t,scriptDisposeNodes:q,asyncPostBackControlIDsNode:k,postBackControlIDsNode:n,updatePanelIDsNode:s,asyncPostBackTimeoutNode:l,childUpdatePanelIDsNode:m,panelsToRefreshNode:p,formActionNode:x}},_processUpdatePanelArrays:function(e,l,n){var d,c,b;if(e){var f=e.length;d=new Array(f);c=new Array(f);b=new Array(f);for(var a=0;a<f;a++){var k=e[a].substr(1),m=e[a].charAt(0)==="t";b[a]=m;d[a]=k;c[a]=this._uniqueIDToClientID(k)}}else{d=[];c=[];b=[]}var i=[],g=[];this._convertToClientIDs(l,i,g);var j=[],h=[];this._convertToClientIDs(n,j,h);return {updatePanelIDs:d,updatePanelClientIDs:c,updatePanelHasChildrenAsTriggers:b,asyncPostBackControlIDs:i,asyncPostBackControlClientIDs:g,postBackControlIDs:j,postBackControlClientIDs:h}},_queueScripts:function(scriptLoader,scriptBlockNodes,queueIncludes,queueBlocks){for(var i=0,l=scriptBlockNodes.length;i<l;i++){var scriptBlockType=scriptBlockNodes[i].id;switch(scriptBlockType){case "ScriptContentNoTags":if(!queueBlocks)continue;scriptLoader.queueScriptBlock(scriptBlockNodes[i].content);break;case "ScriptContentWithTags":var scriptTagAttributes;eval("scriptTagAttributes = "+scriptBlockNodes[i].content);if(scriptTagAttributes.src){if(!queueIncludes||Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src))continue}else if(!queueBlocks)continue;scriptLoader.queueCustomScriptTag(scriptTagAttributes);break;case "ScriptPath":if(!queueIncludes||Sys._ScriptLoader.isScriptLoaded(scriptBlockNodes[i].content))continue;scriptLoader.queueScriptReference(scriptBlockNodes[i].content)}}},_registerDisposeScript:function(a,b){if(!this._scriptDisposes[a])this._scriptDisposes[a]=[b];else Array.add(this._scriptDisposes[a],b)},_scriptIncludesLoadComplete:function(e,b){if(b.executor.get_webRequest()!==this._request)return;this._commitControls(b.updatePanelData,b.asyncPostBackTimeoutNode?b.asyncPostBackTimeoutNode.content:null);if(b.formActionNode)this._form.action=b.formActionNode.content;var a,d,c;for(a=0,d=b.updatePanelNodes.length;a<d;a++){c=b.updatePanelNodes[a];var j=document.getElementById(c.id);if(!j){this._endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_MissingPanel,c.id)),b.executor,b);return}this._updatePanel(j,c.content)}for(a=0,d=b.scriptDisposeNodes.length;a<d;a++){c=b.scriptDisposeNodes[a];this._registerDisposeScript(c.id,c.content)}for(a=0,d=this._transientFields.length;a<d;a++){var g=document.getElementById(this._transientFields[a]);if(g){var k=g._isContained?g.parentNode:g;k.parentNode.removeChild(k)}}for(a=0,d=b.hiddenFieldNodes.length;a<d;a++){c=b.hiddenFieldNodes[a];this._createHiddenField(c.id,c.content)}if(b.scriptsFailed)throw Sys._ScriptLoader._errorScriptLoadFailed(b.scriptsFailed.src,b.scriptsFailed.multipleCallbacks);this._queueScripts(e,b.scriptBlockNodes,false,true);var i="";for(a=0,d=b.arrayDeclarationNodes.length;a<d;a++){c=b.arrayDeclarationNodes[a];i+="Sys.WebForms.PageRequestManager._addArrayElement('"+c.id+"', "+c.content+");\r\n"}var h="";for(a=0,d=b.expandoNodes.length;a<d;a++){c=b.expandoNodes[a];h+=c.id+" = "+c.content+"\r\n"}if(i.length)e.queueScriptBlock(i);if(h.length)e.queueScriptBlock(h);this._queueScripts(e,b.scriptStartupNodes,true,true);var f="";for(a=0,d=b.onSubmitNodes.length;a<d;a++){if(a===0)f="Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, function() {\r\n";f+=b.onSubmitNodes[a].content+"\r\n"}if(f.length){f+="\r\nreturn true;\r\n});\r\n";e.queueScriptBlock(f)}e.loadScripts(0,Function.createDelegate(this,Function.createCallback(this._scriptsLoadComplete,b)),null,null)},_scriptIncludesLoadFailed:function(d,c,b,a){a.scriptsFailed={src:c.src,multipleCallbacks:b};this._scriptIncludesLoadComplete(d,a)},_scriptsLoadComplete:function(f,c){var e=c.executor;if(window.__theFormPostData)window.__theFormPostData="";if(window.__theFormPostCollection)window.__theFormPostCollection=[];if(window.WebForm_InitCallback)window.WebForm_InitCallback();if(this._scrollPosition){if(window.scrollTo)window.scrollTo(this._scrollPosition.x,this._scrollPosition.y);this._scrollPosition=null}Sys.Application.endCreateComponents();this._pageLoaded(false,c);this._endPostBack(null,e,c);if(this._controlIDToFocus){var a,d;if(Sys.Browser.agent===Sys.Browser.InternetExplorer){var b=$get(this._controlIDToFocus);a=b;if(b&&!WebForm_CanFocus(b))a=WebForm_FindFirstFocusableChild(b);if(a&&typeof a.contentEditable!=="undefined"){d=a.contentEditable;a.contentEditable=false}else a=null}WebForm_AutoFocus(this._controlIDToFocus);if(a)a.contentEditable=d;this._controlIDToFocus=null}},_splitNodeIntoArray:function(b){var a=b.content,c=a.length?a.split(","):[];return c},_uniqueIDToClientID:function(a){return a.replace(/\$/g,"_")},_updateControls:function(d,a,c,b){this._commitControls(this._processUpdatePanelArrays(d,a,c),b)},_updatePanel:function(updatePanelElement,rendering){for(var updatePanelID in this._scriptDisposes)if(this._elementContains(updatePanelElement,document.getElementById(updatePanelID))){var disposeScripts=this._scriptDisposes[updatePanelID];for(var i=0,l=disposeScripts.length;i<l;i++)eval(disposeScripts[i]);delete this._scriptDisposes[updatePanelID]}this._destroyTree(updatePanelElement);updatePanelElement.innerHTML=rendering},_validPosition:function(a){return typeof a!=="undefined"&&a!==null&&a!==0}};Sys.WebForms.PageRequestManager.getInstance=function(){var a=Sys.WebForms.PageRequestManager._instance;if(!a)a=Sys.WebForms.PageRequestManager._instance=new Sys.WebForms.PageRequestManager;return a};Sys.WebForms.PageRequestManager._addArrayElement=function(a){if(!window[a])window[a]=[];for(var b=1,c=arguments.length;b<c;b++)Array.add(window[a],arguments[b])};Sys.WebForms.PageRequestManager._initialize=function(a,b){Sys.WebForms.PageRequestManager.getInstance()._initializeInternal(a,b)};Sys.WebForms.PageRequestManager.registerClass("Sys.WebForms.PageRequestManager");Sys.UI._UpdateProgress=function(a){Sys.UI._UpdateProgress.initializeBase(this,[a]);this._displayAfter=500;this._dynamicLayout=true;this._associatedUpdatePanelId=null;this._beginRequestHandlerDelegate=null;this._startDelegate=null;this._endRequestHandlerDelegate=null;this._pageRequestManager=null;this._timerCookie=null};Sys.UI._UpdateProgress.prototype={get_displayAfter:function(){return this._displayAfter},set_displayAfter:function(a){this._displayAfter=a},get_dynamicLayout:function(){return this._dynamicLayout},set_dynamicLayout:function(a){this._dynamicLayout=a},get_associatedUpdatePanelId:function(){return this._associatedUpdatePanelId},set_associatedUpdatePanelId:function(a){this._associatedUpdatePanelId=a},_clearTimeout:function(){if(this._timerCookie){window.clearTimeout(this._timerCookie);this._timerCookie=null}},_handleBeginRequest:function(d,c){var a=c.get_postBackElement(),b=!this._associatedUpdatePanelId;while(!b&&a){if(a.id&&this._associatedUpdatePanelId===a.id)b=true;a=a.parentNode}if(b)this._timerCookie=window.setTimeout(this._startDelegate,this._displayAfter)},_startRequest:function(){if(this._pageRequestManager.get_isInAsyncPostBack())if(this._dynamicLayout)this.get_element().style.display="block";else this.get_element().style.visibility="visible";this._timerCookie=null},_handleEndRequest:function(){if(this._dynamicLayout)this.get_element().style.display="none";else this.get_element().style.visibility="hidden";this._clearTimeout()},dispose:function(){if(this._beginRequestHandlerDelegate!==null){this._pageRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);this._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate);this._beginRequestHandlerDelegate=null;this._endRequestHandlerDelegate=null}this._clearTimeout();Sys.UI._UpdateProgress.callBaseMethod(this,"dispose")},initialize:function(){Sys.UI._UpdateProgress.callBaseMethod(this,"initialize");this._beginRequestHandlerDelegate=Function.createDelegate(this,this._handleBeginRequest);this._endRequestHandlerDelegate=Function.createDelegate(this,this._handleEndRequest);this._startDelegate=Function.createDelegate(this,this._startRequest);if(Sys.WebForms&&Sys.WebForms.PageRequestManager)this._pageRequestManager=Sys.WebForms.PageRequestManager.getInstance();if(this._pageRequestManager!==null){this._pageRequestManager.add_beginRequest(this._beginRequestHandlerDelegate);this._pageRequestManager.add_endRequest(this._endRequestHandlerDelegate)}}};Sys.UI._UpdateProgress.registerClass("Sys.UI._UpdateProgress",Sys.UI.Control);
Type.registerNamespace('Sys.WebForms');Sys.WebForms.Res={"PRM_UnknownToken":"Unknown token: \u0027{0}\u0027.","PRM_MissingPanel":"Could not find UpdatePanel with ID \u0027{0}\u0027. If it is being updated dynamically then it must be inside another UpdatePanel.","PRM_ServerError":"An unknown error occurred while processing the request on the server. The status code returned from the server was: {0}","PRM_ParserError":"The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.\r\nDetails: {0}","PRM_TimeoutError":"The server request timed out.","PRM_ParserErrorDetails":"Error parsing near \u0027{0}\u0027.","PRM_CannotRegisterTwice":"The PageRequestManager cannot be initialized more than once."};
/// <reference name="{ViewForumGroups.js"/>
Type.registerNamespace('InstantASP.InstantForum.UI.Controls');

var elementID = null;

InstantASP.InstantForum.UI.Controls.ViewForumGroups = function(element) {

    InstantASP.InstantForum.UI.Controls.ViewForumGroups.initializeBase(this, [element]);

    this._json = null;
    this._element = element;
    this._containers = null;

    this._forumURL = null;
    this._findPostIRL = null;
    this._rssURL = null;
    this._redirectURL = null;
    
    this._profileURL = null;
    this._enableEditOptions = null;
    this._userCardSector = 1;
    this._defaultNoOfBlocks = 0;
    this._readCookieName = null;
    this._emailMembers = false;
    
    this._rootForumID = null;
    this._context = null;
    this._commonUI = null;
    this._forumUI = null;
    this._userCard = null;
    this._forums = null;
    this._forumsRead = null;
    this._forumModerators = null;
    this._userLevel = null;
    
    this._jsonTable = null;
    this._sFloat = null;
    
    this.__isInitialized = false;


}

InstantASP.InstantForum.UI.Controls.ViewForumGroups.prototype = {

    // ------------------------------------ properties   

    // json data
    get_json: function() {
        return this._json;
    },

    set_json: function(value) {
        this._json = value;
    },

    // toot forum id
    get_containers: function() {
        return this._containers;
    },
    // Properties
    get_element: function() {
        return this._element;
    },

    set_element: function(value) {
        this._element = value;
    },

    set_containers: function(value) {
        this._containers = value;
    },

    // forum URL
    get_forumURL: function() {
        return this._cforumURL;
    },

    set_forumURL: function(value) {
        this._cforumURL = value;
    },


    // forum Rss URL
    get_rssURL: function() {
        return this._rssURL;
    },

    set_rssURL: function(value) {
        this._rssURL = value;
    },


    // forum redirect URL
    get_redirectURL: function() {
        return this._redirectURL;
    },

    set_redirectURL: function(value) {
        this._redirectURL = value;
    },


    // find post URL
    get_findPostURL: function() {
        return this._findPostURL;
    },

    set_findPostURL: function(value) {
        this._findPostURL = value;
    },

    // member profile URL
    get_profileURL: function() {
        return this._profileURL;
    },

    set_profileURL: function(value) {
        this._profileURL = value;
    },

    // enable edit options
    get_enableEditOptions: function() {
        return this._enableEditOptions;
    },

    set_enableEditOptions: function(value) {
        this._enableEditOptions = value;
    },

    // sector to display user card
    get_userCardSector: function() {
        return this._userCardSector;
    },

    set_userCardSector: function(value) {
        this._userCardSector = value;
    },

    // default number of user level blocks
    get_defaultNoOfBlocks: function() {
        return this._defaultNoOfBlocks;
    },

    set_defaultNoOfBlocks: function(value) {
        this._defaultNoOfBlocks = value;
    },


    // get mark all as read cookie name
    get_readCookieName: function() {
        return this._readCookieName;
    },

    set_readCookieName: function(value) {
        this._readCookieName = value;
    },


    // get enable emails
    get_emailMembers: function() {
        return this._emailMembers;
    },

    set_emailMembers: function(value) {
        this._emailMembers = value;
    },


    // ------------------------------------ methods   

    renderViewForumGroups: function() {

        // local vars
        var arr = this.get_containers();
        var json = this.get_json();

        // ensure we have some data
        if (json != null) {

            // setup topics read object
            this._userLevel = new InstantForumUserLevel(json);
            this._userLevel.defaultNoOfBlocks = this.get_defaultNoOfBlocks();
            this._userLevel.imgFolder = this._context.CurrentSettings.InstallImageFolderURL;
            this._userLevel.initialize();

            // setup topics read object
            this._forumsRead = new InstantForumForumsRead(json);
            this._forumsRead.initialize();

            // setup forum moderators
            this._forumModerators = new InstantForumForumModerators(json);
            this._forumModerators.initialize();

            // loop through containers

            for (var i = 0; i < arr.length; i++) {

                // get container root id from array
                this._rootForumID = arr[i][1];

                // setup json table object
                this._jsonTable = new InstantASPJSONTable(arr[i][0]);
                this._jsonTable.JSON = json;
                this._jsonTable.Host = this;
                this._jsonTable.BindData = this.selectForums;
                this._jsonTable.OnHeaderRowAdd = this.buildHeaderRow;
                this._jsonTable.OnRowAdd = this.buildRow;
                this._jsonTable.initalize();

            }

        }

    },

    // ------------------------------------ data / service

    selectForums: function(host) {

        // get topics
        var json = host.get_json();

        // create new forums object
        host._forums = new InstantForumForums(json);
        host._forums.initialize();

        var data = host._forums.ForumCollection;

        if (host._rootForumID > 0) {
            return host.selectSiblings(data, host._rootForumID);
        } else {
            return data;
        }

    },




    selectSiblings: function(data, intRootID) {

        if (data != null) {
            for (var i = 0; i < data.length; i++) {

                if (data[i].ForumID == intRootID) {
                    if (data[i].SubForums != null) {
                        return data[i].SubForums.Forums;
                    } else {
                        return null;
                    }

                }
            }
        }

    },

    // ------------------------------------ build tabke tows

    buildHeaderRow: function(host) {

        // local vars
        var strCSS = "PanelBar_SubHeader";
        var bolEditable = host.get_enableEditOptions() == "true" ? true : false;

        // ------------------- create row

        var row = document.createElement("TR");

        // ------------------- icon

        var hyp = document.createElement("A");
        hyp.setAttribute('href', 'removeChild.html');
        hyp.appendChild(document.createTextNode(' '));

        var td = host._commonUI.buildTD(strCSS, "3%", null, hyp)
        row.appendChild(td);

        // ------------------- forum

        var span = document.createElement("SPAN");
        span.appendChild(document.createTextNode(if_viewForumForums));

        var td = host._commonUI.buildTD(strCSS, null, null, span)
        row.appendChild(td);

        // ------------------- topics

        if (!bolEditable) {

            var span = document.createElement("SPAN");
            span.appendChild(document.createTextNode(if_viewForumTopics));

            var td = host._commonUI.buildTD(strCSS, "10%", "center", span)
            row.appendChild(td);

        }

        // ------------------- replies

        if (!bolEditable) {

            var span = document.createElement("SPAN");
            span.appendChild(document.createTextNode(if_viewForumReplies));

            var td = host._commonUI.buildTD(strCSS, "10%", "center", span)
            row.appendChild(td);

        }

        // ------------------- last post

        if (!bolEditable) {

            var span = document.createElement("SPAN");
            span.appendChild(document.createTextNode(if_viewForumLastPost));

            var td = host._commonUI.buildTD(strCSS, "260px", null, span)
            row.appendChild(td);

        }

        // ------------------- edit options

        if (bolEditable) {

            // forum moderators

            var span = document.createElement("SPAN");
            span.appendChild(document.createTextNode('Moderators'));

            var td = host._commonUI.buildTD(strCSS, "220px", "center", span)
            row.appendChild(td);

            // edit options


            var span = document.createElement("SPAN");
            span.appendChild(document.createTextNode('Edit Options'));

            var td = host._commonUI.buildTD(strCSS, "260px", "center", span)
            row.appendChild(td);


        }




        // return tow
        return row;
    },



    buildRow: function(host, data) {


        var strCssDark = "TableCell_Dark";
        var strCssLight = "TableCell_Light";
        var installURL = host._context.CurrentSettings.InstallURL;
        var imgFolder = host._context.CurrentSettings.InstallImageFolderURL;
        var bolEditable = host.get_enableEditOptions() == "true" ? true : false;

        // get forum icon array        var forumIcon = null;
        if (host._forumsRead != null) {
            forumIcon = host._forumsRead.Icon(data, host.get_readCookieName())
        }

        // ------------------- create row

        var row = document.createElement("TR");

        // ------------------- icon  

        var bolIsRead = false;
        var img = document.createElement("IMG");
        if (forumIcon != null) {
            img.src = imgFolder + forumIcon[0];
            img.alt = forumIcon[1];
            bolIsRead = forumIcon[2];
        }

        var td = host._commonUI.buildTD(strCssDark, null, "center", img)
        row.appendChild(td);

        // ------------------- forum

        var container = document.createElement("DIV");
        container.style[host._sfloat] = "left";
        container.style.width = "100%";

        // left div
        var leftdiv = document.createElement("DIV");
        leftdiv.style[host._sfloat] = "left";
        leftdiv.style.width = "95%";

        // create span to hold forum link
        var span = document.createElement("SPAN");

        if (bolIsRead) {
            span.className = 'LargeTxt';
        } else {
            span.className = 'LargeTxtBold';
        }

        var hyp = document.createElement("A");
        hyp.setAttribute('href', host.getForumURL(data));
        hyp.appendChild(document.createTextNode(data.Name));
        span.appendChild(hyp)

        leftdiv.appendChild(span);

        // forum description        

        if (data.Description != null && data.Description != "") {

            var br = document.createElement("SPAN");
            br.innerHTML = "<br />"

            var description = document.createElement("SPAN");
            description.className = 'SmallTxt';
            description.innerHTML = data.Description;

            leftdiv.appendChild(br);
            leftdiv.appendChild(description);

        }

        // sub forums

        if (data.SubForums != null) {

            var br = document.createElement("SPAN");
            br.innerHTML = "<br />";
            leftdiv.appendChild(br);

            var childforums = document.createElement("SPAN");
            childforums.className = 'SmallTxt';
            childforums.appendChild(document.createTextNode('Sub Forums: '));

            // do we have a forum array
            if (data.SubForums.Forums != null) {

                for (var i = 0; i < data.SubForums.Forums.length; i++) {

                    var forum = data.SubForums.Forums[i];

                    var hyp = document.createElement("A");
                    hyp.setAttribute('href', host.getForumURL(forum));
                    hyp.appendChild(document.createTextNode(forum.Name));

                    childforums.appendChild(hyp);

                    if (i != (data.SubForums.Forums.length - 1)) {

                        var span = document.createElement("SPAN");
                        span.appendChild(document.createTextNode(', '));

                        childforums.appendChild(span);

                    }

                }

            } else { // single child forum

                var hyp = document.createElement("A");
                hyp.setAttribute('href', host.getForumURL(data));
                hyp.appendChild(document.createTextNode(data.SubForums.Forum.Name));
                childforums.appendChild(hyp);

            }

            leftdiv.appendChild(childforums);

        }


        /// --- right div

        var rightdiv = document.createElement("DIV");
        rightdiv.style[host._sfloat] = "right";
        rightdiv.style.width = "4%";

        if (host.get_rssURL() != null && data.RedirectURL == null) {

            var strRssURL = host.get_rssURL() + "?ForumID=" + data.ForumID;

            var imgRSS = document.createElement("IMG");
            imgRSS.src = imgFolder + "Misc_RSS.gif"
            imgRSS.alt = "View RSS Feed";

            var hyp = document.createElement("a");
            hyp.setAttribute('href', strRssURL);
            hyp.appendChild(imgRSS);
            hyp.title = "View RSS Feed";

            rightdiv.appendChild(hyp)

        }

        // add layers to container       
        container.appendChild(leftdiv)
        container.appendChild(rightdiv)

        // add column
        var td = host._commonUI.buildTD(strCssLight, null, null, container)
        row.appendChild(td);

        // ------------------- topics

        if (!bolEditable) {

            if (data.RedirectURL != null) {

                var spanTopics = document.createElement("SPAN");
                spanTopics.className = "LargeTxt";

                var strText = ""
                if (typeof data.RedirectClicks != "undefined") {
                    strText += if_Clicks.replace("[0]", data.RedirectClicks);
                    spanTopics.appendChild(document.createTextNode(strText));
                } else {
                    strText += if_Clicks.replace("[0]", "0");
                    spanTopics.appendChild(document.createTextNode(strText));
                }

                // add column
                var td = host._commonUI.buildTD(strCssLight, null, "center", spanTopics, 3)
                row.appendChild(td);

            } else {

                var spanTopics = document.createElement("SPAN");
                spanTopics.className = "ttlPosts";

                if (typeof data.TotalTopics != "undefined") {
                    spanTopics.appendChild(document.createTextNode(data.TotalTopics));
                } else {
                    spanTopics.appendChild(document.createTextNode("0"));
                }

                // add column
                var td = host._commonUI.buildTD(strCssLight, null, "center", spanTopics)
                row.appendChild(td);

            }


        }

        // ------------------- replies

        if (!bolEditable && data.RedirectURL == null) {

            var soanReplies = document.createElement("SPAN");
            soanReplies.className = "ttlPosts";

            if (typeof data.TotalPosts != "undefined") {
                soanReplies.appendChild(document.createTextNode(data.TotalPosts));
            } else {
                soanReplies.appendChild(document.createTextNode("0"));
            }

            // add column
            var td = host._commonUI.buildTD(strCssLight, null, "center", soanReplies)
            row.appendChild(td);

        }

        // ------------------- last post

        if (!bolEditable && data.RedirectURL == null) {

            var strLastPostURL = host.getFindPostURL(data.LastPosterPostID)
            var intLastPosterUserID = data.LastPosterUserID;
            var profileURL = host.getProfileURL(intLastPosterUserID);
            var intCardSector = host.get_userCardSector();
    
            var container = document.createElement("DIV");
            container.className = 'SmallTxt';

            // do we have a last post?
            if (data.LastPosterPostID > 0) {

                var container = document.createElement("DIV");
                container.style[host._sfloat] = "left";
                container.style.width = "100%";

                var left = document.createElement("SPAN");
                left.id = "tooltip_left";
                left.style[host._sfloat] = "left";

                // create photo image
                var img = document.createElement("IMG");
                if (data.PhotoImage != null && data.PhotoImage != "") {
                    if (data.PhotoImage.toLowerCase().indexOf("http://") == -1 && data.PhotoImage.toLowerCase().indexOf("https://") == -1) {
                        img.src = installURL + data.PhotoImage;
                    } else {
                        img.src = data.PhotoImage;
                    }
                } else {
                    img.src = imgFolder + "Misc_NoPhoto.gif";
                    img.alt = "No member picture";
                }

                // create photo link
                var hypPhoto = document.createElement("A");
                if (intLastPosterUserID > 0) {
                    hypPhoto.setAttribute('href', profileURL);
                }
                hypPhoto.appendChild(img);


                if (intLastPosterUserID > 0) {
                    addEvent(hypPhoto, 'mouseover', function() {
                        host._userCard.showUserCard(intLastPosterUserID, intCardSector);
                    }
                );
                }

                // create photo div
                var div = host._userCard.buildPhotoWithCard(intLastPosterUserID, hypPhoto, intCardSector, "userPictureSmall");

                // add member photo to div
                left.appendChild(div)

                // create right div
                var right = document.createElement("SPAN");
                right.style[host._sfloat] = "left";
                right.style.marginTop = "-6px";

                // last posted date

                var dt = document.createElement("SPAN");
                dt.innerHTML = data.LastPosterDate

                var hyp = document.createElement("a");
                hyp.setAttribute('href', strLastPostURL);
                hyp.appendChild(dt);

                var br = document.createElement("SPAN");
                br.innerHTML = "<br />"

                right.appendChild(hyp);
                right.appendChild(br);

                // kast posted by

                var strUsername = null;
                if (data.LastPosterUsername != null) {
                    strUsername = if_ViewForumGroupsLastPostBy.replace("[0]", data.LastPosterUsername);
                }

                var hyp = document.createElement("A");
                if (intLastPosterUserID > 0) {
                    hyp.setAttribute('href', profileURL);
                }
                hyp.appendChild(document.createTextNode(strUsername));

                var br = document.createElement("SPAN");
                br.innerHTML = "<br />"

                right.appendChild(hyp);
                right.appendChild(br);

                // subject

                var strSubject = null;
                if (data.LastPosterSubject != null) {
                    strSubject = if_ViewForumGroupsLastPostSubject.replace("[0]", data.LastPosterSubject);
                }

                var hyp = document.createElement("A");
                hyp.setAttribute('href', strLastPostURL);
                hyp.appendChild(document.createTextNode(strSubject));

                right.appendChild(hyp);



                // add divs to container
                container.appendChild(left);
                container.appendChild(right);

            } else {

                var span = document.createElement("SPAN");
                span.className = 'SmallTxt';
                span.appendChild(document.createTextNode('-'));
                container.appendChild(span);

            }

            // add column
            var td = host._commonUI.buildTD(strCssLight, null, null, container)
            row.appendChild(td);

        }

        // ------------------- edit options

        if (bolEditable) {

            // forum moderators

            var span = document.createElement("SPAN");

            // build forum moderator drop down
            var arr = host.getModeratorsForDropDown(data.ForumID);
            var ddlModerators = host._commonUI.buildSelect(null, "100%", arr);

            // add click event to show menu
            addEvent(ddlModerators, 'change', function() {
                if (ddlModerators.value != "") {
                    location = ddlModerators.value;
                }
            }
            );

            span.appendChild(ddlModerators)

            // add to column
            var td = host._commonUI.buildTD(strCssLight, "25%", "center", span)
            row.appendChild(td);

            // edit options

            var span = document.createElement("SPAN");
            span.style.width = "100%";

            // build select

            var arr = new Array(8);
            for (i = 0; i < arr.length; i++) {
                arr[i] = new Array(2);
            }

            arr[0][1] = "-";
            arr[0][2] = "";
            arr[1][1] = "Edit Forum";
            arr[1][2] = "AdminEditForum" + data.ForumID + ".aspx?Task=InsertUpdateForum";
            arr[2][1] = "Edit Permissions";
            arr[2][2] = "AdminEditForumPermissions" + data.ForumID + ".aspx";
            arr[3][1] = "Add Child Forum";
            arr[3][2] = "AdminNewForum" + data.ForumID + ".aspx";
            arr[4][1] = "Close Forum";
            arr[4][2] = "AdminEditForums" + data.ForumID + ".aspx?Task=CloseForum";
            arr[5][1] = "Open Forum";
            arr[5][2] = "AdminEditForums" + data.ForumID + ".aspx?Task=OpenForum";
            arr[6][1] = "Sort Forum";
            arr[6][2] = "AdminSortForums" + data.ParentID + ".aspx";
            arr[7][1] = "Delete Forum";
            arr[7][2] = "AdminDeleteForum" + data.ForumID + ".aspx";

            var objSelect = host._commonUI.buildSelect(null, "100%", arr);

            // add click event to show menu
            addEvent(objSelect, 'change', function() {
                if (objSelect.value != "") {
                    location = objSelect.value;
                }
            }
            );

            span.appendChild(objSelect)


            var td = host._commonUI.buildTD(strCssLight, "25%", "center", span)
            row.appendChild(td);


        }
        // return tow    
        return row;

    },

    // ------------------------------------ 

    getModeratorsForDropDown: function(intForumID) {

        var arr = null;

        if (this._forumModerators != null) {

            var forumModerators = this._forumModerators.SelectForumModerators(intForumID);

            if (forumModerators != null) {

                if (forumModerators.length > 0) {

                    // ensure 2d array
                    arr = new Array(forumModerators.length + 2);
                    for (i = 0; i < arr.length; i++) {
                        arr[i] = new Array(2);
                    }

                    // add default value
                    arr[0][1] = "Moderators (" + forumModerators.length + ")";
                    arr[0][2] = "";

                    // loop through moderators

                    var i;
                    for (i = 0; i < forumModerators.length; i++) {
                        var moderator = forumModerators[i];
                        arr[i + 1][1] = " - " + moderator.Username;
                        arr[i + 1][2] = "AdminEditModerator" + intForumID + "-" + moderator.UserID + ".aspx";
                    }

                    arr[i + 1][1] = "Add New Moderator";
                    arr[i + 1][2] = "AdminNewModerator" + intForumID + ".aspx";

                } else {

                    arr = new Array(2);
                    for (i = 0; i < arr.length; i++) {
                        arr[i] = new Array(2);
                    }

                    arr[0][1] = "-";
                    arr[0][2] = "";
                    arr[1][1] = "Add New Moderator";
                    arr[1][2] = "";

                }
            }
        }

        return arr;

    },

    // ------------------------------------ helpers

    getForumURL: function(data) {

        var strForumPage = this.get_forumURL().replace("0", data.ForumID);

        if (data.RedirectURL != null) {
            strForumPage = this.get_redirectURL().replace("0", data.ForumID);
            return this._context.CurrentSettings.InstallURL + strForumPage;
        }

        if (this.get_enableEditOptions() != "true") {
            return this._context.CurrentSettings.InstallURL + strForumPage;
        }

        return strForumPage;

    },

    getFindPostURL: function(postID) {

        var installURL = this._context.CurrentSettings.InstallURL;
        var strForumPage = this.get_findPostURL().replace("0", postID);
        return installURL + strForumPage;

    },

    getProfileURL: function(userID) {

        var installURL = this._context.CurrentSettings.InstallURL;
        var strForumPage = this.get_profileURL().replace("0", userID);
        return installURL + strForumPage;

    },

    getTable: function() {

        var container = iasp_FindControl(this.get_element().id);
        var table = container.getElementsByTagName("TABLE")[0]

        if (!table) {
            alert("Could not locate HTML table to render JSON data");
        } else {
            table.id = "tbl_" + container.id;
        }

        return table;

    },


    // ------------------------------------ initialize   

    // Overriden Methods
    initialize: function() {

        InstantASP.InstantForum.UI.Controls.ViewForumGroups.callBaseMethod(this, 'initialize');

        this.__isInitialized = true;

        if (document.all) {
            this._sfloat = "styleFloat"; //ie
        } else {
            this._sfloat = "cssFloat"; //ff
        }

        // setup page level context object
        if (this._context == null) {

            this._context = new InstantForumContext(this.get_json());
            this._context.initialize();

            // setup common controls
            if (this._context != null) {
                this._commonUI = new InstantASPCommonUI(this._context.CurrentSettings.InstallImageFolderURL);
                this._forumUI = new InstantForumUI(this._context.CurrentSettings.InstallImageFolderURL);

                // setup user card object
                this._userCard = new InstantForumUserCard(this._element)
                this._userCard._json = this.get_json();
                this._userCard._emailMembers = this.get_emailMembers();
                this._userCard.initialize();

            }

        }

        // render control
        this.renderViewForumGroups();

        // add events for user card tooltip

        var ctl = this;
        addEvent(document.body, 'click', function() {
            ctl._userCard.hideUserCard();
        }
        );

        addEvent(window, 'resize', function() {
            ctl._userCard.hideUserCard();
        }
        );

        addEvent(document.body, 'mousemove', function(e) {
            ctl._userCard.hideUserCardOnMouseOut(e);
        }
        );

    },

    // ------------------------------------ dispose

    dispose: function() {

        InstantASP.InstantForum.UI.Controls.ViewForumGroups.callBaseMethod(this, 'dispose');

    }

}

InstantASP.InstantForum.UI.Controls.ViewForumGroups.registerClass('InstantASP.InstantForum.UI.Controls.ViewForumGroups', Sys.UI.Control);

/// <reference name="{ForumActivity.js"/>
Type.registerNamespace('InstantASP.InstantForum.UI.Controls');

InstantASP.InstantForum.UI.Controls.ForumActivity = function(element) {

    InstantASP.InstantForum.UI.Controls.ForumActivity.initializeBase(this, [element]);

    this._element = element;

    // property variables        

    this._json = null;
    this._useWebService = false;
    this._enableForthcomingEvents = true;
    this._eventsRange = 10;
    this._enableBirthdaysToday = true;
    this._enableStatistics = true;
    
    
    this._forumID = null;
    this._groupID = null;
    this._topicID = null;
    this._eventID = null;
    this._profileURL = null;
    this._eventURL = null;
    this._enableIcons = null;
    

    this._context = null;
    this._commonUI = null;
    this._sFloat = null;
    this._whosOn = null;
    this._forumModerators = null;

    this.__isInitialized = false;


}

InstantASP.InstantForum.UI.Controls.ForumActivity.prototype = {

    // ------------------------------------ properties   

    // Properties
    get_element: function() {
        return this._element;
    },

    set_element: function(value) {
        this._element = value;
    },

    // json data
    get_json: function() {
        return this._json;
    },

    set_json: function(value) {
        this._json = value;
    },



    //getdisplay type
    get_displayType: function() {
        return this._displayType;
    },

    set_displayType: function(value) {
        this._displayType = value;
    },

    // use a WS for initial population
    get_useWebService: function() {
        return this._useWebService;
    },

    set_useWebService: function(value) {
        this._useWebService = value;
    },

    // enable forthcoming events
    get_enableForthcomingEvents: function() {
        return this._enableForthcomingEvents;
    },

    set_enableForthcomingEvents: function(value) {
        this._enableForthcomingEvents = value;
    },

    // range for forthcoming events
    get_eventsRange: function() {
        return this._eventsRange;
    },

    set_eventsRange: function(value) {
        this._eventsRange = value;
    },






    // enable birthdays today
    get_enableBirthdaysToday: function() {
        return this._enableBirthdaysToday;
    },

    set_enableBirthdaysToday: function(value) {
        this._enableBirthdaysToday = value;
    },

    // enable statistics
    get_enableStatistics: function() {
        return this._enableStatistics;
    },

    set_enableStatistics: function(value) {
        this._enableStatistics = value;
    },





    // forum id
    get_forumID: function() {
        return this._forumID;
    },

    set_forumID: function(value) {
        this._forumID = value;
    },


    // group id
    get_groupID: function() {
        return this._groupID;
    },

    set_groupID: function(value) {
        this._groupID = value;
    },

    // topic id
    get_topicID: function() {
        return this._topicID;
    },

    set_topicID: function(value) {
        this._topicID = value;
    },

    // event id
    get_eventID: function() {
        return this._eventID;
    },

    set_eventID: function(value) {
        this._eventID = value;
    },



    // member profile URL
    get_profileURL: function() {
        return this._profileURL;
    },

    set_profileURL: function(value) {
        this._profileURL = value;
    },

    // event URL
    get_eventURL: function() {
        return this._eventURL;
    },

    set_eventURL: function(value) {
        this._eventURL = value;
    },

    // enable icons?
    get_enableIcons: function() {
        return this._enableIcons;
    },

    set_enableIcons: function(value) {
        this._enableIcons = value;
    },

    // ------------------------------------ methods   

    renderForumActivity: function() {

        // setup context object from json
        var json = this.get_json();

        if (json != null) {

            // setup page level context object
            if (this._context == null) {

                // setup context
                this._context = new InstantForumContext(json);
                this._context.initialize();

                // setup common controls
                this._commonUI = new InstantASPCommonUI();
                this._commonUI.imgFolder = this._context.CurrentSettings.InstallImageFolderURL;

            }


            // setup whos on object
            this._whosOn = new InstantForumWhosOn(json);
            this._whosOn.initialize();

            // setup forum moderators
            this._forumModerators = new InstantForumForumModerators(json);
            this._forumModerators.initialize();



        }

        this.showLoader();

        this.buildTable();

        this.hideLoader();

    },

    // --------- fetch data

    fetchData: function() {

        // setup jason table
        this.beginRequest();

        // create context to pass to onComplete, onError etc
        var arrUserContext = new Array();
        arrUserContext[0] = this._element.id;

        // get data & set async evetns
        var service = new InstantASP.InstantForum.UI.WebServices.WhosOn();
        service.SelectForumActivityAsJSON(this.get_forumID(), this.get_groupID(), this.get_topicID(), this.get_eventID(), this.onComplete, this.onError, arrUserContext);

    },

    beginRequest: function() {

        this.clearBody();
        this.showLoader();

    },

    onComplete: function(returndata, userContext) {

        var ctl = $find(userContext[0]);
        ctl._json = returndata;
        ctl.renderForumActivity();


    },

    onError: function(error) {

        //alert("Error");

    },

    // ------------------------------------ build controls

    buildTable: function() {

        var imgFolder = this._context.CurrentSettings.InstallImageFolderURL;

        var strCSS = "PanelBar_SubHeader"
        var strLightCss = "TableCell_Light"

        var tbl = this.getTable();
        var tBody = this.getTableBody();

        var bolHome = this.isHomepage();

        if (tbl != null) {

            // ----------  active member stats

            var row = document.createElement("TR");

            var container = document.createElement("DIV");
            container.style[this._sfloat] = "left";
            container.style.width = "100%";

            // build left
            var left = document.createElement("DIV");
            left.style[this._sfloat] = "left";
            left.style.width = "80%";

            // build active users text
            var strTxt = if_ActiveUsers;

            if (this._whosOn != null) {

                if (this._whosOn.WhosOnCollection != null) {
                    strTxt = strTxt.replace("[0]", this._whosOn.WhosOnCollection.length);
                } else {
                    strTxt = strTxt.replace("[0]", "0");
                }

                // guest count
                var intGuestCount = this._whosOn.CurrentGuests.length;
                if (intGuestCount == 1) {
                    strTxt += if_GuestCount.replace("[0]", intGuestCount);
                } else {
                    strTxt += if_GuestsCount.replace("[0]", intGuestCount);
                }

                // member count
                var intMemberCount = this._whosOn.CurrentMembers.length;
                if (intMemberCount == 1) {
                    strTxt += if_MemberCount.replace("[0]", intMemberCount);
                } else {
                    strTxt += if_MembersCount.replace("[0]", intMemberCount);
                }

                // anonymous count
                var intAnonymousCount = this._whosOn.CurrentAnonymous.length;
                if (intAnonymousCount == 1) {
                    strTxt += if_AnonymousCount.replace("[0]", intAnonymousCount);
                } else {
                    strTxt += if_AnonymoussCount.replace("[0]", intAnonymousCount);
                }

            }


            left.appendChild(this.buildHeader(strTxt));

            // build right
            var right = document.createElement("DIV");
            right.style[this._sfloat] = "right";
            right.style.textAlign = "right";
            right.style.width = "18%";

            // create refresh image
            var img1 = document.createElement("IMG");
            img1.src = imgFolder + "SmallRefresh.png";
            img1.alt = "Refresh";
            img1.style.verticalAlign = "middle";

            // create link
            var hyp1 = document.createElement("A");
            hyp1.setAttribute('href', "javascript: void(0);");
            hyp1.style.paddingRight = "3px";
            hyp1.style.marginTop = "-2px";
            hyp1.style.marginBottom = "-2px";
            hyp1.title = "Refresh";
            hyp1.appendChild(img1);

            // add click event
            var cid = this._element.id;
            addEvent(hyp1, 'click', function() {
                refreshControl(cid)
            }
            );

            // add controls to div   
            if (this.get_forumID() == 0) {
                right.appendChild(hyp1);
            }
           
            // add layers to container
            container.appendChild(left);
            container.appendChild(right);

            var td1 = this._commonUI.buildTD(strCSS, "100%", null, container)
            row.appendChild(td1);

            tBody.appendChild(row);

            // ---------- active online members

            var row = document.createElement("TR");

            var container = document.createElement("DIV");
            container.className = "SmallTxt";

            if (this.get_enableIcons()) {

                var img = document.createElement("IMG");
                img.src = imgFolder + "Misc_Members.gif";
                img.style.verticalAlign = "middle";

                var imgSpan = document.createElement("SPAN");
                imgSpan.style.marginRight = "12px";
                imgSpan.appendChild(img);
                container.appendChild(imgSpan);

            }

            if (this._whosOn != null) {

                if (this._whosOn.CurrentMembers.length > 0) {

                    var span = document.createElement("SPAN");
                    span.appendChild(document.createTextNode(if_ForumActivityMembers));
                    container.appendChild(span);

                    for (var i = 0; i < this._whosOn.CurrentMembers.length; i++) {

                        var user = this._whosOn.CurrentMembers[i];

                        // format username
                        var strUsername = "";
                        if (user.OpenMarkUp != null) { strUsername += user.OpenMarkUp; }
                        strUsername += user.Username;
                        if (user.CloseMarkUp != null) { strUsername += user.CloseMarkUp; }

                        var span = document.createElement("SPAN");
                        span.innerHTML = strUsername;

                        // topic title
                        var hyp = document.createElement("A");
                        hyp.setAttribute('href', this.getProfileURL(user.UserID));
                        hyp.setAttribute('title', user.CurrentActivity);
                        hyp.appendChild(span);

                        container.appendChild(hyp);

                        if (i < this._whosOn.CurrentMembers.length - 1) {
                            var span = document.createElement("SPAN");
                            span.appendChild(document.createTextNode(", "));
                            container.appendChild(span);
                        }


                    }

                } else { // no active users

                    var strTxt = null;
                    if (this.get_eventID() > 0) {
                        strTxt = if_ForumActivityEventNoMembers;
                    } else if (this.get_topicID() > 0) {
                        strTxt = if_ForumActivityTopicNoMembers;
                    } else if (this.get_groupID() > 0) {
                        strTxt = if_ForumActivityForumGroupNoMembers;
                    } else if (this.get_forumID() > 0) {
                        strTxt = if_ForumActivityForumNoMembers;
                    } else {
                        strTxt = if_ForumActivityNoMembersOnline;
                    }

                    var span = document.createElement("SPAN");
                    span.appendChild(document.createTextNode(strTxt));

                    container.appendChild(span);

                }

            }

            var td1 = this._commonUI.buildTD(strLightCss, "100%", null, container)
            row.appendChild(td1);

            tBody.appendChild(row);

            // ----------  events within the last X days

            if (bolHome) {

                if (this.get_enableForthcomingEvents()) {

                    var row = document.createElement("TR");
                    
                    // setup title text
                    var strTxt = if_ForumActivityEvents;
                    strTxt = strTxt.replace("[0]", this.get_eventsRange())                    

                    var td1 = this._commonUI.buildTD(strCSS, "100%", null, this.buildHeader(strTxt))
                    row.appendChild(td1);

                    tBody.appendChild(row);

                    // ---------- active forthcoming events              

                    var row = document.createElement("TR");

                    var container = document.createElement("DIV");
                    container.className = "SmallTxt";

                    if (this.get_enableIcons()) {

                        var img = document.createElement("IMG");
                        img.src = imgFolder + "Misc_Event.gif";
                        img.style.verticalAlign = "middle";

                        var imgSpan = document.createElement("SPAN");
                        imgSpan.style.marginRight = "12px";
                        imgSpan.appendChild(img);
                        container.appendChild(imgSpan);

                    }

                    if (this._whosOn != null) {                      
            
                        if (this._whosOn.EventCollection != null && this._whosOn.EventCollection.length > 0) {

                            for (var i = 0; i < this._whosOn.EventCollection.length; i++) {

                                var event = this._whosOn.EventCollection[i];
                                
                                // topic title
                                var hyp = document.createElement("A");
                                hyp.setAttribute('href', this.getEventURL(event.EventID));
                                hyp.appendChild(document.createTextNode(event.Title));

                                container.appendChild(hyp);


                                if (i < this._whosOn.EventCollection.length - 1) {
                                    var span = document.createElement("SPAN");
                                    span.appendChild(document.createTextNode(", "));
                                    container.appendChild(span);
                                }

                            }

                        } else { // no active users

                            var span = document.createElement("SPAN");
                            span.appendChild(document.createTextNode("No forthcoming events."));

                            container.appendChild(span);

                        }

                    }

                    var td1 = this._commonUI.buildTD(strLightCss, "100%", null, container)
                    row.appendChild(td1);

                    tBody.appendChild(row);

                }

                // ----------  birthdays today header

                if (this.get_enableBirthdaysToday()) {

                    var row = document.createElement("TR");

                    var td1 = this._commonUI.buildTD(strCSS, "100%", null, this.buildHeader(if_ForumActivityBirthdaysToday))
                    row.appendChild(td1);

                    tBody.appendChild(row);

                    // ---------- birthdays today

                    var row = document.createElement("TR");

                    var container = document.createElement("DIV");
                    container.className = "SmallTxt";

                    if (this.get_enableIcons()) {

                        var img = document.createElement("IMG");
                        img.src = imgFolder + "Misc_Birthdays.gif";
                        img.style.verticalAlign = "middle";

                        var imgSpan = document.createElement("SPAN");
                        imgSpan.style.marginRight = "12px";
                        imgSpan.appendChild(img);
                        container.appendChild(imgSpan);
                    }

                    if (this._whosOn != null) {

                        if (this._whosOn.UserCollection != null && this._whosOn.UserCollection.length > 0) {

                            for (var i = 0; i < this._whosOn.UserCollection.length; i++) {

                                var user = this._whosOn.UserCollection[i];

                                // format username
                                var strUsername = "";
                                if (user.OpenMarkUp != null) { strUsername += user.OpenMarkUp; }
                                strUsername += user.Username;
                                if (user.CloseMarkUp != null) { strUsername += user.CloseMarkUp; }

                                var span = document.createElement("SPAN");
                                span.innerHTML = strUsername;

                                // topic title
                                var hyp = document.createElement("A");
                                hyp.setAttribute('href', this.getProfileURL(user.UserID));
                                hyp.setAttribute('title', user.Age + ' today');
                                hyp.appendChild(span);
                                container.appendChild(hyp);

                                var span = document.createElement("SPAN");
                                span.appendChild(document.createTextNode(" (" + user.Age + ")"));
                                container.appendChild(span);

                                if (i < this._whosOn.UserCollection.length - 1) {
                                    var span = document.createElement("SPAN");
                                    span.appendChild(document.createTextNode(", "));
                                    container.appendChild(span);
                                }

                            }

                        } else { // no active users

                            var span = document.createElement("SPAN");
                            span.appendChild(document.createTextNode(if_ForumactivityNoBirthdays));

                            container.appendChild(span);

                        }

                    }

                    var td1 = this._commonUI.buildTD(strLightCss, "100%", null, container)
                    row.appendChild(td1);

                    tBody.appendChild(row);

                }

                // ----------  statistics header

                if (this.get_enableStatistics()) {

                    var row = document.createElement("TR");

                    var td1 = this._commonUI.buildTD(strCSS, "100%", null, this.buildHeader(if_ForumActivityBoardStats))
                    row.appendChild(td1);

                    tBody.appendChild(row);


                    // ---------- statistics row 1

                    var row = document.createElement("TR");

                    var container = document.createElement("DIV");
                    container.className = "SmallTxt";

                    if (this.get_enableIcons()) {

                        var img = document.createElement("IMG");
                        img.src = imgFolder + "Misc_Stats.gif";
                        img.style.verticalAlign = "middle";

                        var imgSpan = document.createElement("SPAN");
                        imgSpan.style.marginRight = "12px";
                        imgSpan.appendChild(img);
                        container.appendChild(imgSpan);

                    }

                    if (this._whosOn != null) {

                        var stats = this._whosOn.Statistics;

                        if (stats != null) {

                            // member count

                            var stats1 = document.createElement("SPAN");
                            stats1.className = "SmallTxtBold";
                            stats1.appendChild(document.createTextNode(stats.Totalmembers));

                            var strTxt = "";
                            if (stats.Totalmembers == "1") {
                                strTxt += if_ForumActivityMemberPosted;
                            } else {
                                strTxt += if_ForumActivityMembersPosted;
                            }

                            var stats2 = document.createElement("SPAN");
                            stats2.appendChild(document.createTextNode(strTxt));

                            container.appendChild(stats1);
                            container.appendChild(stats2);

                            // post count

                            var stats3 = document.createElement("SPAN");
                            stats3.className = "SmallTxtBold";
                            stats3.appendChild(document.createTextNode(stats.TotalPosts));

                            var strTxt = "";
                            if (stats.TotalPosts == "1") {
                                strTxt += if_ForumActivityPostPosted;
                            } else {
                                strTxt += if_ForumActivityPostsPosted;
                            }

                            var stats4 = document.createElement("SPAN");
                            stats4.appendChild(document.createTextNode(strTxt));

                            container.appendChild(stats3);
                            container.appendChild(stats4);

                            // topic count

                            var stats5 = document.createElement("SPAN");
                            stats5.className = "SmallTxtBold";
                            stats5.appendChild(document.createTextNode(stats.TotalTopics));

                            var strTxt = "";
                            if (stats.TotalTopics == "1") {
                                strTxt += if_ForumActivityTopicPosted;
                            } else {
                                strTxt += if_ForumActivityTopicsPosted;
                            }

                            var stats6 = document.createElement("SPAN");
                            stats6.appendChild(document.createTextNode(strTxt));

                            container.appendChild(stats5);
                            container.appendChild(stats6);

                        }

                    }

                    var td1 = this._commonUI.buildTD(strLightCss, "100%", null, container)
                    row.appendChild(td1);

                    tBody.appendChild(row);

                    // ---------- newest member

                    var row = document.createElement("TR");

                    var container = document.createElement("DIV");
                    container.className = "SmallTxt";

                    if (this.get_enableIcons()) {

                        var img = document.createElement("IMG");
                        img.src = imgFolder + "Misc_NewMember.gif";
                        img.style.verticalAlign = "middle";

                        var imgSpan = document.createElement("SPAN");
                        imgSpan.style.marginRight = "12px";
                        imgSpan.appendChild(img);
                        container.appendChild(imgSpan);

                    }
                    
                    if (this._whosOn != null) {

                        var stats = this._whosOn.Statistics;

                        if (stats != null) {

                            var span = document.createElement("SPAN");
                            span.appendChild(document.createTextNode(if_ForumActivityNewMember));
                            container.appendChild(span);

                            var hyp = document.createElement("A");
                            hyp.setAttribute('href', this.getProfileURL(stats.LatestMemberUserID));
                            hyp.appendChild(document.createTextNode(stats.LatestMemberUsername));
                            container.appendChild(hyp);

                            var span = document.createElement("SPAN");
                            span.appendChild(document.createTextNode(if_ForumActivityJoined + stats.LatestMemberJoined));
                            container.appendChild(span);

                        }


                    }

                    var td1 = this._commonUI.buildTD(strLightCss, "100%", null, container)
                    row.appendChild(td1);

                    tBody.appendChild(row);

                }

            } else {

                // we are within a forum or group display moderators

                if (this._forumModerators != null) {

                    var forumModerators = this._forumModerators.ForumModeratorCollection;

                    if (forumModerators != null) {

                        // -----------------

                        if (forumModerators.length > 0) {

                            // add moderators header

                            var row = document.createElement("TR");

                            var td1 = this._commonUI.buildTD(strCSS, "100%", null, this.buildHeader(if_ForumActivityModerators))
                            row.appendChild(td1);

                            tBody.appendChild(row);

                            // ---------- moderators row 1

                            var row = document.createElement("TR");

                            var container = document.createElement("DIV");
                            container.className = "SmallTxt";

                            var span = document.createElement("SPAN");
                            span.appendChild(document.createTextNode(if_ForumActivityModeratorsTxt));
                            container.appendChild(span);

                            for (var i = 0; i < forumModerators.length; i++) {

                                var moderator = forumModerators[i];

                                // format username
                                var strUsername = "";
                                if (moderator.OpenMarkUp != null) { strUsername += moderator.OpenMarkUp; }
                                strUsername += moderator.Username;
                                if (moderator.CloseMarkUp != null) { strUsername += moderator.CloseMarkUp; }

                                var span = document.createElement("SPAN");
                                span.innerHTML = strUsername;

                                // topic title
                                var hyp = document.createElement("A");
                                hyp.setAttribute('href', this.getProfileURL(moderator.UserID));
                                hyp.setAttribute('title', 'View members profile...');
                                hyp.appendChild(span);

                                container.appendChild(hyp);

                                if (i < forumModerators.length - 1) {
                                    var span = document.createElement("SPAN");
                                    span.appendChild(document.createTextNode(", "));
                                    container.appendChild(span);
                                }

                            }


                            var td1 = this._commonUI.buildTD(strLightCss, "100%", null, container)
                            row.appendChild(td1);

                            tBody.appendChild(row);

                        }


                    }

                }



            }

        } // end this._whosOn is null check


    },

    isHomepage: function() {

        if (this.get_forumID() > 0 || this.get_groupID() > 0
            || this.get_topicID() > 0 || this.get_eventID() > 0) {
            return false;
        }
        return true;

    },

    buildHeader: function(txtText) {

        var span = document.createElement("SPAN");
        span.appendChild(document.createTextNode(txtText));

        return span;
    },


    getTable: function() {
        return this._element.getElementsByTagName("TABLE")[0];
    },

    getTableHead: function() {
        return this.getTable().getElementsByTagName("THEAD")[0];
    },

    getTableBody: function() {
        return this.getTable().getElementsByTagName("TBODY")[0];
    },

    getLoader: function() {
        return this.getTableBody().getElementsByTagName("TR")[0];
    },


    showLoader: function() {
        var trLoader = this.getLoader();
        trLoader.style.display = '';
    },

    hideLoader: function() {

        var trLoader = this.getLoader();
        trLoader.style.display = 'none';

    },

    clearBody: function() {

        var tBody = this.getTableBody();
        var rows = tBody.getElementsByTagName("TR");

        // ensure we never remove the first row
        for (i = rows.length - 1; i >= 1; i--) {
            try {
                tBody.removeChild(rows[i]);
            }
            catch (err) { };
        }

    },

    getProfileURL: function(userID) {

        var installURL = this._context.CurrentSettings.InstallURL;
        var strForumPage = this.get_profileURL().replace("0", userID);
        return installURL + strForumPage;

    },

    getEventURL: function(eventID) {

        var installURL = this._context.CurrentSettings.InstallURL;
        var strEventPage = this.get_eventURL().replace("0", eventID);
        return installURL + strEventPage;

    },

    // ------------------------------------ initialize   

    // Overriden Methods
    initialize: function() {

        InstantASP.InstantForum.UI.Controls.ForumActivity.callBaseMethod(this, 'initialize');

        this.__isInitialized = true;

        if (document.all) {
            this._sfloat = "styleFloat"; //ie
        } else {
            this._sfloat = "cssFloat"; //ff
        }

        // render control      
        if (this.get_useWebService()) {
            this.fetchData();
        } else {
            this.renderForumActivity();
        }

    },


    // ------------------------------------ dispose

    dispose: function() {

        InstantASP.InstantForum.UI.Controls.ForumActivity.callBaseMethod(this, 'dispose');

    }

}

InstantASP.InstantForum.UI.Controls.ForumActivity.registerClass('InstantASP.InstantForum.UI.Controls.ForumActivity', Sys.UI.Control);

/// <reference name="{SearchOptions.js"/>
Type.registerNamespace('InstantASP.InstantForum.UI.Controls');

InstantASP.InstantForum.UI.Controls.SearchOptions = function(element) {

    InstantASP.InstantForum.UI.Controls.SearchOptions.initializeBase(this, [element]);

    this._element = element;

    // property variables

    this._json = null;
    this._searchTarget = null;
    this._displayType = null;
    this._treeviewLayer = null;
    this._treeviewTextbox = null;
    this._searchURL = null;
    this._viewType = null;
    this._searchEventArgs = null;
    this._fulltextEnabled = false;
    this._enableLoader = true;

    // internal variables
    
    this._txtKeywords = null;
    this._txtKeywordsValue = if_SearchKeywords;
    this, _txtUsername = null;
    this._txtUsernameValue = if_SearchUsername;
    this._txtSignature = null;
    this._ddlSortBy = null;
    this._ddlSortOrder = null;
    this._ddlPageSize = null;
    this._ddlRoles = null;
    this._ddlSearchUsing = null;
    this.ddlSearchWithin = null;
    this._ddlDateFilter = null;
    this._ddlPostsWith = null;
    this._txtReplies  = null;
    
    this._butForums = null;
    this._butSearch1 = null;
    this._butSearch2 = null;
    this._butSearch3 = null;
    this._hypAdvSearch = null;
    this._context = null;
    this._commonUI = null;
    this._forumUI = null;
    this._userRoles = null;
    this._sFloat = null;
    this._searchArgsArray = null;

    this.__isInitialized = false;

}

InstantASP.InstantForum.UI.Controls.SearchOptions.prototype = {

    // ------------------------------------ properties   

    // Properties
    get_element: function() {
        return this._element;
    },

    set_element: function(value) {
        this._element = value;
    },

    // json data
    get_json: function() {
        return this._json;
    },

    set_json: function(value) {
        this._json = value;
    },

    // get search target id
    get_searchTarget: function() {
        return this._searchTarget;
    },

    set_searchTarget: function(value) {
        this._searchTarget = value;
    },

    // treeview panel
    get_treeviewLayer: function() {
        return this._treeviewLayer;
    },

    set_treeviewLayer: function(value) {
        this._treeviewLayer = value;
    },

    // treeview textbox
    get_treeviewTextbox: function() {
        return this._treeviewTextbox;
    },

    set_treeviewTextbox: function(value) {
        this._treeviewTextbox = value;
    },

    // search URL
    get_searchURL: function() {
        return this._searchURL;
    },

    set_searchURL: function(value) {
        this._searchURL = value;
    },

    // view type (topics, member list, PMs etc)
    get_viewType: function() {
        return this._viewType;
    },

    set_viewType: function(value) {
        this._viewType = value;
    },

    // display type (quick Search, advanced, basic etc)
    get_displayType: function() {
        return this._displayType;
    },

    set_displayType: function(value) {
        this._displayType = value;
    },

    // search event args
    get_searchEventArgs: function() {
        return this._searchEventArgs;
    },

    set_searchEventArgs: function(value) {
        this._searchEventArgs = value;
    },

    // is full text enabled?
    get_fulltextEnabled: function() {
        return this._fulltextEnabled;
    },

    set_fulltextEnabled: function(value) {
        this._fulltextEnabled = value;
    },

    // is full text enabled?
    get_enableLoader: function() {
        return this._enableLoader;
    },

    set_enableLoader: function(value) {
        this._enableLoader = value;
    },

    // ------------------------------------ methods   

    renderSearchOptions: function() {

        // setup context object from json
        var json = this.get_json();

        if (json != null) {

            // setup page level context object
            if (this._context == null) {

                // setup context
                this._context = new InstantForumContext(json);
                this._context.initialize();

                // setup common controls
                if (this._context != null) {

                    // setup userrole object
                    this._userRoles = new InstantASPRoles(json);
                    this._userRoles.initialize();

                    // setup common ui
                    this._commonUI = new InstantASPCommonUI(this._context.CurrentSettings.InstallImageFolderURL);
                    this._forumUI = new InstantForumUI(this._context.CurrentSettings.InstallImageFolderURL);

                }

            }
        }

        this.showLoader();

        this.buildTable();

        this.hideLoader();


    },

    buildTable: function() {

        switch (this.get_displayType()) {

            case 1: // Basic 

                this.buildBasicTable();

                break;

            case 2: // Advanced 

                this.buildAdvancedTable();

                break;

            case 3:   // QuickSearch 

                this.buildBasicTable();

                break;

        }


        // setup default values
        this.initControls();

    },

    // setup controls
    initControls: function() {

        // ---------- setup keywords textbox

        if (this._txtKeywords != null) {

            // set default value
            var strKeywordsVal = this._txtKeywordsValue;
            if (this._searchArgsArray["Keywords"] != null) {
                this._txtKeywords.value = this._searchArgsArray["Keywords"];
            } else {
                this._txtKeywords.value = strKeywordsVal;

            }

            // add focus and blur events

            var strKeywordID = this._txtKeywords.id;
            addEvent(this._txtKeywords, 'focus', function() {
                clearTxt(iasp_FindControl(strKeywordID), strKeywordsVal, true);
            }
            );

            addEvent(this._txtKeywords, 'blur', function() {
                clearTxt(iasp_FindControl(strKeywordID), strKeywordsVal);
            }
            );

        }

        // ---------- setup username textbox

        if (this._txtUsername != null) {

            // se default value 
            var strUsernameVal = this._txtUsernameValue;
            if (this._searchArgsArray["Username"] != null) {
                this._txtUsername.value = this._searchArgsArray["Username"];
            } else {
                this._txtUsername.value = strUsernameVal;
            }

            // add focus and blur events

            var strUsernameID = this._txtUsername.id;
            addEvent(this._txtUsername, 'focus', function() {
                clearTxt(iasp_FindControl(strUsernameID), strUsernameVal, true);
            }
            );

            addEvent(this._txtUsername, 'blur', function() {
                clearTxt(iasp_FindControl(strUsernameID), strUsernameVal);
            }
            );

        }

    },

    // ------------------------------------ search event atgs

    get_searchArgsArray: function() {

        return this._searchArgsArray;

    },

    set_searchArgsInternalArray: function() {

        // get search event args
        var s = new InstantForumSearchEventArgs(this.get_searchEventArgs());
        s.initialize();

        // check for nulls
        if (s.Args.SortBy == null) {
            s.Args["SortBy"] = "LastPosterDate"
        }

        // populate local array
        this._searchArgsArray = s.Args;

    },

    set_searchArgsArray: function(newArr) {

        this._searchArgsArray = newArr;

    },

    // ------------------------------------ build controls

    buildBasicTable: function() {

        // Topics = 1
        // MemberList = 2
        // Buddies = 3
        // PrivateMessages = 4
        // Events = 5

        switch (this.get_viewType()) {

            case 1: // topics 

                this.buildTopicsBasicTable();

                break;

            case 2: // member list 

                this.buildMemberListBasicTable();

                break;

            case 3: // topic sort options

                this.buildTopicSortOptionTable();

                break;

        }

    },


    buildTopicsBasicTable: function() {

        var strCSS = "PanelBar_SubHeader"
        var strLightCss = "TableCell_Light"

        var tbl = this.getTable();
        var tBody = this.getTableBody();

        if (tbl != null) {

            // create row
            var row = document.createElement("TR");

            var td1 = this._commonUI.buildTD(strCSS, "100%", null, this.buildHeader("Search Topics"))
            row.appendChild(td1);

            tBody.appendChild(row);

            // setup row             
            var row = document.createElement("TR");

            this._txtKeywords = document.createElement("INPUT");
            this._txtKeywords.setAttribute("type", "text")
            this._txtKeywords.setAttribute("id", "txtKeywords");

            document.body.appendChild(this._txtKeywords);

            this._butSearch1 = document.createElement("BUTTON");
            this._butSearch1.setAttribute("id", "butSearch1");
            this._butSearch1.setAttribute("type", "button");

            this._butForums = document.createElement("BUTTON");
            this._butForums.setAttribute("id", "butForums");
            this._butForums.setAttribute("type", "button");

            document.body.appendChild(this._butForums);

            var butid = this._butForums.id;
            var layerid = this.get_treeviewLayer().id;

            // add click event to show menu
            addEvent(this._butForums, 'click', function() {
                iasp_OpnMnu(butid, layerid, '350px', '');
            }
            );

            addEvent(this._butForums, 'mouseover', function() {
                iasp_OpnMnuMO(butid, layerid, '350px', '');
            }
            );

            var divKeywords = this._commonUI.buildSearchTxtBox(this._txtKeywords, this._butSearch1, this._butForums);

            // create ketwords column
            var td3 = this._commonUI.buildTD(strLightCss, "100%", null, divKeywords);
            row.appendChild(td3);

            tBody.appendChild(row);

            // setup row             
            var row = document.createElement("TR");

            // create ketwords column
            var td5 = this._commonUI.buildTD(strLightCss, "100%", null, this.buildSearchFooter())
            row.appendChild(td5);

            tBody.appendChild(row)

        }

    },

    buildMemberListBasicTable: function() {

        var strCSS = "PanelBar_SubHeader"
        var strLightCss = "TableCell_Light"

        var tbl = this.getTable();
        var tBody = this.getTableBody();

        if (tbl != null) {

            // create row
            var row = document.createElement("TR");

            var td1 = this._commonUI.buildTD(strCSS, "100%", null, this.buildHeader("Search Members"))
            row.appendChild(td1);

            tBody.appendChild(row);

            // setup row             
            var row = document.createElement("TR");

            this._txtUsername = document.createElement("INPUT");
            this._txtUsername.setAttribute("type", "text")
            this._txtUsername.setAttribute("id", "txtUsername");

            document.body.appendChild(this._txtUsername);

            this._butSearch1 = document.createElement("BUTTON");
            this._butSearch1.setAttribute("id", "butSearch1");
            this._butSearch1.setAttribute("type", "button");

            var divUsername = this._commonUI.buildSearchTxtBox(this._txtUsername, this._butSearch1);

            // create ketwords column
            var td3 = this._commonUI.buildTD(strLightCss, "100%", null, divUsername);
            row.appendChild(td3);

            tBody.appendChild(row);

            // setup row             
            var row = document.createElement("TR");

            // create ketwords column
            var td5 = this._commonUI.buildTD(strLightCss, "100%", null, this.buildSearchFooter())
            row.appendChild(td5);

            tBody.appendChild(row)

        }

    },

    buildAdvancedTable: function() {

        // Topics = 1
        // MemberList = 2
        // Buddies = 3
        // PrivateMessages = 4
        // Events = 5 

        switch (this.get_viewType()) {

            case 1: // topics 

                this.buildTopicsAdvancedTable();

                break;

            case 2: // member list 

                this.buildMemberAdvancedTable();

                break;

        }

    },


    buildTopicSortOptionTable: function() {

        var strCSS = "PanelBar_SubHeader"
        var strLightCss = "TableCell_Light"

        var tbl = this.getTable();
        var tBody = this.getTableBody();

        if (tbl != null) {

            // setup row                     
            var row = document.createElement("TR");

            var div1 = document.createElement("div");

            // sort by

            this._ddlSortBy = this._forumUI.buildTopicsSortByDropDown(this.get_fulltextEnabled());
            div1.appendChild(this._ddlSortBy);

            var spacer1 = document.createElement("span");
            spacer1.appendChild(document.createTextNode(" "));
            div1.appendChild(spacer1);

            // sirt order

            this._ddlSortOrder = this._commonUI.buildSortOrderDropDown();
            div1.appendChild(this._ddlSortOrder);

            var spacer2 = document.createElement("span");
            spacer2.appendChild(document.createTextNode(" "));
            div1.appendChild(spacer2);

            // page size

            this._ddlPageSize = this._commonUI.buildRecordsPerPageDropDown();
            div1.appendChild(this._ddlPageSize);

            if (this._searchArgsArray != null) {
                if (this._searchArgsArray["PageSize"] != null) {

                }
            }

            var spacer3 = document.createElement("span");
            spacer3.appendChild(document.createTextNode(" "));
            div1.appendChild(spacer3);

            this._ddlDateFilter = this._forumUI.buildDateFilterDropDown();
            div1.appendChild(this._ddlDateFilter);
            div1.appendChild(spacer1);

            var spacer4 = document.createElement("span");
            spacer4.appendChild(document.createTextNode(" "));
            div1.appendChild(spacer4);

            div1.appendChild(this.buildSubmitButton("GO", "FormButtonSmall"));

            // create ketwords column
            var td3 = this._commonUI.buildTD(strLightCss, null, null, div1);
            row.appendChild(td3);

            tBody.appendChild(row)

        }

    },

    buildTopicsAdvancedTable: function() {


        var strCSS = "PanelBar_SubHeader"
        var strLightCss = "TableCell_Light"

        var tbl = this.getTable();
        var tBody = this.getTableBody();

        if (tbl != null) {

            // create row
            var row = document.createElement("TR");

            var td1 = this._commonUI.buildTD(strCSS, "50%", null, this.buildHeader(if_SearchOptionsSearchTopics))
            row.appendChild(td1);

            // create username header

            var td2 = this._commonUI.buildTD(strCSS, "50%", null, this.buildHeader(if_SearchOptionsSearchUsername))
            row.appendChild(td2);

            tBody.appendChild(row);

            // setup row             
            var row = document.createElement("TR");

            this._txtKeywords = document.createElement("INPUT");
            this._txtKeywords.setAttribute("type", "text")
            this._txtKeywords.setAttribute("id", "txtKeywords");

            document.body.appendChild(this._txtKeywords);

            this._butSearch1 = document.createElement("BUTTON");
            this._butSearch1.setAttribute("id", "butSearch1");
            this._butSearch1.setAttribute("type", "button");

            this._butForums = document.createElement("BUTTON");
            this._butForums.setAttribute("id", "butForums");
            this._butForums.setAttribute("type", "button");

            document.body.appendChild(this._butForums);

            var butid = this._butForums.id;
            var layerid = this.get_treeviewLayer().id;

            // add click event to show menu
            addEvent(this._butForums, 'click', function() {
                iasp_OpnMnu(butid, layerid, '350px', '');
            }
            );

            addEvent(this._butForums, 'mouseover', function() {
                iasp_OpnMnuMO(butid, layerid, '350px', '');
            }
            );

            var divKeywords = this._commonUI.buildSearchTxtBox(this._txtKeywords, this._butSearch1, this._butForums);

            // create ketwords column
            var td3 = this._commonUI.buildTD(strLightCss, "50%", null, divKeywords)
            row.appendChild(td3);

            this._txtUsername = document.createElement("INPUT");
            this._txtUsername.setAttribute("type", "text")
            this._txtUsername.setAttribute("id", "txtUsername");

            document.body.appendChild(this._txtUsername);

            this._butSearch2 = document.createElement("BUTTON");
            this._butSearch2.setAttribute("id", "butSearch2");
            this._butSearch2.setAttribute("type", "button");

            var divUsername = this._commonUI.buildSearchTxtBox(this._txtUsername, this._butSearch2);

            var td4 = this._commonUI.buildTD(strLightCss, "50%", null, divUsername)
            row.appendChild(td4);

            tBody.appendChild(row);

            // create row
            var row = document.createElement("TR");

            var td5 = this._commonUI.buildTD(strCSS, "100%", null, this.buildHeader(if_SearchOptionsAdvOptions), 2)
            td5.style.verticalAlign = "top";
            row.appendChild(td5);

            tBody.appendChild(row);

            // setup row             
            var row = document.createElement("TR");

            // create ketwords column
            var td6 = this._commonUI.buildTD(strLightCss, "50%", null, this.buildAdvLeftOptions())
            row.appendChild(td6);

            var td7 = this._commonUI.buildTD(strLightCss, "50%", null, this.buildAdvRightOptions())
            td7.style.verticalAlign = "top";
            row.appendChild(td7);

            tBody.appendChild(row);

            // footer row             
            var row = document.createElement("TR");

            // create ketwords column
            var td8 = this._commonUI.buildTD(strLightCss, "50%", null, this.buildSearchFooter(), 2)
            row.appendChild(td8);

            tBody.appendChild(row)


        }

    },

    buildMemberAdvancedTable: function() {

        var strCSS = "PanelBar_SubHeader"
        var strLightCss = "TableCell_Light"

        var tbl = this.getTable();
        var tBody = this.getTableBody();

        if (tbl != null) {

            // create row
            var row = document.createElement("TR");

            var td1 = this._commonUI.buildTD(strCSS, "50%", null, this.buildHeader("Search Members"))
            row.appendChild(td1);

            // create username header     

            var td2 = this._commonUI.buildTD(strCSS, "50%", null, this.buildHeader("Search Signature"))
            row.appendChild(td2);

            tBody.appendChild(row);

            // setup row             
            var row = document.createElement("TR");

            this._txtUsername = document.createElement("INPUT");
            this._txtUsername.setAttribute("type", "text")
            this._txtUsername.setAttribute("id", "txtUsername");

            document.body.appendChild(this._txtUsername);

            this._butSearch1 = document.createElement("BUTTON");
            this._butSearch1.setAttribute("id", "butSearch1");
            this._butSearch1.setAttribute("type", "button");

            var divUsername = this._commonUI.buildSearchTxtBox(this._txtUsername, this._butSearch1);

            // create ketwords column
            var td3 = this._commonUI.buildTD(strLightCss, "50%", null, divUsername)
            row.appendChild(td3);

            this._txtSignature = document.createElement("INPUT");
            this._txtSignature.setAttribute("type", "text")

            this._butSearch2 = document.createElement("BUTTON");
            this._butSearch2.setAttribute("id", "butSearch2");
            this._butSearch2.setAttribute("type", "button");

            var divSignature = this._commonUI.buildSearchTxtBox(this._txtSignature, this._butSearch2);

            var td4 = this._commonUI.buildTD(strLightCss, "50%", null, divSignature)
            row.appendChild(td4);

            tBody.appendChild(row);

            // setup row             
            var row = document.createElement("TR");

            // create ketwords column
            var td6 = this._commonUI.buildTD(strLightCss, "100%", "center", this.buildMemberListAdvOptions(), 2)
            row.appendChild(td6);

            tBody.appendChild(row);

        }

    },

    buildHeader: function(txtText) {

        var span = document.createElement("SPAN");
        span.appendChild(document.createTextNode(txtText));

        return span;
    },

    buildAdvLeftOptions: function() {

        var div = document.createElement("div");

        var spacer = document.createElement("span");
        spacer.appendChild(document.createTextNode(" "));

        // -------------------------
        // search options 
        // -------------------------

        var div1 = document.createElement("div");
        div1.style[this._sfloat] = "left";
        div1.style.width = "100%";

        // build search options select

        this._ddlSearchUsing = this._commonUI.buildSearchTypeDropDown();
        div1.appendChild(this._ddlSearchUsing);
        div1.appendChild(spacer)

        // build search within select

        var arr = new Array(4);
        for (i = 0; i < arr.length; i++) {
            arr[i] = new Array(2);
        }

        arr[0][1] = if_SearchOptionsSearchWithin1;
        arr[0][2] = "1";
        arr[1][1] = if_SearchOptionsSearchWithin2;
        arr[1][2] = "2";
        arr[2][1] = if_SearchOptionsSearchWithin3;
        arr[2][2] = "3";
        arr[3][1] = if_SearchOptionsSearchWithin4;
        arr[3][2] = "4";
        
        this._ddlSearchWithin = this._commonUI.buildSelect(null, null, arr);
        div1.appendChild(this._ddlSearchWithin)
        div1.appendChild(spacer)

        // add rounded table

        div.appendChild(this._commonUI.buildRoundedTable('Search...:', div1));

        var lb = document.createElement("SPAN");
        lb.className = "lb";
        lb.innerHTML = "<br />";

        div.appendChild(lb)

        // -------------------------
        // replies / views
        // -------------------------

        var spacer1 = document.createElement("span");
        spacer1.appendChild(document.createTextNode(" "));

        var div2 = document.createElement("div");
        div2.style[this._sfloat] = "left";
        div2.style.width = "100%";

        this._ddlDateFilter = this._forumUI.buildDateFilterDropDown();
        div2.appendChild(this._ddlDateFilter);
        div2.appendChild(spacer1);

        // build search options select

        var arr = new Array(2);
        for (i = 0; i < arr.length; i++) {
            arr[i] = new Array(2);
        }

        arr[0][1] = "with at least";
        arr[0][2] = "1";
        arr[1][1] = "with at most";
        arr[1][2] = "2";

        this._ddlPostsWith = this._commonUI.buildSelect(null, null, arr);
        div2.appendChild(this._ddlPostsWith);
        div2.appendChild(spacer);

        // build search within select

        this._txtReplies = document.createElement("INPUT");
        this._txtReplies.setAttribute("type", "text")
        this._txtReplies.className = "FormInputText";
        this._txtReplies.style.width = "50px";
        this._txtReplies.value = "0";

        var span = document.createElement("SPAN");
        span.appendChild(document.createTextNode("Replies"));

        var spacer2 = document.createElement("span");
        spacer2.appendChild(document.createTextNode(" "));

        div2.appendChild(this._txtReplies);
        div2.appendChild(spacer2);
        div2.appendChild(span);

        // add rounded table

        div.appendChild(this._commonUI.buildRoundedTable('Filter...', div2));

        // return div
        return div;


    },

    buildAdvRightOptions: function() {

        var div = document.createElement("div");

        var spacer = document.createElement("span");
        spacer.appendChild(document.createTextNode(" "));

        // -----------------------------------

        var div2 = document.createElement("div");
        div2.style[this._sfloat] = "left";
        div2.style.width = "100%";

        // build search options select

        // build user roles drop down
        var arr = this.getRolesForDropDown();
        this._ddlRoles = this._commonUI.buildSelect(null, null, arr);
        div2.appendChild(this._ddlRoles);

        // add rounded table

        div.appendChild(this._commonUI.buildRoundedTable('Member Group...', div2));

        var lb = document.createElement("SPAN");
        lb.className = "lb";
        lb.innerHTML = "<br />";

        div.appendChild(lb)

        // ---------------- sort options


        var div1 = document.createElement("div");

        // sort by

        this._ddlSortBy = this._forumUI.buildTopicsSortByDropDown(this.get_fulltextEnabled());
        div1.appendChild(this._ddlSortBy);
        div1.appendChild(spacer);

        // sirt order

        this._ddlSortOrder = this._commonUI.buildSortOrderDropDown();
        div1.appendChild(this._ddlSortOrder);
        div1.appendChild(spacer);

        // page size

        this._ddlPageSize = this._commonUI.buildRecordsPerPageDropDown();
        div1.appendChild(this._ddlPageSize);

        // add rounded table

        div.appendChild(this._commonUI.buildRoundedTable('Sort Results...', div1));

        // return div
        return div;


    },


    buildMemberListAdvOptions: function() {

        var div = document.createElement("div");

        // sort by

        var div1 = document.createElement("div");
        div1.style[this._sfloat] = "left";
        div1.style.width = "100%";

        // setup member groups drop down

        var arr = this.getRolesForDropDown();
        this._ddlRoles = this._commonUI.buildSelect(null, null, arr);
        this._ddlRoles.style.marginRight = "4px";
        div1.appendChild(this._ddlRoles);

        // sort by

        var arr = new Array(6);
        for (i = 0; i < arr.length; i++) {
            arr[i] = new Array(2);
        }

        arr[0][1] = "sort by: last active";
        arr[0][2] = "LastLoginDate";
        arr[1][1] = "sort by: join date";
        arr[1][2] = "CreatedDate";
        arr[2][1] = "sort by: username";
        arr[2][2] = "Username";
        arr[3][1] = "sort by: no of posts";
        arr[3][2] = "PostCount";
        arr[4][1] = "sort by: no of visits";
        arr[4][2] = "TotalVisits";
        arr[5][1] = "sort by: followers";
        arr[5][2] = "Followers";

        this._ddlSortBy = this._commonUI.buildSelect(null, null, arr);
        this._ddlSortBy.style.marginRight = "4px";
        div1.appendChild(this._ddlSortBy)

        // sirt order

        var arr = new Array(2);
        for (i = 0; i < arr.length; i++) {
            arr[i] = new Array(2);
        }

        arr[0][1] = "in: DESC order";
        arr[0][2] = "1";
        arr[1][1] = "in: ASC order";
        arr[1][2] = "2";

        this._ddlSortOrder = this._commonUI.buildSelect(null, null, arr);
        this._ddlSortOrder.style.marginRight = "4px";
        div1.appendChild(this._ddlSortOrder);

        // records per page

        this._ddlPageSize = this._commonUI.buildRecordsPerPageDropDown();
        this._ddlPageSize.style.marginRight = "4px";
        div1.appendChild(this._ddlPageSize);

        // create submit button

        this._butSearch3 = document.createElement("BUTTON");
        this._butSearch3.className = "FormButtonSmall";
        this._butSearch3.setAttribute("id", "butSearch3");
        this._butSearch3.setAttribute("type", "button");
        this._butSearch3.appendChild(document.createTextNode("Go"));

        div1.appendChild(this._butSearch3);

        // add rounded table

        div.appendChild(this._commonUI.buildRoundedTable('Sort By...', div1));

        // return div
        return div;

    },

    buildSearchFooter: function() {

        var div1 = document.createElement("div");
        div1.style[this._sfloat] = "left";
        div1.style.width = "100%";

        var div2 = document.createElement("div");
        div2.style[this._sfloat] = "left";

        var strAdvTxt = "";
        switch (this.get_displayType()) {
            case 1: // Basic
                strAdvTxt = if_SearchOptionsAdv;
                break;
            case 2: // Advanced
                strAdvTxt = if_SearchOptionsBasic;
                break;
            case 3:   // QuickSearch
                strAdvTxt = if_SearchOptionsAdv;
        }

        this._hypAdvSearch = document.createElement("A");
        this._hypAdvSearch.setAttribute('id', "hypAdvSearch");
        this._hypAdvSearch.setAttribute('href', "javascript: void(0);");
        this._hypAdvSearch.appendChild(document.createTextNode(strAdvTxt));
        this._hypAdvSearch.style.paddingTop = "9px";

        div2.appendChild(this._hypAdvSearch);

        var div3 = null;

        // only display search if we are not in quick view
        if (this.get_displayType() != 3) {

            div3 = document.createElement("div");
            div3.style[this._sfloat] = "right";
            div3.appendChild(this.buildSubmitButton())

        }

        div1.appendChild(div2);

        if (div3 != null) {
            div1.appendChild(div3);
        }

        return div1;

    },

    buildSubmitButton: function(text, css) {

        if (text == null) { text = "Search Forums"; }
        if (css == null) { css = "FormButtonBig"; }

        this._butSearch3 = document.createElement("BUTTON");
        this._butSearch3.className = css;
        this._butSearch3.setAttribute("id", "butSearch3");
        this._butSearch3.setAttribute("type", "button");
        this._butSearch3.appendChild(document.createTextNode(text));

        return this._butSearch3;

    },

    // get user roles for drop down
    getRolesForDropDown: function() {

        var arr = null;
        if (this._userRoles != null) {

            var roles = this._userRoles.userRolesCollection;

            if (roles != null) {

                var arr = new Array(roles.length + 1);
                for (i = 0; i < arr.length; i++) {
                    arr[i] = new Array(2);
                }

                arr[0][1] = "All member groups";
                arr[0][2] = "0";

                for (x = 0; x < roles.length; x++) {
                    arr[x + 1][1] = roles[x].RoleName;
                    arr[x + 1][2] = roles[x].RoleID;
                }

            }
        }

        return arr;

    },

    getSearchTarget: function() {
        if (this._searchTarget != null) {
            return $find(this._searchTarget.id);
        }
        return null;
    },

    get_txtKeywords: function() {
        if (this._txtKeywords != null) {
            return this._txtKeywords.value;
        }
        return null;
    },

    getTable: function() {
        return this._element.getElementsByTagName("TABLE")[0];
    },

    getTableHead: function() {
        return this.getTable().getElementsByTagName("THEAD")[0];
    },

    getTableBody: function() {
        return this.getTable().getElementsByTagName("TBODY")[0];
    },

    getLoader: function() {
        return this.getTableBody().getElementsByTagName("TR")[0];
    },

    showLoader: function() {
        var trLoader = this.getLoader();
        trLoader.style.display = '';
    },

    hideLoader: function() {

        var trLoader = this.getLoader();
        trLoader.style.display = 'none';

    },

    clearBody: function() {

        var tBody = this.getTableBody();
        var rows = tBody.getElementsByTagName("TR");

        // ensure we never remove the first row
        for (i = rows.length - 1; i >= 1; i--) {
            try {
                tBody.removeChild(rows[i]);
            }
            catch (err) { };
        }

    },

    // ------------------------------------ initialize   

    // Overriden Methods
    initialize: function() {

        InstantASP.InstantForum.UI.Controls.SearchOptions.callBaseMethod(this, 'initialize');

        this.__isInitialized = true;

        // add event  
        $addHandlers(this.get_element(), { 'click': this.onSearchClick }, this);
        $addHandlers(this.get_element(), { 'click': this.onAdvancedClick }, this);

        if (document.all) {
            this._sfloat = "styleFloat"; //ie
        } else {
            this._sfloat = "cssFloat"; //ff
        }

        // setup loval search args array
        if (this.get_searchEventArgs() != null) {
            this.set_searchArgsInternalArray();
        }


        // render control        
        this.renderSearchOptions();


    },

    // ------------------------------------ events

    add_searchClick: function(handler) {
        this.get_events().addHandler("searchClick", handler);
    },

    remove_searchClick: function(handler) {
        this.get_events().removeHandler("searchClick", handler);
    },

    add_advancedClick: function(handler) {
        this.get_events().addHandler("advancedClick", handler);
    },

    remove_advancedClick: function(handler) {
        this.get_events().removeHandler("advancedClick", handler);
    },

    onSearchClick: function(source, e) {

        if (!this._events) return;
        var ele = source.target;
        if (!ele || ele == 'undefined') { return false; };
        var eleid = ele.id.toLowerCase();

        var strBut1 = null;
        var strBut2 = null;
        var strBut3 = null;
        var bolClick = false;

        if (this._butSearch1 != null) { strBut1 = this._butSearch1.id; }
        if (this._butSearch2 != null) { strBut2 = this._butSearch2.id; }
        if (this._butSearch3 != null) { strBut3 = this._butSearch3.id; }

        if (strBut1 == null && strBut2 == null && strBut3 == null) { return; }

        // did we click a search button?
        if (strBut1 != null) {
            if (eleid.indexOf(strBut1.toLowerCase()) > -1) { bolClick = true; }
        }

        if (strBut2 != null) {
            if (eleid.indexOf(strBut2.toLowerCase()) > -1) { bolClick = true; }
        }

        if (strBut3 != null) {
            if (eleid.indexOf(strBut3.toLowerCase()) > -1) { bolClick = true; }
        }

        if (bolClick) {

            var handler = this._events.getHandler("searchClick");

            if (handler) {

                // update view topics

                var searchTarget = this.getSearchTarget();

                if (searchTarget != null) {

                    if (searchTarget._element.style.display == "none") {
                        searchTarget._element.style.display = "";
                    }

                    var searchArgs = searchTarget.get_searchArgsArray();

                    if (this._txtKeywords != null) {

                        if (this._txtKeywords.value != this._txtKeywordsValue) {
                            searchArgs["Keywords"] = this._txtKeywords.value;
                        } else {
                            searchArgs["Keywords"] = null;
                        }
                    }

                    if (this._txtUsername != null) {
                        if (this._txtUsername.value != this._txtUsernameValue) {
                            searchArgs["Username"] = this._txtUsername.value;
                        } else {
                            searchArgs["Username"] = null;
                        }
                    }


                    if (this._ddlSearchUsing != null) {
                        if (this._ddlSearchUsing.value != "") {
                            searchArgs["SearchUsing"] = this._ddlSearchUsing.value;
                        } else {
                            searchArgs["SearchUsing"] = "1";
                        }
                    }

                    if (this._ddlSearchWithin != null) {
                        if (this._ddlSearchWithin.value != "") {
                            searchArgs["SearchWithin"] = this._ddlSearchWithin.value;
                        } else {
                            searchArgs["SearchWithin"] = "1";
                        }
                    }

                    if (this._ddlDateFilter != null) {
                        if (this._ddlDateFilter.value != "") {
                            searchArgs["DateFilter"] = this._ddlDateFilter.value;
                        } else {
                            searchArgs["DateFilter"] = "1";
                        }
                    }

                    if (this._ddlRoles != null) {
                        if (this._ddlRoles.value != "") {
                            searchArgs["RoleID"] = this._ddlRoles.value;
                        } else {
                            searchArgs["RoleID"] = "0";
                        }
                    }

                    if (this._ddlSortBy != null) {
                        if (this._ddlSortBy.value != "") {
                            searchArgs["SortBy"] = this._ddlSortBy.value;
                        } else {
                            searchArgs["SortBy"] = null;
                        }
                    }

                    if (this._ddlSortOrder != null) {
                        if (this._ddlSortOrder.value != "") {
                            searchArgs["SortOrder"] = this._ddlSortOrder.value;
                        } else {
                            searchArgs["SortOrder"] = null;
                        }
                    }

                    if (this._ddlPageSize != null) {
                        if (this._ddlPageSize.value != "") {
                            searchTarget.set_pageSize(this._ddlPageSize.value);
                        }
                    }

                    if (this._ddlPostsWith != null) {
                        if (this._ddlPostsWith.value != "") {
                            searchArgs["PostsWith"] = this._ddlPostsWith.value;
                        } else {
                            searchArgs["PostsWith"] = null;
                        }
                    }

                    if (this._txtReplies != null) {
                        if (this._txtReplies.value != "") {
                            searchArgs["Replies"] = this._txtReplies.value;
                        } else {
                            searchArgs["Replies"] = null;
                        }
                    }

                    // cancel pinned topics for search restults
                    if (searchArgs["ShowPinnedTopics"]) {
                        if (searchArgs["Keywords"] != "") {
                            searchArgs["ShowPinnedTopics"] = false;
                        } else {
                            searchArgs["ShowPinnedTopics"] = true;
                        }
                    } else {
                        if (searchArgs["Keywords"] == "") {
                            searchArgs["ShowPinnedTopics"] = true;
                        }
                    }

                    var strForumIDs = this.get_treeviewTextbox();
                    if (strForumIDs != null) {
                        var f = iasp_FindControl(strForumIDs)
                        if (f != null) {
                            if (f.value != "") {
                                searchArgs["ForumIDs"] = f.value.split(",");
                            }
                        }
                    }

                    // update search target
                    searchTarget.set_searchArgsArray(searchArgs);
                    searchTarget.pageIndexChanged(1);



                }



                // rause search click event
                handler(1);

            }

        }


    },

    onAdvancedClick: function(source, e) {

        // Basic = 1
        // Advanced = 2
        // QuickSearch = 3

        if (!this._events) { return; };
        var ele = source.target;
        if (!ele) { return; }
        var eleid = ele.id.toLowerCase();

        if (this._hypAdvSearch != null) {

            if (eleid.indexOf(this._hypAdvSearch.id.toLowerCase()) > -1) {

                // advanced search click
                var handler = this._events.getHandler("advancedClick");

                if (handler) {

                    var displayType = this.get_displayType();

                    if (displayType == 1) {
                        displayType = 2
                    } else {
                        displayType = 1
                    }

                    handler(displayType);
                }

            }
        }

    },


    // ------------------------------------ dispose

    dispose: function() {

        $clearHandlers(this.get_element());

        InstantASP.InstantForum.UI.Controls.SearchOptions.callBaseMethod(this, 'dispose');

    }

}

InstantASP.InstantForum.UI.Controls.SearchOptions.registerClass('InstantASP.InstantForum.UI.Controls.SearchOptions', Sys.UI.Control);

/// <reference name="{ViewTopicsBasic.js"/>
Type.registerNamespace('InstantASP.InstantForum.UI.Controls');

InstantASP.InstantForum.UI.Controls.ViewTopicsBasic = function(element) {

    InstantASP.InstantForum.UI.Controls.ViewTopicsBasic.initializeBase(this, [element]);

    this._json = null;
    this._element = element;
    this._useWebService = false;

    this._searchEventArgs = null;
    this._pageSize = null;
    this._topicURL = null;
    this._readCookieName = null;
    
    this._context = null;
    this._commonUI = null;
    this._topics = null;
    this._topicsRead = null;
    this._jsonTable = new InstantASPJSONTable(this.getTable().id);

    this._searchArgsArray = null;
    this._sfloat = null;

    this.__isInitialized = false;


}

InstantASP.InstantForum.UI.Controls.ViewTopicsBasic.prototype = {

    // ------------------------------------ properties   

    // json data
    get_json: function() {
        return this._json;
    },

    set_json: function(value) {
        this._json = value;
    },

    // Properties
    get_element: function() {
        return this._element;
    },

    set_element: function(value) {
        this._element = value;
    },



    // search event args
    get_searchEventArgs: function() {
        return this._searchEventArgs;
    },

    set_searchEventArgs: function(value) {
        this._searchEventArgs = value;
    },


    // page size
    get_pageSize: function() {
        return this._pageSize;
    },

    set_pageSize: function(value) {
        this._pageSize = value;
    },

    // topic URL
    get_topicURL: function() {
        return this._topicURL;
    },

    set_topicURL: function(value) {
        this._topicURL = value;
    },

    // use a WS for initial population
    get_useWebService: function() {
        return this._useWebService;
    },

    set_useWebService: function(value) {
        this._useWebService = value;
    },

    // get mark all as read cookie name
    get_readCookieName: function() {
        return this._readCookieName;
    },

    set_readCookieName: function(value) {
        this._readCookieName = value;
    },
    
    // ------------------------------------ methods   

    renderViewTopicsBasic: function() {

        var json = this.get_json();

        // ensure we have some data
        if (json != null) {

            // setup topics read object
            this._topicsRead = new InstantForumTopicsRead(json);
            this._topicsRead.initialize();

        }

        // setup topics object
        this._topics = new InstantForumTopics(json);
        this._topics.initialize();

        // setup json table object
        this._jsonTable.JSON = json;
        this._jsonTable.Host = this;
        this._jsonTable.BindData = this.selectTopics;
        this._jsonTable.OnHeaderRowAdd = this.buildHeaderRow;
        this._jsonTable.OnRowAdd = this.buildRow;
        this._jsonTable.initalize();

    },

    // ------------------------------------ data / service

    selectTopics: function(host) {

        if (host._topics.TopicCollection != null) {
            return host._topics.TopicCollection;
        }

    },

    // ------------------------------------ search event atgs

    get_searchArgsArray: function() {

        return this._searchArgsArray;

    },

    set_searchArgsInternalArray: function() {

        // get search event args
        var s = new InstantForumSearchEventArgs(this.get_searchEventArgs());
        s.initialize();

        // check for nulls
        if (s.Args.SortBy == null) {
            s.Args["SortBy"] = "LastPosterDate"
        }

        // populate local array
        this._searchArgsArray = s.Args;

    },

    set_searchArgsArray: function(newArr) {

        this._searchArgsArray = newArr;

    },

    // ------------------------------------ fecth data

    pageIndexChanged: function(pageIndex) {

        // update json table
        this.fetchData(pageIndex);

    },


    fetchData: function(pageIndex) {

        // ensure page index is valid
        if (pageIndex <= 0) { pageIndex = 1; }

        // setup jason table        
        this.beginRequest();

        // convert search args to xml
        var strXML = "<root>" + ObjToXml(this._searchArgsArray) + "</root>";
        
        // create context to pass to onComplete, onError etc
        var arrUserContext = new Array();
        arrUserContext[0] = this._element.id;

        // get data & set async evetns
        var service = new InstantASP.InstantForum.UI.WebServices.Topics();
        service.SelectTopicsPaged(pageIndex, this.get_pageSize(), strXML, true, false, this.onComplete, this.onError, arrUserContext);

    },


    beginRequest: function() {

        this._jsonTable.clearTable();
        this._jsonTable.showLoader();

    },

    onComplete: function(returndata, userContext) {

        var ctl = $find(userContext[0]);
        ctl._json = returndata;
        ctl.renderViewTopicsBasic();


    },

    onTimeOut: function(message) {

        alert("onTimeOut Event");

    },

    onError: function(error) {

        //alert("Error");

    },

    // ------------------------------------ build tabke tows

    buildHeaderRow: function(host) {

        var imgFolder = host._context.CurrentSettings.InstallImageFolderURL;
        var strImgAsc = "Misc_SortArrowAsc.gif";
        var strImgDesc = "Misc_SortArrowDesc.gif";


        // local vars
        var strCSS = "PanelBar_SubHeader"

        // ------------------- create row

        var row = document.createElement("TR");

        // ------------------- topic title

        var strSortColumn = "LastPosterDate";
        var container = document.createElement("DIV");
        container.style[host._sfloat] = "left";
        container.style.width = "100%";

        // build left
        var left = document.createElement("DIV");
        left.style[host._sfloat] = "left";
        left.style.width = "79%";

        // topic title
        var hyp = document.createElement("A");
        hyp.id = "hypSort_" + strSortColumn
        hyp.setAttribute('href', 'javascript: void(0)');
        hyp.appendChild(document.createTextNode("Post Date"));

        // add link to div
        left.appendChild(hyp);

        // sort img
        if (host._searchArgsArray.SortBy.toLowerCase().indexOf(strSortColumn.toLowerCase()) > -1) {

            var img = document.createElement("IMG");
            if (host._searchArgsArray.SortOrder == 1) { // desc
                img.src = imgFolder + strImgDesc;
                img.alt = iasp_sortDesc;
            } else {
                img.src = imgFolder + strImgAsc;
                img.alt = iasp_SortAsc;
            }

            // add sort image to div
            left.appendChild(img);

        }

        // build right
        var right = document.createElement("DIV");
        right.style[host._sfloat] = "right";
        right.style.textAlign = "right";
        right.style.width = "20%";

        // create refresh image
        var img1 = document.createElement("IMG");
        img1.src = imgFolder + "SmallRefresh.png";
        img1.style.verticalAlign = "middle";
        img1.alt = "Refresh";
       
        
        // create link
        var hyp1 = document.createElement("A");
        hyp1.setAttribute('href', "javascript: void(0);");
        hyp1.appendChild(img1);
        hyp1.title = "Refresh";
        
        var cid = host._element.id;

        // add click event to show menu
        addEvent(hyp1, 'click', function() {
            refreshControl(cid)
        }
        );


        // add link to right div
        right.appendChild(hyp1)


        // add layers to container
        container.appendChild(left);
        container.appendChild(right);

        // create column
        var td = host._commonUI.buildTD(strCSS, null, null, container)
        row.appendChild(td);

        // return row
        return row;


    },

    buildRow: function(host, data) {

        // local vars

        var installURL = host._context.CurrentSettings.InstallURL;
        var imgFolder = host._context.CurrentSettings.InstallImageFolderURL;

        var bolIsRead = false;
        var arrReadIcon = null;
        
        if (host._topicsRead != null) {
            arrReadIcon = host._topicsRead.Icon(data, host.get_readCookieName() + data.ForumID)
            bolIsRead = arrReadIcon[2];
        }

        // ------------------- create row

        var row = document.createElement("TR");

        // ------------------- icon

        var container = document.createElement("DIV");
        container.style.marginLeft = "0px";
        container.style.marginRight = "6px";

        var img = document.createElement("IMG");
        if (arrReadIcon != null) {
            img.src = imgFolder + arrReadIcon[0];
            img.alt = arrReadIcon[1];
            img.className = "tIconPadded";
        }

        // setup topic icon
        var imgTopicIcon = document.createElement("IMG");
        if (data.MessageIconName != null) {
            imgTopicIcon.src = imgFolder + 'MessageIcons/' + data.MessageIconName;
            imgTopicIcon.alt = data.MessageIconName;
            imgTopicIcon.className = "tIconPadded";
        } else {
            imgTopicIcon.style.display = 'none';
        }

        container.appendChild(img);
        container.appendChild(imgTopicIcon);

        // topic title

        // create span to hold topic link
        var span = document.createElement("SPAN");

        if (bolIsRead) {
            span.className = 'SmallTxt';
        } else {
            span.className = 'SmallTxtBold';
        }

        // setup topic title link
        var strTopicURL = host.get_topicURL().replace("0", data.PostID);

        var hyp = document.createElement("A");
        hyp.setAttribute('href', strTopicURL);
        hyp.innerHTML = data.Title;
     
        if (data.Message != null) {
            hyp.title = data.Message;
        }

        span.appendChild(hyp);
        
        container.appendChild(span);

        // attachment icon

        if (data.HasAttachments != null) {

            var imgAttachments = document.createElement("IMG");

            if (data.HasAttachments == 'true') {
                imgAttachments.src = imgFolder + 'Misc_Attachments.gif';
                imgAttachments.alt = if_HasAttachments;
                imgAttachments.style.display = '';

            } else {
                imgAttachments.style.display = 'none';
            }

            // add attachment image
            container.appendChild(imgAttachments);

        }


        // create cell

        var td = host._commonUI.buildTD("SmallTxt", "100%", null, container)
        td.style.padding = "3px";
        row.appendChild(td);


        return row

    },

    // ------------------------------------ helpers

    getTable: function() {

        var container = iasp_FindControl(this.get_element().id);
        var table = container.getElementsByTagName("TABLE")[0]

        if (!table) {
            alert("Could not locate HTML table to render JSON data");
        } else {
            table.id = "tbl_" + container.id;
        }

        return table;

    },


    // ------------------------------------ initialize   

    // Overriden Methods
    initialize: function() {

        InstantASP.InstantForum.UI.Controls.ViewTopicsBasic.callBaseMethod(this, 'initialize');

        this.__isInitialized = true;

        // add event  
        $addHandlers(this.get_element(), { 'click': this.onSortChanged }, this);

        // setup page level context object
        if (this._context == null) {

            this._context = new InstantForumContext(this.get_json());
            this._context.initialize();

            // setup common controls
            if (this._context != null) {
                this._commonUI = new InstantASPCommonUI(this._context.CurrentSettings.InstallImageFolderURL);
            }

        }

        if (document.all) {
            this._sfloat = "styleFloat"; //ie
        } else {
            this._sfloat = "cssFloat"; //ff
        }

        // setup loval search args array
        if (this.get_searchEventArgs() != null) {
            this.set_searchArgsInternalArray();
        }


        // render control      
        if (this.get_useWebService()) {
            this.fetchData(1);
        } else {
            this.renderViewTopicsBasic();
        }


    },

    // ------------------------------------ events

    add_sortChanged: function(handler) {
        this.get_events().addHandler("sortChanged", handler);
    },

    remove_sortChanged: function(handler) {
        this.get_events().removeHandler("sortChanged", handler);
    },

    onSortChanged: function(source, e) {

        if (!this._events) return;

        var handler = this._events.getHandler("sortChanged");

        if (handler) {

            var ele = source.target;
            if (!ele) { return; }

            if (ele.id.toLowerCase().indexOf("hypsort_") > -1) {

                var strSortBy = ele.id.split("_")[1];
                var intSortOrder = this._searchArgsArray.SortOrder;

                // we are sorting a new column
                if (strSortBy != this._searchArgsArray.SortBy) {
                    intSortOrder = 1;
                } else {
                    // we are sorting an existing column          
                    if (intSortOrder == 1) {
                        intSortOrder = 2;
                    } else {
                        intSortOrder = 1;
                    }

                }



                if (this._searchArgsArray.SortBy != null) {
                    this._searchArgsArray.SortBy = strSortBy;
                    this._searchArgsArray.SortOrder = intSortOrder;
                }

                if (ele != null && ele != 'undefined') {
                    if (typeof ele.disabled == 'undefined' || ele.disabled == false) {
                        handler(1);
                    }
                }
            }

        }

    },

    // ------------------------------------ dispose

    dispose: function() {

        $clearHandlers(this.get_element());

        InstantASP.InstantForum.UI.Controls.ViewTopicsBasic.callBaseMethod(this, 'dispose');

    }

}

InstantASP.InstantForum.UI.Controls.ViewTopicsBasic.registerClass('InstantASP.InstantForum.UI.Controls.ViewTopicsBasic', Sys.UI.Control);

/// <reference name="{MemberListBasic.js"/>
Type.registerNamespace('InstantASP.InstantForum.UI.Controls');



InstantASP.InstantForum.UI.Controls.MemberListBasic = function(element) {

    InstantASP.InstantForum.UI.Controls.MemberListBasic.initializeBase(this, [element]);

    this._json = null;
    this._element = element;
    this._useWebService = false;
    this._emailMembers = false;

    this._searchEventArgs = null;
    this._pageSize = null;
    this._profileURL = null;
    this._defaultNoOfBlocks = 0;
    this._colSpan = null;
    this._userCardSector = 1;
    this._subHeader = null;

    this._context = null;
    this._commonUI = null;
    this._forumUI = null;
    this._users = null;
    this._sfloat = null;
   
    this._jsonTable = new InstantASPJSONTable(this.getTable().id);

    this._searchArgsArray = null;

    this.__isInitialized = false;




}

InstantASP.InstantForum.UI.Controls.MemberListBasic.prototype = {

    // ------------------------------------ properties   

    // json data
    get_json: function() {
        return this._json;
    },

    set_json: function(value) {
        this._json = value;
    },

    // Properties
    get_element: function() {
        return this._element;
    },

    set_element: function(value) {
        this._element = value;
    },



    // search event args
    get_searchEventArgs: function() {
        return this._searchEventArgs;
    },

    set_searchEventArgs: function(value) {
        this._searchEventArgs = value;
    },


    // page size
    get_pageSize: function() {
        return this._pageSize;
    },

    set_pageSize: function(value) {
        this._pageSize = value;
    },

    // topic URL
    get_profileURL: function() {
        return this._profileURL;
    },

    set_profileURL: function(value) {
        this._profileURL = value;
    },

    // default number of user level blocks
    get_defaultNoOfBlocks: function() {
        return this._defaultNoOfBlocks;
    },

    set_defaultNoOfBlocks: function(value) {
        this._defaultNoOfBlocks = value;
    },

    // column span
    get_colSpan: function() {
        return this._colSpan;
    },

    set_colSpan: function(value) {
        this._colSpan = value;
    },

    // sector to display user card
    get_userCardSector: function() {
        return this._userCardSector;
    },

    set_userCardSector: function(value) {
        this._userCardSector = value;
    },

    // sub header text
    get_subHeader: function() {
        return this._subHeader;
    },

    set_subHeader: function(value) {
        this._subHeader = value;
    },


    // use a WS for initial population
    get_useWebService: function() {
        return this._useWebService;
    },

    set_useWebService: function(value) {
        this._useWebService = value;
    },

    // get enable emails
    get_emailMembers: function() {
        return this._emailMembers;
    },

    set_emailMembers: function(value) {
        this._emailMembers = value;
    },

    // ------------------------------------ methods   

    renderMemberListBasic: function() {

        var json = this.get_json();

        // ensure we have some data
        if (json != null) {

            // setup page level context object
            if (this._context == null) {
                this._context = new InstantForumContext(json);
                this._context.initialize();
            }

            // setup common controls
            if (this._commonUI == null) {
                this._commonUI = new InstantASPCommonUI(this._context.CurrentSettings.InstallImageFolderURL);
            }

            if (this._forumUI == null) {
                this._forumUI = new InstantForumUI(this._context.CurrentSettings.InstallImageFolderURL);
            }

            // setup user card object
            this._userCard = new InstantForumUserCard(this._element)
            this._userCard._json = this.get_json();
            this._userCard._emailMembers = this.get_emailMembers();
            this._userCard.initialize();

        }

        this._users = new InstantForumUsers(json)
        this._users.initialize();

        // setup json table object
        this._jsonTable.JSON = json;
        this._jsonTable.Host = this;
        this._jsonTable.BindData = this.selectMembers;
        this._jsonTable.useCols = true;
        this._jsonTable.OnColAdd = this.buildCol;
        this._jsonTable.OnHeaderRowAdd = this.buildHeaderRow;
        this._jsonTable.OnRowAdd = null;

        if (this.get_colSpan() != null) {
            this._jsonTable.noOfCols = this.get_colSpan();
        } else {
            this._jsonTable.noOfCols = this.getDynamicColSpan();
        }

        this._jsonTable.initalize();

        // add event to hide any active tooltips
        var ctl = this;
        addEvent(document.body, 'click', function() {
            if (ctl._userCard != null) {
                ctl._userCard.hideUserCard();
            }
        }
        );

        addEvent(window, 'resize', function() {
            if (ctl._userCard != null) {
                ctl._userCard.hideUserCard();
            }
        }
        );

        addEvent(document.body, 'mousemove', function(e) {
            if (ctl._userCard != null) {
                ctl._userCard.hideUserCardOnMouseOut(e);
            }
        }
        );



    },

    // ------------------------------------ data / service

    selectMembers: function(host) {

        if (host._users.UserCollection != null) {
            return host._users.UserCollection;
        }

    },

    // ------------------------------------ search event atgs

    get_searchArgsArray: function() {

        return this._searchArgsArray;

    },

    set_searchArgsInternalArray: function() {

        // get search event args
        var s = new InstantForumSearchEventArgs(this.get_searchEventArgs());
        s.initialize();

        // check for nulls
        if (s.Args.SortBy == null) {
            s.Args["SortBy"] = "LastLoginDate"
        }

        // populate local array
        this._searchArgsArray = s.Args;

    },

    set_searchArgsArray: function(newArr) {

        this._searchArgsArray = newArr;

    },

    // ------------------------------------ fecth data

    pageIndexChanged: function(pageIndex) {

        // update json table
        this.fetchData(pageIndex);

    },


    fetchData: function(pageIndex) {

        // ensure page index is valid
        //if (pageIndex <= 0) { pageIndex = 1; }

        // if json table is loading exit function, mozilla based browsers seem to
        // fire this event multiple times if you hit enter in a textbox to submit form posts
        if (this._jsonTable.loading == true) { return }

        // setup jason table        
        this.beginRequest();

        // convert search args to xml
        var strXML = "<root>" + ObjToXml(this._searchArgsArray) + "</root>";

        // create context to pass to onComplete, onError etc
        var arrUserContext = new Array();
        arrUserContext[0] = this._element.id;

        // get data & set async evetns
        var service = new InstantASP.InstantForum.UI.WebServices.Users();
        service.SelectUsersPaged(pageIndex, this.get_pageSize(), strXML, true, false, this.onComplete, this.onError, arrUserContext);

    },


    beginRequest: function() {

        this._jsonTable.clearTable();
        this._jsonTable.showLoader();

    },

    onComplete: function(returndata, userContext) {

        var ctl = $find(userContext[0]);
        ctl._json = returndata;
        ctl.renderMemberListBasic();


    },


    onError: function(error) {

        //alert("Error");

    },

    // ------------------------------------ build tabke tows

    buildHeaderRow: function(host) {

        var imgFolder = host._context.CurrentSettings.InstallImageFolderURL;
        var strImgAsc = "Misc_SortArrowAsc.gif";
        var strImgDesc = "Misc_SortArrowDesc.gif";

        // local vars
        var strCSS = "PanelBar_SubHeader"

        // ------------------- create row

        var row = document.createElement("TR");

        // ------------------- members

        var strSortColumn = "Username";
        var container = document.createElement("DIV");
        container.style[host._sfloat] = "left";
        container.style.width = "100%";

        // build left
        var left = document.createElement("DIV");
        left.style[host._sfloat] = "left";
        left.style.width = "48%";

        // topic title
        var hyp = document.createElement("A");
        hyp.id = "hypSort_" + strSortColumn
        //hyp.setAttribute('href', 'javascript: void(0)');

        if (host.get_subHeader() != null) {
            hyp.appendChild(document.createTextNode(host.get_subHeader()));
        } else {
            hyp.appendChild(document.createTextNode("Members"));
        }

        // add link to div
        left.appendChild(hyp);

        // sort img
        if (host._searchArgsArray.SortBy.toLowerCase().indexOf(strSortColumn.toLowerCase()) > -1) {

            var img = document.createElement("IMG");
            if (host._searchArgsArray.SortOrder == 1) { // desc
                img.src = imgFolder + strImgDesc;
                img.alt = iasp_sortDesc;
            } else {
                img.src = imgFolder + strImgAsc;
                img.alt = iasp_SortAsc;
            }

            // add sort image to div
            left.appendChild(img);

        }

        // build right
        var right = document.createElement("DIV");
        right.style[host._sfloat] = "right";
        right.style.textAlign = "right";
        right.style.width = "48%";

        // create refresh image
        var img1 = document.createElement("IMG");
        img1.src = imgFolder + "SmallRefresh.png";
        img1.alt = "Refresh";
        img1.style.verticalAlign = "middle";

        // create link
        var hyp1 = document.createElement("A");
        hyp1.setAttribute('href', "javascript: void(0);");
        hyp1.style.paddingRight = "3px";
        hyp1.style.marginTop = "-2px";
        hyp1.style.marginBottom = "-2px";
        hyp1.title = "Refresh";
        hyp1.appendChild(img1);

        var cid = host._element.id;

        // add click event to show menu
        addEvent(hyp1, 'click', function() {
            refreshControl(cid)
        }
        );

        // add link to right div
        right.appendChild(hyp1);

        // add layers to container
        container.appendChild(left);
        container.appendChild(right);

        var td = host._commonUI.buildTD(strCSS, null, null, container, host._jsonTable.noOfCols)
        row.appendChild(td);


        return row;


    },


    buildCol: function(host, data) {

        // local vars   
        var intCardSector = host.get_userCardSector();
        var installURL = host._context.CurrentSettings.InstallURL;
        var imgFolder = host._context.CurrentSettings.InstallImageFolderURL;
        var profileURL = installURL + host.get_profileURL().replace('0', data.UserID);

        // create photo image
        var img = document.createElement("IMG");
        if (data.PhotoImage != null && data.PhotoImage != "") {
            if (installURL.indexOf("http://") == -1 && installURL.indexOf("https://") == -1) {
                img.src = installURL + data.PhotoImage;
            } else {
                img.src = data.PhotoImage;
            }
        } else {
            img.src = imgFolder + "Misc_NoPhoto.gif";
            img.alt = "No member picture";
        }

        // create photo link        
        var hypPhoto = document.createElement("A");
        hypPhoto.setAttribute('href', profileURL);
        hypPhoto.appendChild(img);

        // add mouse over event
        addEvent(hypPhoto, 'mouseover', function() {
            host._userCard.showUserCard(data.UserID, intCardSector);
        }
        );

        // create photo div
        var div = host._userCard.buildPhotoWithCard(data.UserID, hypPhoto, intCardSector);
        div.style.marginLeft = "3px";
        div.style.marginTop = "6px";
        div.style.marginBottom = "6px";

        // create cell
        var td = host._commonUI.buildTD("SamllTxt", null, "center", div)
        td.style.padding = "3px";

        // return cell
        return td;


    },

    // ------------------------------------ helpers

    getTable: function() {

        var container = iasp_FindControl(this.get_element().id);
        var table = container.getElementsByTagName("TABLE")[0]

        if (!table) {
            alert("Could not locate HTML table to render JSON data");
        } else {
            table.id = "tbl_" + container.id;
        }

        return table;

    },

    getDynamicColSpan: function() {

        var intWidth = 1024;
        var intColSpan = 6;

        var currentSize = iasp_GetViewPortSize();

        if (currentSize[0] != null) {
            intWidth = parseInt(currentSize[0]);
        }

        if (intWidth <= 2000) { intColSpan = 6; }
        if (intWidth <= 1500) { intColSpan = 5; }
        if (intWidth <= 1100) { intColSpan = 4; }
        if (intWidth <= 930) { intColSpan = 3; }
        if (intWidth <= 700) { intColSpan = 2; }
        if (intWidth <= 500) { intColSpan = 1; }

        return intColSpan;

    },

    // ------------------------------------ initialize   

    // Overriden Methods
    initialize: function() {

        InstantASP.InstantForum.UI.Controls.MemberListBasic.callBaseMethod(this, 'initialize');

        this.__isInitialized = true;

        // add event  
        $addHandlers(this.get_element(), { 'click': this.onSortChanged }, this);

        if (document.all) {
            this._sfloat = "styleFloat"; //ie
        } else {
            this._sfloat = "cssFloat"; //ff
        }

        // setup loval search args array
        if (this.get_searchEventArgs() != null) {
            this.set_searchArgsInternalArray();
        }

        // render control      
        if (this.get_useWebService()) {
            this.fetchData(1);
        } else {
            this.renderMemberListBasic();
        }

//        var memberlist = this;
//        var resized = false;
//        addEvent(window, 'resize', function(e) {
//            setTimeout(function() {
//                if (resized == false) {
//                    memberlist.fetchData(1);
//                    resized = true;
//                }
//            }, 1000)
//            resized = false;
//        }
//        );

    },

    // ------------------------------------ events

    add_sortChanged: function(handler) {
        this.get_events().addHandler("sortChanged", handler);
    },

    remove_sortChanged: function(handler) {
        this.get_events().removeHandler("sortChanged", handler);
    },

    onSortChanged: function(source, e) {

        if (!this._events) return;

        var handler = this._events.getHandler("sortChanged");

        if (handler) {

            var ele = source.target;
            if (!ele) { return; }

            if (ele.id.toLowerCase().indexOf("hypsort_") > -1) {

                var strSortBy = ele.id.split("_")[1];
                var intSortOrder = this._searchArgsArray.SortOrder;

                // we are sorting a new column
                if (strSortBy != this._searchArgsArray.SortBy) {
                    intSortOrder = 1;
                } else {
                    // we are sorting an existing column          
                    if (intSortOrder == 1) {
                        intSortOrder = 2;
                    } else {
                        intSortOrder = 1;
                    }

                }



                if (this._searchArgsArray.SortBy != null) {
                    this._searchArgsArray.SortBy = strSortBy;
                    this._searchArgsArray.SortOrder = intSortOrder;
                }

                if (ele != null && ele != 'undefined') {

                    handler(1);

                }
            }

        }

    },

    // ------------------------------------ dispose

    dispose: function() {

        $clearHandlers(this.get_element());

        InstantASP.InstantForum.UI.Controls.MemberListBasic.callBaseMethod(this, 'dispose');

    }

}

InstantASP.InstantForum.UI.Controls.MemberListBasic.registerClass('InstantASP.InstantForum.UI.Controls.MemberListBasic', Sys.UI.Control);

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();