opacity('updated',100,0,1);

function switchQuickAddVisibility() {
  var QA = document.getElementById('QA');
	if ( QA.style.display == "none" ) {
	  QA.style.display = "inline";
	}
	else {
	  QA.style.display = "none";
		resetQA();
	}
	return false;
}

function showQuickAdd() {
  var QA = document.getElementById('QA');
  QA.style.display = "inline";
}

function resetQA(){
   document.getElementById("event[title]").value = "";
	 document.getElementById("event[wholedayevent]").checked = false;
	 document.getElementById("event[reminder]").checked = true;
	 document.getElementById("event[timebegin]").value = "8:00 am";
	 document.getElementById("event[timeend]").value = "8:30 am";
}	
	
function switchfiltervisibility () {
  var filter = document.getElementById('filter');
	if ( filter.style.display == "none" ) {
	  filter.style.display = "inline";
	}
	else {
	  filter.style.display = "none";
	}
	return false;
}

function checkAll(myForm, id, state) {
  b = new Boolean( true );
  for (var cnt=0; cnt < myForm.elements.length; cnt++) {
    var ckb = myForm.elements[cnt];
    if (ckb.type == "checkbox" && ckb.name.indexOf(id) == 0) {
      if (ckb.checked == false) { b = false; }
    }
  }
  for (var cnt=0; cnt < myForm.elements.length; cnt++) {
    var ckb = myForm.elements[cnt];
    if (ckb.type == "checkbox" && ckb.name.indexOf(id) == 0) {
      if ( b == true ) { ckb.checked = false; }
      else { ckb.checked = true; };
    }
  }
}

function validate ( myForm, id ) {
  b = new Boolean( false );
  for (var cnt=0; cnt < myForm.elements.length; cnt++) {
    var ckb = myForm.elements[cnt];
    if (ckb.type == "checkbox" && ckb.name.indexOf(id) == 0) {
      if (ckb.checked == true) { b = true; break; }
    }
  }
  if ( b == false ) {
    alert ( "Please select one or more categories before clicking the button." );
    return false;
  }
  return true;
}

function createXMLHttpRequest() {
	if (window.ActiveXObject) {
		  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if (window.XMLHttpRequest) {
			xmlHttp = new XMLHttpRequest();
	}
}

function handleStateChange() {
   if (xmlHttp.readyState == 4) {
	 		if (xmlHttp.status == 200) {
				 updateDisplay();
			}
	 }
}

function addEvent() {
	 view = document.getElementById("view").value;
   etitle = document.getElementById("event[title]").value;
	 if (etitle=='') {alert('You must give the event a title.'); return;}
	 etimebegindate = document.getElementById("event[timebegindate]").value;
	 esponsorid = document.getElementById("event[sponsorid]").value;
	 ecategoryid = document.getElementById("event[categoryid]").value;
	 if (document.getElementById("event[wholedayevent]").checked){ ewholedayevent = 1; }
	 else { ewholedayevent = 0; }	 
	 if (document.getElementById("event[reminder]").checked){ ereminder = 1; }
	 else { ereminder = 0; }
	 etimebegin = document.getElementById("event[timebegin]").value;
	 etimebeginSelected = document.getElementById("event[timebegin]").selectedIndex;
	 etimeend = document.getElementById("event[timeend]").value;
 	 etimeendSelected = document.getElementById("event[timeend]").selectedIndex;
	 if ( (ewholedayevent==0) && (etimeendSelected <= etimebeginSelected) ) {
	 		alert('Please either select a All Day event, or make the ending time later than the starting time.'); 
			return;
	 }
	 erepeat = 0;
	 echecked = 1;
	 eqaflag = 1;
	 eqarecurflag = 0;
	 
	 var url = "changeeinfo.php?"
			 + "&ts=" + new Date().getTime();
	 var queryString = createAddQueryString( etitle, etimebegindate, esponsorid, ecategoryid, ewholedayevent, ereminder, etimebegin, etimeend, erepeat, echecked, eqaflag, eqarecurflag, view);
	 createXMLHttpRequest();
	 xmlHttp.onreadystatechange = handleStateChange;
	 xmlHttp.open("POST", url, true);
	 xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	 xmlHttp.send(queryString);
	 switchQuickAddVisibility();
	 resetQA();
}

function createAddQueryString( title, timebegindate, sponsorid, categoryid, wholedayevent, reminder, timebegin, timeend, repeat, checked, qaflag, qarecurflag, view) {

   var queryString = "event[title]=" + title
	 		 + "&event[timebegindate]=" + timebegindate
			 + "&event[sponsorid]=" + sponsorid
			 + "&event[categoryid]=" + categoryid
			 + "&event[wholedayevent]=" + wholedayevent
			 + "&event[timebegin]=" + timebegin
			 + "&event[timeend]=" + timeend
			 + "&event[reminder]=" + reminder
			 + "&repeat[mode]=" + repeat
			 + "&quickadd=" + qaflag
			 + "&check=" + checked
			 + "&view="+ view;

	 return queryString;
} 		

function updateDisplay(){
   var responseText = xmlHttp.responseText;
	 var day = responseText.substring(0,11);
	 var iHTML = responseText.substring(12,responseText.length);
	 if (document.getElementById(day)){
  	 block = document.getElementById(day);
  	 block.innerHTML = iHTML;
		 }
	 opacity('updated',0,100,500);
	 setTimeout("opacity('updated',100, 0,500)",2500);
//	 alert(responseText);

}  

function opacity(id, opacStart, opacEnd, millisec) {
	//speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	//determine the direction for the blending, if start and end are the same nothing happens
	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++)
			{
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}

function shiftOpacity(id, millisec) {
	//if an element is invisible, make it visible, else make it ivisible
	if(document.getElementById(id).style.opacity == 0) {
		opacity(id, 0, 100, millisec);
	} else {
		opacity(id, 100, 0, millisec);
	}
}

function blendimage(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++) {
		setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
		timer++;
	}
}

function currentOpac(id, opacEnd, millisec) {
	//standard opacity is 100
	var currentOpac = 100;
	
	//if the element has an opacity set, get it
	if(document.getElementById(id).style.opacity < 100) {
		currentOpac = document.getElementById(id).style.opacity * 100;
	}

	//call for the function that changes the opacity
	opacity(id, currentOpac, opacEnd, millisec)
}

function SetTime() {
document.getElementById("event[timeend]").selectedIndex = document.getElementById("event[timebegin]").selectedIndex+2;
}
//These next functions are for the drop down event edit icons
var timeout	= 2500;
var closetimer	= 0;
var e_edititem	= 0;

// open hidden layer
function mopen(id)
{	
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(e_edititem) e_edititem.style.display = 'none';

	// get new layer and show it
	e_edititem = document.getElementById(id);
	e_edititem.style.display = 'inline';

}
// close showed layer
function mclose()
{
	if(e_edititem) e_edititem.style.display = 'none';
}

// go close timer
function mclosetime()
{
	closetimer = window.setTimeout(mclose, timeout);
}

// cancel close timer
function mcancelclosetime()
{
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

// close layer when click-out
document.onclick = mclose;