function getExp() {
  var oExpDate = new Date();
  oExpDate.setFullYear(oExpDate.getFullYear()+1)
  return oExpDate.toGMTString();
}

function setFavorite() {
  var p = document.location.href;
  var t = document.getElementById('pgTitle');
  var cookieColl = document.cookie.split('; ');
  var bExists = false;
  var cThis;
  var sPage = escape(p);
  var sFavSite;
  if (typeof mosb_sitename=='undefined'){
   sFavSite='Local OPC Site Home';
  }else if(mosb_sitename=='Unknown OPC Home'){
  sFavSite='Local OPC Home';
  }else{
  sFavSite=mosb_sitename;
  }
  
  var sTitle = escape((t==null)?sFavSite :t.innerHTML);
  for (x=0;x<cookieColl.length;x++) {
    cThis = cookieColl[x].split('=');
    if (cThis[0] == 'mf_'+sPage) {
      bExists = true;
    }
  }
  
  if (!bExists) {
    sCookie = 'mf_'+sPage+'='+sTitle+'; expires='+getExp()+'; path=/';
    document.cookie = sCookie;
  }
  getFavorites();
  findBBPosition();
}

function delFavorite() {
  var p = document.location.href;
  var cName = 'mf_'+escape(p);
  var nStart = document.cookie.indexOf(cName+'=');
  var t = document.getElementById('pgTitle');
  var sTitle = escape((t==null)?'Local OPC Home':t.innerHTML);
  if (nStart>-1) {
    sCookie = cName+'=deleting; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/';
    document.cookie = sCookie;
    getFavorites();
  }
}

function getFavorites() {
  var cookieColl = document.cookie.split('; ');
  var cThis;
  var sFav='';
  var nFav = 0;
  var bPageIsFavorite = false;
  for (x=0;x<cookieColl.length;x++) {
    cThis = cookieColl[x].split('=');
    if (cThis[0].substring(0,3) == 'mf_') {
      if (unescape(cThis[0]) == 'mf_'+document.location.href) {
        bPageIsFavorite = true;
      }
      if (cThis[1]!='deleting') {
        sFav += '<li style="list-style-type:square;padding-left:-5px;line-height:15px;margin-left:-20px;margin-right:10px;"><a href="'+unescape(cThis[0]).substring(3)+'" style="font-size:9px; font-weight:normal">'+unescape(cThis[1])+'</a></li>';
        nFav++;
      }
    }
  }
  document.getElementById('tblFavorites').style.display = (nFav>0) ? '':'none';
  if (nFav>0) {
    var oFav = document.getElementById('favLinks');
    if (oFav) {oFav.innerHTML = sFav;}
  }
  var oLink = document.getElementById('lnkSaveFavorite');
  if (oLink!=null) {
    oLink.href = (bPageIsFavorite)?'javascript:delFavorite();':'javascript:setFavorite();';
    oLink.innerHTML = (bPageIsFavorite)?'Remove Favorite':'Save as a favorite';
  }
}


function emailThis() {
  var p = document.location.href;
  var t = document.getElementById('pgTitle');
  var sPage = escape(p);
  var sTitle = escape((t==null)?'Local OPC Home':t.innerHTML);
  var sLink = 'mailto:?subject='+sTitle+'&body='+p;
  document.location = sLink;
}

function sendComments() {
  var p = document.location.href;
  var t = document.getElementById('pgTitle');
  var sPage = escape(p);
  var sTitle = escape((t==null)?'Local OPC Home':t.innerHTML);
  var sLink = '';
  sLink = 'mailto:msoemnet@microsoft.com?subject='+sTitle+' ('+sPage+')';
  document.location = sLink;
}

function starOver(x) {
    var img;
    for (a=1;a<=5;a++) {
        img = document.getElementById('star'+a);
        //img.src = (a<=x)?'/static/OPCDev/image/rp_star_y.gif':'/static/OPCDev/image/rp_star_blank.gif';
        img.src = (a<=x)?'/static/OPCDev/image/icon_star_rp_gold.gif':'/static/OPCDev/image/icon_star_rp_blank.gif';
    }
}

function starOut() {
    var rp = document.getElementById('ratepagetable');
    if (rp) {
        if (!c){c=0};
        var img;
        for (a=1;a<=5;a++) {
            img = document.getElementById('star'+a);
            //img.src = (a<=c)?'/static/OPCDev/image/rp_star_y.gif':'/static/OPCDev/image/rp_star_blank.gif';
            img.src = (a<=c)?'/static/OPCDev/image/icon_star_rp_gold.gif':'/static/OPCDev/image/icon_star_rp_blank.gif';
        }
    }
}

function setScore(x) {
  if (x!=c) {
    img = document.getElementById('imgRater');
    c = x;
    var url = '/script/RatePage.aspx?u='+u+'&p='+p+'&r='+x;
    img.src = url;    
  }
}


/* Instead of calling the function 'findBBPosition onload,
the following line tries the function until it is successful'
var _bb_InitFindBBPosition = setInterval("findBBPosition()",10);
This has been removed until the javascript error it was causing has 
been resolved
*/

window.onload = findBBPosition;  /*     */
window.onresize = findBBPosition;

function rpInit() {
  starOut();
  findBBPosition();
}

function findBBPosition() {
  var w = document.getElementById('imgWidthCheck');
  var i = document.getElementById('imgTopTextSpacer');
  var bb = document.getElementById('bbtable');
  var rp = document.getElementById('ratepagetable');
  var h = document.getElementById('imgHeightSpacer');
  var f = document.getElementById('msviFooter');

  var obj = (bb) ? bb : rp;
	
  if (obj) {
    /*
    if (_bb_InitFindBBPosition) {
   	 clearInterval(_bb_InitFindBBPosition)
   	 _bb_InitFindBBPosition = null;
    }
     */
    var nOffset = (i) ? i.offsetTop : 0;
    obj.style.posTop = nOffset-28;    
    if (w.offsetParent) {
      for( var posX=0,posY=0;w.offsetParent;w=w.offsetParent) {
        posX += w.offsetLeft;
        posY += w.offsetTop;
      }
      x = posX;
      obj.style.display = (x<=950) ? 'none' : '';
    }
    
    
    if (h&&f) {
      if (f.offsetTop < bb.offsetHeight+bb.offsetTop) {
        h.height = bb.offsetHeight;
      }
    }
  }
}


function loadimage(arrSlides, slideDurationSec, transitionTimeSec, displayAsSlideShow, imageRotatorID){
	var myArrSlides = arrSlides.split(";");
	var showAsSlideShow = 0;
	var ss_imageID = new String('img_' + imageRotatorID);
	var ss_linkID = new String('a_' + imageRotatorID);

	if (displayAsSlideShow!=null && displayAsSlideShow!='')
	{
		showAsSlideShow = parseInt(displayAsSlideShow);
	}

	var slideShowSpeed = 7000;
	if (slideDurationSec!=null && slideDurationSec!='')
	{
	slideShowSpeed = parseInt(slideDurationSec)*1000;
	}

	var crossFadeDuration = 1;
	if (transitionTimeSec!=null && transitionTimeSec!='')
	{
	crossFadeDuration = parseInt(transitionTimeSec);
	}
	var numSlides = myArrSlides.length;

	var theDate = new Date();
	var slideIndex = (theDate.getDate() % numSlides);

	var listofimages = new Array(numSlides);
	var listofurls = new Array(numSlides);

	if (getCookie(imageRotatorID + '_lastDayLooked') == null)
	{
		lastDayLooked = 0;
	}
	else
	{
		lastDayLooked = parseInt(getCookie(imageRotatorID + '_lastDayLooked'));
	}

	if (getCookie(imageRotatorID + '_lastIndex') == null)
		{
			lastIndex = -1;
		}
		else
		{
			lastIndex = parseInt(getCookie(imageRotatorID + '_lastIndex'));
		}

	if (lastDayLooked == theDate.getDate() && lastIndex >=0 && lastIndex <=(numSlides - 1))
	{
		slideIndex = lastIndex + 1;
		if (slideIndex > (numSlides - 1))
		{
				slideIndex = 0;
		}
	}
	var strThisSlide = myArrSlides[slideIndex];
	var thisSlide = strThisSlide.split("++");
	var date = new Date();
	date.setTime(date.getTime()+(24*60*60*1000));
	var tomorrow = date.toGMTString();
	setCookie(imageRotatorID + '_lastIndex',slideIndex, tomorrow);
	setCookie(imageRotatorID + '_lastDayLooked',theDate.getDate(), tomorrow);

	var ss_oImage = document.getElementById(ss_imageID);
	if (ss_oImage !=null) {
	ss_oImage.width = thisSlide[3];
	ss_oImage.height = thisSlide[4];
	ss_oImage.style.filter = "blendTrans(duration=crossFadeDuration)"
	ss_oImage.filters.blendTrans.apply()
	ss_oImage.src = thisSlide[0];
	ss_oImage.alt = thisSlide[1];
	ss_oImage.filters.blendTrans.play()
	}

	var ss_oLink = document.getElementById(ss_linkID);
	if (ss_oLink!=null) {
	ss_oLink.href = thisSlide[2];
	}
	myArrSlides = arrSlides;
	if (showAsSlideShow==1)
	{
		setTimeout("loadimage('"+arrSlides+"','"+slideDurationSec+"','"+transitionTimeSec+"','"+displayAsSlideShow+"','"+imageRotatorID+"')",slideShowSpeed);
	}
}

function setCookie(name, value, expires) {
	ss_curCookie = name + "=" + escape(value) + ";expires=" + expires;
  document.cookie = ss_curCookie;
}

function getCookie(name)
{
    var ss_dc = document.cookie;
    var ss_prefix = name + "=";
    var ss_begin = ss_dc.indexOf("; " + ss_prefix);
    if (ss_begin == -1)
    {
        ss_begin = ss_dc.indexOf(ss_prefix);
        if (ss_begin != 0) return null;
    }
    else
    {
        ss_begin += 2;
    }
    var ss_end = document.cookie.indexOf(";", ss_begin);
    if (ss_end == -1)
    {
        ss_end = ss_dc.length;
    }
    return unescape(ss_dc.substring(ss_begin + ss_prefix.length, ss_end));
}

function loadTextRotator(arrTextContent,textRotateTime){
	var myArrReload = arrTextContent;
	var myRotateTime =parseInt(textRotateTime);
	var myArrTextContent = arrTextContent.split('++');
	var lastTextSeen=0;
	var textIndex=0;
	var numTextContent = myArrTextContent.length - 1;
	if (getCookie('lastTextSeen') == null)
	{
		lastTextSeen = 0;
	}
	else
	{
		lastTextSeen = parseInt(getCookie('lastTextSeen'));
	}
	if (lastTextSeen >=0 && lastTextSeen <=(numTextContent) )
	{
		textIndex = lastTextSeen + 1;
		if (textIndex > (numTextContent - 1))
		{
			textIndex =0;
		}
	}
	var strThisText = myArrTextContent[textIndex];
	var date = new Date();
	date.setTime(date.getTime()+(365*24*60*60*1000));
	var oneyear = date.toGMTString();
	setCookie('saveRotation',myArrReload, oneyear);
	setCookie('saveRotationTime',myRotateTime, oneyear);
	if (getCookie('lastTextSeen') == null)
	{
		setCookie('lastTextSeen',1, oneyear);
	}else{
		setCookie('lastTextSeen',textIndex, oneyear);
	}
	myArrTextContent = arrTextContent;
	var t = document.getElementById('TextAnchor');
	t.innerHTML =  strThisText ;
	if (myRotateTime > 0)
	{
		rl =setTimeout("loadTextRotator(getCookie('saveRotation'),getCookie('saveRotationTime'))",myRotateTime*1000);
	}
}

function checkSpecialChars(Element) {

	var objElement = document.getElementById(Element);
	var blnError = false;
	var blnMatch = false;

    //looking for form element of textbox or textarea
	if (objElement.type != 'checkbox' && objElement.type != 'radio' && objElement.type != 'select' && objElement.type != 'hidden') {
		//if the form value has any length check for matches with any of the forbidden characters
		if(objElement.value.length > 0) {
			blnMatch = /[=\#\%\&\\\;\<\>\^\{\|\}\~]/.test(objElement.value);
			if (blnMatch == true) {
				blnError = true;
			}			
		}		
	}	

    //if special char found, alert user
	if (blnError == true) {
		alert("You have entered an invalid character.\n\nThe following characters are not allowed in any of the fields:\n\n# % & \ ; < > ^ { | } ~ = ");
		objElement.select();
		return false;
	}	
	else {
		return true;
	}
}
