Report=function(){var selected_web_page_id=null;var current_web_page_id=null;var pageRenderingsLoaded=function(transport){if(200==transport.status){initLightbox();initialize_highlighter();DifferenceClassifier.initialize();$$('.relativePositionChangedElement').each(function(element){element.observe("mouseover",function(){Tip(element.readAttribute('css_selector'));});element.observe("mouseout",function(){UnTip();});});}};var pageRenderingsFailed=function(message){$('loadingModal').hide();$('pageRenderings').update(message);};return{initialize:function(){$$('.row').each(function(element,index){element.observe('click',Report.onWebPageSelected);});var matchArray=location.hash.match(/^#page=(\d+)$/);if(matchArray!=null){selected_web_page_id=parseInt(matchArray[1]);}else{if($$('#summaryTable .row').length>0){selected_web_page_id=$$('#summaryTable .row')[0].readAttribute('web_page_id');}}
if(selected_web_page_id!=null){Report.loadPageRenderings();}else{pageRenderingsFailed("No pages in this test.");}},getSelectedWebPageId:function(){return selected_web_page_id;},setSelectedWebPageId:function(_selected_web_page_id){selected_web_page_id=_selected_web_page_id;},onWebPageSelected:function(event){$(event.target).ancestors().each(function(element){if(element.readAttribute('web_page_id')!=null){selected_web_page_id=element.readAttribute('web_page_id');}});Report.loadPageRenderings();},loadPageRenderings:function(){if(null==selected_web_page_id){$('loadingModal').hide();$('pageRenderings').update("This test is still in progress or has timed out.  Please try again later or contact us for more information.");return;}
if(current_web_page_id==selected_web_page_id)
return;dhtmlHistory.add("page="+selected_web_page_id,"Report.setSelectedWebPageId("+selected_web_page_id+"); Report.loadPageRenderings();");DifferenceClassifier.clear();JavascriptErrors.clear();$('loadingModal').show();current_web_page_id=selected_web_page_id;$$('.selectedRow').invoke("removeClassName",'selectedRow');$$("tr[web_page_id='"+current_web_page_id+"']").invoke("addClassName",'selectedRow');$('openPage').href=$$("tr[web_page_id='"+current_web_page_id+"']")[0].readAttribute('url');$('openPage').onclick="";new Ajax.Updater("pageRenderings",'/web_pages/'+selected_web_page_id+'/renderings/',{method:'get',onComplete:pageRenderingsLoaded,onFailure:pageRenderingsFailed.bind(this,"Could not load page layout difference information.  Please try again later."),onError:pageRenderingsFailed.bind(this,"Could not load page layout difference information due to a connection error."),evalScripts:true,parameters:window.location.search.toQueryParams()});if(__RAILS_ENV__!='development')
JavascriptErrors.initialize();}};}();Event.observe(window,'load',Report.initialize);DifferenceClassifier=function(){var allDifferences;var filteredDifferences;var loadDifferencesFromJson=function(responseJSON){if(__RAILS_ENV__=='development')
JavascriptErrors.initialize();allDifferences=responseJSON;if(allDifferences.length==0){updateProblemTable([]);loadingComplete();return;}
loadDifferences();initializeDifferenceList();showDifferences();loadingComplete();};var updateProblemTable=function(problems){$('problemTable').update("");var body=new Element('tbody');$('problemTable').appendChild(body);if(problems.length==0){body.update("<tr><td colspan='3'>No Problems Detected</td></tr>");$('layoutDifferencesCount').update("");}else{problems.each(function(problem){body.appendChild(problem);});$('layoutDifferencesCount').update("("+problems.length+")");}}
var getComparisonDifferences=function(){var webPageId=Report.getSelectedWebPageId();new Ajax.Request('/web_pages/'+webPageId+"/comparison_differences.json",{method:'get',onSuccess:function(transport){loadDifferencesFromJson(transport.responseJSON);}.bind(this),parameters:window.location.search.toQueryParams()});};var initializeDifferenceList=function(){var differenceItems=[];filteredDifferences.keys().each(function(id){var difference=PositionDifference.initDifference(id);var tableCheckbox=new Element('td',{width:"20"});tableCheckbox.appendChild(new Element('input',{id:'show_difference_'+id,'class':'showHideDifference',difference_id:id,type:'checkbox'}));tableCheckbox.childNodes[0].checked=true;tableCheckbox.childNodes[0].onclick=DifferenceClassifier.updateDifferences;var tableText=new Element('td').update(difference.getDetailsText());var deleteLink=new Element('a',{href:'javascript: void(0);',title:'Flag as Not a Bug'}).update("<img src='/images/test_run/close_dark.png' />");deleteLink.onclick=DifferenceClassifier.deleteDifference.bind(this,id);var spinner=new Element('img',{id:'cd_spinner_'+id,'class':'indicator',style:'display: none;',src:'/images/indicator.gif'});var tableDelete=new Element('td',{width:"17"}).insert(deleteLink).insert(spinner);var tableRow=new Element('tr').insert(tableCheckbox).insert(tableText).insert(tableDelete);differenceItems.push(tableRow);});updateProblemTable(differenceItems);};var showDifferences=function(){$$('.secondary_image .inner').each(function(image){image.removeClassName('failLabel');image.removeClassName('passLabel');});$$(".showHideDifference").each(function(differenceCheckbox){var difference=PositionDifference.initDifference(differenceCheckbox.readAttribute("difference_id"));if(differenceCheckbox.checked){difference.show();}else{difference.hide();}});$$('.secondary_image .inner, .primary_image .inner').each(function(image){if(!image.hasClassName('failLabel')){image.addClassName('passLabel');}});$$('.failLabel').reverse().each(function(image){$('diffContainer').insertBefore(image.up(),$$('.primary_image')[0].nextSibling);});};var loadDifferences=function(){filteredDifferences=new Hash();for(var i=0;i<allDifferences.length;i++){var difference=allDifferences[i];var classification_name="Untriaged";if(difference.comparison_classification){classification_name=difference.comparison_classification.name;}
if(classification_name=="Untriaged"||classification_name=="Bug"){filteredDifferences.set(difference.id,difference);}}};return{initialize:function(){$$(".domDiffDiv div").invoke('hide');getComparisonDifferences();},updateDifferences:function(){showDifferences();},deleteDifference:function(comparison_difference_id){if(confirm('Are you sure you want to permanently delete this difference?  Deleting this difference means it will not show up as an error in this test or future tests.')){new Ajax.Request('/comparison_differences/'+comparison_difference_id,{method:'delete',onLoading:function(request){$('cd_spinner_'+comparison_difference_id).show();},onSuccess:function(response){if(response.responseText=='OK'){filteredDifferences.unset(comparison_difference_id);initializeDifferenceList();showDifferences();}else{alert('The difference could not be deleted.  Please refresh and try again.');}},onFailure:function(response){var message=(response.status==403)?response.responseText:'An error occurred while saving, please try again later.';alert(message);},onComplete:function(response){$('cd_spinner_'+comparison_difference_id).hide();},parameters:'authenticity_token='+encodeURIComponent(window._token)});}
return false;},clear:function(){$('problemTable').update("<tbody><tr><td><img src='/images/test_run/small_spinner.gif' /> Loading...</td></tr></tbody>");}}}();var comparisonIgnoresWindowId="comparisonIgnoresWindow";var MAX_DIFF_ELEMENT_OPACITY=0.8;HIGHLIGHT_MODE=function(){return{Highlight:"highlight",Unhighlight:"unhighlight",Select:"select"};}();SelectedDiffGroup=function(_selectedElement){var diffElementFromPrimary=function(element){if(element.descendantOf($$('.primary_image')[0])){return true;}else{return false;}};var selectedElement=_selectedElement;var groupElements=$$(".domDiffDiv div[diff_group_index='"+selectedElement.readAttribute('diff_group_index')+"']");var primaryElements=groupElements.partition(diffElementFromPrimary)[0];var secondaryElements=groupElements.partition(diffElementFromPrimary)[1];var selectedPrimaryElement=primaryElements.find(function(element){return element.readAttribute('css_selector')==selectedElement.readAttribute('css_selector');});var selectedGroupElements=groupElements.findAll(function sameParent(other){return getTopDiffDiv(this)==getTopDiffDiv(other);},selectedElement);var secondaryElementGroups=new Hash();var affectedBrowsers=[];secondaryElements.each(function(element){var browserName=getBrowserName(element);affectedBrowsers.push(browserName);if(secondaryElementGroups.get(browserName)==null){secondaryElementGroups.set(browserName,[]);}
secondaryElementGroups.get(browserName).push(element);});affectedBrowsers=affectedBrowsers.uniq();return{getPrimaryBrowserName:function(){return getBrowserName(selectedPrimaryElement);},getAll:function(){return groupElements;},getSelected:function(){return selectedElement;},getSelectedPrimary:function(){return selectedPrimaryElement;},selectedGroupElements:function(){return selectedGroupElements;},getAllPrimary:function(){return primaryElements;},getAllSecondary:function(){return secondaryElements;},getAllSecondaryGroups:function(){return secondaryElementGroups;},getAffectedBrowsers:function(){return affectedBrowsers;},each:function(func){diffElements.each(func);}};};getElementSelectorStrings=function(elements){var elementSelectors=[];elements.each(function(element){elementSelectors.push(getFormattedSelector(element));});return elementSelectors.join(', ');}
var showElementIgnoreOptions=function(event){var element=$(event.target);var parent=$(event.target).ancestors()[0];if(element.hasClassName('domDiffDiv')){return;}
if(showElementIgnoreOptions.win==null){showElementIgnoreOptions.win=new Window(comparisonIgnoresWindowId,{className:"alphacube",title:"Ignore This Element",width:150,height:100,showEffect:Element.show,hideEffect:Element.hide,recenterAuto:false});showElementIgnoreOptions.win.setContent('comparison_ignores',true,false);}
$('comparison_ignores_css_selector').value=element.readAttribute("css_selector");$('comparison_ignores_affects_all_browsers_false').checked=$('comparison_ignores_affects_all_browsers_false').checked;$('comparison_ignores_affects_all_browsers_label').update(parent.readAttribute("browser_name"));$('comparison_ignores_comparison_type').value=element.readAttribute("comparison_class");$('comparison_ignores_browser_type_id').value=parent.readAttribute("browser_id");showElementIgnoreOptions.win.setLocation(element.cumulativeOffset()[1],element.cumulativeOffset()[0]);showElementIgnoreOptions.win.show();};var getDomDiffOverlaySize=function(image){var topDiv=image.adjacent('.domDiffDiv')[0];var height=image.getHeight();var documentHeight=parseInt(topDiv.readAttribute("document_height"));if(documentHeight>12000){height=documentHeight*image.getWidth()/parseInt(topDiv.readAttribute("document_width"));}
var width=image.getWidth();return{height:height,width:width};};var resizeDomDiffOverlays=function(image){var topDiv=image.adjacent('.domDiffDiv')[0];var dimensions=getDomDiffOverlaySize(image);topDiv.setStyle({width:dimensions.width+'px',height:dimensions.height+'px'});if($$('.currentDifference')[0]){scrollScreenshotsToElement('currentDifference');}};function scrollScreenshots(primaryTargetElement){var primaryDimensions=getDomDiffOverlaySize($$('.diffThumbImage')[0]);var scrollTop=primaryDimensions.height*parseFloat(primaryTargetElement.style.top)/100;var scrollLeft=primaryDimensions.width*parseFloat(primaryTargetElement.style.left)/100;$$('.screenshotImage').each(function(screenshot){screenshot.scrollTop=scrollTop;screenshot.scrollLeft=scrollLeft;});}
var SCREENSHOT_BUFFER=30;function scrollScreenshotsToElement(className){var primaryHoveredElement=$$('.primary_image .'+className)[0];var primaryDimensions=getDomDiffOverlaySize($$('.primary_image .diffThumbImage')[0]);var scrollTop=primaryDimensions.height*parseFloat(primaryHoveredElement.style.top)/100;var scrollLeft=primaryDimensions.width*parseFloat(primaryHoveredElement.style.left)/100;$$('.screenshotImage').each(function(screenshot){var hoveredElement=screenshot.select('.'+className)[0];if(hoveredElement){var secondaryDimensions=getDomDiffOverlaySize(screenshot.select('.diffThumbImage')[0]);scrollTop=secondaryDimensions.height*parseFloat(hoveredElement.style.top)/100;scrollLeft=secondaryDimensions.width*parseFloat(hoveredElement.style.left)/100;}else{}
screenshot.scrollTop=scrollTop-SCREENSHOT_BUFFER;screenshot.scrollLeft=scrollLeft-SCREENSHOT_BUFFER;});}
function getTopDiffDiv(targetElement){return targetElement.ancestors()[0];}
function getBrowserName(targetElement){return getTopDiffDiv(targetElement).readAttribute("browser_name");}
function getScreenshotImageFromDiffElement(targetElement){return getTopDiffDiv(targetElement).nextSiblings()[0];}
function openDiffFullScreenshots(diffElementGroup){var targetElement=diffElementGroup.getSelected();var parentElement=getTopDiffDiv(targetElement);var primaryDivElement=$$("[web_page_id='"+parentElement.readAttribute("web_page_id")+"'] .domDiffDiv")[0];var primaryScreenshotURL=primaryDivElement.siblings()[0].src.replace(/\.thumb\./,".");var secondaryScreenshotURL=getScreenshotImageFromDiffElement(targetElement).src.replace(/\.thumb\./,".");$('differencePrimaryPanelLabel').update(primaryDivElement.readAttribute("browser_name")+" Screenshot (Reference Browser)");var primaryImage=new Element('img',{'src':primaryScreenshotURL});$('differencePrimaryImage').update(primaryImage);var secondaryImage=null;if(primaryScreenshotURL!=secondaryScreenshotURL){secondaryImage=new Element('img',{'src':secondaryScreenshotURL});$('differenceSecondaryImage').update(secondaryImage);$('differenceSecondaryPanelLabel').update(parentElement.readAttribute("browser_name")+" Screenshot");}else{$('differenceSecondaryImage').update("<div>Hover the corresponding element on another browser to compare screenshots.</div>");$('differenceSecondaryPanelLabel').update();}
var primaryTargetElement=diffElementGroup.getSelectedPrimary();if(primaryTargetElement==null){primaryTargetElement=targetElement;}
Event.observe(primaryImage,'load',scrollFullScreenshots.bind(this,primaryTargetElement));if(null!=secondaryImage){Event.observe(secondaryImage,'load',scrollFullScreenshots.bind(this,primaryTargetElement));}
scrollFullScreenshots(primaryTargetElement);}
function scrollFullScreenshots(primaryTargetElement){var scrollTop=$$('#differencePrimaryImage img')[0].getHeight()*parseFloat(primaryTargetElement.style.top)/100;var scrollLeft=$$('#differencePrimaryImage img')[0].getWidth()*parseFloat(primaryTargetElement.style.left)/100;$$('.differenceImageBox').each(function(panel,index){panel.scrollTop=scrollTop;panel.scrollLeft=scrollLeft;});}
function toggleNextSibling(event){this.nextSiblings()[0].toggle();return false;}
function initialize_highlighter(){$$('.domDiffDiv').each(function(element,index){element.observe('mouseover',highlightSelectorEvent);element.observe('mouseout',unhighlightSelector);});DiffHighlighter.initialize();}
function loadingComplete(){$('loadingModal').hide();}
DiffHighlighter=function(){var selectedDiffGroup=null;var diffElementClicked=function(event){this.inspectLinkClicked();setDiffElementsHighlight.bind(this)(HIGHLIGHT_MODE.Select);};var diffElementHovered=function(event){highlightDiffElements.bind(this)(event.target);};var diffElementUnhovered=function(event){setDiffElementsHighlight.bind(this)(HIGHLIGHT_MODE.Unhighlight);};var highlightDiffElements=function(targetElement){if(targetElement.hasClassName('domDiffDiv')){return;}
selectedDiffGroup=new SelectedDiffGroup(targetElement);};var setDiffElementsHighlight=function(highlight){if(selectedDiffGroup==null){return[];}
var selectedElement=selectedDiffGroup.getSelected();if(this.diffClassHandlers[selectedElement.readAttribute('comparison_class')]){detailsText=this.diffClassHandlers[selectedElement.readAttribute('comparison_class')].setDiffElementsHighlight(highlight,selectedDiffGroup);}else{detailsText=["Details for element type "+selectedElement.readAttribute('comparison_class')+" not yet supported"];}
if(!highlight){selectedDiffGroup=null;}
return detailsText;};return{diffClassHandlers:{},initialize:function(){this.diffClassHandlers={"RelativePositioningComparison":RelativePositionHighlighter,"FloatWrapComparison":FloatWrapHighlighter,"DOMDocumentComparison":DOMDocumentHighlighter};},highlightDiffElements:function(target){highlightDiffElements.bind(this)(target);}};}();function getPrimaryDocumentName(){return $$('.primary_image .domDiffDiv')[0].readAttribute('browser_name');}
function setDetailsElement(diffDetailsText){return;}
function getFormattedSelector(element){return formatSelector(element,element.readAttribute('css_selector'));}
function getFormattedRelativeSelector(baseElement,relativeElement){var relativeSelector=relativeElement.readAttribute('css_selector').replace(baseElement.readAttribute('css_selector'),"(Parent)");return formatSelector(relativeElement,relativeSelector);}
function formatSelector(element,text){return"<span class='selector' onmouseover='highlightSelector($(this), true); return false;' "+"onmouseout='unhighlightSelector(); return false;' "+"css_selector='"+element.readAttribute('css_selector')+"' "+"diff_group_index='"+element.readAttribute('diff_group_index')+"' "+">"+text+"</span>";}
function formatBrowserName(browserName){return"<span class='browserName'>"+browserName+"</span>";}
function findElementsByAttributes(attributes){var firstAttr=attributes.shift();var elements=$$("["+firstAttr.name+"='"+firstAttr.value+"']");attributes.each(function(attribute){elements=elements.findAll(function(element){return(element.readAttribute(attribute.name)==attribute.value);});});return elements;}
function highlightSelectorEvent(event){return highlightSelector($(event.target),false);}
function highlightSelector(target,scrollScreenshots){var selectorElements=findElementsByAttributes([{name:'css_selector',value:target.readAttribute('css_selector')},{name:'diff_group_index',value:target.readAttribute('diff_group_index')}]);selectorElements.each(function(element){element.addClassName("hoveredSelector");});if(scrollScreenshots){scrollScreenshotsToElement('hoveredSelector');}}
function unhighlightSelector(){$$('.hoveredSelector').each(function(element){element.removeClassName("hoveredSelector");});}
function getDiffDocumentDimensions(element){var topDiv=getTopDiffDiv(element);return[topDiv.readAttribute("document_width"),topDiv.readAttribute("document_height")];}
function getDiffElementDimensions(element){var topDivDimensions=getDiffDocumentDimensions(element);return[Math.round(parseFloat(element.style.width)*topDivDimensions[0]/100),Math.round(parseFloat(element.style.height)*topDivDimensions[1]/100)];}
RelativePositionHighlighter=function(){var isMisalignedElement=function(element){var directions=["horizontal","vertical"];for(var i=0;i<directions.length;i++){var direction=directions[i];if(element.getAttribute(direction+"_anchor")!=null){return true;}}
return false;};var getAlignmentTexts=function(browserName,elements){var diffTexts=[];var partitions=elements.partition(isMisalignedElement);var misaligned=partitions[0];var anchors=partitions[1];var anchorString=getElementSelectorStrings(anchors);misaligned.each(function(element){var directions=["horizontal","vertical"];for(var i=0;i<directions.length;i++){var primaryAlignmentDirection=directions[i];if(element.getAttribute(primaryAlignmentDirection+"_anchor")!=null){diffTexts.push(getFormattedSelector(element)+" has "+element.getAttribute(primaryAlignmentDirection+"_anchor")+" "+
primaryAlignmentDirection+" alignment "+
(element.getAttribute(primaryAlignmentDirection+"_delta")!=null?"("+element.getAttribute(primaryAlignmentDirection+"_delta")+"px difference) ":"")+"with: "+
anchorString);}}});return formatBrowserName(browserName)+": "+diffTexts.join('<br /><br />');};return{setDiffElementsHighlight:function(highlight,selectedDiffGroup){selectedDiffGroup.getAll().each(highlightUsingClass.bind(this,highlight,"relativeGroupHighlight"));var diffDetailsText=[];diffDetailsText.push("Alignment Difference");diffDetailsText.push("");diffDetailsText.push(getAlignmentTexts(selectedDiffGroup.getPrimaryBrowserName(),selectedDiffGroup.getAllPrimary()));diffDetailsText.push("");selectedDiffGroup.getAllSecondaryGroups().each(function(pair){diffDetailsText.push(getAlignmentTexts(pair.key,pair.value));});return diffDetailsText;}};}();FloatWrapHighlighter=function(){return{setDiffElementsHighlight:function(highlight,selectedDiffGroup){selectedDiffGroup.getAll().each(highlightUsingClass.bind(this,highlight,"floatWrapHighlight"));var diffDetailsText=[];diffDetailsText.push("Float Wrap Difference");diffDetailsText.push("");selectedDiffGroup.getAllSecondaryGroups().each(function(pair){diffDetailsText.push(formatBrowserName(pair.key)+":",getElementSelectorStrings(pair.value));});return diffDetailsText;}};}();DOMDocumentHighlighter=function(){return{setDiffElementsHighlight:function(highlight,selectedDiffGroup){selectedDiffGroup.getAll().each(highlightUsingClass.bind(this,highlight,"floatWrapHighlight"));var diffDetailsText=[];diffDetailsText.push("DOM Documents Differed");diffDetailsText.push("");selectedDiffGroup.getAllSecondaryGroups().each(function(pair){diffDetailsText.push(formatBrowserName(pair.key)+":",getElementSelectorStrings(pair.value));});return diffDetailsText;}};}();highlightUsingClass=function(highlight,className,element){if(highlight==HIGHLIGHT_MODE.Highlight){element.addClassName(className);element.addClassName("highlight");}else if(highlight==HIGHLIGHT_MODE.Unhighlight){element.removeClassName(className);element.removeClassName("highlight");}};FloatWrapDifference=function(cd_id){var difference_id=cd_id;return{getDetailsText:function(){var selectedDiffGroup=new SelectedDiffGroup($$("div[cd_id='"+difference_id+"']")[0]);var diffDetailsText=[];var selectors=[];selectedDiffGroup.getAll().each(function(element){selectors.push(getFormattedSelector(element));});selectors=selectors.uniq();diffDetailsText.push(selectors.join(', ')+" misaligned in "+selectedDiffGroup.getAffectedBrowsers().join(', '));return diffDetailsText.join(', ');},show:function(){$$(".domDiffDiv div[cd_id='"+difference_id+"']").each(function(differenceDiv){differenceDiv.show();differenceDiv.up('.inner').addClassName("failLabel");});},hide:function(){$$(".domDiffDiv div[cd_id='"+difference_id+"']").each(function(differenceDiv){differenceDiv.hide();});}};};RelativePositionDifference=function(cd_id){var difference_id=cd_id;var isMisalignedElement=function(element){var directions=["horizontal","vertical"];for(var i=0;i<directions.length;i++){var direction=directions[i];if(element.getAttribute(direction+"_anchor")!=null){return true;}}
return false;};var getAlignmentTexts=function(browserName,elements){var diffTexts=[];var partitions=elements.partition(isMisalignedElement);var misaligned=partitions[0];var anchors=partitions[1];var anchorString=getElementSelectorStrings(anchors);misaligned.each(function(element){var directions=["horizontal","vertical"];for(var i=0;i<directions.length;i++){var primaryAlignmentDirection=directions[i];if(element.getAttribute(primaryAlignmentDirection+"_anchor")!=null){diffTexts.push(getFormattedSelector(element)+" has "+element.getAttribute(primaryAlignmentDirection+"_anchor")+" "+
primaryAlignmentDirection+" alignment "+
(element.getAttribute(primaryAlignmentDirection+"_delta")!=null?"("+element.getAttribute(primaryAlignmentDirection+"_delta")+"px difference) ":"")+"with: "+
anchorString);}}});return formatBrowserName(browserName)+": "+diffTexts.join('<br /><br />');};return{getDetailsText:function(){var selectedDiffGroup=new SelectedDiffGroup($$("div[cd_id='"+difference_id+"']")[0]);var diffDetailsText=[];var selectors=[];selectedDiffGroup.getAll().each(function(element){selectors.push(getFormattedSelector(element));});selectors=selectors.uniq();diffDetailsText.push(selectors.join(', ')+" misaligned in "+selectedDiffGroup.getAffectedBrowsers().join(', '));return diffDetailsText.join(", ");},show:function(){$$(".domDiffDiv div[cd_id='"+difference_id+"']").each(function(differenceDiv){differenceDiv.show();differenceDiv.up('.inner').addClassName("failLabel");});},hide:function(){$$(".domDiffDiv div[cd_id='"+difference_id+"']").each(function(differenceDiv){differenceDiv.hide();});}};};DOMDocumentDifference=function(cd_id){var difference_id=cd_id;$$(".domDiffDiv div[cd_id='"+difference_id+"']").each(function(differenceDiv){differenceDiv.observe('mouseover',function(event){event.stop();});differenceDiv.observe('mouseout',function(event){event.stop();});});return{getDetailsText:function(){var domDifference=$$("div[cd_id='"+difference_id+"']")[0];var selectedDiffGroup=new SelectedDiffGroup(domDifference);return selectedDiffGroup.getAffectedBrowsers().join(', ')+" contents differ; only "+(domDifference.readAttribute("matched_ratio")*100).toFixed(0)+"% of the elements were matched to the baseline browser";},show:function(){$$(".domDiffDiv div[cd_id='"+difference_id+"']").each(function(differenceDiv){differenceDiv.show();differenceDiv.up('.inner').addClassName("failLabel");});},hide:function(){$$(".domDiffDiv div[cd_id='"+difference_id+"']").each(function(differenceDiv){differenceDiv.hide();});}};};PositionDifference=function(){var diffClasses={"RelativePositioningComparison":RelativePositionDifference,"FloatWrapComparison":FloatWrapDifference,"DOMDocumentComparison":DOMDocumentDifference};return{initDifference:function(cd_id){var className=$$("div[cd_id='"+cd_id+"']")[0].readAttribute('comparison_class');return new diffClasses[className](cd_id);}};}();JavascriptErrors=function(){var allJavascriptErrors;var WARNING_IMAGE_TAG="<img src='/images/test_run/warning.png' />";var loadJavascriptErrorsFromJson=function(responseJSON){allJavascriptErrors=responseJSON;updateJavascriptErrorsList();};var updateJavascriptErrorsList=function(){if(allJavascriptErrors.length==0){$('javascriptErrorsTabOption').hide();tabs.first();}else{$('javascriptErrorsTabOption').show();var javascriptErrorHtml="";allJavascriptErrors.each(function(javascriptError){javascriptErrorHtml+="<li>"+WARNING_IMAGE_TAG+" "+javascriptError.browser_rendering.browser_type.to_browser_string+": "+
javascriptError.message.escapeHTML()+"</li>";});$('javascriptErrorList').update(javascriptErrorHtml);$('javascriptErrorsCount').update("("+allJavascriptErrors.length+")");}}
var getJavascriptErrors=function(){var webPageId=Report.getSelectedWebPageId();new Ajax.Request('/web_pages/'+webPageId+"/javascript_errors.json",{method:'get',onSuccess:function(transport){loadJavascriptErrorsFromJson(transport.responseJSON);}.bind(this),onFailure:function(transport){javascriptErrorsLoadingFailed();}.bind(this),onException:function(request,ex){javascriptErrorsLoadingFailed();}.bind(this),parameters:window.location.search.toQueryParams()});};var javascriptErrorsLoading=function(){$('javascriptErrorList').update('<li><img src="/images/test_run/small_spinner.gif" /> Loading...</li>');};var javascriptErrorsLoadingFailed=function(){$('javascriptErrorList').update('<li>JavaScript errors could not be retrieved, please try again later.</li>');};return{initialize:function(){javascriptErrorsLoading();getJavascriptErrors();},clear:function(){javascriptErrorsLoading();}}}();ScreenshotSizer=function(){var imageChange=false;var MAX_ZOOM_LEVEL=9;var MIN_ZOOM_LEVEL=0;var IMAGE_CHANGE_ZOOM_LEVEL=5;var zoomLevel=3;var imagesToLoad=0;var highResFeatureAvailable=false;var getImageWidth=function(){var imageWidths=[150,250,350,475,600,700,850,1000,1200,1500];return imageWidths[zoomLevel]+'px';}
var changeScreenshotSize=function(){$$('.diffThumbImage').each(function(image){if(imageChange){var src;if(zoomLevel==IMAGE_CHANGE_ZOOM_LEVEL){src=image.src.replace(/\.screenshot\.thumb\.jpg/,".screenshot.jpg");}else{src=image.src.replace(/\.screenshot\.jpg/,".screenshot.thumb.jpg");}
imagesToLoad++;image.src=src;}else{image.setStyle({width:getImageWidth()});resizeDomDiffOverlays(image);}});if(imagesToLoad>0){$('loadingModal').show();}
if(imagesToLoad<0){imagesToLoad=0;}
imageChange=false;};var zoomOut=function(){if(zoomLevel==MIN_ZOOM_LEVEL){return;}
zoomLevel--;changeScreenshotSize();};var zoomIn=function(){if(zoomLevel==MAX_ZOOM_LEVEL){return;}
zoomLevel++;imageChange=((zoomLevel==IMAGE_CHANGE_ZOOM_LEVEL)&&highResFeatureAvailable)?true:false;changeScreenshotSize();};return{initialize:function(){imageChange=true;changeScreenshotSize();},resize:function(){changeScreenshotSize();},imageThumbLoaded:function(image){$(image).setStyle({width:getImageWidth()});resizeDomDiffOverlays(image);imagesToLoad--;if(imagesToLoad==0){$('loadingModal').hide();}},zoomIn:function(){zoomIn();},zoomOut:function(){zoomOut();},setHighResFeatureAvailable:function(available){highResFeatureAvailable=available;}};}();window.dhtmlHistory={isIE:false,isOpera:false,isSafari:false,isKonquerer:false,isGecko:false,isSupported:false,create:function(options){var that=this;var UA=navigator.userAgent.toLowerCase();var platform=navigator.platform.toLowerCase();var vendor=navigator.vendor||"";if(vendor==="KDE"){this.isKonqueror=true;this.isSupported=false;}else if(typeof window.opera!=="undefined"){this.isOpera=true;this.isSupported=true;}else if(typeof document.all!=="undefined"){this.isIE=true;this.isSupported=true;}else if(vendor.indexOf("Apple Computer, Inc.")>-1){this.isSafari=true;this.isSupported=(platform.indexOf("mac")>-1);}else if(UA.indexOf("gecko")!=-1){this.isGecko=true;this.isSupported=true;}
window.historyStorage.setup(options);if(this.isSafari){this.createSafari();}else if(this.isOpera){this.createOpera();}
var initialHash=this.getCurrentLocation();this.currentLocation=initialHash;if(this.isIE){this.createIE(initialHash);}
var unloadHandler=function(){that.firstLoad=null;};this.addEventListener(window,'unload',unloadHandler);if(this.isIE){this.ignoreLocationChange=true;}else{if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.ignoreLocationChange=true;this.firstLoad=true;historyStorage.put(this.PAGELOADEDSTRING,true);}else{this.ignoreLocationChange=false;this.fireOnNewListener=true;}}
var locationHandler=function(){that.checkLocation();};setInterval(locationHandler,100);},initialize:function(){if(this.isIE){if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.fireOnNewListener=false;this.firstLoad=true;historyStorage.put(this.PAGELOADEDSTRING,true);}
else{this.fireOnNewListener=true;this.firstLoad=false;}}},addListener:function(listener){this.listener=listener;if(this.fireOnNewListener){this.fireHistoryEvent(this.currentLocation);this.fireOnNewListener=false;}},addEventListener:function(o,e,l){if(o.addEventListener){o.addEventListener(e,l,false);}else if(o.attachEvent){o.attachEvent('on'+e,function(){l(window.event);});}},add:function(newLocation,historyData){if(this.isSafari){newLocation=this.removeHash(newLocation);historyStorage.put(newLocation,historyData);this.currentLocation=newLocation;window.location.hash=newLocation;this.putSafariState(newLocation);}else{var that=this;var addImpl=function(){if(that.currentWaitTime>0){that.currentWaitTime=that.currentWaitTime-that.waitTime;}
newLocation=that.removeHash(newLocation);if(document.getElementById(newLocation)&&that.debugMode){var e="Exception: History locations can not have the same value as _any_ IDs that might be in the document,"
+" due to a bug in IE; please ask the developer to choose a history location that does not match any HTML"
+" IDs in this document. The following ID is already taken and cannot be a location: "+newLocation;throw new Error(e);}
historyStorage.put(newLocation,historyData);that.ignoreLocationChange=true;that.ieAtomicLocationChange=true;that.currentLocation=newLocation;window.location.hash=newLocation;if(that.isIE){that.iframe.src="/blank.html?"+newLocation;}
that.ieAtomicLocationChange=false;};window.setTimeout(addImpl,this.currentWaitTime);this.currentWaitTime=this.currentWaitTime+this.waitTime;}},isFirstLoad:function(){return this.firstLoad;},getVersion:function(){return"0.6";},getCurrentLocation:function(){var r=(this.isSafari?this.getSafariState():this.getCurrentHash());return r;},getCurrentHash:function(){var r=window.location.href;var i=r.indexOf("#");return(i>=0?r.substr(i+1):"");},PAGELOADEDSTRING:"DhtmlHistory_pageLoaded",listener:null,waitTime:200,currentWaitTime:0,currentLocation:null,iframe:null,safariHistoryStartPoint:null,safariStack:null,safariLength:null,ignoreLocationChange:null,fireOnNewListener:null,firstLoad:null,ieAtomicLocationChange:null,createIE:function(initialHash){this.waitTime=400;var styles=(historyStorage.debugMode?'width: 800px;height:80px;border:1px solid black;':historyStorage.hideStyles);var iframeID="rshHistoryFrame";var iframeHTML='<iframe frameborder="0" id="'+iframeID+'" style="'+styles+'" src="blank.html?'+initialHash+'"></iframe>';document.write(iframeHTML);this.iframe=document.getElementById(iframeID);},createOpera:function(){this.waitTime=400;var imgHTML='<img src="javascript:location.href=\'javascript:dhtmlHistory.checkLocation();\';" style="'+historyStorage.hideStyles+'" />';document.write(imgHTML);},createSafari:function(){var formID="rshSafariForm";var stackID="rshSafariStack";var lengthID="rshSafariLength";var formStyles=historyStorage.debugMode?historyStorage.showStyles:historyStorage.hideStyles;var inputStyles=(historyStorage.debugMode?'width:800px;height:20px;border:1px solid black;margin:0;padding:0;':historyStorage.hideStyles);var safariHTML='<form id="'+formID+'" style="'+formStyles+'">'
+'<input type="text" style="'+inputStyles+'" id="'+stackID+'" value="[]"/>'
+'<input type="text" style="'+inputStyles+'" id="'+lengthID+'" value=""/>'
+'</form>';document.write(safariHTML);this.safariStack=document.getElementById(stackID);this.safariLength=document.getElementById(lengthID);if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.safariHistoryStartPoint=history.length;this.safariLength.value=this.safariHistoryStartPoint;}else{this.safariHistoryStartPoint=this.safariLength.value;}},getSafariStack:function(){var r=this.safariStack.value;return historyStorage.fromJSON(r);},getSafariState:function(){var stack=this.getSafariStack();var state=stack[history.length-this.safariHistoryStartPoint-1];return state;},putSafariState:function(newLocation){var stack=this.getSafariStack();stack[history.length-this.safariHistoryStartPoint]=newLocation;this.safariStack.value=historyStorage.toJSON(stack);},fireHistoryEvent:function(newHash){var historyData=historyStorage.get(newHash);this.listener.call(null,newHash,historyData);},checkLocation:function(){if(!this.isIE&&this.ignoreLocationChange){this.ignoreLocationChange=false;return;}
if(!this.isIE&&this.ieAtomicLocationChange){return;}
var hash=this.getCurrentLocation();if(hash==this.currentLocation){return;}
this.ieAtomicLocationChange=true;if(this.isIE&&this.getIframeHash()!=hash){this.iframe.src="blank.html?"+hash;}
else if(this.isIE){return;}
this.currentLocation=hash;this.ieAtomicLocationChange=false;this.fireHistoryEvent(hash);},getIframeHash:function(){var doc=this.iframe.contentWindow.document;var hash=String(doc.location.search);if(hash.length==1&&hash.charAt(0)=="?"){hash="";}
else if(hash.length>=2&&hash.charAt(0)=="?"){hash=hash.substring(1);}
return hash;},removeHash:function(hashValue){var r;if(hashValue===null||hashValue===undefined){r=null;}
else if(hashValue===""){r="";}
else if(hashValue.length==1&&hashValue.charAt(0)=="#"){r="";}
else if(hashValue.length>1&&hashValue.charAt(0)=="#"){r=hashValue.substring(1);}
else{r=hashValue;}
return r;},iframeLoaded:function(newLocation){if(this.ignoreLocationChange){this.ignoreLocationChange=false;return;}
var hash=String(newLocation.search);if(hash.length==1&&hash.charAt(0)=="?"){hash="";}
else if(hash.length>=2&&hash.charAt(0)=="?"){hash=hash.substring(1);}
window.location.hash=hash;this.fireHistoryEvent(hash);}};window.historyStorage={setup:function(options){if(typeof options!=="undefined"){if(options.debugMode){this.debugMode=options.debugMode;}
if(options.toJSON){this.toJSON=options.toJSON;}
if(options.fromJSON){this.fromJSON=options.fromJSON;}}
var formID="rshStorageForm";var textareaID="rshStorageField";var formStyles=this.debugMode?historyStorage.showStyles:historyStorage.hideStyles;var textareaStyles=(historyStorage.debugMode?'width: 800px;height:80px;border:1px solid black;':historyStorage.hideStyles);var textareaHTML='<form id="'+formID+'" style="'+formStyles+'">'
+'<textarea id="'+textareaID+'" style="'+textareaStyles+'"></textarea>'
+'</form>';document.write(textareaHTML);this.storageField=document.getElementById(textareaID);if(typeof window.opera!=="undefined"){this.storageField.focus();}},put:function(key,value){this.assertValidKey(key);if(this.hasKey(key)){this.remove(key);}
this.storageHash[key]=value;this.saveHashTable();},get:function(key){this.assertValidKey(key);this.loadHashTable();var value=this.storageHash[key];if(value===undefined){value=null;}
return value;},remove:function(key){this.assertValidKey(key);this.loadHashTable();delete this.storageHash[key];this.saveHashTable();},reset:function(){this.storageField.value="";this.storageHash={};},hasKey:function(key){this.assertValidKey(key);this.loadHashTable();return(typeof this.storageHash[key]!=="undefined");},isValidKey:function(key){return(typeof key==="string");},showStyles:'border:0;margin:0;padding:0;',hideStyles:'left:-1000px;top:-1000px;width:1px;height:1px;border:0;position:absolute;',debugMode:false,storageHash:{},hashLoaded:false,storageField:null,assertValidKey:function(key){var isValid=this.isValidKey(key);if(!isValid&&this.debugMode){throw new Error("Please provide a valid key for window.historyStorage. Invalid key = "+key+".");}},loadHashTable:function(){if(!this.hashLoaded){var serializedHashTable=this.storageField.value;if(serializedHashTable!==""&&serializedHashTable!==null){this.storageHash=this.fromJSON(serializedHashTable);this.hashLoaded=true;}}},saveHashTable:function(){this.loadHashTable();var serializedHashTable=this.toJSON(this.storageHash);this.storageField.value=serializedHashTable;},toJSON:function(o){return o.toJSONString();},fromJSON:function(s){return s.parseJSON();}};var loadingImage='/images/application/loading_spinner2.gif';var closeButton='/images/application/close.gif';function getPageScroll(){var yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;}else if(document.body){yScroll=document.body.scrollTop;}
arrayPageScroll=new Array('',yScroll)
return arrayPageScroll;}
function getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=document.body.scrollWidth;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
var windowWidth,windowHeight;if(self.innerHeight){windowWidth=self.innerWidth;windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=windowWidth;}else{pageWidth=xScroll;}
arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight)
return arrayPageSize;}
function pause(numberMillis){var now=new Date();var exitTime=now.getTime()+numberMillis;while(true){now=new Date();if(now.getTime()>exitTime)
return;}}
function getKey(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;}
key=String.fromCharCode(keycode).toLowerCase();if(key=='x'){hideLightbox();}}
function listenKey(){document.onkeypress=getKey;}
function showLightbox(objLink)
{var objOverlay=document.getElementById('overlay');var objLightbox=document.getElementById('lightbox');var objCaption=document.getElementById('lightboxCaption');var objImage=document.getElementById('lightboxImage');var objLoadingImage=document.getElementById('loadingImage');var objLightboxDetails=document.getElementById('lightboxDetails');var arrayPageSize=getPageSize();var arrayPageScroll=getPageScroll();if(objLoadingImage){objLoadingImage.style.top=(arrayPageScroll[1]+((arrayPageSize[3]-35-objLoadingImage.height)/2)+'px');objLoadingImage.style.left=(((arrayPageSize[0]-20-objLoadingImage.width)/2)+'px');objLoadingImage.style.display='block';}
objOverlay.style.height=(arrayPageSize[1]+'px');objOverlay.style.display='block';imgPreload=new Image();imgPreload.onload=function(){objImage.src=objLink.href;var lightboxTop=arrayPageScroll[1]+((arrayPageSize[3]-35-imgPreload.height)/2);var lightboxLeft=((arrayPageSize[0]-20-imgPreload.width)/2);objLightbox.style.top=(lightboxTop<0)?"0px":lightboxTop+"px";objLightbox.style.left=(lightboxLeft<0)?"0px":lightboxLeft+"px";objLightboxDetails.style.width=imgPreload.width+'px';if(objLink.getAttribute('title')){objCaption.style.display='block';objCaption.innerHTML=objLink.getAttribute('title');}else{objCaption.style.display='none';}
if(navigator.appVersion.indexOf("MSIE")!=-1){pause(250);}
if(objLoadingImage){objLoadingImage.style.display='none';}
objLightbox.style.display='block';arrayPageSize=getPageSize();objOverlay.style.height=(arrayPageSize[1]+'px');listenKey();return false;}
imgPreload.src=objLink.href;}
function hideLightbox()
{objOverlay=document.getElementById('overlay');objLightbox=document.getElementById('lightbox');objOverlay.style.display='none';objLightbox.style.display='none';document.onkeypress='';}
function initLightbox()
{if(!document.getElementsByTagName){return;}
var anchors=document.getElementsByTagName("a");for(var i=0;i<anchors.length;i++){var anchor=anchors[i];if($(anchor).readAttribute("href")&&(anchor.getAttribute("rel")=="lightbox")){anchor.onclick=function(){showLightbox(this);return false;}}}
var objBody=document.getElementsByTagName("body").item(0);var objOverlay=document.createElement("div");objOverlay.setAttribute('id','overlay');objOverlay.onclick=function(){hideLightbox();return false;}
objOverlay.style.display='none';objOverlay.style.position='absolute';objOverlay.style.top='0';objOverlay.style.left='0';objOverlay.style.zIndex='900';objOverlay.style.width='100%';objBody.insertBefore(objOverlay,objBody.firstChild);var arrayPageSize=getPageSize();var arrayPageScroll=getPageScroll();var imgPreloader=new Image();imgPreloader.onload=function(){var objLoadingImageLink=document.createElement("a");objLoadingImageLink.setAttribute('href','#');objLoadingImageLink.onclick=function(){hideLightbox();return false;}
objOverlay.appendChild(objLoadingImageLink);var objLoadingImage=document.createElement("img");objLoadingImage.src=loadingImage;objLoadingImage.setAttribute('id','loadingImage');objLoadingImage.style.position='absolute';objLoadingImage.style.zIndex='1500';objLoadingImageLink.appendChild(objLoadingImage);imgPreloader.onload=function(){};return false;}
imgPreloader.src=loadingImage;var objLightbox=document.createElement("div");objLightbox.setAttribute('id','lightbox');objLightbox.style.display='none';objLightbox.style.position='absolute';objLightbox.style.zIndex='1000';objBody.insertBefore(objLightbox,objOverlay.nextSibling);var objLink=document.createElement("a");objLink.setAttribute('href','#');objLink.setAttribute('title','Click to close');objLink.onclick=function(){hideLightbox();return false;}
objLightbox.appendChild(objLink);var imgPreloadCloseButton=new Image();imgPreloadCloseButton.onload=function(){var objCloseButton=document.createElement("img");objCloseButton.src=closeButton;objCloseButton.setAttribute('id','closeButton');objCloseButton.style.position='absolute';objCloseButton.style.zIndex='2000';objLink.appendChild(objCloseButton);return false;}
imgPreloadCloseButton.src=closeButton;var objImage=document.createElement("img");objImage.setAttribute('id','lightboxImage');objLink.appendChild(objImage);var objLightboxDetails=document.createElement("div");objLightboxDetails.setAttribute('id','lightboxDetails');objLightbox.appendChild(objLightboxDetails);var objCaption=document.createElement("div");objCaption.setAttribute('id','lightboxCaption');objCaption.style.display='none';objLightboxDetails.appendChild(objCaption);var objKeyboardMsg=document.createElement("div");objKeyboardMsg.setAttribute('id','keyboardMsg');objKeyboardMsg.innerHTML='press <kbd>x</kbd> to close';objLightboxDetails.appendChild(objKeyboardMsg);}
function addLoadEvent(func)
{var oldonload=window.onload;if(typeof window.onload!='function'){window.onload=func;}else{window.onload=function(){oldonload();func();}}}
addLoadEvent(initLightbox);var detect=navigator.userAgent.toLowerCase();var OS,browser,version,total,thestring;function getBrowserInfo(){if(checkIt('konqueror')){browser="Konqueror";OS="Linux";}
else if(checkIt('safari'))browser="Safari"
else if(checkIt('omniweb'))browser="OmniWeb"
else if(checkIt('opera'))browser="Opera"
else if(checkIt('webtv'))browser="WebTV";else if(checkIt('icab'))browser="iCab"
else if(checkIt('msie'))browser="Internet Explorer"
else if(!checkIt('compatible')){browser="Netscape Navigator"
version=detect.charAt(8);}
else browser="An unknown browser";if(!version)version=detect.charAt(place+thestring.length);if(!OS){if(checkIt('linux'))OS="Linux";else if(checkIt('x11'))OS="Unix";else if(checkIt('mac'))OS="Mac"
else if(checkIt('win'))OS="Windows"
else OS="an unknown operating system";}}
function checkIt(string){place=detect.indexOf(string)+1;thestring=string;return place;}
Event.observe(window,'load',lbInitialize,false);Event.observe(window,'load',getBrowserInfo,false);var lightbox=Class.create();lightbox.prototype={yPos:0,xPos:0,initialize:function(ctrl){this.content=ctrl.href;Event.observe(ctrl,'click',this.activate.bindAsEventListener(this),false);ctrl.onclick=function(){return false;};},activate:function(){if(browser=='Internet Explorer'){this.getScroll();this.prepareIE('100%','hidden');this.setScroll(0,0);this.hideSelects('hidden');}
this.displayLightbox("block");},prepareIE:function(height,overflow){var bod=document.getElementsByTagName('body')[0];bod.style.height=height;bod.style.overflow=overflow;htm=document.getElementsByTagName('html')[0];htm.style.height=height;htm.style.overflow=overflow;},hideSelects:function(visibility){selects=document.getElementsByTagName('select');for(i=0;i<selects.length;i++){selects[i].style.visibility=visibility;}},getScroll:function(){if(self.pageYOffset){this.yPos=self.pageYOffset;}else if(document.documentElement&&document.documentElement.scrollTop){this.yPos=document.documentElement.scrollTop;}else if(document.body){this.yPos=document.body.scrollTop;}},setScroll:function(x,y){window.scrollTo(x,y);},displayLightbox:function(display){$('lbgwOverlay').style.display=display;$('lbgwLightbox').style.display=display;if(display!='none')this.loadInfo();},loadInfo:function(){var myAjax=new Ajax.Request(this.content,{method:'get',parameters:"",onComplete:this.processInfo.bindAsEventListener(this)});},processInfo:function(response){info="<div id='lbContent'>"+response.responseText+"</div>";new Insertion.Before($('lbLoadMessage'),info)
$('lbgwLightbox').className="done";this.actions();},actions:function(){lbActions=document.getElementsByClassName('lbAction');for(i=0;i<lbActions.length;i++){Event.observe(lbActions[i],'click',this[lbActions[i].rel].bindAsEventListener(this),false);lbActions[i].onclick=function(){return false;};}},insert:function(e){link=Event.element(e).parentNode;Element.remove($('lbContent'));var myAjax=new Ajax.Request(link.href,{method:'post',parameters:"",onComplete:this.processInfo.bindAsEventListener(this)});},deactivate:function(){Element.remove($('lbContent'));if(browser=="Internet Explorer"){this.setScroll(0,this.yPos);this.prepareIE("auto","auto");this.hideSelects("visible");}
this.displayLightbox("none");}}
function lbInitialize(){addLightboxMarkup();lbox=document.getElementsByClassName('lbOn');for(i=0;i<lbox.length;i++){valid=new lightbox(lbox[i]);}}
function addLightboxMarkup(){var bod=document.getElementsByTagName('body')[0];var lbgwOverlay=document.createElement('div');lbgwOverlay.id='lbgwOverlay';lb=document.createElement('div');lb.id='lbgwLightbox';lb.className='loading';lb.innerHTML='<div id="lbLoadMessage">'+'<p>Loading...</p>'+'</div>';bod.appendChild(lbgwOverlay);bod.appendChild(lb);}
if(typeof(Control)=='undefined')
Control={};var $proc=function(proc){return typeof(proc)=='function'?proc:function(){return proc};};var $value=function(value){return typeof(value)=='function'?value():value;};Object.Event={extend:function(object){object._objectEventSetup=function(event_name){this._observers=this._observers||{};this._observers[event_name]=this._observers[event_name]||[];};object.observe=function(event_name,observer){if(typeof(event_name)=='string'&&typeof(observer)!='undefined'){this._objectEventSetup(event_name);if(!this._observers[event_name].include(observer))
this._observers[event_name].push(observer);}else
for(var e in event_name)
this.observe(e,event_name[e]);};object.stopObserving=function(event_name,observer){this._objectEventSetup(event_name);if(event_name&&observer)
this._observers[event_name]=this._observers[event_name].without(observer);else if(event_name)
this._observers[event_name]=[];else
this._observers={};};object.observeOnce=function(event_name,outer_observer){var inner_observer=function(){outer_observer.apply(this,arguments);this.stopObserving(event_name,inner_observer);}.bind(this);this._objectEventSetup(event_name);this._observers[event_name].push(inner_observer);};object.notify=function(event_name){this._objectEventSetup(event_name);var collected_return_values=[];var args=$A(arguments).slice(1);try{for(var i=0;i<this._observers[event_name].length;++i)
collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args)||null);}catch(e){if(e==$break)
return false;else
throw e;}
return collected_return_values;};if(object.prototype){object.prototype._objectEventSetup=object._objectEventSetup;object.prototype.observe=object.observe;object.prototype.stopObserving=object.stopObserving;object.prototype.observeOnce=object.observeOnce;object.prototype.notify=function(event_name){if(object.notify){var args=$A(arguments).slice(1);args.unshift(this);args.unshift(event_name);object.notify.apply(object,args);}
this._objectEventSetup(event_name);var args=$A(arguments).slice(1);var collected_return_values=[];try{if(this.options&&this.options[event_name]&&typeof(this.options[event_name])=='function')
collected_return_values.push(this.options[event_name].apply(this,args)||null);for(var i=0;i<this._observers[event_name].length;++i)
collected_return_values.push(this._observers[event_name][i].apply(this._observers[event_name][i],args)||null);}catch(e){if(e==$break)
return false;else
throw e;}
return collected_return_values;};}}};Element.addMethods({observeOnce:function(element,event_name,outer_callback){var inner_callback=function(){outer_callback.apply(this,arguments);Element.stopObserving(element,event_name,inner_callback);};Element.observe(element,event_name,inner_callback);}});Object.extend(Event,(function(){var cache=Event.cache;function getEventID(element){if(element._prototypeEventID)return element._prototypeEventID[0];arguments.callee.id=arguments.callee.id||1;return element._prototypeEventID=[++arguments.callee.id];}
function getDOMEventName(eventName){if(eventName&&eventName.include(':'))return"dataavailable";if(!Prototype.Browser.IE){eventName={mouseenter:'mouseover',mouseleave:'mouseout'}[eventName]||eventName;}
return eventName;}
function getCacheForID(id){return cache[id]=cache[id]||{};}
function getWrappersForEventName(id,eventName){var c=getCacheForID(id);return c[eventName]=c[eventName]||[];}
function createWrapper(element,eventName,handler){var id=getEventID(element);var c=getWrappersForEventName(id,eventName);if(c.pluck("handler").include(handler))return false;var wrapper=function(event){if(!Event||!Event.extend||(event.eventName&&event.eventName!=eventName))
return false;Event.extend(event);handler.call(element,event);};if(!(Prototype.Browser.IE)&&['mouseenter','mouseleave'].include(eventName)){wrapper=wrapper.wrap(function(proceed,event){var rel=event.relatedTarget;var cur=event.currentTarget;if(rel&&rel.nodeType==Node.TEXT_NODE)
rel=rel.parentNode;if(rel&&rel!=cur&&!rel.descendantOf(cur))
return proceed(event);});}
wrapper.handler=handler;c.push(wrapper);return wrapper;}
function findWrapper(id,eventName,handler){var c=getWrappersForEventName(id,eventName);return c.find(function(wrapper){return wrapper.handler==handler});}
function destroyWrapper(id,eventName,handler){var c=getCacheForID(id);if(!c[eventName])return false;c[eventName]=c[eventName].without(findWrapper(id,eventName,handler));}
function destroyCache(){for(var id in cache)
for(var eventName in cache[id])
cache[id][eventName]=null;}
if(window.attachEvent){window.attachEvent("onunload",destroyCache);}
return{observe:function(element,eventName,handler){element=$(element);var name=getDOMEventName(eventName);var wrapper=createWrapper(element,eventName,handler);if(!wrapper)return element;if(element.addEventListener){element.addEventListener(name,wrapper,false);}else{element.attachEvent("on"+name,wrapper);}
return element;},stopObserving:function(element,eventName,handler){element=$(element);var id=getEventID(element),name=getDOMEventName(eventName);if(!handler&&eventName){getWrappersForEventName(id,eventName).each(function(wrapper){element.stopObserving(eventName,wrapper.handler);});return element;}else if(!eventName){Object.keys(getCacheForID(id)).each(function(eventName){element.stopObserving(eventName);});return element;}
var wrapper=findWrapper(id,eventName,handler);if(!wrapper)return element;if(element.removeEventListener){element.removeEventListener(name,wrapper,false);}else{element.detachEvent("on"+name,wrapper);}
destroyWrapper(id,eventName,handler);return element;},fire:function(element,eventName,memo){element=$(element);if(element==document&&document.createEvent&&!element.dispatchEvent)
element=document.documentElement;var event;if(document.createEvent){event=document.createEvent("HTMLEvents");event.initEvent("dataavailable",true,true);}else{event=document.createEventObject();event.eventType="ondataavailable";}
event.eventName=eventName;event.memo=memo||{};if(document.createEvent){element.dispatchEvent(event);}else{element.fireEvent(event.eventType,event);}
return Event.extend(event);}};})());Object.extend(Event,Event.Methods);Element.addMethods({fire:Event.fire,observe:Event.observe,stopObserving:Event.stopObserving});Object.extend(document,{fire:Element.Methods.fire.methodize(),observe:Element.Methods.observe.methodize(),stopObserving:Element.Methods.stopObserving.methodize()});(function(){function wheel(event){var delta;if(event.wheelDelta)
delta=event.wheelDelta/120;else if(event.detail)
delta=-event.detail/3;if(!delta)
return;var custom_event=Event.element(event).fire('mouse:wheel',{delta:delta});if(custom_event.stopped){Event.stop(event);return false;}}
document.observe('mousewheel',wheel);document.observe('DOMMouseScroll',wheel);})();var IframeShim=Class.create({initialize:function(){this.element=new Element('iframe',{style:'position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);display:none',src:'javascript:void(0);',frameborder:0});$(document.body).insert(this.element);},hide:function(){this.element.hide();return this;},show:function(){this.element.show();return this;},positionUnder:function(element){var element=$(element);var offset=element.cumulativeOffset();var dimensions=element.getDimensions();this.element.setStyle({left:offset[0]+'px',top:offset[1]+'px',width:dimensions.width+'px',height:dimensions.height+'px',zIndex:element.getStyle('zIndex')-1}).show();return this;},setBounds:function(bounds){for(prop in bounds)
bounds[prop]+='px';this.element.setStyle(bounds);return this;},destroy:function(){if(this.element)
this.element.remove();return this;}});if(typeof(Prototype)=="undefined"){throw"Control.Tabs requires Prototype to be loaded.";}
if(typeof(Object.Event)=="undefined"){throw"Control.Tabs requires Object.Event to be loaded.";}
Control.Tabs=Class.create({initialize:function(tab_list_container,options){if(!$(tab_list_container)){throw"Control.Tabs could not find the element: "+tab_list_container;}
this.activeContainer=false;this.activeLink=false;this.containers=$H({});this.links=[];Control.Tabs.instances.push(this);this.options={beforeChange:Prototype.emptyFunction,afterChange:Prototype.emptyFunction,hover:false,linkSelector:'li a',setClassOnContainer:false,activeClassName:'active',defaultTab:'first',autoLinkExternal:true,targetRegExp:/#(.+)$/,showFunction:Element.show,hideFunction:Element.hide};Object.extend(this.options,options||{});(typeof(this.options.linkSelector=='string')?$(tab_list_container).select(this.options.linkSelector):this.options.linkSelector($(tab_list_container))).findAll(function(link){return(/^#/).exec((Prototype.Browser.WebKit?decodeURIComponent(link.href):link.href).replace(window.location.href.split('#')[0],''));}).each(function(link){this.addTab(link);}.bind(this));this.containers.values().each(Element.hide);if(this.options.defaultTab=='first'){this.setActiveTab(this.links.first());}else if(this.options.defaultTab=='last'){this.setActiveTab(this.links.last());}else{this.setActiveTab(this.options.defaultTab);}
var targets=this.options.targetRegExp.exec(window.location);if(targets&&targets[1]){targets[1].split(',').each(function(target){this.setActiveTab(this.links.find(function(link){return link.key==target;}));}.bind(this));}
if(this.options.autoLinkExternal){$A(document.getElementsByTagName('a')).each(function(a){if(!this.links.include(a)){var clean_href=a.href.replace(window.location.href.split('#')[0],'');if(clean_href.substring(0,1)=='#'){if(this.containers.keys().include(clean_href.substring(1))){$(a).observe('click',function(event,clean_href){this.setActiveTab(clean_href.substring(1));}.bindAsEventListener(this,clean_href));}}}}.bind(this));}},addTab:function(link){this.links.push(link);link.key=link.getAttribute('href').replace(window.location.href.split('#')[0],'').split('#').last().replace(/#/,'');var container=$(link.key);if(!container){throw"Control.Tabs: #"+link.key+" was not found on the page.";}
this.containers.set(link.key,container);link[this.options.hover?'onmouseover':'onclick']=function(link){if(window.event){Event.stop(window.event);}
this.setActiveTab(link);return false;}.bind(this,link);},setActiveTab:function(link){if(!link&&typeof(link)=='undefined'){return;}
if(typeof(link)=='string'){this.setActiveTab(this.links.find(function(_link){return _link.key==link;}));}else if(typeof(link)=='number'){this.setActiveTab(this.links[link]);}else{if(this.notify('beforeChange',this.activeContainer,this.containers.get(link.key))===false){return;}
if(this.activeContainer){this.options.hideFunction(this.activeContainer);}
this.links.each(function(item){(this.options.setClassOnContainer?$(item.parentNode):item).removeClassName(this.options.activeClassName);}.bind(this));(this.options.setClassOnContainer?$(link.parentNode):link).addClassName(this.options.activeClassName);this.activeContainer=this.containers.get(link.key);this.activeLink=link;this.options.showFunction(this.containers.get(link.key));this.notify('afterChange',this.containers.get(link.key));}},next:function(){this.links.each(function(link,i){if(this.activeLink==link&&this.links[i+1]){this.setActiveTab(this.links[i+1]);throw $break;}}.bind(this));},previous:function(){this.links.each(function(link,i){if(this.activeLink==link&&this.links[i-1]){this.setActiveTab(this.links[i-1]);throw $break;}}.bind(this));},first:function(){this.setActiveTab(this.links.first());},last:function(){this.setActiveTab(this.links.last());}});Object.extend(Control.Tabs,{instances:[],findByTabId:function(id){return Control.Tabs.instances.find(function(tab){return tab.links.find(function(link){return link.key==id;});});}});Object.Event.extend(Control.Tabs);SortableTable=function(table){var me=this;this.table=table;this.rows=$A(table.rows).map(function(r){return $(r)});this.headerRow=this.rows.shift();this.headers=Selector.findChildElements(this.headerRow,['th']);this.headers.each(function(th){var span=$(document.createElement('span'));$A(th.childNodes).each(function(c){span.appendChild(c);});th.appendChild(span);span.onclick=function(){me.sortOnColumn(th,span)}});}
SortableTable.find=function(){$$('table.sortable').each(function(table){new SortableTable(table)})}
SortableTable.prototype.simpleCompare=function(a,b){return a<b?-1:a==b?0:1;};SortableTable.prototype.compareComposer=function(normalizeFn){var me=this;return function(a,b){return me.simpleCompare(normalizeFn(a),normalizeFn(b))}}
SortableTable.prototype.compareFunction=function(sType){switch(sType){case"caseSensitive":return this.simpleCompare;case"integer":return this.compareComposer(function(a){return parseInt(a.replace(/^.*?(\d+).*$/,"$1"))});case"float":return this.compareComposer(function(a){return parseFloat(a.replace(/^.*?([\d\.]+).*$/,"$1"))});case"date":return this.compareComposer(Date.parse)
default:return this.compareComposer(function(a){return a.toLowerCase();});}}
SortableTable.prototype.sortOnColumn=function(th,span){var pos=$A(this.headerRow.cells).indexOf(th);var sortFn=this.compareFunction(th.getAttribute('sort'));span.order=span.order||1;this.rows.sort(function(rowA,rowB){return span.order*sortFn(rowA.getCellText(pos),rowB.getCellText(pos));});span.order*=-1;var alt=0;var tbody=this.table.tBodies[0];this.rows.each(function(row){if((alt+=1)%2){if(!row.hasClassName('alt')){row.addClassName('alt')}}else{row.removeClassName('alt');}
tbody.appendChild(row);});}
SortableTable.prototype.sortOnAttribute=function(attr,type,direction){var sortFn=this.compareFunction(type);direction=direction||1;this.rows.sort(function(rowA,rowB){return direction*sortFn(rowA.readAttribute(attr),rowB.readAttribute(attr));});var alt=0;var tbody=this.table.tBodies[0];this.rows.each(function(row){if((alt+=1)%2){if(!row.hasClassName('alt')){row.addClassName('alt')}}else{row.removeClassName('alt');}
tbody.appendChild(row);});}
Element.addMethods({getText:function(e){return e.text=e.text||e.textContent||e.innerText||''},getCellText:function(row,pos){row.cellTexts=row.cellTexts||[];row.cellTexts[pos]=row.cellTexts[pos]||row.down("td",pos).getText();return row.cellTexts[pos];}});Event.observe(window,'load',SortableTable.find,false);