;
/*
 * jQuery 1.2.5 - New Wave Javascript
 *
 * Copyright (c) 2008 John Resig (jquery.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2008-05-20 23:14:54 -0400 (Tue, 20 May 2008) $
 * $Rev: 5651 $
 */
(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.5",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
return(this[0].value||"").replace(/\r/g,"");}return undefined;}return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
this.value=value;});},html:function(value){return value==undefined?(this.length?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script")){scripts=scripts.add(elem);}else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(notxml&&!special&&name in elem){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);if(msie&&special&&notxml)return elem.getAttribute(name,2);return elem.getAttribute(name);}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();;
Function.__typeName = 'Function';
Function.__class = true;

Function.createDelegate = function Function$createDelegate(instance, method) {
	return function() {
		return method.apply(instance, arguments);
	}
}

window.Type = Function;
Type.__fullyQualifiedIdentifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i");
Type.__identifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i");

Type.prototype.callBaseMethod = function Type$callBaseMethod(instance, name, baseArguments)
{
	var baseMethod = this.getBaseMethod(instance, name);
	if (!baseMethod) throw "methodNotFound:"+name;
	if (!baseArguments)
		return baseMethod.apply(instance);
	else
		return baseMethod.apply(instance, baseArguments);
}

Type.prototype.getBaseMethod = function Type$getBaseMethod(instance, name)
{
	var baseType = this.getBaseType();
	if (baseType)
	{
		var baseMethod = baseType.prototype[name];
		return (baseMethod instanceof Function) ? baseMethod : null;
	}

	return null;
}

Type.prototype.getBaseType = function Type$getBaseType()
{
	return (typeof(this.__baseType) === "undefined") ? null : this.__baseType;
}

Type.prototype.getName = function Type$getName()
{
	return (typeof(this.__typeName) === "undefined") ? "" : this.__typeName;
}

Type.prototype.inheritsFrom = function Type$inheritsFrom(parentType)
{
	this.resolveInheritance();
	var baseType = this.__baseType;
	while (baseType)
	{
		if (baseType === parentType)
			return true;
		baseType = baseType.__baseType;
	}

	return false;
}

Type.prototype.initializeBase = function Type$initializeBase(instance, baseArguments)
{
	this.resolveInheritance();
	
	if (this.__baseType)
	{
		if (!baseArguments)
			this.__baseType.apply(instance);
		else
			this.__baseType.apply(instance, baseArguments);
	}

	return instance;
}

Type.prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes)
{
	if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw "notATypeName";
	var parsedName;
	try {parsedName = eval(typeName);}
	catch(e) {throw "Sys.Res.argumentTypeName";}
	
	if (parsedName !== this) throw "badTypeName";
	if (Sys.__registeredTypes[typeName]) throw "typeRegisteredTwice";

	if ((arguments.length > 1) && (typeof(baseType) === 'undefined')) throw "argumentUndefined";
	if (baseType && !baseType.__class) throw "Sys.Res.baseNotAClass";

	this.prototype.constructor = this;
	this.__typeName = typeName;
	this.__class = true;
	if (baseType)
	{
		this.__baseType = baseType;
		this.__basePrototypePending = true;
	}
	
	Sys.__upperCaseTypes[typeName.toUpperCase()] = this;
	Sys.__registeredTypes[typeName] = true;

	return this;
}

Type.prototype.resolveInheritance = function Type$resolveInheritance()
{
	if (this.__basePrototypePending)
	{
		var baseType = this.__baseType;

		baseType.resolveInheritance();

		for (var memberName in baseType.prototype)
		{
			var memberValue = baseType.prototype[memberName];
			if (!this.prototype[memberName])
				this.prototype[memberName] = memberValue;
		}
		delete this.__basePrototypePending;
	}
}
Type.isClass = function Type$isClass(type)
{
	if ((typeof(type) === 'undefined') || (type === null)) return false;
	return !!type.__class;
}

Type.isNamespace = function Type$isNamespace(object)
{
	if ((typeof(object) === 'undefined') || (object === null)) return false;
	return !!object.__namespace;
}

Type.registerNamespace = function Type$registerNamespace(namespacePath)
{
	var rootObject = window;
	var namespaceParts = namespacePath.split('.');

	for (var i = 0; i < namespaceParts.length; i++) {
		var currentPart = namespaceParts[i];
		var ns = rootObject[currentPart];
		if (ns && !ns.__namespace)
			throw namespacePath;
		if (!ns) {
			ns = rootObject[currentPart] = {
				__namespace: true,
				__typeName: namespaceParts.slice(0, i + 1).join('.')
				};
			var parsedName;
			try {
				parsedName = eval(ns.__typeName);
			}
			catch(e) {
				parsedName = null;
			}
			if (parsedName !== ns) {
				delete rootObject[currentPart];
				throw currentPart;
			}
			ns.getName = function ns$getName() {return this.__typeName;}
		}
		rootObject = ns;
	}
}

Array.__typeName = 'Array';
Array.__class = true;

Array.add = Array.enqueue = function Array$enqueue(array, item) {
	array[array.length] = item;
}
Array.clone = function Array$clone(array) {
	if (array.length === 1) return [array[0]];
	else return Array.apply(null, array);
}
Array.remove = function Array$remove(array, item) {
	 var index = Array.indexOf(array, item);
	 if (index >= 0) array.splice(index, 1);
	 return (index >= 0);
}

Array.indexOf = function Array$indexOf(array, item, start)
{
	if (typeof(item) === "undefined") return -1;
	var length = array.length;
	if (length !== 0)
	{
		start = start - 0;
		if (isNaN(start))
			start = 0;
		else
		{
			if (isFinite(start)) start = start - (start % 1);
			if (start < 0) start = Math.max(0, length + start);
		}
		for (var i = start; i < length; i++)
		{
			if ((typeof(array[i]) !== "undefined") && (array[i] === item)) return i;
		}
	}
	return -1;
}

window.Sys = {
	__namespace: true,
	__typeName: "Sys",
	getName: function() {return "Sys";},
	__upperCaseTypes: {}
};
Sys.__rootNamespaces = [Sys];
Sys.__registeredTypes = {};


Sys.EventHandlerList = function Sys$EventHandlerList() {
	this._list = {};
}
function Sys$EventHandlerList$addHandler(id, handler)
{
	Array.add(this._getEvent(id, true), handler);
}
function Sys$EventHandlerList$removeHandler(id, handler)
{
	var evt = this._getEvent(id);
	if (!evt) return;
	Array.remove(evt, handler);
}
function Sys$EventHandlerList$getHandler(id)
{
	var evt = this._getEvent(id);
	if (!evt || (evt.length === 0)) return null;
	evt = Array.clone(evt);
	return function(source, args) {
		for (var i = 0, l = evt.length; i < l; i++) {
			evt[i](source, args);
		}
	};
}
function Sys$EventHandlerList$_getEvent(id, create)
{
	if (!this._list[id]) {
		if (!create) return null;
		this._list[id] = [];
	}
	return this._list[id];
}

Sys.EventHandlerList.prototype=
{
	addHandler: Sys$EventHandlerList$addHandler,
	removeHandler: Sys$EventHandlerList$removeHandler,
	getHandler: Sys$EventHandlerList$getHandler,
	_getEvent: Sys$EventHandlerList$_getEvent
}
Sys.EventHandlerList.registerClass("Sys.EventHandlerList");

Object.__typeName = 'Object';
Object.__class = true;

Object.getType = function Object$getType(instance) {
	var ctor = instance.constructor;
	if (!ctor || (typeof(ctor) !== "function") || !ctor.__typeName || (ctor.__typeName === 'Object'))
		return Object;
	return ctor;
}
;
Type.registerNamespace("MyVi.Instance.Localization.PublicList");MyVi.Instance.Localization.PublicList.UploadDate="Добавлен&nbsp;&nbsp;";MyVi.Instance.Localization.PublicList.AuthorName="Автор:&nbsp;&nbsp;";MyVi.Instance.Localization.PublicList.ViewsCnt="Просмотров:&nbsp;&nbsp;";MyVi.Instance.Localization.PublicList.Page="Страница";;
///<reference path="~/_common/main.js" />

Type.registerNamespace("MyVi.Instance");
MyVi.Instance.Iterators = {};
MyVi.Instance.Controls = {};


Type.registerNamespace("MyVi.Client.Utils");
MyVi.Client.Utils.ParseQueryString = function (url)
{
	var rval = {};
	if(!url) url = document.URL;
	var qsStart = url.indexOf('?');
	if (qsStart !== -1)
	{
		var queryString = url.substr(qsStart+1, url.length-qsStart-1);
		var params = queryString.split('&');
		for(var i=0;i<params.length;i++)
		{
			var parts = params[i].split('=');
			rval[parts[0]] = parts.length>1?parts[1]:undefined;
		}
	}
	
	return rval;
}
MyVi.Client.Utils.CreateQueryString = function (query_params, url)
{
	var rval = "";
	if(!url) url = document.URL;
	var qsStart = url.indexOf('?');
	if (qsStart !== -1) url = url.substr(0, qsStart);
	rval = url;
	var sep = '?';
	for(it1 in query_params)
	{
		rval = rval + sep + it1;
		if(query_params[it1]) rval = rval + '=' + query_params[it1];
		sep = '&';
	}
	return rval;
}
MyVi.Client.Utils.ExcludeQueryParams = function(query_params,exclude_params)
{
	var rval = {};
	
	for(it1 in query_params)
	{
		var paramName = it1.toLowerCase();
		for (it2 in exclude_params)
			if(it2.toLowerCase() != paramName) rval[it1] = query_params[it1];
	}
	
	return rval;
}

MyVi.Client.Utils.TemplateIDCounter = 0;

MyVi.Client.Utils.CreateNewTemplateID = function()
{
    return MyVi.Client.Utils.TemplateIDCounter++;   
}

Type.registerNamespace("MyVi.Client.Controls");


//BaseControl class
MyVi.Client.Controls.BaseControl = function(data) {
	for (val in data) {
		if (val.charAt(0) != "_" && !(data[val] instanceof Function))
			this[val] = data[val];
	}
}
function MyVi$Client$Controls$BaseControl$get_events()
{
	if (!this._events)
		this._events = new Sys.EventHandlerList();
	return this._events;
}
MyVi.Client.Controls.BaseControl.prototype = 
{
	get_events:MyVi$Client$Controls$BaseControl$get_events,
	GetObject:function(data_context)
	{
		var rval = undefined;
		if(typeof(data_context)=="string")
		{
			var startChar = data_context.charAt(0);
			try
			{
				if(startChar=='.')
					data_context = "MyVi.Instance.Controls"+data_context;
					
				if(startChar=='#')
					rval = jQuery(data_context);
				else
					rval = eval(data_context);
			}
			catch(e)
			{
			}
		}
		else rval = data_context;
		
		return rval;
	}
}
MyVi.Client.Controls.BaseControl.registerClass("MyVi.Client.Controls.BaseControl");


//BaseBindings class
MyVi.Client.Controls.BaseBindings = function(data)
{
	MyVi.Client.Controls.BaseBindings.initializeBase(this,[data]);
	if(this.Bindings!=null)
	{
		var bindings = this.Bindings;
		this.Bindings = null;
		for(var i=0;i<bindings.length;i++)
			this.AddBinding(bindings[i]);
	}
};
MyVi.Client.Controls.BaseBindings.prototype =
{
    _isBindingInitialize: false,
    Bindings: null,
    AddBinding: function(binding) {
        if (this.Bindings == null)
            this.Bindings = new Array();

        if (!Object.getType(binding).inheritsFrom(MyVi.Client.Controls.Binding))
            binding = new MyVi.Client.Controls.Binding(binding);

        this.Bindings.push(binding);

        if (this._isBindingInitialize) this._InitializeBinding(binding);
    },
    DataBind: function() {
        var rval = { _error: false, _exceptions: new Array() };
        this.BeforeBindings();

        if (this.Bindings != null) {
            for (var i = 0; i < this.Bindings.length; i++) {
                var binding = this.Bindings[i];
                try { binding.ExecuteBinding(this); }
                catch (ex) { rval._error = true; rval._exceptions.push(ex); }
            }
        }
        this.EndExecuteBindings(rval);
    },
    BeginExecuteBindings: function(callback) {
        var lastBindings = {};
        var rval = { _error: false, _exceptions: undefined };
        var target = this;
        var bind = function(n, i, bindings) {
            var binding = bindings[i];
            var lastData = typeof (binding.DataContext) == "string" ? lastBindings[binding.DataContext] : undefined;
            if (lastData == undefined) {
                binding.BeginExecuteBinding(target, function(async_result) {
                    if (typeof (binding.DataContext) == "string")
                        lastBindings[binding.DataContext] = async_result;
                    try { binding.EndExecuteBinding(async_result); }
                    catch (ex) { rval._error = true; rval._exceptions = ex; }
                    n(bind, i + 1, bindings);
                });
            }
            else {
                try { binding.EndExecuteBinding(lastData); }
                catch (ex) { rval._error = true; rval._exceptions = ex; }
                n(bind, i + 1, bindings);
            }
        };
        var next = function(b, i, bindings) {
            if (i < bindings.length)
                b(next, i, bindings);
            else {
                target.AfterBindings();
                callback(rval);
            }
        };

        this.BeforeBindings();

        if (this.Bindings != null)
            next(bind, 0, this.Bindings);
        else
            callback(rval);

        return rval;
    },
    EndExecuteBindings: function(async_result) {
        if (async_result._error)
            throw async_result._exceptions;
    },
    BeforeBindings: function() {
        this._InitializeBindings();
    },
    AfterBindings: function() {
    },
    SetDefaultDataContext: function(default_data_context) {
        if (this.Bindings != null) {
            for (var i = 0; i < this.Bindings.length; i++) {
                this.Bindings[i].SetDefaultDataContext(default_data_context);
            }
        }
    },
    OnDataChanged: function(sender, args) {
        this.DataBind();
    },
    _InitializeBinding: function(binding) {
        var srcObject = binding.GetObject(binding.GetDataContext());
        if (Object.getType(srcObject).inheritsFrom(MyVi.Client.Controls.BaseDataView))
            srcObject.AddSubscriber(this);
    },
    _InitializeBindings: function() {
        if (!this._isBindingInitialize) {
            for (it in this.Bindings) {
                if (!(this.Bindings[it] instanceof Function))
                    this._InitializeBinding(this.Bindings[it]);
            }
            this._isBindingInitialize = true;
        }
    }
};
MyVi.Client.Controls.BaseBindings.registerClass("MyVi.Client.Controls.BaseBindings",MyVi.Client.Controls.BaseControl);


//Binding class
MyVi.Client.Controls.Binding = function(data)
{
	this.DSParams = {};
	MyVi.Client.Controls.Binding.initializeBase(this,[data]);
};
MyVi.Client.Controls.Binding.prototype =
{
	_defaultDataContext:null,
	DSParams:null,
	DataContext:null,
	DataPath:null,
	Property:null,
	PropertyKey:null,
	GetDataContext:function()
	{
		return this.DataContext!=null?this.DataContext:this._defaultDataContext;
	},
	SetDefaultDataContext:function(default_data_context)
	{
		this._defaultDataContext=default_data_context;
	},
	ExecuteBinding:function(target)
	{
		try
		{
			this.DataBind();
			var srcObject = this.GetObject(this.GetDataContext());
			if(Object.getType(srcObject).inheritsFrom(MyVi.Client.Controls.BaseDataSource))
				throw "Can't ExecuteBinding for 'MyVi.Client.Controls.BaseDataSource' DataContext type";
			this.EndExecuteBinding({_data:srcObject, _target:target, _exception:null});
		}
		catch(ex)
		{
			this.EndExecuteBinding({_data:null, _target:target, _exception:ex});
		}
		
	},
	BeginExecuteBinding:function(target, callback)
	{
		var rval = {_data:null, _target:target, _exception:null};
		try
		{
			this.DataBind();
			var srcObject = this.GetObject(this.GetDataContext());
			
			if(Object.getType(srcObject).inheritsFrom(MyVi.Client.Controls.BaseDataSource))
			{
				srcObject.BeginExecuteSelect(function(async_result)
				{
					try{ rval._data = srcObject.EndExecuteSelect(async_result); }
					catch(ex){ rval._exception = ex; }
					callback(rval);
				}, this.DSParams);
			}
			else
			{
				rval._data = srcObject;
				callback(rval);
			}
		}
		catch(ex)
		{
			rval._exception = ex;
			callback(rval);
		}
		
		return rval;
	},
	EndExecuteBinding:function(async_result)
	{
		var path = this.DataPath!=null?this.DataPath.split("."):[];
		var i;
		var dataContext;
		var srcObject = async_result._data;
		var target = async_result._target;
		
		if(async_result._exception!=null)
			throw async_result._exception;
		
		if(srcObject.jquery!=null)
		{
			var domElArr = srcObject.get();
			if(domElArr.length == 1) dataContext = domElArr[0];
		}
		else
			dataContext = srcObject;
		
		for(i=0;i<path.length;i++)
			dataContext = dataContext[path[i]];
		
		var propertyName = this.Property;
		if(this.PropertyKey!=null)
		{
			target = target[this.Property];
			propertyName = this.PropertyKey;
		}
		
		target[propertyName]=dataContext;
	}
};
MyVi.Client.Controls.Binding.registerClass("MyVi.Client.Controls.Binding",MyVi.Client.Controls.BaseBindings);


//BaseDataBoundControl class
MyVi.Client.Controls.BaseDataBoundControl = function (data)
{
	MyVi.Client.Controls.BaseDataBoundControl.initializeBase(this,[data]);
	
	var target = this;
	if(this.AutoBind)
		jQuery(document).ready(function()
		{
			if(!target._isDataBinding)
				target.DataBind();
		});
	
}

MyVi.Client.Controls.BaseDataBoundControl.prototype = 
{
	Id:"",
	ItemsData:null,
	LayoutData:null,
	AutoBind:false,
	_isDataBinding:false,
	_errorData:null,
	DataBind:function()
	{
		this._isDataBinding = true;
		this._errorData = null;
		var target = this;
		this.BeginExecuteBindings(function(async_result)
		{
			try{target.EndExecuteBindings(async_result);}
			catch(ex){target._errorData=ex};
			target.PerformDataBinding(target._errorData!=null?target._errorData:target.ItemsData);
			target.CreateChildControl();
		});
	},
	PerformDataBinding:function(data)
	{
	},
	ClearChildControls:function()
	{
		jQuery(this.Id).empty();
	},
	CreateChildControl:function()
	{
	}
}
MyVi.Client.Controls.BaseDataBoundControl.registerClass("MyVi.Client.Controls.BaseDataBoundControl", MyVi.Client.Controls.BaseBindings);


//BaseDataSource class
MyVi.Client.Controls.BaseDataSource = function (data)
{
	this.Parameters = {};
	MyVi.Client.Controls.BaseDataSource.initializeBase(this,[data]);
	
};
MyVi.Client.Controls.BaseDataSource.prototype =
{
	Parameters:null,
	BeginExecuteSelect:function(callback, data_source_params)
	{
		var target = this;
		var rval = {_data:undefined, _exception:null};
		
		if(data_source_params)
		{
			for(it in data_source_params)
				this.Parameters[it] = data_source_params[it];
		}
		
		this.BeginExecuteBindings(function(async_result)
		{
			try { target.EndExecuteBindings(async_result); }
			catch (ex) { rval._exception = ex; };
			if(rval._exception!=null)
				callback(rval);
			else
				target._ExecuteSelect(rval, callback);
		});
		
		return rval;
	},
	EndExecuteSelect:function(async_result)
	{
		if(async_result._data!=null && async_result._data.isAPIException)
			throw async_result._data;
		if(async_result._exception!=null)
			throw async_result._exception;
		return async_result._data;
	},
	_ExecuteSelect:function(return_value, callback)
	{
		throw "Not Implemented";
	}
}
MyVi.Client.Controls.BaseDataSource.GetRequestURL = function(template,params)
{
	var rval = template;
	for(paramName in params)
	{
		rval = "";
		var parts = template.split("{"+paramName+"}");
		var i = 0;
		for(;i<parts.length;i++)
		{
		    if (i > 0) rval += encodeURI(params[paramName]);
			rval += parts[i];
		}
		template = rval;
	}
	return rval;
}
MyVi.Client.Controls.BaseDataSource.registerClass("MyVi.Client.Controls.BaseDataSource", MyVi.Client.Controls.BaseBindings);


//BaseDataView class
MyVi.Client.Controls.BaseDataView = function (data)
{
	this._onDataChangeSubcribers = [];
	this._onExecuteSelectSubscribers = [];
	MyVi.Client.Controls.BaseDataView.initializeBase(this,[data]);
}
MyVi.Client.Controls.BaseDataView.prototype =
{
    _exception: null,
    _isExecuteSelect: false,
    Data: null,
    Paging: { PageSize: 10, PageNum: 1 },
    QueryStringField: undefined,
    _onDataChangeSubcribers: null,
    _onExecuteSelectSubscribers: null,
    add_ChangeDataEvent: function(delegate) {
        this.get_events().addHandler("OnChangeData", delegate);
    },
    DataBind: function() {
        var target = this;
        this._isExecuteSelect = true;
        this.Data = {};
        this._exception = null;

        if (this.QueryStringField) this.InitializeFromQuery(MyVi.Client.Utils.ParseQueryString());

        rval = MyVi.Client.Controls.BaseDataView.callBaseMethod(this, "BeginExecuteSelect", [function(async_result) {
            try { target.EndExecuteSelect(async_result); }
            catch (ex) { target._exception = ex; };
            target._isExecuteSelect = false;
            for (it in target._onExecuteSelectSubscribers) {
                var delegate = target._onExecuteSelectSubscribers[it];
                try {
                    if (delegate instanceof Function)
                        delegate(target, async_result);
                } catch (e) {
                }
            };
            target._onExecuteSelectSubscribers = [];
        }, undefined]);
    },
    BeginExecuteSelect: function(callback, data_source_params) {
        var target = this;
        var rval = { _data: this, _exception: this._exception };
        var call = callback;
        if (this._isExecuteSelect || this.Data == null) {
            var delegate = function(sender, args) {
                if (args._exception == null) {
                    args._data = target;
                    call(args);
                }
                else
                    call(args);
            };
            this._onExecuteSelectSubscribers.push(delegate);
        }
        else if (rval._exception == null)
            this._ExecuteSelect(rval, callback);
        else callback(rval);

        return rval;
    },
    _ExecuteSelect: function(return_value, call_back) {
        return_value._data = this;
        call_back(return_value);
    },
    ChangeData: function() {
        var target = this;
        this._isExecuteSelect = true;
        this.Data = {};
        this._exception = null;
        rval = MyVi.Client.Controls.BaseDataView.callBaseMethod(this, "BeginExecuteSelect", [function(async_result) {
            try { target.EndExecuteSelect(async_result); }
            catch (ex) { target._exception = ex; };
            target._isExecuteSelect = false;
            target.get_events().getHandler("OnChangeData")(target, target);
        }, undefined]);
    },
    SetQueryParam: function(query_param, param_name, param_value) {
        var prefix = this.QueryStringField ? this.QueryStringField : "";
        query_param[prefix + param_name] = param_value;
    },
    SetQueryParams: function(query_params) {
        this.SetQueryParam(query_params, "pn", this.Paging.PageNum);
    },
    InitializeFromQuery: function(query_params) {
        var pagenum = query_params[this.QueryStringField + "pn"];
        if (pagenum) this.Paging.PageNum = pagenum;
    },
    GetGoPageUrl: function(page_num, base_url) {
        throw "Not Implemented";
    },
    GetGoPageEventHandler: function(page_num) {
        throw "Not Implemented";
    },
    AddSubscriber: function(subscriber) {
        if (Object.getType(subscriber).inheritsFrom(MyVi.Client.Controls.BaseBindings)) {
            if (Array.indexOf(this._onDataChangeSubcribers, subscriber, 0) == -1) {
                Array.add(this._onDataChangeSubcribers, subscriber);
                this.add_ChangeDataEvent(Function.createDelegate(subscriber, subscriber.OnDataChanged));
            }
        }
    }
}
MyVi.Client.Controls.BaseDataView.registerClass("MyVi.Client.Controls.BaseDataView", MyVi.Client.Controls.BaseDataSource);


//Element class
MyVi.Client.Controls.Element = function(data)
{
	MyVi.Client.Controls.Element.initializeBase(this,[data]);
}
MyVi.Client.Controls.Element.prototype =
{
	Id: undefined,
	GetMapList: function()
	{
		return {};
	},
	MapDataToElement: function(dst_container)
	{
		var element = jQuery(this.Id, dst_container);
		var target = this;
		if (element != null)
		{
			element.each(function()
			{
				var map = target.GetMapList();
				var map2 = new Object();
				for (val in map)
				{
					if (!(target[val] instanceof Function) && target[val] != null && target[val] != undefined)
					{
						if (map[val] != "innerHTML") this[map[val]] = target[val];
						else map2[val] = map[val];
					}
				}
				for (val in map2)
				{
					if (!(target[val] instanceof Function) && target[val] != null && target[val] != undefined)
						this[map2[val]] = target[val];
				}
			});
		}
	}
}
MyVi.Client.Controls.Element.registerClass("MyVi.Client.Controls.Element",MyVi.Client.Controls.BaseBindings);


//Literal class
MyVi.Client.Controls.Literal = function(data)
{
	MyVi.Client.Controls.Literal.initializeBase(this,[data]);
}
MyVi.Client.Controls.Literal.prototype =
{
    Text: undefined,
    SomeFunc: undefined,
    WBRLimit: null,
    MapDataToElement: function(dst_container) {
        if (this.Text) {
                jQuery(jQuery(dst_container)).append(this.Text);
        }
    }
}
MyVi.Client.Controls.Literal.registerClass("MyVi.Client.Controls.Literal",MyVi.Client.Controls.Element);

//Option class
MyVi.Client.Controls.Option = function(data)
{
	MyVi.Client.Controls.Option.initializeBase(this,[data]);
}
MyVi.Client.Controls.Option.prototype = 
{
    Text:undefined,
    Value:undefined,
	MapDataToElement:function(dst_container)
	{
	    if(this.Text)
		    jQuery(jQuery(dst_container)).append(this.Text);
		    
	    if(this.Value)
		    jQuery(jQuery(dst_container)).attr("value", this.Value);
		    
	}
}
MyVi.Client.Controls.Option.registerClass("MyVi.Client.Controls.Option",MyVi.Client.Controls.Element);

function InsertWBRTag(src, max_length) {
    var s = "";
    var rval = "";
    var arr = src.split(" ");
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].length > max_length) {
            s = arr[i];
            do {
                rval += s.substr(0, max_length).replace(/&/g, "&amp;");
                rval += "&&";
                s = s.substr(max_length);
            } while (s.length > max_length);
            rval += s.replace(/&/g, "&amp;");
        } else {
            rval += arr[i].replace(/&/g, "&amp;");
        }
        rval += " ";
    }
    rval = rval.substr(0, rval.length - 1);
    return rval.replace(/</g, "&lt;").replace(/&&/g, "<wbr/>");
}

//Label class
MyVi.Client.Controls.Label = function(data)
{
	MyVi.Client.Controls.Label.initializeBase(this,[data]);
}
MyVi.Client.Controls.Label._mapList = null;
MyVi.Client.Controls.Label.prototype =
{
    TextLimit: null,
    WBRLength: null,
    GetMapList: function() {
        var rval = MyVi.Client.Controls.Label._mapList;
        if (rval == null) {
            rval = new MyVi.Client.Controls.BaseControl(MyVi.Client.Controls.Label.callBaseMethod(this, "GetMapList"));
            rval.text = "innerHTML";
            MyVi.Client.Controls.Label._mapList = rval;
        }

        return rval;
    },
    MapDataToElement: function(dst_container) {
        if (this.text) {
            var element = jQuery(this.Id, dst_container);
            if (this.TextLimit != null && Number(this.TextLimit) != Number.NaN && Number(this.TextLimit) > 3 && String(this.text).length > Number(this.TextLimit) - 3)
                this.text = String(this.text).substring(0, Number(this.TextLimit) - 3) + "...";
            if (this.WBRLength != null) //todo:какие проверки?
                this.text = InsertWBRTag(this.text, this.WBRLength);
        }
        MyVi.Client.Controls.Label.callBaseMethod(this, "MapDataToElement", [dst_container]);
    }
}
MyVi.Client.Controls.Label.registerClass("MyVi.Client.Controls.Label",MyVi.Client.Controls.Element);


//SimpleCreate class
MyVi.Client.Controls.SimpleCreate = function(data) {
    MyVi.Client.Controls.SimpleCreate.initializeBase(this, [data]);
}
MyVi.Client.Controls.SimpleCreate.prototype =
{
    Data: undefined,
    Create: undefined,
    MapDataToElement: function(dst_container) {
        if (this.Data && this.Create)
            this.Create(jQuery(this.Id, dst_container), this.Data);
    }
}
MyVi.Client.Controls.SimpleCreate.registerClass("MyVi.Client.Controls.SimpleCreate", MyVi.Client.Controls.Element);

MyVi.Client.Controls.Image = function(data)
{
	MyVi.Client.Controls.Image.initializeBase(this,[data]);
}
MyVi.Client.Controls.Image._mapList = null;
MyVi.Client.Controls.Image.prototype =
{
	GetMapList: function() {
		var rval = MyVi.Client.Controls.Image._mapList;
		if (rval == null) {
			rval = new MyVi.Client.Controls.BaseControl(MyVi.Client.Controls.Image.callBaseMethod(this, "GetMapList"));
			rval.url = "src";
			MyVi.Client.Controls.Image._mapList = rval;
		}

		return rval;
	},
	MapDataToElement: function(dst_container) {
		if (this.title) {
			var element = jQuery(this.Id, dst_container);
			element.attr("alt", this.title);
			element.attr("title", this.title);
		}

		MyVi.Client.Controls.Image.callBaseMethod(this, "MapDataToElement", [dst_container]);
	}
}
MyVi.Client.Controls.Image.registerClass("MyVi.Client.Controls.Image",MyVi.Client.Controls.Element);


//JavascriptExecuter
MyVi.Client.Controls.JavascriptExecuter = function(data)
{
	MyVi.Client.Controls.JavascriptExecuter.initializeBase(this,[data]);
}
MyVi.Client.Controls.JavascriptExecuter._mapList = null;
MyVi.Client.Controls.JavascriptExecuter.prototype = 
{
	GetMapList:function()
	{
		var rval = MyVi.Client.Controls.JavascriptExecuter._mapList;
		if(rval==null)
		{
			rval = new MyVi.Client.Controls.BaseControl(MyVi.Client.Controls.JavascriptExecuter.callBaseMethod(this,"GetMapList"));
			MyVi.Client.Controls.JavascriptExecuter._mapList = rval;
		}
		
		return rval;
	},
	MapDataToElement:function(dst_container)
	{
		var element = jQuery(this.Id, dst_container);
		//element.attr("alt",this.title);
		//element.attr("title",this.title);
			
		MyVi.Client.Controls.JavascriptExecuter.callBaseMethod(this,"MapDataToElement",[dst_container]);
	}
}
MyVi.Client.Controls.JavascriptExecuter.registerClass("MyVi.Client.Controls.JavascriptExecuter",MyVi.Client.Controls.Element);


//Link class
MyVi.Client.Controls.Link = function(data) {
	MyVi.Client.Controls.Link.initializeBase(this, [data]);
	if (data.click instanceof Function)
		this.click = data.click;
}
MyVi.Client.Controls.Link._mapList = null;
MyVi.Client.Controls.Link.prototype =
{
	TemplateUrl: undefined,
	TemplateParams: undefined,
	GetMapList: function() {
		var rval = MyVi.Client.Controls.Link._mapList;
		if (rval == null) {
			rval = new MyVi.Client.Controls.BaseControl(MyVi.Client.Controls.Link.callBaseMethod(this, "GetMapList"));
			rval.url = "href";
			rval.title = "title";
			MyVi.Client.Controls.Link._mapList = rval;
		}

		return rval;
	},
	MapDataToElement: function(dst_container) {
		if (!this.url && this.TemplateUrl) {
			//alert("this.TemplateUrl - " + this.TemplateUrl);
			this.url = MyVi.Client.Controls.BaseDataSource.GetRequestURL(this.TemplateUrl, this.TemplateParams);
			//alert("this.url - " + this.url);
		}
		else if (!this.url) this.url = "javascript:";
		if (this.enabled == false) this.url = null;

		var element = jQuery(this.Id, dst_container);
		if (this.click instanceof Function && element.jquery != null && !(this.enabled == false))
			element.bind("click", new MyVi.Client.Controls.Link(this), this.click);
		else {
			if (this.enabled == false) {
				element.replaceWith("<span id='" + element.attr("id") + "'>" + element.html() + "</span>");
			}
		}
		MyVi.Client.Controls.Link.callBaseMethod(this, "MapDataToElement", [dst_container]);

		if (this.TemplateUrl) this.url = undefined;
	}
}
MyVi.Client.Controls.Link.registerClass("MyVi.Client.Controls.Link",MyVi.Client.Controls.Label);


//CheckBox class
MyVi.Client.Controls.CheckBox = function(data)
{
	MyVi.Client.Controls.CheckBox.initializeBase(this, [data]);
}
MyVi.Client.Controls.CheckBox._mapList = null;
MyVi.Client.Controls.CheckBox.prototype =
{
	GetMapList: function()
	{
		var rval = MyVi.Client.Controls.CheckBox._mapList;
		if (rval == null)
		{
			rval = new MyVi.Client.Controls.BaseControl(MyVi.Client.Controls.CheckBox.callBaseMethod(this, "GetMapList"));
			rval.name = "name";
			rval.type = "type";
			rval.value = "value";
			rval.checked = "checked";
			MyVi.Client.Controls.CheckBox._mapList = rval;
		}

		return rval;
	},
	MapDataToElement: function(dst_container)
	{
		if (!this.type) this.type = "checkbox";
		//if (this.enabled == false) this.url = "";

		//var element = jQuery(this.Id, dst_container);
		//if (this.click instanceof Function && element.jquery != null && !(this.enabled == false))
		//	element.bind("click", this.click);

		MyVi.Client.Controls.CheckBox.callBaseMethod(this, "MapDataToElement", [dst_container]);
	}
}
MyVi.Client.Controls.CheckBox.registerClass("MyVi.Client.Controls.CheckBox", MyVi.Client.Controls.Element);


//Flash class
MyVi.Client.Controls.Flash = function(data)
{
	MyVi.Client.Controls.Flash.initializeBase(this,[data]);
}
MyVi.Client.Controls.Flash._mapList = null;
MyVi.Client.Controls.Flash.prototype = 
{
	GetMapList:function()
	{
		var rval = MyVi.Client.Controls.Flash._mapList;
		if(rval==null)
		{		    
			rval = new MyVi.Client.Controls.BaseControl(MyVi.Client.Controls.Flash.callBaseMethod(this,"GetMapList"));
		}
		
		return rval;
	},
	MapDataToElement:function(dst_container)
	{
		var element = jQuery(this.Id, dst_container);
		
		MyVi.Client.Controls.Flash.callBaseMethod(this,"MapDataToElement",[dst_container]);
		
		element.after("<object id='"+ element.attr("id") +"' width='450' height='380'>" + 
			"<param name='movie' value='" + this.playerUrl + "'>" + 
			"<embed type='application/x-shockwave-flash'" + 
				"src='" + this.playerUrl + "' width='450' height='380'" +
				"allowfullscreen='true' quality='high' wmode='window'" +
				"bgcolor='#ffffff' />" + 
			"<noembed>" + 
			"</noembed>" + 
		"</object>");		
		element.remove();
	}
}
MyVi.Client.Controls.Flash.registerClass("MyVi.Client.Controls.Flash",MyVi.Client.Controls.Element);

//FlashVix class

MyVi.Client.Controls.FlashVix = function(data) {
MyVi.Client.Controls.FlashVix.initializeBase(this, [data]);
}
MyVi.Client.Controls.FlashVix._mapList = null;
MyVi.Client.Controls.FlashVix.prototype =
{
    playerUrl: null,
    playerWidth: 450,
    playerHeight: 380,
    GetMapList: function() {
        var rval = MyVi.Client.Controls.FlashVix._mapList;
        if (rval == null) {
            rval = new MyVi.Client.Controls.BaseControl(MyVi.Client.Controls.FlashVix.callBaseMethod(this, "GetMapList"));
        }

        return rval;
    },
    MapDataToElement: function(dst_container) {
        var element = jQuery(this.Id, dst_container);
        MyVi.Client.Controls.FlashVix.callBaseMethod(this, "MapDataToElement", [dst_container]);

        if (this.mediaType == "flash") {
            element.after("<object id='" + element.attr("id") + "' width='" + this.playerWidth + "' height='" + this.playerHeight + "'>" +
			"<param name='movie' value='" + this.playerUrl + "'>" +
			"<embed type='application/x-shockwave-flash'" +
				"src='" + this.playerUrl + "' width='" + this.playerWidth + "' height='" + this.playerHeight + "'" +
				"allowfullscreen='true' quality='high' wmode='opaque'" +
				"bgcolor='#ffffff' />" +
			"<noembed>" +
			"</noembed>" +
		"</object>");
        } else {
            element.after("<img width='" + this.playerHeight + "' height='" + this.playerHeight + "' src='" + this.playerUrl + "' />");
        }
        element.remove();
    }
}
MyVi.Client.Controls.FlashVix.registerClass("MyVi.Client.Controls.FlashVix", MyVi.Client.Controls.Element);

//VideoPlayer class
MyVi.Client.Controls.VideoPlayer = function(data) 
{
	MyVi.Client.Controls.VideoPlayer.initializeBase(this, [data]);
}
MyVi.Client.Controls.VideoPlayer.prototype =
{
    ShowTitle: "true",
    Create: function(container, data) {
    var title = "";
    if (this.ShowTitle == "true" || this.ShowTitle == null)
        title = "<h2>" + data.Detail.title + "</h2>";
    container.html(
		title +
		data.Embed.object + " "
	);
    }
}
MyVi.Client.Controls.VideoPlayer.registerClass("MyVi.Client.Controls.VideoPlayer", MyVi.Client.Controls.SimpleCreate);

//VideoDetailCtrl
MyVi.Client.Controls.VideoDetailCtrl = function(data) 
{
	MyVi.Client.Controls.VideoDetailCtrl.initializeBase(this, [data]);
}
MyVi.Client.Controls.VideoDetailCtrl.prototype =
{
	_form: "",
	Link: null,
	ImageUrl: null,
	Duration: null,
	Title: null,
	Description: null,
	ViewsCnt: null,
	AuthorName: null,
	UploadDate: null,
	LinkColor: "blue",
	TextColor: "black",
	IsShort: false,
	IsSimpleList: false,
	MapDataToElement: function(dst_container) {
		if (this.IsShort) {
            this._form =
            "<div style=\"width:100%\">" +
                "<div style=\"width:125px;float:left\">" +
                    "<a href=\"" + this.Link + "\">" +
                        "<img src=\"" + this.ImageUrl + "\" width=\"125px\" height=\"93\" alt=\"" + this.Title + "\" />" +
                    "</a>" +
                "</div>" +
                "<div style=\"margin-left:140px;\">" +
                    "<dl style=\"margin:0;position:relative\">" +
                        "<dt style=\"width:60%\">" +
                            "<a href=\"" + this.Link + "\" style=\"color:" + this.LinkColor + "\">" + this.Title + "</a>" +
                        "</dt>" +
                        "<dd style=\"position:absolute;top:0px;left:60%;width:40%;margin:0;font-weight:bold; color:" + this.TextColor + "\">" + this.Duration + "</dd>" +
                    "</dl>" +
                    "<ul style=\"list-style:none;margin:20px 0 0 0;padding:0; color:" + this.TextColor + "\">" +
                        "<li style=\"\">" +
                            "<strong>" + MyVi.Instance.Localization.PublicList.ViewsCnt + "</strong>" +
                            "<span>" + this.ViewsCnt + "</span>" +
                        "</li>" +
                        "<li>" +
                            "<strong>" + MyVi.Instance.Localization.PublicList.UploadDate + "</strong>" +
                            "<span>" + this.UploadDate + "</span>" +
                        "</li>" +
                    "</ul>" +
                "</div>" +
            "</div>";
        }
        else if (!this.IsSimpleList) {
            this._form =
            "<td style=\"vertical-align:top\">" +
                "<a href=\"" + this.Link + "\">" +
                    "<img src=\"" + this.ImageUrl + "\" alt=\"" + this.Title + "\" title=\"" + this.Title + "\" width=\"125px\" height=\"93px\" />" +
                "</a>" +
            "</td>" +
            "<td style=\"width:100%;padding-left:20px;vertical-align:top\">" +
                "<a href=\"" + this.Link + "\" style=\"float:left;width:70%;margin:-3px 0 0 5px;color:" + this.LinkColor + "\">" + this.Title + "</a>" +
                "<div style=\"float:left;margin-top:-3px; color:" + this.TextColor + ";\"><b>" + this.Duration + "</b></div>" +
                "<div style=\"clear:left;margin-left:5px; color:" + this.TextColor + ";\">" + this.Description + "</div><br />" +
                "<div style=\"float:left;width:45%;margin-right:3px;padding:5px;border-right:1px solid #d1d1d1; color:" + this.TextColor + "\">" +
                    "<strong>" + MyVi.Instance.Localization.PublicList.ViewsCnt + "</strong>" + this.ViewsCnt + 
                "</div>" +
                "<div style=\"border:1px solid #d1d1d1;padding:5px 0; color:" + this.TextColor + "\">" + this.UploadDate + "</div>" +
            "</td>";
        }
        else 
        {
            this._form =
            "<div style=\"width:100%;overflow:hidden\">" +
                "<div style=\"float:left;\">" +
					"<a href=\"" + this.Link + "\">" +
						"<img src=\"" + this.ImageUrl + "\" alt=\"" + this.Title + "\" title=\"" + this.Title + "\" width=\"90px\" height=\"67px\" />" +
					"</a>" +
                "</div>" +
				"<div style=\"margin-left:100px\"><a href=\"" + this.Link + "\" style=\"color:" + this.LinkColor + "\">" + this.Title + "</a>" +
                " (<strong style=\"color:" + this.TextColor + "\">" + this.Duration + "</strong>)" +
                "<div style=\"color:" + this.TextColor + "\">" + this.UploadDate + "</div></div>" +
            "</div>";
        }
        jQuery(jQuery(this.Id, dst_container)).after(this._form);
        jQuery(jQuery(this.Id, dst_container)).remove();
    }
}
MyVi.Client.Controls.VideoDetailCtrl.registerClass("MyVi.Client.Controls.VideoDetailCtrl", MyVi.Client.Controls.Element);

//TemplateContainer
MyVi.Client.Controls.TemplateContainer = function(data)
{
	MyVi.Client.Controls.TemplateContainer.initializeBase(this,[data]);
}
MyVi.Client.Controls.TemplateContainer.prototype =
{
	LayoutElement: undefined,
	Elements: null,
	RenderTemplate: function(place_holder_item, is_layout, data)
	{
		var exceptions = new Array();
		var placeHolderItem;
		if (typeof place_holder_item == "string" )
		{
			var parts = place_holder_item.split(" ");
			for (var i = 0; i < parts.length; i++)
			{
				if (placeHolderItem)
					placeHolderItem = jQuery(parts[i], placeHolderItem);
				else
					placeHolderItem = jQuery(parts[i]);
			}
		}
		else placeHolderItem = place_holder_item;

		if (data != null && this.LayoutElement != undefined)
		{
			var templateElement = jQuery(this.LayoutElement);

			var cloneElement = templateElement.clone();

			if (this.Elements != null)
			{
				for (var i2 = 0; i2 < this.Elements.length; i2++)
				{
					try
					{
						var element = this.Elements[i2];
						if (element != undefined)
						{
							element.SetDefaultDataContext(data);
							element.DataBind();
							if (Object.getType(element).inheritsFrom(MyVi.Client.Controls.Element))
								element.MapDataToElement(cloneElement);
						}
					}
					catch (ex)
					{
						exceptions.push(ex);
					}
				}
			}
			cloneElement.removeAttr("id");
			if (is_layout)
			{
				cloneElement.attr("id", placeHolderItem.attr("id"));
				placeHolderItem.replaceWith(cloneElement);
			}
			else
				placeHolderItem.before(cloneElement);
		}

		if (exceptions.length > 0)
			throw exceptions;
	}
}
MyVi.Client.Controls.TemplateContainer.registerClass("MyVi.Client.Controls.TemplateContainer",MyVi.Client.Controls.BaseControl);


//TemplateListContainer
MyVi.Client.Controls.TemplateListContainer = function(data)
{
	MyVi.Client.Controls.TemplateListContainer.initializeBase(this,[data]);
	if(this.Templates!=null)
	{
		for(var i=0;i<this.Templates.length;i++)
			this.Templates[i] = new MyVi.Client.Controls.TemplateContainer(this.Templates[i]);
	}
}
MyVi.Client.Controls.TemplateListContainer.prototype =
{
    PlaceHolderID: "#itemPlaceHolder",
	Templates:null,
	RenderTemplate:function(place_holder_item, is_layout, data, separator_template, template_name)
	{
		if(typeof(data.length)!="number") data = [data];
		
		if(this.Templates.length > 0)
		{
			for(var i=0;i<data.length;i++)
			{
				if(i>0 && i<(data.length) && separator_template)
					separator_template.RenderTemplate(place_holder_item,is_layout,[""], undefined, template_name);
				if(!template_name)
				    //this.Templates[i % this.Templates.length].RenderTemplate(place_holder_item, is_layout, data[i]);
				    this.Templates[0].RenderTemplate(place_holder_item, is_layout, data[i]);
			}
		}
	}
}
MyVi.Client.Controls.TemplateListContainer.registerClass("MyVi.Client.Controls.TemplateListContainer", MyVi.Client.Controls.BaseControl);


//LayoutTemplateContainer
MyVi.Client.Controls.LayoutTemplateContainer = function(data) 
{
    MyVi.Client.Controls.LayoutTemplateContainer.initializeBase(this, [data]);
}
MyVi.Client.Controls.LayoutTemplateContainer.prototype =
{
    PlaceHolderID: "#itemPlaceHolder",
    LayoutElement: undefined,
    ToAppend: false,
    ToPrepend: false,
//    RenderTemplate: function(place_holder) 
//    {
//        if (this.LayoutElement != undefined) 
//        {
//            var templateElement = jQuery(this.LayoutElement);
//            var cloneElement = templateElement.clone();
//            if (!this.ToAppend)
//            {
//            	cloneElement.removeAttr("id");
//            	cloneElement.attr("id", place_holder.attr("id"));
//            	jQuery(place_holder).replaceWith(cloneElement);
//            }
//            else
//            	jQuery(place_holder).append(cloneElement.children());
//				
//        }
//    }
    RenderTemplate: function(place_holder) {
        if (this.LayoutElement != undefined) {
            var templateElement = jQuery(this.LayoutElement);
            var cloneElement = templateElement.clone();
            if (!this.ToAppend && !this.ToPrepend) {
                cloneElement.removeAttr("id");
                cloneElement.attr("id", place_holder.attr("id"));
                jQuery(place_holder).replaceWith(cloneElement);
            } else if (this.ToAppend)
                jQuery(place_holder).append(cloneElement.children());
            else jQuery(place_holder).prepend(cloneElement.children());
        }
    }
}
MyVi.Client.Controls.LayoutTemplateContainer.registerClass("MyVi.Client.Controls.LayoutTemplateContainer", MyVi.Client.Controls.BaseControl);


//GroupTemplateContainer
MyVi.Client.Controls.GroupTemplateContainer = function(data) 
{
    MyVi.Client.Controls.GroupTemplateContainer.initializeBase(this, [data]);
}
MyVi.Client.Controls.GroupTemplateContainer.prototype =
{
    PlaceHolderID: "#groupPlaceHolder",
    LayoutElement: undefined,
    RenderTemplate: function(place_holder_group, data, item_template, place_holder_item, item_separator, is_render_separator) 
    {
        if (this.LayoutElement != undefined && data!=null)
        {
            var templateElement = jQuery(this.LayoutElement);
            var cloneElement = templateElement.clone();
            cloneElement.removeAttr("id");
            jQuery(place_holder_group).before(cloneElement);
            item_template.RenderTemplate(place_holder_item, false, data);
            if (item_separator != null && is_render_separator)
            {
                templateElement = jQuery(item_separator.Templates[0].LayoutElement);
                cloneElement = templateElement.clone();
                cloneElement.removeAttr("id");
                jQuery(place_holder_group).before(cloneElement);
            }
            jQuery(place_holder_item).remove();
        } 
    }
}
MyVi.Client.Controls.GroupTemplateContainer.registerClass("MyVi.Client.Controls.GroupTemplateContainer", MyVi.Client.Controls.BaseControl);;
///<reference path="~/_common/main.js" />
///<reference path="~/_common/Controls.js" />

Type.registerNamespace("MyVi.Client.Controls.Data");

//JSONDataSource class
MyVi.Client.Controls.Data.JSONDataSource = function (data)
{
	this.ServiceUrl = "";
	MyVi.Client.Controls.Data.JSONDataSource.initializeBase(this,[data]);
}
MyVi.Client.Controls.Data.JSONDataSource.prototype =
{
    DirectJson: null,
    ServiceUrl: null,
    Jsonp: false,
    _ExecuteSelect: function(return_value, callback) {
        if (this.DirectJson != null && this.DirectJson != "") {
            return_value._data = this.DirectJson;
            this.DirectJson = null;
            callback(return_value);
            jQuery("#processing").hide();
            jQuery("#content").show();
        } else if (this.ServiceUrl != null && this.ServiceUrl != "") {
            var serviceUrl = MyVi.Client.Controls.BaseDataSource.GetRequestURL(this.ServiceUrl, this.Parameters);
            if (this.Jsonp) serviceUrl += "&jsoncallback=?";

            jQuery("#processing").ajaxStart(function() {
                jQuery(this).show();
                jQuery("#content").hide();
            });
            jQuery.getJSON(serviceUrl, function(data) {
                return_value._data = data;
                callback(return_value);
            });
            jQuery().ajaxStop(function() {
                jQuery("#processing").hide();
                jQuery("#content").show();
            });
        }
    }
}
MyVi.Client.Controls.Data.JSONDataSource.registerClass("MyVi.Client.Controls.Data.JSONDataSource", MyVi.Client.Controls.BaseDataSource);

// ObjectDataSource class
MyVi.Client.Controls.Data.ObjectDataSource = function(data) {
    MyVi.Client.Controls.Data.ObjectDataSource.initializeBase(this, [data]);
    if (data.ServiceMethod instanceof Function)
        this.ServiceMethod = data.ServiceMethod;

}
MyVi.Client.Controls.Data.ObjectDataSource.prototype =
{
    StartJson: null,
    ServiceMethod: null,
    _ExecuteSelect: function(return_value, callback) {
        var target = this;

        if (!target.StartJson) {
            this.ServiceMethod(this.Parameters,
		        function(val) {
		            return_value._data = val;
		            callback(return_value);
		        },
		        function(val) {
		            return_value._data = val;
		            callback(return_value);
		        });
	    } else {
	        return_value._data = target.StartJson;
	        target.StartJson = null;
	        callback(return_value);
        }
    }
}
MyVi.Client.Controls.Data.ObjectDataSource.registerClass("MyVi.Client.Controls.Data.ObjectDataSource", MyVi.Client.Controls.BaseDataSource);


//DataView class
MyVi.Client.Controls.Data.DataView = function (data)
{
	MyVi.Client.Controls.Data.DataView.initializeBase(this,[data]);
	
}
MyVi.Client.Controls.Data.DataView.prototype = 
{
	GetGoPageUrl:function(page_num, base_url)
	{
		var queryParams = MyVi.Client.Utils.ParseQueryString(base_url);
		this.SetQueryParams(queryParams);
		this.SetQueryParam(queryParams, "pn", page_num);
		return MyVi.Client.Utils.CreateQueryString(queryParams, base_url);
	},
	GetGoPageEventHandler:function(page_num)
	{
		var target = this;
		return function(e)
		{
			target.Paging.PageNum = page_num;
			target.ChangeData();
		};	
	}
}
MyVi.Client.Controls.Data.DataView.registerClass("MyVi.Client.Controls.Data.DataView", MyVi.Client.Controls.BaseDataView);
;
///<reference path="~/_common/main.js" />
///<reference path="~/_common/Controls.js" />

Type.registerNamespace("MyVi.Client.Controls.UI");

//ListView class
MyVi.Client.Controls.UI.ListView = function (data)
{
	MyVi.Client.Controls.UI.ListView.initializeBase(this, [data]);
	if(this.LayoutTemplate!=null)
	    //this.LayoutTemplate = new MyVi.Client.Controls.TemplateListContainer(this.LayoutTemplate);
	    this.LayoutTemplate = new MyVi.Client.Controls.LayoutTemplateContainer(this.LayoutTemplate);
	if(this.GroupTemplate != null)
	    this.GroupTemplate = new MyVi.Client.Controls.GroupTemplateContainer(this.GroupTemplate);
	if(this.ItemTemplate!=null)
		this.ItemTemplate = new MyVi.Client.Controls.TemplateListContainer(this.ItemTemplate);
	if(this.ItemSeparatorTemplate!=null)
		this.ItemSeparatorTemplate = new MyVi.Client.Controls.TemplateListContainer(this.ItemSeparatorTemplate);
	if(this.EmptyTemplate!=null)
		this.EmptyTemplate = new MyVi.Client.Controls.TemplateListContainer(this.EmptyTemplate);
	if(this.ErrorTemplate!=null)
		this.ErrorTemplate = new MyVi.Client.Controls.TemplateListContainer(this.ErrorTemplate);
}

MyVi.Client.Controls.UI.ListView.prototype =
{
    //GroupPlaceHolder: "#groupPlaceHolder",
    //ItemPlaceHolder: "#itemPlaceHolder",
    LayoutTemplate: null,
    GroupTemplate: null,
    GroupItemsCount: null,
    ItemTemplate: null,
    EmptyTemplate: null,
    ErrorTemplate: null,
    ItemSeparatorTemplate: undefined,
    OnCreateChildControlComplete: undefined,
    CreateChildControl: function() {
        //this.ClearChildControls();
        var placeHolder = jQuery(this.Id);

        if (this._errorData != null) {
            if (this.ErrorTemplate != null)
                this.ErrorTemplate.RenderTemplate(placeHolder, true, [this._errorData]);
        }
        else if (this.ItemsData != null && this.ItemsData.length > 0) {
            if (this.LayoutTemplate != null) {
                //this.LayoutTemplate.RenderTemplate(placeHolder,true,this.LayoutData!=null?this.LayoutData:[""]);

                this.LayoutTemplate.RenderTemplate(placeHolder);

                if (this.GroupTemplate != null && this.ItemTemplate != null) {
                    //var groupPlaceHolder = this.Id + " #groupPlaceHolder";
                    //var itemPlaceHolder = this.Id + " #itemPlaceHolder";

                    var groupPlaceHolder = this.Id + " " + this.GroupTemplate.PlaceHolderID;
                    var itemPlaceHolder = this.Id + " " + this.LayoutTemplate.PlaceHolderID;

                    //var groupPlaceHolder = this.Id + " " + this.GroupPlaceHolder;
                    //var itemPlaceHolder = this.Id + " " + this.ItemPlaceHolder;

                    var itemsData = new Array();

                    var groupCnt = Math.ceil(this.ItemsData.length / this.GroupItemsCount);
                    for (var i = 0; i < groupCnt; i++) {
                        for (var j = 0; j < this.GroupItemsCount; j++) {
                            itemsData[j] = this.ItemsData[i * this.GroupItemsCount + j];
                        }
                        var is_render_separator = i < (groupCnt - 1);
                        this.GroupTemplate.RenderTemplate(groupPlaceHolder, itemsData, this.ItemTemplate, itemPlaceHolder, this.ItemSeparatorTemplate, is_render_separator);
                    }
                    jQuery(groupPlaceHolder).remove();
                }
                else if (this.ItemTemplate != null) {
                    //var itemPlaceHolder = this.Id + " " + this.ItemPlaceHolder;
                    var itemPlaceHolder = this.Id + " " + this.LayoutTemplate.PlaceHolderID;
                    if (this.ItemTemplate != null)
                        this.ItemTemplate.RenderTemplate(itemPlaceHolder, false, this.ItemsData, this.ItemSeparatorTemplate);
                    jQuery(itemPlaceHolder).remove();
                }
            }
        }
        else {
            if (this.EmptyTemplate != null)
                this.EmptyTemplate.RenderTemplate(placeHolder, true, [""]);
        }
        if (this.OnCreateChildControlComplete)
            this.OnCreateChildControlComplete();
    }
}
MyVi.Client.Controls.UI.ListView.registerClass("MyVi.Client.Controls.UI.ListView", MyVi.Client.Controls.BaseDataBoundControl);


//DataPaging class
MyVi.Client.Controls.UI.DataPaging = function (data)
{
	MyVi.Client.Controls.UI.DataPaging.initializeBase(this, [data]);
	if(this.LayoutTemplate!=null)
		this.LayoutTemplate = new MyVi.Client.Controls.TemplateListContainer(this.LayoutTemplate);
	if(this.ItemTemplate!=null)
		this.ItemTemplate = new MyVi.Client.Controls.TemplateListContainer(this.ItemTemplate);
	if(this.ItemSelectedTemplate!=null)
		this.ItemSelectedTemplate = new MyVi.Client.Controls.TemplateListContainer(this.ItemSelectedTemplate);
	if(this.ItemSeparatorTemplate!=null)
		this.ItemSeparatorTemplate = new MyVi.Client.Controls.TemplateListContainer(this.ItemSeparatorTemplate);
	if(this.EmptyTemplate!=null)
		this.EmptyTemplate = new MyVi.Client.Controls.TemplateListContainer(this.EmptyTemplate);
}

MyVi.Client.Controls.UI.DataPaging.prototype =
{
    //ItemPlaceHolder:"#itemPlaceHolder",
	LeftPages:3, RightPages:3,
	DataView:undefined,
	LayoutTemplate:null,
	ItemTemplate:null,
	ItemSelectedTemplate:null,
	ItemSeparateTemplate: undefined,
	OnCreateChildControlComplete : undefined,
	EmptyTemplate:null,
	CreateChildControl:function()
	{
		this.ClearChildControls();
		var placeHolder = jQuery(this.Id);
		
		if(this._errorData!=null)
		{
		}
		else if (this.ItemsData != null && this.ItemsData.total > this.ItemsData.size)
		{
			if(this.LayoutTemplate!=null)
			{
				var data = this._GenerateData(this.ItemsData);
				this.LayoutTemplate.RenderTemplate(placeHolder,true,data.layoutData);
				//var itemPlaceHolder = this.Id + " " + this.ItemPlaceHolder;
				var itemPlaceHolder = this.Id + " " + this.LayoutTemplate.PlaceHolderID;
				if(this.ItemTemplate!=null)
				{
					this.ItemTemplate.RenderTemplate(itemPlaceHolder,false,data.beforeData,this.ItemSeparatorTemplate);
					if(data.selectedData && this.ItemSelectedTemplate!=null)
					{
						if(data.beforeData.length > 0 && this.ItemSeparatorTemplate) this.ItemSeparatorTemplate.RenderTemplate(itemPlaceHolder,false,[""]);
						this.ItemSelectedTemplate.RenderTemplate(itemPlaceHolder,false,data.selectedData,this.ItemSeparatorTemplate);
						if(data.afterData.length > 0 && this.ItemSeparatorTemplate) this.ItemSeparatorTemplate.RenderTemplate(itemPlaceHolder,false,[""]);
					}
					this.ItemTemplate.RenderTemplate(itemPlaceHolder,false,data.afterData,this.ItemSeparatorTemplate);
				}
				jQuery(itemPlaceHolder).remove();
			}
		}
		else
		{
			if(this.EmptyTemplate!=null)
				this.EmptyTemplate.RenderTemplate(placeHolder,true,[""]);
        }
        if (this.OnCreateChildControlComplete)
            this.OnCreateChildControlComplete();

	},
	_GenerateData:function(paging)
	{
		var rval = {layoutData:undefined, beforeData:[], selectedData:undefined, afterData:[]};
		var i;
		var selectedIndex = paging.num;
		var lastPageNum = (paging.total / paging.size) + 1;
		var startIndex = selectedIndex - this.LeftPages;
		
		var endIndex = selectedIndex + this.RightPages + 1;
		if(endIndex>lastPageNum)
		{
			endIndex = Math.ceil(lastPageNum);
			startIndex = endIndex - this.LeftPages - this.RightPages -1;
		}
		if(startIndex < -this.LeftPages ) startIndex = -this.LeftPages;
		
		
		for(i=startIndex;i<selectedIndex && i<lastPageNum;i++)
		{
			if(i>0) rval.beforeData.push(this._GenerateItem(i,paging));
			else endIndex++;
		}
		if(i<lastPageNum) rval.selectedData = this._GenerateItem(i,true);
		for(i=selectedIndex+1;i<endIndex && i < lastPageNum;i++)
		{
			if(i>0) rval.afterData.push(this._GenerateItem(i,paging));
		}
		
		rval.layoutData = this._GenerateItem(0,paging);
		
		return rval;
	},
	_GenerateItem:function(page_num, paging)
	{
		var rval;
		var dataView = this.GetObject(this.DataView);
		if(!Object.getType(dataView).inheritsFrom(MyVi.Client.Controls.BaseDataView))
			throw "DataPaging.DataView required MyVi.Client.Controls.BaseDataView type";
		
		if(page_num>0)
		{
			rval = {text:page_num.toString(), pageNum:page_num, url:undefined, 
				gopageEventHandler:undefined};
			
			if (dataView.QueryStringField)
				rval.url = dataView.GetGoPageUrl(page_num);
			else
				rval.gopageEventHandler = dataView.GetGoPageEventHandler(page_num);
		}
		else
		{
			rval = {prevpageEnabled:paging.num>1,nextpageEnabled:(paging.total / paging.size)>paging.num,
				prevpageUrl:undefined, nextpageUrl:undefined,
				prevpageHandler:undefined, nextpageHandler:undefined};
			
			if (dataView.QueryStringField)
			{
				rval.prevpageUrl = dataView.GetGoPageUrl(paging.num-1);
				rval.nextpageUrl = dataView.GetGoPageUrl(paging.num+1);
			}
			else
			{
				rval.prevpageHandler = dataView.GetGoPageEventHandler(paging.num-1);
				rval.nextpageHandler = dataView.GetGoPageEventHandler(paging.num+1);
			}
		}
		
		return rval;
	}

}
MyVi.Client.Controls.UI.DataPaging.registerClass("MyVi.Client.Controls.UI.DataPaging", MyVi.Client.Controls.BaseDataBoundControl);
;
Type.registerNamespace("MyVi.Client.Helper");
jQuery.noConflict();

MyVi.Client.Helper.CreateMyViBlock = function(from_proxy) {
	var ListType = "new";
	var n = 1;

	jQuery(this).empty();
	jQuery(this).removeAttr("class");

	jQuery(".MyViAPI").each(function() {
		ListType = jQuery(".ListType",this).html();

		if (ListType == "videodetail") 
		{
			MyVi.Client.Helper.CreateVideoDetailBlock(this, n, from_proxy);
		}
		else if (ListType == "upload") 
		{
			MyVi.Client.UploadHelper.CreateUploadBlock(this, n, from_proxy);
		}
		else
		{
			MyVi.Client.Helper.CreateVideoListBlock(this, n, from_proxy);
		}
		n++;
	});
}

//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////			CreateVideoDetailBlock			/////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
MyVi.Client.Helper.CreateVideoDetailBlock = function(conteiner, n, from_proxy)
{
    var showTitle = "true";
    showTitle = jQuery(".ShowTitle", conteiner).html();
    var video = "none";
    var queryParams = MyVi.Client.Utils.ParseQueryString();
    video = jQuery(".Video", conteiner).html();
    if (video == null)
        video = queryParams.video;

    var ServiceUrl = MyVi.Instance.PartnerInfo.APIURL + "/public/video/{cid}/getvideoinfo?video=" + video + "&globalization=";

    var dataSource1 = "dataSource" + n;
    if (from_proxy != undefined && from_proxy == true)
		MyVi.Instance.Controls[dataSource1] = new MyVi.Client.Controls.Data.JSONDataSource({
			ServiceUrl: ServiceUrl,
			Bindings: [{ Property: "Parameters", PropertyKey: "cid", DataContext: "MyVi.Instance.PartnerInfo", DataPath: "CID"}],
			Jsonp: false
		});
	else
		MyVi.Instance.Controls[dataSource1] = new MyVi.Client.Controls.Data.JSONDataSource({
			ServiceUrl: ServiceUrl,
			Bindings: [{ Property: "Parameters", PropertyKey: "cid", DataContext: "MyVi.Instance.PartnerInfo", DataPath: "CID"}],
			Jsonp: true
		});

    var listView1 = "listView" + n;
    MyVi.Instance.Controls[listView1] = new MyVi.Client.Controls.UI.ListView({
        Id: "#MyViAPI_listView" + n,
        Bindings: [{ DataContext: "." + dataSource1, DataPath: "Video", Property: "ItemsData"}],
        LayoutTemplate: { LayoutElement: "#MyViAPI_layoutTemplate" + n },
        ItemTemplate: {
            Templates: [{
                LayoutElement: "#MyViAPI_itemTemplate" + n,
                Elements: [
					new MyVi.Client.Controls.VideoPlayer({ Id: "#MyViAPI_VideoPlayerCtrl" + n, ShowTitle: showTitle, Bindings: [{ DataPath: "Info.Logical", Property: "Data"}] })
				]
}]
            },
            EmptyTemplate: { Templates: [{ LayoutElement: "#emptyLayoutTemplate" + n}] }
        });

        var listViewTemplates;
        listViewTemplates =
		"<div style=\"display:none\">" +
			"<div id=\"MyViAPI_layoutTemplate" + n + "\" style=\"width:100%\">" +
				"<div id=\"itemPlaceHolder\"></div>" +
			"</div>" +
			"<div id=\"MyViAPI_itemTemplate" + n + "\">" +
				"<div id=\"MyViAPI_VideoPlayerCtrl" + n + "\"></div>" +
			"</div>" +
			"<div id=\"MyViAPI_errorLayoutTemplate" + n + "\">" +
				"<h3>Request error</h3>" +
				"<div>" +
					"<b>Message: </b><span id=\"message\"></span>" +
				"</div>" +
				"<div>" +
					"<b>Stack trace: </b><span id=\"stack\"></span>" +
				"</div>" +
			"</div>" +
			"<div id=\"MyViAPI_emptyLayoutTemplate" + n + "\">Data not found</div>" +
		"</div>";

        var listViewContainer;
        listViewContainer = "<div id=\"MyViAPI_listView" + n + "\"></div>";

        var result =
		"<div id=\"MyViAPI_VideoDetailBlock" + n + "\" style=\"line-height:150%\" >" +
			listViewContainer +
			"<div style=\"clear:both;height:30px\" ></div>" +
			listViewTemplates +
		"</div>";

        jQuery(conteiner).after(result);

        MyVi.Instance.Controls[dataSource1].DataBind();
        MyVi.Instance.Controls[listView1].DataBind();
    }

//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////			CreateVideoListBlock			/////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////
    MyVi.Client.Helper.CreateVideoListBlock = function(conteiner, n, from_proxy)
{
	var LinkColor = "blue";
	var TextColor = "black";
	var ListType = "new";
	var Category = "all";
	var ListColCount = "1";
	//private list
	var AccessType = "public";
	var PrivateProxy = "";
	var ExcludeCategory = "";
	var UploadParam = "";

	ListColCount = jQuery(".ListColCount",conteiner).html();
	LinkColor = jQuery(".LinkColor",conteiner).html();
	TextColor = jQuery(".TextColor",conteiner).html();
	ListType = jQuery(".ListType",conteiner).html();
	Category = jQuery(".Category",conteiner).html();
	Progressbar = jQuery(".Progressbar",conteiner).html();
	var tmp = jQuery(".AccessType",conteiner).html();
	if(tmp != null) AccessType = tmp;
	tmp = jQuery(".PrivateProxy",conteiner).html();
	if(tmp != null) PrivateProxy = tmp;
	tmp = jQuery(".ExcludeCategory",conteiner).html();
	if(tmp != null) ExcludeCategory = tmp;
	tmp = jQuery(".UploadParam",conteiner).html();
	if(tmp != null) UploadParam = tmp;
	
	if (Category && Category != "") Category = "," + Category;
		else Category = ",";
	if (ExcludeCategory && ExcludeCategory != "") ExcludeCategory = "," + ExcludeCategory;
		else ExcludeCategory = ",";

	var queryParams = MyVi.Client.Utils.ParseQueryString();

	VideoID = jQuery(conteiner).find(".VideoID").html();
	if (VideoID != null && VideoID.substring(0, 1) == "@") VideoID = queryParams[VideoID.split("@")[1]];
	DateFormat = jQuery(conteiner).find(".DateFormat").html();
	if (DateFormat == null)
		DateFormat = "dd.MMMM.yyyy";

	var minWidth = 250;
	if (ListColCount == 1)
		minWidth = 395;
	if (ListColCount == 2)
		minWidth = 700;

	var pagingTemplates =
		"<div style=\"display:none\">" +
			"<div id=\"MyViAPI_dataPagingLayoutTemplate" + n +"\" style=\"width:" + minWidth + "\">" +
				"<div style=\"clear:both;float:left;margin:0;padding-left:40px\">" +
					"<strong style=\"margin-right:8px\">" + MyVi.Instance.Localization.PublicList.Page + "</strong>" +
					"<a id=\"MyViAPI_prev" + n +"\" style=\"padding:1px 8px;color:" + LinkColor + ";\">&laquo;</a>" +
				"</div>" +
				"<div id=\"itemPlaceHolder\"></div>" +
				"<div>" +
					"<a id=\"MyViAPI_next" + n +"\" style=\"float: left; padding:1px 8px;color:" + LinkColor + ";\">&raquo;</a>" +
				"</div>" +
			"</div>" +
			"<div id=\"MyViAPI_dataPagingItemTemplate" + n + "\" style=\"float:left;padding:1px 8px;\">" +
				"<a id=\"MyViAPI_pageName" + n + "\" style=\"color:" + LinkColor + ";\"></a>" +
			"</div>" +
			"<div id=\"MyViAPI_dataPagingSelectedItemTemplate" + n + "\" style=\"float:left;padding:1px 8px;background-color:" + LinkColor + "\">" +
				"<span id=\"MyViAPI_pageName" + n + "\" style=\"color:" + TextColor + ";\"></span>" +
			"</div>" +
			"<div id=\"MyViAPI_dataPagingSeparatorItemTemplate" + n +"\" style=\"float:left\">" +
				"&nbsp;" +
			"</div>" +
		"</div>";

	var listViewTemplates;
	var listViewContainer;
	if (ListColCount == 1) {
		listViewTemplates =
			"<div style=\"display:none\">" +
				"<table id=\"MyViAPI_layoutTemplate" + n +"\" style=\"width:100%\">" +
					"<tr id=\"itemPlaceHolder\"></tr>" +
					"<tr><td colspan=\"2\"><div style=\"width:" + minWidth + "px\"><div></td></tr>" +
				"</table>" +
				"<table>" +
					"<tr id=\"MyViAPI_itemTemplate" + n +"\">" +
						"<td id=\"MyViAPI_VideoDetailCtrl" + n +"\"></td>" +
					"</tr>" +
					"<tr id=\"MyViAPI_ItemSeparatorTemplate" + n +"\" style=\"height:20px\">" +
						"<td>&nbsp;</td>" +
					"</tr>" +
				"</table>" +
			"</div>";
		listViewContainer = "<div style=\"clear:both;height:30px\"></div><table id=\"MyViAPI_listView" + n +"\"></table>";
	}
	else if (ListColCount == 2) {
		listViewTemplates =
			"<div style=\"display:none\">" +
				"<table id=\"MyViAPI_layoutTemplate" + n +"\" style=\"width:100%\">" +
					"<tr id=\"groupPlaceHolder\"></tr>" +
					"<tr><td colspan=\"2\"><div style=\"width:" + minWidth + "px\"><div></td></tr>" +
				"</table>" +
				"<table>" +
					"<tr id=\"MyViAPI_groupTemplate" + n +"\">" +
						"<td id=\"itemPlaceHolder\"></td>" +
					"</tr>" +
					"<tr id=\"MyViAPI_ItemSeparatorTemplate" + n +"\" style=\"height:20px\">" +
						"<td colspan=\"2\">&nbsp;</td>" +
					"</tr>" +
				"</table>" +
				"<table>" +
					"<tr>" +
						"<td id=\"MyViAPI_itemTemplate" + n +"\" style=\"width:50%\">" +
							"<div id=\"MyViAPI_VideoDetailCtrl" + n +"\"></div>" +
						"</td>" +
					"</tr>" +
				"</table>" +
			"</div>";
		listViewContainer = "<div style=\"clear:both;height:30px\"></div><div id=\"MyViAPI_listView" + n +"\"></div>";
	}
	else { //тонкий дизайн))
		pagingTemplates =
			"<div style=\"display:none\">" +
				"<div id=\"MyViAPI_dataPagingLayoutTemplate" + n +"\">" +
					"<div style=\"clear:both;float:left;margin:0;color:" + TextColor + "\">" +
						"<strong style=\"margin-right:0px\">" + MyVi.Instance.Localization.PublicList.Page + "</strong>" +
						"<a id=\"MyViAPI_prev" + n +"\" style=\"padding:1px 8px;color:" + LinkColor + "\">&laquo;</a>" +
					"</div>" +
					"<div id=\"itemPlaceHolder\"></div>" +
					"<div>" +
						"<a id=\"MyViAPI_next" + n +"\" style=\"padding:1px 5px;color:" + LinkColor + "\">&raquo;</a>" +
					"</div>" +
				"</div>" +
				"<div id=\"MyViAPI_dataPagingItemTemplate" + n +"\" style=\"float:left;padding:1px 5px;\">" +
					"<a id=\"MyViAPI_pageName" + n +"\" style=\"color:" + LinkColor + "\"></a>" +
				"</div>" +
				"<div id=\"MyViAPI_dataPagingSelectedItemTemplate" + n +"\" style=\"float:left;padding:1px 8px;background-color:" + LinkColor + ";color:" + TextColor + "\">" +
					"<span id=\"MyViAPI_pageName" + n +"\"></span>" +
				"</div>" +
				"<div id=\"MyViAPI_dataPagingSeparatorItemTemplate" + n +"\" style=\"float:left\">" +
					"&nbsp;" +
				"</div>" +
			"</div>";
		listViewTemplates =
			"<div style=\"display:none\">" +
				"<div id=\"MyViAPI_layoutTemplate" + n +"\" style=\"width:100%;clear:both\">" +
					"<div id=\"itemPlaceHolder\"></div>" +
				"</div>" +
				"<div id=\"MyViAPI_itemTemplate" + n +"\">" +
					"<div id=\"MyViAPI_VideoDetailCtrl" + n +"\"></div>" +
				"</div>" +
				"<div id=\"MyViAPI_ItemSeparatorTemplate" + n +"\" style=\"height:20px\">&nbsp;</div>" +
			"</div>";
		listViewContainer = "<div id=\"MyViAPI_listView" + n +"\"></div>";
	}

	var result =
		"<div id=\"processing" + n +"\" style=\"display:none;font-size:150%;color:" + TextColor + "\">Гружусь...</div>" +
		"<div id=\"content" + n +"\" style=\"line-height:150%;color:" + TextColor + "\">" +
		"<div id=\"MyViAPI_dataPaging" + n +"\"></div>" +
		listViewContainer +
		"<div style=\"clear:both;height:30px\"></div>" +
		"<div id=\"MyViAPI_dataPaging2_" + n +"\"></div>" +
		pagingTemplates +
		listViewTemplates +
		"</div>";

	jQuery(conteiner).after(result);

	var dateFormatVal = "{\"date_fmt\":\"" + DateFormat + "\"}";
	var ServiceUrl = MyVi.Instance.PartnerInfo.APIURL + "/public/video/{cid}/getnewlist?list=all" + Category + ExcludeCategory + "&uploadparam=" + UploadParam + "&paging={pagenum},{pagesize}&globalization=" + dateFormatVal;
	if(AccessType == "private" )
		ServiceUrl = PrivateProxy + "?proxy=videolist&type=getnewlist&cid={cid}&list=all" + Category + ExcludeCategory + "&uploadparam=" + UploadParam + "&paging={pagenum},{pagesize}&globalization=" + dateFormatVal;
	if (ListType == "top100") {
		ServiceUrl = MyVi.Instance.PartnerInfo.APIURL + "/public/video/{cid}/getviewedtop100list?list=all" + Category + ExcludeCategory + "&uploadparam=" + UploadParam + "&paging={pagenum},{pagesize}&globalization=" + dateFormatVal;
		if(AccessType == "private" )
			ServiceUrl = PrivateProxy + "?proxy=videolist&type=getviewedtop100list&cid={cid}&list=all" + Category + ExcludeCategory + "&uploadparam=" + UploadParam + "&paging={pagenum},{pagesize}&globalization=" + dateFormatVal;
	}
	else if (ListType == "similar" && VideoID != null) {
		ServiceUrl = MyVi.Instance.PartnerInfo.APIURL + "/public/video/{cid}/getsimilartop100list?video=" + VideoID + "&list=all" + Category + ExcludeCategory + "&uploadparam=" + UploadParam + "&paging={pagenum},{pagesize}&globalization=" + dateFormatVal;
		if(AccessType == "private" )
			ServiceUrl = PrivateProxy + "?proxy=videolist&type=getsimilartop100list&cid={cid}&list=all" + Category + ExcludeCategory + "&uploadparam=" + UploadParam + "&paging={pagenum},{pagesize}&globalization=" + dateFormatVal;
	}

	var dataSource1 = "dataSource" + n;
	if (from_proxy != undefined && from_proxy == true)
		MyVi.Instance.Controls[dataSource1] = new MyVi.Client.Controls.Data.JSONDataSource({
			ServiceUrl: ServiceUrl,
			Bindings: [{ Property: "Parameters", PropertyKey: "cid", DataContext: "MyVi.Instance.PartnerInfo", DataPath: "CID"}],
			Jsonp: false
		});
	else
		MyVi.Instance.Controls[dataSource1] = new MyVi.Client.Controls.Data.JSONDataSource({
			ServiceUrl: ServiceUrl,
			Bindings: [{ Property: "Parameters", PropertyKey: "cid", DataContext: "MyVi.Instance.PartnerInfo", DataPath: "CID"}],
			Jsonp: true
		});

	var dataView1 = "dataView" + n;
	MyVi.Instance.Controls[dataView1] = new MyVi.Client.Controls.Data.DataView({
		Paging: { PageSize: 10, PageNum: 1 }, QueryStringField: undefined,
		Bindings: [
			{DataContext: "." + dataSource1, DataPath: "Videos", Property: "Data", PropertyKey: "Videos",
				Bindings: [{ DataContext: "." + dataView1 + ".Paging", DataPath: "PageSize", Property: "DSParams", PropertyKey: "pagesize" }, { DataContext: "." + dataView1 + ".Paging", DataPath: "PageNum", Property: "DSParams", PropertyKey: "pagenum"}]
			},
			{ DataContext: "." + dataSource1, DataPath: "Paging", Property: "Data", PropertyKey: "Paging" }
		]
	});

	var listView1 = "listView" + n;
	MyVi.Instance.Controls[listView1] = new MyVi.Client.Controls.UI.ListView({
		Id: "#MyViAPI_listView" + n,
		GroupItemsCount: ListColCount == "1" ? null : 2,
		Bindings: [{ DataContext: "." + dataView1, DataPath: "Data.Videos", Property: "ItemsData" },
			{ DataContext: "." + dataView1, DataPath: "Data.Paging", Property: "LayoutData"}],
		LayoutTemplate: { LayoutElement: "#MyViAPI_layoutTemplate" + n },
		GroupTemplate: ListColCount == "2" ? { LayoutElement: "#MyViAPI_groupTemplate" + n} : null,
		ItemTemplate: {
			Templates: [
				{
					LayoutElement: "#MyViAPI_itemTemplate" + n,
					Elements: [
						new MyVi.Client.Controls.VideoDetailCtrl({
							Id: "#MyViAPI_VideoDetailCtrl" + n,
							IsShort: ListColCount == "1" || ListColCount == "0" ? false : true,
							IsSimpleList: ListColCount == "0" ? true : false,
							LinkColor: LinkColor,
							TextColor: TextColor,
							Bindings: [
								{ DataPath: "durationFmt", Property: "Duration" },
								{ DataPath: "description", Property: "Description" },
								{ DataPath: "link", Property: "Link" },
								{ DataPath: "imageUrl", Property: "ImageUrl" },
								{ DataPath: "title", Property: "Title" },
								{ DataPath: "viewsCnt", Property: "ViewsCnt" },
								{ DataPath: "uploadDateFmt", Property: "UploadDate" },
								{ DataPath: "Author.name", Property: "AuthorName" }
							]
						})
			        ]
				}
				/*,{
			        LayoutElement: "#MyViAPI_itemTemplate",
			        Elements: [
			                    new MyVi.Client.Controls.VideoDetailCtrl({
			                        Id: "#MyViAPI_VideoDetailCtrl",
			                        IsShort: ListColCount == "1" ? false : true,
			                        IsAlternate: ListColCount == "1" ? false : true,
			                        LinkColor: LinkColor,
			                        Bindings: [
						                { DataPath: "durationFmt", Property: "Duration" },
						                { DataPath: "description", Property: "Description" },
						                { DataPath: "link", Property: "Link" },
						                { DataPath: "imageUrl", Property: "ImageUrl" },
						                { DataPath: "title", Property: "Title" },
						                { DataPath: "viewsCnt", Property: "ViewsCnt" },
						                { DataPath: "uploadDateFmt", Property: "UploadDate" },
						                { DataPath: "Author.name", Property: "AuthorName" }
						            ]
			                    })
			        ]
			    }*/
			]
		},
		ItemSeparatorTemplate: { Templates: [{ LayoutElement: "#MyViAPI_ItemSeparatorTemplate" + n}] }
	});

	var dataPaging1 = "dataPaging" + n;
	MyVi.Instance.Controls[dataPaging1] = new MyVi.Client.Controls.UI.DataPaging({
		Id: "#MyViAPI_dataPaging" + n,
		LeftPages: ListColCount == 0 ? 2 : 3,
		RightPages: ListColCount == 0 ? 2 : 3,
		DataView: "." + dataView1,
		Bindings: [{ DataContext: "." + dataView1, DataPath: "Data.Paging", Property: "ItemsData"}],
		LayoutTemplate: {
			Templates: [{
				LayoutElement: "#MyViAPI_dataPagingLayoutTemplate" + n,
				Elements: [
					new MyVi.Client.Controls.Link({ Id: "#MyViAPI_prev" + n, Bindings: [{ DataPath: "prevpageEnabled", Property: "enabled" }, { DataPath: "prevpageUrl", Property: "url" }, { DataPath: "prevpageHandler", Property: "click"}] }),
					new MyVi.Client.Controls.Link({ Id: "#MyViAPI_next" + n, Bindings: [{ DataPath: "nextpageEnabled", Property: "enabled" }, { DataPath: "nextpageUrl", Property: "url" }, { DataPath: "nextpageHandler", Property: "click"}] })
				]
			}]
		},
		ItemTemplate: {
			Templates: [{
				LayoutElement: "#MyViAPI_dataPagingItemTemplate" + n,
				Elements: [
					new MyVi.Client.Controls.Link({ Id: "#MyViAPI_pageName" + n, Bindings: [{ DataPath: "text", Property: "text" }, { DataPath: "url", Property: "url" }, { DataPath: "gopageEventHandler", Property: "click"}] })
				]
			}]
		},
		ItemSelectedTemplate: {
			Templates: [{
				LayoutElement: "#MyViAPI_dataPagingSelectedItemTemplate" + n,
				Elements: [
					new MyVi.Client.Controls.Label({ Id: "#MyViAPI_pageName" + n, Bindings: [{ DataPath: "text", Property: "text"}] })
				]
			}]
		},
		ItemSeparatorTemplate: { Templates: [{ LayoutElement: "#MyViAPI_dataPagingSeparatorItemTemplate" + n}] }
	});

	var dataPaging2 = "dataPaging2" + n;
	MyVi.Instance.Controls[dataPaging2] = new MyVi.Client.Controls.UI.DataPaging({
		Id: "#MyViAPI_dataPaging2_" + n,
		LeftPages: ListColCount == 0 ? 2 : 3,
		RightPages: ListColCount == 0 ? 2 : 3,
		DataView: "." + dataView1,
		Bindings: [{ DataContext: "." + dataView1, DataPath: "Data.Paging", Property: "ItemsData"}],
		LayoutTemplate: {
			Templates: [{
				LayoutElement: "#MyViAPI_dataPagingLayoutTemplate" + n,
				Elements: [
					new MyVi.Client.Controls.Link({ Id: "#MyViAPI_prev" + n, Bindings: [{ DataPath: "prevpageEnabled", Property: "enabled" }, { DataPath: "prevpageUrl", Property: "url" }, { DataPath: "prevpageHandler", Property: "click"}] }),
					new MyVi.Client.Controls.Link({ Id: "#MyViAPI_next" + n, Bindings: [{ DataPath: "nextpageEnabled", Property: "enabled" }, { DataPath: "nextpageUrl", Property: "url" }, { DataPath: "nextpageHandler", Property: "click"}] })
				]
			}]
		},
		ItemTemplate: {
			Templates: [{
				LayoutElement: "#MyViAPI_dataPagingItemTemplate" + n,
				Elements: [
					new MyVi.Client.Controls.Link({ Id: "#MyViAPI_pageName" + n, Bindings: [{ DataPath: "text", Property: "text" }, { DataPath: "url", Property: "url" }, { DataPath: "gopageEventHandler", Property: "click"}] })
				]
			}]
		},
		ItemSelectedTemplate: {
			Templates: [{
				LayoutElement: "#MyViAPI_dataPagingSelectedItemTemplate" + n,
				Elements: [
					new MyVi.Client.Controls.Label({ Id: "#MyViAPI_pageName" + n, Bindings: [{ DataPath: "text", Property: "text"}] })
				]
			}]
		},
		ItemSeparatorTemplate: { Templates: [{ LayoutElement: "#MyViAPI_dataPagingSeparatorItemTemplate" + n}] }
	});

	MyVi.Instance.Controls[dataView1].DataBind();
	MyVi.Instance.Controls[listView1].DataBind();
	MyVi.Instance.Controls[dataPaging1].DataBind();
	MyVi.Instance.Controls[dataPaging2].DataBind();
}
;
Type.registerNamespace("MyVi.Instance.PartnerInfo");MyVi.Instance.PartnerInfo.CID="07ec4ef6-74ee-44ea-82f8-19257ce137f8";MyVi.Instance.PartnerInfo.APIURL="http://api.myvi.ru/../"; 
;
Type.registerNamespace("MyVi.Instance.UploadInfo");MyVi.Instance.UploadInfo.UploadID="outx5hCAKuWDjs2-DiQQVbM7xy9ojgg-P6k1JZA6lGQr-EIx0UXgyqw2";MyVi.Instance.UploadInfo.UploadUrl="http://upload.myvi.ru/upload.upl";
