function addEvent(obj, evType, fn)
{
	if(obj){
		if (obj.addEventListener)
		{
			obj.addEventListener(evType, fn, false);
			return true;
		}
		else if (obj.attachEvent)
		{
			var r = obj.attachEvent('on'+evType, fn);
			return r;
		}
		else
		{
			return false;
		}
	} else {
		return false;
	}
}


/* Standard Form Validation */
function validateForm()
{
// check origin
if (document.forms.tripRequest.name_origin.value == ""||document.forms.tripRequest.name_origin.value =="Enter Origin")
{
	alert ("Please enter your origin");
	return false;
}

if (document.forms.tripRequest.name_destination.value == ""||document.forms.tripRequest.name_destination.value =="Enter Destination")
{
	alert ("Please enter your destination");
	return false;
}
}


/* Form Functions */

function clearOptions(selectId)
{
  document.getElementById(selectId).options.length = 0;
}

function addOption(selectId, txt, val)
{
    var objOption = new Option(txt, val);
    document.getElementById(selectId).options.add(objOption);
}

function resetSelect(selectId)
{
 document.getElementById(selectId).disabled=true;
}

function submitForm(formButtonID)
{
  document.getElementById(formButtonID).click();
}

function formInit(submitName, selectName)
{
  var submit=document.getElementById(submitName);
  var select=document.getElementById(selectName);
  addEvent(select,"change",function(){submit.click()});
//  submit.style.visibility = 'hidden';
  return true;
}


function addTableRow(table, values)
{
  var existingRow = document.getElementById('ContentObjectAttribute_row_'+values[3]+'_'+values[0]);
  if (existingRow == null)
  {
  var tbody = document.getElementById(table).getElementsByTagName("TBODY")[0];
  var row = document.createElement("TR");
  row.id = 'ContentObjectAttribute_row_'+values[3]+'_'+values[0];
  td0=document.createElement("TD");
  var el = document.createElement('input');
  el.type = 'hidden';
  el.value = values[0];
  el.name = 'ContentObjectAttribute_LineIDs_'+values[3]+'[]'
  td0.appendChild(el);
  var el = document.createElement('input');
  el.type = 'checkbox';
  el.value = values[0];
  el.name = 'ContentObjectAttribute_selection_'+values[3]+'[]';
  td0.appendChild(el);
  row.appendChild(td0);
  td1=document.createElement("TD");
  td1.appendChild(document.createTextNode(values[1]));
  row.appendChild(td1);
  td2=document.createElement("TD");
  td2.appendChild(document.createTextNode(values[2]));
  row.appendChild(td2);
  tbody.appendChild(row);
  }
  else
  {
    alert('Line "'+values[1]+'" already part of list');
  }
}
/* Cookie Functions */
function createCookie(name,value,days)
{
  if (days)
  {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++)
  {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function eraseCookie(name)
{
  createCookie(name,"",-1);
}

/* Timetable Functions */

var currentPage=1;

function timtablePrevious(itemsPerPage)
{
  if (currentPage != 1)
  {
    timetablePage(currentPage-1,itemsPerPage);
  }
}

function timtableNext(itemsPerPage)
{
  var maxPage=Math.ceil(document.getElementById('timetable').tBodies[0].rows[1].cells.length/itemsPerPage);
  if (currentPage < maxPage)
    timetablePage(currentPage+1,itemsPerPage);
}

function timetableInit(itemsPerPage)
{
  var page=1;
  var colMin=page*itemsPerPage+1-itemsPerPage;
  var colMax=page*itemsPerPage;

  var tablerows=document.getElementById('timetable').tBodies[0].rows;
  var js_timing=document.getElementById('js_timing');

  document.getElementById('page'+currentPage).style.fontWeight='';
  for(var row=1;row < tablerows.length;row++)
  {
    var start = new Date();
    for(var col=1; col < tablerows[row].cells.length;col++)
    {
      if (col >= colMin && col <= colMax)
      {
        tablerows[row].cells[col].className='';
      }
      else
      {
        tablerows[row].cells[col].className='javascriptDisplayNone';
      }

    }
    var finish = new Date();
    var elapsed_time = finish - start;
    var listItem = document.createElement('li');
    var listItemText = document.createTextNode(elapsed_time.valueOf());
    listItem.appendChild(listItemText);
    js_timing.appendChild(listItem);

  }
  document.getElementById('page'+page).style.fontWeight=900;
  currentPage=page;
}


function timetablePage(page,itemsPerPage)
{
  var colMin=page*itemsPerPage+1-itemsPerPage;
  var colMax=page*itemsPerPage;
  var currColMin=currentPage*itemsPerPage+1-itemsPerPage;
  var currColMax=currentPage*itemsPerPage;

  var tablerows=document.getElementById('timetable').tBodies[0].rows;

  document.getElementById('page'+currentPage).style.fontWeight='';
  for(var row=1;row < tablerows.length;row++)
  {
    var tablerow=tablerows[row];
    var colLimit=currColMax;
    if (tablerow.cells.length < colLimit)
      var colLimit=tablerow.cells.length;
    for(var col=currColMin; col <= colLimit;col++)
    {
      tablerow.cells[col].className='javascriptDisplayNone';
    }

    var colLimit=colMax;
    if (tablerow.cells.length < colLimit)
      var colLimit=tablerow.cells.length;
    for(var col=colMin; col <= colLimit;col++)
    {
      tablerow.cells[col].className='';
    }
  }
  document.getElementById('page'+page).style.fontWeight=900;
  currentPage=page;
}

/* Style functons */
function appendStyleRule (ruleSet) {
  if (document.styleSheets) {
    if (document.styleSheets.length == 0) {
      appendStyleElement();
    }
    if (document.styleSheets.length > 0) {
      if (document.styleSheets[0].insertRule) {
        document.styleSheets[document.styleSheets.length -1 ].insertRule(ruleSet, document.styleSheets[document.styleSheets.length - 1].cssRules.length);
      }
      else if (document.styleSheets[0].addRule) {
        var ruleSetPattern = /(.*)({([^}]*)})/;
        var match = ruleSetPattern.exec(ruleSet);
        if (match) {
          var selector = match[1];
          var declarations = match[3];
          document.styleSheets[document.styleSheets.length-1].addRule(selector, declarations);
        }
      }
    }
  }
}

function appendStyleElement () {
  if (document.createElement) {
    var styleElement = document.createElement('style');
    if (styleElement) {
      styleElement.type = 'text/css';
      var headElement = document.getElementsByTagName('head')[0];
      headElement.appendChild(styleElement);
    }
  }
}

function popupWindow(url,width,height,resizable){
    window.open(url, "new_window", "width="+width+",height="+height+",scrollbars=yes,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable="+resizable);
}

// Add rule via javascript to hide elements that are not required if javascript
// is enabled.
appendStyleRule( '.javascriptHide { visibility: hidden;}');

addEvent(window, 'load', function() {
    if(routeForm = document.getElementById('routeSearch')) {
        routeForm.onsubmit = routeForm.submit = function() {
            window.location.href = document.getElementsByTagName('base')[0].href + 'route/view/' + document.getElementById('MainLineID').value
            return false;
        }
    }
});
