function WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit) {
    this.eventTarget = eventTarget;
    this.eventArgument = eventArgument;
    this.validation = validation;
    this.validationGroup = validationGroup;
    this.actionUrl = actionUrl;
    this.trackFocus = trackFocus;
    this.clientSubmit = clientSubmit;
}
function WebForm_DoPostBackWithOptions(options) {
    var validationResult = true;
    if (options.validation) {
        if (typeof(Page_ClientValidate) == 'function') {
            validationResult = Page_ClientValidate(options.validationGroup);
        }
    }
    if (validationResult) {
        if ((typeof(options.actionUrl) != "undefined") && (options.actionUrl != null) && (options.actionUrl.length > 0)) {
            theForm.action = options.actionUrl;
        }
        if (options.trackFocus) {
            var lastFocus = theForm.elements["__LASTFOCUS"];
            if ((typeof(lastFocus) != "undefined") && (lastFocus != null)) {
                if (typeof(document.activeElement) == "undefined") {
                    lastFocus.value = options.eventTarget;
                }
                else {
                    var active = document.activeElement;
                    if ((typeof(active) != "undefined") && (active != null)) {
                        if ((typeof(active.id) != "undefined") && (active.id != null) && (active.id.length > 0)) {
                            lastFocus.value = active.id;
                        }
                        else if (typeof(active.name) != "undefined") {
                            lastFocus.value = active.name;
                        }
                    }
                }
            }
        }
    }
    if (options.clientSubmit) {
        __doPostBack(options.eventTarget, options.eventArgument);
    }
}
var __pendingCallbacks = new Array();
var __synchronousCallBackIndex = -1;
function WebForm_DoCallback(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync) {
    var postData = __theFormPostData +
                "__CALLBACKID=" + WebForm_EncodeCallback(eventTarget) +
                "&__CALLBACKPARAM=" + WebForm_EncodeCallback(eventArgument);
    if (theForm["__EVENTVALIDATION"]) {
        postData += "&__EVENTVALIDATION=" + WebForm_EncodeCallback(theForm["__EVENTVALIDATION"].value);
    }
    var xmlRequest,e;
    try {
        xmlRequest = new XMLHttpRequest();
    }
    catch(e) {
        try {
            xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e) {
        }
    }
    var setRequestHeaderMethodExists = true;
    try {
        setRequestHeaderMethodExists = (xmlRequest && xmlRequest.setRequestHeader);
    }
    catch(e) {}
    var callback = new Object();
    callback.eventCallback = eventCallback;
    callback.context = context;
    callback.errorCallback = errorCallback;
    callback.async = useAsync;
    var callbackIndex = WebForm_FillFirstAvailableSlot(__pendingCallbacks, callback);
    if (!useAsync) {
        if (__synchronousCallBackIndex != -1) {
            __pendingCallbacks[__synchronousCallBackIndex] = null;
        }
        __synchronousCallBackIndex = callbackIndex;
    }
    if (setRequestHeaderMethodExists) {
        xmlRequest.onreadystatechange = WebForm_CallbackComplete;
        callback.xmlRequest = xmlRequest;
        xmlRequest.open("POST", theForm.action, true);
        xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
        xmlRequest.send(postData);
        return;
    }
    callback.xmlRequest = new Object();
    var callbackFrameID = "__CALLBACKFRAME" + callbackIndex;
    var xmlRequestFrame = document.frames[callbackFrameID];
    if (!xmlRequestFrame) {
        xmlRequestFrame = document.createElement("IFRAME");
        xmlRequestFrame.width = "1";
        xmlRequestFrame.height = "1";
        xmlRequestFrame.frameBorder = "0";
        xmlRequestFrame.id = callbackFrameID;
        xmlRequestFrame.name = callbackFrameID;
        xmlRequestFrame.style.position = "absolute";
        xmlRequestFrame.style.top = "-100px"
        xmlRequestFrame.style.left = "-100px";
        try {
            if (callBackFrameUrl) {
                xmlRequestFrame.src = callBackFrameUrl;
            }
        }
        catch(e) {}
        document.body.appendChild(xmlRequestFrame);
    }
    var interval = window.setInterval(function() {
        xmlRequestFrame = document.frames[callbackFrameID];
        if (xmlRequestFrame && xmlRequestFrame.document) {
            window.clearInterval(interval);
            xmlRequestFrame.document.write("");
            xmlRequestFrame.document.close();
            xmlRequestFrame.document.write('<html><body><form method="post"><input type="hidden" name="__CALLBACKLOADSCRIPT" value="t"></form></body></html>');
            xmlRequestFrame.document.close();
            xmlRequestFrame.document.forms[0].action = theForm.action;
            var count = __theFormPostCollection.length;
            var element;
            for (var i = 0; i < count; i++) {
                element = __theFormPostCollection[i];
                if (element) {
                    var fieldElement = xmlRequestFrame.document.createElement("INPUT");
                    fieldElement.type = "hidden";
                    fieldElement.name = element.name;
                    fieldElement.value = element.value;
                    xmlRequestFrame.document.forms[0].appendChild(fieldElement);
                }
            }
            var callbackIdFieldElement = xmlRequestFrame.document.createElement("INPUT");
            callbackIdFieldElement.type = "hidden";
            callbackIdFieldElement.name = "__CALLBACKID";
            callbackIdFieldElement.value = eventTarget;
            xmlRequestFrame.document.forms[0].appendChild(callbackIdFieldElement);
            var callbackParamFieldElement = xmlRequestFrame.document.createElement("INPUT");
            callbackParamFieldElement.type = "hidden";
            callbackParamFieldElement.name = "__CALLBACKPARAM";
            callbackParamFieldElement.value = eventArgument;
            xmlRequestFrame.document.forms[0].appendChild(callbackParamFieldElement);
            if (theForm["__EVENTVALIDATION"]) {
                var callbackValidationFieldElement = xmlRequestFrame.document.createElement("INPUT");
                callbackValidationFieldElement.type = "hidden";
                callbackValidationFieldElement.name = "__EVENTVALIDATION";
                callbackValidationFieldElement.value = theForm["__EVENTVALIDATION"].value;
                xmlRequestFrame.document.forms[0].appendChild(callbackValidationFieldElement);
            }
            var callbackIndexFieldElement = xmlRequestFrame.document.createElement("INPUT");
            callbackIndexFieldElement.type = "hidden";
            callbackIndexFieldElement.name = "__CALLBACKINDEX";
            callbackIndexFieldElement.value = callbackIndex;
            xmlRequestFrame.document.forms[0].appendChild(callbackIndexFieldElement);
            xmlRequestFrame.document.forms[0].submit();
        }
    }, 10);
}
function WebForm_CallbackComplete() {
    for (var i = 0; i < __pendingCallbacks.length; i++) {
        callbackObject = __pendingCallbacks[i];
        if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
            WebForm_ExecuteCallback(callbackObject);
            if (!__pendingCallbacks[i].async) {
                __synchronousCallBackIndex = -1;
            }
            __pendingCallbacks[i] = null;
            var callbackFrameID = "__CALLBACKFRAME" + i;
            var xmlRequestFrame = document.getElementById(callbackFrameID);
            if (xmlRequestFrame) {
                xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
            }
        }
    }
}
function WebForm_ExecuteCallback(callbackObject) {
    var response = callbackObject.xmlRequest.responseText;
    if (response.charAt(0) == "s") {
        if ((typeof(callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) {
            callbackObject.eventCallback(response.substring(1), callbackObject.context);
        }
    }
    else if (response.charAt(0) == "e") {
        if ((typeof(callbackObject.errorCallback) != "undefined") && (callbackObject.errorCallback != null)) {
            callbackObject.errorCallback(response.substring(1), callbackObject.context);
        }
    }
    else {
        var separatorIndex = response.indexOf("|");
        if (separatorIndex != -1) {
            var validationFieldLength = parseInt(response.substring(0, separatorIndex));
            if (!isNaN(validationFieldLength)) {
                var validationField = response.substring(separatorIndex + 1, separatorIndex + validationFieldLength + 1);
                if (validationField != "") {
                    var validationFieldElement = theForm["__EVENTVALIDATION"];
                    if (!validationFieldElement) {
                        validationFieldElement = document.createElement("INPUT");
                        validationFieldElement.type = "hidden";
                        validationFieldElement.name = "__EVENTVALIDATION";
                        theForm.appendChild(validationFieldElement);
                    }
                    validationFieldElement.value = validationField;
                }
                if ((typeof(callbackObject.eventCallback) != "undefined") && (callbackObject.eventCallback != null)) {
                    callbackObject.eventCallback(response.substring(separatorIndex + validationFieldLength + 1), callbackObject.context);
                }
            }
        }
    }
}
function WebForm_FillFirstAvailableSlot(array, element) {
    var i;
    for (i = 0; i < array.length; i++) {
        if (!array[i]) break;
    }
    array[i] = element;
    return i;
}
var __nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1);
var __theFormPostData = "";
var __theFormPostCollection = new Array();
function WebForm_InitCallback() {
    var count = theForm.elements.length;
    var element;
    for (var i = 0; i < count; i++) {
        element = theForm.elements[i];
        var tagName = element.tagName.toLowerCase();
        if (tagName == "input") {
            var type = element.type;
            if ((type == "text" || type == "hidden" || type == "password" ||
                ((type == "checkbox" || type == "radio") && element.checked)) &&
                (element.id != "__EVENTVALIDATION")) {
                WebForm_InitCallbackAddField(element.name, element.value);
            }
        }
        else if (tagName == "select") {
            var selectCount = element.options.length;
            for (var j = 0; j < selectCount; j++) {
                var selectChild = element.options[j];
                if (selectChild.selected == true) {
                    WebForm_InitCallbackAddField(element.name, element.value);
                }
            }
        }
        else if (tagName == "textarea") {
            WebForm_InitCallbackAddField(element.name, element.value);
        }
    }
}
function WebForm_InitCallbackAddField(name, value) {
    var nameValue = new Object();
    nameValue.name = name;
    nameValue.value = value;
    __theFormPostCollection[__theFormPostCollection.length] = nameValue;
    __theFormPostData += WebForm_EncodeCallback(name) + "=" + WebForm_EncodeCallback(value) + "&";
}
function WebForm_EncodeCallback(parameter) {
    if (encodeURIComponent) {
        return encodeURIComponent(parameter);
    }
    else {
        return escape(parameter);
    }
}
var __disabledControlArray = new Array();
function WebForm_ReEnableControls() {
    if (typeof(__enabledControlArray) == 'undefined') {
        return false;
    }
    var disabledIndex = 0;
    for (var i = 0; i < __enabledControlArray.length; i++) {
        var c;
        if (__nonMSDOMBrowser) {
            c = document.getElementById(__enabledControlArray[i]);
        }
        else {
            c = document.all[__enabledControlArray[i]];
        }
        if ((typeof(c) != "undefined") && (c != null) && (c.disabled == true)) {
            c.disabled = false;
            __disabledControlArray[disabledIndex++] = c;
        }
    }
    setTimeout("WebForm_ReDisableControls()", 0);
    return true;
}
function WebForm_ReDisableControls() {
    for (var i = 0; i < __disabledControlArray.length; i++) {
        __disabledControlArray[i].disabled = true;
    }
}
function WebForm_FireDefaultButton(event, target) {
    if (event.keyCode == 13) {
        var src = event.srcElement || event.target;
        if (!src || (src.tagName.toLowerCase() != "textarea")) {
            var defaultButton;
            if (__nonMSDOMBrowser) {
               defaultButton = document.getElementById(target);
            }
            else {
                defaultButton = document.all[target];
            }
            if (defaultButton && typeof(defaultButton.click) != "undefined") {
                defaultButton.click();
                event.cancelBubble = true;
                if (event.stopPropagation) event.stopPropagation();
                return false;
            }
        }
    }
    return true;
}
function WebForm_GetScrollX() {
    if (__nonMSDOMBrowser) {
        return window.pageXOffset;
    }
    else {
        if (document.documentElement && document.documentElement.scrollLeft) {
            return document.documentElement.scrollLeft;
        }
        else if (document.body) {
            return document.body.scrollLeft;
        }
    }
    return 0;
}
function WebForm_GetScrollY() {
    if (__nonMSDOMBrowser) {
        return window.pageYOffset;
    }
    else {
        if (document.documentElement && document.documentElement.scrollTop) {
            return document.documentElement.scrollTop;
        }
        else if (document.body) {
            return document.body.scrollTop;
        }
    }
    return 0;
}
function WebForm_SaveScrollPositionSubmit() {
    if (__nonMSDOMBrowser) {
        theForm.elements['__SCROLLPOSITIONY'].value = window.pageYOffset;
        theForm.elements['__SCROLLPOSITIONX'].value = window.pageXOffset;
    }
    else {
        theForm.__SCROLLPOSITIONX.value = WebForm_GetScrollX();
        theForm.__SCROLLPOSITIONY.value = WebForm_GetScrollY();
    }
    if ((typeof(this.oldSubmit) != "undefined") && (this.oldSubmit != null)) {
        return this.oldSubmit();
    }
    return true;
}
function WebForm_SaveScrollPositionOnSubmit() {
    theForm.__SCROLLPOSITIONX.value = WebForm_GetScrollX();
    theForm.__SCROLLPOSITIONY.value = WebForm_GetScrollY();
    if ((typeof(this.oldOnSubmit) != "undefined") && (this.oldOnSubmit != null)) {
        return this.oldOnSubmit();
    }
    return true;
}
function WebForm_RestoreScrollPosition() {
    if (__nonMSDOMBrowser) {
        window.scrollTo(theForm.elements['__SCROLLPOSITIONX'].value, theForm.elements['__SCROLLPOSITIONY'].value);
    }
    else {
        window.scrollTo(theForm.__SCROLLPOSITIONX.value, theForm.__SCROLLPOSITIONY.value);
    }
    if ((typeof(theForm.oldOnLoad) != "undefined") && (theForm.oldOnLoad != null)) {
        return theForm.oldOnLoad();
    }
    return true;
}
function WebForm_TextBoxKeyHandler(event) {
    if (event.keyCode == 13) {
        var target;
        if (__nonMSDOMBrowser) {
            target = event.target;
        }
        else {
            target = event.srcElement;
        }
        if ((typeof(target) != "undefined") && (target != null)) {
            if (typeof(target.onchange) != "undefined") {
                target.onchange();
                event.cancelBubble = true;
                if (event.stopPropagation) event.stopPropagation();
                return false;
            }
        }
    }
    return true;
}
function WebForm_TrimString(value) {
    return value.replace(/^\s+|\s+$/g, '')
}
function WebForm_AppendToClassName(element, className) {
    var currentClassName = ' ' + WebForm_TrimString(element.className) + ' ';
    className = WebForm_TrimString(className);
    var index = currentClassName.indexOf(' ' + className + ' ');
    if (index === -1) {
        element.className = (element.className === '') ? className : element.className + ' ' + className;
    }
}
function WebForm_RemoveClassName(element, className) {
    var currentClassName = ' ' + WebForm_TrimString(element.className) + ' ';
    className = WebForm_TrimString(className);
    var index = currentClassName.indexOf(' ' + className + ' ');
    if (index >= 0) {
        element.className = WebForm_TrimString(currentClassName.substring(0, index) + ' ' +
            currentClassName.substring(index + className.length + 1, currentClassName.length));
    }
}
function WebForm_GetElementById(elementId) {
    if (document.getElementById) {
        return document.getElementById(elementId);
    }
    else if (document.all) {
        return document.all[elementId];
    }
    else return null;
}
function WebForm_GetElementByTagName(element, tagName) {
    var elements = WebForm_GetElementsByTagName(element, tagName);
    if (elements && elements.length > 0) {
        return elements[0];
    }
    else return null;
}
function WebForm_GetElementsByTagName(element, tagName) {
    if (element && tagName) {
        if (element.getElementsByTagName) {
            return element.getElementsByTagName(tagName);
        }
        if (element.all && element.all.tags) {
            return element.all.tags(tagName);
        }
    }
    return null;
}
function WebForm_GetElementDir(element) {
    if (element) {
        if (element.dir) {
            return element.dir;
        }
        return WebForm_GetElementDir(element.parentNode);
    }
    return "ltr";
}
function WebForm_GetElementPosition(element) {
    var result = new Object();
    result.x = 0;
    result.y = 0;
    result.width = 0;
    result.height = 0;
    if (element.offsetParent) {
        result.x = element.offsetLeft;
        result.y = element.offsetTop;
        var parent = element.offsetParent;
        while (parent) {
            result.x += parent.offsetLeft;
            result.y += parent.offsetTop;
            var parentTagName = parent.tagName.toLowerCase();
            if (parentTagName != "table" &&
                parentTagName != "body" && 
                parentTagName != "html" && 
                parentTagName != "div" && 
                parent.clientTop && 
                parent.clientLeft) {
                result.x += parent.clientLeft;
                result.y += parent.clientTop;
            }
            parent = parent.offsetParent;
        }
    }
    else if (element.left && element.top) {
        result.x = element.left;
        result.y = element.top;
    }
    else {
        if (element.x) {
            result.x = element.x;
        }
        if (element.y) {
            result.y = element.y;
        }
    }
    if (element.offsetWidth && element.offsetHeight) {
        result.width = element.offsetWidth;
        result.height = element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
        result.width = element.style.pixelWidth;
        result.height = element.style.pixelHeight;
    }
    return result;
}
function WebForm_GetParentByTagName(element, tagName) {
    var parent = element.parentNode;
    var upperTagName = tagName.toUpperCase();
    while (parent && (parent.tagName.toUpperCase() != upperTagName)) {
        parent = parent.parentNode ? parent.parentNode : parent.parentElement;
    }
    return parent;
}
function WebForm_SetElementHeight(element, height) {
    if (element && element.style) {
        element.style.height = height + "px";
    }
}
function WebForm_SetElementWidth(element, width) {
    if (element && element.style) {
        element.style.width = width + "px";
    }
}
function WebForm_SetElementX(element, x) {
    if (element && element.style) {
        element.style.left = x + "px";
    }
}
function WebForm_SetElementY(element, y) {
    if (element && element.style) {
        element.style.top = y + "px";
    }
}

var AJAX_BaseURL='http://b2b.splaytv.de/Comp/nI2UN7S4oac70p_HhzfbV0';var AJAX_WebBaseURL='http://www.tim-maelzer.info/';
if(!self.AJAX_BaseURL)
    self.AJAX_BaseURL=document.location.href;
    
function SetQueryString(location, prop, val){
   var pos=location.indexOf(prop);
   if(val==null){
       val="";
       if(pos!=-1){
            var pos2=location.indexOf("&",pos);
            if(pos2==-1)
               location=location.substr(0,pos-1);
            else
               location=location.substr(0,pos) + location.substr(pos2+1);
       }
   }
   else{
       if(pos!=-1 && (location.charAt(pos-1)=="?" || location.charAt(pos-1)=="&")){
            var pos2=location.indexOf("&",pos);
            if(pos2==-1)
                location=location.substr(0,pos-1) + location.charAt(pos-1) + prop + "=";
            else
                location=location.substr(0,pos) + location.substr(pos2+1) + "&" + prop + "=";
       }
       else
          location=location + (location.indexOf("?")==-1?"?":"&") + prop + "=";
   }
   return location + val;
}
var traceObj=null;
var traceable=false;
function Trace(str){
    if(!traceable) return;
    if(traceObj==null){
        traceObj=document.createElement("DIV");
        traceObj.style.position="absolute";
        traceObj.style.left="0px";
        traceObj.style.left="0px";
        traceObj.style.zIndex=10000001;
        traceObj.style.overflow="auto";
        traceObj.style.width="200px";
        traceObj.style.height="400px";
        traceObj.style.fontSize="8px";
        traceObj.style.color="red";
        traceObj.style.backgroundColor="yellow";
        document.body.appendChild(traceObj);
    }
    traceObj.innerHTML += str + "<BR>";
}
String.prototype.replaceAll=function(search,rStr){
    var str=this;
    if(RegExp.prototype.isPrototypeOf(search))
        while(search.test(str))
            str=str.replace(search,rStr);
    else{
        var tArr=str.split(search);
        str=tArr.join(rStr);
        tArr.length=0;
        tArr=null;
    }
    return str;
};
String.Format = function(str) {
    if (!str) return str;
    var tokens = str.split(/(\{\d+\})/);
    for (var x = 0; x < tokens.length; x++) {
        if (tokens[x].charAt(0) == "{" && tokens[x].charAt(tokens[x].length - 1) == "}")
            tokens[x] = arguments[new Number(tokens[x].substring(1, tokens[x].length - 1))+1];
    }
    return tokens.join("");
};

Object.extend = function(dest, source, replace) {
    for (var prop in source) {
        if (replace == false && dest[prop] != null) { continue; }
        dest[prop] = source[prop];
    }
    return dest;
};


Date.dateSeparator=".";
Date.timeSeparator=":";
Object.extend(Date.prototype, {
    format: function(formatStr) {
        var token = "";
        var ret = "";
        for (var x = 0; x < formatStr.length; x++) {
            var chr = formatStr.charAt(x);
            if (chr == Date.dateSeparator || chr == Date.timeSeparator || chr == "/" || chr == "." || chr == " ") {
                ret += this.formatFraction(token) + (chr == "/" ? Date.dateSeparator : chr);
                token = "";
            }
            else
                token += chr;
        }
        if (token != "")
            ret += this.formatFraction(token);
        return ret;
    },
    formatFraction: function(fraction) {
        switch (fraction) {
            case "hh":
            case "HH":
                return this.normalizeNum(this.getHours(), 2);
            case "mm":
                return this.normalizeNum(this.getMinutes(), 2);
            case "ss":
            case "SS":
                return this.normalizeNum(this.getSeconds(), 2);
            case "ff":
            case "FF":
                return this.normalizeNum(this.getMilliseconds(), 3);
            case "dd":
            case "DD":
                return this.normalizeNum(this.getDate(), 2);
            case "MM":
                return this.normalizeNum(this.getMonth() + 1, 2);
            case "yy":
            case "YY":
            case "yyyy":
            case "YYYY":
                return this.normalizeNum(this.getFullYear(), fraction.length);
        }
    },
    normalizeNum: function(num, digits) {
        var minNum = Math.pow(10, digits - 1);
        var ret = new String(num);
        if (num < minNum)
            for (var x = ret.length; x < digits; x++)
            ret = "0" + ret;
        else if (ret.length > digits)
            ret = ret.substr(ret.length - digits);
        return ret;
    }
});

Object.extend(Function.prototype, {
	apply: function(o, a) {
		var r, x = "__fapply";
		if(typeof o != "object") { o = {}; }
		o[x] = this;
		var s = "r = o." + x + "(";
		for(var i=0; i<a.length; i++) {
			if(i>0) { s += ","; }
			s += "a[" + i + "]";
		}
		s += ");";
		eval(s);
		delete o[x];
		return r;
	}
},false);

if(!window.$get)
   window.$get=function(id){
        return document.getElementById(id);
   };
if(!window.$create)
   window.$create=function(tag){
        return document.createElement(tag);
    };
    
String.prototype.toObject = function() {
   if (this.length == 0) return null;
   var ns = this.split(".");
   var obj = window;
   for (var nsi = 0; nsi < ns.length; nsi++)
       obj = obj[ns[nsi]] || (obj[ns[nsi]] = {});
   return obj;
};

   

Object.extend("Sys.Browser".toObject(), {
    InternetExplorer: {},
    Firefox: {},
    Safari: {},
    Opera: {},
    agent: null
});

if (navigator.userAgent.indexOf(' MSIE ') > -1) {
    Sys.Browser.agent = Sys.Browser.InternetExplorer;
}
else if (navigator.userAgent.indexOf(' Firefox/') > -1) {
    Sys.Browser.agent = Sys.Browser.Firefox;
}
else if (navigator.userAgent.indexOf(' Safari/') > -1) {
    Sys.Browser.agent = Sys.Browser.Safari;
}
else if (navigator.userAgent.indexOf('Opera/') > -1) {
    Sys.Browser.agent = Sys.Browser.Opera;
}

function CallError(msg){
    this.Message=msg;
}

if (Sys.Browser.agent == Sys.Browser.Safari && !Object.prototype.isPrototypeOf) {
    Object.prototype.classType = 100;
    Object.prototype.isPrototypeOf = function(obj) {
        return !!obj && obj.classType == this.classType;
    }
    Array.prototype.classType = 200;
    Date.prototype.classType = 300;
    CallError.prototype.classType = 400;
    RegExp.prototype.classType = 500;
    Number.prototype.classType = 600;    
}
 
 function RegisterService(objectType,url,object){
    RegisterObject(objectType,object,"Services",false);
    JS.Services[url]=object;
 }
 
 function RegisterObject(objectPath, object, parentObjId, registerFull){
    var nSs=objectPath.split(".");
    var obj=null;
    if(parentObjId){
        if(!JS[parentObjId]) JS[parentObjId]={};
        obj=JS[parentObjId];
    }
    else
        obj=JS;
    if(registerFull && nSs.length>1)
        obj[objectPath]=object;
    for(nsI=0;nsI<nSs.length-1;nsI++){
        if(!obj[nSs[nsI]])
            obj=obj[nSs[nsI]]={};
        else
            obj=obj[nSs[nsI]];
    }
    if(obj)obj[nSs[nSs.length-1]]=object;    
 }
 function ChangeObjectLocations(location, object) {
     if (location && location.charAt(location.length - 1) == '/') location = location.substr(0, location.length - 1);
     if (!object) object = JS;
     if (!!object.Location) object.Location = location;
     for (var obj in object)
         if (object[obj] && object[obj].CallType) ChangeObjectLocations(location, object[obj]);
 }
 function AjaxCallable(Id,CallbackId, Location, callType){
    this.Id=Id;
    this.CallbackId=CallbackId;
    this.Location = Location;
    this.CallType=callType?callType:"JS";
    RegisterObject(this.Id,this,null,false);
 }
 
 AjaxCallable.prototype={
 Extend : function(attrList){
     Object.extend(this,attrList,true);
 }
 , CallMethod: function(methodName, async, cachable, argus) {
    var callBack=argus[0];
    var ctx=argus[1];
    var args=getArguments(2,argus);
    var location=this.GetLocation();
    WebForm_DoCallbackJSON_Intern(this.CallType, location, methodName, this.CallbackId, JSONGetArguments(this.Id, methodName, args), callBack, ctx, null, async, !cachable);
  }
 ,GetLocation : function(){
    if(!this.Location)
       this.Location=self.AJAX_BaseURL;
    return this.Location;
 }
 }
 function AjaxObject(Id, Location){
    this.Id = Id;
    this.CallbackId = Id;
    if(Location && Location.charAt(Location.length-1)=='/')Location=Location.substr(0,Location.length-1);
    this.Location = Location;
    this.CallType="JSO";    
    RegisterObject(Id,this,null,false);
 }
 Object.extend(AjaxObject.prototype, AjaxCallable.prototype, false);

 function AjaxService(Id,CallbackId, Location){
    this.Id=Id;
    this.CallbackId=CallbackId;
    this.Location = Location;
    this.CallType="JSS";
    RegisterService(this.Id,Location,this);
 }
 Object.extend(AjaxService.prototype,AjaxCallable.prototype,false);
 
 function AjaxCallableModule(Id, objectId, CallbackId, scriptRender, isInForm, onLoad, renderTarget,Location, callType){
    this.Id=Id.substr(1);
    this.ObjectId=objectId;
    this.CallbackId=CallbackId;
    this.ScriptRender=scriptRender;
    this.IsInForm=isInForm;
    this.OnLoad=onLoad;
    this.RenderTarget=renderTarget;
    this.OnLoadTriggers=null;
    this.Location = Location;
    this.CallType=callType?callType:"JS";

    RegisterObject(this.Id,this,"Page",false);
    
    if(!scriptRender)
       this.Submit=this.Render=null;
 }
  Object.extend(AjaxCallableModule.prototype,AjaxCallable.prototype,false);
 
 Object.extend(AjaxCallableModule.prototype,
 {Submit : function(caller,onLoad){
    if(this.OnLoadTriggers!=null && this.OnLoadTriggers.length>0){
       var trgOnload=this.Trigger.apply(this);
       WebForm_DoCallbackJSRender(this.CallbackId,this.GetRenderTarget(),caller,true,function(){if(onLoad)onLoad();else if(this.OnLoad)this.OnLoad();try{trgOnload()}catch(e){}}); 
    }
    else
       WebForm_DoCallbackJSRender(this.CallbackId,this.GetRenderTarget(),caller,true,onLoad?onLoad:this.OnLoad);
 }
 ,Render : function(onLoad){
    if(this.OnLoadTriggers!=null && this.OnLoadTriggers.length>0){
      var trgOnload=this.Trigger.apply(this);
       WebForm_DoCallbackJSRender(this.CallbackId,this.GetRenderTarget(),null,true,function(){if(onLoad)onLoad();else if(this.OnLoad)this.OnLoad();try{trgOnload()}catch(e){}}); 
    }
    else
       WebForm_DoCallbackJSRender(this.CallbackId,this.GetRenderTarget(),null,true,onLoad?onLoad:this.OnLoad);
 }
 ,Trigger:function(){
    var ctx=this.OnLoadTriggers;
    var propertyBag=$get(this.ObjectId + "_TriggerProperties");
    if(ctx!=null && ctx.length>0 && propertyBag)
        for(var ind=0;ind<ctx.length;ind++){
            var params=ctx[ind].Params;
            var eventParams="";
            for(var j=0;j<params.length;j++)
                 if(propertyBag.getAttribute("Trg" + params[j].PName)!=null)
                    eventParams += ((eventParams!="")?"<":"") + params[j].TPName + ":" + propertyBag.getAttribute("Trg" + params[j].PName);
            window.setTimeout("JS.Page." + ctx[ind].Id + ".SendTrigger(\"" + eventParams + "\")",50 );
        }
 }
 ,SendTrigger:function(info){
    WebForm_DoCallbackJSON_Intern("JST" ,null,info, this.CallbackId, this.GetRenderTarget(), this.OnLoad, null,null, true);
 }
 ,GetRenderTarget : function(){
    if(this.RenderTarget)
        return $get(this.RenderTarget);
    else if($get(this.ObjectId))
        return $get(this.ObjectId).parentNode;
    alert("for " + this.Id + " Render parent is not found. Please check");
    return null;        
 }
 ,getElementById : function(id){
    return $get(this.ObjectId + "_" + id);
 }
 
 }
 ,true);
 
 var ErrorHandlers={Default:DefaultErrorHandler};
 function getArguments(startInd,argus){
                var args=[];
                if(argus.length>=startInd)
                for(var j=startInd;j<argus.length;j++)
                    args.push(argus[j]);
                return args;

 }
        var JS={};

        function JSONFindParams(obj,method){
            var ServiceParam;
            if(obj=="Page")
                ServiceParam=JS[obj];
             else if(JS["Page"]||JS["Services"]){
                if(obj.indexOf(".")==-1){
                   ServiceParam=JS["Page"]&& JS["Page"][obj]?JS["Page"][obj]:JS["Services"]&&JS["Services"][obj]?JS["Services"][obj]:JS[obj];
                }
                else{
                   var objArr=obj.split(".");
                   ServiceParam=JS["Page"];
                   var ServiceParamAlt=JS["Services"]

                   for(var j=0;j<objArr.length;j++){
                      if(ServiceParamAlt && ServiceParamAlt[objArr[j]])ServiceParamAlt=ServiceParamAlt[objArr[j]];
                      if(ServiceParam && ServiceParam[objArr[j]])ServiceParam=ServiceParam[objArr[j]];
                      else{
                        ServiceParam=ServiceParamAlt;
                        ServiceParamAlt=null;
                      }
                      if(!ServiceParam && !ServiceParamAlt)
                        break;
                   }
                }
             }
             return ServiceParam;
        }
        function JSONGetArguments(obj,method,args){
             var ServiceParam=JSONFindParams(obj,method);
             
             if(!ServiceParam) throw "Object:" + obj + " is not supported";
             if(!ServiceParam[method]) throw "Method:" + obj + "." + method + " is not supported";
             var params=null;
             for(var j=0;j<ServiceParam[method + "Vars"].length;j++)
                 if(ServiceParam[method + "Vars"][j].length==args.length){
                    params=ServiceParam[method + "Vars"][j];
                    break;
                 }
            if(params==null)
               throw "Suitable parameters could not be found";
            var methodParams={};
            for (var j = 0; j < params.length; j++)
                methodParams["p" + j] = args[j];
//                methodParams[params[j]]=args[j];

            return JavaScriptSerializer.serialize(methodParams);
        }
        
        function WebForm_DoCallbackJSRender(eventTarget,replaceObj,callerObj,useAsync, onLoad) {
            WebForm_DoCallbackJSON_Intern("JSR" ,null,callerObj, eventTarget,replaceObj, onLoad, null,null, useAsync);
        }
        
        function WebForm_DoCallbackJSON_Intern(callType,callUrl,method,eventTarget, eventArgument, eventCallback, ctx, errorCallback, useAsync, noCache) {
            if(callType=="JSO"){
                callUrl=GetUrl(callUrl);
                callUrl += "/" + method;
            }
            var saveTheForm=self.theForm;
            var saveTheFormData=self.__theFormPostData;
            var saveTheFormPostCollection = self.__theFormPostCollection;
            if(callType=="JS" || callType=="JSS" || callType=="JSO"){
                theForm={action:GetUrl(callUrl)};
                __theFormPostData = "_" + callType + "=" + method + "&__VIEWSTATE=&";
                if (noCache) __theFormPostData += "__NoCache=1&";
                var newContext = { callback: eventCallback, context: ctx };
                newContext.callbackId = method + "." + eventTarget + "." + escape(eventArgument.replace(/["':\s{},\\<>]+/g, "@")).replace(/[%]*/g,"");
                
                WebForm_DoCallback(eventTarget,eventArgument,WebForm_JSONCallback,newContext,DefaultError,useAsync);
            }
            else{
                eventParams="";
                if(!method){
                    theForm={action:GetUrl()};
                    __theFormPostData="_" + callType + "=true&__VIEWSTATE=&";
                }
                else if(callType=="JST"){
                    theForm={action:GetUrl()};
                    __theFormPostData="_" + callType + "=true&__VIEWSTATE=&";
                    eventParams=method;
                }
                else{
                    __theFormPostCollection=[];
                    __theFormPostData="";
                    theForm=document.getElementById(eventTarget.replaceAll(/\$/,"_"));
                    if(method.form)
                        theForm=method.form;
                    if(!theForm.action) theForm.action=GetUrl();
                    if(method.form)
                        theForm.elements["__EVENTTARGET"].value=method.name;
                    else
                        theForm.elements["__EVENTTARGET"].value=method;
                    //__theFormPostData += callType + "=true&";
                    WebForm_InitCallbackAddField("_" + callType,"true");
                    WebForm_InitCallback();
                }
                var newContext={renderParent:eventArgument};
                
                if(eventCallback) newContext.onLoad=eventCallback;
                WebForm_DoCallback(eventTarget,eventParams,WebForm_JSRenderCallback,newContext,DefaultError,useAsync);                
            }
            if(saveTheForm)theForm=saveTheForm;
            if(saveTheFormPostCollection)__theFormPostCollection = saveTheFormPostCollection;
            if(saveTheFormData)__theFormPostData = saveTheFormData;
            
        }
        function GetUrl(url){
            if(!url)
                url=self.AJAX_BaseURL;
            return url.split("#")[0];
        }
        function WebForm_JSONCallback(ret,ctx, returnIt){
            var retObj=JavaScriptSerializer.deserialize(ret);
            if (retObj && CallError.prototype.isPrototypeOf(retObj))
                HandleError(retObj.Message);
            else if (ctx && ctx.callback) {
                ctx.callback(retObj, ctx.context);
            }
            else if (returnIt)
                return retObj;
            return null;
        }
        function HandleError(msg){
            if(!ErrorHandlers[msg.substr(0,5)] || ErrorHandlers[msg.substr(0,5)](msg)==false)
                ErrorHandlers.Default(msg);
        }
        
        function AddErrorHandler(ErrorId,handler){
           ErrorHandlers[ErrorId] = handler;
        }
        function DefaultErrorHandler(msg){
            alert(msg);
        }
        function ShowLogin(msg){
            if(!LogInModule || !LogInModule.Show) return false;
            LogInModule.Show();
            return true;
        }
        function WebForm_JSRenderCallback(ret,ctx){
            ctx.renderParent.innerHTML=ret;
            if(ctx.onLoad)ctx.onLoad();
            if(window.CreateCheckForm){
            
                if(ret.indexOf("chkOn")!=-1){
                    var forms=ctx.renderParent.getElementsByTagName("FORM");
                    if(forms.length>0)
                        window.CreateCheckForm(forms[0],self);
                }
            }
        }
        function DefaultError(ret,ctx){
            HandleError(ret.substr(0,ret.length-1));
        }
   function StringBuilder(){
        this.Items=[];
   }
StringBuilder.prototype = {append:function(val){this.Items.push(val);},clear:function(){this.Items.length=0;},toString:function(){return this.Items.join('');}};

JavaScriptSerializer={serializeWithBuilder : function (object, stringBuilder) {
    var i;
    switch (typeof object) {
    case 'object':
        if (object) {
            
             if (Array.prototype.isPrototypeOf(object)) {
                stringBuilder.append('[');
                for (i = 0; i < object.length; ++i) {
                    if (i > 0) {
                        stringBuilder.append(',');
                    }
                    stringBuilder.append(JavaScriptSerializer.serializeWithBuilder(object[i], stringBuilder));
                }
                stringBuilder.append(']');
            }
            else {
                if (Date.prototype.isPrototypeOf(object)) {
//                    stringBuilder.append('"@');
                    stringBuilder.append('"\\/Date(');
                    stringBuilder.append('' + object.getTime());
                    stringBuilder.append(')\\/"');
//                    stringBuilder.append('@"');
                    break;
                }

                var properties = [];
                var propertyCount = 0;
                for (var name in object) {
                    properties[propertyCount++] = name;
                }
                
                stringBuilder.append('{');
                var needComma = false;
                for (i=0; i<propertyCount; i++) {
                    var value = object[properties[i]];
                    if (typeof value !== 'undefined' && typeof value !== 'function') {
                        if (needComma) {
                            stringBuilder.append(',');
                        }
                        else {
                            needComma = true;
                        }

                        stringBuilder.append(JavaScriptSerializer.serializeWithBuilder(properties[i], stringBuilder));
                        stringBuilder.append(':');
                        stringBuilder.append(JavaScriptSerializer.serializeWithBuilder(value, stringBuilder));
                    }
                }
                stringBuilder.append('}');
            }
        }
        else {
            stringBuilder.append('null');
        }
        break;

    case 'number':
        if (isFinite(object)) {
            stringBuilder.append(String(object));
        }
        else {
            throw "This can not be serialized Infinite number";
        }
        break;

    case 'string':
        stringBuilder.append('"');

                if (Sys.Browser.agent === Sys.Browser.Safari || JavaScriptSerializer._stringRegEx.test(object)) {
            var length = object.length;
            for (i = 0; i < length; ++i) {
                var curChar = object.charAt(i);
                                if (curChar >= ' ') {
                                        if (curChar === '\\' || curChar === '"') {
                        stringBuilder.append('\\');
                    }
                    stringBuilder.append(curChar);
                }
                else {
                    switch (curChar) {
                        case '\b':
                            stringBuilder.append('\\b');
                            break;
                        case '\f':
                            stringBuilder.append('\\f');
                            break;
                        case '\n':
                            stringBuilder.append('\\n');
                            break;
                        case '\r':
                            stringBuilder.append('\\r');
                            break;
                        case '\t':
                            stringBuilder.append('\\t');
                            break;
                        default:
                            stringBuilder.append('\\u00');
                            if (curChar.charCodeAt() < 16) stringBuilder.append('0');
                            stringBuilder.append(curChar.charCodeAt().toString(16));
                    }
                }
            }
        } else {
            stringBuilder.append(object);
        }
        stringBuilder.append('"');
        break;

    case 'boolean':
        stringBuilder.append(object.toString());
        break;

    default:
        stringBuilder.append('null');
        break;
    }
},
serialize : function (object) {
    var stringBuilder = new StringBuilder();
    JavaScriptSerializer.serializeWithBuilder(object, stringBuilder);
    return stringBuilder.toString();
}
,
deserialize : function (data) {
    if (data.length === 0) throw "cannotDeserializeEmptyString";
    //var exp = data.replace(new RegExp('\\"@(-?[0-9]+)@\\"', 'g'), "new Date($1)");
    var exp = data.replace(JavaScriptSerializer._dateRegEx, "$1new Date($2)");

    exp = exp.replace(new RegExp('\\"@_Error(.*)Error_@\\"', 'g'), "new CallError('$1')");
    return eval('(' + exp + ')');
},   

_stringRegEx : new RegExp('["\b\f\n\r\t\\\\\x00-\x1F]', 'i'),
_dateRegEx : new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"', 'g')

}


var LogInModule=null;
AddErrorHandler("LOGIN",ShowLogin);


function Alert(obj){
    alert(obj);
}
// WebForm_CallbackComplete correction
function WebForm_CallbackComplete() {
    for (var i = 0; i < __pendingCallbacks.length; i++) {
        var callbackObject = __pendingCallbacks[i];
        if (callbackObject && !callbackObject.processing && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
            try {
                
                callbackObject.processing = true; ; 
                WebForm_ExecuteCallback(callbackObject);
            }catch(e){
                throw e;
            }
            finally{
                if (__pendingCallbacks[i] && !__pendingCallbacks[i].async) {
                    __synchronousCallBackIndex = -1;
                }

                var callbackFrameID = "__CALLBACKFRAME" + (callbackObject.context.callbackId ? callbackObject.context.callbackId : (callbackObject.FrameId ? callbackObject.FrameId : i));
                var xmlRequestFrame = document.getElementById(callbackFrameID);
                if (xmlRequestFrame) {
                    Trace("found " + callbackFrameID);
                    if (!self.WebForm_DoCallback_UseIFRAME) {
                        xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
                        delete __pendingCallbacks[callbackObject.context.callbackId];
                        __pendingCallbacks[i] = null; 
                    }
                    else
                        window.setTimeout("ClearCallback('" + callbackFrameID + "');__pendingCallbacks[" + i + "]=null;", 50);
                }
                else
                    __pendingCallbacks[i] = null;  
            }
        }
    }
}
function ClearCallback(callbackFrameID){
    var xmlRequestFrame = document.getElementById(callbackFrameID);
    if (xmlRequestFrame) {
        xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
        Trace("removed " + callbackFrameID);
    }
}

function WebForm_InitCallback() {
    var count = theForm.elements.length;
    var element;
    for (var i = 0; i < count; i++) {
        element = theForm.elements[i];
        var tagName = element.tagName.toLowerCase();
        if (tagName == "input") {
            var type = element.type;
            if ((type == "text" || type == "hidden" || type == "password" ||
                ((type == "checkbox" || type == "radio") && element.checked)) &&
                (element.id != "__EVENTVALIDATION")) {
                WebForm_InitCallbackAddField(element.name, element.value);
            }
        }
        else if (tagName == "select") {
            var selectCount = element.options.length;
            for (var j = 0; j < selectCount; j++) {
                var selectChild = element.options[j];
                if (selectChild.selected == true) {
                    WebForm_InitCallbackAddField(element.name, selectChild.value);
                }
            }
        }
        else if (tagName == "textarea") {
            WebForm_InitCallbackAddField(element.name, element.value);
        }
    }
}var __CurentFrameId=0;
var __MaxFrameId = 1000;
var WebForm_DoCallback_UseIFRAME = false;
function WebForm_DoCallback_IFRAME(eventTarget, eventArgument, eventCallback, context, errorCallback, useAsync) {
    var postData = __theFormPostData +
                "__CALLBACKID=" + WebForm_EncodeCallback(eventTarget) +
                "&__CALLBACKPARAM=" + WebForm_EncodeCallback(eventArgument);
    if (theForm["__EVENTVALIDATION"]) {
        postData += "&__EVENTVALIDATION=" + WebForm_EncodeCallback(theForm["__EVENTVALIDATION"].value);
    }
    var xmlRequest,e;
    var setRequestHeaderMethodExists = true;
    try {
        setRequestHeaderMethodExists = (xmlRequest && xmlRequest.setRequestHeader);
    }
    catch(e) {}
    var callback = new Object();
    callback.eventCallback = eventCallback;
    callback.context = context;
    callback.errorCallback = errorCallback;
    callback.async = useAsync;
    var callbackIndex = WebForm_FillFirstAvailableSlot(__pendingCallbacks, callback);
    if (!useAsync) {
        if (__synchronousCallBackIndex != -1) {
            __pendingCallbacks[__synchronousCallBackIndex] = null;
        }
        __synchronousCallBackIndex = callbackIndex;
    }

    callback.xmlRequest = new Object();
    var currentFrameId;
    if (!WebForm_DoCallback_UseIFRAME && context.callbackId) {
        currentFrameId = context.callbackId;
        __pendingCallbacks[currentFrameId] = callback;
        callback.FrameId = 0;
        callbackIndex = currentFrameId;
    }
    else {
        if (__CurentFrameId++ > __MaxFrameId) __CurentFrameId = 1;
        currentFrameId = __CurentFrameId;
        callback.FrameId = currentFrameId;
    }
    var callbackFrameID = "__CALLBACKFRAME" + currentFrameId;
    var xmlRequestFrame = $get(callbackFrameID);
    if (xmlRequestFrame) xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
    if (!WebForm_DoCallback_UseIFRAME) {
        xmlRequestFrame = document.createElement("SCRIPT");
        xmlRequestFrame.type = "text/javascript";
        xmlRequestFrame.charset = "UTF-8";
        xmlRequestFrame.id = callbackFrameID;
        var url = theForm.action;
        var pos = url.indexOf("?");
        if (pos != -1) {
            postData += "&" + url.substr(pos + 1);
            url = url.substr(0, pos);
        }
        xmlRequestFrame.src = url + "?" + postData + '&__CALLBACKINDEX=' + callbackIndex + '&__CALLBACKFRAMEID=' + callback.FrameId;
        Trace("started " + callbackIndex + " " + callbackFrameID);
        document.body.appendChild(xmlRequestFrame);
    }
    else {
        if (!document.frames) document.frames = window.frames;
        xmlRequestFrame = document.createElement("IFRAME");
        xmlRequestFrame.width = "1";
        xmlRequestFrame.height = "1";
        xmlRequestFrame.frameBorder = "0";
        xmlRequestFrame.id = callbackFrameID;
        xmlRequestFrame.name = callbackFrameID;
        xmlRequestFrame.style.position = "absolute";
        xmlRequestFrame.style.top = "-100px";
        xmlRequestFrame.style.left = "-100px";
        document.body.appendChild(xmlRequestFrame);

        Trace("started " + callbackIndex + " " + callbackFrameID);
        var url = theForm.action;
        var interval = window.setInterval(function() {
            xmlRequestFrame = document.frames[callbackFrameID];
            if (xmlRequestFrame && xmlRequestFrame.document) {
                window.clearInterval(interval);
                xmlRequestFrame.document.write("");
                xmlRequestFrame.document.close();

                var pos = url.indexOf("?");
                if (pos != -1) {
                    postData += "&" + url.substr(pos + 1);
                    url = url.substr(0, pos);
                }

                xmlRequestFrame.document.write('<html><body><script type="text/javascript" src="' + url + "?" + postData + '&__CALLBACKINDEX=' + callbackIndex + '&__CALLBACKFRAMEID=' + currentFrameId + '&__USEIFRAME=1"></script></body></html>');
                xmlRequestFrame.document.close();
            }
        }, 10);
    }
}
if(self.CreateScripts)
   CreateScripts();
   

WebForm_DoCallback=WebForm_DoCallback_IFRAME;

var RepeaterTemplates=[];
RepeaterTemplates.Add = function(name, header, item, altItem, seperator, footer){
    new RepeaterTemplate(name, header, item, altItem, seperator, footer);
}
function RepeaterTemplate(name, header, item, altItem, seperator, footer){
    this.HeaderTemplate=header;
    this.FooterTemplate=footer;
    this.ItemTemplate=this.Tokenize(item);
    this.AltItemTemplate=this.Tokenize(altItem);
    this.Seperator=seperator;
    this.Name = name;
    RepeaterTemplates[name]=this;

}
RepeaterTemplate.prototype.Tokenize=function (template){
    if(template==null) return template;
    var temp1=template.split("[{");
    var tokenized = [];
    for(var i=0;i<temp1.length;i++){
        var temp2=temp1[i].split("}]");
        for(var j=0;j<temp2.length;j++)
            tokenized.push(temp2[j]);
            
    }
    return tokenized;
}
RepeaterTemplate.prototype.Clone = function(name) {
    var repeater = new RepeaterTemplate(name);
    repeater.HeaderTemplate = this.HeaderTemplate;
    repeater.FooterTemplate = this.FooterTemplate;
    repeater.ItemTemplate = this.ItemTemplate;
    repeater.AltItemTemplate = this.AltItemTemplate;
    repeater.Seperator = this.Seperator;
}
function RenderRepeater(templateName, list, listId, length){
    return new Repeater(templateName).Render(list, listId, length);
}
function Repeater(repeaterTemplate){
    this.Template=RepeaterTemplates[repeaterTemplate];
    this.CurrenTemplate = null;
    this.CurrentItemIndex=-1;
    this.CurrentItems=null;
    this.CurrentItem=null;
}

var DataItem=null;
Repeater.prototype.Render = function(list, listId, length) {
    if (!list) return "";
    this.CurrentList = listId;
    this.CurrentItems = list;
    var renderedItemCount = 0;
    if (list.length <= 0) return "";
    var html = "";
    if (this.Template.HeaderTemplate != null)
        html += this.Template.HeaderTemplate;
    length = length || list.length;
    for (var i = 0; i < length; i++) {
        this.CurrentItem = list[i];
        this.CurrentItemIndex = i;
        if (this.CurrentItem) {
            this.CurrentTemplate = this.Template.AltItemTemplate != null && renderedItemCount % 2 != 0 ? this.Template.AltItemTemplate : this.Template.ItemTemplate;
            if (this.Template.Seperator != null && renderedItemCount > 0)
                html += this.Template.Seperator;
            html += this.Eval();
            renderedItemCount++;
        }
    }
    if (this.Template.FooterTemplate != null)
        html += this.Template.FooterTemplate;
    return html;
}


Repeater.prototype.Eval=function (){
    var ret="";
    for(var i=0;i<this.CurrentTemplate.length;i++)
        if(i%2!=0){
            var toEval=this.CurrentTemplate[i];
            //(E)> means just evaluate;
            if(toEval.substr(0,4)=="(E)>"){
                toEval=toEval.substr(4);
                if(toEval.charAt(toEval.length-1)!=";")
                    toEval+=";";
                toEval += "null;";
            }
            var e=eval(toEval);
            if(e || e==0)ret += e;
        }
        else if(this.CurrentTemplate[i])
            ret += this.CurrentTemplate[i];
    return ret;
}
var tmp=new AjaxCallable('Page','__Page');tmp.Extend({EchoVars:[["val"]],Echo:function(eventCallback,context){this.CallMethod('Echo',true,true,arguments);},Echo__NoCache:function(eventCallback,context){this.CallMethod('Echo',true,false,arguments);}});
