var doubleclick = 0;
var doubletimer = 0;

function reset_click() {
  clearTimeout(doubletimer);
  doubleclick = 0;
}

function process_click() {
    clearTimeout(doubletimer);
    doubleclick = doubleclick+1;
    doubletimer=setTimeout('reset_click();',200);
}

if (document.images) {
  var preloadImg=new Array();
  preloadImg[0]= new Image();
  preloadImg[0].src="images/cross.png";
  preloadImg[1]= new Image();
  preloadImg[1].src="images/page_edit.png";
  preloadImg[2]= new Image();
  preloadImg[2].src="images/page_white_put.png";
  preloadImg[3]= new Image();
  preloadImg[3].src="images/arrow_right_blue.png";
  preloadImg[4]= new Image();
  preloadImg[4].src="images/pencil_add.gif";
  preloadImg[5]= new Image();
  preloadImg[5].src="images/up.png";
  preloadImg[6]= new Image();
  preloadImg[6].src="images/up_hig.png";
  preloadImg[7]= new Image();
  preloadImg[7].src="images/down.png";
  preloadImg[8]= new Image();
  preloadImg[8].src="images/down_hig.png";

  var preload_image=new Array();
  preload_image[0] = new Image(16,16);
  preload_image[0].src="images/loading.gif";
  preload_image[1] = new Image();
  preload_image[1].src="images/hide.gif";
  preload_image[2] = new Image();
  preload_image[2].src="images/hide-s.gif";
}

function initialise_table(table_name) {
  if(document.getElementById(table_name)) { var table = document.getElementById(table_name); }else{ return; }
  var tableDnD = new TableDnD();
  tableDnD.init(table);
}

function getY(obj) {
  var y = 1;
  while (obj = obj.offsetParent) { y += obj.offsetTop }
  return y;
}

function getX(obj) {
  var x = 1;
  while (obj = obj.offsetParent) { x += obj.offsetLeft }
  return x;
}

function setOpacity(level, obj) {
  if(typeof(obj.style.opacity)=='string') { obj.style.opacity = level/10; }
  if(typeof(obj.style.filter)=='string') { obj.style.filter = 'alpha(opacity=' + level*10 + ')'; }
}

function showOptions(itemid, showedit) {

  if(document.getElementById('item'+itemid)) {
    var obj = document.getElementById('item'+itemid);
  }else{
    return;
  }

  if(document.getElementById('mytoolbar')) {
    var mytoolbar = document.getElementById('mytoolbar');
  }else{
    return;
  }

  MouseY = getY(obj);
  MouseX = getX(obj);

  mytoolbar.style.top = MouseY+'px';
  mytoolbar.style.left = MouseX+'px';
  
  // rebuild links
  var htmlText = '<div><a href="javascript:void(0);" onclick="javascript:doubleclick=2;edit_item('+itemid+')"><img id="itemedit" src="images/page_edit.png" alt="Edit" title="Edit Entry" onmouseover="setOpacity(10, this);" onmouseout="setOpacity(5, this);" /></a><a href="javascript:void(0);" onclick="javascript:delete_item('+itemid+');"><img id="itemdel" src="images/cross.png" alt="Delete" title="Delete Entry" onmouseover="setOpacity(10, this);" onmouseout="setOpacity(5, this);" /></a>';
  if(showedit==1) {
    htmlText=htmlText+'<a href="javascript:void(0);" onclick="javascript:edit_item_extra('+itemid+')"><img id="itemvar" src="images/page_white_put.png" alt="Variables" title="Entry Variables" onmouseover="setOpacity(10, this);" onmouseout="setOpacity(5; ?>, this);" /></a>';
  }
  htmlText=htmlText+'</div>';
  mytoolbar.innerHTML = htmlText;
  setOpacity(5, document.getElementById('itemedit'));
  setOpacity(5, document.getElementById('itemdel'));
  if(showedit==1) { setOpacity(5, document.getElementById('itemvar')); }
  mytoolbar.style.display = 'block';
}

var lightHttp = 'unset';
var lightHttpType = '';
var xmlComm = '';
var xmlComm3 = '';
var xmlObj = '';

function process_ajax_data(url, functionName) {
  if(document.getElementById('lightbox')) {
    var lightbox = document.getElementById('lightbox');
  }else{
    return;
  }

  if(document.getElementById('blackout')) {
    var blackout = document.getElementById('blackout');
  }else{
    return;
  }

  ploading(lightbox);
  pblackout(blackout);

  lightHttpType = '2';
  xmlComm = functionName;
  if(lightHttp!='unset') { lightHttp.abort; }
  set_lightHttp();
  lightHttp.open('GET',url,true);
  lightHttp.send(null);
}

function put_ajax_data(url, objectName, functionName) {
  lightHttpType = '3';
  xmlObj = objectName;
  if(typeof(functionName)=='string') { xmlComm3 = functionName; }else{ xmlComm3 = ''; }
  if(lightHttp!='unset') { lightHttp.abort; }
  set_lightHttp();
  lightHttp.open('GET',url,true);
  lightHttp.send(null);
}

function post_ajax_data(url, functionName) {
  lightHttpType = '4';
  xmlComm = functionName;
  if(lightHttp!='unset') { lightHttp.abort; }
  set_lightHttp();
  lightHttp.open('GET',url,true);
  lightHttp.send(null);
}

function fetch_ajax_data(url) {
	if(document.getElementById('lightbox')) {
		var lightbox = document.getElementById('lightbox');
	}else{
	  return;
	}

	if(document.getElementById('blackout')) {
		var blackout = document.getElementById('blackout');
	}else{
	  return;
	}

	ploading(lightbox);
	pblackout(blackout);

	lightHttpType = '1';
	if(lightHttp!='unset') { lightHttp.abort; }
	set_lightHttp();
	lightHttp.open('GET',url,true);
	lightHttp.send(null);
}

function ploading(obj) {
	obj.innerHTML = '<h1><img src="images/loading.gif" style="margin-right:10px;" />Loading Data...</h1>';
	centerDiv(obj);
	obj.style.display = 'block';
}

function getPageSizeWithScroll(){
	if (window.innerHeight && window.scrollMaxY) {// Firefox
		yWithScroll = window.innerHeight + window.scrollMaxY;
		xWithScroll = window.innerWidth + window.scrollMaxX;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		yWithScroll = document.body.scrollHeight;
		xWithScroll = document.body.scrollWidth;
	} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
		yWithScroll = document.body.offsetHeight;
		xWithScroll = document.body.offsetWidth;
  	}
	arrayPageSizeWithScroll = new Array(xWithScroll,yWithScroll);

	return arrayPageSizeWithScroll;
}

function pblackout(obj) {
	page_dimensions = getPageSizeWithScroll();
	obj.style.width = page_dimensions[0]+'px';
	obj.style.height = page_dimensions[1]+'px';
	obj.style.left = '0px';
	obj.style.top = '0px';
	obj.style.display = 'block';

	if(document.getElementById('lightbox')) {
		var lightbox = document.getElementById('lightbox');
		lightbox.style.border = '2px solid #000';
		lightbox.style.backgroundColor = '#fff';
	}
	setOpacity('7', obj);
}

function unload_lbox() {
	if(document.getElementById('lightbox')) {
		document.getElementById('lightbox').style.display = 'none';
		document.getElementById('lightbox').innerHTML = '';
	}
	if(document.getElementById('blackout')) {
		document.getElementById('blackout').style.display = 'none';
	}
}

function centerDiv(divobj) {
	divobj.style.top = '0px';
	divobj.style.left = '0px';
	divobj.style.display = 'block';
	var ie=document.all && !window.opera
	var dom=document.getElementById
	var x = ((document.body.clientWidth-divobj.clientWidth)/2);
	this.standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes
	var scroll_top=(ie)? this.standardbody.scrollTop : window.pageYOffset
	var docheight=(ie)? this.standardbody.clientHeight: window.innerHeight
	var docheightcomplete=(this.standardbody.offsetHeight>this.standardbody.scrollHeight)? this.standardbody.offsetHeight : this.standardbody.scrollHeight //Full scroll height of document
	var objheight=divobj.offsetHeight //height of div element
	var topposition=(docheight>objheight)? scroll_top+docheight/2-objheight/2+"px" : scroll_top+15+"px" //Vertical position of div element: Either centered, or if element height larger than viewpoint height, 10px from top of viewpoint
	divobj.style.left=x+'px';
	divobj.style.top=Math.floor(parseInt(topposition))+"px"
}

function rollClose(obj, id) {
	obj.src = preload_image[id].src;
}

function set_lightHttp() {
	try {
		// Firefox, Opera 8.0+, Safari
		lightHttp = new XMLHttpRequest();
	} catch (e) {
		try {
			// Internet Explorer
			lightHttp = new ActiveXObject('Msxml2.XMLHTTP');
		} catch (e) {
			try {
				lightHttp = new ActiveXObject('Microsoft.XMLHTTP');
			} catch (e) {
				// Your browser does not support AJAX!
				return false;
			}
		}
	}
		
	lightHttp.onreadystatechange=function() {
		if(lightHttp.readyState==4) {
		  if(lightHttpType == '1' || lightHttpType == '2') {
			if(document.getElementById('lightbox')) {
				var lightbox = document.getElementById('lightbox');
				lightbox.innerHTML = '<p class="closeit"><a href="JavaScript:void(0);" onclick="JavaScript:unload_lbox();"><img id="closeit" alt="close" title="close" src="images/hide.gif" onmouseover="JavaScript:rollClose(this, 2)" onmouseout="JavaScript:rollClose(this,1)" /></a></p>'+lightHttp.responseText;
				centerDiv(lightbox);
				if(document.getElementById('blackout')) { pblackout(document.getElementById('blackout')); }
			}
		  }else if(lightHttpType == '3') {
		    if(document.getElementById(xmlObj)) { document.getElementById(xmlObj).innerHTML = lightHttp.responseText; }
		    if(xmlComm3!='') {
		      eval(xmlComm3);
		      xmlComm3 = '';
		    }
		  }else if(lightHttpType == '4') {
		    if(xmlComm!='') {
		    	ajaxResponse = escape(lightHttp.responseText);
		      xmlComm = xmlComm.replace(/RETVAL/, ajaxResponse);
		      eval(xmlComm);
		      xmlComm = '';
		    }
		  }
		}

		if(lightHttp.readyState==4 && xmlComm != '') {
		  if(lightHttpType == '2') {
		    eval(xmlComm);
		    xmlComm = '';
		  }
		}
	}
}
var t ='';

function fadeIn(obj) {
  if(document.getElementById(obj)) {
    setOpacity(0, document.getElementById(obj));
    document.getElementById(obj).style.visibility = 'visible';
    t=setTimeout('notchOpacityUp(0,"'+obj+'");',200);
  }
}

function notchOpacityUp(value, obj) {
  value++;
  if(value>10) { return; }
  t=setTimeout('notchOpacityUp('+value+', "'+obj+'");',200);
  setOpacity(value, document.getElementById(obj));
  return;
}

function fadeOut(obj) {
  if(document.getElementById(obj)) {
    setOpacity(10, document.getElementById(obj));
    document.getElementById(obj).style.visibility = 'visible';
    clearTimeout(t);
    t=setTimeout('notchOpacityDown(10,"'+obj+'");',400);
  }
}

function notchOpacityDown(value, obj) {
  value--;
  if(value<0) { return; }
  t=setTimeout('notchOpacityDown('+value+', "'+obj+'");',400);
  setOpacity(value, document.getElementById(obj));
  return;
}

function unloadLightbox() {
  clearTimeout(t);

  if(document.getElementById('lightbox')) {
    document.getElementById('lightbox').innerHTML = '';
    document.getElementById('lightbox').style.display = 'none';
  }

  if(document.getElementById('blackout')) { document.getElementById('blackout').style.display = 'none'; }
  return;
}

function viewImage(file) {
  if(document.getElementById('blackout')) { var blackout = document.getElementById('blackout'); }else{ return; }
  if(document.getElementById('lightbox')) { var lightbox = document.getElementById('lightbox'); }else{ return; }

  pblackout(blackout);

  lightbox.innerHTML = '<p id="lightbox_title" style="padding:0; margin:0;">Loading image...</p><p style="padding:0; margin:0; line-height:1px; text-align:center"><img style="cursor:pointer; width:1px; height:1px;" onclick="javascript:unloadLightbox();"; id="lightbox_image" name="lightbox_image" style="display:none; margin:0 auto;" src="'+file+'" onload="javascript:imageLoaded(this);" /></p>';
  lightbox.style.display = 'block';
  centerDiv(lightbox);
}

function imageLoaded(obj) {
  document.getElementById('lightbox_title').style.display = 'none';
  docImg = new Image()
  docImg.src=document.getElementById('lightbox_image').src;
  obj.style.width = docImg.width+'px';
  obj.style.height = docImg.height+'px';
  fadeImage(obj);
}

function fadeImage(obj) {
  if(document.getElementById('lightbox_title')) { document.getElementById('lightbox_title').style.visibility = 'hidden'; }
  if(document.getElementById('lightbox')) { var lightbox = document.getElementById('lightbox'); }else{ return; }
  setOpacity(0, obj);
  obj.style.visibility = 'visible';
  obj.style.display = 'block';
  centerDiv(lightbox);
  fadeIn(obj.name);
}

function isNumeric(val) {
  var validDigits='0123456789';
  var isNumber=true;
  var char;

  for (i = 0; i < val.length && isNumber == true; i++) { 
    char = val.charAt(i); 
    if (validDigits.indexOf(char) == -1) { isNumber = false; }
  }
  return isNumber;
}