/*------------------------------------------------------------------------------
GENERAL FUNCTIONS
------------------------------------------------------------------------------*/
function addLoadListener(fn) {
	if (typeof window.addEventListener != 'undefined') {
		window.addEventListener('load', fn, false);
	} else if (typeof document.addEventListener != 'undefined') {
		document.addEventListener('load', fn, false);
	} else if (typeof window.attachEvent != 'undefined') {
		window.attachEvent('onload', fn);
	} else {
		var oldfn = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = fn;
		} else {
			window.onload = function() {
				oldfn();
				fn();
			}
		}
	}
}
addLoadListener(prepareLastEdited);
addLoadListener(initFormFields);
/*------------------------------------------------------------------------------
SELECT FUNCTIONS
------------------------------------------------------------------------------*/
/* Grabs CMS items which were last edited */
function prepareLastEdited() {
	// Define variables and arrays
	var element_name = "lastEdited";
	
	// Object detection
	if (!document.getElementById) return false;
	if (!document.getElementById(element_name)) return false;
	if (!document.getElementsByTagName) return false;

	// Grab main CMS content element
	var element = document.getElementById(element_name);

	// Define attributes of element
	var e = element;
	e.time = 0;
	e.duration = 600;
	e.r1 = 242;
	e.g1 = 116;
	e.b1 = 40;
	e.r2 = 255;
	e.g2 = 255;
	e.b2 = 255;
	// Call Fade animation function and pass array and defining parameters
	var callFadeObject = function() {
		fadeObject(element);
	}
	setTimeout(callFadeObject, 900);
}
/*------------------------------------------------------------------------------
ANIMATION FUNCTIONS
------------------------------------------------------------------------------*/
/* Animation functions */
/*
		t = time
		b = beginning position
		c = change in position
		d = duration
*/
function easeIn(t,b,c,d) {
	return c*t*t/(d*d) + b;
}
function easeOut(t,b,c,d) {
	return -c*t*t/(d*d) + 2*c*t/d + b;
}
function easeInOut(t,b,c,d) {
		if (t < d/2) return 2*c*t*t/(d*d) + b;
		var ts = t - d/2;
		return -2*c*ts*ts/(d*d) + 2*c*ts/d + c/2 + b;
}
/* Fades given element(s) from first color to second color */
function fadeObject(element) {
	// Grab element children
	var element_tds = element.getElementsByTagName("td");
	
	// Calculate distances for each of RGB
	var r_distance = element.r2 - element.r1;
	var g_distance = element.g2 - element.g1;
	var b_distance = element.b2 - element.b1;
	
	// Calculate new RGB values
	element.r1 = Math.ceil(easeIn(element.time++, element.r1, r_distance, element.duration));
	element.g1 = Math.ceil(easeIn(element.time++, element.g1, g_distance, element.duration));
	element.b1 = Math.ceil(easeIn(element.time++, element.b1, b_distance, element.duration));
	
	// Assign new RGB values to background of element(s)
	var current_rgb = 'rgb(' + element.r1 + ',' + element.g1 + ',' + element.b1 + ')';
	for (var i = 0; i < element_tds.length; i++) {
		element_tds[i].style.backgroundColor = current_rgb;
	}

	// Animate with recursion
	if (element.r1 < 255 || element.g1 < 255 || element.b1 < 255) {
		var repeat = function() {
			fadeObject(element);
		}
		setTimeout(repeat, 28);
	}
}
/*------------------------------------------------------------------------------
FORM FUNCTIONS
------------------------------------------------------------------------------*/
function editFormSubmit() {
	var notes = prompt('Please provide a detailed edit note below.');
	if (notes == null || notes == "") return false;
	document.editForm.txtEditNotes.value = notes;
	return true;
}

// Determines state of enabled/disabled form fields
function initFormFields()
{
    if (typeof document.getElementById == 'undefined') return false;
    if (typeof document.getElementsByTagName == 'undefined') return false;
    
    // Get all inputs
    var inputs = document.getElementsByTagName("input");
    
    for (var i = 0; i < inputs.length; i++)
    {
        // Init schedule end date form fields
        if (inputs[i].className == "noEndDate" || inputs[i].parentNode.className == "noEndDate")
        {
            disableFormFields(inputs[i], 'select', 'endDateTime');
            inputs[i].onclick = function() {
                disableFormFields(this, 'select', 'endDateTime');
            };
        }
    }
}

function disableFormFields(el, tagName, className)
{
    if (typeof document.getElementById == 'undefined') return false;
    if (typeof document.getElementsByTagName == 'undefined') return false;
    
    // Determine if enabling or disabling
    var isEnabling = false;
    if (!el.checked)
    {
        isEnabling = true;
    }
    
    // Get all form fields with specified class name
    var fields = document.getElementsByTagName(tagName);
    
    for (var i = 0; i < fields.length; i++)
    {
        if (fields[i].className == className)
        {
            if (isEnabling)
            {
                fields[i].removeAttribute("disabled");
            }
            else
            {
                fields[i].setAttribute("disabled", "disabled");
            }
        }
    }
}

/*--------------------------------------------------------------------------
Toggle Schedule functions
---------------------------------------------------------------------------*/

function ToggleScheduleDisplay()
 {                     
     var scheduleOpen ="";
     if (document.getElementById)                                        // DOM3 = IE5, NS6
     {
             scheduleOpen= document.getElementById('scheduleData').style.display;
     }
     else 
     {
           if (document.layers) 
           {                                                         // Netscape 4
               scheduleOpen= document.id.display;
           }
           else 
           {                                                           // IE 4
               scheduleOpen= document.all.id.style.display;
           } 

     }
     if (  scheduleOpen == 'none' )
     {
       showdiv('scheduleData');
       hidediv('statusDefault');
       document.getElementById('ScheduleOnOff').innerHTML="Stop Schedule";
     }
     else
     {
       hidediv('scheduleData');
       showdiv('statusDefault');
       document.getElementById('ScheduleOnOff').innerHTML="Schedule Posting";         
     }    
 }
 
 // The functions to hide and show are as follows:
 
function hidediv(id) 
{
  //safe function to hide an element with a specified id
  if (document.getElementById) 
  {                                                          // DOM3 = IE5, NS6
     document.getElementById(id).style.display = 'none'; 
  }
  else 
  {
    if (document.layers) 
    { // Netscape 4
        document.id.display = 'none';
    }
    else 
    { // IE 4
      document.all.id.style.display = 'none';
    } 
  }
}
function showdiv(id) 
{
 //safe function to show an element with a specified id
 if (document.getElementById) 
 { // DOM3 = IE5, NS6
    document.getElementById(id).style.display = 'block'; 
 }
 else 
 {
    if (document.layers) 
    { // Netscape 4
      document.id.display = 'block';
    }
    else 
    { // IE 4
     document.all.id.style.display = 'block';
    } 
  }
}
