﻿Global={
    FlyingMsg:{
        msg:null,
        followMouse:function(e){
            if(!e)var e=window.event;
            Global.FlyingMsg.setPos(e);
        },
        hide:function(e){
            if(!e)var e=window.event;
            Global.FlyingMsg.msj.style.display='none';
            $removeHandler(document, 'mousemove', Global.FlyingMsg.followMouse);
        },
        show:function(e,text){
            Global.FlyingMsg.msj=document.getElementById('cal_day_msj');
            if(!Global.FlyingMsg.msj){
                Global.FlyingMsg.msj=document.createElement('div');
                Global.FlyingMsg.msj.id='flying_msj';
                Global.FlyingMsg.msj.className='flyMsg';
               
                document.body.appendChild(Global.FlyingMsg.msj);
            }
            
            Global.FlyingMsg.msj.innerHTML=text;
            Global.FlyingMsg.setPos(e);
            Global.FlyingMsg.msj.style.display='block';
            
            $addHandler(document, 'mousemove', Global.FlyingMsg.followMouse);
        },
        setPos:function(e){
            Global.FlyingMsg.msj.style.top=e.clientY+Global.getScrollY()+'px';
            Global.FlyingMsg.msj.style.left=e.clientX+15+Global.getScrollX()+'px';
        }
    },
    
    getScrollY:function(){
        if(window.pageYOffset>=0)return window.pageYOffset;
        if(window.scrollY>=0) return window.scrollY;
        if(document.documentElement.scrollTop>=0)return document.documentElement.scrollTop;
        if(document.body.scrollTop>=0) return document.body.scrollTop;
    },
    
    getScrollX:function(){
        if(window.pageXOffset>=0)return window.pageXOffset;
        if(window.scrollX>=0) return window.scrollX;
        if(document.documentElement.scrollLeft>=0)return document.documentElement.scrollLeft;
        if(document.body.scrollLeft>=0) return document.body.scrollLeft;
    },
    
    callbackError: function (e){
        var msg=(e.get_message)?e.get_message:e.message;
        if(msg=='AUTHENTICATION EXCEPTION.') window.location=APP_PATH+'/signup.aspx';
        window.status='There was an error while processing the request.';
    },
    
    windowOpen: function(url, w, h){
        var vars=null;
        var config="status=no,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes";
        if(typeof(w)=='undefined' || typeof(h)=='undefined')
            vars="height=350,width=630,"+config+",top="+((screen.height/2)-175)+",left="+((screen.width/2)-(310));
        else
            vars="height="+h+",width="+w+","+config+",top="+((screen.height/2)-(h/2))+",left="+((screen.width/2)-(w/2));
        if(window['popuphandle'] && !window['popuphandle'].closed){
            window['popuphandle'].location=url;
            window['popuphandle'].focus();
        }
        window['popuphandle']=window.open(url,null,vars);
        return false;
    },

    windowOpenFixed: function(url, w, h){
        var vars=null;
        var config="status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=no";
        if(typeof(w)=='undefined' || typeof(h)=='undefined')
            vars="height=350,width=630,"+config+",top="+((screen.height/2)-175)+",left="+((screen.width/2)-(310));
        else
            vars="height="+h+",width="+w+","+config+",top="+((screen.height/2)-(h/2))+",left="+((screen.width/2)-(w/2));
        if(window['popuphandle'] && !window['popuphandle'].closed){
            window['popuphandle'].location=url;
            window['popuphandle'].focus();
        }
        window['popuphandle']=window.open(url,null,vars);
        return false;
    },
        
    setDefaultEnter:function(funz){
        return new Function('e','if(!e)e=window.event; var code=(typeof(e.keyCode)!="undefined"?e.keyCode:e.which);if(code==13){'+funz.toString()+';return false;};');
    },
    
    clearDefaultEnter:function(){
        document.onkeypress=null;
    },
    
    deleteChilds:function (tree) {
       while( tree.hasChildNodes() ){
          for(var i=0; i<tree.childNodes.length; i++){
             Global.deleteChilds(tree.childNodes[i]);
             tree.removeChild(tree.childNodes[i]);
          }
       }
    },
    
    createLink: function (href, innerHTML){
        var A=document.createElement('A');
        A.href=href;
        A.innerHTML=innerHTML;
        return A;
    },
    
    createImage:function (src, w, h, alt){
        var img=document.createElement('IMG');
        img.src=src;
        if(w)img.width=w;
        if(h)img.height=h;
        if(alt)img.alt=alt;
        return img;
    },
    
    createInput:function (type){
        var input=document.createElement('INPUT');
        input.type=type;
        return input;
    },
    
    createTextArea:function (id, rows, cols){
        var input=document.createElement('TEXTAREA');
        input.rows=rows;
        input.cols=cols;
        return input;
    },
    
    createDiv:function (id, styles, cssClass){
        var e=document.createElement('DIV');
        if(id)e.id=id;
        if(styles)
            for(var s in styles) 
                e.style[s] = styles[s];
        if(cssClass)e.className = cssClass;    
        return e;
    },
    
    //like AjaxExtentions but with a paramater to pass
    createDelegate  : function createDelegate(instance, method, parameter) {
        return function() {
            return method.call(instance, parameter);
        }
    },

     // HtmlDecode http://lab.msdn.microsoft.com/annotations/htmldecode.js
    //   client side version of the useful Server.HtmlDecode method
    //   takes one string (encoded) and returns another (decoded)

    HtmlDecode:function (s)
{
	var out = "";
	if (s==null) return;
	var l = s.length;
	for (var i=0; i<l; i++)
	{
		var ch = s.charAt(i);
		
		if (ch == '&')
		{
			var semicolonIndex = s.indexOf(';', i+1);
			
			if (semicolonIndex > 0)
			{
				var entity = s.substring(i + 1, semicolonIndex);
				if (entity.length > 1 && entity.charAt(0) == '#')
				{
					if (entity.charAt(1) == 'x' || entity.charAt(1) == 'X')
					ch = String.fromCharCode(eval('0'+entity.substring(1)));
					else
					ch = String.fromCharCode(eval(entity.substring(1)));
				}
				else
				{
					switch (entity)
					{
					case 'quot': ch = String.fromCharCode(0x0022); break;
					case 'amp': ch = String.fromCharCode(0x0026); break;
					case 'lt': ch = String.fromCharCode(0x003c); break;
					case 'gt': ch = String.fromCharCode(0x003e); break;
					case 'nbsp': ch = String.fromCharCode(0x00a0); break;
					case 'iexcl': ch = String.fromCharCode(0x00a1); break;
					case 'cent': ch = String.fromCharCode(0x00a2); break;
					case 'pound': ch = String.fromCharCode(0x00a3); break;
					case 'curren': ch = String.fromCharCode(0x00a4); break;
					case 'yen': ch = String.fromCharCode(0x00a5); break;
					case 'brvbar': ch = String.fromCharCode(0x00a6); break;
					case 'sect': ch = String.fromCharCode(0x00a7); break;
					case 'uml': ch = String.fromCharCode(0x00a8); break;
					case 'copy': ch = String.fromCharCode(0x00a9); break;
					case 'ordf': ch = String.fromCharCode(0x00aa); break;
					case 'laquo': ch = String.fromCharCode(0x00ab); break;
					case 'not': ch = String.fromCharCode(0x00ac); break;
					case 'shy': ch = String.fromCharCode(0x00ad); break;
					case 'reg': ch = String.fromCharCode(0x00ae); break;
					case 'macr': ch = String.fromCharCode(0x00af); break;
					case 'deg': ch = String.fromCharCode(0x00b0); break;
					case 'plusmn': ch = String.fromCharCode(0x00b1); break;
					case 'sup2': ch = String.fromCharCode(0x00b2); break;
					case 'sup3': ch = String.fromCharCode(0x00b3); break;
					case 'acute': ch = String.fromCharCode(0x00b4); break;
					case 'micro': ch = String.fromCharCode(0x00b5); break;
					case 'para': ch = String.fromCharCode(0x00b6); break;
					case 'middot': ch = String.fromCharCode(0x00b7); break;
					case 'cedil': ch = String.fromCharCode(0x00b8); break;
					case 'sup1': ch = String.fromCharCode(0x00b9); break;
					case 'ordm': ch = String.fromCharCode(0x00ba); break;
					case 'raquo': ch = String.fromCharCode(0x00bb); break;
					case 'frac14': ch = String.fromCharCode(0x00bc); break;
					case 'frac12': ch = String.fromCharCode(0x00bd); break;
					case 'frac34': ch = String.fromCharCode(0x00be); break;
					case 'iquest': ch = String.fromCharCode(0x00bf); break;
					case 'Agrave': ch = String.fromCharCode(0x00c0); break;
					case 'Aacute': ch = String.fromCharCode(0x00c1); break;
					case 'Acirc': ch = String.fromCharCode(0x00c2); break;
					case 'Atilde': ch = String.fromCharCode(0x00c3); break;
					case 'Auml': ch = String.fromCharCode(0x00c4); break;
					case 'Aring': ch = String.fromCharCode(0x00c5); break;
					case 'AElig': ch = String.fromCharCode(0x00c6); break;
					case 'Ccedil': ch = String.fromCharCode(0x00c7); break;
					case 'Egrave': ch = String.fromCharCode(0x00c8); break;
					case 'Eacute': ch = String.fromCharCode(0x00c9); break;
					case 'Ecirc': ch = String.fromCharCode(0x00ca); break;
					case 'Euml': ch = String.fromCharCode(0x00cb); break;
					case 'Igrave': ch = String.fromCharCode(0x00cc); break;
					case 'Iacute': ch = String.fromCharCode(0x00cd); break;
					case 'Icirc': ch = String.fromCharCode(0x00ce ); break;
					case 'Iuml': ch = String.fromCharCode(0x00cf); break;
					case 'ETH': ch = String.fromCharCode(0x00d0); break;
					case 'Ntilde': ch = String.fromCharCode(0x00d1); break;
					case 'Ograve': ch = String.fromCharCode(0x00d2); break;
					case 'Oacute': ch = String.fromCharCode(0x00d3); break;
					case 'Ocirc': ch = String.fromCharCode(0x00d4); break;
					case 'Otilde': ch = String.fromCharCode(0x00d5); break;
					case 'Ouml': ch = String.fromCharCode(0x00d6); break;
					case 'times': ch = String.fromCharCode(0x00d7); break;
					case 'Oslash': ch = String.fromCharCode(0x00d8); break;
					case 'Ugrave': ch = String.fromCharCode(0x00d9); break;
					case 'Uacute': ch = String.fromCharCode(0x00da); break;
					case 'Ucirc': ch = String.fromCharCode(0x00db); break;
					case 'Uuml': ch = String.fromCharCode(0x00dc); break;
					case 'Yacute': ch = String.fromCharCode(0x00dd); break;
					case 'THORN': ch = String.fromCharCode(0x00de); break;
					case 'szlig': ch = String.fromCharCode(0x00df); break;
					case 'agrave': ch = String.fromCharCode(0x00e0); break;
					case 'aacute': ch = String.fromCharCode(0x00e1); break;
					case 'acirc': ch = String.fromCharCode(0x00e2); break;
					case 'atilde': ch = String.fromCharCode(0x00e3); break;
					case 'auml': ch = String.fromCharCode(0x00e4); break;
					case 'aring': ch = String.fromCharCode(0x00e5); break;
					case 'aelig': ch = String.fromCharCode(0x00e6); break;
					case 'ccedil': ch = String.fromCharCode(0x00e7); break;
					case 'egrave': ch = String.fromCharCode(0x00e8); break;
					case 'eacute': ch = String.fromCharCode(0x00e9); break;
					case 'ecirc': ch = String.fromCharCode(0x00ea); break;
					case 'euml': ch = String.fromCharCode(0x00eb); break;
					case 'igrave': ch = String.fromCharCode(0x00ec); break;
					case 'iacute': ch = String.fromCharCode(0x00ed); break;
					case 'icirc': ch = String.fromCharCode(0x00ee); break;
					case 'iuml': ch = String.fromCharCode(0x00ef); break;
					case 'eth': ch = String.fromCharCode(0x00f0); break;
					case 'ntilde': ch = String.fromCharCode(0x00f1); break;
					case 'ograve': ch = String.fromCharCode(0x00f2); break;
					case 'oacute': ch = String.fromCharCode(0x00f3); break;
					case 'ocirc': ch = String.fromCharCode(0x00f4); break;
					case 'otilde': ch = String.fromCharCode(0x00f5); break;
					case 'ouml': ch = String.fromCharCode(0x00f6); break;
					case 'divide': ch = String.fromCharCode(0x00f7); break;
					case 'oslash': ch = String.fromCharCode(0x00f8); break;
					case 'ugrave': ch = String.fromCharCode(0x00f9); break;
					case 'uacute': ch = String.fromCharCode(0x00fa); break;
					case 'ucirc': ch = String.fromCharCode(0x00fb); break;
					case 'uuml': ch = String.fromCharCode(0x00fc); break;
					case 'yacute': ch = String.fromCharCode(0x00fd); break;
					case 'thorn': ch = String.fromCharCode(0x00fe); break;
					case 'yuml': ch = String.fromCharCode(0x00ff); break;
					case 'OElig': ch = String.fromCharCode(0x0152); break;
					case 'oelig': ch = String.fromCharCode(0x0153); break;
					case 'Scaron': ch = String.fromCharCode(0x0160); break;
					case 'scaron': ch = String.fromCharCode(0x0161); break;
					case 'Yuml': ch = String.fromCharCode(0x0178); break;
					case 'fnof': ch = String.fromCharCode(0x0192); break;
					case 'circ': ch = String.fromCharCode(0x02c6); break;
					case 'tilde': ch = String.fromCharCode(0x02dc); break;
					case 'Alpha': ch = String.fromCharCode(0x0391); break;
					case 'Beta': ch = String.fromCharCode(0x0392); break;
					case 'Gamma': ch = String.fromCharCode(0x0393); break;
					case 'Delta': ch = String.fromCharCode(0x0394); break;
					case 'Epsilon': ch = String.fromCharCode(0x0395); break;
					case 'Zeta': ch = String.fromCharCode(0x0396); break;
					case 'Eta': ch = String.fromCharCode(0x0397); break;
					case 'Theta': ch = String.fromCharCode(0x0398); break;
					case 'Iota': ch = String.fromCharCode(0x0399); break;
					case 'Kappa': ch = String.fromCharCode(0x039a); break;
					case 'Lambda': ch = String.fromCharCode(0x039b); break;
					case 'Mu': ch = String.fromCharCode(0x039c); break;
					case 'Nu': ch = String.fromCharCode(0x039d); break;
					case 'Xi': ch = String.fromCharCode(0x039e); break;
					case 'Omicron': ch = String.fromCharCode(0x039f); break;
					case 'Pi': ch = String.fromCharCode(0x03a0); break;
					case ' Rho ': ch = String.fromCharCode(0x03a1); break;
					case 'Sigma': ch = String.fromCharCode(0x03a3); break;
					case 'Tau': ch = String.fromCharCode(0x03a4); break;
					case 'Upsilon': ch = String.fromCharCode(0x03a5); break;
					case 'Phi': ch = String.fromCharCode(0x03a6); break;
					case 'Chi': ch = String.fromCharCode(0x03a7); break;
					case 'Psi': ch = String.fromCharCode(0x03a8); break;
					case 'Omega': ch = String.fromCharCode(0x03a9); break;
					case 'alpha': ch = String.fromCharCode(0x03b1); break;
					case 'beta': ch = String.fromCharCode(0x03b2); break;
					case 'gamma': ch = String.fromCharCode(0x03b3); break;
					case 'delta': ch = String.fromCharCode(0x03b4); break;
					case 'epsilon': ch = String.fromCharCode(0x03b5); break;
					case 'zeta': ch = String.fromCharCode(0x03b6); break;
					case 'eta': ch = String.fromCharCode(0x03b7); break;
					case 'theta': ch = String.fromCharCode(0x03b8); break;
					case 'iota': ch = String.fromCharCode(0x03b9); break;
					case 'kappa': ch = String.fromCharCode(0x03ba); break;
					case 'lambda': ch = String.fromCharCode(0x03bb); break;
					case 'mu': ch = String.fromCharCode(0x03bc); break;
					case 'nu': ch = String.fromCharCode(0x03bd); break;
					case 'xi': ch = String.fromCharCode(0x03be); break;
					case 'omicron': ch = String.fromCharCode(0x03bf); break;
					case 'pi': ch = String.fromCharCode(0x03c0); break;
					case 'rho': ch = String.fromCharCode(0x03c1); break;
					case 'sigmaf': ch = String.fromCharCode(0x03c2); break;
					case 'sigma': ch = String.fromCharCode(0x03c3); break;
					case 'tau': ch = String.fromCharCode(0x03c4); break;
					case 'upsilon': ch = String.fromCharCode(0x03c5); break;
					case 'phi': ch = String.fromCharCode(0x03c6); break;
					case 'chi': ch = String.fromCharCode(0x03c7); break;
					case 'psi': ch = String.fromCharCode(0x03c8); break;
					case 'omega': ch = String.fromCharCode(0x03c9); break;
					case 'thetasym': ch = String.fromCharCode(0x03d1); break;
					case 'upsih': ch = String.fromCharCode(0x03d2); break;
					case 'piv': ch = String.fromCharCode(0x03d6); break;
					case 'ensp': ch = String.fromCharCode(0x2002); break;
					case 'emsp': ch = String.fromCharCode(0x2003); break;
					case 'thinsp': ch = String.fromCharCode(0x2009); break;
					case 'zwnj': ch = String.fromCharCode(0x200c); break;
					case 'zwj': ch = String.fromCharCode(0x200d); break;
					case 'lrm': ch = String.fromCharCode(0x200e); break;
					case 'rlm': ch = String.fromCharCode(0x200f); break;
					case 'ndash': ch = String.fromCharCode(0x2013); break;
					case 'mdash': ch = String.fromCharCode(0x2014); break;
					case 'lsquo': ch = String.fromCharCode(0x2018); break;
					case 'rsquo': ch = String.fromCharCode(0x2019); break;
					case 'sbquo': ch = String.fromCharCode(0x201a); break;
					case 'ldquo': ch = String.fromCharCode(0x201c); break;
					case 'rdquo': ch = String.fromCharCode(0x201d); break;
					case 'bdquo': ch = String.fromCharCode(0x201e); break;
					case 'dagger': ch = String.fromCharCode(0x2020); break;
					case 'Dagger': ch = String.fromCharCode(0x2021); break;
					case 'bull': ch = String.fromCharCode(0x2022); break;
					case 'hellip': ch = String.fromCharCode(0x2026); break;
					case 'permil': ch = String.fromCharCode(0x2030); break;
					case 'prime': ch = String.fromCharCode(0x2032); break;
					case 'Prime': ch = String.fromCharCode(0x2033); break;
					case 'lsaquo': ch = String.fromCharCode(0x2039); break;
					case 'rsaquo': ch = String.fromCharCode(0x203a); break;
					case 'oline': ch = String.fromCharCode(0x203e); break;
					case 'frasl': ch = String.fromCharCode(0x2044); break;
					case 'euro': ch = String.fromCharCode(0x20ac); break;
					case 'image': ch = String.fromCharCode(0x2111); break;
					case 'weierp': ch = String.fromCharCode(0x2118); break;
					case 'real': ch = String.fromCharCode(0x211c); break;
					case 'trade': ch = String.fromCharCode(0x2122); break;
					case 'alefsym': ch = String.fromCharCode(0x2135); break;
					case 'larr': ch = String.fromCharCode(0x2190); break;
					case 'uarr': ch = String.fromCharCode(0x2191); break;
					case 'rarr': ch = String.fromCharCode(0x2192); break;
					case 'darr': ch = String.fromCharCode(0x2193); break;
					case 'harr': ch = String.fromCharCode(0x2194); break;
					case 'crarr': ch = String.fromCharCode(0x21b5); break;
					case 'lArr': ch = String.fromCharCode(0x21d0); break;
					case 'uArr': ch = String.fromCharCode(0x21d1); break;
					case 'rArr': ch = String.fromCharCode(0x21d2); break;
					case 'dArr': ch = String.fromCharCode(0x21d3); break;
					case 'hArr': ch = String.fromCharCode(0x21d4); break;
					case 'forall': ch = String.fromCharCode(0x2200); break;
					case 'part': ch = String.fromCharCode(0x2202); break;
					case 'exist': ch = String.fromCharCode(0x2203); break;
					case 'empty': ch = String.fromCharCode(0x2205); break;
					case 'nabla': ch = String.fromCharCode(0x2207); break;
					case 'isin': ch = String.fromCharCode(0x2208); break;
					case 'notin': ch = String.fromCharCode(0x2209); break;
					case 'ni': ch = String.fromCharCode(0x220b); break;
					case 'prod': ch = String.fromCharCode(0x220f); break;
					case 'sum': ch = String.fromCharCode(0x2211); break;
					case 'minus': ch = String.fromCharCode(0x2212); break;
					case 'lowast': ch = String.fromCharCode(0x2217); break;
					case 'radic': ch = String.fromCharCode(0x221a); break;
					case 'prop': ch = String.fromCharCode(0x221d); break;
					case 'infin': ch = String.fromCharCode(0x221e); break;
					case 'ang': ch = String.fromCharCode(0x2220); break;
					case 'and': ch = String.fromCharCode(0x2227); break;
					case 'or': ch = String.fromCharCode(0x2228); break;
					case 'cap': ch = String.fromCharCode(0x2229); break;
					case 'cup': ch = String.fromCharCode(0x222a); break;
					case 'int': ch = String.fromCharCode(0x222b); break;
					case 'there4': ch = String.fromCharCode(0x2234); break;
					case 'sim': ch = String.fromCharCode(0x223c); break;
					case 'cong': ch = String.fromCharCode(0x2245); break;
					case 'asymp': ch = String.fromCharCode(0x2248); break;
					case 'ne': ch = String.fromCharCode(0x2260); break;
					case 'equiv': ch = String.fromCharCode(0x2261); break;
					case 'le': ch = String.fromCharCode(0x2264); break;
					case 'ge': ch = String.fromCharCode(0x2265); break;
					case 'sub': ch = String.fromCharCode(0x2282); break;
					case 'sup': ch = String.fromCharCode(0x2283); break;
					case 'nsub': ch = String.fromCharCode(0x2284); break;
					case 'sube': ch = String.fromCharCode(0x2286); break;
					case 'supe': ch = String.fromCharCode(0x2287); break;
					case 'oplus': ch = String.fromCharCode(0x2295); break;
					case 'otimes': ch = String.fromCharCode(0x2297); break;
					case 'perp': ch = String.fromCharCode(0x22a5); break;
					case 'sdot': ch = String.fromCharCode(0x22c5); break;
					case 'lceil': ch = String.fromCharCode(0x2308); break;
					case 'rceil': ch = String.fromCharCode(0x2309); break;
					case 'lfloor': ch = String.fromCharCode(0x230a); break;
					case 'rfloor': ch = String.fromCharCode(0x230b); break;
					case 'lang': ch = String.fromCharCode(0x2329); break;
					case 'rang': ch = String.fromCharCode(0x232a); break;
					case 'loz': ch = String.fromCharCode(0x25ca); break;
					case 'spades': ch = String.fromCharCode(0x2660); break;
					case 'clubs': ch = String.fromCharCode(0x2663); break;
					case 'hearts': ch = String.fromCharCode(0x2665); break;
					case 'diams': ch = String.fromCharCode(0x2666); break;
					default: ch = ''; break;
					}
				}
				i = semicolonIndex;
			}
		}
		
		out += ch;
	}
	return out;
	
}


    
}

UL=function(containerId){
    this.container=$get(containerId);
    this.onItemDataBound=null;
}
UL.prototype = {
    bind:function(list, name, idNode, textNode, actions){
        var UL, LI, img, A,e;
        
        //Global.deleteChilds(this.container);
        UL=document.createElement('UL');
        UL.id=this.container.id+'_'+name;
       
        for(var i=0;i<list.length;i++){
            LI=document.createElement('LI');
            LI.id=UL.id+'_'+name+'_'+list[i][idNode];
            if(typeof(actions)!='undefined'){
                if(typeof(actions.expand)!='undefined'){
                    img=Global.createImage(APP_PATH+'/images/plus.gif',16,16,'');
                    img.alt='Expand';
                    img.onclick=new Function('',actions.expand+'(this,{"nodeId":"'+LI.id+'","id":"'+list[i][idNode]+'"});'+
                            'if(this.alt==\'Expand\'){this.alt=\'Colapse\';this.src=APP_PATH+\'/images/minus.gif\';} else {' +
                            'this.alt=\'Expand\';this.src=APP_PATH+\'/images/plus.gif\';}'                
                        );
                    LI.appendChild(img);
                    LI.appendChild(document.createTextNode(list[i][textNode].toCapital()));
                }else if(typeof(actions.href)!='undefined'){
                    A=Global.createLink(actions.href,list[i][textNode].toCapital());
                    LI.appendChild(A);
                }
            } 
            else LI.appendChild(document.createTextNode(list[i][textNode].toCapital()));
            
            UL.appendChild(LI);
            
            if(this.onItemDataBound) this.onItemDataBound(i, LI, list[i]);
        } 
        this.container.appendChild(UL);
    },
    _imgClick:function(e){
        var elt=(typeof(e.target)!='undefined')?e.target:e.srcElement;
        if(elt.alt=='Expand'){
            elt.alt='Colapse';
            elt.src=APP_PATH+'/images/minus.gif';
        } else {
            elt.alt='Expand';
            elt.src=APP_PATH+'/images/plus.gif';
        }
    }
}

//deprecated use Globa.deleteChilds
function deleteChilds(tree,start) {
   while( tree.hasChildNodes() ){
      for(var i=0; i<tree.childNodes.length; i++){
         deleteChilds(tree.childNodes[i]);
         tree.removeChild(tree.childNodes[i]);
      }
   }
}

//addd toCapital function to all strings
String.prototype.toCapital = function (){
    if (!this || this==null || typeof(this)=='undefined'){
        alert('return empty');
        return '';
    }
    
    var words=this.trim().toLowerCase().split(' ');
    var outText=new String();
    for(var i=0;i<words.length;i++){
        switch(words[i]){
            case 'and': break; 
            case 'or': break;
            case 'on': break;
            case 'to': break;
            case 'for': break;
            case 'by': break;
            default: words[i] = words[i].charAt(0).toUpperCase() + words[i].substr(1);
            
            break;
        }
        outText=outText.concat(words[i]).concat(" ");
    }
    return outText;
}

Array.prototype.findAll = function(node, value){
    var arr = new Array();
    for(var i=0; i<this.length; i++){
        try{
            if(this[i][node]==value) arr.push(this[i]);
        }catch(e){
            alert('Array.find:'+e.message);
            return;
        }
    }
    return arr;
}

Array.prototype.find = function(node, value){
    for(var i=0; i<this.length; i++){
        try{
            if(this[i][node]==value) return this[i];
        }catch(e){
            alert('Array.find:'+e.message);
            return;
        }
    }
    return null;
}

/* Client-side access to querystring name=value pairs
	Version 1.2.4
	30 March 2008
	Adam Vandenberg
	modified Diego M. Soloaga
*/
function Querystring(qs) { // optionally pass a querystring to parse
	this.params = {};
	
	if (qs == null);
		qs=location.search.substring(1,location.search.length);

	if (qs.length == 0) 
		return;

    // Turn <plus> back to <space>
    // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ');
	// parse out name/value pairs separated via &
	var args = qs.split('&'); 
	
    // split out each name=value pair
	for (var i=0;i<args.length;i++) {
		var pair = args[i].split('=');
		var name = unescape(pair[0]);
		
		var value = (pair.length==2)
			? unescape(pair[1])
			: name;
		
		this.params[name.toLowerCase()] = value;
	}
}

Querystring.prototype.get = function Querystring_get(key, default_) {
	var value=this.params[key];
	return (value!=null) ? value : default_;
}

//createes an enumerator for a list
Enum = function(list){
    this._index = -1;
    this.get_list = function(){
        return list;
    }
}
Enum.prototype = {
    next:function(){
        if( ++this._index <= this.get_list().length)
            return this.get_list()[this._index];
        return null;
    },
    previus:function(){
        if((--this._index) >= 0)
            return this.get_list()[this._index];
        return null;
    }
}