// check if UA is IE
var ie =  (typeof window.ActiveXObject != 'undefined');

// adds specified value to end of value of "class" attribute of specified element
function addToElementClass(whichElement,valueToAdd) {
  if (ie) {
    var currentClass=whichElement.getAttribute('className');
    var newClass='';
    if (currentClass) {
      newClass=currentClass+valueToAdd;
    } else {
      newClass=valueToAdd;
    }
    whichElement.setAttribute('className',newClass);
  } else {
    var currentClass=whichElement.getAttribute('class');
    var newClass='';
    if (currentClass) {
      newClass=currentClass+valueToAdd;
    } else {
      newClass=valueToAdd;
    }
    whichElement.setAttribute('class',newClass);
  }
}

// removes specified value from value of "class" attribute of specified element
function removeFromElementClass(whichElement,valueToRemove) {
  if (ie) {
    var currentClass=whichElement.getAttribute('className');
    if (currentClass) {
      var vtrStart=currentClass.indexOf(valueToRemove);
      if (vtrStart!=-1) {
        var vtrEnd=vtrStart+valueToRemove.length;
        var newClassBeginning=currentClass.substring(0,vtrStart);
        var newClassEnding=currentClass.substring(vtrEnd,currentClass.length);
        var newClass=newClassBeginning+newClassEnding;
        whichElement.setAttribute('className',newClass);
      }
    }
  } else {
    var currentClass=whichElement.getAttribute('class');
    if (currentClass) {
      var vtrStart=currentClass.indexOf(valueToRemove);
      if (vtrStart!=-1) {
        var vtrEnd=vtrStart+valueToRemove.length;
        var newClassBeginning=currentClass.substring(0,vtrStart);
        var newClassEnding=currentClass.substring(vtrEnd,currentClass.length);
        var newClass=newClassBeginning+newClassEnding;
        whichElement.setAttribute('class',newClass);
      }
    }
  }
}

// adds specified code to end of value of specified event attribute of specified element
function addToElementEventAttribute(whichElement,whichEvent,codeToAdd) {
  var cav='';
  if (whichElement.getAttribute(whichEvent)) {
    cav=whichElement.getAttribute(whichEvent);
  }
  var nav=cav+codeToAdd;
  if (ie) {
    whichElement[whichEvent]=new Function(nav);
  } else {
    whichElement.setAttribute(whichEvent,nav);
  }
}

// returns the x and y coordinates of an element
function returnPosition(e) {
  if (e.offsetParent) {
    for(var posX=0, posY=0; e.offsetParent; e=e.offsetParent) {
      posX+=e.offsetLeft;
      posY+=e.offsetTop;
  }
    return [posX, posY];
  } else {
    return [e.x, e.y];
  }
}

function removeElement(eId) {
  e=document.getElementById(eId);
  var p=e.parentNode;
  p.removeChild(e);
}

function showSiteToolsHelp(e) {
  var ep=e.parentNode;
  if (!document.getElementById(ep.id+'SiteToolsHelp')) {      
  var sh=document.createElement('div');
  sh.setAttribute('id',ep.id+'SiteToolsHelp');
  addToElementClass(sh,'siteToolsHelp');
  var message='';
  if (ep.id=='largeTypeControl') {
    message='large type';
  } else if (ep.id=='largerTypeControl') {
    message='larger type';
  } else if (ep.id=='largestTypeControl') {
    message='largest type';
  } else if (ep.id=='darkOnLightControl') {
    message='dark on light';
  } else if (ep.id=='lightOnDarkControl') {
    message='light on dark';
  } else if (ep.id=='multiColumnControl') {
    message='multi-column';
  } else if (ep.id=='singleColumnControl') {
    message='single-column';
  }
  sh.appendChild(document.createTextNode(message));
  /*
  ex = e.offsetLeft;
  ey = e.offsetTop;
  */
  epos=returnPosition(e);
  ex = epos[0];
  ey = epos[1];
  sh.style.left = (ex+15) + 'px';
  sh.style.top = (ey+35) + 'px';
  document.getElementsByTagName('BODY')[0].appendChild(sh);
  }
}

function removeSiteToolsHelp(e) {
  var ep=e.parentNode;
  if (document.getElementById(ep.id+'SiteToolsHelp')) {
    removeElement(ep.id+'SiteToolsHelp');
  }
}

function setPrefCookie(a,v) {
  var today = new Date();
  var expire = new Date();
  expire.setTime(today.getTime() + 3600000*24*365);
  var expired=new Date();
  expired.setYear(1971)
  var fontSize=1;
  var contrast=1;
  var layout=1;
  if (document.cookie.indexOf('prefs=')>-1) {
    var cv=document.cookie.substring(document.cookie.indexOf('prefs=')+6,document.cookie.indexOf('prefs=')+33);
    fontSize=cv.substring(cv.indexOf('fontSize')+8,cv.indexOf('fontSize')+9);
    contrast=cv.substring(cv.indexOf('contrast')+8,cv.indexOf('contrast')+9);
    layout=cv.substring(cv.indexOf('layout')+6,cv.indexOf('layout')+7);
  }
  if (a=='fontSize') {
    fontSize=v;
  }
  if (a=='contrast') {
    contrast=v;
  }
  if (a=='layout') {
    layout=v;
  }
  var tcookiedomain='.glaucoma.org';
  if (document.location.href.indexOf('.glaucoma.com')!=-1) {
    tcookiedomain='.glaucoma.com';
  }
  document.cookie='prefs=expired;domain='+tcookiedomain+';path=/;expires='+expired.toGMTString();
  document.cookie='prefs=fontSize'+fontSize+'|contrast'+contrast+'|layout'+layout+';expires='+expire.toGMTString()+';domain='+tcookiedomain+';path=/;';
}

//switch between body font-size styles
function changeFontSize(state) {
  var b=document.getElementsByTagName('body')[0];
  if (state==1) {
    removeFromElementClass(b,' largerType');
    removeFromElementClass(b,' largestType');
  } else if (state==2) {
    removeFromElementClass(b,' largerType');
    removeFromElementClass(b,' largestType');
    addToElementClass(b,' largerType');
  } else {
    removeFromElementClass(b,' largerType');
    removeFromElementClass(b,' largestType');
    addToElementClass(b,' largestType');
  }
}

//toggle between contrast styles
function toggleContrast(state) {
  var b=document.getElementsByTagName('body')[0];
  if (state==2) {
//    removeFromElementClass(b,' reverseType');
    b.id='reverseType';
  } else {
    b.id='';
  }
}

//toggle between column layout styles
function toggleColumns(state) {
  var b=document.getElementsByTagName('body')[0];
  if (state==2) {
    removeFromElementClass(b,' singleColumn');
    addToElementClass(b,' singleColumn');
  } else {
    removeFromElementClass(b,' singleColumn');
  }
}

if (document.styleSheets[0].disabled) {

}

function applyViewPrefs() {
    var cv=document.cookie.substring(document.cookie.indexOf('prefs=')+6,document.cookie.indexOf('prefs=')+33);
    var fontSize=cv.substring(cv.indexOf('fontSize')+8,cv.indexOf('fontSize')+9);
    if (!fontSize) {
      fontSize=1;
    }
    var contrast=cv.substring(cv.indexOf('contrast')+8,cv.indexOf('contrast')+9);
    if (!contrast) {
      contrast=1;
    }
    var layout=cv.substring(cv.indexOf('layout')+6,cv.indexOf('layout')+7);
    if (!layout) {
      layout=1;
    }
//    doSIFR(contrast);
    changeFontSize(fontSize);
    toggleContrast(contrast);
    toggleColumns(layout);
}

function showContent(cId) {
  if (document.getElementById) {
    var ci=document.getElementById(cId);
    var cip=ci.parentNode;
    var cisp=document.getElementById('mainTextModulesNav');
    var cis=cisp.getElementsByTagName('LI');
    for (var i=0;i<cis.length;i++) {
      removeFromElementClass(cis[i],'current');
    }
    addToElementClass(cip,'current');
    var cp=document.getElementById('mainTextModules');
    var cs=cp.getElementsByTagName('DIV');
    for (var i=0;i<cs.length;i++) {
      if (cs[i].id!='mainTextModulesNav') {
        if (cId=='all') {
          cs[i].style.display='inline';
        } else {
          cs[i].style.display='none';     
        }
      }
    }
    if (cId!='all') {
      var c=document.getElementById(cId.substring(0,cId.length-4));
      c.style.display='inline';
    }
  }
}

function returnMousePosition(e) {
  if (ie) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX
    tempY = e.pageY
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}
  return [tempX, tempY];
}

function showOffsiteLinkHelp(e) {
  if (!document.getElementById('offsiteLinkHelp')) {      
  var olh=document.createElement('div');
  olh.setAttribute('id','offsiteLinkHelp');
  addToElementClass(olh,'siteToolsHelp');
  var message='This is a link to a site outside of glaucoma.org';
  olh.appendChild(document.createTextNode(message));
  /*
  ex = e.offsetLeft;
  ey = e.offsetTop;
  */
  epos=returnPosition(e);
  ex = epos[0];
  ey = epos[1];
  olh.style.left = (ex) + 'px';
  olh.style.top = (ey+25) + 'px';
  document.getElementsByTagName('BODY')[0].appendChild(olh);
  }
}
function tagOffsiteLinks() {
  if(document.getElementsByTagName) {
    var links = document.getElementsByTagName('a');
    for(var i=0; i<links.length; i++) {
      if (links[i].href && (links[i].className != "no-hover") && (links[i].className != "feed-link")) {
        if (unescape(links[i].href).indexOf('glaucoma.com')==-1 && unescape(links[i].href).indexOf('www.glaucoma.org')==-1 && unescape(links[i].href).indexOf('@glaucoma.org')==-1) {
          addToElementEventAttribute(links[i],'onmouseover','showOffsiteLinkHelp(this);');
          addToElementEventAttribute(links[i],'onmouseout','removeElement(\'offsiteLinkHelp\');');
        }
      }
    }
  }
}

function removeCorners() {
	var cornerIdCount=0;
   while (document.getElementById('tlCorner'+cornerIdCount)) {
     removeElement('tlCorner'+cornerIdCount);
     removeElement('trCorner'+cornerIdCount);
     removeElement('brCorner'+cornerIdCount);
     removeElement('blCorner'+cornerIdCount);
     cornerIdCount++;
  }
}
function addCorners() {
  if(document.getElementsByTagName&&document.createElement) {

  var imgs = document.getElementsByTagName('IMG');
  var num = imgs.length;
  var bgVersion='F1F2CA';
  var contrastVersion = 'light';
  if (document.getElementsByTagName('BODY')[0].id=='reverseType') {
    contrastVersion = 'dark';
    bgVersion='1F1F49';
  }

  for(var i=0; i<num; i++) {
    var img = imgs[i];
    if (img.width>50&&img.className!='noCorners') {

    imgX=findPosX(img);
    imgY=findPosY(img);

    if (isChildOfClass(img,'featured')&&contrastVersion=='light') {
      bgVersion='FFFFFF';
    } else if (isChildOfClass(img,'featured')&&contrastVersion=='dark') {
      bgVersion='0B0B27';
    } else if (isChildOfClass(img,'crossPromo')&&isChildOfClass(img,'largestType')) {
      bgVersion='na';
    } else if (isChildOfClass(img,'crossPromo')&&contrastVersion=='light') {
      bgVersion='F6F6B6';
    } else if (isChildOfClass(img,'crossPromo')&&contrastVersion=='dark') {
      bgVersion='333333';
    } else if (isChildOfClass(img,'home')&&contrastVersion=='light') {
      bgVersion='E6E6B2';
    }

    // create corners
    tl=document.createElement('div');
    tl.setAttribute('id','tlCorner'+i);
    addToElementClass(tl,'tlCorner'+bgVersion);
    tl.style.left = imgX + "px";
    tl.style.top = imgY + "px";

    tr=document.createElement('div');
    tr.setAttribute('id','trCorner'+i);
    addToElementClass(tr,'trCorner'+bgVersion);
    tr.style.left = imgX + img.width - 10 + "px";
    tr.style.top = imgY + "px";

    br=document.createElement('div');
    br.setAttribute('id','brCorner'+i);
    addToElementClass(br,'brCorner'+bgVersion);
    br.style.left = imgX + img.width - 10 + "px";
    br.style.top = imgY + img.height - 10 + "px";

    bl=document.createElement('div');
    bl.setAttribute('id','blCorner'+i);
    addToElementClass(bl,'blCorner'+bgVersion);
    bl.style.left = imgX + "px";
    bl.style.top = imgY + img.height - 10 + "px";
    
    (document.getElementsByTagName('BODY'))[0].appendChild(tl);
    (document.getElementsByTagName('BODY'))[0].appendChild(tr);
    (document.getElementsByTagName('BODY'))[0].appendChild(bl);
    (document.getElementsByTagName('BODY'))[0].appendChild(br);
    }
    }
  }
}

function isChildOfClass(obj,parentClass) {
	while (obj.tagName && (obj.className.indexOf(parentClass)==-1))
	{
		obj = obj.parentNode;
	}
	if (!obj.className) return false;
	if (obj.className.indexOf(parentClass)!=-1) return true;
}

// ppk Find Dimensions and Position of an Element

function findWidth(obj) {
  if (obj.offsetWidth) {
    return obj.offsetWidth;
  }
}

function findHeight(obj) {
  if (obj.offsetHeight) {
    return obj.offsetHeight;
  }
}

function findPosX(obj)
{
  var curleft = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  }
  else if (obj.x)
    curleft += obj.x;
  return curleft;
}

function findPosY(obj)
{
  var curtop = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  }
  else if (obj.y)
    curtop += obj.y;
  return curtop;
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

/* toggles required field markers on the Gleams subscription form based on version selected */
function setReqFields(version) {
	var thisVersion = version;
	var e = getElementsByClass('reqEmail',document,'span');
	var p = getElementsByClass('reqPost',document,'span');
	var eL = e.length;
	var pL = p.length;
	if(thisVersion == "email"){
		for(i = 0 ; i < eL ; i++) {
			e[i].style.display = "inline";
		}
		for(i = 0 ; i < pL ; i++) {
			p[i].style.display = "none";
		}
	} else if(thisVersion == "print") {
		for(i = 0 ; i < eL ; i++) {
			e[i].style.display = "none";
		}
		for(i = 0 ; i < pL ; i++) {
			p[i].style.display = "inline";
		}
	}
}

function setEmailReq(version){
	var thisVersion = version;
	var e = document.getElementById('gleamsEmailReq');
	if(thisVersion == "email"){
		e.style.display = "inline";
	} else if(thisVersion == "print") {
		e.style.display = "none";
	}
}

function toggleDisplay(elementID,changeTo) {
	var e = document.getElementById(elementID);
	if (e.style.display != changeTo) {
		e.style.display = changeTo;
	}
}

/* checks the value of the optional field on the catalyst form */
function checkDonateValue(thismuch) {
	var donateValMsg = document.getElementById('donateValMsg');
	if (thismuch < 1001) {
		donateValMsg.style.display = 'block';
		donateValMsg.innerHTML = "Please enter a value greater than 1001. You entered " + thismuch + ".";
	} else {
		donateValMsg.style.display = 'none';
	}
}
