var urlBase = '';
var bTagSuggest = false;
var bTagDisplay = false;
var ajaxElementId = 0;
var temp = new Array();
var loc = new String(window.location);

temp = loc.split('/');
if (temp[2] == 'localhost')
{
   urlBase = 'http://localhost/'+temp[3]+'/';
}
else if (temp[2] == 'tejas.richmond.edu')
{
   urlBase = 'http://tejas.richmond.edu/hengine/';
}
else 
{
   urlBase = 'http://'+temp[2]+'/';
}


function stateChangedDelete() 
{ 
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  { 
    document.getElementById(ajaxElementId).innerHTML=xmlHttp.responseText;
    cell = document.getElementById(ajaxElementId);
    idx = cell.parentNode.parentNode.rowIndex;
    document.getElementById('CitationsTable').deleteRow(idx);
	ajaxElementId = 0; 
    document.getElementById('SelectWhichCitation').selected=true;
  } 
} 
function stateChanged() 
{ 
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  { 
    document.getElementById(ajaxElementId).innerHTML=xmlHttp.responseText;
	ajaxElementId = 0; 
    document.getElementById('SelectWhichCitation').selected=true;
  } 
} 
function GetXmlHttpObject()
{ 
  var objXMLHttp=null
  if (window.XMLHttpRequest)
  {
    objXMLHttp=new XMLHttpRequest()
  }
  else if (window.ActiveXObject)
  {
    objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
  }
  return objXMLHttp
}
function changedYear()
{
   var aa = document.getElementsByTagName('select');
   var idNum = 0;
   var buffer = "";
   var end, start, box;
   var ii = 0;
   
   start = getSelectedValue(document.getElementById('startyear'));
   end = getSelectedValue(document.getElementById('endyear'));
   
   for (ii = 0; ii < aa.length; ii++)
   {
      kk = aa[ii].id;
      buffer += ii+ '->'+kk+"\n";
	  //alert(ii);
      if (0 <= kk.indexOf('EpisodesFipState'))
      {
 		 idNum = kk.replace('EpisodesFipState','');
         reloadLocation(idNum);
         buffer += ' changedYear ' + idNum + "\n";
     }
    }
	//alert(buffer);
	
	if (start > end)
	{
	   setSelectedValue(document.getElementById('endyear'),start);	
	}
   
  
       
}

function addLocation()
{
	box = document.getElementById('startyear');
	year = getSelectedValue(box);
	ts = getTS();
	//alert(ts);
	url=urlBase+'fips/boxes/'+ts+'/'+year+'/0/0/'+ts;
	$("fips").insert('<span id="Location'+ts+'"> Please wait...</span><br />');
	//box = document.getElementById('fips');
	//box = document.getElementById('Location'+ts);
	//box.innerHTML += url;
	//alert(box.innerHTML);
	new Ajax.Updater('Location'+ts, url, { method: 'get'});	
	
}
function changedState(idNum)
{
   //alert('changedState ' + idNum);
   reloadLocation(idNum);
	
}
function reloadLocation(idNum)
{
    var state, county, qStr, box, ts;
 
    //alert('reloadLocation ' + idNum);
	
 	box = document.getElementById('EpisodesFipState'+idNum);
	state = getSelectedValue(box);
    //alert(state);
	box = document.getElementById('EpisodesFipCounty'+idNum);
	county = getSelectedValue(box);
	if (county==' ')
	   county='Select';
    //alert(county);
	box = document.getElementById('startyear');
	year = getSelectedValue(box);
 
    ts = getTS();

	qStr = idNum+'/'+year+'/'+state+'/'+county;
	url=urlBase+'fips/boxes/'+qStr+'/'+ts;

    //alert(url);
 	new Ajax.Updater('Location'+idNum, url, { method: 'get'});	
}
function addNewTag()
{
   box=document.getElementById('EpisodeAddTags');
   tag = box.value;
   if (tag=='' || tag.length==0)
      return;
   //alert(tag);
   id = getTS();
   addTag(id,tag);	
}
function removeTag(id,tag)
{
   //box=document.getElementById(id);
   ToggleDiv(id,'none');
   box = document.getElementById('EpisodeTags');
   //alert('removeTag EpisodeTags value '+box.value);
   ii = box.value.indexOf(tag+'^');
   //alert(tag.length);
   len = tag.length + 1;
   tempStart = box.value.substr(0,ii);
   //alert('tempStart='+tempStart);
   ii+=len;
   if (ii < box.value.length)
      tempEnd = box.value.substr(ii);
   if (ii == box.value.length)
      tempEnd='';
   //alert('tempEnd='+tempEnd);
   box.value = tempStart+tempEnd;
   if (box.value.length==0)
   {
   	   bTagDisplay = false;
	   ToggleDiv('tag_display','none');
   }
   //alert('removeTag EpisodeTags value '+box.value);
   return false;
}
function addTag(id,tag)
{
	//alert('addTag '+id+' '+tag);
	box = document.getElementById('tag_suggest');
	if (bTagSuggest) {
		ToggleDiv('tag_suggest','none');
		bTagSuggest = false;
	}
	box.innerHTML='';
	box = document.getElementById('EpisodeTags');
	if (!bTagDisplay) {
		ToggleDiv('tag_display', '');
		bTagDisplay = true;
	}
    //alert('addTag EpisodeTags pre-value '+box.value);
	box.value+=tag+'^';
    //alert('addTag EpisodeTags post-value '+box.value);
	box = document.getElementById('tag_display');
	box.innerHTML+='<div id="'+id+'" style="display:inline">'+tag+' <a onclick="removeTag('+id+',\''+tag+'\'); return false;" href="/historyengine/" >[X]</a></div> ';
	box=document.getElementById('EpisodeAddTags');
	box.value='';
	box.focus();
	return(false);
}
function suggest() 
{
	if (bTagSuggest==false) 
   {
		ToggleDiv('tag_suggest','');
		bTagSuggest = true;
	}
   box = document.getElementById('EpisodeAddTags');
   if (box.value.length == 0)
   {
      ToggleDiv('tag_suggest','none');
      bTagSuggest = false;
   }
   else
   {
      url=urlBase+'tags/suggest/'+box.value;   
      //alert(url);
      new Ajax.Updater('tag_suggest', url, { method: 'get'});   
   }
}
function getTS()
{
    var ts, now;
	now = new Date();
	//ts = 'a'+now.getYear();
	//ts += 'b'+now.getMonth()
	//ts += 'c'+now.getDate()
	//ts += 'd'+now.getSeconds()
    ts = '10000'+now.getMilliseconds();
	return ts;	
}

function ToggleDiv(divName,value) {
  var el;
  //alert('ToggleDiv '+divName+' '+value)
  if (document.getElementById) { // DOM3 = IE5, NS6 
     el = document.getElementById(divName);
	 el.style.display = value;
     /*
     if (el.style.display == 'none') {
        el.style.display = ''; 
     }
     else {
        el.style.display = 'none'; 
     }
     */
  } 
  else  
    if (document.layers) { // Netscape 4 
      el = document.divName;
	  el.style.display = value;
	  /*
      if (el.style.display == 'none')
         el.style.display = ''; 
      else
         el.style.display = 'none'; 
      */
  } 
  else { // IE 4 
    document.all.divName.style.display = value;
	/*
    if (document.all.divName.style.display == 'none') 
       document.all.divName.style.display = ''; 
    else
       document.all.divName.style.display = 'none'; 
    */
  }
   
}
function getSelectedValue(box)
{
  return box.options[box.selectedIndex].value;
}
function setSelectedValue(box,value)
{
    for(var count = box.options.length - 1; count >= 0; count--)
    {
       if (box.options[count].text == value)
	   {
	   	  box.options[count].selected = true;
	   }
    }
  return box.options[box.selectedIndex].value;
}
function clearBox(box)
{
    for(var count = box.options.length - 1; count >= 0; count--)
    {
        box.options[count] = null;
    }
}
function addCitation() {
  var tbl = document.getElementById('CitationsTable');
  var lastRow = tbl.rows.length;

  var iteration = lastRow;
  var row = tbl.insertRow(lastRow);
  var el,type,eid;
  var sel;
  var cell;
  var url;
  
  if (ajaxElementId != 0) {
  	alert('Please try again.');
	return false;
  }
  cell = row.insertCell(0);
  ajaxElementId = 'citation' + iteration;
  cell.setAttribute('id', ajaxElementId);
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    cell.innerHTML= "<b><center>Can not create new citation because your browser does not support Asyncronous HTTP Request, please upgrade your browser.</center></b>";
    return
  } 
  else {
    cell.innerHTML="&nbsp;<br /><b>Loading...</b>";
  }
  type = getSelectedValue(document.getElementById('EpisodeWhichCitation'));
  eid = document.getElementById('eid').value;
  //if (!confirm('eid '+eid)) return false;
  url = urlBase + 'CitationDefinitions/form/' + type;
  url += '/'+eid+'/'+ajaxElementId;	
  //cell.innerHTML=url;
  //alert(url);
  xmlHttp.onreadystatechange=stateChanged ;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  return false;
}
function deleteCitation(divId,entryId) {
   var url;
   var cell;
   if (confirm('Are you sure you want to delete this citation?')) {
   	//alert(entryId);
        if (entryId > 0) {
         if (ajaxElementId != 0) {
            alert('Please try again.');
            return false;
         }
	  	 ajaxElementId=divId;
	  	 //alert(1+' '+divId);
         cell=document.getElementById(divId);
         cell.innerHTML="&nbsp;<br /><b>Deleting...</b><br />";
		 
         xmlHttp=GetXmlHttpObject();
         if (xmlHttp == null) {
		 	cell.innerHTML = "<b><center>Can not delete citation because your browser does not support Asyncronous HTTP Request, please upgrade your browser.</center></b>";
		 }
		 else 
		 {
		 	//alert('1a');
			url = urlBase + 'citations/delete/' + divId + '/' + entryId + '/' + 'ajax';
			//alert(url + ' ' + divId);
			xmlHttp.onreadystatechange = stateChangedDelete;
			xmlHttp.open("GET", url, true);
			xmlHttp.send(null);
		 }
      }
      else {
         document.getElementById(divId).style.display='none';
		 cell = document.getElementById('Citation'+divId+'Status');
		 //alert(cell.value);
         document.getElementById('Citation'+divId+'Status').value='delete';
		 cell = document.getElementById(divId);
		 idx = cell.parentNode.parentNode.rowIndex;
		 document.getElementById('CitationsTable').deleteRow(idx);
      }
    }
   return false;
 }
