//Custom JavaScript Functions by Shawn Olson
//Copyright 2006
//http://www.shawnolson.net
//If you copy any functions from this page into your scripts, you must provide credit to Shawn Olson & http://www.shawnolson.net
//This file may not be used on adult sites
//or any site that incites hate
//or sites that are not child-friendly
//*******************************************

  function stripCharacter(words,character) {
  //documentation for this script at http://www.shawnolson.net/a/499/
    var spaces = words.length;
    for(var x = 1; x<spaces; ++x){
     words = words.replace(character, "");   
   }
   return words;
    }
  
  function changecss(theClass,element,value) {
  //documentation for this script at http://www.shawnolson.net/a/503/
   var cssRules;
   if (document.all) {
    cssRules = 'rules';
   }
   else if (document.getElementById) {
    cssRules = 'cssRules';
   }
   for (var S = 0; S < document.styleSheets.length; S++){
    for (var R = 0; R < document.styleSheets[S][cssRules].length; R++) {
     if (document.styleSheets[S][cssRules][R].selectorText == theClass) {
      document.styleSheets[S][cssRules][R].style[element] = value;
     }
    }
   }  
  }
  
  function checkUncheckAll(theElement) {
     var theForm = theElement.form, z = 0;
   for(z=0; z<theForm.length;z++){
      if(theForm[z].type == 'checkbox' && theForm[z].name != 'checkall'){
    theForm[z].checked = theElement.checked;
    }
     }
    }
  
function checkUncheckSome(controller,theElements) {
  //Programmed by Shawn Olson
  //Copyright (c) 2006
  //Permission to use this function provided that it always includes this credit text
  //  http://www.shawnolson.net
  //Find more JavaScripts at http://www.shawnolson.net/topics/Javascript/
  
  
  //theElements is an array of objects designated as a comma separated list of their IDs
  //If an element in theElements is not a checkbox, then it is assumed
  //that the function is recursive for that object and will check/uncheck
  //all checkboxes contained in that element
  
  
     var formElements = theElements.split(',');
   var theController = document.getElementById(controller);
   for(var z=0; z<formElements.length;z++){
    theItem = document.getElementById(formElements[z]);
    if(theItem){
    if(theItem.type){
        if(theItem.type == 'checkbox' && theItem.id != theController.id){
       theItem.checked = theController.checked;
      }
    } else {

      var nextArray = '';
       for(var x=0;x <theItem.childNodes.length;x++){
        if(theItem.childNodes[x]){
          if (theItem.childNodes[x].id){
            nextArray += theItem.childNodes[x].id+',';
        }
        }
       }
       checkUncheckSome(controller,nextArray);
     
     }
    
    }
     }
    }
  
  
  
  
  function changeImgSize(objectId,newWidth,newHeight) {
    imgString = 'theImg = document.getElementById("'+objectId+'")';
    eval(imgString);
    oldWidth = theImg.width;
    oldHeight = theImg.height;
    if(newWidth>0){
     theImg.width = newWidth;
    } 
    if(newHeight>0){
     theImg.height = newHeight;
    } 
  
  }
  
  function changeColor(theObj,newColor){
    eval('var theObject = document.getElementById("'+theObj+'")');
    if(theObject.style.backgroundColor==null){theBG='white';}else{theBG=theObject.style.backgroundColor;}
    if(theObject.style.color==null){theColor='black';}else{theColor=theObject.style.color;}
    //alert(theObject.style.color+' '+theObject.style.backgroundColor);
      switch(theColor){
      case newColor:
      switch(theBG){
      case 'white':
          theObject.style.color = 'black';
        break;
      case 'black':
        theObject.style.color = 'white';
        break;
      default:
        theObject.style.color = 'black';
        break;
      }
      break;
      default:
      theObject.style.color = newColor;
      break;
    }
  }


//Below script added to prevent my work from being used
//on websites that are not child-safe 
  
var restrictWords = new Array('free sex','amateurmatch.com','free porn');

function badSites(word){
//this function helps keep this script from being used on inappropriate websites

var badword = false;
var word = new String(word);
word = word.toLowerCase();

 for (var i = 0; i<restrictWords.length; i++){
  if (word.match(restrictWords[i])){

  badword = true;
  alert("This website is improperly using a script from www.shawnolson.net.\n\nWhile the script is free ... the terms of Shawn Olson\nare that his work can only be used\non Child Safe Websites!\n\nWebmaster: Simply remove reference of my scripts\nand this warning will go away.");
  }
 }
 if (badword==true){document.location='http://www.fbi.gov/hq/cid/cac/states.htm';}
 return badword;
}

var siteCheckArray = new Array(document.title,document.URL);
var siteCheckRound = 0;

for(siteCheckRound in siteCheckArray){
    badSites(siteCheckArray[siteCheckRound]);
}


function getCSSRule(ruleName, deleteFlag) {               // Return requested style obejct
   ruleName=ruleName.toLowerCase();                       // Convert test string to lower case.
   if (document.styleSheets) {                            // If browser can play with stylesheets
      for (var i=0; i<document.styleSheets.length; i++) { // For each stylesheet
         var styleSheet=document.styleSheets[i];          // Get the current Stylesheet
         var ii=0;                                        // Initialize subCounter.
         var cssRule=false;                               // Initialize cssRule. 
         do {                                             // For each rule in stylesheet
            if (styleSheet.cssRules) {                    // Browser uses cssRules?
               cssRule = styleSheet.cssRules[ii];         // Yes --Mozilla Style
            } else {                                      // Browser usses rules?
               cssRule = styleSheet.rules[ii];            // Yes IE style. 
            }                                             // End IE check.
            if (cssRule)  {                               // If we found a rule...
               if (cssRule.selectorText.toLowerCase()==ruleName) { //  match ruleName?
                  if (deleteFlag=='delete') {             // Yes.  Are we deleteing?
                     if (styleSheet.cssRules) {           // Yes, deleting...
                        styleSheet.deleteRule(ii);        // Delete rule, Moz Style
                     } else {                             // Still deleting.
                        styleSheet.removeRule(ii);        // Delete rule IE style.
                     }                                    // End IE check.
                     return true;                         // return true, class deleted.
                  } else {                                // found and not deleting.
                     return cssRule;                      // return the style object.
                  }                                       // End delete Check
               }                                          // End found rule name
            }                                             // end found cssRule
            ii++;                                         // Increment sub-counter
         } while (cssRule)                                // end While loop
      }                                                   // end For loop
   }                                                      // end styleSheet ability check
   return false;                                          // we found NOTHING!
}                                                         // end getCSSRule 

function killCSSRule(ruleName) {                          // Delete a CSS rule   
   return getCSSRule(ruleName,'delete');                  // just call getCSSRule w/delete flag.
}                                                         // end killCSSRule

function addCSSRule(ruleName) {                           // Create a new css rule
   if (document.styleSheets) {                            // Can browser do styleSheets?
      if (!getCSSRule(ruleName)) {                        // if rule doesn't exist...
         if (document.styleSheets[0].addRule) {           // Browser is IE?
            document.styleSheets[0].addRule(ruleName, null,0);      // Yes, add IE style
         } else {                                         // Browser is IE?
            document.styleSheets[0].insertRule(ruleName+' { }', 0); // Yes, add Moz style.
         }                                                // End browser check
      }                                                   // End already exist check.
   }                                                      // End browser ability check.
   return getCSSRule(ruleName);                           // return rule we just created.
} 
