



var bvDiagnostic = false;
function bvAlertOnce(what){
if(!bvDiagnostic){
alert(what);
bvDiagnostic = true;
}
}





function bvShowNetPromoterBody(chk) {
var np_body = document.getElementById('BVnetPromoterBodyId');
if (np_body) {
if (!chk.checked) {
np_body.style.display = 'none';
} else {
np_body.style.display = 'block';
}
}
}



var bvPhotoUploadSubmitted=false;



function changeSingleButtonState(reviewButton,newState){
if (reviewButton) {
reviewButton.disabled=newState;
}
}


function bvSetButtonsDisabled(state){
var newState = state ? true: false;
bvPhotoUploadSubmitted = newState;
changeSingleButtonState(document.getElementById('BVReviewPreviewButton'), newState);
changeSingleButtonState(document.getElementById('BVReviewSubmitButton'), newState);
}



function bvFindFrame(n) {
for (var i = 0; i < window.frames.length; i++) {
try {
if (window.frames[i].name == n) {
return window.frames[i];
}
}
catch(err) {

}
}
return null;
}


function bvOnPhotoUploadSubmit() {
bvSetButtonsDisabled(true);
var hide = document.getElementById('BVPhotoUploadHideOnUpload');
if (hide) {
hide.style.display = 'none';
}

var show = document.getElementById('BVPhotoUploadShowOnUpload');
if (show) {
show.style.display = 'block';
}

var src = document.getElementById('BVVisiblePhotoUploadInput');
var frame = bvFindFrame('BVPhotoUploadFrame');
var target = frame.document.getElementById('BVPhotoUploadInput');
var targetName = target.name;


var isExplorer = document.all;
var isSafari = navigator.userAgent.indexOf('Safari') != -1;
if (!(isSafari || isExplorer)) {
var targetParent = frame.document.getElementById('BVPhotoUploadDiv');
while (target.firstChild) {
target.removeChild(target.firstChild);
}

var clone = src.cloneNode(true);
clone.name = targetName;
target.appendChild(clone);
}

frame.document.getElementById('BVPhotoUploadAction').value = 'upload';
frame.document.forms.BVPhotoUploadForm.submit();
}


function bvOnPhotoUploadBrowse() {
var isExplorer = document.all;
var isSafari = navigator.userAgent.indexOf('Safari') != -1;
if (isExplorer || isSafari) {
var frame = bvFindFrame('BVPhotoUploadFrame');
frame.document.getElementById('BVPhotoUploadInput').click();
}
}


function bvOnPhotoUploadRemove(index) {
var frame = bvFindFrame('BVPhotoUploadFrame');
frame.document.getElementById('BVPhotoUploadAction').value = 'remove';
frame.document.getElementById('BVPhotoUploadParams').value = index;
frame.document.forms.BVPhotoUploadForm.submit();

for (var i = index; ; i++) {
var currNode = document.getElementById('BVPhotoCaption' + i);
var nextNode = document.getElementById('BVPhotoCaption' + (i + 1));

if (!nextNode) {
currNode.value = '';
break;
}

currNode.value = nextNode.value;
}
}



function bvOnPhotoUploadSelect() {
var isExplorer = document.all;
var isSafari = navigator.userAgent.indexOf('Safari') != -1;
if (isExplorer || isSafari) {
var src = document.getElementById('BVPhotoUploadInput');
var target = window.parent.document.getElementById('BVVisiblePhotoUploadInput');
target.value = src.value;
}
bvFindElementById('BVVisiblePhotoUploadSubmit').disabled=false;
}


function bvOnPhotoCaptionEdit(index) {
var src = document.getElementById('BVVisiblePhotoCaption' + index);
var target = document.getElementById('BVPhotoCaption' + index);
target.value = src.value;
}


function bvPhotoUploadCheckLoad() {
bvSetButtonsDisabled(false);
var frame = bvFindFrame('BVPhotoUploadFrame');
if (!frame.document || !frame.document.getElementById('BVPhotoUploadAction')) {
document.getElementById('BVPhotoUploadVisibleTarget').style.display = 'none';
document.getElementById('BVPhotoUploadFatalError').style.display = 'block';
return false;
}

return true;
}




var BvGlobalCounter = function() {};
BvGlobalCounter.value = 0;


function bvGetMouseX(e) {
var tempX;
if (document.all) {
tempX = e.clientX + window.parent.document.body.scrollLeft;
} else {
tempX = e.pageX;
}

if (tempX < 0){
tempX = 0;
}
return tempX;
}




function BvRatingBar(ratedItem){

var _prepend = ratedItem;

var _BGWidth = 15;

var _BGHeight = 14;

var _specificity = 0.5;

var _maxRating = 5;

var _minRating = 0;


var _ratingType = "Stars";
var _ratingTypeSingular = "Star";



var _ratingLegend = [" ", "Poor", "Fair", "Average", "Good", "Excellent"];


var _rating;

var _sparkleImage = "";



var _displayItemOverride;
var _inputItemOverride;


var _isMouseDown = false;

var _hasValueSet = false;


this.setSpecificity = function (specificity) {
_specificity = specificity;
};


this.setBGWidth = function (width) {
_BGWidth = width;
};


this.setBGHeight = function (height) {
_BGHeight = height;
};


this.setMaxRating = function (maxRating) {
_maxRating = maxRating;
};


this.setMinRating = function (minRating) {
_minRating = minRating;
};


this.setSparkleImage = function (sparkleImage) {
_sparkleImage = sparkleImage;
};



this.setRatingLegend = function( legendValues) {
if (typeof legendValues.length == undefined) {
throw "Legend argument must be an array.";
}
if (legendValues.length != (_maxRating - _minRating + 1)) {
throw "Legend argument cannot have " + legendValues.length + " elements for " + (_maxRating - _minRating) + " ratings.";
}
_ratingLegend = legendValues;
}

this.getRatingLegendValue = function( rating) {
return _ratingLegend[ rating - _minRating];
}


this.setRatingType = function( singularTypeName, pluralTypeName) {
if( !pluralTypeName) {
pluralTypeName = singularTypeName + "s";
}
_ratingTypeSingular = singularTypeName;
_ratingType = pluralTypeName;
};

this.initializeValue = function (givenValue) {
_hasValueSet = true;
var ratingValue = (Math.ceil(givenValue/_specificity)* 100 *_specificity)/100;
if(ratingValue > _maxRating){
ratingValue = _maxRating;
} else if(ratingValue < _minRating){
ratingValue = _minRating;
}
_rating = ratingValue;
var tableWidth = ratingValue * _BGWidth;
window.parent.document.getElementById(ratedItem + "Filled").style.width = tableWidth + "px";

if(_inputItemOverride){
var inputItemOverrideElement = window.parent.document.getElementById(_inputItemOverride);
if( inputItemOverrideElement) {
inputItemOverrideElement.value = _rating;
}
} else {
var valueElement = window.parent.document.getElementById(_prepend + 'Value');
if( valueElement) {
valueElement.value = _rating;
}
}

if(_displayItemOverride){
if(bvFindElementById(_displayItemOverride)){
if (_rating == 1){
bvFindElementById(_displayItemOverride).innerHTML = _rating + " " + _ratingTypeSingular;
} else {
bvFindElementById(_displayItemOverride).innerHTML = _rating + " " + _ratingType;
}
}
} else {
var displayElement = bvFindElementById(_prepend + 'Display');
if( displayElement){
if (_rating == 1){
displayElement.innerHTML = _rating + " " + _ratingTypeSingular;
} else {
displayElement.innerHTML = _rating + " " + _ratingType;
}

var legendElement = bvFindElementById(_prepend + 'Legend');
if ( legendElement) {
legendElement.innerHTML = this.getRatingLegendValue(_rating);
}
}
}
};



this.resizeTable = function (event, table) {

if(!event){
event = window.parent.event;
}

var ratingBarElement = window.parent.document.getElementById(_prepend + 'RatingBar');
var tableWidth = ratingBarElement.style.width;

var scaleAmt = bvGetMouseX(event) - bvFindPosX(ratingBarElement);

var ratingValue = (Math.ceil(scaleAmt/_BGWidth/_specificity) * 100 * _specificity)/100;

if(ratingValue > _maxRating){
ratingValue = _maxRating;
} else if(ratingValue < _minRating){
ratingValue = _minRating;
}

tableWidth = ratingValue * _BGWidth;

if(tableWidth < 1){
tableWidth = 1;
}

window.parent.document.getElementById(table).style.width = tableWidth + "px";

_rating = ratingValue;
};


this.setRating = function (event) {
this.updateRating(event, _prepend + 'Filled');

_hasValueSet = true;

var backgroundPath = _sparkleImage + '?i=' + BvGlobalCounter.value++;
window.parent.document.getElementById(_prepend + 'Filled').style.background = "url(" + backgroundPath +")";
};


this.updateRating = function (event, table, ignoreInput) {

this.resizeTable(event, table);

if(!ignoreInput){
if(_inputItemOverride){
var inputItemOverrideElement = window.parent.document.getElementById(_inputItemOverride);
if(inputItemOverrideElement){
inputItemOverrideElement.value = _rating;
}
} else {
var valueElement = window.parent.document.getElementById(_prepend + 'Value');
if(valueElement) {
valueElement.value = _rating;

}
}
}

if(_displayItemOverride){
var displayItemOverrideElement = bvFindElementById(_displayItemOverride);
if( displayItemOverrideElement){
if (_rating == 1){
displayItemOverrideElement.innerHTML = _rating + " " + _ratingTypeSingular;
} else {
displayItemOverrideElement.innerHTML = _rating + " " + _ratingType;
}
}
} else {
var displayElement = bvFindElementById(_prepend + 'Display');
if( displayElement){
if (_rating == 1){
displayElement.innerHTML = _rating + " " + _ratingTypeSingular;
} else {
displayElement.innerHTML = _rating + " " + _ratingType;
}

var legendElement = bvFindElementById(_prepend + 'Legend');
if (legendElement) {
legendElement.innerHTML = this.getRatingLegendValue(_rating);
}
}
}
};


this.startSlide = function () {
_isMouseDown = true;
};


this.stopSlide = function () {
if(_isMouseDown){

var backgroundPath = _sparkleImage + '?i=' + BvGlobalCounter.value++;
window.parent.document.getElementById(_prepend + 'Filled').style.background = "url(" + backgroundPath +")";
_isMouseDown = false;
}
};


this.doSlide = function (event) {

if(_isMouseDown){
this.updateRating(event, _prepend + "Filled");

_hasValueSet = true;

} else if(!_hasValueSet){
this.updateRating(event, _prepend + "Hover", true);
}
};


this.resetHover = function () {

window.parent.document.getElementById(_prepend + "Hover").style.width = '1px';

if(!_hasValueSet){
if(_displayItemOverride){
var displayItemOverrideElement = window.parent.document.getElementById(_displayItemOverride);
if(displayItemOverrideElement){
displayItemOverrideElement.innerHTML = "";
}
} else {
var displayElement = window.parent.document.getElementById(_prepend + 'Display');
if( displayElement){
displayElement.innerHTML = "";

var legendElement = window.parent.document.getElementById(_prepend + 'Legend');
if ( legendElement) {
legendElement.innerHTML = "";
}
}
}
}
};


this.init = function () {

var tableWidth = _BGWidth * _maxRating;
window.parent.document.getElementById( _prepend + "RatingBar").style.width = tableWidth + "px";
window.parent.document.getElementById( _prepend + "Filled").style.height = _BGHeight + "px";


if (window.parent.document.all) {
window.parent.document.attachEvent("onmouseup", this.stopSlide);
} else {
window.parent.document.addEventListener("mouseup", this.stopSlide, true);
}
};
}








function bvFindPosY(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 bvFindPosX(obj){
var curleft = 0;
if (obj.offsetParent){
while (obj){
curleft += obj.offsetLeft;
obj = obj.offsetParent;
}
} else if (obj.x) {
curleft += obj.x;
}
return curleft;
}



function bvGetAncestorID(e){
if(!e){
e = window.event;
}
var clickedObject = bvGetClickedElement(e);
var tempObject = clickedObject;
var objectID = null;
while(tempObject && !objectID){

if(tempObject.parentNode){
objectID = tempObject.getAttribute('id');
}
tempObject = tempObject.parentNode;
}
return objectID;
}



function bvIsAncestorOf(e, testID){
if(!e){
e = window.event;
}
var clickedObject = bvGetClickedElement(e);
var tempObject = clickedObject;
var objectID = null;
while(tempObject && (objectID != testID)){

if(tempObject.parentNode && tempObject.id){
objectID = tempObject.getAttribute('id');
}
if(objectID == testID){
return true;
}
tempObject = tempObject.parentNode;
}
return false;
}



function bvGetClickedElement(e){
if(!e){
e = window.event;
}
var clickedElement;
if(e.target){
clickedElement = e.target;
} else if(e.srcElement){
clickedElement = e.srcElement;
}

if (clickedElement.nodeType == 3){
clickedElement = clickedElement.parentNode;
}
return clickedElement;
}


function BvPopupNote(toggle, note){

var _note = window.parent.document.getElementById(note);

var _noteToggle = window.parent.document.getElementById(toggle);

if (!_noteToggle && !_note) {
_note = document.getElementById(note);
_noteToggle = document.getElementById(toggle);
}


var _noteVisible = false;

this.setNote = function (note) {
_note = note;
};

this.setNoteToggle = function (noteToggle) {
_noteToggle = noteToggle;
};

this.clickToggle = function(){

if(_note.style.display == "block"){
_note.style.display = "none";

} else {
var inputY = bvFindPosY(_noteToggle);
var inputX = bvFindPosX(_noteToggle);
_note.style.top = inputY + _noteToggle.offsetHeight;
_note.style.left = inputX;
_note.style.display = "block";
}
};

this.clickOutside = function(e){
if(!e){
e = window.parent.event;
}


var clickedObject = bvGetAncestorID(e);

if(!bvIsAncestorOf(e, _note.id) && clickedObject != _noteToggle.id){
if(_note.style.display == "block"){
_note.style.display = "none";
}
}
};


this.init = function () {

if (window.parent.document.all) {
window.parent.document.attachEvent("onclick", this.clickOutside);
_noteToggle.attachEvent("onclick", this.clickToggle);
} else {
_noteToggle.addEventListener("click", this.clickToggle, true);
window.parent.document.addEventListener('click', this.clickOutside, false);
}
};
}



function BVMarkSelectedRadioIfPreviouslySet(radioRange, uniqueID, orientation) {
var oHiddenValue = window.parent.document.getElementById(uniqueID + 'Value');
if (oHiddenValue && oHiddenValue.value > 0) {


var oRadio = window.parent.document.getElementById(uniqueID + '-' + (oHiddenValue.value-1));
var oLabelToHighlight = window.parent.document.getElementById(uniqueID + '-' + (oHiddenValue.value-1) + '-label');
var oDisplay = window.parent.document.getElementById(uniqueID + 'Display');

BVHighlightRadioSelection(oDisplay, oLabelToHighlight, orientation);
oRadio.checked = "true";
}
}


function BVSetRadioSelection(oElement, oDisplay, oHidden, oLabelToHighlight, value, radioRange, uniqueID, orientation) {
if (!oElement || !oDisplay || !oHidden || !oLabelToHighlight || value < 0 || radioRange < 1) {
return;
}
if (oElement.checked) {

var i = 0;
for (i = 0; i < radioRange; i++) {
var oRadioLabel = window.parent.document.getElementById(uniqueID + '-' + i + '-label');
oRadioLabel.className = "BVRadioLabelUnselected BVRadioLabelUnselected" + orientation;
}

BVHighlightRadioSelection(oDisplay, oLabelToHighlight, orientation);



oHidden.value = value + 1;
}
}


function BVHighlightRadioSelection(oDisplay, oLabelToHighlight, orientation) {
oDisplay.innerHTML = oLabelToHighlight.innerHTML;
oLabelToHighlight.className = "BVRadioLabelSelected BVRadioLabelSelected" + orientation;
}



function BvSlider(oElement, oInput, oDisplay, oHidden, noValueLabel, valueLabels, staticResourcesPath) {
if (!oElement) {
return;
}
this._range = new BvRange();
this._range.setExtent(0);
this._blockIncrement = 1;
this._unitIncrement = 1;
this._timer = new BvTimer(100);
this._noValueLabel = noValueLabel;
this._valueLabels = valueLabels;
this._staticResourcesPath=staticResourcesPath;

if (BvSlider.isSupported && oElement) {

this.document = oElement.ownerDocument || oElement.document;

this.element = oElement;
this.element.slider = this;
this.element.unselectable = "on";


this.element.className = "horizontal " + this.classNameTag + " " + this.element.className;


this.line = this.document.createElement("DIV");
this.line.className = "line";
this.line.unselectable = "on";
this.line.appendChild(this.document.createElement("DIV"));
this.element.appendChild(this.line);


this.handle = this.document.createElement("IMG");
this.handle.className = "handle";
this.handle.id=this.element.id+"_sliderImage";
this.handle.src=this._staticResourcesPath+"/sliderHandle.gif";

if (this.handle.tabIndex){
this.handle.tabIndex=0;
}
this.element.appendChild(this.handle);
}

this.input = oInput;
this.hiddenElement = oHidden;
this.displayDiv = oDisplay;


var oThis = this;
this._range.onchange = function () {
oThis.recalculate();
if (typeof oThis.onchange == "function") {
oThis.onchange();
}
};

if (BvSlider.isSupported && oElement) {

if (this.element.addEventListener){
this.element.addEventListener("focus",BvSlider.eventHandlers.onfocus, true);
this.element.addEventListener("blur",BvSlider.eventHandlers.onblur, true);
this.element.addEventListener("mousedown",BvSlider.eventHandlers.onmousedown, true);
this.element.addEventListener("mouseover",BvSlider.eventHandlers.onmouseover, true);
this.element.addEventListener("mouseout",BvSlider.eventHandlers.onmouseout, true);
this.element.addEventListener("keydown",BvSlider.eventHandlers.onkeydown, true);
this.element.addEventListener("keyup",BvSlider.eventHandlers.onkeypress, true);
this.element.addEventListener("mousewheel",BvSlider.eventHandlers.onmousewheel, true);
}
else {
this.element.onfocus        = BvSlider.eventHandlers.onfocus;
this.element.onblur            = BvSlider.eventHandlers.onblur;
this.element.onmousedown    = BvSlider.eventHandlers.onmousedown;
this.element.onmouseover    = BvSlider.eventHandlers.onmouseover;
this.element.onmouseout        = BvSlider.eventHandlers.onmouseout;
this.element.onkeydown        = BvSlider.eventHandlers.onkeydown;
this.element.onkeypress        = BvSlider.eventHandlers.onkeypress;
this.element.onmousewheel    = BvSlider.eventHandlers.onmousewheel;
}
this.element.onselectstart    = function () { return false; };
this._timer.ontimer = function () {
oThis.ontimer();
};


window.setTimeout(function() {
oThis.recalculate();
}, 1);
}
else {
this.input.onchange = function (e) {
oThis.setValue(oThis.input.value);
};
}
}

BvSlider.isSupported = typeof document.createElement != "undefined" &&
typeof document.documentElement != "undefined" &&
typeof document.documentElement.offsetWidth == "number";


BvSlider.eventHandlers = {


getEvent:    function (e, el) {
if (!e) {
if (el) {
e = el.document.parentWindow.event;
}
else {
e = window.event;
}
}
if (!e.srcElement) {
var el2 = e.target;
while (el2 && el2.nodeType != 1) {
el = el2.parentNode;
}
e.srcElement = el2;
}
if (typeof e.offsetX == "undefined") {
e.offsetX = e.layerX;
e.offsetY = e.layerY;
}

return e;
},

getDocument:    function (e) {
if (e.target) {
return e.target.ownerDocument;
}
return e.srcElement.document;
},

getSlider:    function (e) {
var el = e.target || e.srcElement;
while (el && !el.slider) {
el = el.parentNode;
}
if (el) {
return el.slider;
}
return null;
},

getLine:    function (e) {
var el = e.target || e.srcElement;
while (el && el.className != "line") {
el = el.parentNode;
}
return el;
},

getHandle:    function (e) {
var el = e.target || e.srcElement;
var re = /handle/;
while (el && !re.test(el.className)) {
el = el.parentNode;
}
return el;
},


onfocus:    function (e) {
var s = this.slider;
s._focused = true;
if (s.handle.src !=s._staticResourcesPath+"/sliderHandleHover.gif") {
bvSwapImage(s.handle.id, s._staticResourcesPath+"/sliderHandleHover.gif",window.parent.document);
}
},

onblur:    function (e) {
var s = this.slider;
s._focused = false;
bvSwapImgRestore();
},

onmouseover:    function (e) {
e = BvSlider.eventHandlers.getEvent(e, this);
var s = this.slider;
if (e.srcElement == s.handle) {
if (s.handle.src != s._staticResourcesPath+"/sliderHandleHover.gif") {
bvSwapImage(s.handle.id, s._staticResourcesPath+"/sliderHandleHover.gif",window.parent.document);
}
}
},

onmouseout:    function (e) {
e = BvSlider.eventHandlers.getEvent(e, this);
var s = this.slider;
if (e.srcElement == s.handle && !s._focused) {
bvSwapImgRestore();
}
},

onmousedown:    function (e) {
e = BvSlider.eventHandlers.getEvent(e, this);
var s = this.slider;
if (s.element.focus ) {
s.element.focus();
}

BvSlider._currentInstance = s;
var doc = s.document;

if (doc.addEventListener) {
doc.addEventListener("mousemove", BvSlider.eventHandlers.onmousemove, true);
doc.addEventListener("mouseup", BvSlider.eventHandlers.onmouseup, true);

if (s.handle.focus ) {
s.handle.focus();
}
}
else if (doc.attachEvent) {
doc.attachEvent("onmousemove", BvSlider.eventHandlers.onmousemove);
doc.attachEvent("onmouseup", BvSlider.eventHandlers.onmouseup);
doc.attachEvent("onlosecapture", BvSlider.eventHandlers.onmouseup);
s.element.setCapture();
}

if (BvSlider.eventHandlers.getHandle(e)) {
BvSlider._sliderDragData = {
screenX:    e.screenX,
screenY:    e.screenY,
dx:            e.screenX - s.handle.offsetLeft,
dy:            e.screenY - s.handle.offsetTop,
startValue:    s.getValue(),
slider:        s
};
}
else {
var lineEl = BvSlider.eventHandlers.getLine(e);
s._mouseX = e.offsetX + (lineEl ? s.line.offsetLeft : 0);
s._mouseY = e.offsetY + (lineEl ? s.line.offsetTop : 0);
s._increasing = null;
s.ontimer();
}
},

onmousemove:    function (e) {
e = BvSlider.eventHandlers.getEvent(e, this);

var s;
if (BvSlider._sliderDragData) {
s = BvSlider._sliderDragData.slider;

var boundSize = s.getMaximum() - s.getMinimum();
var size, pos, reset;

size = s.element.offsetWidth - s.handle.offsetWidth;
pos = e.screenX - BvSlider._sliderDragData.dx;
reset = Math.abs(e.screenY - BvSlider._sliderDragData.screenY) > 100;
s.setRestrictedValue(reset ? BvSlider._sliderDragData.startValue :
s.getMinimum() + boundSize * pos / size);
return false;
}
else {
s = BvSlider._currentInstance;
if (s) {
var lineEl = BvSlider.eventHandlers.getLine(e);
s._mouseX = e.offsetX + (lineEl ? s.line.offsetLeft : 0);
s._mouseY = e.offsetY + (lineEl ? s.line.offsetTop : 0);
}
}

},

onmouseup:    function (e) {
e = BvSlider.eventHandlers.getEvent(e, this);
var s = BvSlider._currentInstance;
var doc = s.document;
if (doc.removeEventListener) {
doc.removeEventListener("mousemove", BvSlider.eventHandlers.onmousemove, true);
doc.removeEventListener("mouseup", BvSlider.eventHandlers.onmouseup, true);
}
else if (doc.detachEvent) {
doc.detachEvent("onmousemove", BvSlider.eventHandlers.onmousemove);
doc.detachEvent("onmouseup", BvSlider.eventHandlers.onmouseup);
doc.detachEvent("onlosecapture", BvSlider.eventHandlers.onmouseup);
s.element.releaseCapture();
}

if (BvSlider._sliderDragData) {
BvSlider._sliderDragData = null;
}
else {
s._timer.stop();
s._increasing = null;
}
BvSlider._currentInstance = null;
},

onkeydown:    function (e) {
e = BvSlider.eventHandlers.getEvent(e, this);

var s = this.slider;
var kc = e.keyCode;
switch (kc) {
case 33:
s.setRestrictedValue(s.getValue() + s.getBlockIncrement());
break;
case 34:
s.setRestrictedValue(s.getValue() - s.getBlockIncrement());
break;
case 35:
s.setRestrictedValue(s.getMaximum());
break;
case 36:
s.setRestrictedValue(s.getMinimum());
break;
case 38:
case 39:
s.setRestrictedValue(s.getValue() + s.getUnitIncrement());
break;

case 37:
case 40:
s.setRestrictedValue(s.getValue() - s.getUnitIncrement());
break;
}

if (kc >= 33 && kc <= 40) {
return false;
}
},

onkeypress:    function (e) {
e = BvSlider.eventHandlers.getEvent(e, this);
var kc = e.keyCode;
if (kc >= 33 && kc <= 40) {
return false;
}
},

onmousewheel:    function (e) {
e = BvSlider.eventHandlers.getEvent(e, this);
var s = this.slider;
if (s._focused) {
s.setRestrictedValue(s.getValue() + e.wheelDelta / 120 * s.getUnitIncrement());


return false;
}
}
};



BvSlider.prototype.classNameTag = "dynamic-slider-control";

BvSlider.prototype.setValue = function (v) {
this._range.setValue(v);
this.input.value = this.getValue();
};

BvSlider.prototype.setRestrictedValue = function(v) {
if (v < this.getMinimum()) {
this.setValue(this.getMinimum());
} else if (v > this.getMaximum()) {
this.setValue(this.getMaximum());
} else {
this.setValue(v);
}
};

BvSlider.prototype.getValue = function () {
return this._range.getValue();
};

BvSlider.prototype.isValueSet = function () {
return this._range.isValueSet();
};

BvSlider.prototype.setMinimum = function (v) {
this._range.setMinimum(v);
this.input.value = this.getValue();
};

BvSlider.prototype.getMinimum = function () {
return this._range.getMinimum();
};

BvSlider.prototype.setMaximum = function (v) {
this._range.setMaximum(v);
this.input.value = this.getValue();
};

BvSlider.prototype.getMaximum = function () {
return this._range.getMaximum();
};

BvSlider.prototype.setUnitIncrement = function (v) {
this._unitIncrement = v;
};

BvSlider.prototype.getUnitIncrement = function () {
return this._unitIncrement;
};

BvSlider.prototype.setBlockIncrement = function (v) {
this._blockIncrement = v;
};

BvSlider.prototype.getBlockIncrement = function () {
return this._blockIncrement;
};

BvSlider.prototype.recalculate = function() {
if (!BvSlider.isSupported || !this.element) {
return;
}

var w = this.element.offsetWidth;
var h = this.element.offsetHeight;
var hw = this.handle.offsetWidth;
var hh = this.handle.offsetHeight;
var lw = this.line.offsetWidth;
var lh = this.line.offsetHeight;



this.handle.style.left = (w - hw) * (this.getValue() - this.getMinimum()) /
(this.getMaximum() - this.getMinimum()) + "px";
this.handle.style.top = (h - hh) / 2 + "px";
this.line.style.top = (h - lh) / 2 + "px";
this.line.style.left = hw / 2 + "px";
this.line.style.right = hw / 2 + "px";
this.line.style.width = Math.max(0, w - hw - 2)+ "px";
this.line.firstChild.style.width = Math.max(0, w - hw - 4)+ "px";
};

BvSlider.prototype.ontimer = function () {
var hw = this.handle.offsetWidth;
var hh = this.handle.offsetHeight;
var hl = this.handle.offsetLeft;
var ht = this.handle.offsetTop;

if (this._mouseX > hl + hw && (this._increasing === null || this._increasing)) {
this.setRestrictedValue(this.getValue() + this.getBlockIncrement());
this._increasing = true;
}
else if (this._mouseX < hl && (this._increasing === null || !this._increasing)) {
this.setRestrictedValue(this.getValue() - this.getBlockIncrement());
this._increasing = false;
}

this._timer.start();
};



BvSlider.prototype.displayVerb = function(){


var scaledValue = Math.floor((this.getValue() - 1) / 10.0) + 1;

if (!this.isValueSet() || (scaledValue - 1) >= this._valueLabels.length) {
this.displayDiv.innerHTML = this._noValueLabel;
this.displayDiv.className = "BVSliderCurrentValueUnset";
this.hiddenElement.value = "";
} else {
this.displayDiv.innerHTML = this._valueLabels[scaledValue - 1];
this.displayDiv.className = "BVSliderCurrentValue";
this.hiddenElement.value = scaledValue;
}
};


function bvSwapImgRestore() {
var i,x,a=document.BV_sr;
for( i=0; a && i<a.length && (x=a[i]) && x.oSrc; i++) {
x.src=x.oSrc;
}
}




function bvSetArrow(graphic, section, staticResourcePath) {
if (document.getElementById(section).style.display=="block") {
document.getElementById(graphic).src = staticResourcePath + "/expandedicon.gif";
} else {
document.getElementById(graphic).src = staticResourcePath + "/collapsedicon.gif";
}
}


function bvTextCounter(value, countOutput, minReq, zeroTextMessage, tooShortMessage, longEnoughMessage) {
if (!value || value.length === 0){
document.getElementById(countOutput).innerHTML=zeroTextMessage.replace(/\{0\}/, minReq);
} else if (value.length < minReq) {
document.getElementById(countOutput).innerHTML=tooShortMessage.replace(/\{0\}/, minReq - value.length);
} else {
document.getElementById(countOutput).innerHTML=longEnoughMessage;
}
}


function bvToggleProdBlurb(span1, span2){
document.getElementById(span1).style.display='block';
document.getElementById(span2).style.display='none';
}




function BvRange() {
this._valueSet = false;
this._value = 35;
this._minimum = 1;
this._maximum = 70;
this._extent = 0;

this._isChanging = false;
}

BvRange.prototype.setValue = function (value) {
value = Math.round(parseFloat(value));
if (isNaN(value)) {
return;
}
if (this._value != value) {
if (!value) {
this._value = 35;
this._valueSet = false;
}
else {
this._valueSet = true;
if (value + this._extent > this._maximum) {
this._value = this._maximum - this._extent;
}
else if (value < this._minimum) {
this._value = this._minimum;
}
else {
this._value = value;
}
if (!this._isChanging && typeof this.onchange == "function") {
this.onchange();
}
}
}
};

BvRange.prototype.getValue = function () {
return this._value;
};

BvRange.prototype.isValueSet = function () {
return this._valueSet;
};

BvRange.prototype.setExtent = function (extent) {
if (this._extent != extent) {
if (extent < 0) {
this._extent = 0;
}
else if (this._value + extent > this._maximum) {
this._extent = this._maximum - this._value;
}
else {
this._extent = extent;
}
if (!this._isChanging && typeof this.onchange == "function") {
this.onchange();
}
}
};

BvRange.prototype.getExtent = function () {
return this._extent;
};

BvRange.prototype.setMinimum = function (minimum) {
if (this._minimum != minimum) {
var oldIsChanging = this._isChanging;
this._isChanging = true;

this._minimum = minimum;

if (minimum > this._value) {
this.setValue(minimum);
}
if (minimum > this._maximum) {
this._extent = 0;
this.setMaximum(minimum);
this.setValue(minimum);
}
if (minimum + this._extent > this._maximum) {
this._extent = this._maximum - this._minimum;
}

this._isChanging = oldIsChanging;
if (!this._isChanging && typeof this.onchange == "function") {
this.onchange();
}
}
};

BvRange.prototype.getMinimum = function () {
return this._minimum;
};

BvRange.prototype.setMaximum = function (maximum) {
if (this._maximum != maximum) {
var oldIsChanging = this._isChanging;
this._isChanging = true;

this._maximum = maximum;

if (maximum < this._value) {
this.setValue(maximum - this._extent);
}
if (maximum < this._minimum) {
this._extent = 0;
this.setMinimum(maximum);
this.setValue(this._maximum);
}
if (maximum < this._minimum + this._extent) {
this._extent = this._maximum - this._minimum;
}
if (maximum < this._value + this._extent) {
this._extent = this._maximum - this._value;
}

this._isChanging = oldIsChanging;
if (!this._isChanging && typeof this.onchange == "function") {
this.onchange();
}
}
};

BvRange.prototype.getMaximum = function () {
return this._maximum;
};


function BvTimer(nPauseTime) {
this._pauseTime = typeof nPauseTime == "undefined" ? 1000 : nPauseTime;
this._timer = null;
this._isStarted = false;
}

BvTimer.prototype.start = function () {
if (this.isStarted()) {
this.stop();
}
var oThis = this;
this._timer = window.setTimeout(function () {
if (typeof oThis.ontimer == "function") {
oThis.ontimer();
}
}, this._pauseTime);
this._isStarted = false;
};

BvTimer.prototype.stop = function () {
if (this._timer) {
window.clearTimeout(this._timer);
}
this._isStarted = false;
};

BvTimer.prototype.isStarted = function () {
return this._isStarted;
};

BvTimer.prototype.getPauseTime = function () {
return this._pauseTime;
};

BvTimer.prototype.setPauseTime = function (nPauseTime) {
this._pauseTime = nPauseTime;
};





function bvFindElementById( elementId) {
var element = null;
if( window.parent && window.parent.document) {
element = window.parent.document.getElementById(elementId);
}
if( !element) {
element = document.getElementById(elementId);
}
return element;
}


function bvRollHighlight(target, image, target2, className){
document.getElementById(target).style.backgroundImage=image;
document.getElementById(target2).className = className;
}



function bvToggleDivWithIEControlsFrame(targetId, ieControlsFrameId, ieControlsFrameTitle) {
if (document.getElementById(targetId).style.display=="block") {
bvCloseDivs(targetId, ieControlsFrameId);
} else {
bvExpandDivWithIEControlsFrame(targetId, ieControlsFrameId, ieControlsFrameTitle);
}
}

function bvExpandDivWithIEControlsFrame(targetId, ieControlsFrameId, ieControlsFrameTitle) {
bvOpenDivs(targetId);




var isExplorer = document.all && ((navigator.userAgent.indexOf("MSIE 6.") > -1) || (navigator.userAgent.indexOf("MSIE 5.5") > -1));
if (isExplorer) {
var ieControlsFrame = document.getElementById(ieControlsFrameId)
if (!ieControlsFrame) {
ieControlsFrame=document.createElement('iframe');
ieControlsFrame.id=ieControlsFrameId;
ieControlsFrame.title=ieControlsFrameTitle;
ieControlsFrame.src="";
ieControlsFrame.scrolling="no";
ieControlsFrame.frameBorder="0";
}
if(ieControlsFrame) {
var target = document.getElementById(targetId);
if(target) {
target.parentNode.insertBefore(ieControlsFrame, target);


var targetPosition = bvGetPosition(targetId);

ieControlsFrame.style.width = targetPosition[2];
ieControlsFrame.style.height = targetPosition[3];
}
ieControlsFrame.style.filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';
bvOpenDivs(ieControlsFrameId);
}
}
}

function bvOpenDivs() {
for (var i=0; i<arguments.length; i++){
if (document.getElementById(arguments[i])) {
if (document.getElementById(arguments[i]).style.display != "block"){
document.getElementById(arguments[i]).style.display = "block";
}
}
}
}

function bvCloseDivs() {
for (var i=0; i<arguments.length; i++){
if (document.getElementById(arguments[i])) {
if (document.getElementById(arguments[i]).style.display != "none"){
document.getElementById(arguments[i]).style.display = "none";
}
}
}
}

function bvToggleVis(target) {
if (document.getElementById(target).style.display=="block") {
document.getElementById(target).style.display="none";
} else {
document.getElementById(target).style.display= "block";
}
}

function bvGetPosition(elementId) {
var obj = document.getElementById(elementId);
if (obj) {
var w = obj.offsetWidth;
var h = obj.offsetHeight;
var posX = 0;
var posY = 0;
if ( obj.offsetParent ) {
for (; obj.offsetParent; obj = obj.offsetParent) {
posX += obj.offsetLeft;
posY += obj.offsetTop;
}
return[posX, posY, w, h];
} else {
return[obj.x, obj.y, w, h];
}
} else {
return [0,0,0,0];
}
}




function bvPreloadImages() {
var d = document;
if(d.images) {
if(!d.BV_p) {
d.BV_p = [];
}
var i;
var j = d.BV_p.length;
var a = arguments;
for(i=0; i<a.length; i++) {
if (a[i].indexOf("#")) {
d.BV_p[j] = new Image();
d.BV_p[j++].src=a[i];
}
}
}
}



function bvFindObj(n, d) {
var p,i,x;
if(!d) {
d=document;
}
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document;
n=n.substring(0,p);
}
if(!(x=d[n])&&d.all) {
x=d.all[n];
}
for (i=0;!x&&i<d.forms.length;i++) {
x=d.forms[i][n];
}
for(i=0;!x&&d.layers&&i<d.layers.length;i++) {
x=bvFindObj(n,d.layers[i].document);
}
if(!x && d.getElementById) {
x=d.getElementById(n);
}
return x;
}



function bvSwapImage() {
var i,x,currentDoc;
var a = arguments;

if (!document.BV_sr) {
document.BV_sr = [];
}
var tmpArray = document.BV_sr;
var j = tmpArray.length;
if (a[2]) {
currentDoc = a[2];
}
else {
currentDoc = null;
}
if ((x = bvFindObj(a[0], currentDoc))) {
tmpArray[j++] = x;
if (!x.oSrc) {
x.oSrc = x.src;
}
x.src = a[1];
}
}




var bvPointerPosX = 0;
var bvPointerPosY = 0;


function bvGetMouseXY(e) {
if (!e) {
e = window.event;
}

if (document.documentElement && document.documentElement.scrollTop) {

bvPointerPosX = e.clientX + document.documentElement.scrollLeft;
bvPointerPosY = e.clientY + document.documentElement.scrollTop;
} else if ((document.childNodes)&&(!document.all)&&(!navigator.taintEnabled)&&(!navigator.accentColorName)) {

bvPointerPosX = e.clientX;
bvPointerPosY = e.clientY;
} else if (document.body) {

bvPointerPosX = e.clientX + document.body.scrollLeft;
bvPointerPosY = e.clientY + document.body.scrollTop;
} else {
bvPointerPosX = e.pageX;
bvPointerPosY = e.pageY;
}

if (bvPointerPosX <= 0) {
bvPointerPosX = 0;
}
if (bvPointerPosY <= 0) {
bvPointerPosY = 0;
}
}
window.document.onmousemove = bvGetMouseXY;



function bvSetPos(theDiv, offsetX,offsetY) {
if (offsetY==undefined) {
offsetY=0;
}

document.getElementById(theDiv).style.top = bvPointerPosY-offsetY+"px";
document.getElementById(theDiv).style.left = bvPointerPosX-offsetX+"px";
}



function bvSetOpenerLocation(url) {
if (opener) {
if (opener.closed) {
window.open(url, "");
}
else {
opener.location.href = url;
}
return false;
}
return true;
}

function bvInitTags(tableCellPrefix, textBoxPrefix, checkBoxPrefix, initialValue) {
var count = 0;
var checkBox = document.getElementById(checkBoxPrefix + count);
while(checkBox) {
var textBox = document.getElementById(textBoxPrefix + count);
var tableCell = document.getElementById(tableCellPrefix + count);



if (textBox) {
if (textBox.value == null || textBox.value == "") {

} else {
checkBox.checked = 'true';
textBox.style.fontWeight = 'bold';
}
}
count++;
checkBox = document.getElementById(checkBoxPrefix + count);
}
}

function bvToggleTagBold(checkbox, element) {
if (!element) {
return;
}

if(checkbox && checkbox.checked) {
element.style.fontWeight='bold';
} else {
element.style.fontWeight='normal';
}
}

function bvTypedUserTag(checkbox, element, nextRow) {
if(element && element.value.length > 0) {
element.style.fontWeight = 'bold';

if (checkbox) {
checkbox.checked = 'true';
}

if (nextRow) {
nextRow.style.display='';
nextRow.style.visibility='visible';
}
}
}
