function check(){var c=$F("urlll");var b="retrieve.php";var d="url="+c;if(!isUrl(c)){$("aj_results").innerHTML=c+" is not a valid url!<br /> Please, retype correctly the address...<br />Example: http://www.google.it"}else{var a=new Ajax.Request(b,{onCreate:showLoading,method:"get",parameters:d+"&css=true",onComplete:appendCSS})}}function isUrl(a){var b=/(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;return b.test(a)}function showLoading(){clearCss();$("aj_results").innerHTML='<br /><br /><img src="img/loading.gif" /><br /><br /> RETRIEVING DATA...'}function clearCss(){var b=document.getElementsByTagName("style");var a;for(i=0;i<b.length;i++){a=document.getElementsByTagName("style")[i];while(a.firstChild){a.removeChild(a.firstChild)}}}function appendCSS(c){var b=c.responseText;if(b=="unr"){$("aj_results").innerHTML="<div class='warning'> Url is  not reachable.<br /> Are you sure you type it correctly?</div>"}else{head=document.getElementsByTagName("head");if(head.length>0){var a=document.createElement("style");a.setAttribute("type","text/css");a.setAttribute("media","all");if(a.styleSheet){a.styleSheet.cssText=b}else{a.appendChild(document.createTextNode(b))}head[0].appendChild(a)}checkNodes()}}function checkNodes(){var b=$F("urlll");var a="retrieve.php";var c="url="+b;var d=new Ajax.Request(a,{method:"get",parameters:c,onComplete:showData})}function showData(a){if(a.responseText){$("external").innerHTML=a.responseText;var b=$("external").descendants();showReport(b)}else{$("aj_results").innerHTML="<div class='warning'>An error occured parsing your page.<br />Please, report it to info@checkmycolours.com</div>"}}function showReport(f){var d='<div id=\'tabletop\'><div id=\'tabledown\'><div id=\'tableresult\'><table id="tresult"><thead class=\'thedef\'><tr class="desc"><th class="thdef">Node</th><th class="thdef">Foreground</th><th class="thdef">Background</th><th class="thdef">Sample</th><th class="thdef">Contrast Ratio</th><th class="thdef">Brightness difference</th><th class="thdef">Color difference</th></tr></thead><tbody class=\'tbdef\'>';var g=0,b=0,a=0;for(i=0;i<f.length;i++){var c=RGB2Hex(f[i].getStyle("color"));var e=getBg(f[i]);if(isValid(c,e)){d+="<tr class='validrow'"}else{if(brDiff(c,e)<125){b++}if(colDiff(c,e)<500){a++}if(lumRatio(c,e)<4.5){g++}d+="<tr class='errorsrow'"}d+=" id='row"+i+"' onClick=\"pickerBOX($('cpicker').innerHTML,'460','"+c+"','"+e+"','"+i+"','"+escape(displayFullPath(f[i]))+"'); return false;\"><td class='node_desc'> <span class='ident'>"+"<img src='img/dot.jpg' />&nbsp;".times(f[i].ancestors().length-4)+"</span>&nbsp;<span id='elem"+i+"'>"+displayNode(f[i])+"</span></td><td class='hex' id='fgelem"+i+"'>"+c+"</td><td class='hex' id='bgelem"+i+"'>"+e+getSample(c,e)+displayLumRatio(c,e)+displayBrDiff(c,e)+displayColDiff(c,e)+"</tr>"}d+="</tbody></table></div></div></div>";summary="<div id='summary'> Testing done on "+f.length+" elements</div>";if(g==0&&b==0&&a==0){summary+="<div id='summary_warn'> Congratulations!<br /> All the elements pass the test!<br /></div>"}else{summary+="<div id='summary_warn'>Luminosity Contrast Ratio: <i>"+g+" failures </i><br />";summary+="Brightness difference: <i>"+b+" failures</i><br />";summary+="Color difference: <i>"+a+" failures</i></div>"}if(BrowserDetect.browser=="Explorer"&&BrowserDetect.version<8){summary+="<div id='summary_browser'> WARNING: It seems you're using an old version of Internet Explorer. Some results may be incorrect.<br />";summary+="It is <b>highly recommended</b> to download the latest version of your browser...</div>"}summary+="<br /><div id='tablechoice'><a href='#' id='achoice' class='active' onclick='doClick(this);showRows(1,1,1);return false;'> full report </a><a href='#' onclick='doClick(this);showRows(0,0,1);return false;'> only errors </a> <div id='tableadvice'>Click on the rows to test other colours</div></div>";d=summary+d;$("aj_results").innerHTML=d;actlink=$("achoice")}function getBg(c){var b=c;var a=RGB2Hex(b.getStyle("backgroundColor"));while(a=="not set"&&b.parentNode){b=b.parentNode;a=RGB2Hex(b.getStyle("backgroundColor"))}return a}function showDesc(){$S("linkdescmore").display="none";$S("descmore").display="block"}function showNews(){$S("linknewsmore").display="none";$S("newsmore").display="block"}function doClick(a){a.className="active";if(actlink!=undefined&&a!=actlink){actlink.className="off"}actlink=a}function showRows(c,e,a){var b=$$("tr.validrow");var d=$$("tr.errrow");c?displayRows(b):hideRows(b);a?displayRows(d):hideRows(d)}function displayRows(a){for(i=0;i<a.length;i++){try{$S(a[i]).display="table-row"}catch(b){$S(a[i]).display="block"}}}function hideRows(a){for(i=0;i<a.length;i++){$S(a[i]).display="none"}}function displayNode(a){var b=a.nodeName;if(a.id){if(a.id=="extbody"){b="BODY"}else{shortid=(a.id.length>25)?(a.id.substr(0,25)+"..."):a.id;b+="&nbsp; id='"+shortid+"'"}}if(a.className){shortclass=(a.className.length>25)?(a.className.substr(0,25)+"..."):a.className;b+="&nbsp; class='"+shortclass+"'"}return b}function displayFullPath(a){var b=a.ancestors().reverse();var c="";for(j=4;j<b.length;j++){c+=displayNode(b[j])+"&nbsp;>&nbsp;"}c+=displayNode(a);return c}function RGB2Hex(d){if(is6Hex(d)){return d}else{if(is3Hex(d)){b="#"+(cutHex(d)).substring(0,1).times(2)+(cutHex(d)).substring(1,2).times(2)+(cutHex(d)).substring(2).times(2);return b}else{if(d!="transparent"&&d!="rgba(0, 0, 0, 0)"){var c=d.match(/\d+/g);var b="#";for(var a=0;a<c.length;a++){b+=toHex(c[a])}return b}else{return"not set"}}}}function toHex(a){if(a==null){return"00"}a=parseInt(a);if(a==0||isNaN(a)){return"00"}a=Math.max(0,a);a=Math.min(a,255);a=Math.round(a);return"0123456789ABCDEF".charAt((a-a%16)/16)+"0123456789ABCDEF".charAt(a%16)}function is3Hex(b){var a=/^#([0-9a-f]{1}){3}$/i;return a.test(b)}function is6Hex(b){var a=/^#([0-9a-f]{2}){3}$/i;return a.test(b)}function hex2R(a){return parseInt((cutHex(a)).substring(0,2),16)}function hex2G(a){return parseInt((cutHex(a)).substring(2,4),16)}function hex2B(a){return parseInt((cutHex(a)).substring(4,6),16)}function cutHex(a){return(a.charAt(0)=="#")?a.substring(1,7):a}function getSample(a,b){if(b!="not set"){str="<td class='sample' style=\"background-color:"+b+"; color:"+a+';"> Sample Text</td>';return str}else{str="<td class='sample'> &nbsp; </td>";return str}}function brDiff(a,c){if(c!="not set"){var d=((hex2R(a)*299)+(hex2G(a)*587)+(hex2B(a)*114))/1000;var f=((hex2R(c)*299)+(hex2G(c)*587)+(hex2B(c)*114))/1000;var b;var e;if(f>d){b=parseInt(f-d,10)}else{b=parseInt(d-f,10)}return b}else{return"n/a"}}function displayBrDiff(a,c){var b=brDiff(a,c);if(b=="n/a"){return"<td class='warning'>n/a</td>"}else{if(b>125){BrightResult="<td class='pass'>"+b+"</td>";return BrightResult}else{BrightResult="<td class='failed'>"+b+"</td>";return BrightResult}}}function colDiff(a,b){if(b!="not set"){var c=Math.abs(hex2R(b)-hex2R(a))+Math.abs(hex2G(b)-hex2G(a))+Math.abs(hex2B(b)-hex2B(a));return c}else{return"n/a"}}function displayColDiff(a,c){var d=colDiff(a,c);var b;if(d=="n/a"){return"<td class='warning'>n/a</td>"}else{if(d>500){b="<td class='pass'>"+d+"</td>";return b}else{b="<td class='failed'>"+d+"</td>";return b}}}function getLuminosity(e){var g=hex2R(e)/255;var f=hex2G(e)/255;var h=hex2B(e)/255;var c,b,d,a;if(g<=0.03928){c=g/12.92}else{c=Math.pow(((g+0.055)/1.055),2.4)}if(f<=0.03928){b=f/12.92}else{b=Math.pow(((f+0.055)/1.055),2.4)}if(h<=0.03928){d=h/12.92}else{d=Math.pow(((h+0.055)/1.055),2.4)}a=(0.2126*c+0.7152*b+0.0722*d);return a}function lumRatio(a,e){if(e!="not set"){var g,d,c,b,f;g=getLuminosity(a);d=getLuminosity(e);if(g>d){c=g;b=d}else{c=d;b=g}f=(c+0.05)/(b+0.05);f=Math.round(f*100)/100;return f}else{return"n/a"}}function displayLumRatio(b,c){var d=lumRatio(b,c);var a;if(d=="n/a"){return"<td class='warning'>n/a</td>"}if(d<4.5){a="<td class='failed'>"+d+":1</td>";return a}if(d<7){a="<td class='pass'>"+d+":1<br />AA</td>";return a}else{a="<td class='pass'>"+d+":1<br />AAA</td>";return a}}function isValid(a,b){return((brDiff(a,b)>125)&&(colDiff(a,b)>500)&&lumRatio(a,b)>4.5)}function HSVupdate(b){b=color.HSV_HEX(HSV=b?b:slideHSV);$("plugHEX").innerHTML=b;$S("plugCUR").background="#"+b;var a=document.getElementsByName("pchoice");if(a[0].checked){$("pbg").value="#"+b}else{$("pfg").value="#"+b}updateResults();return(b)}function updateResults(){fg=$("pfg").value;bg=$("pbg").value;$S("picksample").background=bg;$S("picksample").color=fg;$("lRatio").value=lumRatio(fg,bg)+":1";$("bDiff").value=brDiff(fg,bg);$("cDiff").value=colDiff(fg,bg);if(lumRatio(fg,bg)>7){$("cResult").value="Contrast is good!";$S("cResult").color="#99FF33"}else{if(lumRatio(fg,bg)>4.5){$("cResult").value="Contrast is sufficient";$S("cResult").color="#99FF33"}else{$("cResult").value="Contrast is not sufficient";$S("cResult").color="#ff0000"}}}function updateRow(a,f,g){try{var o="<td class='node_desc_c' id='elem"+g+"'>"+$("elem"+g).innerHTML+"</td><td class='changed'>"+a+"</td><td class='changed'>"+f+"</td>"+getSample(a,f)+displayLumRatio(a,f)+displayBrDiff(a,f)+displayColDiff(a,f);$("row"+g).innerHTML=o}catch(m){var n=document.createElement("td");n.innerHTML=$("elem"+g).innerHTML;n.className="node_desc";n.id="elem"+g;while($("row"+g).firstChild){$("row"+g).removeChild($("row"+g).firstChild)}$("row"+g).appendChild(n);var l=document.createElement("td");l.innerHTML=a;l.className="changed";$("row"+g).appendChild(l);var k=document.createElement("td");k.innerHTML=f;k.className="changed";$("row"+g).appendChild(k);var h=document.createElement("td");h.innerHTML="SAMPLE TEXT";h.className="sample";h.style.setAttribute("cssText","background-color:"+f+"; color:"+a+";");$("row"+g).appendChild(h);var d=document.createElement("td");if(lumRatio(a,f)=="n/a"){d.className="warning";d.innerHTML="n/a"}else{if(lumRatio(a,f)>4.5){d.innerHTML=lumRatio(a,f);d.className="pass"}else{d.innerHTML=lumRatio(a,f);d.className="failed"}}$("row"+g).appendChild(d);var c=document.createElement("td");if(brDiff(a,f)=="n/a"){c.className="warning";c.innerHTML="n/a"}else{if(brDiff(a,f)>125){c.innerHTML=brDiff(a,f);c.className="pass"}else{c.innerHTML=brDiff(a,f);c.className="failed"}}$("row"+g).appendChild(c);var b=document.createElement("td");if(colDiff(a,f)=="n/a"){b.className="warning";b.innerHTML="n/a"}else{if(colDiff(a,f)>500){b.innerHTML=colDiff(a,f);b.className="pass"}else{b.innerHTML=colDiff(a,f);b.className="failed"}}$("row"+g).appendChild(b)}$S("pickerBG").display="none";$S("pickerBOX").display="none"}function pickerTOG(){document.onclick=function(){$S("pickerBG").display="none";$S("pickerBOX").display="none";document.onclick=function(){}}}function hideBox(){$S("pickerBG").display="none";$S("pickerBOX").display="none"}function pickerBOX(d,a,c,f,e,g){if(!c){c="#000000"}if(!f){f="#ffffff"}setTimeout("pickerTOG()",100);$S("pickerBG").height=XYwin(0)+"px";$S("pickerBG").display="block";$("pickerBOX").innerHTML=d;$S("pickerBOX").left=Math.round((XYwin(1)-a)/2)+"px";$S("pickerBOX").width=a+"px";$S("pickerBOX").display="block";$("pickertitle").innerHTML=$("elem"+e).innerHTML;$("pickerpath").innerHTML=unescape(g);$("pfg").value=c;$("pbg").value=f;$("choiceconfirm").innerHTML="<a href='#' onclick=\"updateRow($('pfg').value,$('pbg').value,"+e+");return false;\"><img src='img/submit.jpg' /></a>";updateResults()};
