// container id
var containerid = 'addFavorite';

// url
var url = '/index.php?id=2632';
var urlsubmit = 'index.php?id=2632';
// holds ajax request object
var request = false;

var container = '';


var ajaxRequest = function(u,f,m,b,h,s)
{
    this.url      = u;
    this.wState   = f || function() { };
    this.method   = m || "GET";
    this.body     = b || null;
    this.headers  = h || false;
    this.sync     = s || true;
    this.abortReq = false;
    this.req = (window.XMLHttpRequest)
           ?
           new XMLHttpRequest()
           :
           ((window.ActiveXObject)
           ?
           new ActiveXObject("Microsoft.XMLHTTP")
           :
           false
           );

    this.doRequest = function()
    {
        this.req.open(this.method,this.url,this.sync);
        if (this.headers)
        {
            for (var i=0; i<this.headers.length; i+=2)
            {
                this.req.setRequestHeader(
                    this.headers[i],this.headers[i+1]
                );
				
            }
        }
        this.req.onreadystatechange = this.wState;
        (!this.abortReq) ? this.req.send(this.body) : this.req.abort();
    }
}




function getElem( id) {
  var el = document.getElementById( id);
  
  if( el) {
    return el;
  } else {
    return false;
  }
}


// handles everything
function addFavorite() {
  container = getElem(containerid);
   if( container) {
    if( container.style.visibility == 'visible') {
      container.style.visibility = 'hidden';
    } else {
      container.style.visibility = 'visible';
    }
    return;
  }
  else{
	  body = document.body;
	  var cont =  (document.all && !window.opera)? document.createElement("<div></div>") : document.createElement("div");
	  
	  var cls = document.createAttribute("class");
	  cls.nodeValue = 'fragenassistent';  
	  cont.setAttributeNode( cls);

	  
	  var id = document.createAttribute("id");
	  id.nodeValue = containerid;
	  cont.setAttributeNode( id);

	  if( document.all) {
		cont.onmousedown = dragstart; 
	  } else {
	    var mousedown = document.createAttribute("onmousedown");
	    mousedown.nodeValue = "dragstart( containerid);";
	    cont.setAttributeNode( mousedown);
	  }

	  
	  body.appendChild( cont);
	  cont.style.visibility = 'visible';
	  request = new ajaxRequest( url, function() { updateContainer(); });
	  request.doRequest();
  }
}

// submits form via ajax, puts result into container
function submitFragen( form) {
  var body = '';
  for( elem in form.elements) {
    if( form.elements[elem] &&
	   (
		form.elements[elem].type == 'textarea' ||
        form.elements[elem].type == 'text' ||
        form.elements[elem].type == 'select-one' ||
        form.elements[elem].type == 'select-multiple' ||
        form.elements[elem].type == 'checkbox' ||
        form.elements[elem].type == 'radio' ||
		form.elements[elem].type == 'hidden'
	   )) {
        
      body += form.elements[elem].name + "=" + encodeURI( form.elements[elem].value) + "&"; 
	  
    }
  }
  request = new ajaxRequest( urlsubmit, function() { updateContainer(); }, 'POST', body, ["Content-Type", "application/x-www-form-urlencoded"]);
  request.doRequest();
  return false;
}

// is called from ajax request handler
function updateContainer() {
  if ( request.req.readyState == 4 ){
    container = getElem( containerid);
    if( container) {
      container.innerHTML = request.req.responseText;
      //container.style.visibility = 'visible';
      execJS(container);
    }
  }
} 

function execJS(node) {
	/* Element auf Javascript ŸberprŸfen, und falls nštig ausfŸhren */
	var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
	var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
	var bMoz = (navigator.appName == 'Netscape');
	var st = node.getElementsByTagName('script'); var strExec;
   
	for(var i=0;i<st.length; i++) {
	 	if (bSaf) {
 			strExec = st[i].innerHTML;
	 	} else if (bOpera) {
 			strExec = st[i].text;
	 	} else if (bMoz) {
 			strExec = st[i].textContent;
	 	} else {
 			strExec = st[i].text;
	 	}
 		if(st[i].src) {
			var element = document.createElement("script");
			element.type = "text/javascript";
			element.src = st[i].src;
	 		document.getElementsByTagName("head")[0].appendChild(element);
	 	} else {
	 		try {
		 		eval(strExec);
 			} catch(e) {
 				alert(e);
			 }
		 }
 	}
} 


// mouse move effect
var posx = 0;
var posy = 0;
var dragx = 0;
var dragy = 0;

var dragobjekt = null;

function dragstart() {
  if(dragobjekt == null){
    dragobjekt = getElem( containerid);
    dragx = posx - dragobjekt.offsetLeft;
    dragy = posy - dragobjekt.offsetTop;
  }
}
function dragstop() {
  dragobjekt = null;
}

function handleMouseMove(ereignis) {
    posx = (window.event) ? (window.event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft)) : ereignis.pageX;
    posy = (window.event) ? (window.event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop)) : ereignis.pageY;
    if(dragobjekt != null) {
        dragobjekt.style.left = (posx - dragx) + "px";
        dragobjekt.style.top = (posy - dragy) + "px";
    }
}
document.onmousemove = handleMouseMove;
document.onmouseup = dragstop;



function addBookmark(title,url) {
    if (window.sidebar) {
        window.sidebar.addPanel(title, url,"");
    } else if( document.all ) {
        window.external.AddFavorite(url, title);
    } else if( window.opera && window.print ) {
        return true;
    }
}
