function Request(){}
Request.requests=new Array();
Request.get=function(params,onload,uri){
    var ajax=null;
    if(!uri){
        uri="";
    }else if(uri.indexOf("/")!=0){
        uri="/"+uri;
    }
    if(uri.indexOf("?")==-1&&!/\/$/.test(uri)){
        uri+="/";
    }
    if (window.XMLHttpRequest) {
        ajax = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try {
            ajax = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e) {
            try {
                ajax = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e) {
                alert(e);
            }
        }
    }
    if (ajax==null) {
    }else {
        var _params='';
        for(var varname in params){
            _params += varname +'='+encodeURI(params[varname])+'&';
        }
        _params += "aoe:sid="+aoe.util.getFE("aoe:sid").value+"&aoe:lang="+aoe.util.getFE("aoe:lang").value;
        id='';
        if(onload){
            var id=Request.requests.length;
            Request.requests[id]={
                ajax:ajax,
                onload:onload
            };
            ajax.onreadystatechange=function(){
                var readyState = (typeof this.readyState == 'undefined')?ajax.readyState:this.readyState;
                if(readyState==4){
                    //Request.onLoad((typeof this.readyState == 'undefined')?ajax:this);
                    var text = ((typeof this.readyState == 'undefined')?ajax:this).responseText;

                    var src1="<script type=\"text/javascript\" src=\"";
                    var src2="\"></script>";
                    while(text.indexOf(src1)>-1){
                        var src = text.substr(text.indexOf(src1)+src1.length,text.indexOf(src2)-(text.indexOf(src1)+src1.length));
                        aoe.core.browser.addJs(src);
                        text = text.substr(0,text.indexOf(src1))+text.substr(text.indexOf(src2)+src2.length);
                    }

                    src1="<script type=\"text/javascript\">";
                    src2="</script>";
                    while(text.indexOf(src1)>-1){
                        var js = text.substr(text.indexOf(src1)+src1.length,text.indexOf(src2)-(text.indexOf(src1)+src1.length));
                        aoe.core.browser.addJs(null,js);
                        text = text.substr(0,text.indexOf(src1))+text.substr(text.indexOf(src2)+src2.length);
                    }
                    src1="<!--jslast--";
                    var pos1=text.indexOf(src1);
                    src2="--jslast-->";
                    var pos2=text.indexOf(src2);
                    var last="";
                    if(pos1>-1&&pos2>-1){
                        last=text.substr(pos1+src1.length,pos2-pos1-src1.length);
                        text=text.substr(0,pos1)+text.substr(pos2+src2.length);
                    }
                    onload(text);
                    Aphrodite.load();
                    if(last!=""){
                        aoe.core.browser.addJs(null,last);
                    }
                    aoe.core.browser.locationHashListener.changed=false;
                }
            };
        }
        ajax.open('post', '/dtpa'+uri, true);
        ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        ajax.setRequestHeader("Content-length", _params.length);
        ajax.setRequestHeader("Connection", "close");
        ajax.send(_params);
    }
};
Request.onLoad=function(){

    };
Request.TEXT_PLAIN=0;
Request.XML=1;

function ContentLoader (ptype,ptarget){
    var _target=ptarget;
    var params;
    var timeout;
    var type=ptype;
    if(!_target.cl_history){
        _target.cl_history=new Array();
    }
    _target.cl_history.push(_target.innerHTML);
    var overlay=document.createElement('div');
    if(_target.childNodes.length==0){
        type=ContentLoader.REPLACE;
    }
    overlay.className='content_loader_overlay';
    overlay.innerHTML='<img src="/icon/ladebalken.gif" alt="Laden.." />';
    switch(type){
        case ContentLoader.APPENDFIRST:
            _target.insertBefore(overlay,_target.firstChild);
            break;
        case ContentLoader.APPENDLAST:
            _target.appendChild(overlay);
            break;
        default:
            if ( _target.hasChildNodes() ){
                while ( _target.childNodes.length >= 1 ){
                    _target.removeChild( _target.firstChild );
                }
            }
            _target.appendChild(overlay);
    }
    this.load=function(params,ponload,uri){
        var onload;
        switch(type){
            case ContentLoader.APPENDFIRST:
                onload=function(content){
                    _target.removeChild(overlay);
                    _target.innerHTML=content+_target.innerHTML;
                    if(ponload)ponload();
                };
                break;
            case ContentLoader.APPENDLAST:
                onload=function(content){
                    _target.removeChild(overlay);
                    _target.innerHTML=_target.innerHTML+content;
                    if(ponload)ponload();
                };
                break;
            default:
                onload=function(content){
                    var d=aoe.util.cE("div");
                    d.innerHTML=content;
                    while(_target.childNodes[0])_target.removeChild(_target.childNodes[0]);
                    _target.appendChild(d);
                    if(ponload)ponload();
                };
        }
        Request.get(params,onload,uri);
    };
}
ContentLoader.onLoad=function(content){

    };
ContentLoader.loadHistory=function(target,pindex){
    var index=(pindex)?pindex:target.cl_history.length-1;
    target.cl_history.push(target.innerHTML);
    target.innerHTML=target.cl_history[index];
};
ContentLoader.REPLACE=0;
ContentLoader.APPENDFIRST=1;
ContentLoader.APPENDLAST=2;
