/* compact [
	prive/javascript/jquery.js
	prive/javascript/jquery.form.js
	prive/javascript/ajaxCallback.js
	plugins/thickbox2/javascript/thickbox.js
	./IMG/SpryAssets/SpryCollapsiblePanel.js
	IMG/SpryAssets/SpryEffects.js
] 66.7% */

/* prive/javascript/jquery.js */
(function(){
var _jQuery=window.jQuery,
_$=window.$;
var jQuery=window.jQuery=window.$=function(selector,context){
return new jQuery.fn.init(selector,context)};
var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,
isSimple=/^.[^:#\[\.]*$/,
undefined;
jQuery.fn=jQuery.prototype={
init:function(selector,context){
selector=selector||document;
if(selector.nodeType){
this[0]=selector;
this.length=1;
return this}
if(typeof selector=="string"){
var match=quickExpr.exec(selector);
if(match&&(match[1]||!context)){
if(match[1])
selector=jQuery.clean([match[1]],context);
else{
var elem=document.getElementById(match[3]);
if(elem){
if(elem.id!=match[3])
return jQuery().find(selector);
return jQuery(elem)}
selector=[]}
}else
return jQuery(context).find(selector)}else if(jQuery.isFunction(selector))
return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);
return this.setArray(jQuery.makeArray(selector))},
jquery:"1.2.6",
size:function(){
return this.length},
length:0,
get:function(num){
return num==undefined?
jQuery.makeArray(this):
this[num]},
pushStack:function(elems){
var ret=jQuery(elems);
ret.prevObject=this;
return ret},
setArray:function(elems){
this.length=0;
Array.prototype.push.apply(this,elems);
return this},
each:function(callback,args){
return jQuery.each(this,callback,args)},
index:function(elem){
var ret=-1;
return jQuery.inArray(
elem&&elem.jquery?elem[0]:elem
,this)},
attr:function(name,value,type){
var options=name;
if(name.constructor==String)
if(value===undefined)
return this[0]&&jQuery[type||"attr"](this[0],name);
else{
options={};
options[name]=value}
return this.each(function(i){
for(name in options)
jQuery.attr(
type?
this.style:
this,
name,jQuery.prop(this,options[name],type,i,name)
)})},
css:function(key,value){
if((key=='width'||key=='height')&&parseFloat(value)<0)
value=undefined;
return this.attr(key,value,"curCSS")},
text:function(text){
if(typeof text!="object"&&text!=null)
return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));
var ret="";
jQuery.each(text||this,function(){
jQuery.each(this.childNodes,function(){
if(this.nodeType!=8)
ret+=this.nodeType!=1?
this.nodeValue:
jQuery.fn.text([this])})});
return ret},
wrapAll:function(html){
if(this[0])
jQuery(html,this[0].ownerDocument)
.clone()
.insertBefore(this[0])
.map(function(){
var elem=this;
while(elem.firstChild)
elem=elem.firstChild;
return elem})
.append(this);
return this},
wrapInner:function(html){
return this.each(function(){
jQuery(this).contents().wrapAll(html)})},
wrap:function(html){
return this.each(function(){
jQuery(this).wrapAll(html)})},
append:function(){
return this.domManip(arguments,true,false,function(elem){
if(this.nodeType==1)
this.appendChild(elem)})},
prepend:function(){
return this.domManip(arguments,true,true,function(elem){
if(this.nodeType==1)
this.insertBefore(elem,this.firstChild)})},
before:function(){
return this.domManip(arguments,false,false,function(elem){
this.parentNode.insertBefore(elem,this)})},
after:function(){
return this.domManip(arguments,false,true,function(elem){
this.parentNode.insertBefore(elem,this.nextSibling)})},
end:function(){
return this.prevObject||jQuery([])},
find:function(selector){
var elems=jQuery.map(this,function(elem){
return jQuery.find(selector,elem)});
return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?
jQuery.unique(elems):
elems)},
clone:function(events){
var ret=this.map(function(){
if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){
var clone=this.cloneNode(true),
container=document.createElement("div");
container.appendChild(clone);
return jQuery.clean([container.innerHTML])[0]}else
return this.cloneNode(true)});
var clone=ret.find("*").andSelf().each(function(){
if(this[expando]!=undefined)
this[expando]=null});
if(events===true)
this.find("*").andSelf().each(function(i){
if(this.nodeType==3)
return;
var events=jQuery.data(this,"events");
for(var type in events)
for(var handler in events[type])
jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data)});
return ret},
filter:function(selector){
return this.pushStack(
jQuery.isFunction(selector)&&
jQuery.grep(this,function(elem,i){
return selector.call(elem,i)})||
jQuery.multiFilter(selector,this))},
not:function(selector){
if(selector.constructor==String)
if(isSimple.test(selector))
return this.pushStack(jQuery.multiFilter(selector,this,true));
else
selector=jQuery.multiFilter(selector,this);
var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;
return this.filter(function(){
return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector})},
add:function(selector){
return this.pushStack(jQuery.unique(jQuery.merge(
this.get(),
typeof selector=='string'?
jQuery(selector):
jQuery.makeArray(selector)
)))},
is:function(selector){
return!!selector&&jQuery.multiFilter(selector,this).length>0},
hasClass:function(selector){
return this.is("."+selector)},
val:function(value){
if(value==undefined){
if(this.length){
var elem=this[0];
if(jQuery.nodeName(elem,"select")){
var index=elem.selectedIndex,
values=[],
options=elem.options,
one=elem.type=="select-one";
if(index<0)
return null;
for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){
var option=options[i];
if(option.selected){
value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;
if(one)
return value;
values.push(value)}
}
return values}else
return(this[0].value||"").replace(/\r/g,"")}
return undefined}
if(value.constructor==Number)
value+='';
return this.each(function(){
if(this.nodeType!=1)
return;
if(value.constructor==Array&&/radio|checkbox/.test(this.type))
this.checked=(jQuery.inArray(this.value,value)>=0||
jQuery.inArray(this.name,value)>=0);
else if(jQuery.nodeName(this,"select")){
var values=jQuery.makeArray(value);
jQuery("option",this).each(function(){
this.selected=(jQuery.inArray(this.value,values)>=0||
jQuery.inArray(this.text,values)>=0)});
if(!values.length)
this.selectedIndex=-1}else
this.value=value})},
html:function(value){
return value==undefined?
(this[0]?
this[0].innerHTML:
null):
this.empty().append(value)},
replaceWith:function(value){
return this.after(value).remove()},
eq:function(i){
return this.slice(i,i+1)},
slice:function(){
return this.pushStack(Array.prototype.slice.apply(this,arguments))},
map:function(callback){
return this.pushStack(jQuery.map(this,function(elem,i){
return callback.call(elem,i,elem)}))},
andSelf:function(){
return this.add(this.prevObject)},
data:function(key,value){
var parts=key.split(".");
parts[1]=parts[1]?"."+parts[1]:"";
if(value===undefined){
var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);
if(data===undefined&&this.length)
data=jQuery.data(this[0],key);
return data===undefined&&parts[1]?
this.data(parts[0]):
data}else
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){
jQuery.data(this,key,value)})},
removeData:function(key){
return this.each(function(){
jQuery.removeData(this,key)})},
domManip:function(args,table,reverse,callback){
var clone=this.length>1,elems;
return this.each(function(){
if(!elems){
elems=jQuery.clean(args,this.ownerDocument);
if(reverse)
elems.reverse()}
var obj=this;
if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))
obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));
var scripts=jQuery([]);
jQuery.each(elems,function(){
var elem=clone?
jQuery(this).clone(true)[0]:
this;
if(jQuery.nodeName(elem,"script"))
scripts=scripts.add(elem);
else{
if(elem.nodeType==1)
scripts=scripts.add(jQuery("script",elem).remove());
callback.call(obj,elem)}
});
scripts.each(evalScript)})}
};
jQuery.fn.init.prototype=jQuery.fn;
function evalScript(i,elem){
if(elem.src)
jQuery.ajax({
url:elem.src,
async:false,
dataType:"script"
});
else
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");
if(elem.parentNode)
elem.parentNode.removeChild(elem)}
function now(){
return+new Date}
jQuery.extend=jQuery.fn.extend=function(){
var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;
if(target.constructor==Boolean){
deep=target;
target=arguments[1]||{};
i=2}
if(typeof target!="object"&&typeof target!="function")
target={};
if(length==i){
target=this;
--i}
for(;i<length;i++)
if((options=arguments[i])!=null)
for(var name in options){
var src=target[name],copy=options[name];
if(target===copy)
continue;
if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)
target[name]=jQuery.extend(deep,
src||(copy.length!=null?[]:{})
,copy);
else if(copy!==undefined)
target[name]=copy}
return target};
var expando="jQuery"+now(),uuid=0,windowData={},
exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,
defaultView=document.defaultView||{};
jQuery.extend({
noConflict:function(deep){
window.$=_$;
if(deep)
window.jQuery=_jQuery;
return jQuery},
isFunction:function(fn){
return!!fn&&typeof fn!="string"&&!fn.nodeName&&
fn.constructor!=Array&&/^[\s[]?function/.test(fn+"")},
isXMLDoc:function(elem){
return elem.documentElement&&!elem.body||
elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body},
globalEval:function(data){
data=jQuery.trim(data);
if(data){
var head=document.getElementsByTagName("head")[0]||document.documentElement,
script=document.createElement("script");
script.type="text/javascript";
if(jQuery.browser.msie)
script.text=data;
else
script.appendChild(document.createTextNode(data));
head.insertBefore(script,head.firstChild);
head.removeChild(script)}
},
nodeName:function(elem,name){
return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase()},
cache:{},
data:function(elem,name,data){
elem=elem==window?
windowData:
elem;
var id=elem[expando];
if(!id)
id=elem[expando]=++uuid;
if(name&&!jQuery.cache[id])
jQuery.cache[id]={};
if(data!==undefined)
jQuery.cache[id][name]=data;
return name?
jQuery.cache[id][name]:
id},
removeData:function(elem,name){
elem=elem==window?
windowData:
elem;
var id=elem[expando];
if(name){
if(jQuery.cache[id]){
delete jQuery.cache[id][name];
name="";
for(name in jQuery.cache[id])
break;
if(!name)
jQuery.removeData(elem)}
}else{
try{
delete elem[expando]}catch(e){
if(elem.removeAttribute)
elem.removeAttribute(expando)}
delete jQuery.cache[id]}
},
each:function(object,callback,args){
var name,i=0,length=object.length;
if(args){
if(length==undefined){
for(name in object)
if(callback.apply(object[name],args)===false)
break}else
for(;i<length;)
if(callback.apply(object[i++],args)===false)
break}else{
if(length==undefined){
for(name in object)
if(callback.call(object[name],name,object[name])===false)
break}else
for(var value=object[0];
i<length&&callback.call(value,i,value)!==false;value=object[++i]){}
}
return object},
prop:function(elem,value,type,i,name){
if(jQuery.isFunction(value))
value=value.call(elem,i);
return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?
value+"px":
value},
className:{
add:function(elem,classNames){
jQuery.each((classNames||"").split(/\s+/),function(i,className){
if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))
elem.className+=(elem.className?" ":"")+className})},
remove:function(elem,classNames){
if(elem.nodeType==1)
elem.className=classNames!=undefined?
jQuery.grep(elem.className.split(/\s+/),function(className){
return!jQuery.className.has(classNames,className)}).join(" "):
""},
has:function(elem,className){
return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1}
},
swap:function(elem,options,callback){
var old={};
for(var name in options){
old[name]=elem.style[name];
elem.style[name]=options[name]}
callback.call(elem);
for(var name in options)
elem.style[name]=old[name]},
css:function(elem,name,force){
if(name=="width"||name=="height"){
var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];
function getWH(){
val=name=="width"?elem.offsetWidth:elem.offsetHeight;
var padding=0,border=0;
jQuery.each(which,function(){
padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;
border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0});
val-=Math.round(padding+border)}
if(jQuery(elem).is(":visible"))
getWH();
else
jQuery.swap(elem,props,getWH);
return Math.max(0,val)}
return jQuery.curCSS(elem,name,force)},
curCSS:function(elem,name,force){
var ret,style=elem.style;
function color(elem){
if(!jQuery.browser.safari)
return false;
var ret=defaultView.getComputedStyle(elem,null);
return!ret||ret.getPropertyValue("color")==""}
if(name=="opacity"&&jQuery.browser.msie){
ret=jQuery.attr(style,"opacity");
return ret==""?
"1":
ret}
if(jQuery.browser.opera&&name=="display"){
var save=style.outline;
style.outline="0 solid black";
style.outline=save}
if(name.match(/float/i))
name=styleFloat;
if(!force&&style&&style[name])
ret=style[name];
else if(defaultView.getComputedStyle){
if(name.match(/float/i))
name="float";
name=name.replace(/([A-Z])/g,"-$1").toLowerCase();
var computedStyle=defaultView.getComputedStyle(elem,null);
if(computedStyle&&!color(elem))
ret=computedStyle.getPropertyValue(name);
else{
var swap=[],stack=[],a=elem,i=0;
for(;a&&color(a);a=a.parentNode)
stack.unshift(a);
for(;i<stack.length;i++)
if(color(stack[i])){
swap[i]=stack[i].style.display;
stack[i].style.display="block"}
ret=name=="display"&&swap[stack.length-1]!=null?
"none":
(computedStyle&&computedStyle.getPropertyValue(name))||"";
for(i=0;i<swap.length;i++)
if(swap[i]!=null)
stack[i].style.display=swap[i]}
if(name=="opacity"&&ret=="")
ret="1"}else if(elem.currentStyle){
var camelCase=name.replace(/\-(\w)/g,function(all,letter){
return letter.toUpperCase()});
ret=elem.currentStyle[name]||elem.currentStyle[camelCase];
if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){
var left=style.left,rsLeft=elem.runtimeStyle.left;
elem.runtimeStyle.left=elem.currentStyle.left;
style.left=ret||0;
ret=style.pixelLeft+"px";
style.left=left;
elem.runtimeStyle.left=rsLeft}
}
return ret},
clean:function(elems,context){
var ret=[];
context=context||document;
if(typeof context.createElement=='undefined')
context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;
jQuery.each(elems,function(i,elem){
if(!elem)
return;
if(elem.constructor==Number)
elem+='';
if(typeof elem=="string"){
elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){
return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?
all:
front+"></"+tag+">"});
var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");
var wrap=
!tags.indexOf("<opt")&&
[1,"<select multiple='multiple'>","</select>"]||
!tags.indexOf("<leg")&&
[1,"<fieldset>","</fieldset>"]||
tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&
[1,"<table>","</table>"]||
!tags.indexOf("<tr")&&
[2,"<table><tbody>","</tbody></table>"]||
(!tags.indexOf("<td")||!tags.indexOf("<th"))&&
[3,"<table><tbody><tr>","</tr></tbody></table>"]||
!tags.indexOf("<col")&&
[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||
jQuery.browser.msie&&
[1,"div<div>","</div>"]||
[0,"",""];
div.innerHTML=wrap[1]+elem+wrap[2];
while(wrap[0]--)
div=div.lastChild;
if(jQuery.browser.msie){
var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?
div.firstChild&&div.firstChild.childNodes:
wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?
div.childNodes:
[];
for(var j=tbody.length-1;j>=0;--j)
if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)
tbody[j].parentNode.removeChild(tbody[j]);
if(/^\s/.test(elem))
div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild)}
elem=jQuery.makeArray(div.childNodes)}
if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))
return;
if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)
ret.push(elem);
else
ret=jQuery.merge(ret,elem)});
return ret},
attr:function(elem,name,value){
if(!elem||elem.nodeType==3||elem.nodeType==8)
return undefined;
var notxml=!jQuery.isXMLDoc(elem),
set=value!==undefined,
msie=jQuery.browser.msie;
name=notxml&&jQuery.props[name]||name;
if(elem.tagName){
var special=/href|src|style/.test(name);
if(name=="selected"&&jQuery.browser.safari)
elem.parentNode.selectedIndex;
if(name in elem&&notxml&&!special){
if(set){
if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)
throw"type property can't be changed";
if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))
elem.setAttribute(name,""+value);
else
elem[name]=value}
if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))
return elem.getAttributeNode(name).nodeValue;
return elem[name]}
if(msie&&notxml&&name=="style")
return jQuery.attr(elem.style,"cssText",value);
if(set)
elem.setAttribute(name,""+value);
var attr=msie&&notxml&&special
?elem.getAttribute(name,2)
:elem.getAttribute(name);
return attr===null?undefined:attr}
if(msie&&name=="opacity"){
if(set){
elem.zoom=1;
elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+
(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")")}
return elem.filter&&elem.filter.indexOf("opacity=")>=0?
(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':
""}
name=name.replace(/-([a-z])/ig,function(all,letter){
return letter.toUpperCase()});
if(set)
elem[name]=value;
return elem[name]},
trim:function(text){
return(text||"").replace(/^\s+|\s+$/g,"")},
makeArray:function(array){
var ret=[];
if(array!=null){
var i=array.length;
if(i==null||array.split||array.setInterval||array.call)
ret[0]=array;
else
while(i)
ret[--i]=array[i]}
return ret},
inArray:function(elem,array){
for(var i=0,length=array.length;i<length;i++)
if(array[i]===elem)
return i;
return-1},
merge:function(first,second){
var i=0,elem,pos=first.length;
if(jQuery.browser.msie){
while(elem=second[i++])
if(elem.nodeType!=8)
first[pos++]=elem}else
while(elem=second[i++])
first[pos++]=elem;
return first},
unique:function(array){
var ret=[],done={};
try{
for(var i=0,length=array.length;i<length;i++){
var id=jQuery.data(array[i]);
if(!done[id]){
done[id]=true;
ret.push(array[i])}
}
}catch(e){
ret=array}
return ret},
grep:function(elems,callback,inv){
var ret=[];
for(var i=0,length=elems.length;i<length;i++)
if(!inv!=!callback(elems[i],i))
ret.push(elems[i]);
return ret},
map:function(elems,callback){
var ret=[];
for(var i=0,length=elems.length;i<length;i++){
var value=callback(elems[i],i);
if(value!=null)
ret[ret.length]=value}
return ret.concat.apply([],ret)}
});
var userAgent=navigator.userAgent.toLowerCase();
jQuery.browser={
version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],
safari:/webkit/.test(userAgent),
opera:/opera/.test(userAgent),
msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),
mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)
};
var styleFloat=jQuery.browser.msie?
"styleFloat":
"cssFloat";
jQuery.extend({
boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",
props:{
"for":"htmlFor",
"class":"className",
"float":styleFloat,
cssFloat:styleFloat,
styleFloat:styleFloat,
readonly:"readOnly",
maxlength:"maxLength",
cellspacing:"cellSpacing"
}
});
jQuery.each({
parent:function(elem){return elem.parentNode},
parents:function(elem){return jQuery.dir(elem,"parentNode")},
next:function(elem){return jQuery.nth(elem,2,"nextSibling")},
prev:function(elem){return jQuery.nth(elem,2,"previousSibling")},
nextAll:function(elem){return jQuery.dir(elem,"nextSibling")},
prevAll:function(elem){return jQuery.dir(elem,"previousSibling")},
siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem)},
children:function(elem){return jQuery.sibling(elem.firstChild)},
contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes)}
},function(name,fn){
jQuery.fn[name]=function(selector){
var ret=jQuery.map(this,fn);
if(selector&&typeof selector=="string")
ret=jQuery.multiFilter(selector,ret);
return this.pushStack(jQuery.unique(ret))}});
jQuery.each({
appendTo:"append",
prependTo:"prepend",
insertBefore:"before",
insertAfter:"after",
replaceAll:"replaceWith"
},function(name,original){
jQuery.fn[name]=function(){
var args=arguments;
return this.each(function(){
for(var i=0,length=args.length;i<length;i++)
jQuery(args[i])[original](this)})}});
jQuery.each({
removeAttr:function(name){
jQuery.attr(this,name,"");
if(this.nodeType==1)
this.removeAttribute(name)},
addClass:function(classNames){
jQuery.className.add(this,classNames)},
removeClass:function(classNames){
jQuery.className.remove(this,classNames)},
toggleClass:function(classNames){
jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames)},
remove:function(selector){
if(!selector||jQuery.filter(selector,[this]).r.length){
jQuery("*",this).add(this).each(function(){
jQuery.event.remove(this);
jQuery.removeData(this)});
if(this.parentNode)
this.parentNode.removeChild(this)}
},
empty:function(){
jQuery(">*",this).remove();
while(this.firstChild)
this.removeChild(this.firstChild)}
},function(name,fn){
jQuery.fn[name]=function(){
return this.each(fn,arguments)}});
jQuery.each(["Height","Width"],function(i,name){
var type=name.toLowerCase();
jQuery.fn[type]=function(size){
return this[0]==window?
jQuery.browser.opera&&document.body["client"+name]||
jQuery.browser.safari&&window["inner"+name]||
document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:
this[0]==document?
Math.max(
Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),
Math.max(document.body["offset"+name],document.documentElement["offset"+name])
):
size==undefined?
(this.length?jQuery.css(this[0],type):null):
this.css(type,size.constructor==String?size:size+"px")}});
function num(elem,prop){
return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?
"(?:[\\w*_-]|\\\\.)":
"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
quickChild=new RegExp("^>\\s*("+chars+"+)"),
quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),
quickClass=new RegExp("^([#.]?)("+chars+"*)");
jQuery.extend({
expr:{
"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2])},
"#":function(a,i,m){return a.getAttribute("id")==m[2]},
":":{
lt:function(a,i,m){return i<m[3]-0},
gt:function(a,i,m){return i>m[3]-0},
nth:function(a,i,m){return m[3]-0==i},
eq:function(a,i,m){return m[3]-0==i},
first:function(a,i){return i==0},
last:function(a,i,m,r){return i==r.length-1},
even:function(a,i){return i%2==0},
odd:function(a,i){return i%2},
"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a},
"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a},
"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling")},
parent:function(a){return a.firstChild},
empty:function(a){return!a.firstChild},
contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0},
visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden"},
hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden"},
enabled:function(a){return!a.disabled},
disabled:function(a){return a.disabled},
checked:function(a){return a.checked},
selected:function(a){return a.selected||jQuery.attr(a,"selected")},
text:function(a){return"text"==a.type},
radio:function(a){return"radio"==a.type},
checkbox:function(a){return"checkbox"==a.type},
file:function(a){return"file"==a.type},
password:function(a){return"password"==a.type},
submit:function(a){return"submit"==a.type},
image:function(a){return"image"==a.type},
reset:function(a){return"reset"==a.type},
button:function(a){return"button"==a.type||jQuery.nodeName(a,"button")},
input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},
has:function(a,i,m){return jQuery.find(m[3],a).length},
header:function(a){return/h\d/i.test(a.nodeName)},
animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem}).length}
}
},
parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,
new RegExp("^([:.#]*)("+chars+"+)")
],
multiFilter:function(expr,elems,not){
var old,cur=[];
while(expr&&expr!=old){
old=expr;
var f=jQuery.filter(expr,elems,not);
expr=f.t.replace(/^\s*,\s*/,"");
cur=not?elems=f.r:jQuery.merge(cur,f.r)}
return cur},
find:function(t,context){
if(typeof t!="string")
return[t];
if(context&&context.nodeType!=1&&context.nodeType!=9)
return[];
context=context||document;
var ret=[context],done=[],last,nodeName;
while(t&&last!=t){
var r=[];
last=t;
t=jQuery.trim(t);
var foundToken=false,
re=quickChild,
m=re.exec(t);
if(m){
nodeName=m[1].toUpperCase();
for(var i=0;ret[i];i++)
for(var c=ret[i].firstChild;c;c=c.nextSibling)
if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))
r.push(c);
ret=r;
t=t.replace(re,"");
if(t.indexOf(" ")==0)continue;
foundToken=true}else{
re=/^([>+~])\s*(\w*)/i;
if((m=re.exec(t))!=null){
r=[];
var merge={};
nodeName=m[2].toUpperCase();
m=m[1];
for(var j=0,rl=ret.length;j<rl;j++){
var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;
for(;n;n=n.nextSibling)
if(n.nodeType==1){
var id=jQuery.data(n);
if(m=="~"&&merge[id])break;
if(!nodeName||n.nodeName.toUpperCase()==nodeName){
if(m=="~")merge[id]=true;
r.push(n)}
if(m=="+")break}
}
ret=r;
t=jQuery.trim(t.replace(re,""));
foundToken=true}
}
if(t&&!foundToken){
if(!t.indexOf(",")){
if(context==ret[0])ret.shift();
done=jQuery.merge(done,ret);
r=ret=[context];
t=" "+t.substr(1,t.length)}else{
var re2=quickID;
var m=re2.exec(t);
if(m){
m=[0,m[2],m[3],m[1]]}else{
re2=quickClass;
m=re2.exec(t)}
m[2]=m[2].replace(/\\/g,"");
var elem=ret[ret.length-1];
if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){
var oid=elem.getElementById(m[2]);
if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])
oid=jQuery('[@id="'+m[2]+'"]',elem)[0];
ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[]}else{
for(var i=0;ret[i];i++){
var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];
if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")
tag="param";
r=jQuery.merge(r,ret[i].getElementsByTagName(tag))}
if(m[1]==".")
r=jQuery.classFilter(r,m[2]);
if(m[1]=="#"){
var tmp=[];
for(var i=0;r[i];i++)
if(r[i].getAttribute("id")==m[2]){
tmp=[r[i]];
break}
r=tmp}
ret=r}
t=t.replace(re2,"")}
}
if(t){
var val=jQuery.filter(t,r);
ret=r=val.r;
t=jQuery.trim(val.t)}
}
if(t)
ret=[];
if(ret&&context==ret[0])
ret.shift();
done=jQuery.merge(done,ret);
return done},
classFilter:function(r,m,not){
m=" "+m+" ";
var tmp=[];
for(var i=0;r[i];i++){
var pass=(" "+r[i].className+" ").indexOf(m)>=0;
if(!not&&pass||not&&!pass)
tmp.push(r[i])}
return tmp},
filter:function(t,r,not){
var last;
while(t&&t!=last){
last=t;
var p=jQuery.parse,m;
for(var i=0;p[i];i++){
m=p[i].exec(t);
if(m){
t=t.substring(m[0].length);
m[2]=m[2].replace(/\\/g,"");
break}
}
if(!m)
break;
if(m[1]==":"&&m[2]=="not")
r=isSimple.test(m[3])?
jQuery.filter(m[3],r,true).r:
jQuery(r).not(m[3]);
else if(m[1]==".")
r=jQuery.classFilter(r,m[2],not);
else if(m[1]=="["){
var tmp=[],type=m[3];
for(var i=0,rl=r.length;i<rl;i++){
var a=r[i],z=a[jQuery.props[m[2]]||m[2]];
if(z==null||/href|src|selected/.test(m[2]))
z=jQuery.attr(a,m[2])||'';
if((type==""&&!!z||
type=="="&&z==m[5]||
type=="!="&&z!=m[5]||
type=="^="&&z&&!z.indexOf(m[5])||
type=="$="&&z.substr(z.length-m[5].length)==m[5]||
(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)
tmp.push(a)}
r=tmp}else if(m[1]==":"&&m[2]=="nth-child"){
var merge={},tmp=[],
test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(
m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||
!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),
first=(test[1]+(test[2]||1))-0,last=test[3]-0;
for(var i=0,rl=r.length;i<rl;i++){
var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);
if(!merge[id]){
var c=1;
for(var n=parentNode.firstChild;n;n=n.nextSibling)
if(n.nodeType==1)
n.nodeIndex=c++;
merge[id]=true}
var add=false;
if(first==0){
if(node.nodeIndex==last)
add=true}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)
add=true;
if(add^not)
tmp.push(node)}
r=tmp}else{
var fn=jQuery.expr[m[1]];
if(typeof fn=="object")
fn=fn[m[2]];
if(typeof fn=="string")
fn=eval("false||function(a,i){return "+fn+";}");
r=jQuery.grep(r,function(elem,i){
return fn(elem,i,m,r)},not)}
}
return{r:r,t:t}},
dir:function(elem,dir){
var matched=[],
cur=elem[dir];
while(cur&&cur!=document){
if(cur.nodeType==1)
matched.push(cur);
cur=cur[dir]}
return matched},
nth:function(cur,result,dir,elem){
result=result||1;
var num=0;
for(;cur;cur=cur[dir])
if(cur.nodeType==1&&++num==result)
break;
return cur},
sibling:function(n,elem){
var r=[];
for(;n;n=n.nextSibling){
if(n.nodeType==1&&n!=elem)
r.push(n)}
return r}
});
jQuery.event={
add:function(elem,types,handler,data){
if(elem.nodeType==3||elem.nodeType==8)
return;
if(jQuery.browser.msie&&elem.setInterval)
elem=window;
if(!handler.guid)
handler.guid=this.guid++;
if(data!=undefined){
var fn=handler;
handler=this.proxy(fn,function(){
return fn.apply(this,arguments)});
handler.data=data}
var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),
handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){
if(typeof jQuery!="undefined"&&!jQuery.event.triggered)
return jQuery.event.handle.apply(arguments.callee.elem,arguments)});
handle.elem=elem;
jQuery.each(types.split(/\s+/),function(index,type){
var parts=type.split(".");
type=parts[0];
handler.type=parts[1];
var handlers=events[type];
if(!handlers){
handlers=events[type]={};
if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){
if(elem.addEventListener)
elem.addEventListener(type,handle,false);
else if(elem.attachEvent)
elem.attachEvent("on"+type,handle)}
}
handlers[handler.guid]=handler;
jQuery.event.global[type]=true});
elem=null},
guid:1,
global:{},
remove:function(elem,types,handler){
if(elem.nodeType==3||elem.nodeType==8)
return;
var events=jQuery.data(elem,"events"),ret,index;
if(events){
if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))
for(var type in events)
this.remove(elem,type+(types||""));
else{
if(types.type){
handler=types.handler;
types=types.type}
jQuery.each(types.split(/\s+/),function(index,type){
var parts=type.split(".");
type=parts[0];
if(events[type]){
if(handler)
delete events[type][handler.guid];
else
for(handler in events[type])
if(!parts[1]||events[type][handler].type==parts[1])
delete events[type][handler];
for(ret in events[type])break;
if(!ret){
if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){
if(elem.removeEventListener)
elem.removeEventListener(type,jQuery.data(elem,"handle"),false);
else if(elem.detachEvent)
elem.detachEvent("on"+type,jQuery.data(elem,"handle"))}
ret=null;
delete events[type]}
}
})}
for(ret in events)break;
if(!ret){
var handle=jQuery.data(elem,"handle");
if(handle)handle.elem=null;
jQuery.removeData(elem,"events");
jQuery.removeData(elem,"handle")}
}
},
trigger:function(type,data,elem,donative,extra){
data=jQuery.makeArray(data);
if(type.indexOf("!")>=0){
type=type.slice(0,-1);
var exclusive=true}
if(!elem){
if(this.global[type])
jQuery("*").add([window,document]).trigger(type,data)}else{
if(elem.nodeType==3||elem.nodeType==8)
return undefined;
var val,ret,fn=jQuery.isFunction(elem[type]||null),
event=!data[0]||!data[0].preventDefault;
if(event){
data.unshift({
type:type,
target:elem,
preventDefault:function(){},
stopPropagation:function(){},
timeStamp:now()
});
data[0][expando]=true}
data[0].type=type;
if(exclusive)
data[0].exclusive=true;
var handle=jQuery.data(elem,"handle");
if(handle)
val=handle.apply(elem,data);
if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)
val=false;
if(event)
data.shift();
if(extra&&jQuery.isFunction(extra)){
ret=extra.apply(elem,val==null?data:data.concat(val));
if(ret!==undefined)
val=ret}
if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){
this.triggered=true;
try{
elem[type]()}catch(e){}
}
this.triggered=false}
return val},
handle:function(event){
var val,ret,namespace,all,handlers;
event=arguments[0]=jQuery.event.fix(event||window.event);
namespace=event.type.split(".");
event.type=namespace[0];
namespace=namespace[1];
all=!namespace&&!event.exclusive;
handlers=(jQuery.data(this,"events")||{})[event.type];
for(var j in handlers){
var handler=handlers[j];
if(all||handler.type==namespace){
event.handler=handler;
event.data=handler.data;
ret=handler.apply(this,arguments);
if(val!==false)
val=ret;
if(ret===false){
event.preventDefault();
event.stopPropagation()}
}
}
return val},
fix:function(event){
if(event[expando]==true)
return event;
var originalEvent=event;
event={originalEvent:originalEvent};
var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");
for(var i=props.length;i;i--)
event[props[i]]=originalEvent[props[i]];
event[expando]=true;
event.preventDefault=function(){
if(originalEvent.preventDefault)
originalEvent.preventDefault();
originalEvent.returnValue=false};
event.stopPropagation=function(){
if(originalEvent.stopPropagation)
originalEvent.stopPropagation();
originalEvent.cancelBubble=true};
event.timeStamp=event.timeStamp||now();
if(!event.target)
event.target=event.srcElement||document;
if(event.target.nodeType==3)
event.target=event.target.parentNode;
if(!event.relatedTarget&&event.fromElement)
event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;
if(event.pageX==null&&event.clientX!=null){
var doc=document.documentElement,body=document.body;
event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);
event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0)}
if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))
event.which=event.charCode||event.keyCode;
if(!event.metaKey&&event.ctrlKey)
event.metaKey=event.ctrlKey;
if(!event.which&&event.button)
event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));
return event},
proxy:function(fn,proxy){
proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;
return proxy},
special:{
ready:{
setup:function(){
bindReady();
return},
teardown:function(){return}
},
mouseenter:{
setup:function(){
if(jQuery.browser.msie)return false;
jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);
return true},
teardown:function(){
if(jQuery.browser.msie)return false;
jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);
return true},
handler:function(event){
if(withinElement(event,this))return true;
event.type="mouseenter";
return jQuery.event.handle.apply(this,arguments)}
},
mouseleave:{
setup:function(){
if(jQuery.browser.msie)return false;
jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);
return true},
teardown:function(){
if(jQuery.browser.msie)return false;
jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);
return true},
handler:function(event){
if(withinElement(event,this))return true;
event.type="mouseleave";
return jQuery.event.handle.apply(this,arguments)}
}
}
};
jQuery.fn.extend({
bind:function(type,data,fn){
return type=="unload"?this.one(type,data,fn):this.each(function(){
jQuery.event.add(this,type,fn||data,fn&&data)})},
one:function(type,data,fn){
var one=jQuery.event.proxy(fn||data,function(event){
jQuery(this).unbind(event,one);
return(fn||data).apply(this,arguments)});
return this.each(function(){
jQuery.event.add(this,type,one,fn&&data)})},
unbind:function(type,fn){
return this.each(function(){
jQuery.event.remove(this,type,fn)})},
trigger:function(type,data,fn){
return this.each(function(){
jQuery.event.trigger(type,data,this,true,fn)})},
triggerHandler:function(type,data,fn){
return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn)},
toggle:function(fn){
var args=arguments,i=1;
while(i<args.length)
jQuery.event.proxy(fn,args[i++]);
return this.click(jQuery.event.proxy(fn,function(event){
this.lastToggle=(this.lastToggle||0)%i;
event.preventDefault();
return args[this.lastToggle++].apply(this,arguments)||false}))},
hover:function(fnOver,fnOut){
return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut)},
ready:function(fn){
bindReady();
if(jQuery.isReady)
fn.call(document,jQuery);
else
jQuery.readyList.push(function(){return fn.call(this,jQuery)});
return this}
});
jQuery.extend({
isReady:false,
readyList:[],
ready:function(){
if(!jQuery.isReady){
jQuery.isReady=true;
if(jQuery.readyList){
jQuery.each(jQuery.readyList,function(){
this.call(document)});
jQuery.readyList=null}
jQuery(document).triggerHandler("ready")}
}
});
var readyBound=false;
function bindReady(){
if(readyBound)return;
readyBound=true;
if(document.addEventListener&&!jQuery.browser.opera)
document.addEventListener("DOMContentLoaded",jQuery.ready,false);
if(jQuery.browser.msie&&window==top)(function(){
if(jQuery.isReady)return;
try{
document.documentElement.doScroll("left")}catch(error){
setTimeout(arguments.callee,0);
return}
jQuery.ready()})();
if(jQuery.browser.opera)
document.addEventListener("DOMContentLoaded",function(){
if(jQuery.isReady)return;
for(var i=0;i<document.styleSheets.length;i++)
if(document.styleSheets[i].disabled){
setTimeout(arguments.callee,0);
return}
jQuery.ready()},false);
if(jQuery.browser.safari){
var numStyles;
(function(){
if(jQuery.isReady)return;
if(document.readyState!="loaded"&&document.readyState!="complete"){
setTimeout(arguments.callee,0);
return}
if(numStyles===undefined)
numStyles=jQuery("style, link[rel=stylesheet]").length;
if(document.styleSheets.length!=numStyles){
setTimeout(arguments.callee,0);
return}
jQuery.ready()})()}
jQuery.event.add(window,"load",jQuery.ready)}
jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+
"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+
"submit,keydown,keypress,keyup,error").split(","),function(i,name){
jQuery.fn[name]=function(fn){
return fn?this.bind(name,fn):this.trigger(name)}});
var withinElement=function(event,elem){
var parent=event.relatedTarget;
while(parent&&parent!=elem)try{parent=parent.parentNode}catch(error){parent=elem}
return parent==elem};
jQuery(window).bind("unload",function(){
jQuery("*").add(document).unbind()});
jQuery.fn.extend({
_load:jQuery.fn.load,
load:function(url,params,callback){
if(typeof url!='string')
return this._load(url);
var off=url.indexOf(" ");
if(off>=0){
var selector=url.slice(off,url.length);
url=url.slice(0,off)}
callback=callback||function(){};
var type="GET";
if(params)
if(jQuery.isFunction(params)){
callback=params;
params=null}else{
params=jQuery.param(params);
type="POST"}
var self=this;
jQuery.ajax({
url:url,
type:type,
dataType:"html",
data:params,
complete:function(res,status){
if(status=="success"||status=="notmodified")
self.html(selector?
jQuery("<div/>")
.append(res.responseText.replace(/<script(.|\s)*?\/script>/g,""))
.find(selector):
res.responseText);
self.each(callback,[res.responseText,status,res])}
});
return this},
serialize:function(){
return jQuery.param(this.serializeArray())},
serializeArray:function(){
return this.map(function(){
return jQuery.nodeName(this,"form")?
jQuery.makeArray(this.elements):this})
.filter(function(){
return this.name&&!this.disabled&&
(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type))})
.map(function(i,elem){
var val=jQuery(this).val();
return val==null?null:
val.constructor==Array?
jQuery.map(val,function(val,i){
return{name:elem.name,value:val}}):
{name:elem.name,value:val}}).get()}
});
jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){
jQuery.fn[o]=function(f){
return this.bind(o,f)}});
var jsc=now();
jQuery.extend({
get:function(url,data,callback,type){
if(jQuery.isFunction(data)){
callback=data;
data=null}
return jQuery.ajax({
type:"GET",
url:url,
data:data,
success:callback,
dataType:type
})},
getScript:function(url,callback){
return jQuery.get(url,null,callback,"script")},
getJSON:function(url,data,callback){
return jQuery.get(url,data,callback,"json")},
post:function(url,data,callback,type){
if(jQuery.isFunction(data)){
callback=data;
data={}}
return jQuery.ajax({
type:"POST",
url:url,
data:data,
success:callback,
dataType:type
})},
ajaxSetup:function(settings){
jQuery.extend(jQuery.ajaxSettings,settings)},
ajaxSettings:{
url:location.href,
global:true,
type:"GET",
timeout:0,
contentType:"application/x-www-form-urlencoded",
processData:true,
async:true,
data:null,
username:null,
password:null,
accepts:{
xml:"application/xml, text/xml",
html:"text/html",
script:"text/javascript, application/javascript",
json:"application/json, text/javascript",
text:"text/plain",
_default:"*/*"
}
},
lastModified:{},
ajax:function(s){
s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));
var jsonp,jsre=/=\?(&|$)/g,status,data,
type=s.type.toUpperCase();
if(s.data&&s.processData&&typeof s.data!="string")
s.data=jQuery.param(s.data);
if(s.dataType=="jsonp"){
if(type=="GET"){
if(!s.url.match(jsre))
s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?"}else if(!s.data||!s.data.match(jsre))
s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";
s.dataType="json"}
if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){
jsonp="jsonp"+jsc++;
if(s.data)
s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");
s.url=s.url.replace(jsre,"="+jsonp+"$1");
s.dataType="script";
window[jsonp]=function(tmp){
data=tmp;
success();
complete();
window[jsonp]=undefined;
try{delete window[jsonp]}catch(e){}
if(head)
head.removeChild(script)}}
if(s.dataType=="script"&&s.cache==null)
s.cache=false;
if(s.cache===false&&type=="GET"){
var ts=now();
var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");
s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"")}
if(s.data&&type=="GET"){
s.url+=(s.url.match(/\?/)?"&":"?")+s.data;
s.data=null}
if(s.global&&!jQuery.active++)
jQuery.event.trigger("ajaxStart");
var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;
if(s.dataType=="script"&&type=="GET"
&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){
var head=document.getElementsByTagName("head")[0];
var script=document.createElement("script");
script.src=s.url;
if(s.scriptCharset)
script.charset=s.scriptCharset;
if(!jsonp){
var done=false;
script.onload=script.onreadystatechange=function(){
if(!done&&(!this.readyState||
this.readyState=="loaded"||this.readyState=="complete")){
done=true;
success();
complete();
head.removeChild(script)}
}}
head.appendChild(script);
return undefined}
var requestDone=false;
var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();
if(s.username)
xhr.open(type,s.url,s.async,s.username,s.password);
else
xhr.open(type,s.url,s.async);
try{
if(s.data)
xhr.setRequestHeader("Content-Type",s.contentType);
if(s.ifModified)
xhr.setRequestHeader("If-Modified-Since",
jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");
xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");
xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?
s.accepts[s.dataType]+", */*":
s.accepts._default)}catch(e){}
if(s.beforeSend&&s.beforeSend(xhr,s)===false){
s.global&&jQuery.active--;
xhr.abort();
return false}
if(s.global)
jQuery.event.trigger("ajaxSend",[xhr,s]);
var onreadystatechange=function(isTimeout){
if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){
requestDone=true;
if(ival){
clearInterval(ival);
ival=null}
status=isTimeout=="timeout"&&"timeout"||
!jQuery.httpSuccess(xhr)&&"error"||
s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||
"success";
if(status=="success"){
try{
data=jQuery.httpData(xhr,s.dataType,s.dataFilter)}catch(e){
status="parsererror"}
}
if(status=="success"){
var modRes;
try{
modRes=xhr.getResponseHeader("Last-Modified")}catch(e){}
if(s.ifModified&&modRes)
jQuery.lastModified[s.url]=modRes;
if(!jsonp)
success()}else
jQuery.handleError(s,xhr,status);
complete();
if(s.async)
xhr=null}
};
if(s.async){
var ival=setInterval(onreadystatechange,13);
if(s.timeout>0)
setTimeout(function(){
if(xhr){
xhr.abort();
if(!requestDone)
onreadystatechange("timeout")}
},s.timeout)}
try{
xhr.send(s.data)}catch(e){
jQuery.handleError(s,xhr,null,e)}
if(!s.async)
onreadystatechange();
function success(){
if(s.success)
s.success(data,status);
if(s.global)
jQuery.event.trigger("ajaxSuccess",[xhr,s])}
function complete(){
if(s.complete)
s.complete(xhr,status);
if(s.global)
jQuery.event.trigger("ajaxComplete",[xhr,s]);
if(s.global&&!--jQuery.active)
jQuery.event.trigger("ajaxStop")}
return xhr},
handleError:function(s,xhr,status,e){
if(s.error)s.error(xhr,status,e);
if(s.global)
jQuery.event.trigger("ajaxError",[xhr,s,e])},
active:0,
httpSuccess:function(xhr){
try{
return!xhr.status&&location.protocol=="file:"||
(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||
jQuery.browser.safari&&xhr.status==undefined}catch(e){}
return false},
httpNotModified:function(xhr,url){
try{
var xhrRes=xhr.getResponseHeader("Last-Modified");
return xhr.status==304||xhrRes==jQuery.lastModified[url]||
jQuery.browser.safari&&xhr.status==undefined}catch(e){}
return false},
httpData:function(xhr,type,filter){
var ct=xhr.getResponseHeader("content-type"),
xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,
data=xml?xhr.responseXML:xhr.responseText;
if(xml&&data.documentElement.tagName=="parsererror")
throw"parsererror";
if(filter)
data=filter(data,type);
if(type=="script")
jQuery.globalEval(data);
if(type=="json")
data=eval("("+data+")");
return data},
param:function(a){
var s=[];
if(a.constructor==Array||a.jquery)
jQuery.each(a,function(){
s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value))});
else
for(var j in a)
if(a[j]&&a[j].constructor==Array)
jQuery.each(a[j],function(){
s.push(encodeURIComponent(j)+"="+encodeURIComponent(this))});
else
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));
return s.join("&").replace(/%20/g,"+")}
});
jQuery.fn.extend({
show:function(speed,callback){
return speed?
this.animate({
height:"show",width:"show",opacity:"show"
},speed,callback):
this.filter(":hidden").each(function(){
this.style.display=this.oldblock||"";
if(jQuery.css(this,"display")=="none"){
var elem=jQuery("<"+this.tagName+" />").appendTo("body");
this.style.display=elem.css("display");
if(this.style.display=="none")
this.style.display="block";
elem.remove()}
}).end()},
hide:function(speed,callback){
return speed?
this.animate({
height:"hide",width:"hide",opacity:"hide"
},speed,callback):
this.filter(":visible").each(function(){
this.oldblock=this.oldblock||jQuery.css(this,"display");
this.style.display="none"}).end()},
_toggle:jQuery.fn.toggle,
toggle:function(fn,fn2){
return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?
this._toggle.apply(this,arguments):
fn?
this.animate({
height:"toggle",width:"toggle",opacity:"toggle"
},fn,fn2):
this.each(function(){
jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]()})},
slideDown:function(speed,callback){
return this.animate({height:"show"},speed,callback)},
slideUp:function(speed,callback){
return this.animate({height:"hide"},speed,callback)},
slideToggle:function(speed,callback){
return this.animate({height:"toggle"},speed,callback)},
fadeIn:function(speed,callback){
return this.animate({opacity:"show"},speed,callback)},
fadeOut:function(speed,callback){
return this.animate({opacity:"hide"},speed,callback)},
fadeTo:function(speed,to,callback){
return this.animate({opacity:to},speed,callback)},
animate:function(prop,speed,easing,callback){
var optall=jQuery.speed(speed,easing,callback);
return this[optall.queue===false?"each":"queue"](function(){
if(this.nodeType!=1)
return false;
var opt=jQuery.extend({},optall),p,
hidden=jQuery(this).is(":hidden"),self=this;
for(p in prop){
if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)
return opt.complete.call(this);
if(p=="height"||p=="width"){
opt.display=jQuery.css(this,"display");
opt.overflow=this.style.overflow}
}
if(opt.overflow!=null)
this.style.overflow="hidden";
opt.curAnim=jQuery.extend({},prop);
jQuery.each(prop,function(name,val){
var e=new jQuery.fx(self,opt,name);
if(/toggle|show|hide/.test(val))
e[val=="toggle"?hidden?"show":"hide":val](prop);
else{
var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
start=e.cur(true)||0;
if(parts){
var end=parseFloat(parts[2]),
unit=parts[3]||"px";
if(unit!="px"){
self.style[name]=(end||1)+unit;
start=((end||1)/e.cur(true))*start;
self.style[name]=start+unit}
if(parts[1])
end=((parts[1]=="-="?-1:1)*end)+start;
e.custom(start,end,unit)}else
e.custom(start,val,"")}
});
return true})},
queue:function(type,fn){
if(jQuery.isFunction(type)||(type&&type.constructor==Array)){
fn=type;
type="fx"}
if(!type||(typeof type=="string"&&!fn))
return queue(this[0],type);
return this.each(function(){
if(fn.constructor==Array)
queue(this,type,fn);
else{
queue(this,type).push(fn);
if(queue(this,type).length==1)
fn.call(this)}
})},
stop:function(clearQueue,gotoEnd){
var timers=jQuery.timers;
if(clearQueue)
this.queue([]);
this.each(function(){
for(var i=timers.length-1;i>=0;i--)
if(timers[i].elem==this){
if(gotoEnd)
timers[i](true);
timers.splice(i,1)}
});
if(!gotoEnd)
this.dequeue();
return this}
});
var queue=function(elem,type,array){
if(elem){
type=type||"fx";
var q=jQuery.data(elem,type+"queue");
if(!q||array)
q=jQuery.data(elem,type+"queue",jQuery.makeArray(array))}
return q};
jQuery.fn.dequeue=function(type){
type=type||"fx";
return this.each(function(){
var q=queue(this,type);
q.shift();
if(q.length)
q[0].call(this)})};
jQuery.extend({
speed:function(speed,easing,fn){
var opt=speed&&speed.constructor==Object?speed:{
complete:fn||!fn&&easing||
jQuery.isFunction(speed)&&speed,
duration:speed,
easing:fn&&easing||easing&&easing.constructor!=Function&&easing
};
opt.duration=(opt.duration&&opt.duration.constructor==Number?
opt.duration:
jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;
opt.old=opt.complete;
opt.complete=function(){
if(opt.queue!==false)
jQuery(this).dequeue();
if(jQuery.isFunction(opt.old))
opt.old.call(this)};
return opt},
easing:{
linear:function(p,n,firstNum,diff){
return firstNum+diff*p},
swing:function(p,n,firstNum,diff){
return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum}
},
timers:[],
timerId:null,
fx:function(elem,options,prop){
this.options=options;
this.elem=elem;
this.prop=prop;
if(!options.orig)
options.orig={}}
});
jQuery.fx.prototype={
update:function(){
if(this.options.step)
this.options.step.call(this.elem,this.now,this);
(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);
if(this.prop=="height"||this.prop=="width")
this.elem.style.display="block"},
cur:function(force){
if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)
return this.elem[this.prop];
var r=parseFloat(jQuery.css(this.elem,this.prop,force));
return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0},
custom:function(from,to,unit){
this.startTime=now();
this.start=from;
this.end=to;
this.unit=unit||this.unit||"px";
this.now=this.start;
this.pos=this.state=0;
this.update();
var self=this;
function t(gotoEnd){
return self.step(gotoEnd)}
t.elem=this.elem;
jQuery.timers.push(t);
if(jQuery.timerId==null){
jQuery.timerId=setInterval(function(){
var timers=jQuery.timers;
for(var i=0;i<timers.length;i++)
if(!timers[i]())
timers.splice(i--,1);
if(!timers.length){
clearInterval(jQuery.timerId);
jQuery.timerId=null}
},13)}
},
show:function(){
this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);
this.options.show=true;
this.custom(0,this.cur());
if(this.prop=="width"||this.prop=="height")
this.elem.style[this.prop]="1px";
jQuery(this.elem).show()},
hide:function(){
this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);
this.options.hide=true;
this.custom(this.cur(),0)},
step:function(gotoEnd){
var t=now();
if(gotoEnd||t>this.options.duration+this.startTime){
this.now=this.end;
this.pos=this.state=1;
this.update();
this.options.curAnim[this.prop]=true;
var done=true;
for(var i in this.options.curAnim)
if(this.options.curAnim[i]!==true)
done=false;
if(done){
if(this.options.display!=null){
this.elem.style.overflow=this.options.overflow;
this.elem.style.display=this.options.display;
if(jQuery.css(this.elem,"display")=="none")
this.elem.style.display="block"}
if(this.options.hide)
this.elem.style.display="none";
if(this.options.hide||this.options.show)
for(var p in this.options.curAnim)
jQuery.attr(this.elem.style,p,this.options.orig[p])}
if(done)
this.options.complete.call(this.elem);
return false}else{
var n=t-this.startTime;
this.state=n/this.options.duration;
this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);
this.now=this.start+((this.end-this.start)*this.pos);
this.update()}
return true}
};
jQuery.extend(jQuery.fx,{
speeds:{
slow:600,
fast:200,
def:400
},
step:{
scrollLeft:function(fx){
fx.elem.scrollLeft=fx.now},
scrollTop:function(fx){
fx.elem.scrollTop=fx.now},
opacity:function(fx){
jQuery.attr(fx.elem.style,"opacity",fx.now)},
_default:function(fx){
fx.elem.style[fx.prop]=fx.now+fx.unit}
}
});
jQuery.fn.offset=function(){
var left=0,top=0,elem=this[0],results;
if(elem)with(jQuery.browser){
var parent=elem.parentNode,
offsetChild=elem,
offsetParent=elem.offsetParent,
doc=elem.ownerDocument,
safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),
css=jQuery.curCSS,
fixed=css(elem,"position")=="fixed";
if(elem.getBoundingClientRect){
var box=elem.getBoundingClientRect();
add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),
box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));
add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop)}else{
add(elem.offsetLeft,elem.offsetTop);
while(offsetParent){
add(offsetParent.offsetLeft,offsetParent.offsetTop);
if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)
border(offsetParent);
if(!fixed&&css(offsetParent,"position")=="fixed")
fixed=true;
offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;
offsetParent=offsetParent.offsetParent}
while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){
if(!/^inline|table.*$/i.test(css(parent,"display")))
add(-parent.scrollLeft,-parent.scrollTop);
if(mozilla&&css(parent,"overflow")!="visible")
border(parent);
parent=parent.parentNode}
if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||
(mozilla&&css(offsetChild,"position")!="absolute"))
add(-doc.body.offsetLeft,-doc.body.offsetTop);
if(fixed)
add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),
Math.max(doc.documentElement.scrollTop,doc.body.scrollTop))}
results={top:top,left:left}}
function border(elem){
add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true))}
function add(l,t){
left+=parseInt(l,10)||0;
top+=parseInt(t,10)||0}
return results};
jQuery.fn.extend({
position:function(){
var left=0,top=0,results;
if(this[0]){
var offsetParent=this.offsetParent(),
offset=this.offset(),
parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();
offset.top-=num(this,'marginTop');
offset.left-=num(this,'marginLeft');
parentOffset.top+=num(offsetParent,'borderTopWidth');
parentOffset.left+=num(offsetParent,'borderLeftWidth');
results={
top:offset.top-parentOffset.top,
left:offset.left-parentOffset.left
}}
return results},
offsetParent:function(){
var offsetParent=this[0].offsetParent;
while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))
offsetParent=offsetParent.offsetParent;
return jQuery(offsetParent)}
});
jQuery.each(['Left','Top'],function(i,name){
var method='scroll'+name;
jQuery.fn[method]=function(val){
if(!this[0])return;
return val!=undefined?
this.each(function(){
this==window||this==document?
window.scrollTo(
!i?val:jQuery(window).scrollLeft(),
i?val:jQuery(window).scrollTop()
):
this[method]=val}):
this[0]==window||this[0]==document?
self[i?'pageYOffset':'pageXOffset']||
jQuery.boxModel&&document.documentElement[method]||
document.body[method]:
this[0][method]}});
jQuery.each(["Height","Width"],function(i,name){
var tl=i?"Left":"Top",br=i?"Right":"Bottom";
jQuery.fn["inner"+name]=function(){
return this[name.toLowerCase()]()+
num(this,"padding"+tl)+
num(this,"padding"+br)};
jQuery.fn["outer"+name]=function(margin){
return this["inner"+name]()+
num(this,"border"+tl+"Width")+
num(this,"border"+br+"Width")+
(margin?
num(this,"margin"+tl)+num(this,"margin"+br):0)}})})();


/* prive/javascript/jquery.form.js */

(function($){
$.fn.ajaxSubmit=function(options){
if(!this.length){
log('ajaxSubmit: skipping submit process - no element selected');
return this}
if(typeof options=='function')
options={success:options};
options=$.extend({
url:this.attr('action')||window.location.toString(),
type:this.attr('method')||'GET'
},options||{});
var veto={};
this.trigger('form-pre-serialize',[this,options,veto]);
if(veto.veto){
log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
return this}
var a=this.formToArray(options.semantic);
if(options.data){
options.extraData=options.data;
for(var n in options.data)
a.push({name:n,value:options.data[n]})}
if(options.beforeSubmit&&options.beforeSubmit(a,this,options)===false){
log('ajaxSubmit: submit aborted via beforeSubmit callback');
return this}
this.trigger('form-submit-validate',[a,this,options,veto]);
if(veto.veto){
log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
return this}
var q=$.param(a);
if(options.type.toUpperCase()=='GET'){
options.url+=(options.url.indexOf('?')>=0?'&':'?')+q;
options.data=null}
else
options.data=q;
var $form=this,callbacks=[];
if(options.resetForm)callbacks.push(function(){$form.resetForm()});
if(options.clearForm)callbacks.push(function(){$form.clearForm()});
if(!options.dataType&&options.target){
var oldSuccess=options.success||function(){};
callbacks.push(function(data){
$(options.target).html(data).each(oldSuccess,arguments)})}
else if(options.success)
callbacks.push(options.success);
options.success=function(data,status){
for(var i=0,max=callbacks.length;i<max;i++)
callbacks[i](data,status,$form)};
var files=$('input:file',this).fieldValue();
var found=false;
for(var j=0;j<files.length;j++)
if(files[j])
found=true;
if(options.iframe||found){
if($.browser.safari&&options.closeKeepAlive)
$.get(options.closeKeepAlive,fileUpload);
else
fileUpload()}
else
$.ajax(options);
this.trigger('form-submit-notify',[this,options]);
return this;
function fileUpload(){
var form=$form[0];
if($(':input[name=submit]',form).length){
alert('Error: Form elements must not be named "submit".');
return}
var opts=$.extend({},$.ajaxSettings,options);
var id='jqFormIO'+(new Date().getTime());
var $io=$('<iframe id="'+id+'" name="'+id+'" />');
var io=$io[0];
if($.browser.msie||$.browser.opera)
io.src='javascript:false;document.write("");';
$io.css({position:'absolute',top:'-1000px',left:'-1000px'});
var xhr={responseText:null,
responseXML:null,
status:0,
statusText:'n/a',
getAllResponseHeaders:function(){},
getResponseHeader:function(){},
setRequestHeader:function(){}
};
var g=opts.global;
if(g&&!$.active++)$.event.trigger("ajaxStart");
if(g)$.event.trigger("ajaxSend",[xhr,opts]);
var cbInvoked=0;
var timedOut=0;
var sub=form.clk;
if(sub){
var n=sub.name;
if(n&&!sub.disabled){
options.extraData=options.extraData||{};
options.extraData[n]=sub.value;
if(sub.type=="image"){
options.extraData[name+'.x']=form.clk_x;
options.extraData[name+'.y']=form.clk_y}
}
}
setTimeout(function(){
var t=$form.attr('target'),a=$form.attr('action');
$form.attr({
target:id,
encoding:'multipart/form-data',
enctype:'multipart/form-data',
method:'POST',
action:opts.url
});
if(opts.timeout)
setTimeout(function(){timedOut=true;cb()},opts.timeout);
var extraInputs=[];
try{
if(options.extraData)
for(var n in options.extraData)
extraInputs.push(
$('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')
.appendTo(form)[0]);
$io.appendTo('body');
io.attachEvent?io.attachEvent('onload',cb):io.addEventListener('load',cb,false);
form.submit()}
finally{
$form.attr('action',a);
t?$form.attr('target',t):$form.removeAttr('target');
$(extraInputs).remove()}
},10);
function cb(){
if(cbInvoked++)return;
io.detachEvent?io.detachEvent('onload',cb):io.removeEventListener('load',cb,false);
var operaHack=0;
var ok=true;
try{
if(timedOut)throw'timeout';
var data,doc;
doc=io.contentWindow?io.contentWindow.document:io.contentDocument?io.contentDocument:io.document;
if(doc.body==null&&!operaHack&&$.browser.opera){
operaHack=1;
cbInvoked--;
setTimeout(cb,100);
return}
xhr.responseText=doc.body?doc.body.innerHTML:null;
xhr.responseXML=doc.XMLDocument?doc.XMLDocument:doc;
xhr.getResponseHeader=function(header){
var headers={'content-type':opts.dataType};
return headers[header]};
if(opts.dataType=='json'||opts.dataType=='script'){
var ta=doc.getElementsByTagName('textarea')[0];
xhr.responseText=ta?ta.value:xhr.responseText}
else if(opts.dataType=='xml'&&!xhr.responseXML&&xhr.responseText!=null){
xhr.responseXML=toXml(xhr.responseText)}
data=$.httpData(xhr,opts.dataType)}
catch(e){
ok=false;
$.handleError(opts,xhr,'error',e)}
if(ok){
opts.success(data,'success');
if(g)$.event.trigger("ajaxSuccess",[xhr,opts])}
if(g)$.event.trigger("ajaxComplete",[xhr,opts]);
if(g&&!--$.active)$.event.trigger("ajaxStop");
if(opts.complete)opts.complete(xhr,ok?'success':'error');
setTimeout(function(){
$io.remove();
xhr.responseXML=null},100)};
function toXml(s,doc){
if(window.ActiveXObject){
doc=new ActiveXObject('Microsoft.XMLDOM');
doc.async='false';
doc.loadXML(s)}
else
doc=(new DOMParser()).parseFromString(s,'text/xml');
return(doc&&doc.documentElement&&doc.documentElement.tagName!='parsererror')?doc:null}}};
$.fn.ajaxForm=function(options){
return this.ajaxFormUnbind().bind('submit.form-plugin',function(){
$(this).ajaxSubmit(options);
return false}).each(function(){
$(":submit,input:image",this).bind('click.form-plugin',function(e){
var $form=this.form;
$form.clk=this;
if(this.type=='image'){
if(e.offsetX!=undefined){
$form.clk_x=e.offsetX;
$form.clk_y=e.offsetY}else if(typeof $.fn.offset=='function'){var offset=$(this).offset();
$form.clk_x=e.pageX-offset.left;
$form.clk_y=e.pageY-offset.top}else{
$form.clk_x=e.pageX-this.offsetLeft;
$form.clk_y=e.pageY-this.offsetTop}
}
setTimeout(function(){$form.clk=$form.clk_x=$form.clk_y=null},10)})})};
$.fn.ajaxFormUnbind=function(){
this.unbind('submit.form-plugin');
return this.each(function(){
$(":submit,input:image",this).unbind('click.form-plugin')})};
$.fn.formToArray=function(semantic){
var a=[];
if(this.length==0)return a;
var form=this[0];
var els=semantic?form.getElementsByTagName('*'):form.elements;
if(!els)return a;
for(var i=0,max=els.length;i<max;i++){
var el=els[i];
var n=el.name;
if(!n)continue;
if(semantic&&form.clk&&el.type=="image"){
if(!el.disabled&&form.clk==el)
a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y});
continue}
var v=$.fieldValue(el,true);
if(v&&v.constructor==Array){
for(var j=0,jmax=v.length;j<jmax;j++)
a.push({name:n,value:v[j]})}
else if(v!==null&&typeof v!='undefined')
a.push({name:n,value:v})}
if(!semantic&&form.clk){
var inputs=form.getElementsByTagName("input");
for(var i=0,max=inputs.length;i<max;i++){
var input=inputs[i];
var n=input.name;
if(n&&!input.disabled&&input.type=="image"&&form.clk==input)
a.push({name:n+'.x',value:form.clk_x},{name:n+'.y',value:form.clk_y})}
}
return a};
$.fn.formSerialize=function(semantic){
return $.param(this.formToArray(semantic))};
$.fn.fieldSerialize=function(successful){
var a=[];
this.each(function(){
var n=this.name;
if(!n)return;
var v=$.fieldValue(this,successful);
if(v&&v.constructor==Array){
for(var i=0,max=v.length;i<max;i++)
a.push({name:n,value:v[i]})}
else if(v!==null&&typeof v!='undefined')
a.push({name:this.name,value:v})});
return $.param(a)};
$.fn.fieldValue=function(successful){
for(var val=[],i=0,max=this.length;i<max;i++){
var el=this[i];
var v=$.fieldValue(el,successful);
if(v===null||typeof v=='undefined'||(v.constructor==Array&&!v.length))
continue;
v.constructor==Array?$.merge(val,v):val.push(v)}
return val};
$.fieldValue=function(el,successful){
var n=el.name,t=el.type,tag=el.tagName.toLowerCase();
if(typeof successful=='undefined')successful=true;
if(successful&&(!n||el.disabled||t=='reset'||t=='button'||
(t=='checkbox'||t=='radio')&&!el.checked||
(t=='submit'||t=='image')&&el.form&&el.form.clk!=el||
tag=='select'&&el.selectedIndex==-1))
return null;
if(tag=='select'){
var index=el.selectedIndex;
if(index<0)return null;
var a=[],ops=el.options;
var one=(t=='select-one');
var max=(one?index+1:ops.length);
for(var i=(one?index:0);i<max;i++){
var op=ops[i];
if(op.selected){
var v=$.browser.msie&&!(op.attributes['value'].specified)?op.text:op.value;
if(one)return v;
a.push(v)}
}
return a}
return el.value};
$.fn.clearForm=function(){
return this.each(function(){
$('input,select,textarea',this).clearFields()})};
$.fn.clearFields=$.fn.clearInputs=function(){
return this.each(function(){
var t=this.type,tag=this.tagName.toLowerCase();
if(t=='text'||t=='password'||tag=='textarea')
this.value='';
else if(t=='checkbox'||t=='radio')
this.checked=false;
else if(tag=='select')
this.selectedIndex=-1})};
$.fn.resetForm=function(){
return this.each(function(){
if(typeof this.reset=='function'||(typeof this.reset=='object'&&!this.reset.nodeType))
this.reset()})};
$.fn.enable=function(b){
if(b==undefined)b=true;
return this.each(function(){
this.disabled=!b
})};
$.fn.select=function(select){
if(select==undefined)select=true;
return this.each(function(){
var t=this.type;
if(t=='checkbox'||t=='radio')
this.checked=select;
else if(this.tagName.toLowerCase()=='option'){
var $sel=$(this).parent('select');
if(select&&$sel[0]&&$sel[0].type=='select-one'){
$sel.find('option').select(false)}
this.selected=select}
})};
function log(){
if($.fn.ajaxSubmit.debug&&window.console&&window.console.log)
window.console.log('[jquery.form] '+Array.prototype.join.call(arguments,''))}})(jQuery);


/* prive/javascript/ajaxCallback.js */
if(!jQuery.load_handlers){
jQuery.load_handlers=new Array();
function onAjaxLoad(f){
jQuery.load_handlers.push(f)};
function triggerAjaxLoad(root){
for(var i=0;i<jQuery.load_handlers.length;i++)
jQuery.load_handlers[i].apply(root)};
jQuery.fn._ACBload=jQuery.fn.load;
jQuery.fn.load=function(url,params,callback){
callback=callback||function(){};
if(params){
if(params.constructor==Function){
callback=params;
params=null}
}
var callback2=function(res,status){triggerAjaxLoad(this);callback(res,status)};
return this._ACBload(url,params,callback2)};
jQuery._ACBajax=jQuery.ajax;
jQuery.ajax=function(type){
if(jQuery.ajax.caller==jQuery.fn._load)return jQuery._ACBajax(type);
var orig_complete=type.complete||function(){};
type.complete=function(res,status){
var dataType=type.dataType;
var ct=(res&&(typeof res.getResponseHeader=='function'))
?res.getResponseHeader("content-type"):'';
var xml=!dataType&&ct&&ct.indexOf("xml")>=0;
orig_complete(res,status);
if(!dataType&&!xml||dataType=="html")triggerAjaxLoad(document)};
return jQuery._ACBajax(type)}}
jQuery.fn.animeajax=function(end){
this.children().css('opacity',0.5);
if(typeof ajax_image_searching!='undefined'){
var i=(this).find('.image_loading');
if(i.length)i.html(ajax_image_searching);
else this.prepend('<span class="image_loading">'+ajax_image_searching+'</span>')}
return this}
jQuery.fn.positionner=function(){
var offset=jQuery(this).offset({'scroll':false});
var hauteur=parseInt(jQuery(this).css('height'));
var scrolltop=self['pageYOffset']||
jQuery.boxModel&&document.documentElement['scrollTop']||
document.body['scrollTop'];
var h=jQuery(window).height();
var scroll=0;
if(offset['top']-5<=scrolltop)
scroll=offset['top']-5;
else if(offset['top']+hauteur-h+5>scrolltop)
scroll=Math.min(offset['top']-5,offset['top']+hauteur-h+15);
if(scroll)
jQuery('html,body')
.animate({scrollTop:scroll},300);
jQuery(jQuery('*',this).filter('input[type=text],textarea')[0]).focus();
return this}
var virtualbuffer_id='spip_virtualbufferupdate';
function initReaderBuffer(){
if(jQuery('#'+virtualbuffer_id).length)return;
jQuery('body').append('<p style="float:left;width:0;height:0;position:absolute;left:-5000;top:-5000;"><input type="hidden" name="'+virtualbuffer_id+'" id="'+virtualbuffer_id+'" value="0" /></p>')}
function updateReaderBuffer(){
var i=jQuery('#'+virtualbuffer_id);
if(!i.length)return;
i.attr('value',parseInt(i.attr('value'))+1)}
jQuery.fn.formulaire_dyn_ajax=function(target){
if(this.length)
initReaderBuffer();
return this.each(function(){
var cible=target||this;
jQuery('form:not(.noajax)',this).each(function(){
var leform=this;
jQuery(this).prepend("<input type='hidden' name='var_ajax' value='form' />")
.ajaxForm({
beforeSubmit:function(){
jQuery(cible).addClass('loading').animeajax()},
success:function(c){
if(c=='noajax'){
jQuery("input[name=var_ajax]",leform).remove();
jQuery(leform).ajaxFormUnbind().submit()}
else{
var d=jQuery('div.ajax',
jQuery('<div><\/div>').html(c));
if(d.length)
c=d.html();
jQuery(cible)
.removeClass('loading')
.html(c)
.positionner()
.formulaire_dyn_ajax();
updateReaderBuffer()}
},
iframe:jQuery.browser.msie
})
.addClass('noajax')})})}
var ajax_confirm=true;
var ajax_confirm_date=0;
var spip_confirm=window.confirm;
function _confirm(message){
ajax_confirm=spip_confirm(message);
if(!ajax_confirm){
var d=new Date();
ajax_confirm_date=d.getTime()}
return ajax_confirm}
window.confirm=_confirm;
var preloaded_urls={};
var ajaxbloc_selecteur;
jQuery.fn.ajaxbloc=function(){
if(this.length)
initReaderBuffer();
return this.each(function(){
jQuery('div.ajaxbloc',this).ajaxbloc();var blocfrag=jQuery(this);
var on_pagination=function(c){
jQuery(blocfrag)
.html(c)
.removeClass('loading')
.positionner();
updateReaderBuffer()}
var ajax_env=(""+blocfrag.attr('class')).match(/env-([^ ]+)/);
if(!ajax_env||ajax_env==undefined)return;
ajax_env=ajax_env[1];
if(ajaxbloc_selecteur==undefined)
ajaxbloc_selecteur='.pagination a,a.ajax';
jQuery(ajaxbloc_selecteur,this).not('.noajax').each(function(){
var url=this.href.split('#');
url[0]+=(url[0].indexOf("?")>0?'&':'?')+'var_ajax=1&var_ajax_env='+encodeURIComponent(ajax_env);
if(jQuery(this).is('.preload')&&!preloaded_urls[url[0]]){
jQuery.ajax({"url":url[0],"success":function(r){preloaded_urls[url[0]]=r}})}
jQuery(this).click(function(){
if(!ajax_confirm){
ajax_confirm=true;
var d=new Date();
if((d.getTime()-ajax_confirm_date)<=2)
return false}
jQuery(blocfrag)
.animeajax()
.addClass('loading');
if(preloaded_urls[url[0]]){
on_pagination(preloaded_urls[url[0]]);
triggerAjaxLoad(document)}else{
jQuery.ajax({
url:url[0],
success:function(c){
on_pagination(c);
preloaded_urls[url[0]]=c}
})}
return false})}).addClass('noajax')})};
jQuery(function(){
jQuery('form').parents('div.ajax')
.formulaire_dyn_ajax();
jQuery('div.ajaxbloc').ajaxbloc()});
onAjaxLoad(function(){
if(jQuery){
jQuery('form',this).parents('div.ajax')
.formulaire_dyn_ajax();
jQuery('div.ajaxbloc',this)
.ajaxbloc()}
});


/* plugins/thickbox2/javascript/thickbox.js */

var DELAI=3000;var imageArray=[];
var FULL_S=false;
var DIAPO=false;
if(typeof TB_chemin_css=='undefined'){TB_chemin_css='thickbox.css'}
if(typeof TB_chemin_animation=='undefined'){TB_chemin_animation='circle_animation.gif'}
function TB_image(){
var t=this.title||this.name;
var longdesc=jQuery('img[longdesc]',this).attr('longdesc');
if(longdesc)
TB_show(t,longdesc);
else
TB_show(t,this.href,'image');
return false}
function TB_init(root){
jQuery("a.thickbox",root).each(
function(i){
this.onclick=TB_image;
var t=this.alt||this.name||null;
this.alt=t+" - view bigger version";
if(
(this.type&&this.type.match(/^image[\/](jpeg|gif|png)$/i))
||(this.href&&this.href.match(/\.(jpeg|jpg|png|gif)$/i))
){
imageArray.push([
this.href,
this.title||this.name
])}
}
)}
function TB_show(caption,url){try{
if(document.getElementById("TB_HideSelect")==null){
jQuery("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay' title='Fermer'></div><div id='TB_window'></div>");
jQuery("#TB_overlay").click(TB_remove)}
jQuery(".TB_hide").hide();
if(caption==null){caption=""};
if(!FULL_S){
jQuery(window).scroll(TB_position)}
TB_overlaySize();
jQuery("body").append("<div id='TB_load'><img src='"+TB_chemin_animation+"' alt='loading' /></div>");
TB_load_position();
if(url.indexOf("?")!==-1){var baseURL=url.substr(0,url.indexOf("?"))}else{
var baseURL=url}
var urlString=/\.jpg|\.jpeg|\.png|\.gif|\.bmp/g;
var urlType=baseURL.toLowerCase().match(urlString);
if(urlType=='.jpg'||urlType=='.jpeg'||urlType=='.png'||urlType=='.gif'||urlType=='.bmp'){
TB_PrevCaption="";
TB_PrevURL="";
TB_PrevHTML="";
TB_NextCaption="";
TB_NextURL="";
TB_NextHTML="";
TB_imageCount="";
TB_Full_Size="";
TB_FoundURL=false;
if(imageArray.length>0){
TB_TempArray=imageArray;
for(TB_Counter=0;((TB_Counter<TB_TempArray.length)&&(TB_NextHTML==""));TB_Counter++){
var urlTypeTemp=TB_TempArray[TB_Counter][0].toLowerCase().match(urlString);
if(!(TB_TempArray[TB_Counter][0]==url)){
if(TB_FoundURL){
TB_NextCaption=TB_TempArray[TB_Counter][1];
TB_NextURL=TB_TempArray[TB_Counter][0];
TB_NextHTML="<span id='TB_next'>&nbsp;&nbsp;<a href='#' title='Image suivante'><img src='plugins/custom/images/next.gif'></a></span>"}else{
TB_PrevCaption=TB_TempArray[TB_Counter][1];
TB_PrevURL=TB_TempArray[TB_Counter][0];
TB_PrevHTML="<span id='TB_prev'>&nbsp;&nbsp;<a href='#' title='Image precedente'><img src='plugins/custom/images/prev.gif'></a></span>"}
}else{
TB_FoundURL=true;
TB_imageCount=(TB_Counter+1)+" / "+(TB_TempArray.length)}
}
}
if(!(TB_NextHTML=="")){imageSuivante=new Image();
imageSuivante.src=TB_NextURL}
imgPreloader=new Image();
imgPreloader.onload=function(){
imgPreloader.onload=null;
TB_Big_Image=false;
var pagesize=TB_getPageSize();
var x=pagesize[0]-150;
var y=pagesize[1]-150;
var imageWidth=imgPreloader.width;
var imageHeight=imgPreloader.height;
IMAGE_WIDTH=imageWidth;
IMAGE_HEIGHT=imageHeight;
if(imageWidth>x){
TB_Big_Image=true;
imageHeight=imageHeight*(x/imageWidth);
imageWidth=x;
if(imageHeight>y){
TB_Big_Image=true;
imageWidth=imageWidth*(y/imageHeight);
imageHeight=y}
}else if(imageHeight>y){
TB_Big_Image=true;
imageWidth=imageWidth*(y/imageHeight);
imageHeight=y;
if(imageWidth>x){
TB_Big_Image=true;
imageHeight=imageHeight*(x/imageWidth);
imageWidth=x}
}
if(!DIAPO){
TB_Diapo="<span id='TB_Diapo'>&nbsp;&nbsp;<a href='#'><strong>[Diaporama]</strong></a></span>"}else{
TB_Diapo="<span id='TB_Diapo'>&nbsp;&nbsp;<a href='#' title='Stop'><strong>[Stop]</strong></a></span>"}
if(TB_Big_Image)
TB_Full_Size="<span id='TB_Full'>&nbsp;&nbsp;<a href='#'><strong>[Zoom]</strong></a></span>";
TB_WIDTH=imageWidth+20;
TB_HEIGHT=imageHeight+20;
jQuery("#TB_window").append("<a href='#' id='TB_ImageOff'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+" - next picture'/></a>"+"<div id='TB_legend' style=''><div id='TB_caption'>"+caption+"</div><div id='TB_secondLine'>"+TB_imageCount+TB_Full_Size+TB_PrevHTML+TB_NextHTML+TB_Diapo+"</div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton'><img src='"+TB_chemin_close+"' alt='Fermer' /></a></div></div>");
jQuery("#TB_closeWindowButton").click(TB_remove);
jQuery("#TB_load").remove();
jQuery("#TB_window").fadeIn("slow");
if(!(TB_NextHTML=="")){
function goNext(){
FULL_S=false;
jQuery("#TB_window").remove();
jQuery("body").append("<div id='TB_window'></div>");
TB_show(TB_NextCaption,TB_NextURL);
return false}
jQuery("#TB_next").click(goNext)}
if(!(TB_PrevHTML=="")){
function goPrev(){
FULL_S=false;
if(jQuery(document).unbind('click',goPrev)){jQuery(document).unbind('click',goPrev)};
jQuery("#TB_window").remove();
jQuery("body").append("<div id='TB_window'></div>");
TB_show(TB_PrevCaption,TB_PrevURL);
return false}
jQuery("#TB_prev").click(goPrev)}
if(!(TB_Full_Size=="")){
function fullSize(){
var arrayPageScroll=TB_getPageScrollTop();
var pagesize=TB_getPageSize();
if(!FULL_S){
FULL_S=true;
TB_TOP=arrayPageScroll[1];
if((arrayPageScroll[0]+(pagesize[0]-IMAGE_WIDTH)/2)>0){
TB_LEFT=arrayPageScroll[0]+(pagesize[0]-IMAGE_WIDTH)/2}else{
TB_LEFT=50}
jQuery("#TB_window").animate({top:TB_TOP,left:TB_LEFT,width:(IMAGE_WIDTH+20),height:(IMAGE_HEIGHT+20)},1500);
jQuery("#TB_Image").animate({top:20,left:20,width:IMAGE_WIDTH,height:IMAGE_HEIGHT},1500,TB_recadre)}
else{
FULL_S=false;
jQuery("#TB_window").animate({top:(arrayPageScroll[1]+(pagesize[1]-TB_HEIGHT)/2),left:(arrayPageScroll[0]+(pagesize[0]-TB_WIDTH)/2),width:TB_WIDTH,height:TB_HEIGHT},1500);
jQuery("#TB_Image").animate({top:20,left:20,width:(TB_WIDTH-20),height:(TB_HEIGHT-20)},1500,TB_recadre)}
return false}
jQuery("#TB_Full").click(fullSize)}
if(!(TB_NextHTML=="")){
jQuery("#TB_ImageOff").click(goNext)}else{
jQuery("#TB_ImageOff").click(TB_remove)}
jQuery("#TB_Diapo").click(diaporama);
document.onkeydown=function(e){
if(e==null){keycode=event.keyCode}else{keycode=e.which}
if(keycode==27|keycode==67|keycode==70){TB_remove()}else if(keycode==190|keycode==39){if(!(TB_NextHTML=="")){
document.onkeydown="";
goNext()}
}else if(keycode==188|keycode==37){if(!(TB_PrevHTML=="")){
document.onkeydown="";
goPrev()}
}
}
TB_position();
jQuery("#TB_load").remove();
jQuery("#TB_window").css({display:"block"});
if(DIAPO)
setTimeout('diapo();',DELAI);
jQuery("#TB_ImageOff")[0].focus()}
imgPreloader.src=url}else{var queryString=url.replace(/^[^\?]+\?+/,'');
queryString=queryString.replace(/^[^\?]+\?+/,'');
var params=TB_parseQuery(queryString);
TB_WIDTH=(params['width']*1)+30;
TB_HEIGHT=(params['height']*1)+40;
ajaxContentW=TB_WIDTH-30;
ajaxContentH=TB_HEIGHT-45;
if(url.indexOf('TB_iframe')!=-1){
urlNoQuery=url.split('TB_');
jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a></div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent' style='width:"+(ajaxContentW+29)+"px;height:"+(ajaxContentH+17)+"px;' onload='TB_showIframe()'> </iframe>")}else{
jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>")}
jQuery("#TB_closeWindowButton").click(TB_remove);
if(url.indexOf('TB_inline')!=-1){
jQuery("#TB_ajaxContent").html(jQuery('#'+params['inlineId']).html());
TB_position();
jQuery("#TB_load").remove();
jQuery("#TB_window").css({display:"block"})}else if(url.indexOf('TB_iframe')!=-1){
TB_position();
if(frames['TB_iframeContent']==undefined){jQuery("#TB_load").remove();
jQuery("#TB_window").css({display:"block"});
jQuery(document).keyup(function(e){var key=e.keyCode;if(key==27){TB_remove()}})}
}else{
jQuery("#TB_ajaxContent").load(url,function(){
TB_position();
jQuery("#TB_load").remove();
jQuery("#TB_window").css({display:"block"})})}
}
jQuery(window).resize(TB_position);
document.onkeyup=function(e){
if(e==null){keycode=event.keyCode}else{keycode=e.which}
if(keycode==27){TB_remove()}
}
}catch(e){
alert(e)}
}
function diaporama(){
if(!DIAPO){
DIAPO=true;
diapo()}else{
DIAPO=false}
return false}
function diapo(){
if(DIAPO){
if(TB_NextURL!=""){
jQuery("#TB_window").remove();
jQuery("body").append("<div id='TB_window'></div>");
TB_show(TB_NextCaption,TB_NextURL)}else DIAPO=false}
return false}
function TB_showIframe(){
jQuery("#TB_load").remove();
jQuery("#TB_window").css({display:"block"})}
function TB_remove(){
DIAPO=false;
FULL_S=false;
jQuery("#TB_imageOff").unbind('click');
jQuery("#TB_overlay").unbind('click');
jQuery("#TB_closeWindowButton").unbind('click');
jQuery("#TB_window").fadeOut("fast",function(){jQuery('#TB_window,#TB_overlay,#TB_HideSelect').remove()});
jQuery("#TB_load").remove();
jQuery(".TB_hide").show();
return false}
function TB_position(){
var pagesize=TB_getPageSize();
var arrayPageScroll=TB_getPageScrollTop();
var legendHeight=jQuery("#TB_legend").height();
if(FULL_S&&DIAPO){
FULL_S=false;
jQuery("#TB_window").animate({top:(arrayPageScroll[1]+(pagesize[1]-TB_HEIGHT)/2),left:(arrayPageScroll[0]+(pagesize[0]-TB_WIDTH)/2),width:TB_WIDTH,height:TB_HEIGHT},1500);
jQuery("#TB_Image").animate({top:20,left:20,width:(TB_WIDTH-20),height:(TB_HEIGHT-20)},1500,TB_recadre)}
if(!FULL_S||DIAPO){
jQuery("#TB_window").css({width:TB_WIDTH+"px",left:(arrayPageScroll[0]+(pagesize[0]-TB_WIDTH)/2)+"px",top:(arrayPageScroll[1]+(pagesize[1]-TB_HEIGHT)/2-legendHeight/2)+"px"})}
}
function TB_overlaySize(){
if(window.innerHeight&&window.scrollMaxY||window.innerWidth&&window.scrollMaxX){
yScroll=window.innerHeight+window.scrollMaxY;
xScroll=window.innerWidth+window.scrollMaxX;
var deff=document.documentElement;
var wff=(deff&&deff.clientWidth)||document.body.clientWidth||window.innerWidth||self.innerWidth;
var hff=(deff&&deff.clientHeight)||document.body.clientHeight||window.innerHeight||self.innerHeight;
xScroll-=(window.innerWidth-wff);
yScroll-=(window.innerHeight-hff)}else if(document.body.scrollHeight>document.body.offsetHeight||document.body.scrollWidth>document.body.offsetWidth){yScroll=document.body.scrollHeight;
xScroll=document.body.scrollWidth}else{yScroll=document.body.offsetHeight;
xScroll=document.body.offsetWidth}
jQuery("#TB_overlay").css({"height":yScroll+"px","width":xScroll+"px"});
jQuery("#TB_HideSelect").css({"height":yScroll+"px","width":xScroll+"px"})}
function TB_load_position(){
var pagesize=TB_getPageSize();
var arrayPageScroll=TB_getPageScrollTop();
jQuery("#TB_load")
.css({left:(arrayPageScroll[0]+(pagesize[0]-100)/2)+"px",top:(arrayPageScroll[1]+((pagesize[1]-100)/2))+"px"})
.css({display:"block"})}
function TB_parseQuery(query){
var Params=new Object();
if(!query)return Params;var Pairs=query.split(/[;&]/);
for(var i=0;i<Pairs.length;i++){
var KeyVal=Pairs[i].split('=');
if(!KeyVal||KeyVal.length!=2)continue;
var key=unescape(KeyVal[0]);
var val=unescape(KeyVal[1]);
val=val.replace(/\+/g,' ');
Params[key]=val}
return Params}
function TB_getPageScrollTop(){
var yScrolltop;
var xScrollleft;
if(self.pageYOffset||self.pageXOffset){
yScrolltop=self.pageYOffset;
xScrollleft=self.pageXOffset}else if(document.documentElement&&document.documentElement.scrollTop||document.documentElement.scrollLeft){yScrolltop=document.documentElement.scrollTop;
xScrollleft=document.documentElement.scrollLeft}else if(document.body){yScrolltop=document.body.scrollTop;
xScrollleft=document.body.scrollLeft}
arrayPageScroll=new Array(xScrollleft,yScrolltop)
return arrayPageScroll}
function TB_getPageSize(){
var de=document.documentElement;
var w=window.innerWidth||self.innerWidth||(de&&de.clientWidth)||document.body.clientWidth;
var h=window.innerHeight||self.innerHeight||(de&&de.clientHeight)||document.body.clientHeight
arrayPageSize=new Array(w,h)
return arrayPageSize}
function TB_recadre(){
TB_overlaySize();
TB_position()}


/* ./IMG/SpryAssets/SpryCollapsiblePanel.js */

var Spry;
if(!Spry)Spry={};
if(!Spry.Widget)Spry.Widget={};
Spry.Widget.CollapsiblePanel=function(element,opts)
{
this.element=this.getElement(element);
this.focusElement=null;
this.hoverClass="CollapsiblePanelTabHover";
this.openClass="CollapsiblePanelOpen";
this.closedClass="CollapsiblePanelClosed";
this.focusedClass="CollapsiblePanelFocused";
this.enableAnimation=true;
this.enableKeyboardNavigation=true;
this.animator=null;
this.hasFocus=false;
this.contentIsOpen=false;
this.openPanelKeyCode=Spry.Widget.CollapsiblePanel.KEY_DOWN;
this.closePanelKeyCode=Spry.Widget.CollapsiblePanel.KEY_UP;
Spry.Widget.CollapsiblePanel.setOptions(this,opts);
this.attachBehaviors()};
Spry.Widget.CollapsiblePanel.prototype.getElement=function(ele)
{
if(ele&&typeof ele=="string")
return document.getElementById(ele);
return ele};
Spry.Widget.CollapsiblePanel.prototype.addClassName=function(ele,className)
{
if(!ele||!className||(ele.className&&ele.className.search(new RegExp("\\b"+className+"\\b"))!=-1))
return;
ele.className+=(ele.className?" ":"")+className};
Spry.Widget.CollapsiblePanel.prototype.removeClassName=function(ele,className)
{
if(!ele||!className||(ele.className&&ele.className.search(new RegExp("\\b"+className+"\\b"))==-1))
return;
ele.className=ele.className.replace(new RegExp("\\s*\\b"+className+"\\b","g"),"")};
Spry.Widget.CollapsiblePanel.prototype.hasClassName=function(ele,className)
{
if(!ele||!className||!ele.className||ele.className.search(new RegExp("\\b"+className+"\\b"))==-1)
return false;
return true};
Spry.Widget.CollapsiblePanel.prototype.setDisplay=function(ele,display)
{
if(ele)
ele.style.display=display};
Spry.Widget.CollapsiblePanel.setOptions=function(obj,optionsObj,ignoreUndefinedProps)
{
if(!optionsObj)
return;
for(var optionName in optionsObj)
{
if(ignoreUndefinedProps&&optionsObj[optionName]==undefined)
continue;
obj[optionName]=optionsObj[optionName]}
};
Spry.Widget.CollapsiblePanel.prototype.onTabMouseOver=function(e)
{
this.addClassName(this.getTab(),this.hoverClass);
return false};
Spry.Widget.CollapsiblePanel.prototype.onTabMouseOut=function(e)
{
this.removeClassName(this.getTab(),this.hoverClass);
return false};
Spry.Widget.CollapsiblePanel.prototype.open=function()
{
this.contentIsOpen=true;
if(this.enableAnimation)
{
if(this.animator)
this.animator.stop();
this.animator=new Spry.Widget.CollapsiblePanel.PanelAnimator(this,true,{duration:this.duration,fps:this.fps,transition:this.transition});
this.animator.start()}
else
this.setDisplay(this.getContent(),"block");
this.removeClassName(this.element,this.closedClass);
this.addClassName(this.element,this.openClass)};
Spry.Widget.CollapsiblePanel.prototype.close=function()
{
this.contentIsOpen=false;
if(this.enableAnimation)
{
if(this.animator)
this.animator.stop();
this.animator=new Spry.Widget.CollapsiblePanel.PanelAnimator(this,false,{duration:this.duration,fps:this.fps,transition:this.transition});
this.animator.start()}
else
this.setDisplay(this.getContent(),"none");
this.removeClassName(this.element,this.openClass);
this.addClassName(this.element,this.closedClass)};
Spry.Widget.CollapsiblePanel.prototype.onTabClick=function(e)
{
if(this.isOpen())
this.close();
else
this.open();
this.focus();
return this.stopPropagation(e)};
Spry.Widget.CollapsiblePanel.prototype.onFocus=function(e)
{
this.hasFocus=true;
this.addClassName(this.element,this.focusedClass);
return false};
Spry.Widget.CollapsiblePanel.prototype.onBlur=function(e)
{
this.hasFocus=false;
this.removeClassName(this.element,this.focusedClass);
return false};
Spry.Widget.CollapsiblePanel.KEY_UP=38;
Spry.Widget.CollapsiblePanel.KEY_DOWN=40;
Spry.Widget.CollapsiblePanel.prototype.onKeyDown=function(e)
{
var key=e.keyCode;
if(!this.hasFocus||(key!=this.openPanelKeyCode&&key!=this.closePanelKeyCode))
return true;
if(this.isOpen()&&key==this.closePanelKeyCode)
this.close();
else if(key==this.openPanelKeyCode)
this.open();
return this.stopPropagation(e)};
Spry.Widget.CollapsiblePanel.prototype.stopPropagation=function(e)
{
if(e.preventDefault)e.preventDefault();
else e.returnValue=false;
if(e.stopPropagation)e.stopPropagation();
else e.cancelBubble=true;
return false};
Spry.Widget.CollapsiblePanel.prototype.attachPanelHandlers=function()
{
var tab=this.getTab();
if(!tab)
return;
var self=this;
Spry.Widget.CollapsiblePanel.addEventListener(tab,"click",function(e){return self.onTabClick(e)},false);
Spry.Widget.CollapsiblePanel.addEventListener(tab,"mouseover",function(e){return self.onTabMouseOver(e)},false);
Spry.Widget.CollapsiblePanel.addEventListener(tab,"mouseout",function(e){return self.onTabMouseOut(e)},false);
if(this.enableKeyboardNavigation)
{
var tabIndexEle=null;
var tabAnchorEle=null;
this.preorderTraversal(tab,function(node){
if(node.nodeType==1)
{
var tabIndexAttr=tab.attributes.getNamedItem("tabindex");
if(tabIndexAttr)
{
tabIndexEle=node;
return true}
if(!tabAnchorEle&&node.nodeName.toLowerCase()=="a")
tabAnchorEle=node}
return false});
if(tabIndexEle)
this.focusElement=tabIndexEle;
else if(tabAnchorEle)
this.focusElement=tabAnchorEle;
if(this.focusElement)
{
Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement,"focus",function(e){return self.onFocus(e)},false);
Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement,"blur",function(e){return self.onBlur(e)},false);
Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement,"keydown",function(e){return self.onKeyDown(e)},false)}
}
};
Spry.Widget.CollapsiblePanel.addEventListener=function(element,eventType,handler,capture)
{
try
{
if(element.addEventListener)
element.addEventListener(eventType,handler,capture);
else if(element.attachEvent)
element.attachEvent("on"+eventType,handler)}
catch(e){}
};
Spry.Widget.CollapsiblePanel.prototype.preorderTraversal=function(root,func)
{
var stopTraversal=false;
if(root)
{
stopTraversal=func(root);
if(root.hasChildNodes())
{
var child=root.firstChild;
while(!stopTraversal&&child)
{
stopTraversal=this.preorderTraversal(child,func);
try{child=child.nextSibling}catch(e){child=null}
}
}
}
return stopTraversal};
Spry.Widget.CollapsiblePanel.prototype.attachBehaviors=function()
{
var panel=this.element;
var tab=this.getTab();
var content=this.getContent();
if(this.contentIsOpen||this.hasClassName(panel,this.openClass))
{
this.addClassName(panel,this.openClass);
this.removeClassName(panel,this.closedClass);
this.setDisplay(content,"block");
this.contentIsOpen=true}
else
{
this.removeClassName(panel,this.openClass);
this.addClassName(panel,this.closedClass);
this.setDisplay(content,"none");
this.contentIsOpen=false}
this.attachPanelHandlers()};
Spry.Widget.CollapsiblePanel.prototype.getTab=function()
{
return this.getElementChildren(this.element)[0]};
Spry.Widget.CollapsiblePanel.prototype.getContent=function()
{
return this.getElementChildren(this.element)[1]};
Spry.Widget.CollapsiblePanel.prototype.isOpen=function()
{
return this.contentIsOpen};
Spry.Widget.CollapsiblePanel.prototype.getElementChildren=function(element)
{
var children=[];
var child=element.firstChild;
while(child)
{
if(child.nodeType==1)
children.push(child);
child=child.nextSibling}
return children};
Spry.Widget.CollapsiblePanel.prototype.focus=function()
{
if(this.focusElement&&this.focusElement.focus)
this.focusElement.focus()};
Spry.Widget.CollapsiblePanel.PanelAnimator=function(panel,doOpen,opts)
{
this.timer=null;
this.interval=0;
this.fps=60;
this.duration=500;
this.startTime=0;
this.transition=Spry.Widget.CollapsiblePanel.PanelAnimator.defaultTransition;
this.onComplete=null;
this.panel=panel;
this.content=panel.getContent();
this.doOpen=doOpen;
Spry.Widget.CollapsiblePanel.setOptions(this,opts,true);
this.interval=Math.floor(1000/this.fps);
var c=this.content;
var curHeight=c.offsetHeight?c.offsetHeight:0;
this.fromHeight=(doOpen&&c.style.display=="none")?0:curHeight;
if(!doOpen)
this.toHeight=0;
else
{
if(c.style.display=="none")
{
c.style.visibility="hidden";
c.style.display="block"}
c.style.height="";
this.toHeight=c.offsetHeight}
this.distance=this.toHeight-this.fromHeight;
this.overflow=c.style.overflow;
c.style.height=this.fromHeight+"px";
c.style.visibility="visible";
c.style.overflow="hidden";
c.style.display="block"};
Spry.Widget.CollapsiblePanel.PanelAnimator.defaultTransition=function(time,begin,finish,duration){time/=duration;return begin+((2-time)*time*finish)};
Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.start=function()
{
var self=this;
this.startTime=(new Date).getTime();
this.timer=setTimeout(function(){self.stepAnimation()},this.interval)};
Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stop=function()
{
if(this.timer)
{
clearTimeout(this.timer);
this.content.style.overflow=this.overflow}
this.timer=null};
Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stepAnimation=function()
{
var curTime=(new Date).getTime();
var elapsedTime=curTime-this.startTime;
if(elapsedTime>=this.duration)
{
if(!this.doOpen)
this.content.style.display="none";
this.content.style.overflow=this.overflow;
this.content.style.height=this.toHeight+"px";
if(this.onComplete)
this.onComplete();
return}
var ht=this.transition(elapsedTime,this.fromHeight,this.distance,this.duration);
this.content.style.height=((ht<0)?0:ht)+"px";
var self=this;
this.timer=setTimeout(function(){self.stepAnimation()},this.interval)};
Spry.Widget.CollapsiblePanelGroup=function(element,opts)
{
this.element=this.getElement(element);
this.opts=opts;
this.attachBehaviors()};
Spry.Widget.CollapsiblePanelGroup.prototype.setOptions=Spry.Widget.CollapsiblePanel.prototype.setOptions;
Spry.Widget.CollapsiblePanelGroup.prototype.getElement=Spry.Widget.CollapsiblePanel.prototype.getElement;
Spry.Widget.CollapsiblePanelGroup.prototype.getElementChildren=Spry.Widget.CollapsiblePanel.prototype.getElementChildren;
Spry.Widget.CollapsiblePanelGroup.prototype.setElementWidget=function(element,widget)
{
if(!element||!widget)
return;
if(!element.spry)
element.spry=new Object;
element.spry.collapsiblePanel=widget};
Spry.Widget.CollapsiblePanelGroup.prototype.getElementWidget=function(element)
{
return(element&&element.spry&&element.spry.collapsiblePanel)?element.spry.collapsiblePanel:null};
Spry.Widget.CollapsiblePanelGroup.prototype.getPanels=function()
{
if(!this.element)
return[];
return this.getElementChildren(this.element)};
Spry.Widget.CollapsiblePanelGroup.prototype.getPanel=function(panelIndex)
{
return this.getPanels()[panelIndex]};
Spry.Widget.CollapsiblePanelGroup.prototype.attachBehaviors=function()
{
if(!this.element)
return;
var cpanels=this.getPanels();
var numCPanels=cpanels.length;
for(var i=0;i<numCPanels;i++)
{
var cpanel=cpanels[i];
this.setElementWidget(cpanel,new Spry.Widget.CollapsiblePanel(cpanel,this.opts))}
};
Spry.Widget.CollapsiblePanelGroup.prototype.openPanel=function(panelIndex)
{
var w=this.getElementWidget(this.getPanel(panelIndex));
if(w&&!w.isOpen())
w.open()};
Spry.Widget.CollapsiblePanelGroup.prototype.closePanel=function(panelIndex)
{
var w=this.getElementWidget(this.getPanel(panelIndex));
if(w&&w.isOpen())
w.close()};
Spry.Widget.CollapsiblePanelGroup.prototype.openAllPanels=function()
{
var cpanels=this.getPanels();
var numCPanels=cpanels.length;
for(var i=0;i<numCPanels;i++)
{
var w=this.getElementWidget(cpanels[i]);
if(w&&!w.isOpen())
w.open()}
};
Spry.Widget.CollapsiblePanelGroup.prototype.closeAllPanels=function()
{
var cpanels=this.getPanels();
var numCPanels=cpanels.length;
for(var i=0;i<numCPanels;i++)
{
var w=this.getElementWidget(cpanels[i]);
if(w&&w.isOpen())
w.close()}
};


/* IMG/SpryAssets/SpryEffects.js */

var Spry;
if(!Spry)Spry={};
Spry.forwards=1;Spry.backwards=2;
if(!Spry.Effect)Spry.Effect={};
Spry.Effect.Transitions={
linearTransition:function(time,begin,change,duration)
{
if(time>duration)return change+begin;
return begin+(time/duration)*change},
sinusoidalTransition:function(time,begin,change,duration)
{
if(time>duration)return change+begin;
return begin+((-Math.cos((time/duration)*Math.PI)/2)+0.5)*change},
squareTransition:function(time,begin,change,duration)
{
if(time>duration)return change+begin;
return begin+Math.pow(time/duration,2)*change},
squarerootTransition:function(time,begin,change,duration)
{
if(time>duration)return change+begin;
return begin+Math.sqrt(time/duration)*change},
fifthTransition:function(time,begin,change,duration)
{
if(time>duration)return change+begin;
return begin+Math.sqrt((-Math.cos((time/duration)*Math.PI)/2)+0.5)*change},
circleTransition:function(time,begin,change,duration)
{
if(time>duration)return change+begin;
var pos=time/duration;
return begin+Math.sqrt(1-Math.pow((pos-1),2))*change},
pulsateTransition:function(time,begin,change,duration)
{
if(time>duration)return change+begin;
return begin+(0.5+Math.sin(17*time/duration)/2)*change},
growSpecificTransition:function(time,begin,change,duration)
{
if(time>duration)return change+begin;
var pos=time/duration;
return begin+(5*Math.pow(pos,3)-6.4*Math.pow(pos,2)+2*pos)*change}
};
for(var trans in Spry.Effect.Transitions)
{
Spry[trans]=Spry.Effect.Transitions[trans]}
Spry.Effect.Registry=function()
{
this.effects=[]};
Spry.Effect.Registry.prototype.getRegisteredEffect=function(element,options)
{
var a={};
a.element=Spry.Effect.getElement(element);
a.options=options;
for(var i=0;i<this.effects.length;i++)
if(this.effectsAreTheSame(this.effects[i],a))
return this.effects[i].effect;
return false};
Spry.Effect.Registry.prototype.addEffect=function(effect,element,options)
{
if(!this.getRegisteredEffect(element,options))
{
var len=this.effects.length;
this.effects[len]={};
var eff=this.effects[len];
eff.effect=effect;
eff.element=Spry.Effect.getElement(element);
eff.options=options}
};
Spry.Effect.Registry.prototype.effectsAreTheSame=function(effectA,effectB)
{
if(effectA.element!=effectB.element)
return false;
var compare=Spry.Effect.Utils.optionsAreIdentical(effectA.options,effectB.options);
if(compare)
{
if(typeof effectB.options.setup=='function')
effectA.options.setup=effectB.options.setup;
if(typeof effectB.options.finish=='function')
effectA.options.finish=effectB.options.finish}
return compare};
var SpryRegistry=new Spry.Effect.Registry;
if(!Spry.Effect.Utils)Spry.Effect.Utils={};
Spry.Effect.Utils.showError=function(msg)
{
alert('Spry.Effect ERR: '+msg)};
Spry.Effect.Utils.showInitError=function(effect){
Spry.Effect.Utils.showError('The '+effect+' class can\'t be accessed as a static function anymore. '+"\n"+'Please read Spry Effects migration documentation.');
return false};
Spry.Effect.Utils.Position=function()
{
this.x=0;this.y=0;this.units="px"};
Spry.Effect.Utils.Rectangle=function()
{
this.width=0;
this.height=0;
this.units="px"};
Spry.Effect.Utils.intToHex=function(integerNum)
{
var result=integerNum.toString(16);
if(result.length==1)
result="0"+result;
return result};
Spry.Effect.Utils.hexToInt=function(hexStr)
{
return parseInt(hexStr,16)};
Spry.Effect.Utils.rgb=function(redInt,greenInt,blueInt)
{
var intToHex=Spry.Effect.Utils.intToHex;
var redHex=intToHex(redInt);
var greenHex=intToHex(greenInt);
var blueHex=intToHex(blueInt);
compositeColorHex=redHex.concat(greenHex,blueHex).toUpperCase();
compositeColorHex='#'+compositeColorHex;
return compositeColorHex};
Spry.Effect.Utils.longColorVersion=function(color){
if(color.match(/^#[0-9a-f]{3}$/i)){
var tmp=color.split('');
var color='#';
for(var i=1;i<tmp.length;i++){
color+=tmp[i]+''+tmp[i]}
}
return color};
Spry.Effect.Utils.camelize=function(stringToCamelize)
{
if(stringToCamelize.indexOf('-')==-1){
return stringToCamelize}
var oStringList=stringToCamelize.split('-');
var isFirstEntry=true;
var camelizedString='';
for(var i=0;i<oStringList.length;i++)
{
if(oStringList[i].length>0)
{
if(isFirstEntry)
{
camelizedString=oStringList[i];
isFirstEntry=false}
else
{
var s=oStringList[i];
camelizedString+=s.charAt(0).toUpperCase()+s.substring(1)}
}
}
return camelizedString};
Spry.Effect.Utils.isPercentValue=function(value)
{
var result=false;
if(typeof value=='string'&&value.length>0&&value.lastIndexOf("%")>0)
result=true;
return result};
Spry.Effect.Utils.getPercentValue=function(value)
{
var result=0;
try
{
result=Number(value.substring(0,value.lastIndexOf("%")))}
catch(e){Spry.Effect.Utils.showError('Spry.Effect.Utils.getPercentValue: '+e)}
return result};
Spry.Effect.Utils.getPixelValue=function(value)
{
var result=0;
if(typeof value=='number')return value;
var unitIndex=value.lastIndexOf("px");
if(unitIndex==-1)
unitIndex=value.length;
try
{
result=parseInt(value.substring(0,unitIndex),10)}
catch(e){}
return result};
Spry.Effect.Utils.getFirstChildElement=function(node)
{
if(node)
{
var childCurr=node.firstChild;
while(childCurr)
{
if(childCurr.nodeType==1)return childCurr;
childCurr=childCurr.nextSibling}
}
return null};
Spry.Effect.Utils.fetchChildImages=function(startEltIn,targetImagesOut)
{
if(!startEltIn||startEltIn.nodeType!=1||!targetImagesOut)
return;
if(startEltIn.hasChildNodes())
{
var childImages=startEltIn.getElementsByTagName('img');
var imageCnt=childImages.length;
for(var i=0;i<imageCnt;i++)
{
var imgCurr=childImages[i];
var dimensionsCurr=Spry.Effect.getDimensions(imgCurr);
targetImagesOut.push([imgCurr,dimensionsCurr.width,dimensionsCurr.height])}
}
};
Spry.Effect.Utils.optionsAreIdentical=function(optionsA,optionsB)
{
if(optionsA==null&&optionsB==null)
return true;
if(optionsA!=null&&optionsB!=null)
{
var objectCountA=0;
var objectCountB=0;
for(var propA in optionsA)objectCountA++;
for(var propB in optionsB)objectCountB++;
if(objectCountA!=objectCountB)
return false;
for(var prop in optionsA)
{
var typeA=typeof optionsA[prop];
var typeB=typeof optionsB[prop];
if(typeA!=typeB||(typeA!='undefined'&&optionsA[prop]!=optionsB[prop]))
return false}
return true}
return false};
Spry.Effect.Utils.DoEffect=function(effectName,element,options)
{
if(!options)
var options={};
options.name=effectName;
var ef=SpryRegistry.getRegisteredEffect(element,options);
if(!ef)
{
ef=new Spry.Effect[effectName](element,options);
SpryRegistry.addEffect(ef,element,options)}
ef.start();
return true};
if(!Spry.Utils)Spry.Utils={};
Spry.Utils.Notifier=function()
{
this.observers=[];
this.suppressNotifications=0};
Spry.Utils.Notifier.prototype.addObserver=function(observer)
{
if(!observer)
return;
var len=this.observers.length;
for(var i=0;i<len;i++)
if(this.observers[i]==observer)return;
this.observers[len]=observer};
Spry.Utils.Notifier.prototype.removeObserver=function(observer)
{
if(!observer)
return;
for(var i=0;i<this.observers.length;i++)
{
if(this.observers[i]==observer)
{
this.observers.splice(i,1);
break}
}
};
Spry.Utils.Notifier.prototype.notifyObservers=function(methodName,data)
{
if(!methodName)
return;
if(!this.suppressNotifications)
{
var len=this.observers.length;
for(var i=0;i<len;i++)
{
var obs=this.observers[i];
if(obs)
{
if(typeof obs=="function")
obs(methodName,this,data);
else if(obs[methodName])
obs[methodName](this,data)}
}
}
};
Spry.Utils.Notifier.prototype.enableNotifications=function()
{
if(--this.suppressNotifications<0)
{
this.suppressNotifications=0;
Spry.Effect.Utils.showError("Unbalanced enableNotifications() call!\n")}
};
Spry.Utils.Notifier.prototype.disableNotifications=function()
{
++this.suppressNotifications};
Spry.Effect.getElement=function(ele)
{
var element=ele;
if(typeof ele=="string")
element=document.getElementById(ele);
if(element==null)
Spry.Effect.Utils.showError('Element "'+ele+'" not found.');
return element};
Spry.Effect.getStyleProp=function(element,prop)
{
var value;
var camelized=Spry.Effect.Utils.camelize(prop);
try
{
if(element.style)
value=element.style[camelized];
if(!value)
{
if(document.defaultView&&document.defaultView.getComputedStyle)
{
var css=document.defaultView.getComputedStyle(element,null);
value=css?css.getPropertyValue(prop):null}
else if(element.currentStyle)
{
value=element.currentStyle[camelized]}
}
}
catch(e){Spry.Effect.Utils.showError('Spry.Effect.getStyleProp: '+e)}
return value=='auto'?null:value};
Spry.Effect.setStyleProp=function(element,prop,value)
{
try
{
element.style[Spry.Effect.Utils.camelize(prop)]=value}
catch(e){Spry.Effect.Utils.showError('Spry.Effect.setStyleProp: '+e)}
};
Spry.Effect.getStylePropRegardlessOfDisplayState=function(element,prop,displayElement)
{
var refElement=displayElement?displayElement:element;
var displayOrig=Spry.Effect.getStyleProp(refElement,'display');
var visibilityOrig=Spry.Effect.getStyleProp(refElement,'visibility');
if(displayOrig=='none')
{
Spry.Effect.setStyleProp(refElement,'visibility','hidden');
Spry.Effect.setStyleProp(refElement,'display','block');
if(window.opera)refElement.focus()}
var styleProp=Spry.Effect.getStyleProp(element,prop);
if(displayOrig=='none'){
Spry.Effect.setStyleProp(refElement,'display','none');
Spry.Effect.setStyleProp(refElement,'visibility',visibilityOrig)}
return styleProp};
Spry.Effect.makePositioned=function(element)
{
var pos=Spry.Effect.getStyleProp(element,'position');
if(!pos||pos=='static')
{
element.style.position='relative';
if(window.opera)
{
element.style.top=0;
element.style.left=0}
}
};
Spry.Effect.isInvisible=function(element)
{
var propDisplay=Spry.Effect.getStyleProp(element,'display');
if(propDisplay&&propDisplay.toLowerCase()=='none')
return true;
var propVisible=Spry.Effect.getStyleProp(element,'visibility');
if(propVisible&&propVisible.toLowerCase()=='hidden')
return true;
return false};
Spry.Effect.enforceVisible=function(element)
{
var propDisplay=Spry.Effect.getStyleProp(element,'display');
if(propDisplay&&propDisplay.toLowerCase()=='none')
Spry.Effect.setStyleProp(element,'display','block');
var propVisible=Spry.Effect.getStyleProp(element,'visibility');
if(propVisible&&propVisible.toLowerCase()=='hidden')
Spry.Effect.setStyleProp(element,'visibility','visible')};
Spry.Effect.makeClipping=function(element)
{
var overflow=Spry.Effect.getStyleProp(element,'overflow');
if(!overflow||(overflow.toLowerCase()!='hidden'&&overflow.toLowerCase()!='scroll'))
{
var heightCache=0;
var needsCache=/MSIE 7.0/.test(navigator.userAgent)&&/Windows NT/.test(navigator.userAgent);
if(needsCache)
heightCache=Spry.Effect.getDimensionsRegardlessOfDisplayState(element).height;
Spry.Effect.setStyleProp(element,'overflow','hidden');
if(needsCache)
Spry.Effect.setStyleProp(element,'height',heightCache+'px')}
};
Spry.Effect.cleanWhitespace=function(element)
{
var childCountInit=element.childNodes.length;
for(var i=childCountInit-1;i>=0;i--){
var node=element.childNodes[i];
if(node.nodeType==3&&!/\S/.test(node.nodeValue))
try
{
element.removeChild(node)}
catch(e){Spry.Effect.Utils.showError('Spry.Effect.cleanWhitespace: '+e)}
}
};
Spry.Effect.getComputedStyle=function(element)
{
return/MSIE/.test(navigator.userAgent)?element.currentStyle:document.defaultView.getComputedStyle(element,null)};
Spry.Effect.getDimensions=function(element)
{
var dimensions=new Spry.Effect.Utils.Rectangle;
var computedStyle=null;
if(element.style.width&&/px/i.test(element.style.width))
dimensions.width=parseInt(element.style.width,10);else
{
computedStyle=Spry.Effect.getComputedStyle(element);
var tryComputedStyle=computedStyle&&computedStyle.width&&/px/i.test(computedStyle.width);
if(tryComputedStyle)
dimensions.width=parseInt(computedStyle.width,10);
if(!tryComputedStyle||dimensions.width==0)dimensions.width=element.offsetWidth}
if(element.style.height&&/px/i.test(element.style.height))
dimensions.height=parseInt(element.style.height,10);else
{
if(!computedStyle)
computedStyle=Spry.Effect.getComputedStyle(element);
var tryComputedStyle=computedStyle&&computedStyle.height&&/px/i.test(computedStyle.height);
if(tryComputedStyle)
dimensions.height=parseInt(computedStyle.height,10);
if(!tryComputedStyle||dimensions.height==0)dimensions.height=element.offsetHeight}
return dimensions};
Spry.Effect.getDimensionsRegardlessOfDisplayState=function(element,displayElement)
{
var refElement=displayElement?displayElement:element;
var displayOrig=Spry.Effect.getStyleProp(refElement,'display');
var visibilityOrig=Spry.Effect.getStyleProp(refElement,'visibility');
if(displayOrig=='none')
{
Spry.Effect.setStyleProp(refElement,'visibility','hidden');
Spry.Effect.setStyleProp(refElement,'display','block');
if(window.opera)refElement.focus()}
var dimensions=Spry.Effect.getDimensions(element);
if(displayOrig=='none'){
Spry.Effect.setStyleProp(refElement,'display','none');
Spry.Effect.setStyleProp(refElement,'visibility',visibilityOrig)}
return dimensions};
Spry.Effect.getOpacity=function(element)
{
var o=Spry.Effect.getStyleProp(element,"opacity");
if(typeof o=='undefined'||o==null)
o=1.0;
return o};
Spry.Effect.getBgColor=function(ele)
{
return Spry.Effect.getStyleProp(ele,"background-color")};
Spry.Effect.intPropStyle=function(e,prop){
var i=parseInt(Spry.Effect.getStyleProp(e,prop),10);
if(isNaN(i))
return 0;
return i};
Spry.Effect.getPosition=function(element)
{
var position=new Spry.Effect.Utils.Position;
var computedStyle=null;
if(element.style.left&&/px/i.test(element.style.left))
position.x=parseInt(element.style.left,10);else
{
computedStyle=Spry.Effect.getComputedStyle(element);
var tryComputedStyle=computedStyle&&computedStyle.left&&/px/i.test(computedStyle.left);
if(tryComputedStyle)
position.x=parseInt(computedStyle.left,10);
if(!tryComputedStyle||position.x==0)position.x=element.offsetLeft}
if(element.style.top&&/px/i.test(element.style.top))
position.y=parseInt(element.style.top,10);else
{
if(!computedStyle)
computedStyle=Spry.Effect.getComputedStyle(element);
var tryComputedStyle=computedStyle&&computedStyle.top&&/px/i.test(computedStyle.top);
if(tryComputedStyle)
position.y=parseInt(computedStyle.top,10);
if(!tryComputedStyle||position.y==0)position.y=element.offsetTop}
return position};
Spry.Effect.getOffsetPosition=Spry.Effect.getPosition;
Spry.Effect.Animator=function(options)
{
Spry.Utils.Notifier.call(this);
this.name='Animator';
this.element=null;
this.startMilliseconds=0;
this.repeat='none';
this.isRunning=false;
this.timer=null;
this.cancelRemaining=0;
if(!options)
var options={};
if(options.toggle)
this.direction=false;
else
this.direction=Spry.forwards;
var self=this;
if(options.setup!=null)
this.addObserver({onPreEffect:function(){try{self.options.setup(self.element,self)}catch(e){Spry.Effect.Utils.showError('Spry.Effect.Animator.prototype.start: setup callback: '+e)}}});
if(options.finish!=null)
this.addObserver({onPostEffect:function(){try{self.options.finish(self.element,self)}catch(e){Spry.Effect.Utils.showError('Spry.Effect.Animator.prototype.stop: finish callback: '+e)}}});
this.options={
duration:1000,
toggle:false,
transition:Spry.linearTransition,
interval:16};
this.setOptions(options);
if(options.transition)
this.setTransition(options.transition);
if(options.fps)
this.setFps(options.fps)};
Spry.Effect.Animator.prototype=new Spry.Utils.Notifier();
Spry.Effect.Animator.prototype.constructor=Spry.Utils.Animator;
Spry.Effect.Animator.prototype.notStaticAnimator=true;
Spry.Effect.Animator.prototype.setOptions=function(options)
{
if(!options)
return;
for(var prop in options)
this.options[prop]=options[prop]};
Spry.Effect.Animator.prototype.setTransition=function(transition){
if(typeof transition=='number'||transition=="1"||transition=="2")
switch(parseInt(transition,10))
{
case 1:transition=Spry.linearTransition;break;
case 2:transition=Spry.sinusoidalTransition;break;
default:Spry.Effect.Utils.showError('unknown transition')}
else if(typeof transition=='string')
{
if(typeof window[transition]=='function')
transition=window[transition];
else if(typeof Spry[transition]=='function')
transition=Spry[transition];
else
Spry.Effect.Utils.showError('unknown transition')}
this.options.transition=transition;
if(typeof this.effectsArray!='undefined'){
var l=this.effectsArray.length;
for(var i=0;i<l;i++)
this.effectsArray[i].effect.setTransition(transition)}
};
Spry.Effect.Animator.prototype.setDuration=function(duration){
this.options.duration=duration;
if(typeof this.effectsArray!='undefined')
{
var l=this.effectsArray.length;
for(var i=0;i<l;i++)
{
this.effectsArray[i].effect.setDuration(duration)}
}
};
Spry.Effect.Animator.prototype.setFps=function(fps){
this.options.interval=parseInt(1000/fps,10);
this.options.fps=fps;
if(typeof this.effectsArray!='undefined')
{
var l=this.effectsArray.length;
for(var i=0;i<l;i++)
{
this.effectsArray[i].effect.setFps(fps)}
}
};
Spry.Effect.Animator.prototype.start=function(withoutTimer)
{
if(!this.element)
return;
if(arguments.length==0)
withoutTimer=false;
if(this.isRunning)
this.cancel();
this.prepareStart();
var currDate=new Date();
this.startMilliseconds=currDate.getTime();
if(this.element.id)
this.element=document.getElementById(this.element.id);
if(this.cancelRemaining!=0&&this.options.toggle)
{
if(this.cancelRemaining<1&&typeof this.options.transition=='function')
{
var startTime=0;
var stopTime=this.options.duration;
var start=0;
var stop=1;
var emergency=0;
this.cancelRemaining=Math.round(this.cancelRemaining*1000)/1000;
var found=false;
var middle=0;
while(!found)
{
if(emergency++>this.options.duration)break;
var half=startTime+((stopTime-startTime)/2);
middle=Math.round(this.options.transition(half,1,-1,this.options.duration)*1000)/1000;
if(middle==this.cancelRemaining)
{
this.startMilliseconds-=half;
found=true}
if(middle<this.cancelRemaining)
{
stopTime=half;
stop=middle}
else
{
startTime=half;
start=middle}
}
}
this.cancelRemaining=0}
this.notifyObservers('onPreEffect',this);
if(withoutTimer==false)
{
var self=this;
this.timer=setInterval(function(){self.drawEffect()},this.options.interval)}
this.isRunning=true};
Spry.Effect.Animator.prototype.stopFlagReset=function()
{
if(this.timer)
{
clearInterval(this.timer);
this.timer=null}
this.startMilliseconds=0};
Spry.Effect.Animator.prototype.stop=function()
{
this.stopFlagReset();
this.notifyObservers('onPostEffect',this);
this.isRunning=false};
Spry.Effect.Animator.prototype.cancel=function()
{
var elapsed=this.getElapsedMilliseconds();
if(this.startMilliseconds>0&&elapsed<this.options.duration)
this.cancelRemaining=this.options.transition(elapsed,0,1,this.options.duration);
this.stopFlagReset();
this.notifyObservers('onCancel',this);
this.isRunning=false};
Spry.Effect.Animator.prototype.drawEffect=function()
{
var isRunning=true;
this.notifyObservers('onStep',this);
var timeElapsed=this.getElapsedMilliseconds();
if(typeof this.options.transition!='function'){
Spry.Effect.Utils.showError('unknown transition');
return}
this.animate();
if(timeElapsed>this.options.duration)
{
isRunning=false;
this.stop()}
return isRunning};
Spry.Effect.Animator.prototype.getElapsedMilliseconds=function()
{
if(this.startMilliseconds>0)
{
var currDate=new Date();
return(currDate.getTime()-this.startMilliseconds)}
return 0};
Spry.Effect.Animator.prototype.doToggle=function()
{
if(!this.direction)
{
this.direction=Spry.forwards;
return}
if(this.options.toggle==true)
{
if(this.direction==Spry.forwards)
{
this.direction=Spry.backwards;
this.notifyObservers('onToggle',this)}
else if(this.direction==Spry.backwards)
{
this.direction=Spry.forwards}
}
};
Spry.Effect.Animator.prototype.prepareStart=function()
{
if(this.options&&this.options.toggle)
this.doToggle()};
Spry.Effect.Animator.prototype.animate=function(){};
Spry.Effect.Animator.prototype.onStep=function(el)
{
if(el!=this)
this.notifyObservers('onStep',this)};
Spry.Effect.Move=function(element,fromPos,toPos,options)
{
this.dynamicFromPos=false;
if(arguments.length==3)
{
options=toPos;
toPos=fromPos;
fromPos=Spry.Effect.getPosition(element);
this.dynamicFromPos=true}
Spry.Effect.Animator.call(this,options);
this.name='Move';
this.element=Spry.Effect.getElement(element);
if(!this.element)
return;
if(fromPos.units!=toPos.units)
Spry.Effect.Utils.showError('Spry.Effect.Move: Conflicting units ('+fromPos.units+', '+toPos.units+')');
this.units=fromPos.units;
this.startX=Number(fromPos.x);
this.stopX=Number(toPos.x);
this.startY=Number(fromPos.y);
this.stopY=Number(toPos.y)};
Spry.Effect.Move.prototype=new Spry.Effect.Animator();
Spry.Effect.Move.prototype.constructor=Spry.Effect.Move;
Spry.Effect.Move.prototype.animate=function()
{
var left=0;
var top=0;
var floor=Math.floor;
var elapsed=this.getElapsedMilliseconds();
if(this.direction==Spry.forwards)
{
left=floor(this.options.transition(elapsed,this.startX,this.stopX-this.startX,this.options.duration));
top=floor(this.options.transition(elapsed,this.startY,this.stopY-this.startY,this.options.duration))}
else if(this.direction==Spry.backwards)
{
left=floor(this.options.transition(elapsed,this.stopX,this.startX-this.stopX,this.options.duration));
top=floor(this.options.transition(elapsed,this.stopY,this.startY-this.stopY,this.options.duration))}
this.element.style.left=left+this.units;
this.element.style.top=top+this.units};
Spry.Effect.Move.prototype.prepareStart=function()
{
if(this.options&&this.options.toggle)
this.doToggle();
if(this.dynamicFromPos==true)
{
var fromPos=Spry.Effect.getPosition(this.element);
this.startX=fromPos.x;
this.startY=fromPos.y;
this.rangeMoveX=this.startX-this.stopX;
this.rangeMoveY=this.startY-this.stopY}
};
Spry.Effect.Size=function(element,fromRect,toRect,options)
{
this.dynamicFromRect=false;
if(arguments.length==3)
{
options=toRect;
toRect=fromRect;
fromRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);
this.dynamicFromRect=true}
Spry.Effect.Animator.call(this,options);
this.name='Size';
this.element=Spry.Effect.getElement(element);
if(!this.element)
return;
element=this.element;
if(fromRect.units!=toRect.units)
{
Spry.Effect.Utils.showError('Spry.Effect.Size: Conflicting units ('+fromRect.units+', '+toRect.units+')');
return false}
this.units=fromRect.units;
var originalRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);
this.originalWidth=originalRect.width;
this.originalHeight=originalRect.height;
this.startWidth=fromRect.width;
this.startHeight=fromRect.height;
this.stopWidth=toRect.width;
this.stopHeight=toRect.height;
this.childImages=new Array();
if(this.options.useCSSBox){
Spry.Effect.makePositioned(this.element);
var intProp=Spry.Effect.intPropStyle;
this.startFromBorder_top=intProp(element,'border-top-width');
this.startFromBorder_bottom=intProp(element,'border-bottom-width');
this.startFromBorder_left=intProp(element,'border-left-width');
this.startFromBorder_right=intProp(element,'border-right-width');
this.startFromPadding_top=intProp(element,'padding-top');
this.startFromPadding_bottom=intProp(element,'padding-bottom');
this.startFromPadding_left=intProp(element,'padding-left');
this.startFromPadding_right=intProp(element,'padding-right');
this.startFromMargin_top=intProp(element,'margin-top');
this.startFromMargin_bottom=intProp(element,'margin-bottom');
this.startFromMargin_right=intProp(element,'margin-right');
this.startFromMargin_left=intProp(element,'margin-left');
this.startLeft=intProp(element,'left');
this.startTop=intProp(element,'top')}
if(this.options.scaleContent)
Spry.Effect.Utils.fetchChildImages(element,this.childImages);
this.fontFactor=1.0;
var fontSize=Spry.Effect.getStyleProp(this.element,'font-size');
if(fontSize&&/em\s*$/.test(fontSize))
this.fontFactor=parseFloat(fontSize);
var isPercent=Spry.Effect.Utils.isPercentValue;
if(isPercent(this.startWidth))
{
var startWidthPercent=Spry.Effect.Utils.getPercentValue(this.startWidth);
this.startWidth=originalRect.width*(startWidthPercent/100)}
if(isPercent(this.startHeight))
{
var startHeightPercent=Spry.Effect.Utils.getPercentValue(this.startHeight);
this.startHeight=originalRect.height*(startHeightPercent/100)}
if(isPercent(this.stopWidth))
{
var stopWidthPercent=Spry.Effect.Utils.getPercentValue(this.stopWidth);
this.stopWidth=originalRect.width*(stopWidthPercent/100)}
if(isPercent(this.stopHeight))
{
var stopHeightPercent=Spry.Effect.Utils.getPercentValue(this.stopHeight);
this.stopHeight=originalRect.height*(stopHeightPercent/100)}
this.enforceVisible=Spry.Effect.isInvisible(this.element)};
Spry.Effect.Size.prototype=new Spry.Effect.Animator();
Spry.Effect.Size.prototype.constructor=Spry.Effect.Size;
Spry.Effect.Size.prototype.animate=function()
{
var width=0;
var height=0;
var fontSize=0;
var direction=0;
var floor=Math.floor;
var elapsed=this.getElapsedMilliseconds();
if(this.direction==Spry.forwards){
width=floor(this.options.transition(elapsed,this.startWidth,this.stopWidth-this.startWidth,this.options.duration));
height=floor(this.options.transition(elapsed,this.startHeight,this.stopHeight-this.startHeight,this.options.duration));
direction=1}else if(this.direction==Spry.backwards){
width=floor(this.options.transition(elapsed,this.stopWidth,this.startWidth-this.stopWidth,this.options.duration));
height=floor(this.options.transition(elapsed,this.stopHeight,this.startHeight-this.stopHeight,this.options.duration));
direction=-1}
var propFactor=width/this.originalWidth;
fontSize=this.fontFactor*propFactor;
var elStyle=this.element.style;
if(width<0)
width=0;
if(height<0)
height=0;
elStyle.width=width+this.units;
elStyle.height=height+this.units;
if(typeof this.options.useCSSBox!='undefined'&&this.options.useCSSBox==true)
{
var intProp=Spry.Effect.intPropStyle;
var origTop=intProp(this.element,'top');
var origLeft=intProp(this.element,'left');
var origMarginTop=intProp(this.element,'margin-top');
var origMarginLeft=intProp(this.element,'margin-left');
var widthFactor=propFactor;
var heightFactor=height/this.originalHeight;
var border_top=floor(this.startFromBorder_top*heightFactor);
var border_bottom=floor(this.startFromBorder_bottom*heightFactor);
var border_left=floor(this.startFromBorder_left*widthFactor);
var border_right=floor(this.startFromBorder_right*widthFactor);
var padding_top=floor(this.startFromPadding_top*heightFactor);
var padding_bottom=floor(this.startFromPadding_bottom*heightFactor);
var padding_left=floor(this.startFromPadding_left*widthFactor);
var padding_right=floor(this.startFromPadding_right*widthFactor);
var margin_top=floor(this.startFromMargin_top*heightFactor);
var margin_bottom=floor(this.startFromMargin_bottom*heightFactor);
var margin_right=floor(this.startFromMargin_right*widthFactor);
var margin_left=floor(this.startFromMargin_left*widthFactor);
elStyle.borderTopWidth=border_top+this.units;
elStyle.borderBottomWidth=border_bottom+this.units;
elStyle.borderLeftWidth=border_left+this.units;
elStyle.borderRightWidth=border_right+this.units;
elStyle.paddingTop=padding_top+this.units;
elStyle.paddingBottom=padding_bottom+this.units;
elStyle.paddingLeft=padding_left+this.units;
elStyle.paddingRight=padding_right+this.units;
elStyle.marginTop=margin_top+this.units;
elStyle.marginBottom=margin_bottom+this.units;
elStyle.marginLeft=margin_left+this.units;
elStyle.marginRight=margin_right+this.units;
elStyle.left=floor(origLeft+origMarginLeft-margin_left)+this.units;
elStyle.top=floor(origTop+origMarginTop-margin_top)+this.units}
if(this.options.scaleContent)
{
for(var i=0;i<this.childImages.length;i++)
{
this.childImages[i][0].style.width=propFactor*this.childImages[i][1]+this.units;
this.childImages[i][0].style.height=propFactor*this.childImages[i][2]+this.units}
this.element.style.fontSize=fontSize+'em'}
if(this.enforceVisible)
{
Spry.Effect.enforceVisible(this.element);
this.enforceVisible=false}
};
Spry.Effect.Size.prototype.prepareStart=function()
{
if(this.options&&this.options.toggle)
this.doToggle();
if(this.dynamicFromRect==true)
{
var fromRect=Spry.Effect.getDimensions(this.element);
this.startWidth=fromRect.width;
this.startHeight=fromRect.height;
this.widthRange=this.startWidth-this.stopWidth;
this.heightRange=this.startHeight-this.stopHeight}
};
Spry.Effect.Opacity=function(element,startOpacity,stopOpacity,options)
{
this.dynamicStartOpacity=false;
if(arguments.length==3)
{
options=stopOpacity;
stopOpacity=startOpacity;
startOpacity=Spry.Effect.getOpacity(element);
this.dynamicStartOpacity=true}
Spry.Effect.Animator.call(this,options);
this.name='Opacity';
this.element=Spry.Effect.getElement(element);
if(!this.element)
return;
if(/MSIE/.test(navigator.userAgent)&&(!this.element.hasLayout))
Spry.Effect.setStyleProp(this.element,'zoom','1');
this.startOpacity=startOpacity;
this.stopOpacity=stopOpacity;
this.enforceVisible=Spry.Effect.isInvisible(this.element)};
Spry.Effect.Opacity.prototype=new Spry.Effect.Animator();
Spry.Effect.Opacity.prototype.constructor=Spry.Effect.Opacity;
Spry.Effect.Opacity.prototype.animate=function()
{
var opacity=0;
var elapsed=this.getElapsedMilliseconds();
if(this.direction==Spry.forwards)
opacity=this.options.transition(elapsed,this.startOpacity,this.stopOpacity-this.startOpacity,this.options.duration);
else if(this.direction==Spry.backwards)
opacity=this.options.transition(elapsed,this.stopOpacity,this.startOpacity-this.stopOpacity,this.options.duration);
if(opacity<0)
opacity=0;
if(/MSIE/.test(navigator.userAgent))
{
var tmpval=Spry.Effect.getStyleProp(this.element,'filter');
if(tmpval){
tmpval=tmpval.replace(/alpha\(opacity=[0-9]{1,3}\)/g,'')}
this.element.style.filter=tmpval+"alpha(opacity="+Math.floor(opacity*100)+")"}
else
this.element.style.opacity=opacity;
if(this.enforceVisible)
{
Spry.Effect.enforceVisible(this.element);
this.enforceVisible=false}
};
Spry.Effect.Opacity.prototype.prepareStart=function()
{
if(this.options&&this.options.toggle)
this.doToggle();
if(this.dynamicStartOpacity==true)
{
this.startOpacity=Spry.Effect.getOpacity(this.element);
this.opacityRange=this.startOpacity-this.stopOpacity}
};
Spry.Effect.Color=function(element,startColor,stopColor,options)
{
this.dynamicStartColor=false;
if(arguments.length==3)
{
options=stopColor;
stopColor=startColor;
startColor=Spry.Effect.getBgColor(element);
this.dynamicStartColor=true}
Spry.Effect.Animator.call(this,options);
this.name='Color';
this.element=Spry.Effect.getElement(element);
if(!this.element)
return;
this.startColor=startColor;
this.stopColor=stopColor;
this.startRedColor=Spry.Effect.Utils.hexToInt(startColor.substr(1,2));
this.startGreenColor=Spry.Effect.Utils.hexToInt(startColor.substr(3,2));
this.startBlueColor=Spry.Effect.Utils.hexToInt(startColor.substr(5,2));
this.stopRedColor=Spry.Effect.Utils.hexToInt(stopColor.substr(1,2));
this.stopGreenColor=Spry.Effect.Utils.hexToInt(stopColor.substr(3,2));
this.stopBlueColor=Spry.Effect.Utils.hexToInt(stopColor.substr(5,2))};
Spry.Effect.Color.prototype=new Spry.Effect.Animator();
Spry.Effect.Color.prototype.constructor=Spry.Effect.Color;
Spry.Effect.Color.prototype.animate=function()
{
var redColor=0;
var greenColor=0;
var blueColor=0;
var floor=Math.floor;
var elapsed=this.getElapsedMilliseconds();
if(this.direction==Spry.forwards)
{
redColor=floor(this.options.transition(elapsed,this.startRedColor,this.stopRedColor-this.startRedColor,this.options.duration));
greenColor=floor(this.options.transition(elapsed,this.startGreenColor,this.stopGreenColor-this.startGreenColor,this.options.duration));
blueColor=floor(this.options.transition(elapsed,this.startBlueColor,this.stopBlueColor-this.startBlueColor,this.options.duration))}
else if(this.direction==Spry.backwards)
{
redColor=floor(this.options.transition(elapsed,this.stopRedColor,this.startRedColor-this.stopRedColor,this.options.duration));
greenColor=floor(this.options.transition(elapsed,this.stopGreenColor,this.startGreenColor-this.stopGreenColor,this.options.duration));
blueColor=floor(this.options.transition(elapsed,this.stopBlueColor,this.startBlueColor-this.stopBlueColor,this.options.duration))}
this.element.style.backgroundColor=Spry.Effect.Utils.rgb(redColor,greenColor,blueColor)};
Spry.Effect.Color.prototype.prepareStart=function()
{
if(this.options&&this.options.toggle)
this.doToggle();
if(this.dynamicStartColor==true)
{
this.startColor=Spry.Effect.getBgColor(element);
this.startRedColor=Spry.Effect.Utils.hexToInt(startColor.substr(1,2));
this.startGreenColor=Spry.Effect.Utils.hexToInt(startColor.substr(3,2));
this.startBlueColor=Spry.Effect.Utils.hexToInt(startColor.substr(5,2));
this.redColorRange=this.startRedColor-this.stopRedColor;
this.greenColorRange=this.startGreenColor-this.stopGreenColor;
this.blueColorRange=this.startBlueColor-this.stopBlueColor}
};
Spry.Effect.Cluster=function(options)
{
Spry.Effect.Animator.call(this,options);
this.name='Cluster';
this.effectsArray=new Array();
this.currIdx=-1;
var _ClusteredEffect=function(effect,kind)
{
this.effect=effect;
this.kind=kind;this.isRunning=false};
this.ClusteredEffect=_ClusteredEffect};
Spry.Effect.Cluster.prototype=new Spry.Effect.Animator();
Spry.Effect.Cluster.prototype.constructor=Spry.Effect.Cluster;
Spry.Effect.Cluster.prototype.setInterval=function(interval){
var l=this.effectsArray.length;
this.options.interval=interval;
for(var i=0;i<l;i++)
{
this.effectsArray[i].effect.setInterval(interval)}
};
Spry.Effect.Cluster.prototype.drawEffect=function()
{
var isRunning=true;
var allEffectsDidRun=false;
var baseEffectIsStillRunning=false;
var evalNextEffectsRunning=false;
if((this.currIdx==-1&&this.direction==Spry.forwards)||(this.currIdx==this.effectsArray.length&&this.direction==Spry.backwards))
this.initNextEffectsRunning();
var start=this.direction==Spry.forwards?0:this.effectsArray.length-1;
var stop=this.direction==Spry.forwards?this.effectsArray.length:-1;
var step=this.direction==Spry.forwards?1:-1;
for(var i=start;i!=stop;i+=step)
{
if(this.effectsArray[i].isRunning==true)
{
baseEffectIsStillRunning=this.effectsArray[i].effect.drawEffect();
if(baseEffectIsStillRunning==false&&i==this.currIdx)
{
this.effectsArray[i].isRunning=false;
evalNextEffectsRunning=true}
}
}
if(evalNextEffectsRunning==true)
allEffectsDidRun=this.initNextEffectsRunning();
if(allEffectsDidRun==true){
this.stop();
isRunning=false;
for(var i=0;i<this.effectsArray.length;i++)
this.effectsArray[i].isRunning=false;
this.currIdx=this.direction==Spry.forwards?this.effectsArray.length:-1}
return isRunning};
Spry.Effect.Cluster.prototype.initNextEffectsRunning=function()
{
var allEffectsDidRun=false;
var step=this.direction==Spry.forwards?1:-1;
var stop=this.direction==Spry.forwards?this.effectsArray.length:-1;
this.currIdx+=step;
if((this.currIdx>(this.effectsArray.length-1)&&this.direction==Spry.forwards)||(this.currIdx<0&&this.direction==Spry.backwards))
allEffectsDidRun=true;
else
for(var i=this.currIdx;i!=stop;i+=step)
{
if((i>this.currIdx&&this.direction==Spry.forwards||i<this.currIdx&&this.direction==Spry.backwards)&&this.effectsArray[i].kind=="queue")
break;
this.effectsArray[i].effect.start(true);
this.effectsArray[i].isRunning=true;
this.currIdx=i}
return allEffectsDidRun};
Spry.Effect.Cluster.prototype.toggleCluster=function()
{
if(!this.direction)
{
this.direction=Spry.forwards;
return}
if(this.options.toggle==true)
{
if(this.direction==Spry.forwards)
{
this.direction=Spry.backwards;
this.notifyObservers('onToggle',this);
this.currIdx=this.effectsArray.length}
else if(this.direction==Spry.backwards)
{
this.direction=Spry.forwards;
this.currIdx=-1}
}
else
{
if(this.direction==Spry.forwards)
this.currIdx=-1;
else if(this.direction==Spry.backwards)
this.currIdx=this.effectsArray.length}
};
Spry.Effect.Cluster.prototype.doToggle=function()
{
this.toggleCluster();
for(var i=0;i<this.effectsArray.length;i++)
{
if(this.effectsArray[i].effect.options&&(this.effectsArray[i].effect.options.toggle!=null))
if(this.effectsArray[i].effect.options.toggle==true)
this.effectsArray[i].effect.doToggle()}
};
Spry.Effect.Cluster.prototype.cancel=function()
{
for(var i=0;i<this.effectsArray.length;i++)
if(this.effectsArray[i].effect.isRunning)
this.effectsArray[i].effect.cancel();
var elapsed=this.getElapsedMilliseconds();
if(this.startMilliseconds>0&&elapsed<this.options.duration)
this.cancelRemaining=this.options.transition(elapsed,0,1,this.options.duration);
this.stopFlagReset();
this.notifyObservers('onCancel',this);
this.isRunning=false};
Spry.Effect.Cluster.prototype.addNextEffect=function(effect)
{
effect.addObserver(this);
this.effectsArray[this.effectsArray.length]=new this.ClusteredEffect(effect,"queue");
if(this.effectsArray.length==1)
{
this.element=effect.element}
};
Spry.Effect.Cluster.prototype.addParallelEffect=function(effect)
{
if(this.effectsArray.length==0||this.effectsArray[this.effectsArray.length-1].kind!='parallel')
effect.addObserver(this);
this.effectsArray[this.effectsArray.length]=new this.ClusteredEffect(effect,"parallel");
if(this.effectsArray.length==1)
{
this.element=effect.element}
};
Spry.Effect.Cluster.prototype.prepareStart=function()
{
this.toggleCluster()};
Spry.Effect.Fade=function(element,options)
{
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('Fade');
Spry.Effect.Cluster.call(this,options);
this.name='Fade';
var element=Spry.Effect.getElement(element);
this.element=element;
if(!this.element)
return;
var durationInMilliseconds=1000;
var fromOpacity=0.0;
var toOpacity=100.0;
var doToggle=false;
var transition=Spry.fifthTransition;
var fps=60;
var originalOpacity=0;
if(/MSIE/.test(navigator.userAgent))
originalOpacity=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(this.element,'filter').replace(/alpha\(opacity=([0-9]{1,3})\)/g,'$1'),10);
else
originalOpacity=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(this.element,'opacity')*100,10);
if(isNaN(originalOpacity))
originalOpacity=100;
if(options)
{
if(options.duration!=null)durationInMilliseconds=options.duration;
if(options.from!=null){
if(Spry.Effect.Utils.isPercentValue(options.from))
fromOpacity=Spry.Effect.Utils.getPercentValue(options.from)*originalOpacity/100;
else
fromOpacity=options.from}
if(options.to!=null)
{
if(Spry.Effect.Utils.isPercentValue(options.to))
toOpacity=Spry.Effect.Utils.getPercentValue(options.to)*originalOpacity/100;
else
toOpacity=options.to}
if(options.toggle!=null)doToggle=options.toggle;
if(options.transition!=null)transition=options.transition;
if(options.fps!=null)fps=options.fps;
else this.options.transition=transition}
fromOpacity=fromOpacity/100.0;
toOpacity=toOpacity/100.0;
options={duration:durationInMilliseconds,toggle:doToggle,transition:transition,from:fromOpacity,to:toOpacity,fps:fps};
var fadeEffect=new Spry.Effect.Opacity(element,fromOpacity,toOpacity,options);
this.addNextEffect(fadeEffect)};
Spry.Effect.Fade.prototype=new Spry.Effect.Cluster();
Spry.Effect.Fade.prototype.constructor=Spry.Effect.Fade;
Spry.Effect.Blind=function(element,options)
{
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('Blind');
Spry.Effect.Cluster.call(this,options);
this.name='Blind';
var element=Spry.Effect.getElement(element);
this.element=element;
if(!this.element)
return;
var durationInMilliseconds=1000;
var doToggle=false;
var kindOfTransition=Spry.circleTransition;
var fps=60;
var doScaleContent=false;
Spry.Effect.makeClipping(element);
var originalRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);
var fromHeightPx=originalRect.height;
var toHeightPx=0;
var optionFrom=options?options.from:originalRect.height;
var optionTo=options?options.to:0;
var fullCSSBox=false;
if(options)
{
if(options.duration!=null)durationInMilliseconds=options.duration;
if(options.from!=null)
{
if(Spry.Effect.Utils.isPercentValue(options.from))
fromHeightPx=Spry.Effect.Utils.getPercentValue(options.from)*originalRect.height/100;
else
fromHeightPx=Spry.Effect.Utils.getPixelValue(options.from)}
if(options.to!=null)
{
if(Spry.Effect.Utils.isPercentValue(options.to))
toHeightPx=Spry.Effect.Utils.getPercentValue(options.to)*originalRect.height/100;
else
toHeightPx=Spry.Effect.Utils.getPixelValue(options.to)}
if(options.toggle!=null)doToggle=options.toggle;
if(options.transition!=null)kindOfTransition=options.transition;
if(options.fps!=null)fps=options.fps;
if(options.useCSSBox!=null)fullCSSBox=options.useCSSBox}
var fromRect=new Spry.Effect.Utils.Rectangle;
fromRect.width=originalRect.width;
fromRect.height=fromHeightPx;
var toRect=new Spry.Effect.Utils.Rectangle;
toRect.width=originalRect.width;
toRect.height=toHeightPx;
options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,scaleContent:doScaleContent,useCSSBox:fullCSSBox,from:optionFrom,to:optionTo,fps:fps};
var blindEffect=new Spry.Effect.Size(element,fromRect,toRect,options);
this.addNextEffect(blindEffect)};
Spry.Effect.Blind.prototype=new Spry.Effect.Cluster();
Spry.Effect.Blind.prototype.constructor=Spry.Effect.Blind;
Spry.Effect.Highlight=function(element,options)
{
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('Highlight');
Spry.Effect.Cluster.call(this,options);
this.name='Highlight';
var durationInMilliseconds=1000;
var toColor="#ffffff";
var doToggle=false;
var kindOfTransition=Spry.sinusoidalTransition;
var fps=60;
var element=Spry.Effect.getElement(element);
this.element=element;
if(!this.element)
return;
var fromColor=Spry.Effect.getBgColor(element);
if(fromColor=="transparent")fromColor="#ffff99";
if(options)
{
if(options.duration!=null)durationInMilliseconds=options.duration;
if(options.from!=null)fromColor=options.from;
if(options.to!=null)toColor=options.to;
if(options.toggle!=null)doToggle=options.toggle;
if(options.transition!=null)kindOfTransition=options.transition;
if(options.fps!=null)fps=options.fps}
if(fromColor.indexOf('rgb')!=-1)
var fromColor=Spry.Effect.Utils.rgb(parseInt(fromColor.substring(fromColor.indexOf('(')+1,fromColor.indexOf(',')),10),parseInt(fromColor.substring(fromColor.indexOf(',')+1,fromColor.lastIndexOf(',')),10),parseInt(fromColor.substring(fromColor.lastIndexOf(',')+1,fromColor.indexOf(')')),10));
if(toColor.indexOf('rgb')!=-1)
var toColor=Spry.Effect.Utils.rgb(parseInt(toColor.substring(toColor.indexOf('(')+1,toColor.indexOf(',')),10),parseInt(toColor.substring(toColor.indexOf(',')+1,toColor.lastIndexOf(',')),10),parseInt(toColor.substring(toColor.lastIndexOf(',')+1,toColor.indexOf(')')),10));
var fromColor=Spry.Effect.Utils.longColorVersion(fromColor);
var toColor=Spry.Effect.Utils.longColorVersion(toColor);
this.restoreBackgroundImage=Spry.Effect.getStyleProp(element,'background-image');
options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,fps:fps};
var highlightEffect=new Spry.Effect.Color(element,fromColor,toColor,options);
this.addNextEffect(highlightEffect);
this.addObserver({
onPreEffect:
function(effect){
Spry.Effect.setStyleProp(effect.element,'background-image','none')},
onPostEffect:
function(effect){
Spry.Effect.setStyleProp(effect.element,'background-image',effect.restoreBackgroundImage);
if(effect.direction==Spry.forwards&&effect.options.restoreColor)
Spry.Effect.setStyleProp(element,'background-color',effect.options.restoreColor)}
})};
Spry.Effect.Highlight.prototype=new Spry.Effect.Cluster();
Spry.Effect.Highlight.prototype.constructor=Spry.Effect.Highlight;
Spry.Effect.Slide=function(element,options)
{
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('Slide');
Spry.Effect.Cluster.call(this,options);
this.name='Slide';
var element=Spry.Effect.getElement(element);
this.element=element;
if(!this.element)
return;
var durationInMilliseconds=1000;
var doToggle=false;
var kindOfTransition=Spry.sinusoidalTransition;
var fps=60;
var slideHorizontally=false;
var firstChildElt=Spry.Effect.Utils.getFirstChildElement(element);
var direction=-1;
if(/MSIE 7.0/.test(navigator.userAgent)&&/Windows NT/.test(navigator.userAgent))
Spry.Effect.makePositioned(element);
Spry.Effect.makeClipping(element);
if(/MSIE 6.0/.test(navigator.userAgent)&&/Windows NT/.test(navigator.userAgent))
{
var pos=Spry.Effect.getStyleProp(element,'position');
if(pos&&(pos=='static'||pos=='fixed'))
{
Spry.Effect.setStyleProp(element,'position','relative');
Spry.Effect.setStyleProp(element,'top','');
Spry.Effect.setStyleProp(element,'left','')}
}
if(firstChildElt)
{
Spry.Effect.makePositioned(firstChildElt);
Spry.Effect.makeClipping(firstChildElt);
var childRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(firstChildElt,element);
Spry.Effect.setStyleProp(firstChildElt,'width',childRect.width+'px')}
var fromDim=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);
var initDim=new Spry.Effect.Utils.Rectangle();
var toDim=new Spry.Effect.Utils.Rectangle();
initDim.width=toDim.width=fromDim.width;
initDim.height=toDim.height=fromDim.height;
if(!this.options.to){
if(!options)
options={};
options.to='0%'}
if(options&&options.horizontal!==null&&options.horizontal===true)
slideHorizontally=true;
if(options.duration!=null)durationInMilliseconds=options.duration;
if(options.from!=null)
{
if(slideHorizontally)
{
if(Spry.Effect.Utils.isPercentValue(options.from))
fromDim.width=initDim.width*Spry.Effect.Utils.getPercentValue(options.from)/100;
else
fromDim.width=Spry.Effect.Utils.getPixelValue(options.from)}
else
{
if(Spry.Effect.Utils.isPercentValue(options.from))
fromDim.height=initDim.height*Spry.Effect.Utils.getPercentValue(options.from)/100;
else
fromDim.height=Spry.Effect.Utils.getPixelValue(options.from)}
}
if(options.to!=null)
{
if(slideHorizontally)
{
if(Spry.Effect.Utils.isPercentValue(options.to))
toDim.width=initDim.width*Spry.Effect.Utils.getPercentValue(options.to)/100;
else
toDim.width=Spry.Effect.Utils.getPixelValue(options.to)}
else
{
if(Spry.Effect.Utils.isPercentValue(options.to))
toDim.height=initDim.height*Spry.Effect.Utils.getPercentValue(options.to)/100;
else
toDim.height=Spry.Effect.Utils.getPixelValue(options.to)}
}
if(options.toggle!=null)doToggle=options.toggle;
if(options.transition!=null)kindOfTransition=options.transition;
if(options.fps!=null)fps=options.fps;
options={duration:durationInMilliseconds,transition:kindOfTransition,scaleContent:false,toggle:doToggle,fps:fps};
var size=new Spry.Effect.Size(element,fromDim,toDim,options);
this.addParallelEffect(size);
if((fromDim.width<toDim.width&&slideHorizontally)||(fromDim.height<toDim.height&&!slideHorizontally))
direction=1;
var fromPos=new Spry.Effect.Utils.Position();
var toPos=new Spry.Effect.Utils.Position();
toPos.x=fromPos.x=Spry.Effect.intPropStyle(firstChildElt,'left');
toPos.y=fromPos.y=Spry.Effect.intPropStyle(firstChildElt,'top');
toPos.units=fromPos.units;
if(slideHorizontally)
toPos.x=parseInt(fromPos.x+direction*(fromDim.width-toDim.width),10);
else
toPos.y=parseInt(fromPos.y+direction*(fromDim.height-toDim.height),10);
if(direction==1){
var tmp=fromPos;
var fromPos=toPos;
var toPos=tmp}
options={duration:durationInMilliseconds,transition:kindOfTransition,toggle:doToggle,from:fromPos,to:toPos,fps:fps};
var move=new Spry.Effect.Move(firstChildElt,fromPos,toPos,options);
this.addParallelEffect(move)};
Spry.Effect.Slide.prototype=new Spry.Effect.Cluster();
Spry.Effect.Slide.prototype.constructor=Spry.Effect.Slide;
Spry.Effect.Grow=function(element,options)
{
if(!element)
return;
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('Grow');
Spry.Effect.Cluster.call(this,options);
this.name='Grow';
var durationInMilliseconds=1000;
var doToggle=false;
var doScaleContent=true;
var calcHeight=false;
var growFromCenter=true;
var fullCSSBox=false;
var kindOfTransition=Spry.squareTransition;
var fps=60;
var element=Spry.Effect.getElement(element);
this.element=element;
if(!this.element)
return;
Spry.Effect.makeClipping(element);
var dimRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);
var originalWidth=dimRect.width;
var originalHeight=dimRect.height;
var propFactor=(originalWidth==0)?1:originalHeight/originalWidth;
var fromRect=new Spry.Effect.Utils.Rectangle;
fromRect.width=0;
fromRect.height=0;
var toRect=new Spry.Effect.Utils.Rectangle;
toRect.width=originalWidth;
toRect.height=originalHeight;
var optionFrom=options?options.from:dimRect.width;
var optionTo=options?options.to:0;
var pixelValue=Spry.Effect.Utils.getPixelValue;
if(options)
{
if(options.growCenter!=null)growFromCenter=options.growCenter;
if(options.duration!=null)durationInMilliseconds=options.duration;
if(options.useCSSBox!=null)fullCSSBox=options.useCSSBox;
if(options.scaleContent!=null)doScaleContent=options.scaleContent;
if(options.from!=null)
{
if(Spry.Effect.Utils.isPercentValue(options.from))
{
fromRect.width=originalWidth*(Spry.Effect.Utils.getPercentValue(options.from)/100);
fromRect.height=originalHeight*(Spry.Effect.Utils.getPercentValue(options.from)/100)}
else
{
if(calcHeight)
{
fromRect.height=pixelValue(options.from);
fromRect.width=pixelValue(options.from)/propFactor}
else
{
fromRect.width=pixelValue(options.from);
fromRect.height=propFactor*pixelValue(options.from)}
}
}
if(options.to!=null)
{
if(Spry.Effect.Utils.isPercentValue(options.to))
{
toRect.width=originalWidth*(Spry.Effect.Utils.getPercentValue(options.to)/100);
toRect.height=originalHeight*(Spry.Effect.Utils.getPercentValue(options.to)/100)}
else
{
if(calcHeight)
{
toRect.height=pixelValue(options.to);
toRect.width=pixelValue(options.to)/propFactor}
else
{
toRect.width=pixelValue(options.to);
toRect.height=propFactor*pixelValue(options.to)}
}
}
if(options.toggle!=null)doToggle=options.toggle;
if(options.transition!=null)kindOfTransition=options.transition;
if(options.fps!=null)fps=options.fps}
options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,scaleContent:doScaleContent,useCSSBox:fullCSSBox,fps:fps};
var sizeEffect=new Spry.Effect.Size(element,fromRect,toRect,options);
this.addParallelEffect(sizeEffect);
if(growFromCenter)
{
Spry.Effect.makePositioned(element);
var startOffsetPosition=new Spry.Effect.Utils.Position();
startOffsetPosition.x=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(element,"left"),10);
startOffsetPosition.y=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(element,"top"),10);
if(!startOffsetPosition.x)startOffsetPosition.x=0;
if(!startOffsetPosition.y)startOffsetPosition.y=0;
options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,from:optionFrom,to:optionTo,fps:fps};
var fromPos=new Spry.Effect.Utils.Position;
fromPos.x=startOffsetPosition.x+(originalWidth-fromRect.width)/2.0;
fromPos.y=startOffsetPosition.y+(originalHeight-fromRect.height)/2.0;
var toPos=new Spry.Effect.Utils.Position;
toPos.x=startOffsetPosition.x+(originalWidth-toRect.width)/2.0;
toPos.y=startOffsetPosition.y+(originalHeight-toRect.height)/2.0;
var moveEffect=new Spry.Effect.Move(element,fromPos,toPos,options);
this.addParallelEffect(moveEffect)}
};
Spry.Effect.Grow.prototype=new Spry.Effect.Cluster();
Spry.Effect.Grow.prototype.constructor=Spry.Effect.Grow;
Spry.Effect.Shake=function(element,options)
{
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('Shake');
Spry.Effect.Cluster.call(this,options);
this.options.direction=false;
if(this.options.toggle)
this.options.toggle=false;
this.name='Shake';
var element=Spry.Effect.getElement(element);
this.element=element;
if(!this.element)
return;
var durationInMilliseconds=100;
var kindOfTransition=Spry.linearTransition;
var fps=60;
var steps=4;
if(options)
{
if(options.duration!=null)steps=Math.ceil(this.options.duration/durationInMilliseconds)-1;
if(options.fps!=null)fps=options.fps;
if(options.transition!=null)kindOfTransition=options.transition}
Spry.Effect.makePositioned(element);
var startOffsetPosition=new Spry.Effect.Utils.Position();
startOffsetPosition.x=parseInt(Spry.Effect.getStyleProp(element,"left"),10);
startOffsetPosition.y=parseInt(Spry.Effect.getStyleProp(element,"top"),10);
if(!startOffsetPosition.x)startOffsetPosition.x=0;
if(!startOffsetPosition.y)startOffsetPosition.y=0;
var centerPos=new Spry.Effect.Utils.Position;
centerPos.x=startOffsetPosition.x;
centerPos.y=startOffsetPosition.y;
var rightPos=new Spry.Effect.Utils.Position;
rightPos.x=startOffsetPosition.x+20;
rightPos.y=startOffsetPosition.y+0;
var leftPos=new Spry.Effect.Utils.Position;
leftPos.x=startOffsetPosition.x+ -20;
leftPos.y=startOffsetPosition.y+0;
options={duration:Math.ceil(durationInMilliseconds/2),toggle:false,fps:fps,transition:kindOfTransition};
var effect=new Spry.Effect.Move(element,centerPos,rightPos,options);
this.addNextEffect(effect);
options={duration:durationInMilliseconds,toggle:false,fps:fps,transition:kindOfTransition};
var effectToRight=new Spry.Effect.Move(element,rightPos,leftPos,options);
var effectToLeft=new Spry.Effect.Move(element,leftPos,rightPos,options);
for(var i=0;i<steps;i++)
{
if(i%2==0)
this.addNextEffect(effectToRight);
else
this.addNextEffect(effectToLeft)}
var pos=(steps%2==0)?rightPos:leftPos;
options={duration:Math.ceil(durationInMilliseconds/2),toggle:false,fps:fps,transition:kindOfTransition};
var effect=new Spry.Effect.Move(element,pos,centerPos,options);
this.addNextEffect(effect)};
Spry.Effect.Shake.prototype=new Spry.Effect.Cluster();
Spry.Effect.Shake.prototype.constructor=Spry.Effect.Shake;
Spry.Effect.Shake.prototype.doToggle=function(){};
Spry.Effect.Squish=function(element,options)
{
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('Squish');
if(!options)
options={};
if(!options.to)
options.to='0%';
if(!options.from)
options.from='100%';
options.growCenter=false;
Spry.Effect.Grow.call(this,element,options);
this.name='Squish'};
Spry.Effect.Squish.prototype=new Spry.Effect.Grow();
Spry.Effect.Squish.prototype.constructor=Spry.Effect.Squish;
Spry.Effect.Pulsate=function(element,options)
{
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('Pulsate');
Spry.Effect.Cluster.call(this,options);
this.options.direction=false;
if(this.options.toggle)
this.options.toggle=false;
var element=Spry.Effect.getElement(element);
var originalOpacity=0;
this.element=element;
if(!this.element)
return;
this.name='Pulsate';
var durationInMilliseconds=100;
var fromOpacity=100.0;
var toOpacity=0.0;
var doToggle=false;
var kindOfTransition=Spry.linearTransition;
var fps=60;
if(/MSIE/.test(navigator.userAgent))
originalOpacity=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(this.element,'filter').replace(/alpha\(opacity=([0-9]{1,3})\)/g,'$1'),10);
else
originalOpacity=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(this.element,'opacity')*100,10);
if(isNaN(originalOpacity)){
originalOpacity=100}
if(options)
{
if(options.from!=null){
if(Spry.Effect.Utils.isPercentValue(options.from))
fromOpacity=Spry.Effect.Utils.getPercentValue(options.from)*originalOpacity/100;
else
fromOpacity=options.from}
if(options.to!=null)
{
if(Spry.Effect.Utils.isPercentValue(options.to))
toOpacity=Spry.Effect.Utils.getPercentValue(options.to)*originalOpacity/100;
else
toOpacity=options.to}
if(options.transition!=null)kindOfTransition=options.transition;
if(options.fps!=null)fps=options.fps}
options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,fps:fps};
fromOpacity=fromOpacity/100.0;
toOpacity=toOpacity/100.0;
var fadeEffect=new Spry.Effect.Opacity(element,fromOpacity,toOpacity,options);
var appearEffect=new Spry.Effect.Opacity(element,toOpacity,fromOpacity,options);
var steps=parseInt(this.options.duration/200,10);
for(var i=0;i<steps;i++){
this.addNextEffect(fadeEffect);
this.addNextEffect(appearEffect)}
};
Spry.Effect.Pulsate.prototype=new Spry.Effect.Cluster();
Spry.Effect.Pulsate.prototype.constructor=Spry.Effect.Pulsate;
Spry.Effect.Pulsate.prototype.doToggle=function(){};
Spry.Effect.Puff=function(element,options)
{
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('Puff');
Spry.Effect.Cluster.call(this,options);
var element=Spry.Effect.getElement(element);
this.element=element;
if(!this.element)
return;
this.name='Puff';
var doToggle=false;
var doScaleContent=false;
var durationInMilliseconds=1000;
var kindOfTransition=Spry.fifthTransition;
var fps=60;
Spry.Effect.makePositioned(element);
if(options){
if(options.toggle!=null)doToggle=options.toggle;
if(options.duration!=null)durationInMilliseconds=options.duration;
if(options.transition!=null)kindOfTransition=options.transition;
if(options.fps!=null)fps=options.fps}
var originalRect=Spry.Effect.getDimensions(element);
var startWidth=originalRect.width;
var startHeight=originalRect.height;
options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,fps:fps};
var fromOpacity=1.0;
var toOpacity=0.0;
var opacityEffect=new Spry.Effect.Opacity(element,fromOpacity,toOpacity,options);
this.addParallelEffect(opacityEffect);
var fromPos=Spry.Effect.getPosition(element);
var toPos=new Spry.Effect.Utils.Position;
toPos.x=startWidth/2.0*-1.0;
toPos.y=startHeight/2.0*-1.0;
options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,from:fromPos,to:toPos,fps:fps};
var moveEffect=new Spry.Effect.Move(element,fromPos,toPos,options);
this.addParallelEffect(moveEffect);
var self=this;
this.addObserver({
onPreEffect:function(){if(self.direction==Spry.backwards){self.element.style.display='block'}},
onPostEffect:function(){if(self.direction==Spry.forwards){self.element.style.display='none'}}
})};
Spry.Effect.Puff.prototype=new Spry.Effect.Cluster;
Spry.Effect.Puff.prototype.constructor=Spry.Effect.Puff;
Spry.Effect.DropOut=function(element,options)
{
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('DropOut');
Spry.Effect.Cluster.call(this,options);
var element=Spry.Effect.getElement(element);
this.element=element;
if(!this.element)
return;
var durationInMilliseconds=1000;
var fps=60;
var kindOfTransition=Spry.fifthTransition;
var direction=Spry.forwards;
var doToggle=false;
this.name='DropOut';
Spry.Effect.makePositioned(element);
if(options)
{
if(options.duration!=null)durationInMilliseconds=options.duration;
if(options.toggle!=null)doToggle=options.toggle;
if(options.fps!=null)fps=options.fps;
if(options.transition!=null)kindOfTransition=options.transition;
if(options.dropIn!=null)direction=-1}
var startOffsetPosition=new Spry.Effect.Utils.Position();
startOffsetPosition.x=parseInt(Spry.Effect.getStyleProp(element,"left"),10);
startOffsetPosition.y=parseInt(Spry.Effect.getStyleProp(element,"top"),10);
if(!startOffsetPosition.x)startOffsetPosition.x=0;
if(!startOffsetPosition.y)startOffsetPosition.y=0;
var fromPos=new Spry.Effect.Utils.Position;
fromPos.x=startOffsetPosition.x+0;
fromPos.y=startOffsetPosition.y+0;
var toPos=new Spry.Effect.Utils.Position;
toPos.x=startOffsetPosition.x+0;
toPos.y=startOffsetPosition.y+(direction*160);
options={from:fromPos,to:toPos,duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,fps:fps};
var moveEffect=new Spry.Effect.Move(element,options.from,options.to,options);
this.addParallelEffect(moveEffect);
var fromOpacity=1.0;
var toOpacity=0.0;
options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,fps:fps};
var opacityEffect=new Spry.Effect.Opacity(element,fromOpacity,toOpacity,options);
this.addParallelEffect(opacityEffect);
var self=this;
this.addObserver({
onPreEffect:function(){self.element.style.display='block'},
onPostEffect:function(){if(self.direction==Spry.forwards){self.element.style.display='none'}}
})};
Spry.Effect.DropOut.prototype=new Spry.Effect.Cluster();
Spry.Effect.DropOut.prototype.constructor=Spry.Effect.DropOut;
Spry.Effect.Fold=function(element,options)
{
if(!this.notStaticAnimator)
return Spry.Effect.Utils.showInitError('Fold');
Spry.Effect.Cluster.call(this,options);
var element=Spry.Effect.getElement(element);
this.element=element;
if(!this.element)
return;
this.name='Fold';
var durationInMilliseconds=1000;
var doToggle=false;
var doScaleContent=true;
var fullCSSBox=false;
var kindOfTransition=Spry.fifthTransition;
var fps=fps;
Spry.Effect.makeClipping(element);
var originalRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);
var startWidth=originalRect.width;
var startHeight=originalRect.height;
var stopWidth=startWidth;
var stopHeight=startHeight/5;
var fromRect=new Spry.Effect.Utils.Rectangle;
fromRect.width=startWidth;
fromRect.height=startHeight;
var toRect=new Spry.Effect.Utils.Rectangle;
toRect.width=stopWidth;
toRect.height=stopHeight;
if(options)
{
if(options.duration!=null)durationInMilliseconds=Math.ceil(options.duration/2);
if(options.toggle!=null)doToggle=options.toggle;
if(options.useCSSBox!=null)fullCSSBox=options.useCSSBox;
if(options.fps!=null)fps=options.fps;
if(options.transition!=null)kindOfTransition=options.transition}
options={duration:durationInMilliseconds,toggle:doToggle,scaleContent:doScaleContent,useCSSBox:fullCSSBox,transition:kindOfTransition,fps:fps};
var sizeEffect=new Spry.Effect.Size(element,fromRect,toRect,options);
this.addNextEffect(sizeEffect);
fromRect.width=toRect.width;
fromRect.height=toRect.height;
toRect.width='0%';
var sizeEffect=new Spry.Effect.Size(element,fromRect,toRect,options);
this.addNextEffect(sizeEffect)};
Spry.Effect.Fold.prototype=new Spry.Effect.Cluster();
Spry.Effect.Fold.prototype.constructor=Spry.Effect.Fold;
Spry.Effect.DoFade=function(element,options)
{
return Spry.Effect.Utils.DoEffect('Fade',element,options)};
Spry.Effect.DoBlind=function(element,options)
{
return Spry.Effect.Utils.DoEffect('Blind',element,options)};
Spry.Effect.DoHighlight=function(element,options)
{
return Spry.Effect.Utils.DoEffect('Highlight',element,options)};
Spry.Effect.DoSlide=function(element,options)
{
return Spry.Effect.Utils.DoEffect('Slide',element,options)};
Spry.Effect.DoGrow=function(element,options)
{
return Spry.Effect.Utils.DoEffect('Grow',element,options)};
Spry.Effect.DoShake=function(element,options)
{
return Spry.Effect.Utils.DoEffect('Shake',element,options)};
Spry.Effect.DoSquish=function(element,options)
{
return Spry.Effect.Utils.DoEffect('Squish',element,options)};
Spry.Effect.DoPulsate=function(element,options)
{
return Spry.Effect.Utils.DoEffect('Pulsate',element,options)};
Spry.Effect.DoPuff=function(element,options)
{
return Spry.Effect.Utils.DoEffect('Puff',element,options)};
Spry.Effect.DoDropOut=function(element,options)
{
return Spry.Effect.Utils.DoEffect('DropOut',element,options)};
Spry.Effect.DoFold=function(element,options)
{
return Spry.Effect.Utils.DoEffect('Fold',element,options)};



