// ---------------------------------------------
// FROM http://javascript.internet.com/miscellaneous/random-image-rotator.html 
// ROTATE RANDOM IMAGE
function imageItem(image_location) {
  this.image_item = new Image();
  this.image_item.src = image_location;
}
function get_ImageItemLocation(imageObj) {
  return(imageObj.image_item.src)
}
function generate(x, y) {
  var range = y - x + 1;
  return Math.floor(Math.random() * range) + x;
}
function getNextImage() {
  if (random_display) {
    image_index = generate(0, number_of_image-1);
  } else {
    image_index = (image_index+1) % number_of_image;
  }
  var new_image = get_ImageItemLocation(image_list[image_index]);
  return(new_image);
}
function dFadeIn(imageId, speed) {
  for (timer = 0; timer <= 100; timer++) {
    setTimeout("changeOpac(" + timer + ",'" + imageId + "')",(timer * speed))
  }
}
function dFadeOut(imageId, speed) {
  for (timer = 0; timer <= 100; timer++) {
    setTimeout("changeOpac(" + (100-timer) + ",'" + imageId + "')",(timer * speed))
  }
}
function rotateImage(place) {
  // wd's IMPLEMENT FROM FADING 
  var divId = 'head_gal';
  var divbg = document.getElementById(divId);
  var imageId = 'blendimage';
  var image = document.getElementById(imageId);
  var speed = Math.round(1500 / 100);
  var timer = 0;

  dFadeIn(imageId, speed);
  
  // make new image
  var new_image = getNextImage();
  changeOpac(0, imageId);
  document[place].src = new_image;

  //var recur_call = "rotateImage('"+place+"')";
  //setTimeout(recur_call, interval);
  var recur_call = "FadeImage('"+place+"')";
  setTimeout(recur_call, interval);
}
function FadeImage(place) {
  var imageId = 'blendimage';
  var image = document.getElementById(imageId);
  var speed = Math.round(2500 / 100);
  dFadeOut(imageId, speed)
  var recur_call = "rotateImage('"+place+"')";
  setTimeout(recur_call, 2500);
}

// ---------------------------------------------
// FROM http://www.brainerror.net/scripts_js_blendtrans.php
function xblendimage(divid, imageid, imagefile, millisec) {
    var speed = Math.round(millisec / 100);
    var timer = 0;
    
    //set the current image as background
    document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";
    
    //make image transparent
    changeOpac(0, imageid);
    
    //make new image
    document.getElementById(imageid).src = imagefile;

    //fade in image
    for(i = 0; i <= 100; i++) {
        window.setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
        timer++;
    }
}
//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id);
    opacity = (opacity == 100)?99.99:opacity;
    // New Firefox 
    object.style.opacity = (opacity / 100);
    // Mozilla & Firefox
    object.style.MozOpacity = (opacity / 100);
    // Safari, Konqueror
    object.style.KhtmlOpacity = (opacity/100) ;
    // IE/Win
    object.style.filter = "alpha(opacity:" + opacity + ")";
}

// ---------------------------------------------
// FROM http://clagnut.com/sandbox/imagefades/
// FADE BETWEEN IMAGE
function setOpacity(obj, opacity) {
  opacity = (opacity == 100)?99.999:opacity;
  
  // IE/Win
  obj.style.filter = "alpha(opacity:"+opacity+")";
  
  // Safari<1.2, Konqueror
  obj.style.KHTMLOpacity = opacity/100;
  
  // Older Mozilla and Firefox
  obj.style.MozOpacity = opacity/100;
  
  // Safari 1.2, newer Firefox and Mozilla, CSS3
  obj.style.opacity = opacity/100;
}

function fadeIn(objId,opacity) {
  if (document.getElementById) {
    obj = document.getElementById(objId);
    if (opacity <= 100) {
      setOpacity(obj, opacity);
      opacity += 10;
      window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 100);
    }
  }
}
function fadeOut(objId,opacity) {
  if (document.getElementById) {
    obj = document.getElementById(objId);
    if (opacity > 0) {
      setOpacity(obj, opacity);
      opacity -= 10;
      window.setTimeout("fadeOut('"+objId+"',"+opacity+")", 100);
    }
  }
}

function char2url(arg) {
//DEPRECATE, USE METHOD POST INSTEAD OF METHOD GET, SO NO NEED TO CONVERT URLENCODE
/* Use with python fuction: url2char(url):
def url2char(url):
  char_list = { "|_newline_|": "\n" }
  for i,j in char_list.iteritems():
    if i in url:
      url = url.replace(i,j)
  
  return url
*/
  //arg = replace(arg, "\n", "|_newline_|");
  arg = replace(arg, "|_", " | _beg_");
  arg = replace(arg, "_|", "_end_ | ");
  arg = replace(arg, ";", "|_scln_|");
  arg = replace(arg, "&", "|_amp_|");
  arg = replace(arg, "+", "|_plus_|");
  arg = replace(arg, "%", "|_percent_|");
  return arg
}

function replace(argvalue, x, y) {
//http://www.tneoh.zoneit.com/javascript/js_func.html
//Substitute a string X to a string Y in an argument.
//Usage: replace("abc123defgh", "123", "ABC");
  if ((x == y) || (parseInt(y.indexOf(x)) > -1)) {
    errmessage = "replace function error: \n";
    errmessage += "Second argument and third argument could be the same ";
    errmessage += "or third argument contains second argument.\n";
    errmessage += "This will create an infinite loop as it's replaced globally.";
    alert(errmessage);
    return false;
  }
  while (argvalue.indexOf(x) != -1) {
    var leading = argvalue.substring(0, argvalue.indexOf(x));
    var trailing = argvalue.substring(argvalue.indexOf(x) + x.length, 
	argvalue.length);
    argvalue = leading + y + trailing;
  }
  return argvalue;
}

// ---------------------------------------------
//	This is the source file for the "Hello World of AJAX" tutorial
//	You may use this code in your own projects as long as this 
//	copyright is left	in place.  All code is provided AS-IS.
//	This code is distributed in the hope that it will be useful,
//	but WITHOUT ANY WARRANTY; without even the implied warranty of
//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//	
//	Please visit http://www.DynamicAJAX.com for more great AJAX
//	source code and tutorials.
//	
//	Copyright 2006 Ryan Smith / 345 Technical / 345 Group.

//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest(); //Not IE
  } else {
    if(window.ActiveXObject) {
      return new ActiveXObject("Microsoft.XMLHTTP"); //IE
    } else {
      alert("Your browser doesn't support the XmlHttpRequest object. Better upgrade to Firefox.");
    }
  }
}

var url = "";
var htmlid = "";
var req = getXmlHttpRequestObject();

function d_say(arg1, arg2) {
  if (req.readyState == 4 || req.readyState == 0) {
    url = arg1;
    htmlid = arg2;
    req.onreadystatechange = d_handle;
    req.open("GET", url, true);
    req.send(null);
  }
}
function d_handle() {
  if (req.readyState == 4) {
    document.getElementById(htmlid).innerHTML = req.responseText;
  }
}

function d_cmd_post(cmd,id,nodeid,rootid) {
  sep="|||/";
  oinfo = "";
  d_cmd_post_with_info(cmd,id,nodeid,rootid, oinfo);
}

function d_cmd_post_with_info(cmd,id,nodeid,rootid,other_info) {
  sep="|||/";
  arg1 = "cmd=ajax/"+cmd+"/"+id+"/"+nodeid+"/"+rootid+"/"
  if (other_info == "") {
    oinfo = "";
  } else {
    oinfo = other_info+sep
  }
  arg2 = id;
  htmlid = arg2
  if (cmd=="addcmt" || cmd=="edit" || cmd=="hide" || cmd=="view" || cmd=="preview" || cmd=="discard" || cmd=="submit" || cmd=="refresh_view" || cmd=="refresh_info" || cmd=="delete" || cmd=="confirm_delete" || cmd=="cancel_delete") {
    req.open("POST", "?", false);
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    if (cmd=="submit" || cmd=="preview") {
      extra = char2url(document.getElementById("edit-title_"+id).value+sep + document.getElementById("edit-content_"+id).value+sep + document.getElementById("edit-info_"+id).value+sep + document.getElementById("oldheading_"+id).value+sep + document.getElementById("oldcontent_"+id).value+sep + document.getElementById("oldinfo_"+id).value+sep);
      //DEBUG
      //document.getElementById("test1pointx").innerHTML = 'JS-TESTPOINT:'+arg1+extra;
      req.send(arg1+extra);
    } else {
      req.send(arg1+oinfo);
    } 
    
    if (cmd=="view") {
      document.getElementById(id).innerHTML = req.responseText;
      location.hash = id;

    } else if (cmd=="hide") {
      document.getElementById(id).innerHTML = req.responseText;

    } else if (cmd=="addcmt") {
      document.getElementById('form_'+id).innerHTML = req.responseText;

    } else if (cmd=="preview") {
      document.getElementById("preview_"+id).innerHTML = req.responseText;
      document.getElementById("edit-content_"+id).rows = 2; 
      document.getElementById('info_'+id).innerHTML = "";

    } else if (cmd=="discard") {
      document.getElementById('form_'+id).innerHTML = req.responseText;
      d_cmd_post_with_info('refresh_info',id,nodeid,rootid,"Discard changed."+sep);
      document.getElementById('preview_'+id).innerHTML = "";
      d_cmd_post('refresh_view',id,nodeid,rootid);

    } else if (cmd=="refresh_view") {
      document.getElementById('view_'+id).innerHTML = req.responseText;

    } else if (cmd=="refresh_info") {
      document.getElementById('info_'+id).innerHTML = req.responseText;
      setTimeout("document.getElementById('info_"+id+"').innerHTML = ''", 2400)

    } else if (cmd=="refresh_info_root") {
      document.getElementById('info_'+rootid).innerHTML = req.responseText;
      setTimeout("document.getElementById('info_"+rootid+"').innerHTML = ''", 2400)

    } else if (cmd=="submit") {
      document.getElementById('cmt_'+rootid).innerHTML = req.responseText;
      location.hash = id;

    } else if (cmd=="edit") {
      document.getElementById('form_'+id).innerHTML = req.responseText;
      document.getElementById('info_'+id).innerHTML = "";
      location.hash = 'form_'+id;

    } else if (cmd=="delete") {
      document.getElementById('info_'+id).innerHTML = req.responseText;

    } else if (cmd=="confirm_delete") {
      document.getElementById('cmt_'+rootid).innerHTML = req.responseText;
      d_cmd_post_with_info('refresh_info_root',id,nodeid,rootid,"Comment deleted"+sep);

    } else if (cmd=="cancel_delete") {
      d_cmd_post_with_info('refresh_info',id,nodeid,rootid,"Delete canceled"+sep);

    } else {
      document.getElementById(htmlid).innerHTML = req.responseText;
      document.getElementById('info_'+id).innerHTML = "";
    }
  } else if (cmd=="hideform") {
    document.getElementById(htmlid).innerHTML = "";
  } 
}
/*
function d_cmd_btn(cmd,id,nodeid) {
  arg1 = "cmd=ajax/"+cmd+"/"+id+"/"+nodeid+"/";
  arg1 = arg1+document.getElementById("edit-title_"+id).value+"|||/";
  arg1 = arg1+document.getElementById("edit-content_"+id).value+"|||/";
  arg1 = arg1+document.getElementById("edit-info_"+id).value+"|||/";
  arg1 = arg1+document.getElementById("oldheading_"+id).value+"|||/";
  arg1 = arg1+document.getElementById("oldcontent_"+id).value+"|||/";
  arg1 = arg1+document.getElementById("oldinfo_"+id).value+"|||/";
  arg2 = id;
  //document.getElementById('testpoint'+"_"+id).innerHTML = arg1+'  |  '+arg2;
  htmlid = arg2;
  req.open("POST", "?", false);
  req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  req.send(arg1);
  //IF PREVIEW OR DISCARD, CHANGE ONLY PREVIEW-ID
  if (cmd=="preview") {
    document.getElementById("preview_"+id).innerHTML = req.responseText;

  } else if (cmd=="discard") {
    document.getElementById("info_"+id).innerHTML = req.responseText;

  } else if (cmd=="submit") {
    document.getElementById("view_"+id).innerHTML = req.responseText;
    document.getElementById("preview_"+id).innerHTML = "";
    d_cmd_btn("request_form", id, nodeid);

  } else if (cmd="request_form") {
    document.getElementById("form_"+id).innerHTML = req.responseText;

  } else if (cmd=="hide") {
    document.getElementById(id).innerHTML = req.responseText;

  } else if (cmd=="view") {
    document.getElementById(id).innerHTML = req.responseText;

  } else {
    document.getElementById(id).innerHTML = req.responseText;
  }
  //IF DISCARD, RESET CURRENT VALUE TO OLD VALUE
  if (cmd=="discard") {
    tempnew = document.getElementById("edit-title_"+id).value;
    tempold = document.getElementById("oldheading_"+id).value;
    document.getElementById("edit-title_"+id).value = tempold;
    document.getElementById("oldheading_"+id).value = tempnew;
    tempnew = document.getElementById("edit-content_"+id).value;
    tempold = document.getElementById("oldcontent_"+id).value;
    document.getElementById("edit-content_"+id).value = tempold;
    document.getElementById("oldcontent_"+id).value = tempnew;
    tempnew = document.getElementById("edit-info_"+id).value;
    tempold = document.getElementById("oldinfo_"+id).value;
    document.getElementById("edit-info_"+id).value = tempold;
    document.getElementById("oldinfo_"+id).value = tempnew;
  }
  //IF SUBMIT, CLEAR OLD TAG
  if (cmd=="submit") {
    document.getElementById("edit-title_"+id).value = "";
    document.getElementById("edit-content_"+id).value = "";
    document.getElement("edit-info_"+id).value = "";
  }
}
*/
function insert_pre(id,lang) {
  document.getElementById(id).innerHTML += '<pre lang="'+lang+'"></pre>';
}
