(function(){var F=YAHOO.util.Dom,B=YAHOO.util.Event,D='<button type="button">role: none</button>',C='<button id="body-button" type="button">role: none</button>',A="Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas sit amet metus. Nunc quam elit, posuere nec, auctor in, rhoncus quis, dui. Aliquam erat volutpat. Ut dignissim, massa sit amet dignissim cursus, quam lacus feugiat.",G,E,H;YAHOO.util.GridBuilder={init:function(){this.toolBox=new YAHOO.widget.Panel("toolBoxHolder",{close:false,visible:false,xy:[10,10],width:"235px"});this.toolBox.render(document.body);this.hd=F.get("hd");this.bd=F.get("bd");this.ft=F.get("ft");this.headerStr=this.hd.firstChild.innerHTML;this.footerStr=this.ft.firstChild.innerHTML;this.headerDefault=this.headerStr;this.footerDefault=this.footerStr;this.type="yui-t7";this.docType="doc";this.rows=[];this.rows[0]=F.get("splitBody0");this.storeCode=false;this.sliderData=false;this.doc=F.get("doc");this.template=F.get("which_grid");B.on(this.template,"change",YAHOO.util.GridBuilder.changeType,YAHOO.util.GridBuilder,true);B.on("splitBody0","change",YAHOO.util.GridBuilder.splitBody,YAHOO.util.GridBuilder,true);B.on("which_doc","change",YAHOO.util.GridBuilder.changeDoc,YAHOO.util.GridBuilder,true);B.on(this.bd,"mouseover",YAHOO.util.GridBuilder.mouseOver,YAHOO.util.GridBuilder,true);var M=new YAHOO.widget.Button("setHeader");M.on("click",YAHOO.util.GridBuilder.setHeader,YAHOO.util.GridBuilder,true);var L=new YAHOO.widget.Button("setFooter");L.on("click",YAHOO.util.GridBuilder.setFooter,YAHOO.util.GridBuilder,true);var K=new YAHOO.widget.Button("show_code");K.on("click",YAHOO.util.GridBuilder.showCode,YAHOO.util.GridBuilder,true);var J=new YAHOO.widget.Button("resetBuilder");J.on("click",YAHOO.util.GridBuilder.reset,YAHOO.util.GridBuilder,true);var I=new YAHOO.widget.Button("addRow");I.on("click",YAHOO.util.GridBuilder.addRow,YAHOO.util.GridBuilder,true);var N=new YAHOO.widget.Button("doc_return");N.on("click",function(O){location.href="http:/"+"/www.generateit.net/";B.stopEvent(O);});this.tooltip=new YAHOO.widget.Tooltip("classPath",{context:"bd",showDelay:500});this.tooltip.subscribe("contextMouseOver",function(R,Q){var P=Q[1],O=B.getTarget(P);return !(F.hasClass(O,"yui-button")||F.getAncestorByClassName(O,"yui-button")||F.hasClass(O,"yuimenu")||F.getAncestorByClassName(O,"yuimenu")||F.hasClass(O,"order-indicator"));});this.ariaCheckbox=F.get("use-aria");this.useARIA=this.ariaCheckbox.checked;if(this.useARIA){this.initARIA();}B.on("use-aria","click",this.toggleARIA,null,this);this.orderCheckbox=F.get("show-order");this.showOrder=this.orderCheckbox.checked;if(this.showOrder){this.createReadingOrderBadges();}B.on("show-order","click",this.toggleOrderBadges,null,this);this.toolBox.show();this.splitBody();},initARIA:function(){this.hd.setAttribute("role","banner");this.bd.setAttribute("role","main");this.ft.setAttribute("role","contentinfo");this.createRoleButtons();},toggleARIA:function(I){this.useARIA=this.ariaCheckbox.checked;if(this.showOrder){this.removeReadingOrderBadges();}if(this.useARIA){this.createRoleButtons();}else{this.destroyRoleButtons();}if(this.showOrder){this.createReadingOrderBadges();}},setRole:function(K){var L=K.newValue,J=L.cfg.getProperty("text"),I=F.getAncestorByTagName(this.get("element"),"div");this.set("label",("role: "+J));this.set("value",J);if(J==="none"){I.removeAttribute("role");}else{if(J){I.setAttribute("role",J);}}},createRoleButton:function(M){var L=["none","application","banner","complementary","contentinfo","main","navigation","search"];var N=new YAHOO.widget.Button(M,{type:"menu",menu:L,lazyloadmenu:false});N.on("selectedMenuItemChange",this.setRole);var K=F.getAncestorByTagName(N.get("element"),"div").getAttribute("role");if(K){N.set("value",K);}var I=L.length,J=I-1;do{if(K===L[J]){N.set("selectedMenuItem",N.getMenu().getItem(J));break;}}while(J--);return N;},createHeaderRoleButton:function(){this.hd.innerHTML='<button id="header-button" type="button">role: banner</button>'+this.hd.innerHTML;G=this.createRoleButton("header-button");},createFooterRoleButton:function(){this.ft.innerHTML='<button id="footer-button" type="button">role: contentinfo</button>'+this.ft.innerHTML;H=this.createRoleButton("footer-button");},createBodyRoleButtons:function(){var M=this.bd.getElementsByTagName("p");if(M.length>1){F.batch(M,function(N){N.innerHTML=D+N.innerHTML;});}this.bd.innerHTML=(C+this.bd.innerHTML);var K=this.bd.getElementsByTagName("button"),I=K.length,J=[],L;if(I>0){for(L=0;L<I;L++){J.push(this.createRoleButton(K[L]));}}E=YAHOO.widget.Button.getButton("body-button");this.bodyRoleButtons=J;},destroyBodyRoleButtons:function(){var K=this.bodyRoleButtons,I,J;if(K){I=K.length;if(I>0){J=I-1;do{K[J].destroy();}while(J--);}this.bodyRoleButtons=null;}},createRoleButtons:function(){this.createHeaderRoleButton();this.createBodyRoleButtons();this.createFooterRoleButton();},destroyRoleButtons:function(){G.destroy();this.destroyBodyRoleButtons();H.destroy();},applyRolesToBody:function(I){this.destroyBodyRoleButtons();var M=F.getElementsBy(function(N){return !(N.id&&N.id.indexOf("gridBuilder")===0);},"div",this.bd);var J=I,L=0;var K=function(Q){var O=M[L],N,P=Q;if(O){N=O.getAttribute("role");if(N){P=Q+'role="'+N+'" ';}}L++;return P;};if(M&&M.length>0){J=J.replace(/<div /gi,K);}this.createBodyRoleButtons();return J;},saveLandmarksState:function(){var M=this.bodyRoleButtons,L=M.length,K,J=[],I;for(I=0;I<L;I++){K=M[I].get("selectedMenuItem");J.push(K?K.index:0);}this.bodyLandmarks=J;},restoreLandmarksState:function(){var K,J=this.bodyLandmarks,L=J.length,I;if(J){for(I=0;I<L;I++){K=this.bodyRoleButtons[I];if(K){K.set("selectedMenuItem",K.getMenu().getItem(J[I]));}}}},toggleOrderBadges:function(I){this.showOrder=this.orderCheckbox.checked;if(this.showOrder){this.createReadingOrderBadges();}else{this.removeReadingOrderBadges();}},createReadingOrderBadges:function(){var M=this.bd.getElementsByTagName("p"),I=M.length,L=document.createElement("div");
var J=function(N,O){L.innerHTML='<div class="order-indicator"> Order '+N+"</div>";O.appendChild(L.firstChild);};J(1,this.hd);J(I+2,this.ft);for(var K=0;K<I;K++){J((K+2),M[K]);}},removeReadingOrderBadges:function(){F.getElementsByClassName("order-indicator","div",this.doc,function(I){I.parentNode.removeChild(I);});},reset:function(J){for(var I=1;I<this.rows.length;I++){if(this.rows[I]){if(F.get("splitBody"+I)){F.get("splitBody"+I).parentNode.parentNode.removeChild(F.get("splitBody"+I).parentNode);}}}this.rows=[];this.rows[0]=F.get("splitBody0");F.get("which_doc").options.selectedIndex=0;F.get("which_grid").options.selectedIndex=0;F.get("splitBody0").options.selectedIndex=0;this.hd.innerHTML="<h1>"+this.headerDefault+"</h1>";this.ft.innerHTML="<p>"+this.footerDefault+"</p>";this.headerStr=this.headerDefault;this.footerStr=this.footerDefault;this.changeDoc();this.changeType();this.splitBody();if(this.useARIA){this.destroyBodyRoleButtons();this.initARIA();}B.stopEvent(J);},addRow:function(L){if(this.useARIA){this.saveLandmarksState();}var K=F.get("splitBody0").cloneNode(true);K.id="splitBody"+this.rows.length;this.rows[this.rows.length]=K;this.rowCounter++;var J=document.createElement("div");J.innerHTML='<button type="button" class="rowDel" id="gridRowDel'+this.rows.length+'">Remove this row</button><label>Row:</label>';J.lastChild.appendChild(K);var I=F.get("splitBody0").parentNode.parentNode.parentNode;I.insertBefore(J,F.get("addRow"));B.on(K,"change",YAHOO.util.GridBuilder.splitBody,YAHOO.util.GridBuilder,true);B.on("gridRowDel"+this.rows.length,"click",YAHOO.util.GridBuilder.delRow,YAHOO.util.GridBuilder,true);this.splitBody();if(this.useARIA){if(this.template.selectedIndex>0&&this.bodyLandmarks.length>1){this.bodyLandmarks.splice((this.bodyLandmarks.length-1),0,0);}this.restoreLandmarksState();}if(YAHOO.env.ua.ie){this.toolBox.sizeUnderlay();}B.stopEvent(L);},delRow:function(J){if(this.useARIA){this.saveLandmarksState();}var I=B.getTarget(J);var K=I.id.replace("gridRowDel","");F.get("splitBody0").parentNode.parentNode.parentNode.removeChild(I.parentNode);this.rows[K]=false;this.splitBody();if(this.useARIA){this.restoreLandmarksState();}if(YAHOO.env.ua.ie){this.toolBox.sizeUnderlay();}B.stopEvent(J);},changeDoc:function(I){if(this.useARIA){this.saveLandmarksState();}this.prevDocType=this.currentDocType;this.currentDocType=F.get("which_doc").selectedIndex;this.docType=F.get("which_doc").options[this.currentDocType].value;if(this.docType=="custom-doc"){this.showSlider();}else{this.doc.style.width="";this.doc.style.minWidth="";this.sliderData=false;this.doc.id=this.docType;this.doTemplate();}if(I){B.stopEvent(I);}if(this.useARIA){this.restoreLandmarksState();}},changeType:function(){if(this.useARIA){this.saveLandmarksState();}this.type=this.template.options[this.template.selectedIndex].value;this.doc.className=this.type;this.doTemplate();if(this.useARIA){this.restoreLandmarksState();}},doTemplate:function(K){if(this.storeCode){this.splitBody();}var J="";var L="<p>"+A+"</p>";var I='<p class="nav">'+A+"</p>";if(K){L=A;I=A;}else{if(this.storeCode){L="<!-- YOUR DATA GOES HERE -->";I="<!-- YOUR NAVIGATION GOES HERE -->";}}if(this.bodySplit){if(K){L=this.bodySplit.replace(/\{0\}/g,A);}else{if(this.storeCode){L=this.bodySplit.replace(/\{0\}/g,"\t"+"<!-- YOUR DATA GOES HERE -->"+"\n\t");}else{L=this.bodySplit.replace(/\{0\}/g,"<p>"+A+"</p>");}}}if(this.type==="yui-t7"){J=L;}else{J='<div id="yui-main">'+"\n\t"+'<div class="yui-b">'+L+"</div>"+"\n\t"+"</div>"+"\n\t"+'<div class="yui-b">'+I+"</div>"+"\n\t";}if(this.storeCode){return J;}else{if(this.showOrder){this.removeReadingOrderBadges();}if(this.useARIA){this.destroyBodyRoleButtons();}this.bd.innerHTML=J;if(this.useARIA){this.createBodyRoleButtons();}if(this.showOrder){YAHOO.lang.later(0,this,this.createReadingOrderBadges);}}},PixelToEmStyle:function(I,L){var J="";L=((L)?L.toLowerCase():"width");var K=(I/13);J+=L+":"+(Math.round(K*100)/100)+"em;";J+="*"+L+":"+(Math.round((K*0.9759)*100)/100)+"em;";if((L=="width")||(L=="height")){J+="min-"+L+":"+I+"px;";}return J;},getCode:function(N){if(this.showOrder){this.removeReadingOrderBadges();}this.storeCode=true;var L=false;if(this.sliderData){if(this.sliderData.indexOf("px")!=-1){L="#custom-doc { "+this.PixelToEmStyle(parseInt(this.sliderData,10))+" margin:auto; text-align:left; }";}else{L="#custom-doc { width: "+this.sliderData+"; min-width: 250px; }";}}var I='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'+"\n"+' "http://www.w3.org/TR/html4/strict.dtd">'+"\n";I+="<html>"+"\n";I+="<head>"+"\n";I+="   <title>YUI Base Page</title>"+"\n";I+='   <link rel="stylesheet" href="http:/'+"/yui.yahooapis.com/"+YAHOO.VERSION+'/build/reset-fonts-grids/reset-fonts-grids.css" type="text/css">'+"\n";if(L){I+='   <style type="text/css">'+"\n";I+="   "+L+"\n";I+="   </style>"+"\n";}I+="</head>"+"\n";I+="<body>"+"\n";I+='<div id="'+this.docType+'" class="'+this.type+'">'+"\n";var Q,R="",J,O="",M,K="",P=this.doTemplate(N);if(this.useARIA){Q=G.get("value");R=Q==="none"?"":' role="'+G.get("value")+'"';J=E.get("value");O=J==="none"?"":' role="'+E.get("value")+'"';M=H.get("value");K=M==="none"?"":' role="'+H.get("value")+'"';P=this.applyRolesToBody(P);}I+='   <div id="hd"'+R+"><h1>"+this.headerStr+"</h1></div>"+"\n";I+='   <div id="bd"'+O+">"+"\n\t"+P+"\n\t"+"</div>"+"\n";I+='   <div id="ft"'+K+"><p>"+this.footerStr+"</p></div>"+"\n";I+="</div>"+"\n";I+="</body>"+"\n";I+="</html>"+"\n";this.storeCode=false;if(this.showOrder){this.createReadingOrderBadges();}return I;},showCode:function(I){var J=this.codePanel;if(!J){J=new YAHOO.widget.Panel("showCode",{close:true,draggable:true,modal:true,visible:false,fixedcenter:true,height:"382px",width:"650px"});J.setHeader("CSSGridBuilder Code");J.setBody("placeholder");J.setFooter('<input type="checkbox" id="includeLorem" value="1"> <label for="includeLorem">Include Lorem Ipsum text</label>');J.body.style.overflow="auto";J.render(document.body);B.on("includeLorem","click",function(O){var K=F.get("includeLorem");
var L=F.get("codeHolder");var N=L.previousSibling;N.parentNode.removeChild(N);var M=this.getCode(K.checked);L.style.visibility="hidden";L.style.display="block";L.value=M;window.setTimeout(function(){J.body.style.overflow="";dp.SyntaxHighlighter.HighlightAll("code");J.body.style.overflow="auto";},5);},this,true);this.codePanel=J;}J.setBody('<form><textarea name="code" id="codeHolder" class="HTML">'+this.getCode()+"</textarea></form>");J.show();dp.SyntaxHighlighter.HighlightAll("code");B.stopEvent(I);},setHeader:function(I){var J=prompt("Set header value to: ",this.headerStr);if(J!==null){if(this.showOrder){this.removeReadingOrderBadges();}if(this.useARIA){G.destroy();}this.headerStr=J;this.hd.innerHTML="<h1>"+J+"</h1>";if(this.useARIA){this.createHeaderRoleButton();}if(this.showOrder){this.createReadingOrderBadges();}}B.stopEvent(I);},setFooter:function(I){var J=prompt("Set footer value to: ",this.footerStr);if(J!==null){if(this.showOrder){this.removeReadingOrderBadges();}if(this.useARIA){H.destroy();}this.footerStr=J;this.ft.innerHTML="<p>"+J+"</p>";if(this.useARIA){this.createFooterRoleButton();}if(this.showOrder){this.createReadingOrderBadges();}}B.stopEvent(I);},splitBody:function(){this.bodySplit="";for(var I=0;I<this.rows.length;I++){this.splitBodyTemplate(F.get("splitBody"+I));}if(!this.storeCode){this.doTemplate();}},splitBodyTemplate:function(I){if(I){var J=I.options[I.selectedIndex].value;var K="";switch(J){case"1":K+='<div class="yui-g">'+"\n";K+="{0}";K+="</div>"+"\n";break;case"2":K+='<div class="yui-g">'+"\n";K+='    <div class="yui-u first">'+"\n";K+="{0}";K+="    </div>"+"\n";K+='    <div class="yui-u">'+"\n";K+="{0}";K+="    </div>"+"\n";K+="</div>"+"\n";break;case"3":K+='    <div class="yui-gb">'+"\n";K+='        <div class="yui-u first">'+"\n";K+="{0}";K+="        </div>"+"\n";K+='        <div class="yui-u">'+"\n";K+="{0}";K+="        </div>"+"\n";K+='        <div class="yui-u">'+"\n";K+="{0}";K+="        </div>"+"\n";K+="    </div>"+"\n";break;case"4":K+='<div class="yui-g">'+"\n";K+='    <div class="yui-g first">'+"\n";K+='        <div class="yui-u first">'+"\n";K+="{0}";K+="        </div>"+"\n";K+='        <div class="yui-u">'+"\n";K+="{0}";K+="        </div>"+"\n";K+="    </div>"+"\n";K+='    <div class="yui-g">'+"\n";K+='        <div class="yui-u first">'+"\n";K+="{0}";K+="        </div>"+"\n";K+='        <div class="yui-u">'+"\n";K+="{0}";K+="        </div>"+"\n";K+="    </div>"+"\n";K+="</div>"+"\n";break;case"5":K+='<div class="yui-g">'+"\n";K+='    <div class="yui-u first">'+"\n";K+="{0}";K+="    </div>"+"\n";K+='    <div class="yui-g">'+"\n";K+='        <div class="yui-u first">'+"\n";K+="{0}";K+="        </div>"+"\n";K+='        <div class="yui-u">'+"\n";K+="{0}";K+="        </div>"+"\n";K+="    </div>"+"\n";K+="</div>"+"\n";break;case"6":K+='<div class="yui-g">'+"\n";K+='    <div class="yui-g first">'+"\n";K+='        <div class="yui-u first">'+"\n";K+="{0}";K+="        </div>"+"\n";K+='        <div class="yui-u">'+"\n";K+="{0}";K+="        </div>"+"\n";K+="    </div>"+"\n";K+='    <div class="yui-u">'+"\n";K+="{0}";K+="    </div>"+"\n";K+="</div>"+"\n";break;case"7":K+='<div class="yui-gc">'+"\n";K+='    <div class="yui-u first">'+"\n";K+="{0}";K+="    </div>"+"\n";K+='    <div class="yui-u">'+"\n";K+="{0}";K+="    </div>"+"\n";K+="</div>"+"\n";break;case"8":K+='<div class="yui-gd">'+"\n";K+='    <div class="yui-u first">'+"\n";K+="{0}";K+="    </div>"+"\n";K+='    <div class="yui-u">'+"\n";K+="{0}";K+="    </div>"+"\n";K+="</div>"+"\n";break;case"9":K+='<div class="yui-ge">'+"\n";K+='    <div class="yui-u first">'+"\n";K+="{0}";K+="    </div>"+"\n";K+='    <div class="yui-u">'+"\n";K+="{0}";K+="    </div>"+"\n";K+="</div>"+"\n";break;case"10":K+='<div class="yui-gf">'+"\n";K+='    <div class="yui-u first">'+"\n";K+="{0}";K+="    </div>"+"\n";K+='    <div class="yui-u">'+"\n";K+="{0}";K+="    </div>"+"\n";K+="</div>"+"\n";break;}if(!this.storeCode){this.bodySplit+='<div id="gridBuilder'+(this.rows.length-1)+'">'+K+"</div>";}else{this.bodySplit+=K;}}},mouseOver:function(J){var L=B.getTarget(J);var K=[];var I=true;while(I){if(L.tagName.toLowerCase()=="body"){I=false;break;}if(L.className){K[K.length]=L.className;}if(L.parentNode){L=L.parentNode;}else{I=false;}}this.tooltip.cfg.setProperty("text","body."+document.body.className+" #"+this.docType+": "+K.reverse().join(" : "));},showSlider:function(){var N=this.customWidthDialog,J=this.customWidthSlider;var L=function(){this.sliderData=F.get("sliderValue").value;N.hide();};var O=function(){F.get("which_doc").selectedIndex=this.prevDocType;this.changeDoc();N.hide();};var K=function(R){var P,Q;if(typeof R=="object"){R=J.getValue();}if(F.get("moveTypePercent").checked){P=Math.round(R/2);F.get("custom-doc").style.width=P+"%";F.get("sliderValue").value=P+"%";}else{P=Math.round(R/2);Q=Math.round(F.getViewportWidth()*(P/100));F.get("custom-doc").style.width=Q+"px";F.get("sliderValue").value=Q+"px";}F.get("custom-doc").style.minWidth="250px";};var M=function(){var P=F.get("sliderValue").value;if(P.indexOf("%")!=-1){F.get("moveTypePercent").checked=true;P=(parseInt(P,10)*2);}else{if(P.indexOf("px")!=-1){F.get("moveTypePixel").checked=true;P=(((parseInt(P,10)/F.getViewportWidth())*100)*2);}else{F.get("sliderValue").value="100%";P=200;}}J.setValue(P);};if(!N){N=new YAHOO.widget.Dialog("showSlider",{close:true,draggable:true,modal:true,visible:false,fixedcenter:true,width:"275px",postmethod:"none"});N.cfg.queueProperty("buttons",[{text:"Save",handler:{fn:L,scope:this},isDefault:true},{text:"Cancel",handler:{fn:O,scope:this}}]);N.setHeader("CSSGridBuilder Custom Body Size");var I="<p>Adjust the slider below to adjust your body size or set it manually with the text input. <i>(Be sure to include the % or px in the text input)</i></p>";I+='<form name="customBodyForm" method="POST" action="">';I+='<p>Current Setting: <input type="text" id="sliderValue" value="100%" size="8" onfocus="this.select()" /></p>';I+="<span>Unit: ";I+='<input type="radio" name="movetype" id="moveTypePercent" value="percent" checked> <label for="moveTypePercent">Percent</label>&nbsp;';
I+='<input type="radio" name="movetype" id="moveTypePixel" value="pixel"> <label for="moveTypePixel">Pixel</label></span>';I+="</form>";I+='<div id="sliderbg"><div id="sliderthumb"><img src="thumb-n.gif" /></div>';I+="</div>";N.setBody(I);N.render(document.body);J=YAHOO.widget.Slider.getHorizSlider("sliderbg","sliderthumb",0,200,1);J.onChange=K;this.customWidthSlider=J;B.on(["moveTypePercent","moveTypePixel"],"click",K);B.on("sliderValue","blur",M);this.customWidthDialog=N;}this.customWidthSlider.setValue(200);N.show();this.doc.id=this.docType;this.doc.style.width="100%";this.doTemplate();}};})();YAHOO.register("gridbuilder",YAHOO.util.GridBuilder,{version:"@VERSION@",build:"@BUILD@"});
