var defaultCollapsed = {'box recently' : 1};
var Collapsible = ['mini-product-news', 'mini-product-prepared', 'mini-cart', 'mini-product-view-recently'];

function attachCollapsible(collapsible)
        {
            var div = $(collapsible);
            
            div.addClassName('collapsible');

            var heading = div.getElementsBySelector( 'h3' );

            if( heading.length ) {
              heading = heading[0];
            }
            else {
              heading = div.getElementsBySelector( 'h4' )[0];
            }
            

            var contents = div.getElementsBySelector('div.content');
            if( contents.length ) {
              contents = contents[0];
            }
            else {
              contents = div.getElementsBySelector('table');
              if( contents.length ) {
                contents = contents[0];
              }
              else {
                contents = false;
              }
            }
            
            if( !contents ) return false;
            
            div.removeClassName('closed');

            var value = getCookie( div.className );

            if( value == '1' || ( ( value == null || value == '' ) && !( div.className in defaultCollapsed ) ) ) {
              div.removeClassName('closed');
              contents.show();
            }
            else {
              div.addClassName('closed');
              contents.hide();
            }
            

            // add an anchor at run time,
            // that way non-js users won't see anchor, but js users will
            // still be able to use their keyboard for it.
            heading.innerHTML =
                    '<a href="#">' + heading.innerHTML + '</a>';
            heading.firstDescendant().onclick =
                    collapsibleOnClick(div, heading, contents);
        }

function collapsibleOnClick(div, heading, contents)
{
    return function() {
        // clear the height; gets messy otherwise if
        // a blind is already in progress
        // not perfect, but simple and huffy enough,
        // and doesn't seem to be able to get into a bad state
        //contents.style.height = '';

        // do we need to go up or down?

        if (div.hasClassName('closed')) {
            new Effect.SlideDown(contents,{duration:1, fps:40});
            /*new Effect.Parallel(
      				[
      					
      					 new Effect.SlideDown(contents,{sync:true}),
      					//new Effect.Appear(contents,{sync:true})

      				],
      				{
      					duration:1,
      					fps:40 }
      				);        */
            Element.removeClassName(div,'closed');

            setCookie( div.className, 1, 30 )
        } else {
            new Effect.SlideUp(contents,{duration:1, fps:40});
            /*new Effect.Parallel(
      				[
      					new Effect.SlideUp(contents,{sync:true}),
      					//new Effect.Fade(contents,{sync:true})

      				],
      				{
      					duration:1,
      					fps:40 }
      				);*/
      				
      		  setCookie( div.className, 0, 30 )
      				
            Element.addClassName(div,'closed');
        }

        // event has been dealt with.
        return false;
    };
}



function getCookie( name ) {
  name = name.split('-').join('').split(' ').join('');

	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
  name = name.split('-').join('').split(' ').join('');
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name+'='+escape( value ) +
		( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		( ( path ) ? ';path=' + path : '' ) +
		( ( domain ) ? ';domain=' + domain : '' ) +
		( ( secure ) ? ';secure' : '' );
}

function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + '=' +
			( ( path ) ? ';path=' + path : '') +
			( ( domain ) ? ';domain=' + domain : '' ) +
			';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}


Event.observe( window, 'load', function() {
  Collapsible.each(
    function(item) {
      $$('div.box.' + item).each(     
        function(item) {
          attachCollapsible(item);
        }
      );
    }
  )

} );