function element(id) {
  return document.getElementById(id);
}

function GetXmlHttpObject(handler)
{ 
  var objXMLHttp=null
  if (window.XMLHttpRequest)
  {
    var objXMLHttp=new XMLHttpRequest()
  }
  else if (window.ActiveXObject)
  {
    var objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
  }
  return objXMLHttp
}

function http_get(url,callback) {
  var http=GetXmlHttpObject()
  if (http==null) {
    alert ("Browser does not support HTTP Request")
    return
  } 
  var statechange=function() {
      if (http.readyState==4 || http.readyState=="complete")
	  callback(http.responseText)
  }
  http.onreadystatechange=statechange
  http.open("GET",url,true)
  http.send(null)
  //dump("http get "+url+"\n")
  return http
}

function http_post(url,formdata,callback) {
  var http=GetXmlHttpObject()
  if (http==null) {
    alert ("Browser does not support HTTP Request")
    return
  } 
  var statechange=function() {
      if (http.readyState==4 || http.readyState=="complete")
	  if(callback) callback(http.responseText)
  }
  http.onreadystatechange=statechange
  http.open("POST",url,true)
  http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http.setRequestHeader("Content-length", formdata.length);
  http.setRequestHeader("Connection", "close");
  http.send(formdata)
  //dump("http get "+url+"\n")
  return http
}

function fieldData(formElem) {
    var str="";
    switch (formElem.type) {
    case 'text':
    case 'select-one':
    case 'hidden':
    case 'password':
    case 'textarea':
        str += encodeURIComponent(formElem.name) + '=' + encodeURIComponent(formElem.value);
	break;
    case 'checkbox':
	if(formElem.checked)
	    str += encodeURIComponent(formElem.name) + '=' + encodeURIComponent(formElem.value);
	break;
    }
    return str;
}

function joinFormData(s1,s2) {
    return s1=="" ? s2 : s2=="" ? s1 : s1+"&"+s2
}

function formData(form) {
    var postStr= "";
    for (i = 0; i < form.elements.length; i++)
	postStr=joinFormData(postStr,fieldData(form.elements[i]));
    return postStr;
}

function submit_form(form,callback) {
    switch(form.method) {
    case "GET":
    case "get":
	return http_get(form.action+"?"+formData(form),callback);
    case "POST":
    case "post":
	return http_post(form.action,formData(form),callback);
    default:
	alert("Bug! submit_form: form.method="+form.method+"?!");
    }
}

function replace_element(elem,url) {
  if(!elem.ajax) {
      var putresult=function(textresult) {
	  elem.innerHTML=textresult
	  elem.ajax=null
	  if(elem.updatecheck) elem.updatecheck()
      }
      elem.ajax=http_get(url,putresult)
  }
  //else alert('Upptagen '+pid+" "+rid+" "+url)
}

function replace(id,url)
{
  var d=element(id)
  if(d) replace_element(d,url)
}

function post_replace_element(elem,url,formdata)
{
    if(!elem.ajax) {
      var putresult=function(textresult) {
	  elem.innerHTML=textresult
	  elem.ajax=null
	  if(elem.updatecheck) elem.updatecheck()
      }
      elem.ajax=http_post(url,formdata,putresult)
    }
}

function post_replace(id,url,formdata)
{
    var d=element(id);
    if(d) post_replace_element(d,url,formdata)
}

function submit_replace_element(elem,form)
{
    if(!elem.ajax) {
      var putresult=function(textresult) {
	  elem.innerHTML=textresult
	  elem.ajax=null
	  if(elem.updatecheck) elem.updatecheck()
      }
      elem.ajax=submit_form(form,putresult)
    }
}

function submit_replace(id,form)
{
    var d=element(id);
    if(d) submit_replace_element(d,form)
}

function visa_stor_bild(bild)
{
    MM_openBrWindow(bild,'visa_bild','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=430,height=430')
}

function bildspel(id,bilder,storabilder)
{
    var e=element("bildspel_"+id);
    if(e && bilder.length>1) {
	e.innerHTML=
	    '<table class="bildpos borderless" width="100%"><tr>'+
	    '<td><a href="javascript:bildspel_go('+"'"+id+"'"+',-1)">'+
	    '&lt;&lt;</a>'+
	    '<td class="center">Bild <span id=current_'+id+">1</span> av "+bilder.length+
	    '<td class=right><a href="javascript:bildspel_go('+"'"+id+"'"+',1)">'+
	    '&gt;&gt;</a>'+
	    "</table>";
	e.bilder=bilder;
	e.storabilder=storabilder
	e.current=0;
	var l=element('link_stor_'+id);
	l.bildspel=e;
    }
}

function bildspel_go(id,step)
{
    //alert("bildspel_go("+id+","+step+")");
    var e=element("bildspel_"+id);
    var i=element("bild_"+id);
    var a=element("link_stor_"+id);
    var c=element("current_"+id);
    if(e && e.bilder) {
	e.current+=step;
	if(e.current<0) e.current+=e.bilder.length;
	if(e.current>=e.bilder.length) e.current-=e.bilder.length;
	var bild=e.bilder[e.current];
	var storbild=e.storabilder[e.current];
	if(i) i.src=bild;
	else alert("Bild saknas "+id);
	if(a) a.href="javascript:visa_stor_bild('"+storbild+"')";
	if(c) c.innerHTML=""+(e.current+1)
    }
    else alert("Bildspel saknas "+id)
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  var w=window.open(theURL,winName,features);
  w.focus();
  //w.onload=w.sizeToContent;
}

function beskriv(id)
{
    var b=element('beskrivning_'+id);
    if(b) b.style.display='block';
}

function gui_sizes()
{
    var w=window;
    var s=screen;
    if(!w) return "no window";
    if(!s) return "no screen";
    return "inner_size="+w.innerWidth+"x"+w.innerHeight+
	"&outer_size="+w.outerWidth+"x"+w.outerHeight+
	"&screen_size="+s.width+"x"+s.height+
	"&available_screen_size="+s.availWidth+"x"+s.availHeight+
	"&color_depth="+s.colorDepth+
	"&pixel_depth="+s.pixelDepth;
}
