var static_height;
var divHeader;
var divMenu;
var divYearHeader;
var divContent;
var divFooter;
var tableContent;
var static_height;
var browserheight;
var browserwidth;

// Colours
var yearrange_out = '#8C8C8C';
var yearrange_over = '#007FC3';
var year_out_colour = '#AFD4E9';
var year_over_colour = '#007FC3';
var base_out_colour = '#EEEEEE';
var base_over_colour = '#007FC3';

var siteroot = 'http://www.iglyo.com/memories/';
var memories_image_path = siteroot + 'data/mem_memories/';
var years_image_path = siteroot + 'data/mem_years/';

var divContent;
var currentyear;
var pagetype;

var isIE55Min = getIEVersionNumber() >= 5.5;
var isIE6_029Min = getIEVersionNumber() >= 6.029;
var isIE7Min = getIEVersionNumber() >= 7;
var cookieEnabled = navigator.cookieEnabled;
var isIE = (navigator.appName == "Microsoft Internet Explorer");

var default_resize_width = 250;

// Image array
im = Array();

var yearimages = new Array(1,2,3,4,5);

var selectyeardiv;
var selectbasediv;
var selectedimageindex;

// Paths
images_folder = 'data';

var imgs_over = new Array(5);
var imgs_out = new Array(5);

function getIEVersionNumber() {
  var ua = navigator.userAgent;
  var MSIEOffset = ua.indexOf("MSIE ");
  if (MSIEOffset == -1) {
    return 0;
  } else {
    return parseFloat(ua.substring(MSIEOffset + 5, ua.indexOf(";", MSIEOffset)));
  };
}


function is_ws(nod) {
	//return !(/[^\t\n\r ]/.test(nod.data));
	var m = !(nod.data.match(/[^\s]+/));
	return m;
	//return !(nod.data.match(/[^\s]+/));
}

function findWhiteSpace(node, nodeNo) {
	for (i=0; i<node.childNodes.length; i++) {
		if (node.childNodes[i].nodeType == 3 && is_ws(node.childNodes[i])) {
			nodesToDelete[nodesToDelete.length] = node.childNodes[i]
		}
		if (node.childNodes[i].hasChildNodes()) {
			findWhiteSpace(node.childNodes[i], i);
		}
	}
	node = node.parentNode;
	i = nodeNo;
}

function stripWhiteSpaceFromXML(node) {
	nodesToDelete = Array();
	findWhiteSpace(node, 0);
	for(i=nodesToDelete.length-1;i>=0;i--) {
		nodeRef = nodesToDelete[i];
		nodeRef.parentNode.removeChild(nodeRef)
	}
	return(node);
}

function getXMLValue(tree,item) {
  
  var found = false;
  var i = 0;
  var result = '';
  if (tree.hasChildNodes()) {
    do {
        if (tree.childNodes[i].tagName == item) {
          found = true;
          result = getNodeText(tree.childNodes[i]);
        } else {
          i++;
        };
    } while ((!found) && (i < tree.childNodes.length));
  };  
  return (result);
};

function getXMLNode(tree,item) {
  
  var found = false;
  var i = 0;
  var result = '';

  if (tree.hasChildNodes()) {
    do {
      if (tree.childNodes[i].tagName == item) {
        found = true;
        result = tree.childNodes[i];
      } else {
        i++;
      };
    } while ((!found) && (i < tree.childNodes.length));
  } else {
    result = '';
  };
  
  return (result);
};

function getXMLNodes(tree,item) {
  var i = 0;
  var result = new Array();
  if (tree.childNodes.length > 0) {
    do {
      if (tree.childNodes[i].tagName == item) {
        result[result.length] = tree.childNodes[i];
      };
      i++;
    } while (i < tree.childNodes.length);
  };
  
  return (result);
};

function getXMLValues(tree, item) {
  var i = 0;
  var result = new Array();
  if (tree.hasChildNodes()) {
    if (tree.childNodes.length > 0) {
      do {
        if (tree.childNodes[i].tagName == item) {
          result[result.length] = getNodeText(tree.childNodes[i]);
        };
        i++;
      } while (i < tree.childNodes.length);
    };
  };
    
  return (result);
};


function getNodeText(node) {
  if (typeof node.textContent != 'undefined') {
    return node.textContent;
  } else if (typeof node.innerText != 'undefined') {
    return node.innerText;
  } else if (typeof node.text != 'undefined') {
    return node.text;
  };
};


function childNodeExists(tree, item) {
  
  var found = false;
  var i = 0;
  var bool = tree.hasChildNodes();
  if (bool) {
    if (tree.childNodes.length == 0) {
      return (false)
    } else {
      do {
        if (tree.childNodes[i].tagName == item) {
		  found = true;
        } else {
          i++;
        };
      } while ((!found) && (i < tree.childNodes.length));
      return(found);
    };
  } else {
    return(false);
  };
};


function resize_main() { 
	
  //var browserwidth = getbrowserwidth();
  //var browserheight = getbrowserheight();
  
  // Footer resize code
  // Disabled
  /*
  if (browserheight >= static_height + 30) {
	divFooter.style.top = String(browserheight - divFooter.style.height - 20) + 'px';
	divContent.style.height = String(browserheight - static_height)  + 'px';
	tableContent.style.height = String(divContent.offsetHeight)  + 'px';
	tableContent.style.width = String(divContent.offsetWidth - 12)  + 'px';
  };
  */
};

function getbrowserwidth() {
	if (typeof(window.innerWidth) == 'number') {
		//Non-IE
		browserwidth = window.innerWidth;
	} else if( document.documentElement && document.documentElement.clientWidth ) {
		//IE 6+ in 'standards compliant mode'
		browserwidth = document.documentElement.clientWidth;
	} else if( document.body && document.body.clientWidth) {
		//IE 4 compatible
		browserwidth = document.body.clientWidth;
	}
	return (browserwidth);
};

function getbrowserheight() {
	if (typeof(window.innerHeight) == 'number') {
		//Non-IE
		browserheight = window.innerHeight;
	} else if( document.documentElement && document.documentElement.clientHeight ) {
		//IE 6+ in 'standards compliant mode'
		browserheight = document.documentElement.clientHeight;
	} else if( document.body && document.body.clientHeight) {
		//IE 4 compatible
		browserheight = document.body.clientHeight;
	}
	return (browserheight);
};

function text_rollover(item, colour, cursorstate) {
  item.style.cursor = cursorstate;
  item.style.background = colour;
}

function image_over(index, image_identifier, year_identifier, base_identifier) {
	imagecellid = 'year' + image_identifier;
	//alert(imagecellid);
  document.getElementById(imagecellid).style.cursor = 'pointer';
  //year_over(year_identifier, base_identifier);
  document.images[image_identifier].src = imgs_over[index].src;
};

function image_out(index, image_identifier, year_identifier, base_identifier) {
  document.getElementById('year'+image_identifier).style.cursor = 'default';

	yearvaluediv = document.getElementById(year_identifier + 'value');
	yeartext = getNodeText(yearvaluediv.childNodes[0]);
	if (yeartext != currentyear) {
		document.images[image_identifier].src = imgs_out[index].src;
	};
};

function year_over(year_identifier, base_identifier) {
  
  year = document.getElementById(year_identifier);
  base = document.getElementById(base_identifier);
  
  year.style.cursor = 'pointer';
  base.style.cursor = 'pointer';
  
  /*
  
  
  year.style.background = year_over_colour;
  base.style.background = base_over_colour;
  */
};

function year_out(year_identifier, base_identifier) {
  year = document.getElementById(year_identifier);
  base = document.getElementById(base_identifier);
  
  year.style.cursor = 'default';
  base.style.cursor = 'default';
  
  /*
  
    
  year.style.background = year_out_colour;
  base.style.background = base_out_colour;
  */
};

function selectyear(index, yearbox_identifier, yearvalue_identifier, base_identifier) {
yearvaluediv = document.getElementById(yearvalue_identifier);
//alert(yearvalue_identifier);
if (yearvaluediv.childNodes.length > 0) {
	//alert('1');
	
	//yeartext = getNodeText(yearvaluediv.childNodes[0]);
	
	yeartext = getNodeText(yearvaluediv);
	
	//if (yeartext != currentyear) {
	  
	  selectyeardiv.style.background = year_out_colour;
	  selectbasediv.style.background = base_out_colour;
	  //if (imgs_out.length > 
	  if (selectedimageindex <= (imgs_out.length - 1)) { 
	    document.images['image'+String(selectedimageindex + 1)].src = imgs_out[selectedimageindex].src;
	  };
	  
	  yeardiv  = document.getElementById(yearbox_identifier);
	  basediv = document.getElementById(base_identifier);
	  
	  yeardiv.style.background = year_over_colour;
	  basediv.style.background = base_over_colour;
	  
	  if (index <= (imgs_over.length - 1)) { 
	    document.images['image'+String(index + 1)].src = imgs_over[index].src;
	  };
	  
	  selectyeardiv = yeardiv;
	  selectbasediv = basediv;
	  selectedimageindex = index;
	  
	  // TODO selectimagediv;
	  
	  currentyear = yeartext;
	  
	  getarticle(currentyear, pagetype, true);
	  window.scrollTo(0,0);
	//};
};

}


function changeyearrange(start) {
  
  // Load new image definitions into image array
  var urlpart = siteroot + 'getyearrange.php?START='+start;
	
	
	try {
	  loader = new ajax();
      loader.performXMLHttpRequest(	"GET",
						  	    urlpart,
							    true,
							    'text/xml',
							    notifyYearRangeChange,
							    '',
								''
							    );
	  
    } catch(e) {
      if (e.ajaxexception) {
        alert ("Caught client ajax exception: " + e.name + ": " + e.message);
      };
    };

    loader = null; 
  
  

};

function notifyYearRangeChange(req) {
  var s, y, i;
  
  response = stripWhiteSpaceFromXML(req.responseXML).childNodes[0];
   
   if (childNodeExists(response, 'error')) {
	 alert(getXMLValue(response, 'error'));
   } else {
	 yearsnode = getXMLNode(response, 'years');
	 start = parseInt(getXMLValue(yearsnode.childNodes[0], 'YEAR'));
	 for (i=0; i< yearsnode.childNodes.length; i++) {
		
		s = 'year' + String(i+1) + 'value';
		y = document.getElementById(s);
		if (y.childNodes.length > 0) {
	  		y.removeChild(y.childNodes[0]);
		};
	    
		var t = String(start + i);
		text_node = document.createTextNode(String(start + i));
    	y.appendChild(text_node);
		
		yearnode = yearsnode.childNodes[i];
		
		imgs_over[i].src = years_image_path + decode_value(getXMLValue(yearnode,'MENUOVER'));
		imgs_out[i].src = years_image_path + decode_value(getXMLValue(yearnode,'MENUOUT'));
		
		im = 'image' + String(i + 1);
		document.images[im].src = imgs_out[i].src;
	 };
	 currentyear = start;
     //pagetype = 'People';
	 selectyear(0, 'year1', 'year1value', 'base1');
	 im = 'image' + String(selectedimageindex + 1);
	 //alert(im);
	 document.images[im].src = imgs_over[selectedimageindex].src;
  };
};

function getsectionheading(yt, pt) {
	if (pt == 'People') {
	out = 'people in ' + yt;  
  } else if (pt == 'Organisation') {
	out = 'organisation in ' + yt;
  } else if (pt == 'Events') {
	out = 'events in ' + yt;  
  };
  return(out);
};

function switchsection(newpagetype) {
  pagetype = newpagetype;
  getarticle(currentyear, pagetype, false);
};

function getarticle(currentyear, pagetype, nearest) {
	
	var urlpart = siteroot + 'getarticle.php?YEAR='+currentyear+'&PAGETYPE='+pagetype;
	
	if (nearest == true) {
	  urlpart = urlpart + '&NEAREST=1'; 	
	};
	
	try {
	  loader = new ajax();
      loader.performXMLHttpRequest(	"GET",
						  	    urlpart,
							    true,
							    'text/xml',
							    notifyLoaded,
							    '',
								''
							    );
	  
    } catch(e) {
      if (e.ajaxexception) {
        alert ("Caught client ajax exception: " + e.name + ": " + e.message);
      };
    };

    loader = null;
}

function notifyLoaded(req){
   response = stripWhiteSpaceFromXML(req.responseXML).childNodes[0];

   if (childNodeExists(response, 'error')) {
	 alert(getXMLValue(response, 'error'));
   } else {
	 
	 pagetype = getXMLValue(response, 'PAGETYPE');
	 
	 spot = document.getElementById('spotlighttext');
     if (spot.childNodes.length > 0) {
       spot.removeChild(spot.childNodes[0]);
     };
  
     text_node = document.createTextNode(getsectionheading(currentyear, pagetype));
     spot.appendChild(text_node);
	 
	 divContent = document.getElementById('content');
     var article_divs = divContent.getElementsByTagName('div');
	 populate(response, article_divs, true, false); 
   };         
};

function resizeimage(im, max_width) {
  if (isIE) {
	   w = im.width;
	   h = im.height;
	   if (w > max_width) {
		  scale = (1 - ((w - max_width) / w));
		  im.width= w * scale;
		  im.height= h * scale;
		   alert('resize from ' + String(w) + ' to ' + String(im.width));
		  
		}	
  } else {
    im.setAttribute('width', String(max_width));
  };
}

function generate_submit_comment(xml, div) {
  if (div.childNodes.length > 0) {
    div.removeChild(div.childNodes[0]);
  };
 
  var a = document.createElement('a');
  a.setAttribute('href', 'submission.php?YEAR=' + currentyear + '&PAGETYPE=' + pagetype);
  text_node = document.createTextNode('Submit comment for this section');
  a.appendChild(text_node);
 
  div.appendChild(a);
};

function generate_image(xml, div) {
	
	var image_width;
	var image_height;
	
	// get node text
	imagename = div.getAttribute('id');
	imagefile = decode_value(getXMLValue(xml, imagename));
	imagecaption = decode_value(getXMLValue(xml, imagename + 'CAPTION'));
	imagealign = decode_value(getXMLValue(xml, imagename + 'ALIGN'));
	display_width = decode_value(getXMLValue(xml, imagename + 'DISPLAYWIDTH'));
	
	if (imagefile != '') {
		//image = document.createElement('img');
		if ((display_width != '') && (!isNaN(display_width))) {
			  resize_width = parseInt(displaywidth)
		} else {
		  resize_width = default_resize_width;  
		};
		
		// With IE, it appears that it is necessary to set the width AND the height attribute,
		// and only after the SRC has been set (else the image will not resize). 
		// So it is necessary to load the width and height
		// first in a separate image variable :-(
		if (isIE) {
			image = new Image();
			image.src = memories_image_path + imagefile;
			image_width = image.width;
			image_height = image.height;
			
			if (image_width > resize_width) {
				scale = (1 - ((image_width - resize_width) / image_width));
				image_width = image_width * scale;
				image_height = image_height * scale;
			};
			
			div.style.width = String(resize_width) + 'px';
			
			imagetag = document.createElement('img');
			imagetag.setAttribute('src', memories_image_path + imagefile);
			imagetag.setAttribute('width', image_width);
			imagetag.setAttribute('height', image_height);
		} else {
		    imagetag = document.createElement('img');
			imagetag.setAttribute('src', memories_image_path + imagefile);
			imagetag.setAttribute('width', resize_width);
		};
		
		if (imagealign == '') {
			randomnumber=Math.floor(Math.random()*2);
			if (randomnumber == 0) {
				imagealign = 'left';
			} else {
				imagealign = 'right';
			};
		};
		
		if (isIE) {
		  div.style.styleFloat = imagealign;
		} else {
		  div.style.cssFloat = imagealign;	
		};
		
		div.style.margin = '20px 20px 20px 20px';
		div.style.padding = '0px';
		div.style.font = '10px Arial';
		div.style.color = 'black';
		
		div.appendChild(imagetag);
		
		if (imagecaption != '') {
			br = document.createElement('br');
			div.appendChild(br);
			captiondiv = document.createElement('div');
			captiondiv.className = 'imagecaption';
			text = document.createTextNode(imagecaption);
			captiondiv.appendChild(text);
			div.appendChild(captiondiv);
		};
	};
};

/*
function loadyearimages(xml) { //v3.0
  
  d = document;
  
  if(d.images) { 
    if(!d.im) d.im = new Array(5);
	
	for (i=0; i<xml.childNodes.length; i++) {
	  d.im[i] = new Array(2);
	  node = xml.childNodes[i];
	  if (childNodeExists(node, 'year1out')) {
	    s = getXMLValue(node, 'year1out');
	  
	    d.im[i][0] = new Image;
		d.im[i][0].src = images_folder + '/' + s;    
		if (document.getElementbyId('image' + String(i))) {
		  document.getElementbyId('image' + String(i)).src = d.im[i][0].src;
		};
	  } else {
	    d.im[i][0] = '';
	  };
	  
	  if (childNodeExists(node, 'year1over')) {
	    s = getXMLValue(node, 'year1over');
		
		d.im[i][1] = new Image;
		d.im[i][1].src = images_folder + '/' + s;    
		
	  } else {
	    d.im[i][1] = '';
	  };
	};
	
  }
}
*/

function initialize_submission(pagetype, year) {

  for (var i=0; i < document.submissionsform.PAGETYPE.length; i++) {
    if (document.submissionsform.PAGETYPE[i].value == pagetype) {
      document.submissionsform.PAGETYPE[i].selected = true;
    }
  };
  
  for (var i=0; i < document.submissionsform.YEAR.length; i++) {
    if (document.submissionsform.YEAR[i].value == year) {
      document.submissionsform.YEAR[i].selected = true;
    } else {
	  document.submissionsform.YEAR[i].selected = false;
	};
  }
};

function initialize_main() { 
  
  divHeader = document.getElementById('header');
  divMenu = document.getElementById('menu');
  divYearHeader = document.getElementById('yearheader');
  divFooter = document.getElementById('footer');
  divContent = document.getElementById('content');
  tableContent = document.getElementById('contenttable');
  
  for (i=0; i< 5; i++) {
	imgs_out[i] = new Image;
	imgs_over[i] = new Image;
  };
  
  changeyearrange('1984');
  
  currentyear = '1984';
  pagetype = 'People';
  
  selectyeardiv = document.getElementById('year1');
  selectbasediv = document.getElementById('base1');
  selectedimageindex = 0;
  
  selectyear(0,'year1','year1value','base1');
  
};
