/* [INCLUDE FILE] oas/oas_gamepages */
//configuration
OAS_url ='http://ads.miniclip.com/RealMedia/ads/';
OAS_listpos = 'Bottom2,Middle';
OAS_sitepage = 'miniclip.com/gamepages';
//end of configuration
OAS_version = 10;
OAS_rn = '001234567890';OAS_rns = '1234567890';
OAS_rn = new String (Math.random());OAS_rns = OAS_rn.substring (2,11);
function OAS_NORMAL(pos){
document.write('<A HREF="' + OAS_url + 'click_nx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + OAS_query + '" TARGET=_top>');
document.write('<IMG SRC="' + OAS_url + 'adstream_nx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + OAS_query + '" BORDER=0 ALT="Click!"></A>');
}

OAS_version = 11;
if (navigator.userAgent.indexOf('Mozilla/3') != -1)
OAS_version = 10;
if (OAS_version >= 11)
document.write('<SC'+'RIPT LANGUAGE=JavaScript1.1 SRC="' + OAS_url + 'adstream_mjx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + OAS_query + '"><\/SCRIPT>');

 document.write('');
function OAS_AD(pos){
if (OAS_version >= 11 && typeof(OAS_RICH) !='undefined')
  OAS_RICH(pos);
else
  OAS_NORMAL(pos);
}/* [INCLUDE FILE] sketchstar/animation_player_v2 */
/**
 * Animation frame state constants' object
 */
var AnimationFrameState ={

// animation frame states
STATE_NONE:0,
STATE_LOADING:1,
STATE_LOADED:2

};


/**
 * Frame object holding information about current
 * image location and state
 */
var AnimationFrame = Class.create({

/**
 * Class constructor
 *
 * @param string src       Image source location
 * @param integer duration Duration of the frame in miliseconds
 * @return AnimationFrame
 */
initialize:function(src,duration)
{
// current frame duration
this._duration = 100;

// current image load state
this._state = AnimationFrameState.STATE_NONE;

// set frame source url
this._src = src;

// reset HTMLImageElement
this._img = null;

if (duration){
// set frame duration
this._duration = parseInt(duration,10);
}
},

/**
 * Get current loading state of the frame image
 *
 * @return integer
 */
getState:function()
{
return this._state;
},

/**
 * Get duration of the frame
 *
 * @return integer
 */
getDuration:function()
{
return this._duration;
},

/**
 * Get image object
 *
 * @return HTMLImageElement
 */
getImage:function()
{
return this._img;
},

/**
 * Get unage location source
 *
 * @return string
 */
getImageSrc:function()
{
return this._src;
},

/**
 * Load image if not already lloaded or loading
 *
 * @param object options Callback options object{onStart:function(){},onComplete:function(){}}
 * @return void
 */
load:function(options)
{
if (!this._img){
if (options.onStart){
options.onStart();
}

this._state = AnimationFrameState.STATE_LOADING;

this._img = new Element('img',{
"src":this._src
});
this._img.setStyle({
"zIndex":1
});

this._img.onload = function(event){
this._state = AnimationFrameState.STATE_LOADED;

if (options.onComplete){
options.onComplete();
}
}.bind(this);
}
}

});


/**
 * Animation object holding frame objects and
 * information about animation dimensions
 */
var Animation = Class.create({

/**
 * Class constructor
 *
 * @param array frames Array of frames [optional]
 * @return Animation
 */
initialize:function(frames)
{
// list of animation frames
this._frames = [];
this._duration = null;

// animation dimension information
this._size ={
width:400,
height:300
};
if (Object.isArray(frames)){
for (var i = 0;i < frames.length;i++){
this._frames.push(frames[i]);
}
}

return this;
},

getDuration:function()
{   
        if(this._duration == null){
            this._duration = 0;
            for (var i = 0;i < this._frames.length;i++){
                this._duration += this._frames[i].getDuration();
           }
       }       
return this._duration;
},

/**
 * Add frame to the current list of frames
 *
 * @param AnimationFrame frame Frame object to add
 * @return Animation
 */
addFrame:function(url,duration)
{
var frame = new AnimationFrame(url,duration);
this._frames.push(frame);
return this;
},

/**
 * Get list of current animation frames
 *
 * @return array
 */
getFrames:function()
{
return this._frames;
},


loadFromUrl:function(url)
{
var ajax = new Ajax.Request(url,{
method:'post',
asynchronous:false,
onSuccess:function(r){
var frames = r.responseText.evalJSON();

if (Object.isArray(frames) && (frames.length > 0)){
for (var i = 0;i < frames.length;i++){
var frame = frames[i];
this.addFrame(frame.url,frame.duration);
}
}
}.bind(this)
});
},

/**
 * Set animation size (width and height)
 *
 * @param integer width  Width of animation frames
 * @param integer height Height of animation frames
 * @return Animation
 */
setSize:function(width,height)
{
this.setWidth(width);
this.setHeight(height);
return this;
},

/**
 * Set width of animation frames
 *
 * @param integer width  Width of animation frames
 */
setWidth:function(width)
{
this._size.width = parseInt(width,10);
return this;
},

/**
 * Get width of animation frames
 *
 * @return integer
 */
getWidth:function()
{
return this._size.width;
},

/**
 * Set height of animation frames
 *
 * @param integer height Height of animation frames
 */
setHeight:function(height)
{
this._size.height = parseInt(height,10);
return this;
},

/**
 * Get height of animation frames
 *
 * @return integer
 */
getHeight:function()
{
return this._size.height;
}

});


/**
 * Animation player state constants' object
 */
var AnimationPlayerState ={

// animation player state
STATE_STOPPED:0,
STATE_PLAYING:1,
STATE_PAUSED:2,
STATE_SEEKING:3

};


/**
 * Animation player used to playback Animation objects
 */
var AnimationPlayer = Class.create({

/**
 * Class constructor
 *
 * @param HTMLDivElement|string container Id or div itself to hold the player
 * @param object options                  Custom option override
 * @parem Animation animation             Animation object (with frames)
 * @return AnimationPlayer
 */
initialize:function(container,options,animation)
{
// main container div
this._container = null;

// find the animation target container
this._target_container = $(container);

// animation image (frame) container
this._animation_container = null;

// Animation object
this._animation = animation;

// information about animation frames
this._frames ={
"list":[],
"count":0,
"loaded":0,
"current":null
};

// current percentage of loaded animations
this._load_progress = 0;

// large center loading image options
this._loading ={
"img":null,
"width":0,
"height":0
};

// small corner loading image options
this._loading_small ={
"img":null,
"width":0,
"height":0
};

// Control.Slider object
this._slider = null;

// slider buffer div
this._slider_buffer = null;

// window timeout pointer
this._timeout = null;

// current player state
this._state = AnimationPlayerState.STATE_STOPPED;

// custom player options
this.options ={
"play":true,
"loop":false,
"slider":true,
"preload":false,
"loading":{
"large":{
"url":null
},
"small":{
"url":null,
"position":'topright'
}
},
"dataSource":null,
"onAnimationFinished":null,
"onAnimationLoaded":null,
"onFrameChanged":null,
"onSliderSlide":null,
"onSliderChange":null,
"onInitialized":null
};

// override options with user defined ones
Object.extend(this.options,options ||{});

// throw an exception if there are no frames in the animation
if (animation){
if (animation.getFrames().length === 0){
throw "Animation does not contain frames to play!";
}else{
this._initPlayer();
}
}else{
if (this.options.dataSource){
this._loadFromUrl(this.options.dataSource);
}else{
throw "Animation does not contain frames to play nor has the data source been defined";
}
}
},

/**
 * Initialize player after all required elements have been created
 *
 * @return void
 */
_initPlayer:function()
{
// create player container
this._initContainer();

// reset background image of the target container
this._target_container.setStyle({
"backgroundImage":"none"
});

// append player container to the target container
this._target_container.appendChild(this._container);

// save animation frames
this._frames.list = this._animation.getFrames();

// save frame count
this._frames.count = this._frames.list.length;

// create center loading div (if defined in options)
if (this.options.loading.large.url){
this._initLoading();
}

// create small corner loading div (if defined in options)
if (this.options.loading.small.url){
this._initLoadingSmall();
}

// create slider (if defined in options)
if (this.options.slider){
this._initSlider();
}

// execute user defined callback
if (this.options.onInitialized && Object.isFunction(this.options.onInitialized)){
this.options.onInitialized(this);
}

// preload images if defined in options
if (this.options.preload){
// preload all frames
this.preload();
}else{
// play if auto play is enabled
if (this.options.play){
// if no frames need to be preloaded
if (this.options.preload === false){
this.play();
}else{
// preload the required number of frames and play
this.preload();
}
}
}
},

/**
 * Load animation frames from
 */
_loadFromUrl:function(url)
{
var ajax = new Ajax.Request(url,{
method:'post',
asynchronous:true,
onSuccess:function(r){
var frames = r.responseText.evalJSON();

if (Object.isArray(frames) && (frames.length > 0)){
this._animation = new Animation();

frames.each(function(frame){
this._animation.addFrame(frame.url,frame.duration);
}.bind(this));

this._initPlayer();
}
}.bind(this)
});
},

/**
 * Initialize animation player container
 *
 * @return AnimationPlayer
 */
_initContainer:function()
{
// create another container inside the wrapper div
this._container = new Element('div',{
"class":'animation_player_container'
});

// set width and height of the inner container to the one of animation
this._container.setStyle({
"width":this._animation.getWidth() + 1 + 'px',
"position":'relative'
});

// create another container inside the wrapper div
this._animation_container = new Element('div',{
"class":'animation_container'
});
this._container.appendChild(this._animation_container);

// set width and height of the inner container to the one of animation
this._animation_container.setStyle({
"width":this._animation.getWidth() + 'px',
"height":this._animation.getHeight() + 'px',
"position":'relative'
});

// initialize slider container
this._slider_container = null;

return this;
},

/**
 * Initialize large center loading div
 *
 * @return AnimationPlayer
 */
_initLoading:function()
{
// extract the image source
var loading_img_src = this.options.loading.large.url;

// create the image element
this._loading.img = new Element('img',{
"src":loading_img_src
});

this._loading.img.onload = function(event){
// save dimension parameters
this._loading.width = this._loading.img.width;
this._loading.height = this._loading.img.height;

// center and hide the loading image
var top = (this._animation.getHeight() / 2) - (this._loading.height / 2);
var left = (this._animation.getWidth() / 2) - (this._loading.width / 2);

// set image style
this._loading.img.setStyle({
"display":'none',
"position":'absolute',
"top":top + 'px',
"left":left + 'px',
"zIndex":1000
});
this._animation_container.appendChild(this._loading.img);
}.bind(this);

return this;
},

/**
 * Initialize small corner loading div
 *
 * @return AnimationPlayer
 */
_initLoadingSmall:function()
{
var loading_small_image_src = this.options.loading.small.url;

this._loading_small.img = new Element('img',{
"src":loading_small_image_src
});

this._loading_small.img.onload = function(event){
this._loading_small.width = this._loading_small.img.width;
this._loading_small.height = this._loading_small.img.height;

var distance = 5;

this._loading_small.img.setStyle({
"display":'none',
"position":'absolute',
"zIndex":1000
});

// position the loading image
switch (this.options.loading.small.position){
case 'topleft':
this._loading_small.img.setStyle({
"top":distance + 'px',
"left":distance + 'px'
});
break;

case 'bottomleft':
this._loading_small.img.setStyle({
"top":this._animation.getHeight() - this._loading_small.height - distance + 'px',
"left":distance + 'px'
});
break;

case 'bottomright':
this._loading_small.img.setStyle({
"top":this._animation.getHeight() - this._loading_small.height - distance + 'px',
"right":distance + 'px'
});
break;

case 'center':
// center and hide the loading image
var top = (this._animation.getHeight() / 2) - (this._loading_small.height / 2);
var left = (this._animation.getWidth() / 2) - (this._loading_small.width / 2);

// set image style
this._loading_small.img.setStyle({
"top":parseInt(top) + 'px',
"left":parseInt(left) + 'px'
});
break;

case 'topright':
default:
this._loading_small.img.setStyle({
"top":distance + 'px',
"right":distance + 'px'
});
break;

}

this._container.appendChild(this._loading_small.img);
}.bind(this);

return this;
},

/**
 * Initialize slider element
 *
 * @return AnimationPlayer
 */
_initSlider:function()
{
// return if the slider has already been created
if (this._slider){
return;
}

// create the slider container
this._slider_container = new Element('div',{
"class":'animation_player_slider_container'
});
this._container.appendChild(this._slider_container);

// create the track div
var track = new Element('div',{
"class":'animation_player_slider_track'
});
this._slider_container.appendChild(track);

// create the slider buffer div
this._slider_buffer = new Element('div',{
"class":'animation_player_buffer'
});
track.appendChild(this._slider_buffer);

// create the slider div
var slider = new Element('div',{
"class":'animation_player_slider_slider'
});
track.appendChild(slider);

// calculate one percent in pixels
var one_perc = track.getWidth() / this._frames.count;

// instantiate the slider object
this._slider = new Control.Slider(slider,track,{
axis:'hodizontal',
range:$R(0,this._frames.count),
increment:one_perc,
alignX:0,
alignY:-2,
disabled:false
});

// define jump-to-position functionality
this._slider_buffer.onclick = function(event){
if (this._slider.disabled){
return false;
}

var e = event || window.event;

// get x position of pointer click
var x = e.layerX;

// get progress percentage of where the user clicked
var percentage = x / this._slider.trackLength;

// calculate index of the frame to display
var frame_index = parseInt(this.getAnimationFrameCount() * percentage,10);

// check how many frames in a row have been loaded
var first_frames_loaded = this.getStartingFramesLoaded();

// only allow clicks inside loaded frames area
if (frame_index <= first_frames_loaded){
this._slider.setValue(frame_index);
this._showFrame(frame_index);

// if the player was playing before then continue playing
if (this._state == AnimationPlayerState.STATE_PLAYING){
this.play();
}
}else{
// cancel the click
Event.stop(event);
return false;
}
}.bind(this);

// disable clicks on the trackbar
Event.stopObserving(this._slider.track,"mousedown",this._slider.eventMouseDown);

// update frame on dragging the slider
this._slider.options.onSlide = function(position){
// convert position to the integer
position = parseInt(position,10);

// return false if the position hasn't changed
if (position == this._frames.current){
return;
}

var starting_frames_loaded = this.getStartingFramesLoaded();
if (position > starting_frames_loaded){
position = starting_frames_loaded;
this._slider.setValue(position);
}

this._state = AnimationPlayerState.STATE_SEEKING;
this._showFrame(position);

if (this.options.onSliderSlide && Object.isFunction(this.options.onSliderSlide)){
this.options.onSliderSlide(position,this);
}
}.bind(this);

// execute user defined event handler
this._slider.options.onChange = function(position){
// convert position to the integer
position = parseInt(position,10);

// if custom even handler is defined
if (this.options.onSliderChange && Object.isFunction(this.options.onSliderChange)){
// execute user defined callback
this.options.onSliderChange(position,this);
}

if (this._slider.dragging && this.options.onSliderChangeManual && Object.isFunction(this.options.onSliderChangeManual)){
this.options.onSliderChangeManual(position,this);
}
}.bind(this);

return this;
},

/**
 * Preload all unloaded frames
 *
 * @return AnimationPlayer
 */
preload:function()
{
// show large center loading while preloading
this.showLoading();

// loop through all frames
this._frames.list.each(function(frame){
// check if the frame has not yet been loaded
if (frame.getState() == AnimationFrameState.STATE_NONE){
// start loading the frame
frame.load({
onComplete:function(){
// mark frame as loaded
this._onFrameLoaded();

// if all frames have been loaded
if (this.getFramesLoaded() == this.getAnimationFrameCount()){
// hide large center loading
this.hideLoading();

// start playing (if required)
if (this.options.play){
this.play();
}else{
this.stop();
}

// not all frames have been yet loaded
}else{
// if preload is number of frames
if (Object.isInteger(this.options.preload)){
// start playback if number of first frames loaded is the same or greater than the required number
if ((this.options.preload > 0) && (this.getStartingFramesLoaded() >= this.options.preload) && this.options.play){
this.play();
}

}else{
// if preload is percentage
if (Object.isPercentage(this.options.preload)){
var loadprogress = this.getStartingFramesLoadProgress();
var preload = Object.percentageToInt(this.options.preload);

// start playback if percentage of first frames loaded is the same or greater than the required amount
if ((preload > 0) && (loadprogress >= preload) && this.options.play){
this.play();
}
}
}
}
}.bind(this)
});
}
}.bind(this));

return this;
},

/**
 * Event happening when a frame has finished loading
 *
 * @return AnimationPlayer
 */
_onFrameLoaded:function()
{
// increment number of frames that have been loaded
this._frames.loaded++;

// set loading progress to the percentage of loaded animations
this._load_progress = parseInt(this._frames.loaded / this.getAnimationFrameCount() * 100,10);

// update slider buffer
this._updateSliderBufferProgress();

// if all frames have been loaded
if ((this._frames.loaded == this._frames.count)){
// hide all loading images
this.hideLoading();
this.hideLoadingSmall();

if (this._slider_buffer){
// flash the slider buffer
new Effect.Highlight(this._slider_buffer,{
startcolor:'#22FC11',
endcolor:'#A0A6FF',
duration:1.5
});
}

// execute user defined event handler
if (this.options.onAnimationLoaded && Object.isFunction(this.options.onAnimationLoaded)){
this.options.onAnimationLoaded(this);
}
}

return this;
},

/**
 * Update the width of the slider buffer
 *
 * @return AnimationPlayer
 */
_updateSliderBufferProgress:function()
{
// if the slider and buffer have been initialized
if (this._slider_buffer){
// calculate number of animations loaded in a row
var loaded = this.getStartingFramesLoaded();

// calculate buffer width percentage
var percentage = parseInt(loaded / this.getAnimationFrameCount() * 100,10);

// change width of the buffer
this._slider_buffer.setStyle({
"width":this.getLoadProgress() + '%'
});
}

return this;
},

/**
 * Load all frames that have not yet been loaded
 *
 * @return AnimationPlayer
 */
_loadPendingFrames:function()
{
// return if all frames have been loaded
if (this.getFramesLoaded() == this.getAnimationFrameCount()){
return false;
}

// loop through all frames
this._frames.list.each(function(frame){
// if the frame has not been loaded
if (frame.getState() == AnimationFrameState.STATE_NONE){
// load it
frame.load({
onComplete:function(){
// mark frame as loaded
this._onFrameLoaded();

// load the rest of pending frames
if (this.getFramesLoaded() < this.getAnimationFrameCount()){
this._loadPendingFrames();
}
}.bind(this)
});
}
}.bind(this));

return this;
},

/**
 * Show frame with the specified index
 *
 * @param integer index Index of the frame to display
 * @return AnimationPlayer|boolean
 */
_showFrame:function(index)
{
// return if trying to display the current frame
if (index == this._frames.current){
return false;
}

// get the AnimationFrame object
var frame = this._frames.list[index];

// if frame was found
if (frame){
if (!frame.getImage()){
return false;
}

// set current index to the new index
this._frames.current = index;

this.hideLoading();

// clear the container
this._animation_container.update();

// append frames HTMLImageElement to the container
this._animation_container.appendChild(frame.getImage());

// if slider exists,set it's position to the index
if (this._slider){
this._slider.setValue(index);
}

// execute user defined event handler
if (this.options.onFrameChanged && Object.isFunction(this.options.onFrameChanged)){
this.options.onFrameChanged(index,this);
}
}

return this;
},

/**
 * Show next frame in the queue
 *
 * @return AnimationPlayer|boolean
 */
_showNextFrame:function()
{
// clear the existing timeout
clearTimeout(this._timeout);

// show first frame if the playback is stopped or hasn't started
if (this._frames.current === null){
var next_index = 0;

// the the index of the next frame in queue
}else{
var next_index = this._frames.current + 1;

// if current frame is already the last frame
if (next_index >= this._frames.count){
// execute user defined event handler
if (this.options.onAnimationFinished && Object.isFunction(this.options.onAnimationFinished)){
this.options.onAnimationFinished(this);
}

// start from the first frame is looping is enabled
if (this.options.loop){
var next_index = 0;

// lopping is disabled
}else{
// set state to STOPPED
this._state = AnimationPlayerState.STATE_STOPPED;
return false;
}
}
}

// get frame to be played
var frame = this._frames.list[next_index];

// if frame was found
if (frame){
// if frame's HTMLImageElement is already loaded
if (frame.getState() == AnimationFrameState.STATE_LOADED){
// hide the corner loading
this.hideLoadingSmall();

// if animation is currently playing
if (this._state == AnimationPlayerState.STATE_PLAYING){
// display the specified frame
this._showFrame(next_index);

// queue the following frame
this._timeout = setTimeout(this._showNextFrame.bind(this),frame.getDuration());
}

// frame's HTMLImageElement has not yet been loaded
}else{
// still loading
if (frame.getState() == AnimationFrameState.STATE_LOADING){
// show corner loading
this.showLoadingSmall();

// retry after 10 miliseconds
setTimeout(this._showNextFrame.bind(this),10);

// frame has not even started loading
}else{
// show corner loading
this.showLoadingSmall();

// load the frame
frame.load({
onComplete:function(){
// mark frame as loaded
this._onFrameLoaded();

// display the frame if the animation is playing
if (this._state == AnimationPlayerState.STATE_PLAYING){
// display the specified frame
this._showFrame(next_index);

// queue the following frame
this._timeout = setTimeout(this._showNextFrame.bind(this),frame.getDuration());
}

// preload other pending frames if there are any left
if (this.getFramesLoaded() < this.getAnimationFrameCount()){
this._loadPendingFrames();
}
}.bind(this)
});
}
}
}

return this;
},

/**
 * Get the animation object
 *
 * @return Animation
 */
getAnimation:function()
{
return this._animation;
},

/**
 * Get current load progress (0 - 100)
 *
 * @return integer
 */
getLoadProgress:function()
{
return this._load_progress;
},

/**
 * Get total (non-sequential) number of frames loaded
 *
 * @return integer
 */
getFramesLoaded:function()
{
return this._frames.loaded;
},

/**
 * Get number of frames loaded from the start with no unloaded inbetween
 *
 * @return integer
 */
getStartingFramesLoaded:function()
{
// assume that none has been loaded
var loaded = 0;

// loop throught each frame and check the state
this._frames.list.each(function(frame){
if (frame.getState() == AnimationFrameState.STATE_LOADED){
loaded++;
}
});

return loaded;
},

getStartingFramesLoadProgress:function()
{
var total = this.getAnimationFrameCount();
var loaded = this.getStartingFramesLoaded();
return parseInt(loaded / total * 100,10);
},

/**
 * Get number of frames in the current animation
 *
 * @return integer
 */
getAnimationFrameCount:function()
{
return this._frames.count;
},

/**
 * Start playback
 *
 * @return AnimationPlayer
 */
play:function()
{
//return if the animation is already playing
if (this._state == AnimationPlayerState.STATE_PLAYING){
return false;
}

// start from the first frame if the playback is stopped
if (this._state == AnimationPlayerState.STATE_STOPPED){
this._frames.current = null;
}

// set state to PLAYING
this._state = AnimationPlayerState.STATE_PLAYING;

// display the next frame after the current one
this._showNextFrame();

return this;
},

/**
 * Pause playback
 *
 * @return AnimationPlayer
 */
pause:function()
{
// don't play the following frames
clearTimeout(this._timeout);

// set state to PAUSED
this._state = AnimationPlayerState.STATE_PAUSED;

// load pending frames while waiting
this._loadPendingFrames();

return this;
},

/**
 * Stop playback
 *
 * @return AnimationPlayer
 */
stop:function()
{
// don't play the following frames
clearTimeout(this._timeout);

// set state to STOPPED
this._state = AnimationPlayerState.STATE_STOPPED;

// load pending frames while waiting
this._loadPendingFrames();

// reset current frame
this._frames.current = null;

// go to the first frame
this._showFrame(0);

return this;
},

/**
 * Stop/resume the playback
 *
 * @return AnimationPlayer
 */
playPause:function()
{
// play if it's not already playing
if (this._state != AnimationPlayerState.STATE_PLAYING){
this.play();
}else{
this.pause();
}

return this;
},

/**
 * Show large center loading image
 *
 * @return AnimationPlayer
 */
showLoading:function()
{
// if the loading image exists
if (this._loading.img){
// hide the small corner loading image
this.hideLoadingSmall();

// display the center loading image
this._loading.img.style.display = 'block';
}

return this;
},


/**
 * Hide large center loading image
 *
 * @return AnimationPlayer
 */
hideLoading:function()
{
// if the loading image exists
if (this._loading.img){
// hide the large center loading image
this._loading.img.style.display = 'none';
}

return this;
},

/**
 * Show small corner loading image
 *
 * @return AnimationPlayer
 */
showLoadingSmall:function()
{
// if the loading image exists
if (this._loading_small.img){
// if the large center loading image is not currently being displayed
if (this._loading.img && (this._loading.img.style.display != 'block')){
// display the small corner loading image
this._loading_small.img.style.display = 'block';
}
}

return this;
},


/**
 * Hide small corner loading image
 *
 * @return AnimationPlayer
 */
hideLoadingSmall:function()
{
// if the loading image exists
if (this._loading_small.img){
// hide the small corner loading image
this._loading_small.img.style.display = 'none';
}

return this;
},

/**
 * Show the slider if it is initialized
 *
 * @return AnimationPlayer
 */
showSlider:function()
{
if (this._slider_container){
this._slider_container.style.display = 'block';
}
return this;
},

/**
 * Hide the slider if it is initialized
 *
 * @return AnimationPlayer
 */
hideSlider:function()
{
if (this._slider_container){
this._slider_container.style.display = 'none';
}
return this;
},

/**
 * Hide/show slider based on its current state
 *
 * @return AnimationPlayer
 */
toggleSlider:function()
{
if (this._slider_container.style.display == 'none'){
this.showSlider();
}else{
this.hideSlider();
}
return this;
},

enableSlider:function()
{
this._slider.setEnabled();
},

disableSlider:function()
{
this._slider.setDisabled();
},

toggleSliderEnabled:function()
{
if (this._slider.disabled){
this._slider.setEnabled();
}else{
this._slider.setDisabled();
}
},

/**
 * Get current player state
 *
 * @return integer
 */
getState:function()
{
return this._state;
},

/**
 *
 */
destroy:function()
{
try{
clearTimeout(this._timeout);
Element.remove(this._container);
}catch (e){
throw "Player already destroyed!";
}
}

});


Object.extend(Object,{
isInteger:function(object){
if (!Object.isUndefined(object)){
return (/^[0-9]+$/).test(object.toString());
}
return false;
},

isPercentage:function(object){
if (!Object.isUndefined(object)){
return (/^[0-9]+\%$/).test(object.toString());
}
return false;
},

percentageToInt:function(object){
return parseInt(object.toString().gsub('%',''),10);
}
});/* [INCLUDE FILE] sketchstar/moreByPanel_v2 */
var targetDiv;
var _ANIMATIONS = new Array();
var _CACHE_PREV_ANIMATIONS=new Array();
var _CACHE_NEXT_ANIMATIONS=new Array();
var _DIR=null;
var _PREDIV;
var _LASTID;
var _CURRENTDIV;
var _COUNTER=0;
var _TOTALCOUNT=0;
var _ENABLED=true;
function cacheNextResponse(){
resetCache();
cachePrevPage();
cacheNextPage();
}
function resetCache(){
_CACHE_PREV_ANIMATIONS=new Array();
_CACHE_NEXT_ANIMATIONS=new Array();
}
function cachePrevPage(){
var url='/sketch-star/ss2/scripts/top3Panel/getMoreByAnimations.php?userId='+_USERID+'&currentId='+_ANIMATIONS[0].id+'&ft=0&dir=0';
var myAjax = new Ajax.Request(
url,{
method:'post',
onSuccess:function(r){
var json = r.responseText.evalJSON();
if (json.success){
loadAnimationsCache(json.result,0);
}else{
loadAnimationsCache(false,0);
}
},
onFailure:function(r){
alert('Failure:' + r.responseText);
}
});
}
function cacheNextPage(){
var url='/sketch-star/ss2/scripts/top3Panel/getMoreByAnimations.php?userId='+_USERID+'&currentId='+_ANIMATIONS[2].id+'&ft=0&dir=1';
var myAjax = new Ajax.Request(
url,{
method:'post',
onSuccess:function(r){
var json = r.responseText.evalJSON();
if (json.success){
loadAnimationsCache(json.result,1);
}else{
loadAnimationsCache(false,1);
}
},
onFailure:function(r){
alert('Failure:' + r.responseText);
}
});
}
function loadAnimationsCache(list,dir)
{
if (list !== false){
if(dir==0){
list.each(function(l){
_CACHE_PREV_ANIMATIONS.push(l);
});
}
if(dir==1){
list.each(function(l){
_CACHE_NEXT_ANIMATIONS.push(l);
});
}
}
}
function SS_MAPgoNext(){
if(_ENABLED){
_DIR=1;
if(_CACHE_NEXT_ANIMATIONS.length>0){
loadAnimations(_CACHE_NEXT_ANIMATIONS);
_ENABLED=false;
}else{
_LASTID=_ANIMATIONS[2].id;
var url='/sketch-star/ss2/scripts/top3Panel/getMoreByAnimations.php?userId='+_USERID+'&currentId='+_LASTID+'&ft=0&dir='+_DIR
load(url);
}
}
}
function SS_MAPgoPrev(){
if(_ENABLED){
_DIR=0;
if(_CACHE_PREV_ANIMATIONS.length>0){
loadAnimations(_CACHE_PREV_ANIMATIONS);
_ENABLED=false;
}else{
_LASTID=_ANIMATIONS[0].id;
var url='/sketch-star/ss2/scripts/top3Panel/getMoreByAnimations.php?userId='+_USERID+'&currentId='+_LASTID+'&ft=0&dir='+_DIR
load(url);
}
}
}
function _MBC_MOTION_FINISH(){
_ENABLED=true;
}
function drawDivs(div){
targetDiv=$(div);
if(_CURRENTDIV!=null){
_PREDIV=_CURRENTDIV;
}
_CURRENTDIV = new Element('div',{
style :'position:absolute',
id :"page"+_COUNTER,
backgroundColor:"#FF0000"
});
_COUNTER++;
for(var i=0;i<_ANIMATIONS.length;i++){
var resultDiv=drawContainerDiv(_ANIMATIONS[i]);
_CURRENTDIV.appendChild(resultDiv);
}
if(_DIR==null){
targetDiv.appendChild(_CURRENTDIV);
}
if(_DIR==1){
var me=new Effect.Move(_PREDIV,{x:-620,y:0,duration:1,afterFinish:_MBC_MOTION_FINISH});
_CURRENTDIV.setStyle({
left :'620px'
});
targetDiv.appendChild(_CURRENTDIV);
new Effect.Move(_CURRENTDIV,{x:-620,y:0,duration:1});

}
if(_DIR==0){
new Effect.Move(_PREDIV,{x:620,y:0,duration:1,afterFinish:_MBC_MOTION_FINISH});
_CURRENTDIV.setStyle({
left :'-620px'
});
targetDiv.appendChild(_CURRENTDIV);
new Effect.Move(_CURRENTDIV,{x:620,y:0,duration:1});
}
showNav();
}

function traceDiv(div){
alert(div.id);
var arr=div.childElements()
for(var i=0;i<arr.length;i++){
alert(arr[i].id);
}
targetDiv.remove(div);
_CURRENTDIV.setStyle({
left:'0px'
});
if(div!=targetDiv){
traceDiv(targetDiv);
}
}

function removeAllDivs(){
if(_TOTALCOUNT>3){
showNav();
}
}
function drawContainerDiv(ob){
var randomnumber=Math.floor(Math.random()*99999)
var topDiv = new Element('div',{
className :'T3PanimationPanel_type1',
id :'animationPanel'+ob.id
});
if(_CURRENT_ID==ob.id){
topDiv.setStyle({
backgroundImage:'url(/sketch-star/ss2/img/layout/selected-animation-bg-v2.gif)'
});
}
if(ob.id<1){
topDiv.setStyle({
backgroundImage:'none',
backgroundColor:'#FFFFFF'
});

return topDiv;
}
//thumbnail image
var thumbNailDiv = new Element('div',{
className :'T3PanimationThumb_type1',
style :'z-index:2'
});
// thumbnail link
var thumbNailLink = new Element('a',{
href :'/sketch-star/en/player.php?id='+ob.id
});
/*thumbNailLink.onmouseover = function(event){
   FadeInPlayBtn(ob.id+"_"+randomnumber);
}
thumbNailLink.onmouseout = function(event){
   FadeOutPlayBtn(ob.id+"_"+randomnumber);
}*/
// thumbnail image
var thumbNailImage = new Element('img',{
src:'/sketch-star/ss-lib/thumb.php?id='+ob.id,
title :"See '"+ob.titleFull+"' by "+ob.authorNameFull,
className :"thumb",
id :"thumb"+ob.id
});

thumbNailLink.appendChild(thumbNailImage);
thumbNailDiv.appendChild(thumbNailLink);
topDiv.appendChild(thumbNailDiv);

thumbNailLink.observe('mouseover',function(){
$('thumb'+ob.id).src = '/sketch-star/ss-lib/thumb.php?type=animated&id=' + ob.id;
});
thumbNailLink.observe('mouseout',function(){
$('thumb'+ob.id).src = '/sketch-star/ss-lib/thumb.php?id=' + ob.id;
});

var titleDiv=new Element('div',{
className :'T3PanimationTitle_type1'
});
var titleLink = new Element('a',{
href :'/sketch-star/en/player.php?id='+ob.id,
title :"See '"+ob.titleFull+"' by "+ob.authorNameFull
});
titleLink.className='buttonLink';
titleLink.update(ob.title);
titleDiv.appendChild(titleLink);
topDiv.appendChild(titleDiv);
var starImageDiv = new Element('div',{
className :'T3PauthorThumb_type1'
});
var starImage = new Element('img',{
src:"/sketch-star/ss2/img/layout/top3panel/star15x15.png",
title :"Votes"
});
var starsDiv = new Element('div',{
className :'T3PauthorName_type1'
});
starsDiv.update(ob.votes);
starImageDiv.appendChild(starImage);
topDiv.appendChild(starImageDiv);
topDiv.appendChild(starsDiv);
var viewsImageDiv = new Element('div',{
className :'T3PStar_type1'
});
var viewsImage = new Element('img',{
src:"/sketch-star/ss2/img/layout/top3panel/eye15x15.png",
title :"Views"
});
var viewsDiv = new Element('div',{
className :'T3PVotes_type1'
});
viewsDiv.update(ob.views);
viewsImageDiv.appendChild(viewsImage);
topDiv.appendChild(viewsImageDiv);
topDiv.appendChild(viewsDiv);
/*var finishedImageDiv = new Element('div',{
className :'T3PClock_type1'
});
var finishedImage = new Element('img',{
src:"/sketch-star/ss2/img/layout/icons/calendar15x15.png",
title :"Publishing Date"
});*/
var finishedDiv = new Element('div',{
className :'T3Date_type1'
});
finishedDiv.update(ob.finished);
/*finishedImageDiv.appendChild(finishedImage);
topDiv.appendChild(finishedImageDiv);*/
topDiv.appendChild(finishedDiv)
/*var hoverImageDiv = new Element('div',{
style :'position:absolute;left:10px;top:23px;z-index:5;display:none;',
id :"hover"+ob.id+"_"+randomnumber
});
var hoverImage = new Element('img',{
src:"/sketch-star/ss2/img/layout/animationPanel/play_hover_btn_v2.gif",
title :"See '"+ob.titleFull+"' by "+ob.authorNameFull
});
var hoverImageLink = new Element('a',{
href :'/sketch-star/en/player.php?id='+ob.id,
title :"See '"+ob.titleFull+"' by "+ob.authorNameFull
});
hoverImageLink.onmouseover = function(event){
   FadeInPlayBtn(ob.id+"_"+randomnumber);
}
hoverImageLink.onmouseout = function(event){
   FadeOutPlayBtn(ob.id+"_"+randomnumber);
}
hoverImageLink.appendChild(hoverImage);
hoverImageDiv.appendChild(hoverImageLink);
topDiv.appendChild(hoverImageDiv);*/
if(ob.editorsPick==1){
var EPImageDiv = new Element('div',{
className :'EPBadge',
style :'position:absolute;top:3px;left:165px;'
});
var EPImage = new Element('img',{
src:"/sketch-star/ss2/img/layout/top3panel/epBadgeModuleSmall.gif",
title :"Editor's Pick"
});
EPImageDiv.appendChild(EPImage);
topDiv.appendChild(EPImageDiv);
}
return topDiv;
}
function hideNav(){
$("SS_MAP_LEFT").setStyle({
display :'none'
});
$("SS_MAP_RIGHT").setStyle({
display :'none'
});
$("SS_MAP_MIDDLE").setStyle({
display :'none'
});
$("SS_MAP_nav").setStyle({
backgroundImage:'none'
})
}
function showNav(){
$("SS_MAP_LEFT").setStyle({
display :''
});
$("SS_MAP_MIDDLE").setStyle({
display :''
});
$("SS_MAP_RIGHT").setStyle({
display :''
});
$("SS_MAP_nav").setStyle({
backgroundImage:'url(/sketch-star/ss2/img/layout/longpanel_footer_v2.gif)'
});
}
function loadAnimations(list){
_ANIMATIONS=new Array();
if (list !== false){
var a = '';
list.each(function(l){
_ANIMATIONS.push(l);
});

if (_ANIMATIONS.length){
drawDivs('SS_MAP_target');

}else{
alert('No animations to display!');
}

}else{
cont.update('Error loading list of animations:' + list);
}
if(_TOTALCOUNT>3){
cacheNextResponse();
if(_DIR==null){
showNav();
}

}else{
$('SS_MAP_nav').setStyle({display:'none'});
}

$('SS_MAP_loading').setStyle({
display :'none'
});
}

function loadFirstTime(){
load(_URL);
}

function load(url){
hideNav();
resetCache();
$('SS_MAP_loading').setStyle({
display :'block'
});
var myAjax = new Ajax.Request(
url,{
method:'post',
onSuccess:function(r){
var json = r.responseText.evalJSON();
if (json.success){
_TOTALCOUNT=json.totalCount;
loadAnimations(json.result);

}else{
loadAnimations(false);
}
},
onFailure:function(r){
alert('Failure:' + r.responseText);
}
});
}
Event.observe(window,'load',loadFirstTime,false);/* [INCLUDE FILE] sketchstar/adminFunctions */
function contestVote(id){
$('contestVoteMake').update("Voting on the contest...");
$('contestVoteMake').className="btnWait";
var options ={
method:"post",
    parameters:"id="+id,
onSuccess:function (oXHR,oJson){
        $('contestVoteMake').update("Your vote has been casted");;
    },
    onFailure:function (oXHR,oJson){
        alert("An error occurred:" + oXHR.statusText);
    }
};
var oRequest = new Ajax.Request("/sketch-star/ss2/scripts/giveContestVote.php?id="+id,options);
}

function makeStaffPick(id){
$('staffPickMake').update("Marking as Editor's Pick...");
$('staffPickMake').className="btnWait";
var options ={
method:"post",
    parameters:"id="+id,
onSuccess:function (oXHR,oJson){
alert("response:"+oXHR.responseText);
        $('staffPickMake').update("Marked as Editor's Pick");
    },
    onFailure:function (oXHR,oJson){
        alert("An error occurred:" + oXHR.statusText);
    }
};
var oRequest = new Ajax.Request("/sketch-star/ss2/scripts/giveEditorsPick.php?id="+id,options);
}

function contestReject(id){
    $('contestRejectMake').update("Removing...");
$('contestRejectMake').className="btnWait";
    var options ={
method:"post",
    parameters:"id="+id,
onSuccess:function (oXHR,oJson){
            $('contestRejectMake').update("Removed from contest");
    },
    onFailure:function (oXHR,oJson){
        alert("An error occurred:" + oXHR.statusText);
    }
};
var oRequest = new Ajax.Request("/sketch-star/ss2/scripts/removeContest.php?id="+id,options);
}

function deleteAnimation(id){
$('deleteAnimation').update("Deleting...");
$('deleteAnimation').className="btnWait";
    var options ={
method:"post",
    parameters:"id="+id,
onSuccess:function (oXHR,oJson){
            $('deleteAnimation').update("Deleted!");
    },
    onFailure:function (oXHR,oJson){
        alert("An error occurred:" + oXHR.statusText);
    }
};
var oRequest = new Ajax.Request("/sketch-star/ss2/scripts/sendToTrash.php?id="+id,options);
}/* [INCLUDE FILE] sketchstar/jquery */
/*!
 * jQuery JavaScript Library v1.4.1
 * http://jquery.com/
 *
 * Copyright 2010,John Resig
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * Includes Sizzle.js
 * http://sizzlejs.com/
 * Copyright 2010,The Dojo Foundation
 * Released under the MIT,BSD,and GPL Licenses.
 *
 * Date:Mon Jan 25 19:43:33 2010 -0500
 */
(function(z,v){function la(){if(!c.isReady){try{r.documentElement.doScroll("left")}catch(a){setTimeout(la,1);return}c.ready()}}function Ma(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,i){var j=a.length;if(typeof b==="object"){for(var n in b)X(a,n,b[n],f,e,d);return a}if(d!==v){f=!i&&f&&c.isFunction(d);for(n=0;n<j;n++)e(a[n],b,f?d.call(a[n],n,e(a[n],b)):d,i);return a}return j?
e(a[0],b):null}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function ma(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function na(a){var b,d=[],f=[],e=arguments,i,j,n,o,m,s,x=c.extend({},c.data(this,"events").live);if(!(a.button&&a.type==="click")){for(o in x){j=x[o];if(j.live===a.type||j.altLive&&c.inArray(a.type,j.altLive)>-1){i=j.data;i.beforeFilter&&i.beforeFilter[a.type]&&!i.beforeFilter[a.type](a)||f.push(j.selector)}else delete x[o]}i=c(a.target).closest(f,
a.currentTarget);m=0;for(s=i.length;m<s;m++)for(o in x){j=x[o];n=i[m].elem;f=null;if(i[m].selector===j.selector){if(j.live==="mouseenter"||j.live==="mouseleave")f=c(a.relatedTarget).closest(j.selector)[0];if(!f||f!==n)d.push({elem:n,fn:j})}}m=0;for(s=d.length;m<s;m++){i=d[m];a.currentTarget=i.elem;a.data=i.fn.data;if(i.fn.apply(i.elem,e)===false){b=false;break}}return b}}function oa(a,b){return"live."+(a?a+".":"")+b.replace(/\./g,"`").replace(/ /g,"&")}function pa(a){return!a||!a.parentNode||a.parentNode.nodeType===
11}function qa(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var i in f)for(var j in f[i])c.event.add(this,i,f[i][j],f[i][j].data)}}})}function ra(a,b,d){var f,e,i;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&a[0].indexOf("<option")<0&&(c.support.checkClone||!sa.test(a[0]))){e=true;if(i=c.fragments[a[0]])if(i!==1)f=i}if(!f){b=b&&b[0]?b[0].ownerDocument||b[0]:r;f=b.createDocumentFragment();
c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=i?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(ta.concat.apply([],ta.slice(0,b)),function(){d[this]=a});return d}function ua(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Na=z.jQuery,Oa=z.$,r=z.document,S,Pa=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Qa=/^.[^:#\[\.,]*$/,Ra=/\S/,Sa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Ta=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,O=navigator.userAgent,
va=false,P=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,Q=Array.prototype.slice,wa=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(typeof a==="string")if((d=Pa.exec(a))&&(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:r;if(a=Ta.exec(a))if(c.isPlainObject(b)){a=[r.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=ra([d[1]],
[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}}else{if(b=r.getElementById(d[2])){if(b.id!==d[2])return S.find(a);this.length=1;this[0]=b}this.context=r;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=r;a=r.getElementsByTagName(a)}else return!b||b.jquery?(b||S).find(a):c(b).find(a);else if(c.isFunction(a))return S.ready(a);if(a.selector!==v){this.selector=a.selector;this.context=a.context}return c.isArray(a)?this.setArray(a):c.makeArray(a,
this)},selector:"",jquery:"1.4.1",length:0,size:function(){return this.length},toArray:function(){return Q.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){a=c(a||null);a.prevObject=this;a.context=this.context;if(b==="find")a.selector=this.selector+(this.selector?" ":"")+d;else if(b)a.selector=this.selector+"."+b+"("+d+")";return a},setArray:function(a){this.length=0;ba.apply(this,a);return this},each:function(a,b){return c.each(this,
a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(r,c);else P&&P.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(Q.apply(this,arguments),"slice",Q.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};
c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,i,j,n;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(i in e){j=a[i];n=e[i];if(a!==n)if(f&&n&&(c.isPlainObject(n)||c.isArray(n))){j=j&&(c.isPlainObject(j)||c.isArray(j))?j:c.isArray(n)?[]:{};a[i]=c.extend(f,j,n)}else if(n!==v)a[i]=n}return a};c.extend({noConflict:function(a){z.$=
Oa;if(a)z.jQuery=Na;return c},isReady:false,ready:function(){if(!c.isReady){if(!r.body)return setTimeout(c.ready,13);c.isReady=true;if(P){for(var a,b=0;a=P[b++];)a.call(r,c);P=null}c.fn.triggerHandler&&c(r).triggerHandler("ready")}},bindReady:function(){if(!va){va=true;if(r.readyState==="complete")return c.ready();if(r.addEventListener){r.addEventListener("DOMContentLoaded",L,false);z.addEventListener("load",c.ready,false)}else if(r.attachEvent){r.attachEvent("onreadystatechange",L);z.attachEvent("onload",
c.ready);var a=false;try{a=z.frameElement==null}catch(b){}r.documentElement.doScroll&&a&&la()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,"isPrototypeOf"))return false;var b;for(b in a);return b===v||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;
return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return z.JSON&&z.JSON.parse?z.JSON.parse(a):(new Function("return "+a))();else c.error("Invalid JSON:"+a)},noop:function(){},globalEval:function(a){if(a&&Ra.test(a)){var b=r.getElementsByTagName("head")[0]||
r.documentElement,d=r.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(r.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,i=a.length,j=i===v||c.isFunction(a);if(d)if(j)for(f in a){if(b.apply(a[f],d)===false)break}else for(;e<i;){if(b.apply(a[e++],d)===false)break}else if(j)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=
a[0];e<i&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Sa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==
v;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,i=a.length;e<i;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,i=0,j=a.length;i<j;i++){e=b(a[i],i,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=v}else if(b&&!c.isFunction(b)){d=b;b=v}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},
uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[\/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[\/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});O=c.uaMatch(O);if(O.browser){c.browser[O.browser]=true;c.browser.version=O.version}if(c.browser.webkit)c.browser.safari=true;if(wa)c.inArray=function(a,b){return wa.call(b,a)};S=c(r);if(r.addEventListener)L=function(){r.removeEventListener("DOMContentLoaded",
L,false);c.ready()};else if(r.attachEvent)L=function(){if(r.readyState==="complete"){r.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=r.documentElement,b=r.createElement("script"),d=r.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=d.getElementsByTagName("*"),i=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!i)){c.support=
{leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(i.getAttribute("style")),hrefNormalized:i.getAttribute("href")==="/a",opacity:/^0.55$/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:r.createElement("select").appendChild(r.createElement("option")).selected,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};
b.type="text/javascript";try{b.appendChild(r.createTextNode("window."+f+"=1;"))}catch(j){}a.insertBefore(b,a.firstChild);if(z[f]){c.support.scriptEval=true;delete z[f]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function n(){c.support.noCloneEvent=false;d.detachEvent("onclick",n)});d.cloneNode(true).fireEvent("onclick")}d=r.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=r.createDocumentFragment();a.appendChild(d.firstChild);
c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var n=r.createElement("div");n.style.width=n.style.paddingLeft="1px";r.body.appendChild(n);c.boxModel=c.support.boxModel=n.offsetWidth===2;r.body.removeChild(n).style.display="none"});a=function(n){var o=r.createElement("div");n="on"+n;var m=n in o;if(!m){o.setAttribute(n,"return;");m=typeof o[n]==="function"}return m};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=i=null}})();c.props=
{"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ua=0,xa={},Va={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var f=a[G],e=c.cache;if(!b&&!f)return null;f||(f=++Ua);if(typeof b==="object"){a[G]=f;e=e[f]=c.extend(true,
{},b)}else e=e[f]?e[f]:typeof d==="undefined"?Va:(e[f]={});if(d!==v){a[G]=f;e[b]=d}return typeof b==="string"?e[b]:e}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{try{delete a[G]}catch(i){a.removeAttribute&&a.removeAttribute(G)}delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,
a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===v){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===v&&this.length)f=c.data(this[0],a);return f===v&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);
return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===v)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||
a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var ya=/[\n\t]/g,ca=/\s+/,Wa=/\r/g,Xa=/href|src|style/,Ya=/(button|input)/i,Za=/(button|input|object|select|textarea)/i,$a=/^(a|area)$/i,za=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=
c(this);m.addClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className)for(var i=" "+e.className+" ",j=0,n=b.length;j<n;j++){if(i.indexOf(" "+b[j]+" ")<0)e.className+=" "+b[j]}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=c(this);m.removeClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string"||a===v)for(var b=(a||"").split(ca),
d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var i=(" "+e.className+" ").replace(ya," "),j=0,n=b.length;j<n;j++)i=i.replace(" "+b[j]+" "," ");e.className=i.substring(1,i.length-1)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var i=c(this);i.toggleClass(a.call(this,e,i.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,i=0,j=c(this),n=b,o=
a.split(ca);e=o[i++];){n=f?n:!j.hasClass(e);j[n?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(ya," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===v){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||
{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var i=b?d:0;for(d=b?d+1:e.length;i<d;i++){var j=e[i];if(j.selected){a=c(j).val();if(b)return a;f.push(a)}}return f}if(za.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Wa,"")}return v}var n=c.isFunction(a);return this.each(function(o){var m=c(this),s=a;if(this.nodeType===1){if(n)s=a.call(this,o,m.val());
if(typeof s==="number")s+="";if(c.isArray(s)&&za.test(this.type))this.checked=c.inArray(m.val(),s)>=0;else if(c.nodeName(this,"select")){var x=c.makeArray(s);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),x)>=0});if(!x.length)this.selectedIndex=-1}else this.value=s}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return v;if(f&&b in c.attrFn)return c(a)[b](d);
f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==v;b=f&&c.props[b]||b;if(a.nodeType===1){var i=Xa.test(b);if(b in a&&f&&!i){if(e){b==="type"&&Ya.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Za.test(a.nodeName)||$a.test(a.nodeName)&&a.href?0:v;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=
""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&i?a.getAttribute(b,2):a.getAttribute(b);return a===null?v:a}return c.style(a,b,d)}});var ab=function(a){return a.replace(/[^\w\s\.\|`]/g,function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==z&&!a.frameElement)a=z;if(!d.guid)d.guid=c.guid++;if(f!==v){d=c.proxy(d);d.data=f}var e=c.data(a,"events")||c.data(a,"events",{}),i=c.data(a,"handle"),j;if(!i){j=
function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(j.elem,arguments):v};i=c.data(a,"handle",j)}if(i){i.elem=a;b=b.split(/\s+/);for(var n,o=0;n=b[o++];){var m=n.split(".");n=m.shift();if(o>1){d=c.proxy(d);if(f!==v)d.data=f}d.type=m.slice(0).sort().join(".");var s=e[n],x=this.special[n]||{};if(!s){s=e[n]={};if(!x.setup||x.setup.call(a,f,m,d)===false)if(a.addEventListener)a.addEventListener(n,i,false);else a.attachEvent&&a.attachEvent("on"+n,i)}if(x.add)if((m=x.add.call(a,
d,f,m,s))&&c.isFunction(m)){m.guid=m.guid||d.guid;m.data=m.data||d.data;m.type=m.type||d.type;d=m}s[d.guid]=d;this.global[n]=true}a=null}}},global:{},remove:function(a,b,d){if(!(a.nodeType===3||a.nodeType===8)){var f=c.data(a,"events"),e,i,j;if(f){if(b===v||typeof b==="string"&&b.charAt(0)===".")for(i in f)this.remove(a,i+(b||""));else{if(b.type){d=b.handler;b=b.type}b=b.split(/\s+/);for(var n=0;i=b[n++];){var o=i.split(".");i=o.shift();var m=!o.length,s=c.map(o.slice(0).sort(),ab);s=new RegExp("(^|\\.)"+
s.join("\\.(?:.*\\.)?")+"(\\.|$)");var x=this.special[i]||{};if(f[i]){if(d){j=f[i][d.guid];delete f[i][d.guid]}else for(var A in f[i])if(m||s.test(f[i][A].type))delete f[i][A];x.remove&&x.remove.call(a,o,j);for(e in f[i])break;if(!e){if(!x.teardown||x.teardown.call(a,o)===false)if(a.removeEventListener)a.removeEventListener(i,c.data(a,"handle"),false);else a.detachEvent&&a.detachEvent("on"+i,c.data(a,"handle"));e=null;delete f[i]}}}}for(e in f)break;if(!e){if(A=c.data(a,"handle"))A.elem=null;c.removeData(a,
"events");c.removeData(a,"handle")}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();this.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return v;a.result=v;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,
b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(i){}if(!a.isPropagationStopped()&&f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){d=a.target;var j;if(!(c.nodeName(d,"a")&&e==="click")&&!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()])){try{if(d[e]){if(j=d["on"+e])d["on"+e]=null;this.triggered=true;d[e]()}}catch(n){}if(j)d["on"+e]=j;this.triggered=false}}},handle:function(a){var b,
d;a=arguments[0]=c.event.fix(a||z.event);a.currentTarget=this;d=a.type.split(".");a.type=d.shift();b=!d.length&&!a.exclusive;var f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)");d=(c.data(this,"events")||{})[a.type];for(var e in d){var i=d[e];if(b||f.test(i.type)){a.handler=i;a.data=i.data;i=i.apply(this,arguments);if(i!==v){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||r;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=r.documentElement;d=r.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==v)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a,b){c.extend(a,b||{});a.guid+=b.selector+b.live;b.liveProxy=a;c.event.add(this,b.live,na,b)},remove:function(a){if(a.length){var b=
0,d=new RegExp("(^|\\.)"+a[0]+"(\\.|$)");c.each(c.data(this,"events").live||{},function(){d.test(this.type)&&b++});b<1&&c.event.remove(this,a[0],na)}},special:{}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};
c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y};var Aa=function(a){for(var b=
a.relatedTarget;b&&b!==this;)try{b=b.parentNode}catch(d){break}if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}},Ba=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ba:Aa,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ba:Aa)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(a,b,d){if(this.nodeName.toLowerCase()!==
"form"){c.event.add(this,"click.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="submit"||i==="image")&&c(e).closest("form").length)return ma("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="text"||i==="password")&&c(e).closest("form").length&&f.keyCode===13)return ma("submit",this,arguments)})}else return false},remove:function(a,b){c.event.remove(this,"click.specialSubmit"+(b?"."+b.guid:""));c.event.remove(this,
"keypress.specialSubmit"+(b?"."+b.guid:""))}};if(!c.support.changeBubbles){var da=/textarea|input|select/i;function Ca(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d}function ea(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Ca(d);if(a.type!=="focusout"||
d.type!=="radio")c.data(d,"_change_data",e);if(!(f===v||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}}c.event.special.change={filters:{focusout:ea,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return ea.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return ea.call(this,a)},beforeactivate:function(a){a=
a.target;a.nodeName.toLowerCase()==="input"&&a.type==="radio"&&c.data(a,"_change_data",Ca(a))}},setup:function(a,b,d){for(var f in T)c.event.add(this,f+".specialChange."+d.guid,T[f]);return da.test(this.nodeName)},remove:function(a,b){for(var d in T)c.event.remove(this,d+".specialChange"+(b?"."+b.guid:""),T[d]);return da.test(this.nodeName)}};var T=c.event.special.change.filters}r.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,
f)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var i in d)this[b](i,f,d[i],e);return this}if(c.isFunction(f)){e=f;f=v}var j=b==="one"?c.proxy(e,function(n){c(this).unbind(n,j);return e.apply(this,arguments)}):e;return d==="unload"&&b!=="one"?this.one(d,f,e):this.each(function(){c.event.add(this,d,j,f)})}});c.fn.extend({unbind:function(a,
b){if(typeof a==="object"&&!a.preventDefault){for(var d in a)this.unbind(d,a[d]);return this}return this.each(function(){c.event.remove(this,a,b)})},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+
a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e){var i,j=0;if(c.isFunction(f)){e=f;f=v}for(d=(d||"").split(/\s+/);(i=d[j++])!=null;){i=i==="focus"?"focusin":i==="blur"?"focusout":i==="hover"?d.push("mouseleave")&&"mouseenter":i;b==="live"?c(this.context).bind(oa(i,this.selector),{data:f,selector:this.selector,
live:i},e):c(this.context).unbind(oa(i,this.selector),e?{guid:e.guid+this.selector+i}:null)}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});z.attachEvent&&!z.addEventListener&&z.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
(function(){function a(g){for(var h="",k,l=0;g[l];l++){k=g[l];if(k.nodeType===3||k.nodeType===4)h+=k.nodeValue;else if(k.nodeType!==8)h+=a(k.childNodes)}return h}function b(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===k){y=l[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=k;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}l[q]=y}}}function d(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===
k){y=l[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=k;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(o.filter(h,[t]).length>0){y=t;break}}t=t[g]}l[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,i=Object.prototype.toString,j=false,n=true;[0,0].sort(function(){n=false;return 0});var o=function(g,h,k,l){k=k||[];var q=h=h||r;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||
typeof g!=="string")return k;for(var p=[],u,t,y,R,H=true,M=w(h),I=g;(f.exec(""),u=f.exec(I))!==null;){I=u[3];p.push(u[1]);if(u[2]){R=u[3];break}}if(p.length>1&&s.exec(g))if(p.length===2&&m.relative[p[0]])t=fa(p[0]+p[1],h);else for(t=m.relative[p[0]]?[h]:o(p.shift(),h);p.length;){g=p.shift();if(m.relative[g])g+=p.shift();t=fa(g,t)}else{if(!l&&p.length>1&&h.nodeType===9&&!M&&m.match.ID.test(p[0])&&!m.match.ID.test(p[p.length-1])){u=o.find(p.shift(),h,M);h=u.expr?o.filter(u.expr,u.set)[0]:u.set[0]}if(h){u=
l?{expr:p.pop(),set:A(l)}:o.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=u.expr?o.filter(u.expr,u.set):u.set;if(p.length>0)y=A(t);else H=false;for(;p.length;){var D=p.pop();u=D;if(m.relative[D])u=p.pop();else D="";if(u==null)u=h;m.relative[D](y,u,M)}}else y=[]}y||(y=t);y||o.error(D||g);if(i.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))k.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&
y[g].nodeType===1&&k.push(t[g]);else k.push.apply(k,y);else A(y,k);if(R){o(R,q,k,l);o.uniqueSort(k)}return k};o.uniqueSort=function(g){if(C){j=n;g.sort(C);if(j)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};o.matches=function(g,h){return o(g,null,null,h)};o.find=function(g,h,k){var l,q;if(!g)return[];for(var p=0,u=m.order.length;p<u;p++){var t=m.order[p];if(q=m.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");l=m.find[t](q,
h,k);if(l!=null){g=g.replace(m.match[t],"");break}}}}l||(l=h.getElementsByTagName("*"));return{set:l,expr:g}};o.filter=function(g,h,k,l){for(var q=g,p=[],u=h,t,y,R=h&&h[0]&&w(h[0]);g&&h.length;){for(var H in m.filter)if((t=m.leftMatch[H].exec(g))!=null&&t[2]){var M=m.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(u===p)p=[];if(m.preFilter[H])if(t=m.preFilter[H](t,u,k,p,l,R)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=u[U])!=null;U++)if(D){I=M(D,t,U,u);var Da=
l^!!I;if(k&&I!=null)if(Da)y=true;else u[U]=false;else if(Da){p.push(D);y=true}}if(I!==v){k||(u=p);g=g.replace(m.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)o.error(g);else break;q=g}return u};o.error=function(g){throw"Syntax error,unrecognized expression:"+g;};var m=o.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,h){var k=typeof h==="string",l=k&&!/\W/.test(h);k=k&&!l;if(l)h=h.toLowerCase();l=0;for(var q=g.length,
p;l<q;l++)if(p=g[l]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[l]=k||p&&p.nodeName.toLowerCase()===h?p||false:p===h}k&&o.filter(h,g,true)},">":function(g,h){var k=typeof h==="string";if(k&&!/\W/.test(h)){h=h.toLowerCase();for(var l=0,q=g.length;l<q;l++){var p=g[l];if(p){k=p.parentNode;g[l]=k.nodeName.toLowerCase()===h?k:false}}}else{l=0;for(q=g.length;l<q;l++)if(p=g[l])g[l]=k?p.parentNode:p.parentNode===h;k&&o.filter(h,g,true)}},"":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=
h=h.toLowerCase();q=b}q("parentNode",h,l,g,p,k)},"~":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,l,g,p,k)}},find:{ID:function(g,h,k){if(typeof h.getElementById!=="undefined"&&!k)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var k=[];h=h.getElementsByName(g[1]);for(var l=0,q=h.length;l<q;l++)h[l].getAttribute("name")===g[1]&&k.push(h[l]);return k.length===0?null:k}},
TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,k,l,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var u;(u=h[p])!=null;p++)if(u)if(q^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))k||l.push(u);else if(k)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&
"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,k,l,q,p){h=g[1].replace(/\\/g,"");if(!p&&m.attrMap[h])g[1]=m.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,k,l,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=o(g[3],null,null,h);else{g=o.filter(g[3],h,k,true^q);k||l.push.apply(l,g);return false}else if(m.match.POS.test(g[0])||m.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);
return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,k){return!!o(k[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===
g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,h){return h===0},last:function(g,h,k,l){return h===l.length-1},even:function(g,h){return h%2===
0},odd:function(g,h){return h%2===1},lt:function(g,h,k){return h<k[3]-0},gt:function(g,h,k){return h>k[3]-0},nth:function(g,h,k){return k[3]-0===h},eq:function(g,h,k){return k[3]-0===h}},filter:{PSEUDO:function(g,h,k,l){var q=h[1],p=m.filters[q];if(p)return p(g,k,h,l);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=h[3];k=0;for(l=h.length;k<l;k++)if(h[k]===g)return false;return true}else o.error("Syntax error,unrecognized expression:"+
q)},CHILD:function(g,h){var k=h[1],l=g;switch(k){case "only":case "first":for(;l=l.previousSibling;)if(l.nodeType===1)return false;if(k==="first")return true;l=g;case "last":for(;l=l.nextSibling;)if(l.nodeType===1)return false;return true;case "nth":k=h[2];var q=h[3];if(k===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var u=0;for(l=p.firstChild;l;l=l.nextSibling)if(l.nodeType===1)l.nodeIndex=++u;p.sizcache=h}g=g.nodeIndex-q;return k===0?g===0:g%k===0&&g/k>=
0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var k=h[1];g=m.attrHandle[k]?m.attrHandle[k](g):g[k]!=null?g[k]:g.getAttribute(k);k=g+"";var l=h[2];h=h[4];return g==null?l==="!=":l==="="?k===h:l==="*="?k.indexOf(h)>=0:l==="~="?(" "+k+" ").indexOf(h)>=0:!h?k&&g!==false:l==="!="?k!==h:l==="^="?
k.indexOf(h)===0:l==="$="?k.substr(k.length-h.length)===h:l==="|="?k===h||k.substr(0,h.length+1)===h+"-":false},POS:function(g,h,k,l){var q=m.setFilters[h[2]];if(q)return q(g,k,h,l)}}},s=m.match.POS;for(var x in m.match){m.match[x]=new RegExp(m.match[x].source+/(?![^\[]*\])(?![^\(]*\))/.source);m.leftMatch[x]=new RegExp(/(^(?:.|\r|\n)*?)/.source+m.match[x].source.replace(/\\(\d+)/g,function(g,h){return"\\"+(h-0+1)}))}var A=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};
try{Array.prototype.slice.call(r.documentElement.childNodes,0)}catch(B){A=function(g,h){h=h||[];if(i.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var k=0,l=g.length;k<l;k++)h.push(g[k]);else for(k=0;g[k];k++)h.push(g[k]);return h}}var C;if(r.documentElement.compareDocumentPosition)C=function(g,h){if(!g.compareDocumentPosition||!h.compareDocumentPosition){if(g==h)j=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===
h?0:1;if(g===0)j=true;return g};else if("sourceIndex"in r.documentElement)C=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)j=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)j=true;return g};else if(r.createRange)C=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)j=true;return g.ownerDocument?-1:1}var k=g.ownerDocument.createRange(),l=h.ownerDocument.createRange();k.setStart(g,0);k.setEnd(g,0);l.setStart(h,0);l.setEnd(h,0);g=k.compareBoundaryPoints(Range.START_TO_END,
l);if(g===0)j=true;return g};(function(){var g=r.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var k=r.documentElement;k.insertBefore(g,k.firstChild);if(r.getElementById(h)){m.find.ID=function(l,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(l[1]))?q.id===l[1]||typeof q.getAttributeNode!=="undefined"&&q.getAttributeNode("id").nodeValue===l[1]?[q]:v:[]};m.filter.ID=function(l,q){var p=typeof l.getAttributeNode!=="undefined"&&l.getAttributeNode("id");
return l.nodeType===1&&p&&p.nodeValue===q}}k.removeChild(g);k=g=null})();(function(){var g=r.createElement("div");g.appendChild(r.createComment(""));if(g.getElementsByTagName("*").length>0)m.find.TAG=function(h,k){k=k.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var l=0;k[l];l++)k[l].nodeType===1&&h.push(k[l]);k=h}return k};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")m.attrHandle.href=function(h){return h.getAttribute("href",
2)};g=null})();r.querySelectorAll&&function(){var g=o,h=r.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){o=function(l,q,p,u){q=q||r;if(!u&&q.nodeType===9&&!w(q))try{return A(q.querySelectorAll(l),p)}catch(t){}return g(l,q,p,u)};for(var k in g)o[k]=g[k];h=null}}();(function(){var g=r.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){m.order.splice(1,0,"CLASS");m.find.CLASS=function(h,k,l){if(typeof k.getElementsByClassName!=="undefined"&&!l)return k.getElementsByClassName(h[1])};g=null}}})();var E=r.compareDocumentPosition?function(g,h){return g.compareDocumentPosition(h)&16}:function(g,h){return g!==h&&(g.contains?g.contains(h):true)},w=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},fa=function(g,h){var k=[],
l="",q;for(h=h.nodeType?[h]:h;q=m.match.PSEUDO.exec(g);){l+=q[0];g=g.replace(m.match.PSEUDO,"")}g=m.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)o(g,h[q],k);return o.filter(l,k)};c.find=o;c.expr=o.selectors;c.expr[":"]=c.expr.filters;c.unique=o.uniqueSort;c.getText=a;c.isXMLDoc=w;c.contains=E})();var bb=/Until$/,cb=/^(?:parents|prevUntil|prevAll)/,db=/,/;Q=Array.prototype.slice;var Ea=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,i){return!!b.call(e,i,e)===d});else if(b.nodeType)return c.grep(a,
function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Qa.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;c.find(a,this[f],b);if(f>0)for(var i=d;i<b.length;i++)for(var j=0;j<d;j++)if(b[j]===b[i]){b.splice(i--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=
0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ea(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ea(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,i={},j;if(f&&a.length){e=0;for(var n=a.length;e<n;e++){j=a[e];i[j]||(i[j]=c.expr.match.POS.test(j)?c(j,b||this.context):j)}for(;f&&f.ownerDocument&&f!==b;){for(j in i){e=i[j];if(e.jquery?e.index(f)>
-1:c(f).is(e)){d.push({selector:j,elem:f});delete i[j]}}f=f.parentNode}}return d}var o=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(m,s){for(;s&&s.ownerDocument&&s!==b;){if(o?o.index(s)>-1:c(s).is(a))return s;s=s.parentNode}return null})},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),
a);return this.pushStack(pa(a[0])||pa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},
nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);bb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):
e;if((this.length>1||db.test(f))&&cb.test(a))e=e.reverse();return this.pushStack(e,a,Q.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===v||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==
b&&d.push(a);return d}});var Fa=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ga=/(<([\w:]+)[^>]*?)\/>/g,eb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,Ha=/<([\w:]+)/,fb=/<tbody/i,gb=/<|&\w+;/,sa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ia=function(a,b,d){return eb.test(d)?a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],
col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==v)return this.empty().append((this[0]&&this[0].ownerDocument||r).createTextNode(a));return c.getText(this)},
wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?
d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,
false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&
!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Fa,"").replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){qa(this,b);qa(this.find("*"),b.find("*"))}return b},html:function(a){if(a===v)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Fa,""):null;else if(typeof a==="string"&&!/<script/i.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(Ha.exec(a)||
["",""])[1].toLowerCase()]){a=a.replace(Ga,Ia);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var i=c(this),j=i.html();i.empty().append(function(){return a.call(this,e,j)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,
b,f))});else a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(s){return c.nodeName(s,"table")?s.getElementsByTagName("tbody")[0]||s.appendChild(s.ownerDocument.createElement("tbody")):s}var e,i,j=a[0],n=[];if(!c.support.checkClone&&arguments.length===3&&typeof j===
"string"&&sa.test(j))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(j))return this.each(function(s){var x=c(this);a[0]=j.call(this,s,b?x.html():v);x.domManip(a,b,d)});if(this[0]){e=a[0]&&a[0].parentNode&&a[0].parentNode.nodeType===11?{fragment:a[0].parentNode}:ra(a,this,n);if(i=e.fragment.firstChild){b=b&&c.nodeName(i,"tr");for(var o=0,m=this.length;o<m;o++)d.call(b?f(this[o],i):this[o],e.cacheable||this.length>1||o>0?e.fragment.cloneNode(true):e.fragment)}n&&c.each(n,
Ma)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);for(var e=0,i=d.length;e<i;e++){var j=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),j);f=f.concat(j)}return this.pushStack(f,a,d.selector)}});c.each({remove:function(a,b){if(!a||c.filter(a,[this]).length){if(!b&&this.nodeType===1){c.cleanData(this.getElementsByTagName("*"));c.cleanData([this])}this.parentNode&&
this.parentNode.removeChild(this)}},empty:function(){for(this.nodeType===1&&c.cleanData(this.getElementsByTagName("*"));this.firstChild;)this.removeChild(this.firstChild)}},function(a,b){c.fn[a]=function(){return this.each(b,arguments)}});c.extend({clean:function(a,b,d,f){b=b||r;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||r;var e=[];c.each(a,function(i,j){if(typeof j==="number")j+="";if(j){if(typeof j==="string"&&!gb.test(j))j=b.createTextNode(j);else if(typeof j===
"string"){j=j.replace(Ga,Ia);var n=(Ha.exec(j)||["",""])[1].toLowerCase(),o=F[n]||F._default,m=o[0];i=b.createElement("div");for(i.innerHTML=o[1]+j+o[2];m--;)i=i.lastChild;if(!c.support.tbody){m=fb.test(j);n=n==="table"&&!m?i.firstChild&&i.firstChild.childNodes:o[1]==="<table>"&&!m?i.childNodes:[];for(o=n.length-1;o>=0;--o)c.nodeName(n[o],"tbody")&&!n[o].childNodes.length&&n[o].parentNode.removeChild(n[o])}!c.support.leadingWhitespace&&V.test(j)&&i.insertBefore(b.createTextNode(V.exec(j)[0]),i.firstChild);
j=c.makeArray(i.childNodes)}if(j.nodeType)e.push(j);else e=c.merge(e,j)}});if(d)for(a=0;e[a];a++)if(f&&c.nodeName(e[a],"script")&&(!e[a].type||e[a].type.toLowerCase()==="text/javascript"))f.push(e[a].parentNode?e[a].parentNode.removeChild(e[a]):e[a]);else{e[a].nodeType===1&&e.splice.apply(e,[a+1,0].concat(c.makeArray(e[a].getElementsByTagName("script"))));d.appendChild(e[a])}return e},cleanData:function(a){for(var b=0,d;(d=a[b])!=null;b++){c.event.remove(d);c.removeData(d)}}});var hb=/z-?index|font-?weight|opacity|zoom|line-?height/i,
Ja=/alpha\([^)]*\)/,Ka=/opacity=([^)]*)/,ga=/float/i,ha=/-([a-z])/ig,ib=/([A-Z])/g,jb=/^-?\d+(?:px)?$/i,kb=/^-?\d/,lb={position:"absolute",visibility:"hidden",display:"block"},mb=["Left","Right"],nb=["Top","Bottom"],ob=r.defaultView&&r.defaultView.getComputedStyle,La=c.support.cssFloat?"cssFloat":"styleFloat",ia=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===v)return c.curCSS(d,f);if(typeof e==="number"&&!hb.test(f))e+="px";c.style(d,f,e)})};
c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return v;if((b==="width"||b==="height")&&parseFloat(d)<0)d=v;var f=a.style||a,e=d!==v;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=Ja.test(a)?a.replace(Ja,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Ka.exec(f.filter)[1])/100+"":""}if(ga.test(b))b=La;b=b.replace(ha,ia);if(e)f[b]=d;return f[b]},css:function(a,
b,d,f){if(b==="width"||b==="height"){var e,i=b==="width"?mb:nb;function j(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(i,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,"border"+this+"Width",true))||0})}a.offsetWidth!==0?j():c.swap(a,lb,j);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&
a.currentStyle){f=Ka.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ga.test(b))b=La;if(!d&&e&&e[b])f=e[b];else if(ob){if(ga.test(b))b="float";b=b.replace(ib,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ha,ia);f=a.currentStyle[b]||a.currentStyle[d];if(!jb.test(f)&&kb.test(f)){b=e.left;var i=a.runtimeStyle.left;a.runtimeStyle.left=
a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=i}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var pb=
J(),qb=/<script(.|\s)*?\/script>/gi,rb=/select|textarea/i,sb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ja=/\?/,tb=/(\?|&)_=.*?(&|$)/,ub=/^(\w+:)?\/\/([^\/?#]+)/,vb=/%20/g;c.fn.extend({_load:c.fn.load,load:function(a,b,d){if(typeof a!=="string")return this._load(a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=
c.param(b,c.ajaxSettings.traditional);f="POST"}var i=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(j,n){if(n==="success"||n==="notmodified")i.html(e?c("<div />").append(j.responseText.replace(qb,"")).find(e):j.responseText);d&&i.each(d,[j.responseText,n,j])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&
(this.checked||rb.test(this.nodeName)||sb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,
b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:z.XMLHttpRequest&&(z.location.protocol!=="file:"||!z.ActiveXObject)?function(){return new z.XMLHttpRequest}:
function(){try{return new z.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml,text/xml",html:"text/html",script:"text/javascript,application/javascript",json:"application/json,text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&e.success.call(o,n,j,w);e.global&&f("ajaxSuccess",[w,e])}function d(){e.complete&&e.complete.call(o,w,j);e.global&&f("ajaxComplete",[w,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}
function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),i,j,n,o=a&&a.context||e,m=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(m==="GET")N.test(e.url)||(e.url+=(ja.test(e.url)?"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||
N.test(e.url))){i=e.jsonpCallback||"jsonp"+pb++;if(e.data)e.data=(e.data+"").replace(N,"="+i+"$1");e.url=e.url.replace(N,"="+i+"$1");e.dataType="script";z[i]=z[i]||function(q){n=q;b();d();z[i]=v;try{delete z[i]}catch(p){}A&&A.removeChild(B)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===false&&m==="GET"){var s=J(),x=e.url.replace(tb,"$1_="+s+"$2");e.url=x+(x===e.url?(ja.test(e.url)?"&":"?")+"_="+s:"")}if(e.data&&m==="GET")e.url+=(ja.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&
c.event.trigger("ajaxStart");s=(s=ub.exec(e.url))&&(s[1]&&s[1]!==location.protocol||s[2]!==location.host);if(e.dataType==="script"&&m==="GET"&&s){var A=r.getElementsByTagName("head")[0]||r.documentElement,B=r.createElement("script");B.src=e.url;if(e.scriptCharset)B.charset=e.scriptCharset;if(!i){var C=false;B.onload=B.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;b();d();B.onload=B.onreadystatechange=null;A&&B.parentNode&&
A.removeChild(B)}}}A.insertBefore(B,A.firstChild);return v}var E=false,w=e.xhr();if(w){e.username?w.open(m,e.url,e.async,e.username,e.password):w.open(m,e.url,e.async);try{if(e.data||a&&a.contentType)w.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[e.url]);c.etag[e.url]&&w.setRequestHeader("If-None-Match",c.etag[e.url])}s||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",
e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+",*/*":e.accepts._default)}catch(fa){}if(e.beforeSend&&e.beforeSend.call(o,w,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");w.abort();return false}e.global&&f("ajaxSend",[w,e]);var g=w.onreadystatechange=function(q){if(!w||w.readyState===0||q==="abort"){E||d();E=true;if(w)w.onreadystatechange=c.noop}else if(!E&&w&&(w.readyState===4||q==="timeout")){E=true;w.onreadystatechange=c.noop;j=q==="timeout"?"timeout":!c.httpSuccess(w)?
"error":e.ifModified&&c.httpNotModified(w,e.url)?"notmodified":"success";var p;if(j==="success")try{n=c.httpData(w,e.dataType,e)}catch(u){j="parsererror";p=u}if(j==="success"||j==="notmodified")i||b();else c.handleError(e,w,j,p);d();q==="timeout"&&w.abort();if(e.async)w=null}};try{var h=w.abort;w.abort=function(){w&&h.call(w);g("abort")}}catch(k){}e.async&&e.timeout>0&&setTimeout(function(){w&&!E&&g("timeout")},e.timeout);try{w.send(m==="POST"||m==="PUT"||m==="DELETE"?e.data:null)}catch(l){c.handleError(e,
w,null,l);d()}e.async||g();return w}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=
f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(j,n){if(c.isArray(n))c.each(n,
function(o,m){b?f(j,m):d(j+"["+(typeof m==="object"||c.isArray(m)?o:"")+"]",m)});else!b&&n!=null&&typeof n==="object"?c.each(n,function(o,m){d(j+"["+o+"]",m)}):f(j,n)}function f(j,n){n=c.isFunction(n)?n():n;e[e.length]=encodeURIComponent(j)+"="+encodeURIComponent(n)}var e=[];if(b===v)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var i in a)d(i,a[i]);return e.join("&").replace(vb,"+")}});var ka={},wb=/toggle|show|hide/,xb=/^([+-]=)?([\d+-.]+)(.*)$/,
W,ta=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(ka[d])f=ka[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();
ka[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&
c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var i=c.extend({},e),j,n=this.nodeType===1&&c(this).is(":hidden"),
o=this;for(j in a){var m=j.replace(ha,ia);if(j!==m){a[m]=a[j];delete a[j];j=m}if(a[j]==="hide"&&n||a[j]==="show"&&!n)return i.complete.call(this);if((j==="height"||j==="width")&&this.style){i.display=c.css(this,"display");i.overflow=this.style.overflow}if(c.isArray(a[j])){(i.specialEasing=i.specialEasing||{})[j]=a[j][1];a[j]=a[j][0]}}if(i.overflow!=null)this.style.overflow="hidden";i.curAnim=c.extend({},a);c.each(a,function(s,x){var A=new c.fx(o,i,s);if(wb.test(x))A[x==="toggle"?n?"show":"hide":x](a);
else{var B=xb.exec(x),C=A.cur(true)||0;if(B){x=parseFloat(B[2]);var E=B[3]||"px";if(E!=="px"){o.style[s]=(x||1)+E;C=(x||1)/A.cur(true)*C;o.style[s]=C+E}if(B[1])x=(B[1]==="-="?-1:1)*x+C;A.custom(C,x,E)}else A.custom(C,x,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",
1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration==="number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,
b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==
null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(i){return e.step(i)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop===
"width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=
this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=
c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=
null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in r.documentElement?function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),
f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=
b,e=b.ownerDocument,i,j=e.documentElement,n=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var o=b.offsetTop,m=b.offsetLeft;(b=b.parentNode)&&b!==n&&b!==j;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;i=e?e.getComputedStyle(b,null):b.currentStyle;o-=b.scrollTop;m-=b.scrollLeft;if(b===d){o+=b.offsetTop;m+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){o+=parseFloat(i.borderTopWidth)||
0;m+=parseFloat(i.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&i.overflow!=="visible"){o+=parseFloat(i.borderTopWidth)||0;m+=parseFloat(i.borderLeftWidth)||0}f=i}if(f.position==="relative"||f.position==="static"){o+=n.offsetTop;m+=n.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){o+=Math.max(j.scrollTop,n.scrollTop);m+=Math.max(j.scrollLeft,n.scrollLeft)}return{top:o,left:m}};c.offset={initialize:function(){var a=r.body,b=r.createElement("div"),
d,f,e,i=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);
d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i;a.removeChild(b);c.offset.initialize=c.noop},
bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),i=parseInt(c.curCSS(a,"top",true),10)||0,j=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,d,e);d={top:b.top-e.top+i,left:b.left-
e.left+j};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=
this.offsetParent||r.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],i;if(!e)return null;if(f!==v)return this.each(function(){if(i=ua(this))i.scrollTo(!a?f:c(i).scrollLeft(),a?f:c(i).scrollTop());else this[d]=f});else return(i=ua(e))?"pageXOffset"in i?i[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&i.document.documentElement[d]||i.document.body[d]:e[d]}});
c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(i){var j=c(this);j[d](f.call(this,i,j[d]()))});return"scrollTo"in e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||
e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===v?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});z.jQuery=z.$=c})(window);/* [INCLUDE FILE] sketchstar/sketchstar */
/**
 * Sketch Star jQuery functions
 * 
 * @copyright Miniclip
 * @author Phil Bayfield
 */
// Run in no conflict mode
jQuery.noConflict();

// Run on ready
jQuery(document).ready(function(){
jQuery('#friendUsername').sendtofriend({
ajax_url:        '/sketch-star/ss-lib/ajax.php',
ajax_get_action: 'GetFriends',
ajax_send_action:'SendToFriends',
results_obj:     'friendsPopup',
list_obj:        'friendsList',
send_id_obj:     'animationId',
send_btn:        'friendsSend'
});
});

// Send to friend j function
jQuery.fn.sendtofriend = function(options){

// A few default values
defaults ={
results_max:     10,
sendto_max:      10,
length_min:      1
};

// Merge options with defaults (options overwrite defaults)
options = jQuery.extend({},defaults,options);

// Setup send to a friend
this.each(function(){
new jQuery.sendtofriend(this,options);
});

return this;

};

// Send to friend
jQuery.sendtofriend = function(obj,options){

// A few globals
var inputVal;
var cache = new Array();
var results = new Array();
var timer;
var highlight = 0;
var mousehighlight = false;

// Run init - mainly sets up various event handlders
init();

/**
 * Initialise
 */
function init(){
// Disable autocomplete
jQuery(obj).attr('autocomplete','off');
// Stop form submitting
jQuery(obj).parent().submit(function(){
return false;
});
// Add handlers to remove text if input has any by default
if (obj.value != ''){
inputVal = obj.value;
// Remove text on focus
jQuery(obj).focus(function(){
if (obj.value == inputVal){
obj.value = '';
}
});
// Restore text on blur
jQuery(obj).blur(function(){
if (obj.value == ''){
obj.value = inputVal;
}
});
}
// Add handler to get friends list once
jQuery(obj).one('focus',function(){
getFriends(function(res){
if (res.success == true){
cache = res.data;
}else{
alert('Please login to use this feature!');
}
});
});
// Add handler to show/hide results on focus/blur
jQuery(obj).focus(function(){
if (jQuery('#' + options.results_obj).find('li').size() && jQuery('#' + options.results_obj).is(':hidden')){
jQuery('#' + options.results_obj).show();
}
});
jQuery(obj).blur(function(){
if (jQuery('#' + options.results_obj).is(':visible')){
jQuery('#' + options.results_obj).fadeOut('slow');
}
});
// Add handler to send button
jQuery('#' + options.send_btn).one('click',sendBtnClick);
// Stop enter key submitting form in some browsers
jQuery(obj).keydown(function(e){
var keyCode = e.keyCode ? e.keyCode :e.which;
if (keyCode == 13){
return false;
}
});
// Add handler for changes to the value of the input
jQuery(obj).keyup(function(e){
var keyCode = e.keyCode ? e.keyCode :e.which;
// Down arrow
if (keyCode == 40){
if (mousehighlight != 0){
updateHighlight();
}
if (results.length > 0 && jQuery('#' + options.results_obj).is(':visible') && highlight < results.length && highlight < options.results_max){
highlight ++;
if (highlight > 1){
removeHover(results[highlight - 2].id);
}
addHover(results[highlight - 1].id);
}
// Up arrow
}else if(keyCode == 38){
if (mousehighlight != 0){
updateHighlight();
}
if (results.length > 0 && jQuery('#' + options.results_obj).is(':visible') && highlight > 1){
highlight --;
removeHover(results[highlight].id);
addHover(results[highlight - 1].id);
}
// Enter
}else if(keyCode == 13){
if (highlight){
checkAddListItem(results[highlight - 1]);
}
// Everything else
}else{
if (highlight){
if (results.length){
removeHover(results[highlight - 1].id);
}
highlight = 0;
}
changed();
}
});
}

/**
 * Click function for the send button
 */
function sendBtnClick(e){
// Create array of friends added
var friends = new Array();
jQuery('#' + options.list_obj).find('a').each(function(){
if (this.rel != undefined){
friends.push(this.rel);
}
});
// Call send function
sendFriends(friends,function(res){
if (res.success == true){
// This is a hack to stop some weirdness in FF3
jQuery('#' + options.results_obj).html('');
jQuery('#' + options.results_obj).hide();
alert('A message has beeen sent to your selected friends!');
resetForm();
}else{
alert('Sending message failed,please try again.');
}
// Add the one click event back
jQuery('#' + options.send_btn).one('click',sendBtnClick);
});
}

/**
 * Get friends list with AJAX
 */
function getFriends(callback){
startLoader('Loading friends');
// Post request
jQuery.post(
options.ajax_url,
{
'action':options.ajax_get_action
},
function(res){
stopLoader();
callback(res);
},
'json'
);
}

/**
 * Send messages to friend with AJAX
 */
function sendFriends(friends,callback)
{
startLoader('Sending');
// Look for hidden id input
var params ={};
if (options.send_id_obj != undefined){
jQuery.extend(params,{id:jQuery('#' + options.send_id_obj).attr('value')});
}
// Post request
jQuery.post(
options.ajax_url,
jQuery.extend(params,{
'action':options.ajax_send_action,
'friends':friends
}),
function(res){
stopLoader();
callback(res);
},
'json'
);
}

/**
 * Star loader
 */
function startLoader(txt){
var counter = 0;
jQuery(obj).attr('disabled',true);
obj.value = txt;
// Self calling function to add loading dots
var addDots = function(){
if (counter < 3){
obj.value += '.';
counter ++;
}else{
obj.value = txt;
counter = 0;
}
timer = setTimeout(addDots,250);
};
timer = setTimeout(addDots,250);
}

/**
 * Stop loader
 */
function stopLoader(){
// Stop the timer and enable the input
clearTimeout(timer);
obj.value = '';
jQuery(obj).attr('disabled',false);
jQuery(obj).focus();
}

/**
 * Value in input was changed
 */
function changed(){
var curVal = obj.value;
// Check that minimum length has been entered
if (curVal.length < options.length_min){
jQuery('#' + options.results_obj).html('');
if (jQuery('#' + options.results_obj).is(':visible')){
jQuery('#' + options.results_obj).hide();
}
return false;
}
// Check if value is cached
if (cache.length){
updateSuggestions(curVal);
}
}

/**
 * Update suggestions
 */
function updateSuggestions(str){
var search = str.toLowerCase();
results = new Array();
// Search the cached friends lsit
jQuery(cache).each(function(){
var name = this.name.toLowerCase();
if (name.indexOf(search) == 0){
results.push(this);
}
});
// Show results element
if (jQuery('#' + options.results_obj).is(':hidden')){
jQuery('#' + options.results_obj).show();
}
// If we have results add them to the element and setup events
if (results.length > 0){
var counter = 0;
var html = '';
// Add HTML
jQuery(results).each(function(){
counter ++;
if (counter < options.results_max){
html += '<li><a href="#" rel="' + this.id + '">' + this.name + '</a></li>';
}
});
jQuery('#' + options.results_obj).html(html);
// Add mouse over event
jQuery('#' + options.results_obj).find('a').mouseover(function(){
if (highlight){
removeHover(results[highlight - 1].id);
}
mousehighlight = this.rel;
jQuery(this).addClass('hover');
updateHighlight();
});
// Add mouse out event
jQuery('#' + options.results_obj).find('a').mouseout(function(){
if (mousehighlight == this.rel){
mousehighlight = 0;
}
jQuery(this).removeClass('hover');
});
// Add click function
jQuery('#' + options.results_obj).find('a').click(function(){
updateHighlight();
checkAddListItem(results[highlight - 1]);
return false;
});
}else{
// Add no results
jQuery('#' + options.results_obj).html('<li><a href="#">No results</a></li>');
// Add click handler to stop click doing anything
jQuery('#' + options.results_obj).find('a').click(function(){
return false;
});
}
}

/**
 * Update highlighted value
 */
function updateHighlight(){
var max = results.length < options.results_max ? results.length :options.results_max;
for (var i = 0;i < max;i ++){
if (results[i].id == mousehighlight){
highlight = i + 1;
mousehighlight = 0;
break;
}
}
}

/**
 * Add hover effect
 */
function addHover(rel){
jQuery('#' + options.results_obj).find('a[rel="' + rel + '"]').addClass('hover');
}

/**
 * Remove hover effect
 */
function removeHover(rel){
jQuery('#' + options.results_obj).find('a[rel="' + rel + '"]').removeClass('hover');
}

/**
 * Check that we can add this item
 */
function checkAddListItem(item){
// Check if exists
var found = jQuery('#' + options.list_obj).find('a[rel="' + item.id + '"]').attr('rel');
if (found){
alert('You have already added ' + item.name + '!');
// Check if list is full
}else if (jQuery('#' + options.list_obj).find('a').size() >= options.sendto_max){
alert('You can only add ' + options.sendto_max + ' friends at a time!');
}else{
addListItem(item);
// Reset input and list
if (!jQuery(obj).attr('disabled')){
obj.value = '';
}
jQuery('#' + options.results_obj).html('');
jQuery('#' + options.results_obj).hide();
}
}

/**
 * Add an item to the list
 */
function addListItem(item){
// Add HTML
html = '<li><a href="#" title="Remove" rel="' + item.id + '"><img src="/sketch-star/ss2/img/layout/icons/remove10x10.gif" alt="Remove" /></a> ' + item.name + '</li>';
jQuery('#' + options.list_obj).append(html);
// Add click function
jQuery('#' + options.list_obj + ' a:last').click(function(){
removeListItem(item);
return false;
});
// Disable input when limit is reached
if (jQuery('#' + options.list_obj).find('a').size() == options.sendto_max){
jQuery(obj).attr('disabled',true);
obj.value = 'You can only add ' + options.sendto_max + ' friends at once!';
}
// Enable send button
if (jQuery('#' + options.send_btn).is(':hidden')){
jQuery('#' + options.send_btn).show();
}
}

/**
 * Remove an item from the list
 */
function removeListItem(item){
// Find and remove the element
jQuery('a[rel="' + item.id + '"]').parent().remove();
// Enable input if disabled
if (jQuery('#' + options.list_obj).find('a').size() < options.sendto_max && jQuery(obj).attr('disabled')){
jQuery(obj).attr('disabled',false);
obj.value = '';
}
// If last list item hide send button
if (jQuery('#' + options.list_obj).find('li').size() == 0){
jQuery('#' + options.send_btn).hide();
}
}

/**
 * Reset the form
 */
function resetForm(){
// Delete all list items
jQuery('#' + options.list_obj).html('');
// Hide the send button
jQuery('#' + options.send_btn).hide();
jQuery(obj).blur();
}

};/* [INCLUDE FILE] sketchstar/swfobject */
/**
 * SWFObject v1.5:Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;/* [INCLUDE FILE] sketchstar/validation */
function validate_required(field,alerttxt){
with (field){
if (value==null||value==""){
alert(alerttxt);return false;
  }else{
return true;
}
}
}

function validate_form(thisform){
with (thisform){
if (validate_required(query,"Your search is empty!")==false){
query.focus();
}else{
with (query){
window.location = '/sketch-star/en/search/' + urlencode(value);
}
}
return false;
}
}

function urlencode(str){
    str = (str+'').toString();
    return encodeURIComponent(str).replace(/!/g,'%21').replace(/'/g,'%27').replace(/\(/g,'%28').replace(/\)/g,'%29').replace(/\*/g,'%2A').replace(/%20/g,'+');
}/* [INCLUDE FILE] sketchstar/basicEffects */
function FadeEffect(element,time){
       new Effect.Fade(element,
      {duration:time});
}

function ShowEffect(element,time){
new Effect.Appear(element,
{duration:time,from:0,to:1.0});
}

function ShowSemiEffect(element,time){
new Effect.Appear(element,
{duration:time,from:0,to:.8})
}

function updateElement(element,newContent){
$(element).replace(newContent);
}


function FadeOutPlayBtn(id){
var div='hover'+id;
$(div).hide();

}

function FadeInPlayBtn(id){
var div='hover'+id;
$(div).show();
}/* [INCLUDE FILE] sketchstar/animationFunctions */
/**
 * Setup Event handlers
 * 
 * All Sketch Star events should be defined here in future!
 * 
 * @author Phil Bayfield
 */
Event.observe(window,'load',function(){

/**
 * Thumbnail hover
 */
$$('.thumb').each(function(elem){
if (elem.id != ''){
addThumbnailEventHandler(elem,'animated');
}
});

/**
 * Topic thumbnail hover
 */
$$('.topicthumb').each(function(elem){
if (elem.id != ''){
addThumbnailEventHandler(elem,'topicanimated');
}
});

/**
 * Vote for animation
 */
if ($('addVote') !== null){
$('addVote').onclick = addVoteEvent;
}

/**
 * Add favorite animation
 */
if ($('addFavoriteAnimation') !== null){
$('addFavoriteAnimation').onclick = addFavoriteAnimationEvent;
}

/**
 * Download animation
 */
if ($('downloadAnimation') !== null){
$('downloadAnimation').onclick = function(event){
// Update the button
$('downloadText').update('<span class="disabled">Downloading...</span>');
}
}

/**
 * Clear search inputs on focus 
 */
$$('.query').each(function(elem){
var inputTitle = elem.value;
elem.onfocus = function(event){
// if default value,clear it
if (elem.value == inputTitle) elem.clear()
};
elem.onblur = function(event){
// if the user didn't enter anything,return default value
if (elem.value == '') elem.value = inputTitle;
};
});

/**
 * Seach forum submission events
 */
$$('.searchForm').each(function(elem){
elem.onsubmit = function(event){
var valid = false;
var value = '';
var path  = '';
elem.getInputs('text').each(function(input){
if (valid == false && input.value != '' && input.value != 'Any' && input.value != 'Search for Animations...'){
valid = true;
value = input.value;
path  = input.id;
}
});
if (valid){
if (path != ''){
path += '/';
}
window.location = '/sketch-star/en/search/' + path + urlencode(value);
}else{
alert('Please enter a valid search term!');
}
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
};
});

/**
 * Add overlay confirmation fade in to buttons
 */
$$('.showOverlay').each(function(elem){
elem.onclick = function(event){
// Fade out any existing overlays
$$('.showOverlay').each(function(helem){
if (helem.rel != elem.rel){
new Effect.Fade($('overlay' + helem.rel),{
duration:0
});
}
});
// Fade in overlay on current element
new Effect.Appear($('overlay' + elem.rel),{
duration:0.8,
from:0,
to:0.8
});
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
};
});

/**
 * Hide overlay confirmation box
 */
$$('.hideOverlay').each(function(elem){
elem.onclick = function(event){
// Fade out
new Effect.Fade($('overlay' + elem.rel),{
duration:0
});
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
};
});

/**
 * Remove favorite animation
 */
$$('.removeFavoriteAnimation').each(function(elem){
elem.onclick = function(event){
var id = elem.rel;
var options ={
method:'post',
parameters:{action:'RemoveFavoriteAnimation',favId:id},
onSuccess:function(response){
var res = response.responseText;
// Success
if (res == 1){
window.location.reload();
// Not a favorite
}else if(res == 0){
alert('This animation is not one of your favorites!');
// Not logged in
}else{
alert('You must be logged in to remove this animation from your favorites!');
}
// Fade out the overlay
new Effect.Fade($('overlay' + id),{
duration:0
});
},
onFailure:function(response){
        alert('An error occurred:' + response.statusText);
}
};
new Ajax.Request('/sketch-star/ss-lib/ajax.php',options);
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
};
});

/**
 * Add to topic
 */
$$('.addToTopic').each(function(elem){
elem.onclick = function(event){
var params = elem.rel;
var ids = params.split(':');
var options ={
method:'post',
parameters:{action:'AddToTopic',topic:ids[0],animation :ids[1]},
onSuccess:function(response){
var res = response.responseText;
res = eval('(' + res + ')');
if (res.success == true){
elem.addClassName('disabled');
elem.update('<span>Already in Topic</span>');
elem.onclick = function(event){
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
};
alert('You have successfully added your animation to the ' + res.topic.topic_name + ' topic.');
}else{
switch (res.error){
default:
case 1:
case 2:
case 3:
case 4:
alert('An error occurred,please try again.');
break;
case 5:
alert('This animation is already in the topic.');
case 6:
alert('You cannot add this animation to this topic.')
break;
}
}
},
onFailure:function(response){
alert('An error occurred:' + response.statusText);
}
};
new Ajax.Request('/sketch-star/ss-lib/ajax.php',options);
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
};
});

/**
 * Enter contest
 */
$$('.enterContest').each(function(elem){
elem.onclick = function(event){
var params = elem.rel;
var ids = params.split(':');
var options ={
method:'post',
parameters:{action:'EnterContest',contest:ids[0],animation :ids[1]},
onSuccess:function(response){
var res = response.responseText;
res = eval('(' + res + ')');
if (res.success == true){
elem.addClassName('disabled');
elem.update('<span>Already Entered</span>');
elem.onclick = function(event){
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
};
alert('You have successfully entered the ' + res.contest.contest_title + ' contest.');
}else{
switch (res.error){
default:
case 1:
case 2:
case 3:
case 4:
alert('An error occurred,please try again.');
break;
case 5:
alert('You have already entered this contest.');
case 6:
alert('You cannot enter this animation in this contest.')
break;
}
}
},
onFailure:function(response){
alert('An error occurred:' + response.statusText);
}
};
new Ajax.Request('/sketch-star/ss-lib/ajax.php',options);
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
};
});

/**
 * Remove favorite artist
 */
$$('.removeFavoriteArtist').each(function(elem){
elem.onclick = function(event){
var id = elem.rel;
var options ={
method:'post',
parameters:{action:'RemoveFavoriteArtist',favId:id},
onSuccess:function(response){
var res = response.responseText;
// Success
if (res == 1){
window.location.reload();
// Not a favorite
}else if(res == 0){
alert('This artist is not one of your favorites!');
// Not logged in
}else{
alert('You must be logged in to remove this artist from your favorites!');
}
// Fade out the overlay
new Effect.Fade($('overlay' + id),{
duration:0
});
},
onFailure:function(response){
alert('An error occurred:' + response.statusText);
}
};
new Ajax.Request('/sketch-star/ss-lib/ajax.php',options);
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
};
});

/**
 * Make EP (Admin)
 */
$$('.makeStaffPick').each(function(elem){
elem.onclick = function(event){
if (elem.hasClassName('disabled')){
return false;
}
elem.addClassName('disabled');
elem.removeClassName('makeStaffPick');
var id = elem.id.replace('ep_','');
var options ={
method:'post',
parameters:{action:'MakeEditorsPick',animationId:id},
onSuccess:function(response){
var res = response.responseText.evalJSON();
if (res.success == true){
elem.select('span span').first().update('Already editor\'s pick');
$('animationTitle').insert({before:'<img class="editorsPick" src="/sketch-star/ss2/img/layout/top3panel/epBadgeModuleSmall.gif" alt="Editor\'s Pick" title="Editor\'s Pick"/>'});
}else{
alert('Failed to mark as editors pick,please try again.');
elem.addClassName('makeStaffPick');
elem.removeClassName('disabled');
}
},
onFailure:function(response){
alert('An error occurred,please try again.');
}
};
new Ajax.Request('/sketch-star/ss-lib/ajax.php',options);
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
}
});

/**
 * Make COTC (Admin)
 */
$$('.makeCreamOfTheCrop').each(function(elem){
elem.onclick = function(event){
if (elem.hasClassName('disabled')){
return false;
}
elem.addClassName('disabled');
elem.removeClassName('makeCreamOfTheCrop');
var id = elem.id.replace('hof_','');
var options ={
method:'post',
parameters:{action:'MakeCreamOfTheCrop',animationId:id},
onSuccess:function(response){
var res = response.responseText.evalJSON();
if (res.success == true){
alert('The animation has been added to the Cream Of The Crop gallery.');
}else{
alert('Failed to add the animation to the Cream Of The Crop gallery,please try again.');
elem.addClassName('makeCreamOfTheCrop');
elem.removeClassName('disabled');
}
},
onFailure:function(response){
alert('An error occurred,please try again.');
}
};
new Ajax.Request('/sketch-star/ss-lib/ajax.php',options);
// Stop the event
event = event || window.event;// Fix IE7
Event.stop(event);
}
});

});


/**
 * Add thumbnail event handlers to an element
 * 
 * @param elem
 * @return void
 */
function addThumbnailEventHandler(elem,type){
if (type === undefined){
type = 'animated';
}
var id = elem.id.replace('thumb','');
if (checkNumeric(id)){
elem.observe('mouseover',function(){
elem.src = '/sketch-star/ss-lib/thumb.php?type=' + type + '&id=' + id;
});
elem.observe('mouseout',function(){
elem.src = '/sketch-star/ss-lib/thumb.php?id=' + id;
});
}
}

/**
 * Event handler function for voting
 * 
 * @param event
 * @return void
 */
function addVoteEvent(event){
var id = this.rel;
var origHTML = $('voteText').innerHTML;
$('voteText').update('<span class="disabled">voting...</span>');
var options ={
method:'post',
parameters:{action:'AddVote',animationId:id},
onSuccess:function(response){
var res = response.responseText;
// Ok response
if (res == 1){
$('voteMake').hide();
new Effect.Appear('voteThanks',{
duration:1
});
var votes = $('numVotes').innerHTML.replace(',','');
var newVotes = Number(votes) + 1;
        updateElement('numVotes',numberFormat(newVotes,0,'.',','));
        // Error occured
}else if (res == 2){
$('voteText').update(origHTML);
$('addFavoriteAnimation').onclick = addFavoriteAnimationEvent;
alert('An error occured,please try again!');
// Already fav response
}else if (res == 0){
$('voteText').update(origHTML);
$('addFavoriteAnimation').onclick = addFavoriteAnimationEvent;
alert('You have already voted for this animation!');
// Otherwise not logged in
}else{
$('voteText').update(origHTML);
$('addVote').onclick = addFavoriteAnimationEvent;
alert('You must be logged in to vote for this animation!');
}
},
    onFailure:function(response){
    $('voteText').update(origHTML);
    $('addVote').onclick = addVoteEvent;
        alert('An error occurred:' + response.statusText);
    }
};
new Ajax.Request('/sketch-star/ss-lib/ajax.php',options);
// Stop event
event = event || window.event;// Fix IE7
Event.stop(event);
}

/**
 * Event handler function for add favorite animation
 * 
 * @param event
 * @return void
 */
function addFavoriteAnimationEvent(event){
var id = this.rel;
var origHTML = $('favoriteText').innerHTML;
$('favoriteText').update('<span class="disabled">loving...</span>');
var options ={
method:'post',
parameters:{action:'AddFavoriteAnimation',favId:id},
onSuccess:function(response){
var res = response.responseText;
// Ok response
if (res == 1){
$('favoriteMake').hide();
new Effect.Appear('favoriteThanks',{
duration:1
});
var favs = $('numFavs').innerHTML.replace(',','');
var newFavs = Number(favs) + 1;
        updateElement('numFavs',numberFormat(newFavs,0,'.',','));
$('favRow').show();
// Already fav response
}else if(res == 0){
$('favoriteText').update(origHTML);
$('addFavoriteAnimation').onclick = addFavoriteAnimationEvent;
alert('You have already added this animation to your favorites!');
// Otherwise not logged in
}else{
$('favoriteText').update(origHTML);
$('addFavoriteAnimation').onclick = addFavoriteAnimationEvent;
alert('You must be logged in to add this animation to your favorites!');
}
    },
    onFailure:function(response){
    $('favoriteText').update(origHTML);
    $('addFavoriteAnimation').onclick = addFavoriteAnimationEvent;
        alert('An error occurred:' + response.statusText);
    }
};
new Ajax.Request('/sketch-star/ss-lib/ajax.php',options);
// Stop event
event = event || window.event;// Fix IE7
Event.stop(event);
}

/**
 * Check a value is numeric
 * 
 * @param mixed value
 * @return bool
 */
function checkNumeric (value){
    return (typeof(value) === 'number' || typeof(value) === 'string') && value !== '' && !isNaN(value);
}

/**
 * **********************
 * Legacy functions below
 * **********************
 */
function FadeEffect(element,time){
       new Effect.Fade(element,
      {duration:time});
}

function ShowEffect(element,time){
new Effect.Appear(element,
{duration:time,from:0,to:1.0});
}

function ShowSemiEffect(element,time){
new Effect.Appear(element,
{duration:time,from:0,to:.8})
}

function updateElement(element,newContent){
$(element).replace(newContent);
}


function FadeOutPlayBtn(id){
var div='hover'+id;
$(div).hide();

}

function FadeInPlayBtn(id){
var div='hover'+id;
$(div).show();
}

function addCommas(nStr)
{
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] :'';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)){
x1 = x1.replace(rgx,'$1' + ',' + '$2');
}
return x1 + x2;
}

var lastId=1;
var lastFavId=1;

function reportConfirmation(id){
var answer = confirm("This animation will be reported to moderators as unacceptable. Are you sure you want to do this?")
if (answer){
report(id);
}
}

function report(id){
FadeEffect('report',0);
var options ={
method:"post",
    parameters:"id="+id,
onSuccess:function (oXHR,oJson){
    },
    onFailure:function (oXHR,oJson){
        alert("An error occurred:" + oXHR.statusText);
    }
};
var oRequest = new Ajax.Request("/sketch-star/ss2/scripts/report.php?id="+id,options);
}

function deleteAnimation(id){
    var options ={
method:"post",
    parameters:"id="+id,
onSuccess:function (oXHR,oJson){
            //alert("returns:" + oXHR.statusText);
            window.location.reload();
    },
    onFailure:function (oXHR,oJson){
        alert("An error occurred:" + oXHR.statusText);
    }
};
var oRequest = new Ajax.Request("/sketch-star/ss2/scripts/delete.php?id="+id,options);
}

function vote(id){
$('voteText').update('<span class="disabled">voting...</span>');
var options ={
method:"post",
    parameters:"id="+id,
onSuccess:function (oXHR,oJson){
            FadeEffect('voteMake',0);
        ShowEffect('voteThanks',1);
            var votes= $('numVotes').innerHTML.replace(",","");
var newVotes = Number(votes)+1;
        updateElement('numVotes',addCommas(newVotes));
    },
    onFailure:function (oXHR,oJson){
        alert("An error occurred:" + oXHR.statusText);
    }
};

var oRequest = new Ajax.Request("/sketch-star/ss2/scripts/vote.php?id="+id,options);
}

function addRemoveFan(id){
var span = $('addRemoveButton').select('span').first();
if (span.className == 'add'){
var action = 'AddFavoriteArtist';
}else{
var action = 'RemoveFavoriteArtist';
}
var options ={
method:'post',
parameters:{action:action,favId:id},
onSuccess:function(response){
var res = response.responseText;
if (res == 1){
var fancount = $('fanCount');
var countTxt = fancount.innerHTML.replace(/[^0-9]/,'');
if (span.className == 'add'){
span.className = 'remove';
span.update('Remove from Favorites');
fancount.innerHTML = numberFormat(parseInt(countTxt) + 1,0,'.',',');
}else{
span.className = 'add';
span.update('Become a Fan');
fancount.innerHTML = numberFormat(parseInt(countTxt) - 1,0,'.',',');
}
}else if(res == 0){
alert('You are already a fan of this artist!');
}else{
alert('You must be logged in to become a fan of this artist!' + res);
}
},
onFailure:function(response){
alert('An error occurred:' + response.statusText);
}
};
new Ajax.Request('/sketch-star/ss-lib/ajax.php',options);
}

function numberFormat (number,decimals,dec_point,thousands_sep){
var n = number,prec = decimals;
    var toFixedFix = function (n,prec){
        var k = Math.pow(10,prec);       return (Math.round(n*k)/k).toString();
   };
    n = !isFinite(+n) ? 0 :+n;
    prec = !isFinite(+prec) ? 0 :Math.abs(prec);   var sep = (typeof thousands_sep === 'undefined') ? ',' :thousands_sep;
    var dec = (typeof dec_point === 'undefined') ? '.' :dec_point;
    var s = (prec > 0) ? toFixedFix(n,prec) :toFixedFix(Math.round(n),prec);
    var abs = toFixedFix(Math.abs(n),prec);
    var _,i;
    if (abs >= 1000){
        _ = abs.split(/\D/);       i = _[0].length % 3 || 3;
        _[0] = s.slice(0,i + (n < 0)) +
        _[0].slice(i).replace(/(\d{3})/g,sep+'$1');
        s = _.join(dec);
}else{
        s = s.replace('.',dec);
   }
    var decPos = s.indexOf(dec);   if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec){
        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
   }
    else if (prec >= 1 && decPos === -1){
        s += dec+new Array(prec).join(0)+'0';
}
    return s;
}

function onFinish(obj){
ShowEffect('numVotes',1);
}

function alertLogin(){
    alert("You must be logged in to do that");
}

var is_open=false;
var open_share=false;

function showShareButton(){
    if(open_share){
        open_share=false;
FadeEffect('sharePanel',0);
FadeEffect('shareButton',0);
ShowEffect('shareButtonOpen',0);
}else{
ShowEffect('sharePanel',0);
ShowEffect('shareButton',0);
FadeEffect('shareButtonOpen',0);
open_share=true;
}
}

function showSFPanel(){
    ShowEffect('sendPanel',0);
}

function showSFButton(){
if(open){
is_open=false;
FadeEffect('sendPanel',0);
FadeEffect('sendButton',0);
ShowEffect('sendButtonOpen',0);
}else{
ShowEffect('sendPanel',0);
ShowEffect('sendButton',0);
FadeEffect('sendButtonOpen',0);
is_open=true;
}
}

function go_to_upgrade(){
var answer = confirm("This feature is only available to members. Click 'OK' to find out more about Sketch Star memberships.")
if (answer){
window.location = "/sketch-star/en/upgrade.php";
return false;
}
return false;
}

/* TOP NAV - Highlight current section link */
function highlightCurrentLink(link){
    var link = 'http://' + window.location.host + link;
    var a = document.getElementsByTagName("A");   
    for(var i = 0;i < a.length;i++){
        if(a[i].href == link){
    a[i].className = a[i].className + " current";
}
   }
}

/* MY ANIMATIONS - Functions to toggle help text on headings */
function showHelp(divName){
ShowEffect(divName+'Exp',0);
$(divName+'Back').setStyle(
{backgroundImage:'url(/sketch-star/ss2/img/layout/longPanelWB.png)'}
);
$(divName+'Button').className="dummieClass";
$(divName+'Button').title="Hide Explanation";
$(divName+'Button').src='/sketch-star/ss2/img/layout/collapseIcon.gif';
}

function hideHelp(divName){
FadeEffect(divName+'Exp',0);
$(divName+'Back').setStyle(
{backgroundImage:'url(/sketch-star/ss2/img/layout/longPanel.png)'}
);
$(divName+'Button').title=$(divName+'Button').alt;
$(divName+'Button').className="";
$(divName+'Button').src='/sketch-star/ss2/img/layout/helpIcon.gif';
}

function toggleHelp(divName){
if($(divName+'Button').className==""){
showHelp(divName);
}else{
hideHelp(divName);
}
}

//preload
var preloadImg=new Element('img',{
src :'/sketch-star/ss2/img/layout/longPanelWB.png'
});
var preloadButtImg=new Element('img',{
src :'/sketch-star/ss2/img/layout/collapseIcon.gif'
});/* [INCLUDE FILE] sketchstar/effects */
// script.aculo.us effects.js v1.8.1,Thu Jan 03 22:07:12 -0500 2008

// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us,http://mir.aculo.us)
// Contributors:
//  Justin Palmer (http://encytemedia.com/)
//  Mark Pilgrim (http://diveintomark.org/)
//  Martin Bialasinki
// 
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details,see the script.aculo.us web site:http://script.aculo.us/ 

// converts rgb() and #xxx to #xxxxxx format, 
// returns self (or first argument) if not convertable  
String.prototype.parseColor = function(){ 
  var color = '#';
  if (this.slice(0,4) == 'rgb('){ 
    var cols = this.slice(4,this.length-1).split(','); 
    var i=0;do{color += parseInt(cols[i]).toColorPart()}while (++i<3); 
 }else{ 
    if (this.slice(0,1) == '#'){ 
      if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); 
      if (this.length==7) color = this.toLowerCase(); 
   } 
 } 
  return (color.length==7 ? color :(arguments[0] || this)); 
};

/*--------------------------------------------------------------------------*/

Element.collectTextNodes = function(element){ 
  return $A($(element).childNodes).collect(function(node){
    return (node.nodeType==3 ? node.nodeValue :
      (node.hasChildNodes() ? Element.collectTextNodes(node) :''));
 }).flatten().join('');
};

Element.collectTextNodesIgnoreClass = function(element,className){ 
  return $A($(element).childNodes).collect(function(node){
    return (node.nodeType==3 ? node.nodeValue :
      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? 
        Element.collectTextNodesIgnoreClass(node,className) :''));
 }).flatten().join('');
};

Element.setContentZoom = function(element,percent){
  element = $(element); 
  element.setStyle({fontSize:(percent/100) + 'em'});  
  if (Prototype.Browser.WebKit) window.scrollBy(0,0);
  return element;
};

Element.getInlineOpacity = function(element){
  return $(element).style.opacity || '';
};

Element.forceRerendering = function(element){
  try{
    element = $(element);
    var n = document.createTextNode(' ');
    element.appendChild(n);
    element.removeChild(n);
 }catch(e){}
};

/*--------------------------------------------------------------------------*/

var Effect ={
  _elementDoesNotExistError:{
    name:'ElementDoesNotExistError',
    message:'The specified DOM element does not exist,but is required for this effect to operate'
 },
  Transitions:{
    linear:Prototype.K,
    sinoidal:function(pos){
      return (-Math.cos(pos*Math.PI)/2) + 0.5;
   },
    reverse:function(pos){
      return 1-pos;
   },
    flicker:function(pos){
      var pos = ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
      return pos > 1 ? 1 :pos;
   },
    wobble:function(pos){
      return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
   },
    pulse:function(pos,pulses){
      pulses = pulses || 5;
      return (
        ((pos % (1/pulses)) * pulses).round() == 0 ? 
              ((pos * pulses * 2) - (pos * pulses * 2).floor()) :
          1 - ((pos * pulses * 2) - (pos * pulses * 2).floor())
       );
   },
    spring:function(pos){
      return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));
   },
    none:function(pos){
      return 0;
   },
    full:function(pos){
      return 1;
   }
 },
  DefaultOptions:{
    duration:  1.0,  // seconds
    fps:       100,  // 100= assume 66fps max.
    sync:      false,// true for combining
    from:      0.0,
    to:        1.0,
    delay:     0.0,
    queue:     'parallel'
 },
  tagifyText:function(element){
    var tagifyStyle = 'position:relative';
    if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';
    
    element = $(element);
    $A(element.childNodes).each(function(child){
      if (child.nodeType==3){
        child.nodeValue.toArray().each(function(character){
          element.insertBefore(
            new Element('span',{style:tagifyStyle}).update(
              character == ' ' ? String.fromCharCode(160) :character),
              child);
       });
        Element.remove(child);
     }
   });
 },
  multiple:function(element,effect){
    var elements;
    if (((typeof element == 'object') || 
        Object.isFunction(element)) && 
       (element.length))
      elements = element;
    else
      elements = $(element).childNodes;
      
    var options = Object.extend({
      speed:0.1,
      delay:0.0
   },arguments[2] ||{});
    var masterDelay = options.delay;

    $A(elements).each(function(element,index){
      new effect(element,Object.extend(options,{delay:index * options.speed + masterDelay}));
   });
 },
  PAIRS:{
    'slide': ['SlideDown','SlideUp'],
    'blind': ['BlindDown','BlindUp'],
    'appear':['Appear','Fade']
 },
  toggle:function(element,effect){
    element = $(element);
    effect = (effect || 'appear').toLowerCase();
    var options = Object.extend({
      queue:{position:'end',scope:(element.id || 'global'),limit:1}
   },arguments[2] ||{});
    Effect[element.visible() ? 
      Effect.PAIRS[effect][1] :Effect.PAIRS[effect][0]](element,options);
 }
};

Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;

/* ------------- core effects ------------- */

Effect.ScopedQueue = Class.create(Enumerable,{
  initialize:function(){
    this.effects  = [];
    this.interval = null;   
 },
  _each:function(iterator){
    this.effects._each(iterator);
 },
  add:function(effect){
    var timestamp = new Date().getTime();
    
    var position = Object.isString(effect.options.queue) ? 
      effect.options.queue :effect.options.queue.position;
    
    switch(position){
      case 'front':
        // move unstarted effects after this effect  
        this.effects.findAll(function(e){return e.state=='idle'}).each(function(e){
            e.startOn  += effect.finishOn;
            e.finishOn += effect.finishOn;
         });
        break;
      case 'with-last':
        timestamp = this.effects.pluck('startOn').max() || timestamp;
        break;
      case 'end':
        // start effect after last queued effect has finished
        timestamp = this.effects.pluck('finishOn').max() || timestamp;
        break;
   }
    
    effect.startOn  += timestamp;
    effect.finishOn += timestamp;

    if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
      this.effects.push(effect);
    
    if (!this.interval)
      this.interval = setInterval(this.loop.bind(this),15);
 },
  remove:function(effect){
    this.effects = this.effects.reject(function(e){return e==effect});
    if (this.effects.length == 0){
      clearInterval(this.interval);
      this.interval = null;
   }
 },
  loop:function(){
    var timePos = new Date().getTime();
    for(var i=0,len=this.effects.length;i<len;i++) 
      this.effects[i] && this.effects[i].loop(timePos);
 }
});

Effect.Queues ={
  instances:$H(),
  get:function(queueName){
    if (!Object.isString(queueName)) return queueName;
    
    return this.instances.get(queueName) ||
      this.instances.set(queueName,new Effect.ScopedQueue());
 }
};
Effect.Queue = Effect.Queues.get('global');

Effect.Base = Class.create({
  position:null,
  start:function(options){
    function codeForEvent(options,eventName){
      return (
        (options[eventName+'Internal'] ? 'this.options.'+eventName+'Internal(this);' :'') +
        (options[eventName] ? 'this.options.'+eventName+'(this);' :'')
     );
   }
    if (options && options.transition === false) options.transition = Effect.Transitions.linear;
    this.options      = Object.extend(Object.extend({},Effect.DefaultOptions),options ||{});
    this.currentFrame = 0;
    this.state        = 'idle';
    this.startOn      = this.options.delay*1000;
    this.finishOn     = this.startOn+(this.options.duration*1000);
    this.fromToDelta  = this.options.to-this.options.from;
    this.totalTime    = this.finishOn-this.startOn;
    this.totalFrames  = this.options.fps*this.options.duration;
    
    eval('this.render = function(pos){'+
      'if (this.state=="idle"){this.state="running";'+
      codeForEvent(this.options,'beforeSetup')+
      (this.setup ? 'this.setup();':'')+ 
      codeForEvent(this.options,'afterSetup')+
      '};if (this.state=="running"){'+
      'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+
      'this.position=pos;'+
      codeForEvent(this.options,'beforeUpdate')+
      (this.update ? 'this.update(pos);':'')+
      codeForEvent(this.options,'afterUpdate')+
      '}}');
    
    this.event('beforeStart');
    if (!this.options.sync)
      Effect.Queues.get(Object.isString(this.options.queue) ? 
        'global' :this.options.queue.scope).add(this);
 },
  loop:function(timePos){
    if (timePos >= this.startOn){
      if (timePos >= this.finishOn){
        this.render(1.0);
        this.cancel();
        this.event('beforeFinish');
        if (this.finish) this.finish();
        this.event('afterFinish');
        return; 
     }
      var pos   = (timePos - this.startOn) / this.totalTime,
          frame = (pos * this.totalFrames).round();
      if (frame > this.currentFrame){
        this.render(pos);
        this.currentFrame = frame;
     }
   }
 },
  cancel:function(){
    if (!this.options.sync)
      Effect.Queues.get(Object.isString(this.options.queue) ? 
        'global' :this.options.queue.scope).remove(this);
    this.state = 'finished';
 },
  event:function(eventName){
    if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
    if (this.options[eventName]) this.options[eventName](this);
 },
  inspect:function(){
    var data = $H();
    for(property in this)
      if (!Object.isFunction(this[property])) data.set(property,this[property]);
    return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
 }
});

Effect.Parallel = Class.create(Effect.Base,{
  initialize:function(effects){
    this.effects = effects || [];
    this.start(arguments[1]);
 },
  update:function(position){
    this.effects.invoke('render',position);
 },
  finish:function(position){
    this.effects.each(function(effect){
      effect.render(1.0);
      effect.cancel();
      effect.event('beforeFinish');
      if (effect.finish) effect.finish(position);
      effect.event('afterFinish');
   });
 }
});

Effect.Tween = Class.create(Effect.Base,{
  initialize:function(object,from,to){
    object = Object.isString(object) ? $(object) :object;
    var args = $A(arguments),method = args.last(),
      options = args.length == 5 ? args[3] :null;
    this.method = Object.isFunction(method) ? method.bind(object) :
      Object.isFunction(object[method]) ? object[method].bind(object) :
      function(value){object[method] = value};
    this.start(Object.extend({from:from,to:to},options ||{}));
 },
  update:function(position){
    this.method(position);
 }
});

Effect.Event = Class.create(Effect.Base,{
  initialize:function(){
    this.start(Object.extend({duration:0},arguments[0] ||{}));
 },
  update:Prototype.emptyFunction
});

Effect.Opacity = Class.create(Effect.Base,{
  initialize:function(element){
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    // make this work on IE on elements without 'layout'
    if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
      this.element.setStyle({zoom:1});
    var options = Object.extend({
      from:this.element.getOpacity() || 0.0,
      to:  1.0
   },arguments[1] ||{});
    this.start(options);
 },
  update:function(position){
    this.element.setOpacity(position);
 }
});

Effect.Move = Class.create(Effect.Base,{
  initialize:function(element){
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      x:   0,
      y:   0,
      mode:'relative'
   },arguments[1] ||{});
    this.start(options);
 },
  setup:function(){
    this.element.makePositioned();
    this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
    this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
    if (this.options.mode == 'absolute'){
      this.options.x = this.options.x - this.originalLeft;
      this.options.y = this.options.y - this.originalTop;
   }
 },
  update:function(position){
    this.element.setStyle({
      left:(this.options.x  * position + this.originalLeft).round() + 'px',
      top: (this.options.y  * position + this.originalTop).round()  + 'px'
   });
 }
});

// for backwards compatibility
Effect.MoveBy = function(element,toTop,toLeft){
  return new Effect.Move(element,
    Object.extend({x:toLeft,y:toTop},arguments[3] ||{}));
};

Effect.Scale = Class.create(Effect.Base,{
  initialize:function(element,percent){
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      scaleX:true,
      scaleY:true,
      scaleContent:true,
      scaleFromCenter:false,
      scaleMode:'box',       // 'box' or 'contents' or{}with provided values
      scaleFrom:100.0,
      scaleTo:  percent
   },arguments[2] ||{});
    this.start(options);
 },
  setup:function(){
    this.restoreAfterFinish = this.options.restoreAfterFinish || false;
    this.elementPositioning = this.element.getStyle('position');
    
    this.originalStyle ={};
    ['top','left','width','height','fontSize'].each(function(k){
      this.originalStyle[k] = this.element.style[k];
   }.bind(this));
      
    this.originalTop  = this.element.offsetTop;
    this.originalLeft = this.element.offsetLeft;
    
    var fontSize = this.element.getStyle('font-size') || '100%';
    ['em','px','%','pt'].each(function(fontSizeType){
      if (fontSize.indexOf(fontSizeType)>0){
        this.fontSize     = parseFloat(fontSize);
        this.fontSizeType = fontSizeType;
     }
   }.bind(this));
    
    this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
    
    this.dims = null;
    if (this.options.scaleMode=='box')
      this.dims = [this.element.offsetHeight,this.element.offsetWidth];
    if (/^content/.test(this.options.scaleMode))
      this.dims = [this.element.scrollHeight,this.element.scrollWidth];
    if (!this.dims)
      this.dims = [this.options.scaleMode.originalHeight,
                   this.options.scaleMode.originalWidth];
 },
  update:function(position){
    var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
    if (this.options.scaleContent && this.fontSize)
      this.element.setStyle({fontSize:this.fontSize * currentScale + this.fontSizeType});
    this.setDimensions(this.dims[0] * currentScale,this.dims[1] * currentScale);
 },
  finish:function(position){
    if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
 },
  setDimensions:function(height,width){
    var d ={};
    if (this.options.scaleX) d.width = width.round() + 'px';
    if (this.options.scaleY) d.height = height.round() + 'px';
    if (this.options.scaleFromCenter){
      var topd  = (height - this.dims[0])/2;
      var leftd = (width  - this.dims[1])/2;
      if (this.elementPositioning == 'absolute'){
        if (this.options.scaleY) d.top = this.originalTop-topd + 'px';
        if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
     }else{
        if (this.options.scaleY) d.top = -topd + 'px';
        if (this.options.scaleX) d.left = -leftd + 'px';
     }
   }
    this.element.setStyle(d);
 }
});

Effect.Highlight = Class.create(Effect.Base,{
  initialize:function(element){
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({startcolor:'#ffff99'},arguments[1] ||{});
    this.start(options);
 },
  setup:function(){
    // Prevent executing on elements not in the layout flow
    if (this.element.getStyle('display')=='none'){this.cancel();return;}
    // Disable background image during the effect
    this.oldStyle ={};
    if (!this.options.keepBackgroundImage){
      this.oldStyle.backgroundImage = this.element.getStyle('background-image');
      this.element.setStyle({backgroundImage:'none'});
   }
    if (!this.options.endcolor)
      this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
    if (!this.options.restorecolor)
      this.options.restorecolor = this.element.getStyle('background-color');
    // init color calculations
    this._base  = $R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));
    this._delta = $R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this));
 },
  update:function(position){
    this.element.setStyle({backgroundColor:$R(0,2).inject('#',function(m,v,i){
      return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart());}.bind(this))});
 },
  finish:function(){
    this.element.setStyle(Object.extend(this.oldStyle,{
      backgroundColor:this.options.restorecolor
   }));
 }
});

Effect.ScrollTo = function(element){
  var options = arguments[1] ||{},
    scrollOffsets = document.viewport.getScrollOffsets(),
    elementOffsets = $(element).cumulativeOffset(),
    max = (window.height || document.body.scrollHeight) - document.viewport.getHeight(); 

  if (options.offset) elementOffsets[1] += options.offset;

  return new Effect.Tween(null,
    scrollOffsets.top,
    elementOffsets[1] > max ? max :elementOffsets[1],
    options,
    function(p){scrollTo(scrollOffsets.left,p.round())}
 );
};

/* ------------- combination effects ------------- */

Effect.Fade = function(element){
  element = $(element);
  var oldOpacity = element.getInlineOpacity();
  var options = Object.extend({
    from:element.getOpacity() || 1.0,
    to:  0.0,
    afterFinishInternal:function(effect){
      if (effect.options.to!=0) return;
      effect.element.hide().setStyle({opacity:oldOpacity});
   }
 },arguments[1] ||{});
  return new Effect.Opacity(element,options);
};

Effect.Appear = function(element){
  element = $(element);
  var options = Object.extend({
  from:(element.getStyle('display') == 'none' ? 0.0 :element.getOpacity() || 0.0),
  to:  1.0,
  // force Safari to render floated elements properly
  afterFinishInternal:function(effect){
    effect.element.forceRerendering();
 },
  beforeSetup:function(effect){
    effect.element.setOpacity(effect.options.from).show();
 }},arguments[1] ||{});
  return new Effect.Opacity(element,options);
};

Effect.Puff = function(element){
  element = $(element);
  var oldStyle ={
    opacity:element.getInlineOpacity(),
    position:element.getStyle('position'),
    top: element.style.top,
    left:element.style.left,
    width:element.style.width,
    height:element.style.height
 };
  return new Effect.Parallel(
   [new Effect.Scale(element,200,
     {sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),
     new Effect.Opacity(element,{sync:true,to:0.0})],
     Object.extend({duration:1.0,
      beforeSetupInternal:function(effect){
        Position.absolutize(effect.effects[0].element)
     },
      afterFinishInternal:function(effect){
         effect.effects[0].element.hide().setStyle(oldStyle);}
    },arguments[1] ||{})
  );
};

Effect.BlindUp = function(element){
  element = $(element);
  element.makeClipping();
  return new Effect.Scale(element,0,
    Object.extend({scaleContent:false,
      scaleX:false,
      restoreAfterFinish:true,
      afterFinishInternal:function(effect){
        effect.element.hide().undoClipping();
     }
   },arguments[1] ||{})
 );
};

Effect.BlindDown = function(element){
  element = $(element);
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element,100,Object.extend({
    scaleContent:false,
    scaleX:false,
    scaleFrom:0,
    scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},
    restoreAfterFinish:true,
    afterSetup:function(effect){
      effect.element.makeClipping().setStyle({height:'0px'}).show();
   }, 
    afterFinishInternal:function(effect){
      effect.element.undoClipping();
   }
 },arguments[1] ||{}));
};

Effect.SwitchOff = function(element){
  element = $(element);
  var oldOpacity = element.getInlineOpacity();
  return new Effect.Appear(element,Object.extend({
    duration:0.4,
    from:0,
    transition:Effect.Transitions.flicker,
    afterFinishInternal:function(effect){
      new Effect.Scale(effect.element,1,{
        duration:0.3,scaleFromCenter:true,
        scaleX:false,scaleContent:false,restoreAfterFinish:true,
        beforeSetup:function(effect){
          effect.element.makePositioned().makeClipping();
       },
        afterFinishInternal:function(effect){
          effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});
       }
     })
   }
 },arguments[1] ||{}));
};

Effect.DropOut = function(element){
  element = $(element);
  var oldStyle ={
    top:element.getStyle('top'),
    left:element.getStyle('left'),
    opacity:element.getInlineOpacity()};
  return new Effect.Parallel(
    [new Effect.Move(element,{x:0,y:100,sync:true}),
      new Effect.Opacity(element,{sync:true,to:0.0})],
    Object.extend(
     {duration:0.5,
        beforeSetup:function(effect){
          effect.effects[0].element.makePositioned();
       },
        afterFinishInternal:function(effect){
          effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
       }
     },arguments[1] ||{}));
};

Effect.Shake = function(element){
  element = $(element);
  var options = Object.extend({
    distance:20,
    duration:0.5
 },arguments[1] ||{});
  var distance = parseFloat(options.distance);
  var split = parseFloat(options.duration) / 10.0;
  var oldStyle ={
    top:element.getStyle('top'),
    left:element.getStyle('left')};
    return new Effect.Move(element,
     {x: distance,y:0,duration:split,afterFinishInternal:function(effect){
    new Effect.Move(effect.element,
     {x:-distance*2,y:0,duration:split*2, afterFinishInternal:function(effect){
    new Effect.Move(effect.element,
     {x: distance*2,y:0,duration:split*2, afterFinishInternal:function(effect){
    new Effect.Move(effect.element,
     {x:-distance*2,y:0,duration:split*2, afterFinishInternal:function(effect){
    new Effect.Move(effect.element,
     {x: distance*2,y:0,duration:split*2, afterFinishInternal:function(effect){
    new Effect.Move(effect.element,
     {x:-distance,y:0,duration:split,afterFinishInternal:function(effect){
        effect.element.undoPositioned().setStyle(oldStyle);
 }})}})}})}})}})}});
};

Effect.SlideDown = function(element){
  element = $(element).cleanWhitespace();
  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
  var oldInnerBottom = element.down().getStyle('bottom');
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element,100,Object.extend({
    scaleContent:false,
    scaleX:false,
    scaleFrom:window.opera ? 0 :1,
    scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},
    restoreAfterFinish:true,
    afterSetup:function(effect){
      effect.element.makePositioned();
      effect.element.down().makePositioned();
      if (window.opera) effect.element.setStyle({top:''});
      effect.element.makeClipping().setStyle({height:'0px'}).show();
   },
    afterUpdateInternal:function(effect){
      effect.element.down().setStyle({bottom:
        (effect.dims[0] - effect.element.clientHeight) + 'px'});
   },
    afterFinishInternal:function(effect){
      effect.element.undoClipping().undoPositioned();
      effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}
   },arguments[1] ||{})
 );
};

Effect.SlideUp = function(element){
  element = $(element).cleanWhitespace();
  var oldInnerBottom = element.down().getStyle('bottom');
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element,window.opera ? 0 :1,
   Object.extend({scaleContent:false,
    scaleX:false,
    scaleMode:'box',
    scaleFrom:100,
    scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},
    restoreAfterFinish:true,
    afterSetup:function(effect){
      effect.element.makePositioned();
      effect.element.down().makePositioned();
      if (window.opera) effect.element.setStyle({top:''});
      effect.element.makeClipping().show();
   }, 
    afterUpdateInternal:function(effect){
      effect.element.down().setStyle({bottom:
        (effect.dims[0] - effect.element.clientHeight) + 'px'});
   },
    afterFinishInternal:function(effect){
      effect.element.hide().undoClipping().undoPositioned();
      effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});
   }
  },arguments[1] ||{})
 );
};

// Bug in opera makes the TD containing this element expand for a instance after finish 
Effect.Squish = function(element){
  return new Effect.Scale(element,window.opera ? 1 :0,{
    restoreAfterFinish:true,
    beforeSetup:function(effect){
      effect.element.makeClipping();
   }, 
    afterFinishInternal:function(effect){
      effect.element.hide().undoClipping();
   }
 });
};

Effect.Grow = function(element){
  element = $(element);
  var options = Object.extend({
    direction:'center',
    moveTransition:Effect.Transitions.sinoidal,
    scaleTransition:Effect.Transitions.sinoidal,
    opacityTransition:Effect.Transitions.full
 },arguments[1] ||{});
  var oldStyle ={
    top:element.style.top,
    left:element.style.left,
    height:element.style.height,
    width:element.style.width,
    opacity:element.getInlineOpacity()};

  var dims = element.getDimensions();   
  var initialMoveX,initialMoveY;
  var moveX,moveY;
  
  switch (options.direction){
    case 'top-left':
      initialMoveX = initialMoveY = moveX = moveY = 0;
      break;
    case 'top-right':
      initialMoveX = dims.width;
      initialMoveY = moveY = 0;
      moveX = -dims.width;
      break;
    case 'bottom-left':
      initialMoveX = moveX = 0;
      initialMoveY = dims.height;
      moveY = -dims.height;
      break;
    case 'bottom-right':
      initialMoveX = dims.width;
      initialMoveY = dims.height;
      moveX = -dims.width;
      moveY = -dims.height;
      break;
    case 'center':
      initialMoveX = dims.width / 2;
      initialMoveY = dims.height / 2;
      moveX = -dims.width / 2;
      moveY = -dims.height / 2;
      break;
 }
  
  return new Effect.Move(element,{
    x:initialMoveX,
    y:initialMoveY,
    duration:0.01,
    beforeSetup:function(effect){
      effect.element.hide().makeClipping().makePositioned();
   },
    afterFinishInternal:function(effect){
      new Effect.Parallel(
        [new Effect.Opacity(effect.element,{sync:true,to:1.0,from:0.0,transition:options.opacityTransition}),
          new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),
          new Effect.Scale(effect.element,100,{
            scaleMode:{originalHeight:dims.height,originalWidth:dims.width},
            sync:true,scaleFrom:window.opera ? 1 :0,transition:options.scaleTransition,restoreAfterFinish:true})
       ],Object.extend({
             beforeSetup:function(effect){
               effect.effects[0].element.setStyle({height:'0px'}).show();
            },
             afterFinishInternal:function(effect){
               effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
            }
          },options)
     )
   }
 });
};

Effect.Shrink = function(element){
  element = $(element);
  var options = Object.extend({
    direction:'center',
    moveTransition:Effect.Transitions.sinoidal,
    scaleTransition:Effect.Transitions.sinoidal,
    opacityTransition:Effect.Transitions.none
 },arguments[1] ||{});
  var oldStyle ={
    top:element.style.top,
    left:element.style.left,
    height:element.style.height,
    width:element.style.width,
    opacity:element.getInlineOpacity()};

  var dims = element.getDimensions();
  var moveX,moveY;
  
  switch (options.direction){
    case 'top-left':
      moveX = moveY = 0;
      break;
    case 'top-right':
      moveX = dims.width;
      moveY = 0;
      break;
    case 'bottom-left':
      moveX = 0;
      moveY = dims.height;
      break;
    case 'bottom-right':
      moveX = dims.width;
      moveY = dims.height;
      break;
    case 'center': 
      moveX = dims.width / 2;
      moveY = dims.height / 2;
      break;
 }
  
  return new Effect.Parallel(
    [new Effect.Opacity(element,{sync:true,to:0.0,from:1.0,transition:options.opacityTransition}),
      new Effect.Scale(element,window.opera ? 1 :0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),
      new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})
   ],Object.extend({           
         beforeStartInternal:function(effect){
           effect.effects[0].element.makePositioned().makeClipping();
        },
         afterFinishInternal:function(effect){
           effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}
      },options)
 );
};

Effect.Pulsate = function(element){
  element = $(element);
  var options    = arguments[1] ||{};
  var oldOpacity = element.getInlineOpacity();
  var transition = options.transition || Effect.Transitions.sinoidal;
  var reverser   = function(pos){return transition(1-Effect.Transitions.pulse(pos,options.pulses))};
  reverser.bind(transition);
  return new Effect.Opacity(element,
    Object.extend(Object.extend({ duration:2.0,from:0,
      afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}
   },options),{transition:reverser}));
};

Effect.Fold = function(element){
  element = $(element);
  var oldStyle ={
    top:element.style.top,
    left:element.style.left,
    width:element.style.width,
    height:element.style.height};
  element.makeClipping();
  return new Effect.Scale(element,5,Object.extend({  
    scaleContent:false,
    scaleX:false,
    afterFinishInternal:function(effect){
    new Effect.Scale(element,1,{
      scaleContent:false,
      scaleY:false,
      afterFinishInternal:function(effect){
        effect.element.hide().undoClipping().setStyle(oldStyle);
     }});
 }},arguments[1] ||{}));
};

Effect.Morph = Class.create(Effect.Base,{
  initialize:function(element){
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      style:{}
   },arguments[1] ||{});
    
    if (!Object.isString(options.style)) this.style = $H(options.style);
    else{
      if (options.style.include(':'))
        this.style = options.style.parseStyle();
      else{
        this.element.addClassName(options.style);
        this.style = $H(this.element.getStyles());
        this.element.removeClassName(options.style);
        var css = this.element.getStyles();
        this.style = this.style.reject(function(style){
          return style.value == css[style.key];
       });
        options.afterFinishInternal = function(effect){
          effect.element.addClassName(effect.options.style);
          effect.transforms.each(function(transform){
            effect.element.style[transform.style] = '';
         });
       }
     }
   }
    this.start(options);
 },
  
  setup:function(){
    function parseColor(color){
      if (!color || ['rgba(0,0,0,0)','transparent'].include(color)) color = '#ffffff';
      color = color.parseColor();
      return $R(0,2).map(function(i){
        return parseInt(color.slice(i*2+1,i*2+3),16) 
     });
   }
    this.transforms = this.style.map(function(pair){
      var property = pair[0],value = pair[1],unit = null;

      if (value.parseColor('#zzzzzz') != '#zzzzzz'){
        value = value.parseColor();
        unit  = 'color';
     }else if (property == 'opacity'){
        value = parseFloat(value);
        if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
          this.element.setStyle({zoom:1});
     }else if (Element.CSS_LENGTH.test(value)){
          var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
          value = parseFloat(components[1]);
          unit = (components.length == 3) ? components[2] :null;
     }

      var originalValue = this.element.getStyle(property);
      return{
        style:property.camelize(),
        originalValue:unit=='color' ? parseColor(originalValue) :parseFloat(originalValue || 0),
        targetValue:unit=='color' ? parseColor(value) :value,
        unit:unit
     };
   }.bind(this)).reject(function(transform){
      return (
        (transform.originalValue == transform.targetValue) ||
        (
          transform.unit != 'color' &&
          (isNaN(transform.originalValue) || isNaN(transform.targetValue))
       )
     )
   });
 },
  update:function(position){
    var style ={},transform,i = this.transforms.length;
    while(i--)
      style[(transform = this.transforms[i]).style] = 
        transform.unit=='color' ? '#'+
          (Math.round(transform.originalValue[0]+
            (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
          (Math.round(transform.originalValue[1]+
            (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
          (Math.round(transform.originalValue[2]+
            (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
        (transform.originalValue +
          (transform.targetValue - transform.originalValue) * position).toFixed(3) + 
            (transform.unit === null ? '' :transform.unit);
    this.element.setStyle(style,true);
 }
});

Effect.Transform = Class.create({
  initialize:function(tracks){
    this.tracks  = [];
    this.options = arguments[1] ||{};
    this.addTracks(tracks);
 },
  addTracks:function(tracks){
    tracks.each(function(track){
      track = $H(track);
      var data = track.values().first();
      this.tracks.push($H({
        ids:    track.keys().first(),
        effect: Effect.Morph,
        options:{style:data}
     }));
   }.bind(this));
    return this;
 },
  play:function(){
    return new Effect.Parallel(
      this.tracks.map(function(track){
        var ids = track.get('ids'),effect = track.get('effect'),options = track.get('options');
        var elements = [$(ids) || $$(ids)].flatten();
        return elements.map(function(e){return new effect(e,Object.extend({sync:true},options))});
     }).flatten(),
      this.options
   );
 }
});

Element.CSS_PROPERTIES = $w(
  'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 
  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
  'fontSize fontWeight height left letterSpacing lineHeight ' +
  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
  'right textIndent top width wordSpacing zIndex');
  
Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;

String.__parseStyleElement = document.createElement('div');
String.prototype.parseStyle = function(){
  var style,styleRules = $H();
  if (Prototype.Browser.WebKit)
    style = new Element('div',{style:this}).style;
  else{
    String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
    style = String.__parseStyleElement.childNodes[0].style;
 }
  
  Element.CSS_PROPERTIES.each(function(property){
    if (style[property]) styleRules.set(property,style[property]);
 });
  
  if (Prototype.Browser.IE && this.include('opacity'))
    styleRules.set('opacity',this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);

  return styleRules;
};

if (document.defaultView && document.defaultView.getComputedStyle){
  Element.getStyles = function(element){
    var css = document.defaultView.getComputedStyle($(element),null);
    return Element.CSS_PROPERTIES.inject({},function(styles,property){
      styles[property] = css[property];
      return styles;
   });
 };
}else{
  Element.getStyles = function(element){
    element = $(element);
    var css = element.currentStyle,styles;
    styles = Element.CSS_PROPERTIES.inject({},function(results,property){
      results[property] = css[property];
      return results;
   });
    if (!styles.opacity) styles.opacity = element.getOpacity();
    return styles;
 };
};

Effect.Methods ={
  morph:function(element,style){
    element = $(element);
    new Effect.Morph(element,Object.extend({style:style},arguments[2] ||{}));
    return element;
 },
  visualEffect:function(element,effect,options){
    element = $(element)
    var s = effect.dasherize().camelize(),klass = s.charAt(0).toUpperCase() + s.substring(1);
    new Effect[klass](element,options);
    return element;
 },
  highlight:function(element,options){
    element = $(element);
    new Effect.Highlight(element,options);
    return element;
 }
};

$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
  'pulsate shake puff squish switchOff dropOut').each(
  function(effect){
    Effect.Methods[effect] = function(element,options){
      element = $(element);
      Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element,options);
      return element;
   }
 }
);

$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(
  function(f){Effect.Methods[f] = Element[f];}
);

Element.addMethods(Effect.Methods);