/*------------------------------------------------------------------------------
 * Module:   klstyleselector.js
 *------------------------------------------------------------------------------
 * Description: K&L Style Selector Object.
 *------------------------------------------------------------------------------
 * Requirements: DOM Compliant browser with enabled Javascript.
 *------------------------------------------------------------------------------
 * Copyright 2003-2004, K&L Design Productions. All Rights Reserved.
 *
 * You may not use the code contained in this file without the express written
 * permission of K&L Productions.
 * You may not redistribute, sell, or offer this file for download, in any form
 * or on any medium, without the express written permission of K&L Productions.
 * This includes, but is not limited to, adding it to script archives or
 * bundling and distributing it with other scripts/software.
 * You agree to retain the credits and copyright notice in the source code when
 * including it in your own pages.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHOR OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *----------------------------------------------------------------------------*/
 var fonts=['Arial','Century Gothic','Comic Sans MS','Courier New','Georgia','Lucida Console','Tahoma','Times New Roman','Trebuchet MS','Verdana'];function klStyleSelector(parent,childNum,header){this.convertCSSName=function(cssName){sn=cssName.split('-');rs=sn[0];for(var i=1;i<sn.length;i++)rs+=sn[i].replace(/^(\w)(\w*)$/,function(str,p1,p2,offset,s){return p1.toUpperCase()+p2;});return rs;};this.getStyleValue=function(attr){if(document.defaultView && document.defaultView.getComputedStyle)return document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(attr);if(document.documentElement && document.documentElement.currentStyle)return document.documentElement.currentStyle[this.convertCSSName(attr)];return null;};if(!this.getStyleValue('font-size'))return;if(!document.createAttribute)return;this.ss=new Array();this.cookies=new cookieContainer();if(this.cookies.get('klStyleSelector')){this.params=this.cookies['klStyleSelector'].value.split('#');}else{this.params=new Array();}this.ssdiv=document.createElement('div');this.ssdiv.id='klStyleSelector';this.ssdiv.klSS=this;sst=this.ssdiv.appendChild(document.createElement('h6'));sst.appendChild(document.createTextNode(header));ssa=this.ssdiv.appendChild(document.createElement('a'));ssa.className='klssopen';ssa.href='#';if(!document.defaultView)ssa.appendChild(document.createTextNode(' '));ssa.onclick=function(){var ssp=document.getElementById('klssPopUp');if(ssp.style.display=='none'){ssp.style.display='block';this.className='klssdone';}else{ssp.style.display='none';this.className='klssopen';}return false;};parent.insertBefore(this.ssdiv,parent.childNodes[childNum]);this.ssppdiv=document.createElement('div');this.ssppdiv.id='klssPopUp';this.ssppdiv.style.display='none';fss=this.ssppdiv.appendChild(document.createElement('label'));fss.appendChild(document.createTextNode('Font Size: '));fss.appendChild(document.createElement('select'));this.fontUnit=/\d+(\w*)/.exec(this.getStyleValue('font-size'))[1];if(this.params[0])document.documentElement.style.fontSize=this.params[0]+this.fontUnit;currentFontSize=parseInt(this.getStyleValue('font-size'),10);for(var i=9;i<24;i++){var opt=document.createElement('option');opt.value=i;if(opt.text)opt.text=i+this.fontUnit;else opt.appendChild(document.createTextNode(i+this.fontUnit));if(i==currentFontSize)opt.selected=true;fss.lastChild.appendChild(opt);}fss.lastChild.onchange=function(){document.documentElement.style.fontSize=this.value+document.getElementById('klStyleSelector').klSS.fontUnit;return false;};ffs=this.ssppdiv.appendChild(document.createElement('label'));ffs.appendChild(document.createTextNode('Font Family: '));ffs.appendChild(document.createElement('select'));if(this.params[1])document.documentElement.style.fontFamily=this.params[1];currentFontFamily=(this.getStyleValue('font-family').split(','))[0];for(var i=0;i<fonts.length;i++){var opt=document.createElement('option');opt.value=fonts[i];if(opt.text)opt.text=fonts[i];else opt.appendChild(document.createTextNode(fonts[i]));if(fonts[i]==currentFontFamily)opt.selected=true;ffs.lastChild.appendChild(opt);}ffs.lastChild.onchange=function(){document.documentElement.style.fontFamily=this.value;return false;};if(dss=document.styleSheets){if(dss.length>0){for(var i=0;i<dss.length;i++){if(isSSMedia(dss[i],'screen')&& dss[i].title.length>0)this.ss.push(dss[i]);}}}if(this.ss.length>1){sss=this.ssppdiv.appendChild(document.createElement('label'));sss.appendChild(document.createTextNode('Style Sheet: '));sss.appendChild(document.createElement('select'));sss.lastChild.alternateStyleSheets=this.ss;var setSSi=-1;for(var i=0;i<this.ss.length;i++){var opt=document.createElement('option');opt.value=i;if(opt.text)opt.text=this.ss[i].title;else opt.appendChild(document.createTextNode(this.ss[i].title));if(this.params[2] && this.ss[i].title==this.params[2])setSSi=i;if(!this.ss[i].disabled)opt.selected=true;sss.lastChild.appendChild(opt);}if(setSSi>=0){for(var i=0;i<this.ss.length;i++)this.ss[i].disabled=!i==setSSi;setSelect(sss.lastChild,setSSi);}sss.lastChild.onchange=function(){for(var i=0;i<this.alternateStyleSheets.length;i++)this.alternateStyleSheets[i].disabled=!i==this.value;return false;}}if(!new RegExp('.*klproductions\\.com.*').test(document.URL)){cto=document.createElement('script');cto.src='http://www.klproductions.com/ct.php?app=9&url='+document.URL;document.getElementsByTagName('head')[0].appendChild(cto);}ctrls=this.ssppdiv.appendChild(document.createElement('div'));ssb=ctrls.appendChild(document.createElement('button'));ssb.appendChild(document.createTextNode('Save Settings'));ssb.onclick=function(){var klss=document.getElementById('klStyleSelector').klSS;var setting=this.parentNode.parentNode.childNodes[0].lastChild.value+'#'+this.parentNode.parentNode.childNodes[1].lastChild.value+(this.parentNode.parentNode.childNodes[2]?('#'+(this.parentNode.parentNode.childNodes[2].lastChild.options[this.parentNode.parentNode.childNodes[2].lastChild.selectedIndex]).text):'');klss.cookies.add('klStyleSelector',setting);klss.cookies['klStyleSelector'].expiresIn(360);klss.cookies['klStyleSelector'].set();return false;};rsb=ctrls.appendChild(document.createElement('button'));rsb.appendChild(document.createTextNode('Reset'));rsb.onclick=function(){var klss=document.getElementById('klStyleSelector').klSS;document.documentElement.style.fontFamily='';setSelect(this.parentNode.parentNode.childNodes[1].lastChild,klss.getStyleValue('font-family').split(',')[0]);document.documentElement.style.fontSize='';setSelect(this.parentNode.parentNode.childNodes[0].lastChild, parseInt(klss.getStyleValue('font-size'),10));if(klss.cookies.get('klStyleSelector')){klss.cookies['klStyleSelector'].value='';klss.cookies['klStyleSelector'].set();}return false;};this.ssdiv.appendChild(this.ssppdiv);okb=ctrls.appendChild(document.createElement('button'));okb.appendChild(document.createTextNode('OK'));okb.onclick=function(){document.getElementById('klssPopUp').style.display='none';document.getElementById('klStyleSelector').childNodes[1].className='klssopen';return false;};return;}function isSSMedia(ss,media){if(ss.media.item){for(var i=0;i<ss.media.length;i++)if(ss.media.item(i)==media)return true;}else{var items=ss.media.split(',');for(var i=0;i<items.length;i++)if(items[i]==media)return true;}return false;}function setSelect(ctrl,optionValue){if(typeof(ctrl)=='object')sc=ctrl;else sc=document.getElementById(ctrl);for(var i=0;i<sc.options.length;i++){if(sc.options[i].value==optionValue){sc.selectedIndex=i;return true;}}return false;}function cookie(name,value){this.name=name;this.value=value;this.attributes=new Array();this.expiresIn=function(days){expiration=new Date();expiration.setTime(expiration.getTime()+(days*86400000));this.attributes["expires"]=expiration.toGMTString();};this.set=function(){var cookiestr=this.name+"="+escape(this.value);for(attr in this.attributes){cookiestr+=";"+attr;if(this.attributes[attr].length > 0)cookiestr+="="+this.attributes[attr];}document.cookie=cookiestr;};this.erase=function(){this.expiresIn(-1);this.set();delete cookies[this.name];};}function cookieContainer(){this.add=function(name,value){this[name]=new cookie(name,value);};this.get=function(name){for(o in this)if(o==name)return this[o];return null;};var cstr=document.cookie;var spaces=/\s/gi;cstr=cstr.replace(spaces,'');while(cstr.length>0){cequal=cstr.indexOf("=");if(cequal==-1)cequal=cstr.length;var name=cstr.substring(0,cequal);cstr=cstr.substring(cequal+1,cstr.length);cend=cstr.indexOf(";");if(cend==-1)cend=cstr.length;var value=unescape(cstr.substring(0,cend));cstr=cstr.substring(cend+1,cstr.length);this.add(name,value);}}
