// Original JavaScript code by Chirp Internet: www.chirp.com.au
// http://www.the-art-of-web.com/javascript/oopsort/

function sortCol(x) {
}

function bubbleSort(parent, childName, colName)
{
  var parent = parent;			// 'parent' node
  var childName = childName;	// nodeName for 'children'
  var colName = colName;		// nodeName for 'columns'
  var currColumn = -1;
  var currDesc = false;

  // build array of 'child' nodes
  var items = parent.getElementsByTagName(childName);
  var N = items.length;

  // define private methods
  var get = function(i, col, wrapper)
  {
    var retval = null;
    var node = null;
    var sort;

    if(colName) {
      // sort by col'th element of i'th child
      node = items[i].getElementsByTagName(colName)[col];
    } else {
      // sort by i'th child
      node = items[i];
    }

    if(null != (sort = node.getAttribute("sort"))) {
      // use 'sort' attribute if available
      retval = sort;
    } else if(node.childNodes.length > 0) {
      if(wrapper) {
        // sort by contents of first 'wrapper' element in 'child'
        retval = node.getElementsByTagName(wrapper)[0].firstChild.nodeValue;
      } else {
        // sort by 'child' contents
        retval = node.firstChild.nodeValue;
      }
    } else {
      return "";
    }

    if(parseFloat(retval) == retval) return parseFloat(retval);
    return retval;
  }

  var compare = function(val1, val2, desc)
  {
    return (desc) ? val1 > val2 : val1 < val2;
  }

  var exchange = function(i, j)
  {
    parent.insertBefore(items[i], items[j]);
  }

  // define public method
  this.sort = function(col, desc, wrapper)
  {
    for(var j=N-1; j > 0; j--) {
      for(var i=0; i < j; i++) {
        if(compare(get(i+1, col, wrapper), get(i, col, wrapper), desc)) {
          exchange(i+1, i);
        }
      }
    }
    setRowColors('table-deliverables');
  }
  
  // define public method
  this.sortCol = function(col, wrapper) {
    var desc = false;
    if (col == this.currColumn) {
      desc = (this.currDesc) ? false : true;
    }
    this.currColumn = col;
    this.currDesc = desc;
    this.sort(col, desc, wrapper)
    setDeliverableArw(col, desc);
  }
    

  
}

// ------------------------------------------------------------------ //

function setDeliverableArw(col, desc) {
  var tbl = document.getElementById('table-deliverables');
  var ths = tbl.getElementsByTagName('th');
  for (i=0; i<ths.length; i++) {
    ths[i].className = ' ';
  }
  document.getElementById('col'+col).className = (desc) ? 'arw-up' : 'arw-down';
  return;
  
}


function setRowStyle(x){
  x.style.background = "#e3e3e3";
}

function releaseRowStyle(x){
  x.style.background = (x.id=='odd') ? "#eee" : "#fff";
}



// ------------------------------------------------------------------ //
Array.prototype.inArray = function (value,caseSensitive)
// Returns true if the passed value is found in the
// array. Returns false if it is not.
{
var i;
for (i=0; i < this.length; i++) {
// use === to check for Matches. ie., identical (===),
if(caseSensitive){ //performs match even the string is case sensitive
if (this[i].toLowerCase() == value.toLowerCase()) {
return true;
}
}else{
if (this[i] == value) {
return true;
}
}
}
return false;
};

// ------------------------------------------------------------------ //

function toggleDeliverable() {
  var tbl = document.getElementById('table-deliverables');
  var trs = tbl.getElementsByTagName('tr');
  var fea = document.getElementById('checkFea').checked;
  var def = document.getElementById('checkDef').checked;
  var pen = document.getElementById('checkPen').checked;
  var com = document.getElementById('checkCom').checked;
  
  var rows = new Array();
  if (fea) {
    if (pen){ rows.push('fea_pen') }
    if (com){ rows.push('fea_com') }
  }
  if (def) {
    if (pen){ rows.push('def_pen') }
    if (com){ rows.push('def_com') }
  }
  
  for (i=0; i<trs.length; i++) {
    if (!empty(trs[i].className) && (trs[i].className != 'nobord')) {
      trs[i].style.display = (rows.inArray(trs[i].className)) ? "" : "none";
    }
  }
  
  setRowColors('table-deliverables');
  return;
}

function setRowColors(x) {
  var tbl = document.getElementById(x);
  var trs = tbl.getElementsByTagName('tr');
  var tog = true;
  
  for (i=0; i<trs.length; i++) {
    if (!empty(trs[i].className) && (trs[i].style.display != "none")) {
      trs[i].id = (tog) ? "even" : "odd";
      tog = (tog) ? false : true;
    }
  }
}

function stickClient(x, s){

  var agt=navigator.userAgent.toLowerCase();
  var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
  
  if (is_ie){
    var ts = document.getElementsByTagName('table');
    for(i=0; i<ts.length; i++) {
      if (ts[i].name == 'toggleTable'){
        ts[i].style.display="none";
      }
    }
  } else {
    var ts = document.getElementsByName('toggleTable');
    for(i=0; i<ts.length; i++) {
      ts[i].style.display="none";
    }
  }
  
  var t = document.getElementById('table-'+s);
  t.style.display = "";
  
  var tbls = document.getElementsByTagName('table');
  for(i=0; i<tbls.length; i++){
    if (tbls[i].id.split('-')[0] == 'marker') {
      tbls[i].className = "";
    }
  }
  
  x.className = "on";

  return;
}

function overClientList(x) {
  x.style.background = 'url(../images/bg-clienthover.gif) 0 7px no-repeat';
  return;
}
function outClientList(x) {
  x.style.background = 'none';
  return;
}

function toggleClientList(x,y) {

  var tbls = document.getElementsByTagName('div');
  for(i=0; i<tbls.length; i++){
    if (tbls[i].className == "clientproj-wrap") {
      tbls[i].style.display = "none";
    }
  }
  
  var actlink = document.getElementById('clink-active');
  var inactlink = document.getElementById('clink-inactive');
  var actTable = document.getElementById('table-activeclients');
  var inactTable = document.getElementById('table-inactiveclients');

  actlink.style.color = (x=='active') ? '#ff8405' : '#ffd8b0';
  inactlink.style.color = (x=='inactive') ? '#ff8405' : '#ffd8b0';
  
  actTable.style.display = (x=='active') ? '' : 'none';
  inactTable.style.display = (x=='inactive') ? '' : 'none';
  return;
}

function emailus() {
	x = "<a href=\"mailto:info@bluecoastweb.com\">Email us today</a>"
	document.write(x);
}

function check_assoc(x) {
	xid = (x == 'person') ? document.getElementById('person_id') : document.getElementById('id');
	xmsg = 'Please select a '+x+' to associate';
	rid = document.getElementById('role_id');
	if (empty(xid.value)) {
		alert(xmsg);
		return false;
	} else if (empty(rid.value)) {
		alert('Please select a role to associate');
		return false;
	} else {
		return true;
	}
}


function empty(x) {
	return (x == '');
}