jQuery.fn.truncate = function( max, settings ) {
    settings = jQuery.extend( {
        chars: /\s/,
        trail: [ "...", "" ]
    }, settings );
    var myResults = {};
    var ie = $.browser.msie;
    function fixIE( o ) {
        if ( ie ) {
            o.style.removeAttribute( "filter" );
        }
    }
    return this.each( function() {
        var $this = jQuery(this);
        var myStrOrig = $this.html().replace( /\r\n/gim, "" );
        var myStr = myStrOrig;
        var myRegEx = /<\/?[^<>]*\/?>/gim;
        var myRegExArray;
        var myRegExHash = {};
        var myResultsKey = $("*").index( this );
        while ( ( myRegExArray = myRegEx.exec( myStr ) ) != null ) {
            myRegExHash[ myRegExArray.index ] = myRegExArray[ 0 ];
        }
        myStr = jQuery.trim( myStr.split( myRegEx ).join( "" ) );
        if ( myStr.length > max ) {
            var c;
            while ( max < myStr.length ) {
                c = myStr.charAt( max );
                if ( c.match( settings.chars ) ) {
                    myStr = myStr.substring( 0, max );
                    break;
                }
                max--;
            }
            if ( myStrOrig.search( myRegEx ) != -1 ) {
                var endCap = 0;
                for ( eachEl in myRegExHash ) {
                    myStr = [ myStr.substring( 0, eachEl ), myRegExHash[ eachEl ], myStr.substring( eachEl, myStr.length ) ].join( "" );
                    if ( eachEl < myStr.length ) {
                        endCap = myStr.length;
                    }
                }
                $this.html( [ myStr.substring( 0, endCap ), myStr.substring( endCap, myStr.length ).replace( /<(\w+)[^>]*>.*<\/\1>/gim, "" ).replace( /<(br|hr|img|input)[^<>]*\/?>/gim, "" ) ].join( "" ) );
            } else {
                $this.html( myStr );
            }
            myResults[ myResultsKey ] = myStrOrig;
            $this.html( [ "<div class='truncate_less'>", $this.html(), settings.trail[ 0 ], "</div>" ].join( "" ) )
            .find(".truncate_show",this).click( function() {
                if ( $this.find( ".truncate_more" ).length == 0 ) {
                    $this.append( [ "<div class='truncate_more' style='display: none;'>", myResults[ myResultsKey ], settings.trail[ 1 ], "</div>" ].join( "" ) )
                    .find( ".truncate_hide" ).click( function() {
                        $this.find( ".truncate_more" ).css( "background", "#fff" ).fadeOut( "normal", function() {
                            $this.find( ".truncate_less" ).css( "background", "#fff" ).fadeIn( "normal", function() {
                                fixIE( this );
                                $(this).css( "background", "none" );
                            });
                            fixIE( this );
                        });
                        return false;
                    });
                }
                $this.find( ".truncate_less" ).fadeOut( "normal", function() {
                    $this.find( ".truncate_more" ).fadeIn( "normal", function() {
                        fixIE( this );
                    });
                    fixIE( this );
                });
                jQuery(".truncate_show",$this).click( function() {
                    $this.find( ".truncate_less" ).css( "background", "#fff" ).fadeOut( "normal", function() {
                        $this.find( ".truncate_more" ).css( "background", "#fff" ).fadeIn( "normal", function() {
                            fixIE( this );
                            $(this).css( "background", "none" );
                        });
                        fixIE( this );
                    });
                    return false;
                });
                return false;
            });
        }
    });
};

/* originally found on 
* http://www.yourhtmlsource.com/examples/util-functions.js*/
function knackerEvent(eventObject) {
       if (eventObject && eventObject.stopPropagation) {
                  eventObject.stopPropagation();
                      }
           if (window.event && window.event.cancelBubble ) {
                      window.event.cancelBubble = true;
                          }
           if (eventObject && eventObject.preventDefault) {
                      eventObject.preventDefault();
                          }
           if (window.event) {
                      window.event.returnValue = false;
                          }
}
/* Originally from Scott Andrew
   * from http://onlinetools.org/articles/unobtrusivejavascript/chapter4.html */
function addEvent(obj, evType, fn){ 
    if (obj.addEventListener){ 
          obj.addEventListener(evType, fn, false); 
             return true; 
    } else if (obj.attachEvent){ 
        var r = obj.attachEvent("on"+evType, fn); 
        return r; 
    } else { 
       return false; 
    }
}
function unsubSet(){
   if(document.getElementById('unsubBox').value=="false"){
      document.getElementById('unsubBox').value="true";
   } else {
      document.getElementById('unsubBox').value="false";
   }
}
function submitToList(e){
   // stop real submission. we are loaded with AJAX!
   knackerEvent(e);
   done=false;
   var name = document.getElementById("name").value;
   var email = document.getElementById("email").value;
   var url = "announceListHandler.php?ajax=true&name="+name;
   url = url + "&email=" + email;
   if(document.getElementById('unsubBox').value=="true"){
      url = url + "&unsub=true";
      unsubSet();
   }
   request.open("GET", url, true);
   request.onreadystatechange = handler;
   request.send(null);
   if(!done){
      document.getElementById("loadingBox").className = "block";
      document.getElementById("messageBox").className = "hidden";
      document.getElementById("listForm").className = "hidden";
   }
}
function handler(){
   if(request.readyState==4){
      done = true;
      var code = request.responseText;
      var message = "";
      var displayForm = true;
      switch(code){
      case "1":
         message="Email successfully added";
         displayForm = false;
         break;
      case "2":
         message="Email successfully removed";
         displayForm = false;
         break;
      case "3":
         message="Verification email sent";
         displayForm = false;
         break;
      case "-1":
         message="Email already on announce list";
         displayForm = false;
         break;
      case "-2":
         message="Email not on list (nothing removed)";
         break;
      case "-3":
         message="The provided email address is invalid. Please try again";
         break;
      case "-4":
         message="One or more of the required fields was not filled in."+
            " Please try again";
         break;
      case "-5":
         message="The second email address does not match the first."+
            " Please try again";
         break;
      }
      document.getElementById("loadingBox").className = "hidden";
      document.getElementById("messageBox").className = "block";
      document.getElementById("messageBox").innerHTML = message;
      if(displayForm){
         document.getElementById("listForm").className = "block";
      }
      return true;
      }
   }


         var request = null;
         var done = false;
         addEvent(window,'load',init);
         // based off of the init function from
         // http://www.yourhtmlsource.com/examples/ajaxformsubmission.html
         function init(){
            if(!Sarissa) return;
            request = new XMLHttpRequest();
            if(!request || !document.getElementById) return;
            var forms = document.getElementsByTagName('form');
            for(var i=0;i<forms.length; i++){
               if(forms[i].className.match(/\bajaxForm\b/)){
                  addEvent(forms[i],'submit',submitToList);
               }
            }
            addEvent(document.getElementById('unsubButton'),'click',unsubSet);
         }

$(function() {

    $(".truncate").truncate( 35 );

});
$(document).ready(function() { $('#playlistscroller').jcarousel({vertical: true, scroll: 3});});

if($.browser.msie && $.browser.version=="6.0") {
	
} else {
$(document).ready(function() { $('.imagepop').ceebox({imageWidth: 500, imageHeight: 600});});
$(document).ready(function() { $('.popupplay').ceebox({htmlWidth: 400, htmlHeight: 600});});
}

